From 4404c5a76c822ac8a3c8a60da011d24910f5be60 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Jul 2026 02:04:47 +0000 Subject: [PATCH 1/2] chore(deps): bump @nextcloud/dialogs from 7.4.0 to 7.4.1 Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 7.4.0 to 7.4.1. - [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases) - [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/main/CHANGELOG.md) - [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v7.4.0...v7.4.1) --- updated-dependencies: - dependency-name: "@nextcloud/dialogs" dependency-version: 7.4.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d26481fb7e28..9b260dc13cf6d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@nextcloud/axios": "^2.6.0", "@nextcloud/calendar-availability-vue": "^3.0.0", "@nextcloud/capabilities": "^1.2.1", - "@nextcloud/dialogs": "^7.4.0", + "@nextcloud/dialogs": "^7.4.1", "@nextcloud/event-bus": "^3.3.3", "@nextcloud/files": "^4.0.0", "@nextcloud/initial-state": "^3.0.0", @@ -2186,9 +2186,9 @@ } }, "node_modules/@nextcloud/dialogs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-7.4.0.tgz", - "integrity": "sha512-XAkRls7T1xIxH+E7ArW5+gY0CrqebT+3Pxo30u7XBc21UNgc8vhl4mv5SRiDe9OgSK6/QI0bPNMvCasSaSSVpA==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@nextcloud/dialogs/-/dialogs-7.4.1.tgz", + "integrity": "sha512-M8q1v14rTMdjTyv5HOZrpBpa5M+qnqnjoFCeeohmKvt69xVW9Xag6R5InQhBQh3zfsYEaQ4mg3shn3kKBx9qxg==", "license": "AGPL-3.0-or-later", "dependencies": { "@mdi/js": "^7.4.47", @@ -2202,12 +2202,12 @@ "@nextcloud/paths": "^3.1.0", "@nextcloud/router": "^3.1.0", "@nextcloud/sharing": "^0.4.0", - "@nextcloud/vue": "^9.8.0", + "@nextcloud/vue": "^9.8.2", "@types/toastify-js": "^1.12.4", "@vueuse/core": "^14.3.0", - "p-queue": "^9.1.2", + "p-queue": "^9.3.1", "toastify-js": "^1.12.0", - "vue": "^3.5.34", + "vue": "^3.5.39", "webdav": "^5.10.0" }, "engines": { diff --git a/package.json b/package.json index a6da451b3b4b8..730dbfb1d3f1c 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "@nextcloud/axios": "^2.6.0", "@nextcloud/calendar-availability-vue": "^3.0.0", "@nextcloud/capabilities": "^1.2.1", - "@nextcloud/dialogs": "^7.4.0", + "@nextcloud/dialogs": "^7.4.1", "@nextcloud/event-bus": "^3.3.3", "@nextcloud/files": "^4.0.0", "@nextcloud/initial-state": "^3.0.0", From cca26c159981879013551fa95a963b27dd310f93 Mon Sep 17 00:00:00 2001 From: nextcloud-command Date: Sat, 25 Jul 2026 20:07:55 +0000 Subject: [PATCH 2/2] chore(assets): Recompile assets Signed-off-by: nextcloud-command --- core/css/server.css | 2 +- dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs | 2 -- dist/ActivityCommentAction-DZTkL5C8.chunk.mjs | 2 ++ ...yCommentAction-DZTkL5C8.chunk.mjs.license} | 0 ...ivityCommentAction-DZTkL5C8.chunk.mjs.map} | 2 +- ...mentAction-DZTkL5C8.chunk.mjs.map.license} | 0 dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs | 2 ++ ...tyCommentEntry-B6Tpqj9O.chunk.mjs.license} | 0 ...tivityCommentEntry-B6Tpqj9O.chunk.mjs.map} | 2 +- ...mmentEntry-B6Tpqj9O.chunk.mjs.map.license} | 0 dist/ActivityCommentEntry-flkhlwTc.chunk.mjs | 2 -- dist/AppstoreBrowse-AfNqrsSg.chunk.mjs | 2 -- dist/AppstoreBrowse-DsTlcR8_.chunk.mjs | 2 ++ ...AppstoreBrowse-DsTlcR8_.chunk.mjs.license} | 0 ... => AppstoreBrowse-DsTlcR8_.chunk.mjs.map} | 2 +- ...toreBrowse-DsTlcR8_.chunk.mjs.map.license} | 0 dist/AppstoreDiscover-C9at7Z-5.chunk.mjs | 3 --- dist/AppstoreDiscover-DDOLgo3I.chunk.mjs | 3 +++ ...pstoreDiscover-DDOLgo3I.chunk.mjs.license} | 0 ...> AppstoreDiscover-DDOLgo3I.chunk.mjs.map} | 2 +- ...reDiscover-DDOLgo3I.chunk.mjs.map.license} | 0 dist/AuthMechanismRsa-EWm029j5.chunk.mjs | 2 -- dist/AuthMechanismRsa-vXoEDo92.chunk.mjs | 2 ++ ...thMechanismRsa-vXoEDo92.chunk.mjs.license} | 0 ...> AuthMechanismRsa-vXoEDo92.chunk.mjs.map} | 2 +- ...chanismRsa-vXoEDo92.chunk.mjs.map.license} | 0 ...unk.mjs => CommentView-Dwuq398x.chunk.mjs} | 4 +-- ...=> CommentView-Dwuq398x.chunk.mjs.license} | 0 ...map => CommentView-Dwuq398x.chunk.mjs.map} | 2 +- ...ommentView-Dwuq398x.chunk.mjs.map.license} | 0 dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs | 2 -- dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs | 2 ++ ...erTypeCarousel-D8xqFtm0.chunk.mjs.license} | 0 ...scoverTypeCarousel-D8xqFtm0.chunk.mjs.map} | 2 +- ...peCarousel-D8xqFtm0.chunk.mjs.map.license} | 0 dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs | 2 ++ ...erTypeShowcase-65aK4fEm.chunk.mjs.license} | 0 ...scoverTypeShowcase-65aK4fEm.chunk.mjs.map} | 2 +- ...peShowcase-65aK4fEm.chunk.mjs.map.license} | 0 dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs | 2 -- dist/FilePicker-0pVFI2AM.chunk.mjs | 2 ++ ... => FilePicker-0pVFI2AM.chunk.mjs.license} | 2 +- dist/FilePicker-0pVFI2AM.chunk.mjs.map | 1 + ...FilePicker-0pVFI2AM.chunk.mjs.map.license} | 2 +- dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs | 2 -- ...FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.map | 1 - ...mjs => FilesSidebarTab-Bv3AwXFc.chunk.mjs} | 4 +-- ...ilesSidebarTab-Bv3AwXFc.chunk.mjs.license} | 0 ...=> FilesSidebarTab-Bv3AwXFc.chunk.mjs.map} | 2 +- ...SidebarTab-Bv3AwXFc.chunk.mjs.map.license} | 0 ...FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs | 26 +++++++++++++++++++ ...ionsSidebarTab-DpBNHNa_.chunk.mjs.license} | 0 ...VersionsSidebarTab-DpBNHNa_.chunk.mjs.map} | 2 +- ...SidebarTab-DpBNHNa_.chunk.mjs.map.license} | 0 ...FilesVersionsSidebarTab-mZplOG03.chunk.mjs | 26 ------------------- dist/SetStatusModal-B6T5dnOq.chunk.mjs | 2 ++ ...SetStatusModal-B6T5dnOq.chunk.mjs.license} | 0 ... => SetStatusModal-B6T5dnOq.chunk.mjs.map} | 2 +- ...tatusModal-B6T5dnOq.chunk.mjs.map.license} | 0 dist/SetStatusModal-BSp1mmzy.chunk.mjs | 2 -- dist/SystemTagPicker-BHM6bOgM.chunk.mjs | 2 -- dist/SystemTagPicker-Bys_E8hA.chunk.mjs | 2 ++ ...ystemTagPicker-Bys_E8hA.chunk.mjs.license} | 0 ...=> SystemTagPicker-Bys_E8hA.chunk.mjs.map} | 2 +- ...mTagPicker-Bys_E8hA.chunk.mjs.map.license} | 0 dist/UpdateAllDialog-B79HRvpB.chunk.mjs | 2 -- dist/UpdateAllDialog-BqC8T943.chunk.mjs | 2 ++ ...pdateAllDialog-BqC8T943.chunk.mjs.license} | 0 ...=> UpdateAllDialog-BqC8T943.chunk.mjs.map} | 2 +- ...eAllDialog-BqC8T943.chunk.mjs.map.license} | 0 dist/appstore-main.mjs | 6 ++--- dist/appstore-main.mjs.map | 2 +- dist/comments-comments-app.mjs | 2 +- dist/comments-comments-app.mjs.map | 2 +- dist/comments-comments-tab.mjs | 4 +-- dist/dav-settings-admin-example-content.mjs | 2 +- ...dav-settings-admin-example-content.mjs.map | 2 +- dist/dav-settings-personal-availability.mjs | 2 +- ...dav-settings-personal-availability.mjs.map | 2 +- dist/encryption-encryption.mjs | 2 +- dist/encryption-encryption.mjs.map | 2 +- dist/encryption-settings_admin.mjs | 2 +- dist/encryption-settings_admin.mjs.map | 2 +- dist/encryption-settings_personal.mjs | 2 +- dist/encryption-settings_personal.mjs.map | 2 +- dist/federatedfilesharing-init-files.mjs | 2 +- dist/federatedfilesharing-init-files.mjs.map | 2 +- dist/federatedfilesharing-settings-admin.mjs | 2 +- ...ederatedfilesharing-settings-admin.mjs.map | 2 +- ...federatedfilesharing-settings-personal.mjs | 2 +- ...ratedfilesharing-settings-personal.mjs.map | 2 +- dist/federation-settings-admin.mjs | 2 +- dist/federation-settings-admin.mjs.map | 2 +- dist/files_external-auth_rsa.mjs | 4 +-- dist/files_external-init.mjs | 2 +- dist/files_external-init.mjs.map | 2 +- dist/files_external-settings.mjs | 2 +- dist/files_external-settings.mjs.map | 2 +- dist/files_reminders-init.mjs | 2 +- dist/files_reminders-init.mjs.map | 2 +- dist/files_trashbin-init.mjs | 2 +- dist/files_trashbin-init.mjs.map | 2 +- dist/files_versions-sidebar-tab.mjs | 4 +-- dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs | 11 -------- dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.map | 1 - dist/index-mH69OG7L.chunk.mjs | 11 ++++++++ ...cense => index-mH69OG7L.chunk.mjs.license} | 2 +- dist/index-mH69OG7L.chunk.mjs.map | 1 + ...e => index-mH69OG7L.chunk.mjs.map.license} | 2 +- dist/profile-main.mjs | 2 +- dist/profile-main.mjs.map | 2 +- dist/sharebymail-admin-settings.mjs | 2 +- dist/sharebymail-admin-settings.mjs.map | 2 +- dist/systemtags-admin.mjs | 2 +- dist/systemtags-admin.mjs.map | 2 +- dist/systemtags-init.mjs | 4 +-- dist/theming-settings-admin.mjs | 2 +- dist/theming-settings-admin.mjs.map | 2 +- dist/theming-settings-personal.mjs | 2 +- dist/theming-settings-personal.mjs.map | 2 +- ...wofactor_backupcodes-settings-personal.mjs | 2 +- ...ctor_backupcodes-settings-personal.mjs.map | 2 +- dist/user_ldap-settings-admin.mjs | 2 +- dist/user_ldap-settings-admin.mjs.map | 2 +- dist/user_status-menu.mjs | 4 +-- dist/user_status-menu.mjs.map | 2 +- 126 files changed, 141 insertions(+), 141 deletions(-) delete mode 100644 dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs create mode 100644 dist/ActivityCommentAction-DZTkL5C8.chunk.mjs rename dist/{ActivityCommentAction-BsOsgIBJ.chunk.mjs.license => ActivityCommentAction-DZTkL5C8.chunk.mjs.license} (100%) rename dist/{ActivityCommentAction-BsOsgIBJ.chunk.mjs.map => ActivityCommentAction-DZTkL5C8.chunk.mjs.map} (93%) rename dist/{ActivityCommentAction-BsOsgIBJ.chunk.mjs.map.license => ActivityCommentAction-DZTkL5C8.chunk.mjs.map.license} (100%) create mode 100644 dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs rename dist/{ActivityCommentEntry-flkhlwTc.chunk.mjs.license => ActivityCommentEntry-B6Tpqj9O.chunk.mjs.license} (100%) rename dist/{ActivityCommentEntry-flkhlwTc.chunk.mjs.map => ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map} (94%) rename dist/{ActivityCommentEntry-flkhlwTc.chunk.mjs.map.license => ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map.license} (100%) delete mode 100644 dist/ActivityCommentEntry-flkhlwTc.chunk.mjs delete mode 100644 dist/AppstoreBrowse-AfNqrsSg.chunk.mjs create mode 100644 dist/AppstoreBrowse-DsTlcR8_.chunk.mjs rename dist/{AppstoreBrowse-AfNqrsSg.chunk.mjs.license => AppstoreBrowse-DsTlcR8_.chunk.mjs.license} (100%) rename dist/{AppstoreBrowse-AfNqrsSg.chunk.mjs.map => AppstoreBrowse-DsTlcR8_.chunk.mjs.map} (99%) rename dist/{AppstoreBrowse-AfNqrsSg.chunk.mjs.map.license => AppstoreBrowse-DsTlcR8_.chunk.mjs.map.license} (100%) delete mode 100644 dist/AppstoreDiscover-C9at7Z-5.chunk.mjs create mode 100644 dist/AppstoreDiscover-DDOLgo3I.chunk.mjs rename dist/{AppstoreDiscover-C9at7Z-5.chunk.mjs.license => AppstoreDiscover-DDOLgo3I.chunk.mjs.license} (100%) rename dist/{AppstoreDiscover-C9at7Z-5.chunk.mjs.map => AppstoreDiscover-DDOLgo3I.chunk.mjs.map} (99%) rename dist/{AppstoreDiscover-C9at7Z-5.chunk.mjs.map.license => AppstoreDiscover-DDOLgo3I.chunk.mjs.map.license} (100%) delete mode 100644 dist/AuthMechanismRsa-EWm029j5.chunk.mjs create mode 100644 dist/AuthMechanismRsa-vXoEDo92.chunk.mjs rename dist/{AuthMechanismRsa-EWm029j5.chunk.mjs.license => AuthMechanismRsa-vXoEDo92.chunk.mjs.license} (100%) rename dist/{AuthMechanismRsa-EWm029j5.chunk.mjs.map => AuthMechanismRsa-vXoEDo92.chunk.mjs.map} (97%) rename dist/{AuthMechanismRsa-EWm029j5.chunk.mjs.map.license => AuthMechanismRsa-vXoEDo92.chunk.mjs.map.license} (100%) rename dist/{CommentView-BOeY59Ia.chunk.mjs => CommentView-Dwuq398x.chunk.mjs} (89%) rename dist/{CommentView-BOeY59Ia.chunk.mjs.license => CommentView-Dwuq398x.chunk.mjs.license} (100%) rename dist/{CommentView-BOeY59Ia.chunk.mjs.map => CommentView-Dwuq398x.chunk.mjs.map} (99%) rename dist/{CommentView-BOeY59Ia.chunk.mjs.map.license => CommentView-Dwuq398x.chunk.mjs.map.license} (100%) delete mode 100644 dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs create mode 100644 dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs rename dist/{DiscoverTypeCarousel-ChT7kOYo.chunk.mjs.license => DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.license} (100%) rename dist/{DiscoverTypeCarousel-ChT7kOYo.chunk.mjs.map => DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map} (98%) rename dist/{DiscoverTypeCarousel-ChT7kOYo.chunk.mjs.map.license => DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map.license} (100%) create mode 100644 dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs rename dist/{DiscoverTypeShowcase-BukbuTap.chunk.mjs.license => DiscoverTypeShowcase-65aK4fEm.chunk.mjs.license} (100%) rename dist/{DiscoverTypeShowcase-BukbuTap.chunk.mjs.map => DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map} (98%) rename dist/{DiscoverTypeShowcase-BukbuTap.chunk.mjs.map.license => DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map.license} (100%) delete mode 100644 dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs create mode 100644 dist/FilePicker-0pVFI2AM.chunk.mjs rename dist/{FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.license => FilePicker-0pVFI2AM.chunk.mjs.license} (95%) create mode 100644 dist/FilePicker-0pVFI2AM.chunk.mjs.map rename dist/{FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.map.license => FilePicker-0pVFI2AM.chunk.mjs.map.license} (95%) delete mode 100644 dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs delete mode 100644 dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.map rename dist/{FilesSidebarTab-DTUO021l.chunk.mjs => FilesSidebarTab-Bv3AwXFc.chunk.mjs} (55%) rename dist/{FilesSidebarTab-DTUO021l.chunk.mjs.license => FilesSidebarTab-Bv3AwXFc.chunk.mjs.license} (100%) rename dist/{FilesSidebarTab-DTUO021l.chunk.mjs.map => FilesSidebarTab-Bv3AwXFc.chunk.mjs.map} (99%) rename dist/{FilesSidebarTab-DTUO021l.chunk.mjs.map.license => FilesSidebarTab-Bv3AwXFc.chunk.mjs.map.license} (100%) create mode 100644 dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs rename dist/{FilesVersionsSidebarTab-mZplOG03.chunk.mjs.license => FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.license} (100%) rename dist/{FilesVersionsSidebarTab-mZplOG03.chunk.mjs.map => FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map} (99%) rename dist/{FilesVersionsSidebarTab-mZplOG03.chunk.mjs.map.license => FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map.license} (100%) delete mode 100644 dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs create mode 100644 dist/SetStatusModal-B6T5dnOq.chunk.mjs rename dist/{SetStatusModal-BSp1mmzy.chunk.mjs.license => SetStatusModal-B6T5dnOq.chunk.mjs.license} (100%) rename dist/{SetStatusModal-BSp1mmzy.chunk.mjs.map => SetStatusModal-B6T5dnOq.chunk.mjs.map} (99%) rename dist/{SetStatusModal-BSp1mmzy.chunk.mjs.map.license => SetStatusModal-B6T5dnOq.chunk.mjs.map.license} (100%) delete mode 100644 dist/SetStatusModal-BSp1mmzy.chunk.mjs delete mode 100644 dist/SystemTagPicker-BHM6bOgM.chunk.mjs create mode 100644 dist/SystemTagPicker-Bys_E8hA.chunk.mjs rename dist/{SystemTagPicker-BHM6bOgM.chunk.mjs.license => SystemTagPicker-Bys_E8hA.chunk.mjs.license} (100%) rename dist/{SystemTagPicker-BHM6bOgM.chunk.mjs.map => SystemTagPicker-Bys_E8hA.chunk.mjs.map} (99%) rename dist/{SystemTagPicker-BHM6bOgM.chunk.mjs.map.license => SystemTagPicker-Bys_E8hA.chunk.mjs.map.license} (100%) delete mode 100644 dist/UpdateAllDialog-B79HRvpB.chunk.mjs create mode 100644 dist/UpdateAllDialog-BqC8T943.chunk.mjs rename dist/{UpdateAllDialog-B79HRvpB.chunk.mjs.license => UpdateAllDialog-BqC8T943.chunk.mjs.license} (100%) rename dist/{UpdateAllDialog-B79HRvpB.chunk.mjs.map => UpdateAllDialog-BqC8T943.chunk.mjs.map} (99%) rename dist/{UpdateAllDialog-B79HRvpB.chunk.mjs.map.license => UpdateAllDialog-BqC8T943.chunk.mjs.map.license} (100%) delete mode 100644 dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs delete mode 100644 dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.map create mode 100644 dist/index-mH69OG7L.chunk.mjs rename dist/{index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.license => index-mH69OG7L.chunk.mjs.license} (94%) create mode 100644 dist/index-mH69OG7L.chunk.mjs.map rename dist/{index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.map.license => index-mH69OG7L.chunk.mjs.map.license} (94%) diff --git a/core/css/server.css b/core/css/server.css index 2c14536790a85..6cb227030f6d5 100644 --- a/core/css/server.css +++ b/core/css/server.css @@ -64,4 +64,4 @@ */tr.file-picker__row[data-v-7857e8bd]{height:var(--row-height, 50px)}tr.file-picker__row td[data-v-7857e8bd]{cursor:pointer;overflow:hidden;text-overflow:ellipsis;border-bottom:none}tr.file-picker__row td.row-checkbox[data-v-7857e8bd]{padding:0 2px}tr.file-picker__row td[data-v-7857e8bd]:not(.row-checkbox){padding-inline:14px 0}tr.file-picker__row td.row-size[data-v-7857e8bd]{text-align:end;padding-inline:0 14px}tr.file-picker__row td.row-name[data-v-7857e8bd]{padding-inline:2px 0}.file-picker__row[data-v-7857e8bd] *{cursor:pointer}.file-picker__row--selected[data-v-7857e8bd]{background-color:var(--color-background-dark)}.file-picker__row--not-navigatable[data-v-7857e8bd]{filter:saturate(0.7);opacity:.7}.file-picker__row--not-navigatable[data-v-7857e8bd] *,.file-picker__row--not-pickable[data-v-7857e8bd] *{cursor:default !important}.file-picker__row[data-v-7857e8bd]:hover{background-color:var(--color-background-hover)}.file-picker__name-container[data-v-7857e8bd]{display:flex;justify-content:start;align-items:center;height:100%}.file-picker__file-name[data-v-7857e8bd]{padding-inline-start:6px;min-width:0;overflow:hidden;text-overflow:ellipsis}.file-picker__file-extension[data-v-7857e8bd]{color:var(--color-text-maxcontrast);min-width:fit-content}/*! * SPDX-FileCopyrightText: 2023-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later -*/tr.file-picker__row[data-v-1f96131b]{height:var(--row-height, 50px)}tr.file-picker__row td[data-v-1f96131b]{cursor:pointer;overflow:hidden;text-overflow:ellipsis;border-bottom:none}tr.file-picker__row td.row-checkbox[data-v-1f96131b]{padding:0 2px}tr.file-picker__row td[data-v-1f96131b]:not(.row-checkbox){padding-inline:14px 0}tr.file-picker__row td.row-size[data-v-1f96131b]{text-align:end;padding-inline:0 14px}tr.file-picker__row td.row-name[data-v-1f96131b]{padding-inline:2px 0}@keyframes gradient-1f96131b{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}.loading-row .row-checkbox[data-v-1f96131b]{text-align:center !important}.loading-row span[data-v-1f96131b]{display:inline-block;height:24px;background:linear-gradient(to right, var(--color-background-darker), var(--color-text-maxcontrast), var(--color-background-darker));background-size:600px 100%;border-radius:var(--border-radius);animation:gradient-1f96131b 12s ease infinite}.loading-row .row-wrapper[data-v-1f96131b]{display:inline-flex;align-items:center}.loading-row .row-checkbox span[data-v-1f96131b]{width:24px}.loading-row .row-name span[data-v-1f96131b]:last-of-type{margin-inline-start:6px;width:130px}.loading-row .row-size span[data-v-1f96131b]{width:80px}.loading-row .row-modified span[data-v-1f96131b]{width:90px}.file-picker__header-preview[data-v-412efd5c]{width:22px;height:32px;flex:0 0 auto}.file-picker__files[data-v-412efd5c]{margin:2px;margin-inline-start:12px;overflow:scroll auto}.file-picker__files table[data-v-412efd5c]{width:100%;max-height:100%;table-layout:fixed}.file-picker__files th[data-v-412efd5c]{position:sticky;z-index:1;top:0;background-color:var(--color-main-background);padding:2px}.file-picker__files th .header-wrapper[data-v-412efd5c]{display:flex}.file-picker__files th.row-checkbox[data-v-412efd5c]{width:44px}.file-picker__files th.row-name[data-v-412efd5c]{width:230px}.file-picker__files th.row-size[data-v-412efd5c]{width:100px}.file-picker__files th.row-modified[data-v-412efd5c]{width:120px}.file-picker__files th[data-v-412efd5c]:not(.row-size) .button-vue__wrapper{justify-content:start;flex-direction:row-reverse}.file-picker__files th[data-v-412efd5c]:not(.row-size) .button-vue{padding-inline:16px 4px}.file-picker__files th.row-size[data-v-412efd5c] .button-vue__wrapper{justify-content:end}.file-picker__files th[data-v-412efd5c] .button-vue__wrapper{color:var(--color-text-maxcontrast)}.file-picker__files th[data-v-412efd5c] .button-vue__wrapper .button-vue__text{font-weight:normal}.file-picker__breadcrumbs[data-v-b448b141]{flex-grow:0 !important}.file-picker__side[data-v-e1c54e23]{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;min-width:200px;padding:2px;margin-block-start:7px;overflow:auto}.file-picker__side[data-v-e1c54e23] .button-vue__wrapper{justify-content:start}.file-picker__filter-input[data-v-e1c54e23]{margin-block:7px;max-width:260px}@media(max-width: 736px){.file-picker__side[data-v-e1c54e23]{flex-direction:row;min-width:unset}}@media(max-width: 512px){.file-picker__side[data-v-e1c54e23]{flex-direction:row;min-width:unset}.file-picker__filter-input[data-v-e1c54e23]{max-width:unset}}.file-picker__navigation{padding-inline:8px 2px}.file-picker__navigation,.file-picker__navigation *{box-sizing:border-box}.file-picker__navigation .v-select.select{min-width:220px}@media(min-width: 513px)and (max-width: 736px){.file-picker__navigation{gap:11px}}@media(max-width: 512px){.file-picker__navigation{flex-direction:column-reverse !important}}.file-picker__view[data-v-4f89ed79]{height:50px;display:flex;justify-content:start;align-items:center}.file-picker__view h3[data-v-4f89ed79]{font-weight:bold;height:fit-content;margin:0}.file-picker__main[data-v-4f89ed79]{box-sizing:border-box;width:100%;display:flex;flex-direction:column;min-height:0;flex:1;padding-inline:2px}.file-picker__main[data-v-4f89ed79] *{box-sizing:border-box}[data-v-4f89ed79] .file-picker{height:min(80vh,800px) !important}@media(max-width: 512px){[data-v-4f89ed79] .file-picker{height:calc(100% - 16px - var(--default-clickable-area)) !important}}[data-v-4f89ed79] .file-picker__content{display:flex;flex-direction:column;overflow:hidden}.public-auth-prompt__text[data-v-bd4b7f1b]{font-size:1.25em;margin-block:0 calc(3*var(--default-grid-baseline))}.public-auth-prompt__header[data-v-bd4b7f1b]{margin-block:0 calc(3*var(--default-grid-baseline))}.public-auth-prompt__header[data-v-bd4b7f1b]:first-child{margin-top:0}.public-auth-prompt__input[data-v-bd4b7f1b]{margin-block:calc(4*var(--default-grid-baseline)) calc(2*var(--default-grid-baseline))}._passwordDialog_joix2_2{display:flex;flex-direction:column;gap:10px 0;margin-inline:6px;margin-block-end:6px}/*# sourceMappingURL=server.css.map */ +*/tr.file-picker__row[data-v-1f96131b]{height:var(--row-height, 50px)}tr.file-picker__row td[data-v-1f96131b]{cursor:pointer;overflow:hidden;text-overflow:ellipsis;border-bottom:none}tr.file-picker__row td.row-checkbox[data-v-1f96131b]{padding:0 2px}tr.file-picker__row td[data-v-1f96131b]:not(.row-checkbox){padding-inline:14px 0}tr.file-picker__row td.row-size[data-v-1f96131b]{text-align:end;padding-inline:0 14px}tr.file-picker__row td.row-name[data-v-1f96131b]{padding-inline:2px 0}@keyframes gradient-1f96131b{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}.loading-row .row-checkbox[data-v-1f96131b]{text-align:center !important}.loading-row span[data-v-1f96131b]{display:inline-block;height:24px;background:linear-gradient(to right, var(--color-background-darker), var(--color-text-maxcontrast), var(--color-background-darker));background-size:600px 100%;border-radius:var(--border-radius);animation:gradient-1f96131b 12s ease infinite}.loading-row .row-wrapper[data-v-1f96131b]{display:inline-flex;align-items:center}.loading-row .row-checkbox span[data-v-1f96131b]{width:24px}.loading-row .row-name span[data-v-1f96131b]:last-of-type{margin-inline-start:6px;width:130px}.loading-row .row-size span[data-v-1f96131b]{width:80px}.loading-row .row-modified span[data-v-1f96131b]{width:90px}.file-picker__header-preview[data-v-412efd5c]{width:22px;height:32px;flex:0 0 auto}.file-picker__files[data-v-412efd5c]{margin:2px;margin-inline-start:12px;overflow:scroll auto}.file-picker__files table[data-v-412efd5c]{width:100%;max-height:100%;table-layout:fixed}.file-picker__files th[data-v-412efd5c]{position:sticky;z-index:1;top:0;background-color:var(--color-main-background);padding:2px}.file-picker__files th .header-wrapper[data-v-412efd5c]{display:flex}.file-picker__files th.row-checkbox[data-v-412efd5c]{width:44px}.file-picker__files th.row-name[data-v-412efd5c]{width:230px}.file-picker__files th.row-size[data-v-412efd5c]{width:100px}.file-picker__files th.row-modified[data-v-412efd5c]{width:120px}.file-picker__files th[data-v-412efd5c]:not(.row-size) .button-vue__wrapper{justify-content:start;flex-direction:row-reverse}.file-picker__files th[data-v-412efd5c]:not(.row-size) .button-vue{padding-inline:16px 4px}.file-picker__files th.row-size[data-v-412efd5c] .button-vue__wrapper{justify-content:end}.file-picker__files th[data-v-412efd5c] .button-vue__wrapper{color:var(--color-text-maxcontrast)}.file-picker__files th[data-v-412efd5c] .button-vue__wrapper .button-vue__text{font-weight:normal}.file-picker__breadcrumbs[data-v-b448b141]{flex-grow:0 !important}.file-picker__side[data-v-e1c54e23]{display:flex;flex-direction:column;align-items:stretch;gap:.5rem;min-width:200px;padding:2px;margin-block-start:7px;overflow:auto}.file-picker__side[data-v-e1c54e23] .button-vue__wrapper{justify-content:start}.file-picker__filter-input[data-v-e1c54e23]{margin-block:7px;max-width:260px}@media(max-width: 736px){.file-picker__side[data-v-e1c54e23]{flex-direction:row;min-width:unset}}@media(max-width: 512px){.file-picker__side[data-v-e1c54e23]{flex-direction:row;min-width:unset}.file-picker__filter-input[data-v-e1c54e23]{max-width:unset}}.file-picker__navigation{padding-inline:8px 2px}.file-picker__navigation,.file-picker__navigation *{box-sizing:border-box}.file-picker__navigation .v-select.select{min-width:220px}@media(min-width: 513px)and (max-width: 736px){.file-picker__navigation{gap:11px}}@media(max-width: 512px){.file-picker__navigation{flex-direction:column-reverse !important}}.file-picker__view[data-v-39182aaf]{height:50px;display:flex;justify-content:start;align-items:center}.file-picker__view h3[data-v-39182aaf]{font-weight:bold;height:fit-content;margin:0}.file-picker__main[data-v-39182aaf]{box-sizing:border-box;width:100%;display:flex;flex-direction:column;min-height:0;flex:1;padding-inline:2px}.file-picker__main[data-v-39182aaf] *{box-sizing:border-box}[data-v-39182aaf] .file-picker{height:min(80vh,800px) !important}@media(max-width: 512px){[data-v-39182aaf] .file-picker{height:calc(100% - 16px - var(--default-clickable-area)) !important}}[data-v-39182aaf] .file-picker__content{display:flex;flex-direction:column;overflow:hidden}.public-auth-prompt__text[data-v-bd4b7f1b]{font-size:1.25em;margin-block:0 calc(3*var(--default-grid-baseline))}.public-auth-prompt__header[data-v-bd4b7f1b]{margin-block:0 calc(3*var(--default-grid-baseline))}.public-auth-prompt__header[data-v-bd4b7f1b]:first-child{margin-top:0}.public-auth-prompt__input[data-v-bd4b7f1b]{margin-block:calc(4*var(--default-grid-baseline)) calc(2*var(--default-grid-baseline))}._passwordDialog_joix2_2{display:flex;flex-direction:column;gap:10px 0;margin-inline:6px;margin-block-end:6px}/*# sourceMappingURL=server.css.map */ diff --git a/dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs b/dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs deleted file mode 100644 index 7e06412b69212..0000000000000 --- a/dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{a as t}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{C as m,a}from"./CommentView-BOeY59Ia.chunk.mjs";import{l as p}from"./activity-BZ6xFlZg.chunk.mjs";import{b as i,r as s,o as n,c,m as u}from"./Web-DYqXJUev.chunk.mjs";import{_ as l}from"./public-C1mLBHT3.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./GetComments-2IL7C9Us.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const d=i({components:{Comment:a},mixins:[m],props:{reloadCallback:{type:Function,required:!0}},methods:{onNewComment(){try{this.reloadCallback()}catch(o){t(e("comments","Could not reload comments")),p.error("Could not reload comments",{error:o})}}}});function C(o,f,y,w,D,N){const r=s("Comment");return n(),c(r,u(o.editorData,{autoComplete:o.autoComplete,resourceType:o.resourceType,editor:!0,userData:o.userData,resourceId:o.resourceId,class:"comments-action",onNew:o.onNewComment}),null,16,["autoComplete","resourceType","userData","resourceId","onNew"])}const S=l(d,[["render",C],["__scopeId","data-v-29a1e244"]]);export{S as default}; -//# sourceMappingURL=ActivityCommentAction-BsOsgIBJ.chunk.mjs.map diff --git a/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs b/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs new file mode 100644 index 0000000000000..2c2ea8838b161 --- /dev/null +++ b/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs @@ -0,0 +1,2 @@ +import{a as t}from"./index-mH69OG7L.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{C as m,a}from"./CommentView-Dwuq398x.chunk.mjs";import{l as p}from"./activity-BZ6xFlZg.chunk.mjs";import{b as i,r as s,o as n,c,m as u}from"./Web-DYqXJUev.chunk.mjs";import{_ as l}from"./public-C1mLBHT3.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./GetComments-2IL7C9Us.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const d=i({components:{Comment:a},mixins:[m],props:{reloadCallback:{type:Function,required:!0}},methods:{onNewComment(){try{this.reloadCallback()}catch(o){t(e("comments","Could not reload comments")),p.error("Could not reload comments",{error:o})}}}});function C(o,f,y,w,D,N){const r=s("Comment");return n(),c(r,u(o.editorData,{autoComplete:o.autoComplete,resourceType:o.resourceType,editor:!0,userData:o.userData,resourceId:o.resourceId,class:"comments-action",onNew:o.onNewComment}),null,16,["autoComplete","resourceType","userData","resourceId","onNew"])}const S=l(d,[["render",C],["__scopeId","data-v-29a1e244"]]);export{S as default}; +//# sourceMappingURL=ActivityCommentAction-DZTkL5C8.chunk.mjs.map diff --git a/dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs.license b/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.license similarity index 100% rename from dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs.license rename to dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.license diff --git a/dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs.map b/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.map similarity index 93% rename from dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs.map rename to dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.map index c77d4b8089a9e..f0164a199a7ac 100644 --- a/dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs.map +++ b/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"ActivityCommentAction-BsOsgIBJ.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentAction.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","defineComponent","Comment","CommentView","error","showError","t","logger","_createBlock","_component_Comment","_mergeProps","_ctx"],"mappings":"ktCAyBA,MAAAA,EAAeC,EAAgB,CAC9B,WAAY,CACX,QAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,QAAS,CACR,cAAe,CACd,GAAI,CAEH,KAAK,eAAA,CACN,OAASC,EAAO,CACfC,EAAUC,EAAE,WAAY,2BAA2B,CAAC,EACpDC,EAAO,MAAM,4BAA6B,CAAE,MAAAH,CAAA,CAAO,CACpD,CACD,CAAA,CAEF,CAAC,0DA3CAI,EAQuBC,EARvBC,EAQuBC,EAPd,WAAU,CACjB,aAAcA,EAAA,aACd,aAAcA,EAAA,aACd,OAAQ,GACR,SAAUA,EAAA,SACV,WAAYA,EAAA,WACb,MAAM,kBACL,MAAKA,EAAA,YAAA,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,WAAA,aAAA,OAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"ActivityCommentAction-DZTkL5C8.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentAction.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","defineComponent","Comment","CommentView","error","showError","t","logger","_createBlock","_component_Comment","_mergeProps","_ctx"],"mappings":"ysCAyBA,MAAAA,EAAeC,EAAgB,CAC9B,WAAY,CACX,QAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,QAAS,CACR,cAAe,CACd,GAAI,CAEH,KAAK,eAAA,CACN,OAASC,EAAO,CACfC,EAAUC,EAAE,WAAY,2BAA2B,CAAC,EACpDC,EAAO,MAAM,4BAA6B,CAAE,MAAAH,CAAA,CAAO,CACpD,CACD,CAAA,CAEF,CAAC,0DA3CAI,EAQuBC,EARvBC,EAQuBC,EAPd,WAAU,CACjB,aAAcA,EAAA,aACd,aAAcA,EAAA,aACd,OAAQ,GACR,SAAUA,EAAA,SACV,WAAYA,EAAA,WACb,MAAM,kBACL,MAAKA,EAAA,YAAA,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,WAAA,aAAA,OAAA,CAAA"} \ No newline at end of file diff --git a/dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs.map.license b/dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.map.license similarity index 100% rename from dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs.map.license rename to dist/ActivityCommentAction-DZTkL5C8.chunk.mjs.map.license diff --git a/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs b/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs new file mode 100644 index 0000000000000..ca377cbc44823 --- /dev/null +++ b/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs @@ -0,0 +1,2 @@ +import{t as s}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{C as p,a}from"./CommentView-Dwuq398x.chunk.mjs";import{_ as i}from"./public-C1mLBHT3.chunk.mjs";import{r as n,o as c,c as u,m as l}from"./Web-DYqXJUev.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./index-mH69OG7L.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./activity-BZ6xFlZg.chunk.mjs";import"./GetComments-2IL7C9Us.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const d={name:"ActivityCommentEntry",components:{Comment:a},mixins:[p],props:{comment:{type:Object,required:!0},reloadCallback:{type:Function,required:!0}},data(){return{commentMessage:""}},watch:{comment(){this.commentMessage=this.comment.props.message}},mounted(){this.commentMessage=this.comment.props.message},methods:{t:s}};function g(t,e,o,f,m,C){const r=n("Comment");return c(),u(r,l({ref:"comment",tag:"li"},o.comment.props,{autoComplete:t.autoComplete,resourceType:t.resourceType,message:m.commentMessage,resourceId:t.resourceId,userData:t.genMentionsData(o.comment.props.mentions),class:"comments-activity",onDelete:e[0]||(e[0]=y=>o.reloadCallback())}),null,16,["autoComplete","resourceType","message","resourceId","userData"])}const Q=i(d,[["render",g],["__scopeId","data-v-afc310f1"]]);export{Q as default}; +//# sourceMappingURL=ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map diff --git a/dist/ActivityCommentEntry-flkhlwTc.chunk.mjs.license b/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.license similarity index 100% rename from dist/ActivityCommentEntry-flkhlwTc.chunk.mjs.license rename to dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.license diff --git a/dist/ActivityCommentEntry-flkhlwTc.chunk.mjs.map b/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map similarity index 94% rename from dist/ActivityCommentEntry-flkhlwTc.chunk.mjs.map rename to dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map index 58a9d68a8ae01..40597a47d0b31 100644 --- a/dist/ActivityCommentEntry-flkhlwTc.chunk.mjs.map +++ b/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"ActivityCommentEntry-flkhlwTc.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentEntry.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","Comment","CommentView","t","_openBlock","_createBlock","_component_Comment","_mergeProps","$props","_ctx","$data","_cache"],"mappings":"wrCA0BA,MAAAA,EAAe,CACd,KAAM,uBAEN,WAAY,CACX,QAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,QAAS,CACR,KAAM,OACN,SAAU,EAAA,EAGX,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,MAAO,CACN,MAAO,CACN,eAAgB,EAAA,CAElB,EAEA,MAAO,CACN,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,CAAA,EAGD,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,EAEA,QAAS,CAAA,EACRC,CAAA,CAEF,+CA3DC,OAAAC,EAAA,EAAAC,EAU8BC,EAV9BC,EAU8B,CAT7B,IAAI,UACJ,IAAI,IAAA,EACIC,UAAQ,MAAK,CACpB,aAAcC,EAAA,aACd,aAAcA,EAAA,aACd,QAASC,EAAA,eACT,WAAYD,EAAA,WACZ,SAAUA,EAAA,gBAAgBD,EAAA,QAAQ,MAAM,QAAQ,EACjD,MAAM,oBACL,SAAMG,eAAEH,EAAA,eAAA,EAAc,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,UAAA,aAAA,UAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"ActivityCommentEntry-B6Tpqj9O.chunk.mjs","sources":["../build/frontend/apps/comments/src/views/ActivityCommentEntry.vue"],"sourcesContent":["\n\n\n\n\n\n\n"],"names":["_sfc_main","Comment","CommentView","t","_openBlock","_createBlock","_component_Comment","_mergeProps","$props","_ctx","$data","_cache"],"mappings":"+qCA0BA,MAAAA,EAAe,CACd,KAAM,uBAEN,WAAY,CACX,QAAAC,CAAA,EAGD,OAAQ,CAACC,CAAW,EACpB,MAAO,CACN,QAAS,CACR,KAAM,OACN,SAAU,EAAA,EAGX,eAAgB,CACf,KAAM,SACN,SAAU,EAAA,CACX,EAGD,MAAO,CACN,MAAO,CACN,eAAgB,EAAA,CAElB,EAEA,MAAO,CACN,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,CAAA,EAGD,SAAU,CACT,KAAK,eAAiB,KAAK,QAAQ,MAAM,OAC1C,EAEA,QAAS,CAAA,EACRC,CAAA,CAEF,+CA3DC,OAAAC,EAAA,EAAAC,EAU8BC,EAV9BC,EAU8B,CAT7B,IAAI,UACJ,IAAI,IAAA,EACIC,UAAQ,MAAK,CACpB,aAAcC,EAAA,aACd,aAAcA,EAAA,aACd,QAASC,EAAA,eACT,WAAYD,EAAA,WACZ,SAAUA,EAAA,gBAAgBD,EAAA,QAAQ,MAAM,QAAQ,EACjD,MAAM,oBACL,SAAMG,eAAEH,EAAA,eAAA,EAAc,CAAA,EAAA,KAAA,GAAA,CAAA,eAAA,eAAA,UAAA,aAAA,UAAA,CAAA"} \ No newline at end of file diff --git a/dist/ActivityCommentEntry-flkhlwTc.chunk.mjs.map.license b/dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map.license similarity index 100% rename from dist/ActivityCommentEntry-flkhlwTc.chunk.mjs.map.license rename to dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs.map.license diff --git a/dist/ActivityCommentEntry-flkhlwTc.chunk.mjs b/dist/ActivityCommentEntry-flkhlwTc.chunk.mjs deleted file mode 100644 index 3b2c57874a1fa..0000000000000 --- a/dist/ActivityCommentEntry-flkhlwTc.chunk.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{t as s}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{C as p,a}from"./CommentView-BOeY59Ia.chunk.mjs";import{_ as i}from"./public-C1mLBHT3.chunk.mjs";import{r as n,o as c,c as u,m as l}from"./Web-DYqXJUev.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./activity-BZ6xFlZg.chunk.mjs";import"./GetComments-2IL7C9Us.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const d={name:"ActivityCommentEntry",components:{Comment:a},mixins:[p],props:{comment:{type:Object,required:!0},reloadCallback:{type:Function,required:!0}},data(){return{commentMessage:""}},watch:{comment(){this.commentMessage=this.comment.props.message}},mounted(){this.commentMessage=this.comment.props.message},methods:{t:s}};function g(t,e,o,f,m,C){const r=n("Comment");return c(),u(r,l({ref:"comment",tag:"li"},o.comment.props,{autoComplete:t.autoComplete,resourceType:t.resourceType,message:m.commentMessage,resourceId:t.resourceId,userData:t.genMentionsData(o.comment.props.mentions),class:"comments-activity",onDelete:e[0]||(e[0]=y=>o.reloadCallback())}),null,16,["autoComplete","resourceType","message","resourceId","userData"])}const Q=i(d,[["render",g],["__scopeId","data-v-afc310f1"]]);export{Q as default}; -//# sourceMappingURL=ActivityCommentEntry-flkhlwTc.chunk.mjs.map diff --git a/dist/AppstoreBrowse-AfNqrsSg.chunk.mjs b/dist/AppstoreBrowse-AfNqrsSg.chunk.mjs deleted file mode 100644 index 1f8fa3fb69e60..0000000000000 --- a/dist/AppstoreBrowse-AfNqrsSg.chunk.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as O,u as U}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as q}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{u as V,a as z,b as D}from"./UpdateAllDialog-B79HRvpB.chunk.mjs";import{e as E}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{_ as A,l as G}from"./public-C1mLBHT3.chunk.mjs";import{N as R}from"./mdi-B6W_Xvj-.chunk.mjs";import{b as j,n as T,R as H,o,f as S,y as f,g as d,u as t,j as B,t as n,h as P,k as b,L as M,F as $,B as L,w as I,s as J,v as k,l as F,z as K,c as v,C as Q}from"./Web-DYqXJUev.chunk.mjs";import{N as W}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{u as C,c as X,n as Y,a as Z,b as ee,d as te}from"./appstore-main.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";const ie=["id"],ae={key:0},se=["aria-label"],oe=j({__name:"OfficeSuiteSwitcherItem",props:J({suite:{},loading:{type:Boolean}},{selected:{},selectedModifiers:{}}),emits:["update:selected"],setup(p){const r=T(p,"selected"),m=H(),_=C(),s=k(()=>_.getAppById(p.suite.appId)),y=k(()=>!!s.value?.installed),w=k(()=>!s.value||!y.value&&!X(s.value));return(a,l)=>(o(),S("div",{class:f([a.$style.officeSuiteSwitcherItem,{[a.$style.officeSuiteSwitcherItem_selected]:r.value===p.suite.id}]),onClick:l[3]||(l[3]=i=>r.value=p.suite.id)},[d("div",{class:f(a.$style.officeSuiteSwitcherItem__header)},[d("h3",{id:t(m),class:f(a.$style.officeSuiteSwitcherItem__title)},[B(n(p.suite.name)+" ",1),y.value?(o(),S("span",ae,"("+n(t(e)("appstore","installed"))+")",1)):P("",!0)],10,ie),b(t(W),{modelValue:r.value,"onUpdate:modelValue":l[0]||(l[0]=i=>r.value=i),"aria-labelledby":t(m),disabled:w.value,loading:p.loading,type:"radio",name:"office-suite",value:p.suite.id,onClick:l[1]||(l[1]=M(()=>{},["stop"]))},null,8,["modelValue","aria-labelledby","disabled","loading","value"])],2),d("ul",{"aria-label":t(e)("appstore","Features"),class:f(a.$style.officeSuiteSwitcherItem__features)},[(o(!0),S($,null,L(p.suite.features,(i,c)=>(o(),S("li",{key:c},n(i),1))),128))],10,se),b(t(O),{href:p.suite.learnMoreUrl,onClick:l[2]||(l[2]=M(()=>{},["stop"]))},{default:I(()=>[B(n(t(e)("appstore","Learn more"))+"↗ ",1)]),_:1},8,["href"])],2))}}),re="_officeSuiteSwitcherItem_1x2g7_2",le="_officeSuiteSwitcherItem_selected_1x2g7_23",ce="_officeSuiteSwitcherItem__header_1x2g7_29",pe="_officeSuiteSwitcherItem__title_1x2g7_36",ue="_officeSuiteSwitcherItem__features_1x2g7_42",fe="_officeSuiteSwitcherItem__link_1x2g7_55",ne={officeSuiteSwitcherItem:re,officeSuiteSwitcherItem_selected:le,officeSuiteSwitcherItem__header:ce,officeSuiteSwitcherItem__title:pe,officeSuiteSwitcherItem__features:ue,officeSuiteSwitcherItem__link:fe},me={$style:ne},de=A(oe,[["__cssModules",me]]),g=Object.freeze([{id:"nextcloud-office",appId:"eurooffice",name:"Nextcloud Office",features:[e("settings","Powered by Euro-Office"),e("settings","Good Nextcloud integration"),e("settings","Open source"),e("settings","Best performance"),e("settings","Limited ODF compatibility"),e("settings","Best Microsoft compatibility")],learnMoreUrl:"https://github.com/Euro-Office",isPrimary:!0},{id:"collabora-office",appId:"richdocuments",name:"Collabora Office",features:[e("settings","Best Nextcloud integration"),e("settings","Open source"),e("settings","Good performance"),e("settings","Best security: documents never leave your server"),e("settings","Best ODF compatibility"),e("settings","Best support for legacy files")],learnMoreUrl:"https://nextcloud.com/collaboraonline/",isPrimary:!1}]),_e=j({__name:"OfficeSuiteSwitcher",setup(p){const r=C(),m=G("appstore","isAllInOne",!1),_=F(!1),s=F(y());K(s,l);function y(){for(const i of g){const c=r.apps.find(u=>u.id===i.appId&&u.installed);if(c&&c.active)return i.id}return g.find(i=>i.isPrimary)?.id??null}function w(){s.value=null}async function a(i){const c=r.getAppById(i.appId);c&&Z(c)&&await r.disableApp(i.appId)}async function l(i,c){if(!(_.value||i===c))try{_.value=!0;const u=g.find(h=>h.id===i);if(!u){for(const h of g)await a(h);return}const x=r.getAppById(u.appId);if(Y(x))if(await E({name:e("appstore","Force enable {suite}?",{suite:u.name}),text:e("appstore","Enabling {suite} requires force enabling the app. This may cause issues with your Nextcloud instance. Are you sure you want to proceed?",{suite:u.name}),labelConfirm:e("appstore","Force enable"),labelReject:e("appstore","Cancel"),severity:"warning"}))await r.enableApp(u.appId,!0);else{s.value=c;return}for(const h of g)h.id===i?await r.enableApp(h.appId):await a(h)}finally{_.value=!1}}return(i,c)=>t(m)?(o(),v(t(R),{key:0,type:"info"},{default:I(()=>[d("p",null,n(t(e)("appstore","Office suite switching is managed through the Nextcloud All-in-One interface.")),1),d("p",null,n(t(e)("appstore","Please use the AIO interface to switch between office suites.")),1)]),_:1})):(o(),S("section",{key:1,class:f(i.$style.officeSuiteSwitcher)},[d("h3",{class:f(i.$style.officeSuiteSwitcher__title)},n(t(e)("appstore","Select your preferred office suite.")),3),d("p",null,n(t(e)("appstore","Please note that installing requires manual server setup.")),1),d("fieldset",{class:f(i.$style.officeSuiteSwitcher__cards)},[(o(!0),S($,null,L(t(g),u=>(o(),v(de,{key:u.id,selected:s.value,"onUpdate:selected":c[0]||(c[0]=x=>s.value=x),class:f(i.$style.officeSuiteSwitcher__cardsItem),suite:u,loading:_.value},null,8,["selected","class","suite","loading"]))),128))],2),d("div",{class:f(i.$style.officeSuiteSwitcher__actions)},[b(t(O),{disabled:!s.value,onClick:w},{default:I(()=>[B(n(t(e)("appstore","Disable office suites")),1)]),_:1},8,["disabled"])],2)],2))}}),Se="_officeSuiteSwitcher_1ajfj_2",he="_officeSuiteSwitcher__cards_1ajfj_19",ye="_officeSuiteSwitcher__cardsItem_1ajfj_25",we="_officeSuiteSwitcher__actions_1ajfj_29",ge="_officeSuiteSwitcher__disableButton_1ajfj_33",ve={officeSuiteSwitcher:Se,officeSuiteSwitcher__cards:he,officeSuiteSwitcher__cardsItem:ye,officeSuiteSwitcher__actions:we,officeSuiteSwitcher__disableButton:ge},be={$style:ve},Ie=A(_e,[["__cssModules",be]]),ke=j({__name:"AppstoreBrowse",setup(p){const r=U(),m=C(),_=ee(),s=k(()=>r.params.category),y=k(()=>s.value==="featured"?m.apps.filter(a=>a.level===200):s.value==="supported"?m.apps.filter(a=>a.level===300):m.getAppsByCategory(s.value)),w=V(y);return(a,l)=>(o(),S($,null,[b(z),t(m).isLoadingApps?(o(),v(t(N),{key:0,name:t(e)("appstore","Loading app list")},{icon:I(()=>[b(t(q),{size:64})]),_:1},8,["name"])):(o(),S($,{key:1},[s.value==="office"?(o(),v(Ie,{key:0})):P("",!0),t(w).length?(o(),v(Q(t(_).isGridView?D:te),{key:1,class:f(a.$style.appstoreBrowse),apps:t(w)},null,8,["class","apps"])):(o(),v(t(N),{key:2,name:t(e)("appstore","No matching apps found")},{action:I(()=>[b(t(O),{variant:"primary",onClick:l[0]||(l[0]=i=>a.$router.push({query:a.$route.query,name:"apps-search"}))},{default:I(()=>[B(n(t(e)("appstore","Search everywhere")),1)]),_:1})]),_:1},8,["name"]))],64))],64))}}),Be="_appstoreBrowse_1w3np_2",$e={appstoreBrowse:Be},xe={$style:$e},gt=A(ke,[["__cssModules",xe]]);export{gt as default}; -//# sourceMappingURL=AppstoreBrowse-AfNqrsSg.chunk.mjs.map diff --git a/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs b/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs new file mode 100644 index 0000000000000..64b67bbcce33e --- /dev/null +++ b/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs @@ -0,0 +1,2 @@ +import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as O,u as U}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as q}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{u as V,a as z,b as D}from"./UpdateAllDialog-BqC8T943.chunk.mjs";import{e as E}from"./index-mH69OG7L.chunk.mjs";import{_ as A,l as G}from"./public-C1mLBHT3.chunk.mjs";import{N as R}from"./mdi-B6W_Xvj-.chunk.mjs";import{b as j,n as T,R as H,o,f as S,y as f,g as d,u as t,j as B,t as n,h as P,k as b,L as M,F as $,B as L,w as I,s as J,v as k,l as F,z as K,c as v,C as Q}from"./Web-DYqXJUev.chunk.mjs";import{N as W}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{u as C,c as X,n as Y,a as Z,b as ee,d as te}from"./appstore-main.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";const ie=["id"],ae={key:0},se=["aria-label"],oe=j({__name:"OfficeSuiteSwitcherItem",props:J({suite:{},loading:{type:Boolean}},{selected:{},selectedModifiers:{}}),emits:["update:selected"],setup(p){const r=T(p,"selected"),m=H(),_=C(),s=k(()=>_.getAppById(p.suite.appId)),y=k(()=>!!s.value?.installed),w=k(()=>!s.value||!y.value&&!X(s.value));return(a,l)=>(o(),S("div",{class:f([a.$style.officeSuiteSwitcherItem,{[a.$style.officeSuiteSwitcherItem_selected]:r.value===p.suite.id}]),onClick:l[3]||(l[3]=i=>r.value=p.suite.id)},[d("div",{class:f(a.$style.officeSuiteSwitcherItem__header)},[d("h3",{id:t(m),class:f(a.$style.officeSuiteSwitcherItem__title)},[B(n(p.suite.name)+" ",1),y.value?(o(),S("span",ae,"("+n(t(e)("appstore","installed"))+")",1)):P("",!0)],10,ie),b(t(W),{modelValue:r.value,"onUpdate:modelValue":l[0]||(l[0]=i=>r.value=i),"aria-labelledby":t(m),disabled:w.value,loading:p.loading,type:"radio",name:"office-suite",value:p.suite.id,onClick:l[1]||(l[1]=M(()=>{},["stop"]))},null,8,["modelValue","aria-labelledby","disabled","loading","value"])],2),d("ul",{"aria-label":t(e)("appstore","Features"),class:f(a.$style.officeSuiteSwitcherItem__features)},[(o(!0),S($,null,L(p.suite.features,(i,c)=>(o(),S("li",{key:c},n(i),1))),128))],10,se),b(t(O),{href:p.suite.learnMoreUrl,onClick:l[2]||(l[2]=M(()=>{},["stop"]))},{default:I(()=>[B(n(t(e)("appstore","Learn more"))+"↗ ",1)]),_:1},8,["href"])],2))}}),re="_officeSuiteSwitcherItem_1x2g7_2",le="_officeSuiteSwitcherItem_selected_1x2g7_23",ce="_officeSuiteSwitcherItem__header_1x2g7_29",pe="_officeSuiteSwitcherItem__title_1x2g7_36",ue="_officeSuiteSwitcherItem__features_1x2g7_42",fe="_officeSuiteSwitcherItem__link_1x2g7_55",ne={officeSuiteSwitcherItem:re,officeSuiteSwitcherItem_selected:le,officeSuiteSwitcherItem__header:ce,officeSuiteSwitcherItem__title:pe,officeSuiteSwitcherItem__features:ue,officeSuiteSwitcherItem__link:fe},me={$style:ne},de=A(oe,[["__cssModules",me]]),g=Object.freeze([{id:"nextcloud-office",appId:"eurooffice",name:"Nextcloud Office",features:[e("settings","Powered by Euro-Office"),e("settings","Good Nextcloud integration"),e("settings","Open source"),e("settings","Best performance"),e("settings","Limited ODF compatibility"),e("settings","Best Microsoft compatibility")],learnMoreUrl:"https://github.com/Euro-Office",isPrimary:!0},{id:"collabora-office",appId:"richdocuments",name:"Collabora Office",features:[e("settings","Best Nextcloud integration"),e("settings","Open source"),e("settings","Good performance"),e("settings","Best security: documents never leave your server"),e("settings","Best ODF compatibility"),e("settings","Best support for legacy files")],learnMoreUrl:"https://nextcloud.com/collaboraonline/",isPrimary:!1}]),_e=j({__name:"OfficeSuiteSwitcher",setup(p){const r=C(),m=G("appstore","isAllInOne",!1),_=F(!1),s=F(y());K(s,l);function y(){for(const i of g){const c=r.apps.find(u=>u.id===i.appId&&u.installed);if(c&&c.active)return i.id}return g.find(i=>i.isPrimary)?.id??null}function w(){s.value=null}async function a(i){const c=r.getAppById(i.appId);c&&Z(c)&&await r.disableApp(i.appId)}async function l(i,c){if(!(_.value||i===c))try{_.value=!0;const u=g.find(h=>h.id===i);if(!u){for(const h of g)await a(h);return}const x=r.getAppById(u.appId);if(Y(x))if(await E({name:e("appstore","Force enable {suite}?",{suite:u.name}),text:e("appstore","Enabling {suite} requires force enabling the app. This may cause issues with your Nextcloud instance. Are you sure you want to proceed?",{suite:u.name}),labelConfirm:e("appstore","Force enable"),labelReject:e("appstore","Cancel"),severity:"warning"}))await r.enableApp(u.appId,!0);else{s.value=c;return}for(const h of g)h.id===i?await r.enableApp(h.appId):await a(h)}finally{_.value=!1}}return(i,c)=>t(m)?(o(),v(t(R),{key:0,type:"info"},{default:I(()=>[d("p",null,n(t(e)("appstore","Office suite switching is managed through the Nextcloud All-in-One interface.")),1),d("p",null,n(t(e)("appstore","Please use the AIO interface to switch between office suites.")),1)]),_:1})):(o(),S("section",{key:1,class:f(i.$style.officeSuiteSwitcher)},[d("h3",{class:f(i.$style.officeSuiteSwitcher__title)},n(t(e)("appstore","Select your preferred office suite.")),3),d("p",null,n(t(e)("appstore","Please note that installing requires manual server setup.")),1),d("fieldset",{class:f(i.$style.officeSuiteSwitcher__cards)},[(o(!0),S($,null,L(t(g),u=>(o(),v(de,{key:u.id,selected:s.value,"onUpdate:selected":c[0]||(c[0]=x=>s.value=x),class:f(i.$style.officeSuiteSwitcher__cardsItem),suite:u,loading:_.value},null,8,["selected","class","suite","loading"]))),128))],2),d("div",{class:f(i.$style.officeSuiteSwitcher__actions)},[b(t(O),{disabled:!s.value,onClick:w},{default:I(()=>[B(n(t(e)("appstore","Disable office suites")),1)]),_:1},8,["disabled"])],2)],2))}}),Se="_officeSuiteSwitcher_1ajfj_2",he="_officeSuiteSwitcher__cards_1ajfj_19",ye="_officeSuiteSwitcher__cardsItem_1ajfj_25",we="_officeSuiteSwitcher__actions_1ajfj_29",ge="_officeSuiteSwitcher__disableButton_1ajfj_33",ve={officeSuiteSwitcher:Se,officeSuiteSwitcher__cards:he,officeSuiteSwitcher__cardsItem:ye,officeSuiteSwitcher__actions:we,officeSuiteSwitcher__disableButton:ge},be={$style:ve},Ie=A(_e,[["__cssModules",be]]),ke=j({__name:"AppstoreBrowse",setup(p){const r=U(),m=C(),_=ee(),s=k(()=>r.params.category),y=k(()=>s.value==="featured"?m.apps.filter(a=>a.level===200):s.value==="supported"?m.apps.filter(a=>a.level===300):m.getAppsByCategory(s.value)),w=V(y);return(a,l)=>(o(),S($,null,[b(z),t(m).isLoadingApps?(o(),v(t(N),{key:0,name:t(e)("appstore","Loading app list")},{icon:I(()=>[b(t(q),{size:64})]),_:1},8,["name"])):(o(),S($,{key:1},[s.value==="office"?(o(),v(Ie,{key:0})):P("",!0),t(w).length?(o(),v(Q(t(_).isGridView?D:te),{key:1,class:f(a.$style.appstoreBrowse),apps:t(w)},null,8,["class","apps"])):(o(),v(t(N),{key:2,name:t(e)("appstore","No matching apps found")},{action:I(()=>[b(t(O),{variant:"primary",onClick:l[0]||(l[0]=i=>a.$router.push({query:a.$route.query,name:"apps-search"}))},{default:I(()=>[B(n(t(e)("appstore","Search everywhere")),1)]),_:1})]),_:1},8,["name"]))],64))],64))}}),Be="_appstoreBrowse_1w3np_2",$e={appstoreBrowse:Be},xe={$style:$e},gt=A(ke,[["__cssModules",xe]]);export{gt as default}; +//# sourceMappingURL=AppstoreBrowse-DsTlcR8_.chunk.mjs.map diff --git a/dist/AppstoreBrowse-AfNqrsSg.chunk.mjs.license b/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.license similarity index 100% rename from dist/AppstoreBrowse-AfNqrsSg.chunk.mjs.license rename to dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.license diff --git a/dist/AppstoreBrowse-AfNqrsSg.chunk.mjs.map b/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.map similarity index 99% rename from dist/AppstoreBrowse-AfNqrsSg.chunk.mjs.map rename to dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.map index 4882961e5d12b..5fc849431d2ae 100644 --- a/dist/AppstoreBrowse-AfNqrsSg.chunk.mjs.map +++ b/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"AppstoreBrowse-AfNqrsSg.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/AppstoreBrowse/OfficeSuiteSwitcherItem.vue","../build/frontend/apps/appstore/src/service/OfficeSuites.ts","../build/frontend/apps/appstore/src/components/AppstoreBrowse/OfficeSuiteSwitcher.vue","../build/frontend/apps/appstore/src/views/AppstoreBrowse.vue"],"sourcesContent":["\n\n\n\n\n\n\n","/*\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\nexport const OFFICE_SUITES = Object.freeze([\n\t{\n\t\tid: 'nextcloud-office',\n\t\tappId: 'eurooffice',\n\t\tname: 'Nextcloud Office',\n\t\tfeatures: [\n\t\t\tt('settings', 'Powered by Euro-Office'),\n\t\t\tt('settings', 'Good Nextcloud integration'),\n\t\t\tt('settings', 'Open source'),\n\t\t\tt('settings', 'Best performance'),\n\t\t\tt('settings', 'Limited ODF compatibility'),\n\t\t\tt('settings', 'Best Microsoft compatibility'),\n\t\t],\n\t\tlearnMoreUrl: 'https://github.com/Euro-Office',\n\t\tisPrimary: true,\n\t},\n\t{\n\t\tid: 'collabora-office',\n\t\tappId: 'richdocuments',\n\t\tname: 'Collabora Office',\n\t\tfeatures: [\n\t\t\tt('settings', 'Best Nextcloud integration'),\n\t\t\tt('settings', 'Open source'),\n\t\t\tt('settings', 'Good performance'),\n\t\t\tt('settings', 'Best security: documents never leave your server'),\n\t\t\tt('settings', 'Best ODF compatibility'),\n\t\t\tt('settings', 'Best support for legacy files'),\n\t\t],\n\t\tlearnMoreUrl: 'https://nextcloud.com/collaboraonline/',\n\t\tisPrimary: false,\n\t},\n])\n\n/**\n * Get office suite configuration by ID\n *\n * @param id - The suite ID\n * @return The suite configuration or undefined if not found\n */\nexport function getOfficeSuiteById(id: string) {\n\treturn OFFICE_SUITES.find((suite) => suite.id === id)\n}\n\n/**\n * Get office suite configuration by app ID\n *\n * @param appId - The app ID (richdocuments, onlyoffice, etc.)\n * @return The suite configuration or undefined if not found\n */\nexport function getOfficeSuiteByAppId(appId: string) {\n\treturn OFFICE_SUITES.find((suite) => suite.appId === appId)\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"names":["selectedSuiteId","_useModel","__props","headerId","useId","store","useAppsStore","app","computed","isInstalled","cannotInstall","canInstall","_createElementBlock","_normalizeClass","$style","_cache","$event","_createElementVNode","_unref","_openBlock","_hoisted_2","_toDisplayString","t","_createVNode","NcCheckboxRadioSwitch","_Fragment","feature","index","NcButton","_createTextVNode","OFFICE_SUITES","isAllInOne","loadState","isProcessing","ref","getInitialSuite","watch","onSuiteChanged","suite","a","s","disableSuites","disableSuite","canDisable","newSuiteId","oldSuiteId","needForceEnable","showConfirmation","_createBlock","NcNoteCard","_renderList","OfficeSuiteSwitcherItem","route","useRoute","userSettings","useUserSettingsStore","currentCategory","apps","visibleApps","useFilteredApps","AppToolbar","NcEmptyContent","NcLoadingIcon","OfficeSuiteSwitcher","_resolveDynamicComponent","AppGrid","AppTable","$router","$route"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"AppstoreBrowse-DsTlcR8_.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/AppstoreBrowse/OfficeSuiteSwitcherItem.vue","../build/frontend/apps/appstore/src/service/OfficeSuites.ts","../build/frontend/apps/appstore/src/components/AppstoreBrowse/OfficeSuiteSwitcher.vue","../build/frontend/apps/appstore/src/views/AppstoreBrowse.vue"],"sourcesContent":["\n\n\n\n\n\n\n","/*\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\nexport const OFFICE_SUITES = Object.freeze([\n\t{\n\t\tid: 'nextcloud-office',\n\t\tappId: 'eurooffice',\n\t\tname: 'Nextcloud Office',\n\t\tfeatures: [\n\t\t\tt('settings', 'Powered by Euro-Office'),\n\t\t\tt('settings', 'Good Nextcloud integration'),\n\t\t\tt('settings', 'Open source'),\n\t\t\tt('settings', 'Best performance'),\n\t\t\tt('settings', 'Limited ODF compatibility'),\n\t\t\tt('settings', 'Best Microsoft compatibility'),\n\t\t],\n\t\tlearnMoreUrl: 'https://github.com/Euro-Office',\n\t\tisPrimary: true,\n\t},\n\t{\n\t\tid: 'collabora-office',\n\t\tappId: 'richdocuments',\n\t\tname: 'Collabora Office',\n\t\tfeatures: [\n\t\t\tt('settings', 'Best Nextcloud integration'),\n\t\t\tt('settings', 'Open source'),\n\t\t\tt('settings', 'Good performance'),\n\t\t\tt('settings', 'Best security: documents never leave your server'),\n\t\t\tt('settings', 'Best ODF compatibility'),\n\t\t\tt('settings', 'Best support for legacy files'),\n\t\t],\n\t\tlearnMoreUrl: 'https://nextcloud.com/collaboraonline/',\n\t\tisPrimary: false,\n\t},\n])\n\n/**\n * Get office suite configuration by ID\n *\n * @param id - The suite ID\n * @return The suite configuration or undefined if not found\n */\nexport function getOfficeSuiteById(id: string) {\n\treturn OFFICE_SUITES.find((suite) => suite.id === id)\n}\n\n/**\n * Get office suite configuration by app ID\n *\n * @param appId - The app ID (richdocuments, onlyoffice, etc.)\n * @return The suite configuration or undefined if not found\n */\nexport function getOfficeSuiteByAppId(appId: string) {\n\treturn OFFICE_SUITES.find((suite) => suite.appId === appId)\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"names":["selectedSuiteId","_useModel","__props","headerId","useId","store","useAppsStore","app","computed","isInstalled","cannotInstall","canInstall","_createElementBlock","_normalizeClass","$style","_cache","$event","_createElementVNode","_unref","_openBlock","_hoisted_2","_toDisplayString","t","_createVNode","NcCheckboxRadioSwitch","_Fragment","feature","index","NcButton","_createTextVNode","OFFICE_SUITES","isAllInOne","loadState","isProcessing","ref","getInitialSuite","watch","onSuiteChanged","suite","a","s","disableSuites","disableSuite","canDisable","newSuiteId","oldSuiteId","needForceEnable","showConfirmation","_createBlock","NcNoteCard","_renderList","OfficeSuiteSwitcherItem","route","useRoute","userSettings","useUserSettingsStore","currentCategory","apps","visibleApps","useFilteredApps","AppToolbar","NcEmptyContent","NcLoadingIcon","OfficeSuiteSwitcher","_resolveDynamicComponent","AppGrid","AppTable","$router","$route"],"mappings":"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"} \ No newline at end of file diff --git a/dist/AppstoreBrowse-AfNqrsSg.chunk.mjs.map.license b/dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.map.license similarity index 100% rename from dist/AppstoreBrowse-AfNqrsSg.chunk.mjs.map.license rename to dist/AppstoreBrowse-DsTlcR8_.chunk.mjs.map.license diff --git a/dist/AppstoreDiscover-C9at7Z-5.chunk.mjs b/dist/AppstoreDiscover-C9at7Z-5.chunk.mjs deleted file mode 100644 index 2d8811942b987..0000000000000 --- a/dist/AppstoreDiscover-C9at7Z-5.chunk.mjs +++ /dev/null @@ -1,3 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/DiscoverTypePost-D1FhRXE_.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/appstore-main.mjs'),window.OC.filePath('', '', 'dist/pinia-BsumPXOW.chunk.mjs'),window.OC.filePath('', '', 'dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcContent-BYh5hWDN-CKeEKmjj.chunk.css'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-Fnpm9Yo9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrayArrowDown-BEbvWlY3.chunk.css'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-CSlQTlWs.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcBreadcrumbs-B4eyDS9i-BknLVeOm.chunk.css'),window.OC.filePath('', '', 'dist/common-NcTextArea-Dxzj4zdb-CY5ND5WA.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/Plus-Cvoorj3T.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Plus-Som-mR4B.chunk.css'),window.OC.filePath('', '', 'dist/index-BRPJrOcF.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/index-Cdqy7gO-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BnF98eos.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs'),window.OC.filePath('', '', 'dist/emoji-C8k9NUlo-BQiX-d8c.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmojiPicker-UTxgju3f-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/index-D9CqvIri.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBuXQ7OS.chunk.css'),window.OC.filePath('', '', 'dist/index-DueKLP2f.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBhtJjWD.chunk.css'),window.OC.filePath('', '', 'dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs'),window.OC.filePath('', '', 'dist/ContentCopy-B9XOXCFO.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ContentCopy-D7mIRwIy.chunk.css'),window.OC.filePath('', '', 'dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserBubble-BXR7vT0V-f2DD9EAL.chunk.css'),window.OC.filePath('', '', 'dist/modulepreload-polyfill-BxzAKjcf.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgrtITOq.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-appstore-main-C0vSpMnG.chunk.css'),window.OC.filePath('', '', 'dist/common-NcActionSeparator-Ct2RnclR-pXJ_-D_I.chunk.css'),window.OC.filePath('', '', 'dist/common-NcGuestContent-CM0uWLr1-BezK2wMx.chunk.css'),window.OC.filePath('', '', 'dist/common-DiscoverTypePost-CpeIz2iE.chunk.css'),window.OC.filePath('', '', 'dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-DiscoverTypeCarousel--4FoDSYW.chunk.css'),window.OC.filePath('', '', 'dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs'),window.OC.filePath('', '', 'dist/UpdateAllDialog-B79HRvpB.chunk.mjs'),window.OC.filePath('', '', 'dist/common-UpdateAllDialog-CZVJ1CV6.chunk.css'),window.OC.filePath('', '', 'dist/appstore-DiscoverTypeShowcase-BsnvP-Fa.chunk.css')])))=>i.map(i=>d[i]); -import{b as _,A as x,o as i,c as u,w as v,k as y,u as e,f as h,F as A,B as N,m as C,C as I,l as w,a as d,_ as l}from"./Web-DYqXJUev.chunk.mjs";import{e as L}from"./mdi-B6W_Xvj-.chunk.mjs";import{a as O}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{t as p}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as D}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as P}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as R}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{c as T}from"./index-CkGt55pS.chunk.mjs";import{c as V}from"./index-Cp0kcsps.chunk.mjs";import{l as g}from"./appstore-main.mjs";import{_ as b}from"./public-C1mLBHT3.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";function z(o){const t={...o};if(t.date&&(t.date=Date.parse(t.date)),t.expiryDate&&(t.expiryDate=Date.parse(t.expiryDate)),t.type==="post"||t.type==="showcase"||t.type==="carousel")return t;throw new Error(`Invalid argument, app discover element with type ${o.type??"unknown"} is unknown`)}function F(o){const t=Date.now();return!(o.date&&o.date>t||o.expiryDate&&o.expiryDate(s.order??1/0)<(n.order??1/0)?-1:1),a}function q(o){for(let t=o.length-1;t>0;t--){const a=Math.floor(Math.random()*(t+1));[o[t],o[a]]=[o[a],o[t]]}return o}async function B(){const o=await T.get(V("/apps/appstore/api/v1/discover")),{data:t}=o.data.ocs;return t}const U={key:2,class:"app-discover"},$=_({__name:"AppstoreDiscover",setup(o){const t=d(()=>l(()=>import("./DiscoverTypePost-D1FhRXE_.chunk.mjs").then(r=>r.a),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75]),import.meta.url)),a=d(()=>l(()=>import("./DiscoverTypeCarousel-ChT7kOYo.chunk.mjs"),__vite__mapDeps([76,3,4,1,2,5,6,7,8,9,10,0,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77]),import.meta.url)),s=d(()=>l(()=>import("./DiscoverTypeShowcase-BukbuTap.chunk.mjs"),__vite__mapDeps([78,11,3,4,2,5,6,7,8,9,12,79,1,10,17,18,19,15,16,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,13,14,69,70,71,72,73,74,80,0,75,81]),import.meta.url)),n=w(!1),m=w([]);x(async()=>{try{m.value=await M()}catch(r){n.value=!0,g.error(r),O(p("appstore","Could not load app discover section"))}});function k(r){return r==="post"?t:r==="carousel"?a:r==="showcase"?s:_({mounted:()=>g.error("Unknown component requested ",r),render:f=>f("div",p("appstore","Could not render element"))})}return(r,f)=>n.value?(i(),u(e(D),{key:0,name:e(p)("appstore","Nothing to show"),description:e(p)("appstore","Could not load section content from app store.")},{icon:v(()=>[y(e(P),{path:e(L),size:64},null,8,["path"])]),_:1},8,["name","description"])):m.value.length===0?(i(),u(e(D),{key:1,name:e(p)("appstore","Loading"),description:e(p)("appstore","Fetching the latest news…")},{icon:v(()=>[y(e(R),{size:64})]),_:1},8,["name","description"])):(i(),h("div",U,[(i(!0),h(A,null,N(m.value,(c,E)=>(i(),u(I(k(c.type)),C({key:c.id??E},{ref_for:!0},c),null,16))),128))]))}}),Vt=b($,[["__scopeId","data-v-daf7ec3e"]]);export{Vt as default}; -//# sourceMappingURL=AppstoreDiscover-C9at7Z-5.chunk.mjs.map diff --git a/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs b/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs new file mode 100644 index 0000000000000..09faabe5dd16f --- /dev/null +++ b/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs @@ -0,0 +1,3 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/DiscoverTypePost-D1FhRXE_.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/appstore-main.mjs'),window.OC.filePath('', '', 'dist/pinia-BsumPXOW.chunk.mjs'),window.OC.filePath('', '', 'dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcContent-BYh5hWDN-CKeEKmjj.chunk.css'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-Fnpm9Yo9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrayArrowDown-BEbvWlY3.chunk.css'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-CSlQTlWs.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcBreadcrumbs-B4eyDS9i-BknLVeOm.chunk.css'),window.OC.filePath('', '', 'dist/common-NcTextArea-Dxzj4zdb-CY5ND5WA.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/Plus-Cvoorj3T.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Plus-Som-mR4B.chunk.css'),window.OC.filePath('', '', 'dist/index-BRPJrOcF.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/index-Cdqy7gO-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BnF98eos.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs'),window.OC.filePath('', '', 'dist/emoji-C8k9NUlo-BQiX-d8c.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmojiPicker-UTxgju3f-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/index-D9CqvIri.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBuXQ7OS.chunk.css'),window.OC.filePath('', '', 'dist/index-DueKLP2f.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBhtJjWD.chunk.css'),window.OC.filePath('', '', 'dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs'),window.OC.filePath('', '', 'dist/ContentCopy-B9XOXCFO.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ContentCopy-D7mIRwIy.chunk.css'),window.OC.filePath('', '', 'dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserBubble-BXR7vT0V-f2DD9EAL.chunk.css'),window.OC.filePath('', '', 'dist/modulepreload-polyfill-BxzAKjcf.chunk.mjs'),window.OC.filePath('', '', 'dist/index-mH69OG7L.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgrtITOq.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-appstore-main-C0vSpMnG.chunk.css'),window.OC.filePath('', '', 'dist/common-NcActionSeparator-Ct2RnclR-pXJ_-D_I.chunk.css'),window.OC.filePath('', '', 'dist/common-NcGuestContent-CM0uWLr1-BezK2wMx.chunk.css'),window.OC.filePath('', '', 'dist/common-DiscoverTypePost-CpeIz2iE.chunk.css'),window.OC.filePath('', '', 'dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-DiscoverTypeCarousel--4FoDSYW.chunk.css'),window.OC.filePath('', '', 'dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs'),window.OC.filePath('', '', 'dist/UpdateAllDialog-BqC8T943.chunk.mjs'),window.OC.filePath('', '', 'dist/common-UpdateAllDialog-CZVJ1CV6.chunk.css'),window.OC.filePath('', '', 'dist/appstore-DiscoverTypeShowcase-BsnvP-Fa.chunk.css')])))=>i.map(i=>d[i]); +import{b as _,A as x,o as i,c as u,w as v,k as y,u as e,f as h,F as A,B as N,m as C,C as I,l as w,a as d,_ as l}from"./Web-DYqXJUev.chunk.mjs";import{e as L}from"./mdi-B6W_Xvj-.chunk.mjs";import{a as O}from"./index-mH69OG7L.chunk.mjs";import{t as p}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as D}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as P}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as R}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{c as T}from"./index-CkGt55pS.chunk.mjs";import{c as V}from"./index-Cp0kcsps.chunk.mjs";import{l as g}from"./appstore-main.mjs";import{_ as b}from"./public-C1mLBHT3.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";function z(o){const t={...o};if(t.date&&(t.date=Date.parse(t.date)),t.expiryDate&&(t.expiryDate=Date.parse(t.expiryDate)),t.type==="post"||t.type==="showcase"||t.type==="carousel")return t;throw new Error(`Invalid argument, app discover element with type ${o.type??"unknown"} is unknown`)}function F(o){const t=Date.now();return!(o.date&&o.date>t||o.expiryDate&&o.expiryDate(s.order??1/0)<(n.order??1/0)?-1:1),a}function q(o){for(let t=o.length-1;t>0;t--){const a=Math.floor(Math.random()*(t+1));[o[t],o[a]]=[o[a],o[t]]}return o}async function B(){const o=await T.get(V("/apps/appstore/api/v1/discover")),{data:t}=o.data.ocs;return t}const U={key:2,class:"app-discover"},$=_({__name:"AppstoreDiscover",setup(o){const t=d(()=>l(()=>import("./DiscoverTypePost-D1FhRXE_.chunk.mjs").then(r=>r.a),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75]),import.meta.url)),a=d(()=>l(()=>import("./DiscoverTypeCarousel-D8xqFtm0.chunk.mjs"),__vite__mapDeps([76,3,4,1,2,5,6,7,8,9,10,0,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77]),import.meta.url)),s=d(()=>l(()=>import("./DiscoverTypeShowcase-65aK4fEm.chunk.mjs"),__vite__mapDeps([78,11,3,4,2,5,6,7,8,9,12,79,1,10,17,18,19,15,16,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,13,14,69,70,71,72,73,74,80,0,75,81]),import.meta.url)),n=w(!1),m=w([]);x(async()=>{try{m.value=await M()}catch(r){n.value=!0,g.error(r),O(p("appstore","Could not load app discover section"))}});function k(r){return r==="post"?t:r==="carousel"?a:r==="showcase"?s:_({mounted:()=>g.error("Unknown component requested ",r),render:f=>f("div",p("appstore","Could not render element"))})}return(r,f)=>n.value?(i(),u(e(D),{key:0,name:e(p)("appstore","Nothing to show"),description:e(p)("appstore","Could not load section content from app store.")},{icon:v(()=>[y(e(P),{path:e(L),size:64},null,8,["path"])]),_:1},8,["name","description"])):m.value.length===0?(i(),u(e(D),{key:1,name:e(p)("appstore","Loading"),description:e(p)("appstore","Fetching the latest news…")},{icon:v(()=>[y(e(R),{size:64})]),_:1},8,["name","description"])):(i(),h("div",U,[(i(!0),h(A,null,N(m.value,(c,E)=>(i(),u(I(k(c.type)),C({key:c.id??E},{ref_for:!0},c),null,16))),128))]))}}),Vt=b($,[["__scopeId","data-v-daf7ec3e"]]);export{Vt as default}; +//# sourceMappingURL=AppstoreDiscover-DDOLgo3I.chunk.mjs.map diff --git a/dist/AppstoreDiscover-C9at7Z-5.chunk.mjs.license b/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.license similarity index 100% rename from dist/AppstoreDiscover-C9at7Z-5.chunk.mjs.license rename to dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.license diff --git a/dist/AppstoreDiscover-C9at7Z-5.chunk.mjs.map b/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.map similarity index 99% rename from dist/AppstoreDiscover-C9at7Z-5.chunk.mjs.map rename to dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.map index 4346e1dfe475a..0e494278bc107 100644 --- a/dist/AppstoreDiscover-C9at7Z-5.chunk.mjs.map +++ b/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["parseApiResponse","element","appElement","filterElements","now","getDiscoverElements","data","loadDiscoverElements","parsedElements","shuffledElements","shuffleArray","a","b","array","i","j","response","axios","generateOcsUrl","PostType","defineAsyncComponent","__vitePreload","n","CarouselType","ShowcaseType","hasError","ref","elements","onBeforeMount","error","logger","showError","t","getComponent","type","defineComponent","h","_createBlock","_unref","NcEmptyContent","_createVNode","NcIconSvgWrapper","mdiEyeOffOutline","NcLoadingIcon","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","entry","index","_resolveDynamicComponent","_mergeProps"],"ignoreList":[],"sources":["../build/frontend/apps/appstore/src/utils/appDiscoverParser.ts","../build/frontend/apps/appstore/src/service/app-discover.ts","../build/frontend/apps/appstore/src/views/AppstoreDiscover.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppDiscoverCarousel, IAppDiscoverElement, IAppDiscoverElements, IAppDiscoverPost, IAppDiscoverShowcase } from '../constants/AppDiscoverTypes.ts'\n\n/**\n * Helper to transform the JSON API results to proper frontend objects (app discover section elements)\n *\n * @param element The JSON API element to transform\n */\nexport function parseApiResponse(element: Record): IAppDiscoverElements {\n\tconst appElement = { ...element }\n\tif (appElement.date) {\n\t\tappElement.date = Date.parse(appElement.date as string)\n\t}\n\tif (appElement.expiryDate) {\n\t\tappElement.expiryDate = Date.parse(appElement.expiryDate as string)\n\t}\n\n\tif (appElement.type === 'post') {\n\t\treturn appElement as unknown as IAppDiscoverPost\n\t} else if (appElement.type === 'showcase') {\n\t\treturn appElement as unknown as IAppDiscoverShowcase\n\t} else if (appElement.type === 'carousel') {\n\t\treturn appElement as unknown as IAppDiscoverCarousel\n\t}\n\tthrow new Error(`Invalid argument, app discover element with type ${element.type ?? 'unknown'} is unknown`)\n}\n\n/**\n * Filter outdated or upcoming elements\n *\n * @param element Element to check\n */\nexport function filterElements(element: IAppDiscoverElement) {\n\tconst now = Date.now()\n\t// Element not yet published\n\tif (element.date && element.date > now) {\n\t\treturn false\n\t}\n\n\t// Element expired\n\tif (element.expiryDate && element.expiryDate < now) {\n\t\treturn false\n\t}\n\treturn true\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { filterElements, parseApiResponse } from '../utils/appDiscoverParser.ts'\n\n/**\n * Get app discover elements\n */\nexport async function getDiscoverElements() {\n\tconst data = await loadDiscoverElements()\n\tif (data.length === 0) {\n\t\tthrow new Error('No app discover elements available (empty response)')\n\t}\n\n\t// Parse data to ensure dates are useable and then filter out expired or future elements\n\tconst parsedElements = data.map(parseApiResponse)\n\t\t.filter(filterElements)\n\n\t// Shuffle elements to make it looks more interesting\n\tconst shuffledElements = shuffleArray(parsedElements)\n\t// Sort pinned elements first\n\tshuffledElements.sort((a, b) => (a.order ?? Infinity) < (b.order ?? Infinity) ? -1 : 1)\n\treturn shuffledElements\n}\n\n/**\n * Shuffle using the Fisher-Yates algorithm\n *\n * @param array The array to shuffle (in place)\n */\nfunction shuffleArray(array: T[]): T[] {\n\tfor (let i = array.length - 1; i > 0; i--) {\n\t\tconst j = Math.floor(Math.random() * (i + 1));\n\t\t[array[i], array[j]] = [array[j]!, array[i]!]\n\t}\n\treturn array\n}\n\n/**\n * Load discover elements from the API\n */\nasync function loadDiscoverElements() {\n\tconst response = await axios.get[]>>(generateOcsUrl('/apps/appstore/api/v1/discover'))\n\tconst { data } = response.data.ocs\n\treturn data\n}\n","\n\n\n\n\n\n\n"],"file":"AppstoreDiscover-C9at7Z-5.chunk.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["parseApiResponse","element","appElement","filterElements","now","getDiscoverElements","data","loadDiscoverElements","parsedElements","shuffledElements","shuffleArray","a","b","array","i","j","response","axios","generateOcsUrl","PostType","defineAsyncComponent","__vitePreload","n","CarouselType","ShowcaseType","hasError","ref","elements","onBeforeMount","error","logger","showError","t","getComponent","type","defineComponent","h","_createBlock","_unref","NcEmptyContent","_createVNode","NcIconSvgWrapper","mdiEyeOffOutline","NcLoadingIcon","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","entry","index","_resolveDynamicComponent","_mergeProps"],"ignoreList":[],"sources":["../build/frontend/apps/appstore/src/utils/appDiscoverParser.ts","../build/frontend/apps/appstore/src/service/app-discover.ts","../build/frontend/apps/appstore/src/views/AppstoreDiscover.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppDiscoverCarousel, IAppDiscoverElement, IAppDiscoverElements, IAppDiscoverPost, IAppDiscoverShowcase } from '../constants/AppDiscoverTypes.ts'\n\n/**\n * Helper to transform the JSON API results to proper frontend objects (app discover section elements)\n *\n * @param element The JSON API element to transform\n */\nexport function parseApiResponse(element: Record): IAppDiscoverElements {\n\tconst appElement = { ...element }\n\tif (appElement.date) {\n\t\tappElement.date = Date.parse(appElement.date as string)\n\t}\n\tif (appElement.expiryDate) {\n\t\tappElement.expiryDate = Date.parse(appElement.expiryDate as string)\n\t}\n\n\tif (appElement.type === 'post') {\n\t\treturn appElement as unknown as IAppDiscoverPost\n\t} else if (appElement.type === 'showcase') {\n\t\treturn appElement as unknown as IAppDiscoverShowcase\n\t} else if (appElement.type === 'carousel') {\n\t\treturn appElement as unknown as IAppDiscoverCarousel\n\t}\n\tthrow new Error(`Invalid argument, app discover element with type ${element.type ?? 'unknown'} is unknown`)\n}\n\n/**\n * Filter outdated or upcoming elements\n *\n * @param element Element to check\n */\nexport function filterElements(element: IAppDiscoverElement) {\n\tconst now = Date.now()\n\t// Element not yet published\n\tif (element.date && element.date > now) {\n\t\treturn false\n\t}\n\n\t// Element expired\n\tif (element.expiryDate && element.expiryDate < now) {\n\t\treturn false\n\t}\n\treturn true\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { filterElements, parseApiResponse } from '../utils/appDiscoverParser.ts'\n\n/**\n * Get app discover elements\n */\nexport async function getDiscoverElements() {\n\tconst data = await loadDiscoverElements()\n\tif (data.length === 0) {\n\t\tthrow new Error('No app discover elements available (empty response)')\n\t}\n\n\t// Parse data to ensure dates are useable and then filter out expired or future elements\n\tconst parsedElements = data.map(parseApiResponse)\n\t\t.filter(filterElements)\n\n\t// Shuffle elements to make it looks more interesting\n\tconst shuffledElements = shuffleArray(parsedElements)\n\t// Sort pinned elements first\n\tshuffledElements.sort((a, b) => (a.order ?? Infinity) < (b.order ?? Infinity) ? -1 : 1)\n\treturn shuffledElements\n}\n\n/**\n * Shuffle using the Fisher-Yates algorithm\n *\n * @param array The array to shuffle (in place)\n */\nfunction shuffleArray(array: T[]): T[] {\n\tfor (let i = array.length - 1; i > 0; i--) {\n\t\tconst j = Math.floor(Math.random() * (i + 1));\n\t\t[array[i], array[j]] = [array[j]!, array[i]!]\n\t}\n\treturn array\n}\n\n/**\n * Load discover elements from the API\n */\nasync function loadDiscoverElements() {\n\tconst response = await axios.get[]>>(generateOcsUrl('/apps/appstore/api/v1/discover'))\n\tconst { data } = response.data.ocs\n\treturn data\n}\n","\n\n\n\n\n\n\n"],"file":"AppstoreDiscover-DDOLgo3I.chunk.mjs"} \ No newline at end of file diff --git a/dist/AppstoreDiscover-C9at7Z-5.chunk.mjs.map.license b/dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.map.license similarity index 100% rename from dist/AppstoreDiscover-C9at7Z-5.chunk.mjs.map.license rename to dist/AppstoreDiscover-DDOLgo3I.chunk.mjs.map.license diff --git a/dist/AuthMechanismRsa-EWm029j5.chunk.mjs b/dist/AuthMechanismRsa-EWm029j5.chunk.mjs deleted file mode 100644 index 3238297e224cf..0000000000000 --- a/dist/AuthMechanismRsa-EWm029j5.chunk.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{b as g,n as _,u as o,o as r,c as p,C as x,y as d,w as v,j as V,t as b,s as k,z as E,f,F as M,B as K,J as q,K as U,k as c,l as j}from"./Web-DYqXJUev.chunk.mjs";import{c as w}from"./index-CkGt55pS.chunk.mjs";import{a as C}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{t as u}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{b as N}from"./index-Cp0kcsps.chunk.mjs";import{N as S}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as z}from"./index-BDlLVKOD.chunk.mjs";import{N as A}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as B}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import{_ as L}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{a as y,C as O}from"./types-DurdPjCi.chunk.mjs";import{_ as $}from"./public-C1mLBHT3.chunk.mjs";import{l as P}from"./logger-BFB83ufD.chunk.mjs";const R=g({__name:"ConfigurationEntry",props:k({configKey:{},configOption:{}},{modelValue:{type:[String,Boolean],default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=_(e,"modelValue");return(l,i)=>e.configOption.type!==o(y).Boolean?(r(),p(x(e.configOption.type===o(y).Password?o(B):o(L)),{key:0,modelValue:a.value,"onUpdate:modelValue":i[0]||(i[0]=t=>a.value=t),name:e.configKey,required:!(e.configOption.flags&o(O).Optional),label:e.configOption.value,title:e.configOption.tooltip,class:d(l.$style.configurationEntry)},null,8,["modelValue","name","required","label","title","class"])):(r(),p(o(A),{key:1,modelValue:a.value,"onUpdate:modelValue":i[1]||(i[1]=t=>a.value=t),type:"switch",title:e.configOption.tooltip,class:d(l.$style.configurationEntry)},{default:v(()=>[V(b(e.configOption.value),1)]),_:1},8,["modelValue","title","class"]))}}),F="_configurationEntry_1cmcq_2",G={configurationEntry:F},H={$style:G},J=$(R,[["__cssModules",H]]),T=g({__name:"AuthMechanismRsa",props:k({authMechanism:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=_(e,"modelValue"),l=j();E(l,()=>{l.value&&(a.value.private_key="",a.value.public_key="")});async function i(){try{const{data:t}=await w.post(N("/apps/files_external/ajax/public_key.php"),{keyLength:l.value});a.value.private_key=t.data.private_key,a.value.public_key=t.data.public_key}catch(t){P.error("Error generating RSA key pair",{error:t}),C(u("files_external","Error generating key pair"))}}return(t,m)=>(r(),f("div",null,[(r(!0),f(M,null,K(e.authMechanism.configuration,(n,s)=>q((r(),p(J,{key:n.value,modelValue:a.value[s],"onUpdate:modelValue":h=>a.value[s]=h,configKey:s,configOption:n},null,8,["modelValue","onUpdate:modelValue","configKey","configOption"])),[[U,!(n.flags&o(O).Hidden)]])),128)),c(o(z),{modelValue:l.value,"onUpdate:modelValue":m[0]||(m[0]=n=>l.value=n),clearable:!1,inputLabel:o(u)("files_external","Key size"),options:[1024,2048,4096],required:""},null,8,["modelValue","inputLabel"]),c(o(S),{disabled:!l.value,wide:"",onClick:i},{default:v(()=>[V(b(o(u)("files_external","Generate keys")),1)]),_:1},8,["disabled"])]))}}),ne=Object.freeze(Object.defineProperty({__proto__:null,default:T},Symbol.toStringTag,{value:"Module"}));export{ne as A,J as C}; -//# sourceMappingURL=AuthMechanismRsa-EWm029j5.chunk.mjs.map diff --git a/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs b/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs new file mode 100644 index 0000000000000..61f5ac67f442d --- /dev/null +++ b/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs @@ -0,0 +1,2 @@ +import{b as g,n as _,u as o,o as r,c as p,C as x,y as d,w as v,j as V,t as b,s as k,z as E,f,F as M,B as K,J as q,K as U,k as c,l as j}from"./Web-DYqXJUev.chunk.mjs";import{c as w}from"./index-CkGt55pS.chunk.mjs";import{a as C}from"./index-mH69OG7L.chunk.mjs";import{t as u}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{b as N}from"./index-Cp0kcsps.chunk.mjs";import{N as S}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as z}from"./index-BDlLVKOD.chunk.mjs";import{N as A}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as B}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import{_ as L}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{a as y,C as O}from"./types-DurdPjCi.chunk.mjs";import{_ as $}from"./public-C1mLBHT3.chunk.mjs";import{l as P}from"./logger-BFB83ufD.chunk.mjs";const R=g({__name:"ConfigurationEntry",props:k({configKey:{},configOption:{}},{modelValue:{type:[String,Boolean],default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=_(e,"modelValue");return(l,i)=>e.configOption.type!==o(y).Boolean?(r(),p(x(e.configOption.type===o(y).Password?o(B):o(L)),{key:0,modelValue:a.value,"onUpdate:modelValue":i[0]||(i[0]=t=>a.value=t),name:e.configKey,required:!(e.configOption.flags&o(O).Optional),label:e.configOption.value,title:e.configOption.tooltip,class:d(l.$style.configurationEntry)},null,8,["modelValue","name","required","label","title","class"])):(r(),p(o(A),{key:1,modelValue:a.value,"onUpdate:modelValue":i[1]||(i[1]=t=>a.value=t),type:"switch",title:e.configOption.tooltip,class:d(l.$style.configurationEntry)},{default:v(()=>[V(b(e.configOption.value),1)]),_:1},8,["modelValue","title","class"]))}}),F="_configurationEntry_1cmcq_2",G={configurationEntry:F},H={$style:G},J=$(R,[["__cssModules",H]]),T=g({__name:"AuthMechanismRsa",props:k({authMechanism:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=_(e,"modelValue"),l=j();E(l,()=>{l.value&&(a.value.private_key="",a.value.public_key="")});async function i(){try{const{data:t}=await w.post(N("/apps/files_external/ajax/public_key.php"),{keyLength:l.value});a.value.private_key=t.data.private_key,a.value.public_key=t.data.public_key}catch(t){P.error("Error generating RSA key pair",{error:t}),C(u("files_external","Error generating key pair"))}}return(t,m)=>(r(),f("div",null,[(r(!0),f(M,null,K(e.authMechanism.configuration,(n,s)=>q((r(),p(J,{key:n.value,modelValue:a.value[s],"onUpdate:modelValue":h=>a.value[s]=h,configKey:s,configOption:n},null,8,["modelValue","onUpdate:modelValue","configKey","configOption"])),[[U,!(n.flags&o(O).Hidden)]])),128)),c(o(z),{modelValue:l.value,"onUpdate:modelValue":m[0]||(m[0]=n=>l.value=n),clearable:!1,inputLabel:o(u)("files_external","Key size"),options:[1024,2048,4096],required:""},null,8,["modelValue","inputLabel"]),c(o(S),{disabled:!l.value,wide:"",onClick:i},{default:v(()=>[V(b(o(u)("files_external","Generate keys")),1)]),_:1},8,["disabled"])]))}}),ne=Object.freeze(Object.defineProperty({__proto__:null,default:T},Symbol.toStringTag,{value:"Module"}));export{ne as A,J as C}; +//# sourceMappingURL=AuthMechanismRsa-vXoEDo92.chunk.mjs.map diff --git a/dist/AuthMechanismRsa-EWm029j5.chunk.mjs.license b/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.license similarity index 100% rename from dist/AuthMechanismRsa-EWm029j5.chunk.mjs.license rename to dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.license diff --git a/dist/AuthMechanismRsa-EWm029j5.chunk.mjs.map b/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.map similarity index 97% rename from dist/AuthMechanismRsa-EWm029j5.chunk.mjs.map rename to dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.map index 970e2a4b7dbe7..6ac7e979457e3 100644 --- a/dist/AuthMechanismRsa-EWm029j5.chunk.mjs.map +++ b/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"AuthMechanismRsa-EWm029j5.chunk.mjs","sources":["../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/ConfigurationEntry.vue","../build/frontend/apps/files_external/src/views/AuthMechanismRsa.vue"],"sourcesContent":["\n\n\n\n\n\n\n","\n\n\n\n\n"],"names":["value","_useModel","__props","_unref","ConfigurationType","_createBlock","_resolveDynamicComponent","NcPasswordField","NcTextField","$event","ConfigurationFlag","_normalizeClass","$style","NcCheckboxRadioSwitch","_createTextVNode","_toDisplayString","modelValue","keySize","ref","watch","generateKeys","data","axios","generateUrl","error","logger","showError","t","_createElementBlock","_openBlock","_Fragment","configOption","configKey","ConfigurationEntry","_vShow","_createVNode","NcSelect","NcButton"],"mappings":"0hCAaA,MAAMA,EAAQC,EAA6BC,EAAC,YAA6B,eAWjEA,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,aAF/CC,EAQsCC,EAPhCJ,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,SAAWD,EAAAI,CAAA,EAAkBJ,EAAAK,CAAA,CAAW,EAAA,kBAE5ER,EAAA,2CAAAA,EAAK,MAAAS,GACb,KAAMP,EAAA,UACN,WAAYA,EAAA,aAAa,MAAQC,EAAAO,CAAA,EAAkB,UACnD,MAAOR,EAAA,aAAa,MACpB,MAAOA,EAAA,aAAa,QACpB,MAAKS,EAAEC,EAAAA,OAAO,kBAAkB,CAAA,yEAClCP,EAOwBF,EAAAU,CAAA,EAAA,kBALdb,EAAA,2CAAAA,EAAK,MAAAS,GACd,KAAK,SACJ,MAAOP,EAAA,aAAa,QACpB,MAAKS,EAAEC,EAAAA,OAAO,kBAAkB,CAAA,aACjC,IAAwB,CAArBE,EAAAC,EAAAb,EAAA,aAAa,KAAK,EAAA,CAAA,CAAA,6RClBvB,MAAMc,EAAaf,EAA6CC,EAAA,YAAmB,EAM7Ee,EAAUC,EAAA,EAChBC,EAAMF,EAAS,IAAM,CAChBA,EAAQ,QACXD,EAAW,MAAM,YAAc,GAC/BA,EAAW,MAAM,WAAa,GAEhC,CAAC,EAKD,eAAeI,GAAe,CAC7B,GAAI,CAEH,KAAM,CAAE,KAAAC,GAAS,MAAMC,EAAM,KAAKC,EAAY,0CAA0C,EAAG,CAC1F,UAAWN,EAAQ,KAAA,CACnB,EAEDD,EAAW,MAAM,YAAcK,EAAK,KAAK,YACzCL,EAAW,MAAM,WAAaK,EAAK,KAAK,UACzC,OAASG,EAAO,CACfC,EAAO,MAAM,gCAAiC,CAAE,MAAAD,CAAA,CAAO,EACvDE,EAAUC,EAAE,iBAAkB,2BAA2B,CAAC,CAC3D,CACD,mBAICC,EAsBM,MAAA,KAAA,EArBLC,EAAA,EAAA,EAAAD,EAMgCE,SALG5B,EAAA,cAAc,cAAa,CAAtD6B,EAAcC,WADtB3B,EAMgC4B,EAAA,CAH9B,IAAKF,EAAa,MACV,WAAAf,EAAA,MAAWgB,CAAS,EAApB,sBAAAvB,GAAAO,EAAA,MAAWgB,CAAS,EAAAvB,EAC5B,UAAAuB,EACA,aAAAD,CAAA,4EAJS,CAAAG,EAAA,EAAAH,EAAa,MAAQ5B,EAAAO,CAAA,EAAkB,OAAM,CAAA,UAMxDyB,EAKYhC,EAAAiC,CAAA,EAAA,YAJFnB,EAAA,2CAAAA,EAAO,MAAAR,GACf,UAAW,GACX,WAAYN,EAAAwB,CAAA,EAAC,iBAAA,UAAA,EACb,QAAS,CAAA,KAAA,KAAA,IAAA,EACV,SAAA,EAAA,sCAEDQ,EAKWhC,EAAAkC,CAAA,EAAA,CAJT,UAAWpB,EAAA,MACZ,KAAA,GACC,QAAOG,CAAA,aACR,IAA0C,KAAvCjB,EAAAwB,CAAA,EAAC,iBAAA,eAAA,CAAA,EAAA,CAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"AuthMechanismRsa-vXoEDo92.chunk.mjs","sources":["../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/ConfigurationEntry.vue","../build/frontend/apps/files_external/src/views/AuthMechanismRsa.vue"],"sourcesContent":["\n\n\n\n\n\n\n","\n\n\n\n\n"],"names":["value","_useModel","__props","_unref","ConfigurationType","_createBlock","_resolveDynamicComponent","NcPasswordField","NcTextField","$event","ConfigurationFlag","_normalizeClass","$style","NcCheckboxRadioSwitch","_createTextVNode","_toDisplayString","modelValue","keySize","ref","watch","generateKeys","data","axios","generateUrl","error","logger","showError","t","_createElementBlock","_openBlock","_Fragment","configOption","configKey","ConfigurationEntry","_vShow","_createVNode","NcSelect","NcButton"],"mappings":"ihCAaA,MAAMA,EAAQC,EAA6BC,EAAC,YAA6B,eAWjEA,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,aAF/CC,EAQsCC,EAPhCJ,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,SAAWD,EAAAI,CAAA,EAAkBJ,EAAAK,CAAA,CAAW,EAAA,kBAE5ER,EAAA,2CAAAA,EAAK,MAAAS,GACb,KAAMP,EAAA,UACN,WAAYA,EAAA,aAAa,MAAQC,EAAAO,CAAA,EAAkB,UACnD,MAAOR,EAAA,aAAa,MACpB,MAAOA,EAAA,aAAa,QACpB,MAAKS,EAAEC,EAAAA,OAAO,kBAAkB,CAAA,yEAClCP,EAOwBF,EAAAU,CAAA,EAAA,kBALdb,EAAA,2CAAAA,EAAK,MAAAS,GACd,KAAK,SACJ,MAAOP,EAAA,aAAa,QACpB,MAAKS,EAAEC,EAAAA,OAAO,kBAAkB,CAAA,aACjC,IAAwB,CAArBE,EAAAC,EAAAb,EAAA,aAAa,KAAK,EAAA,CAAA,CAAA,6RClBvB,MAAMc,EAAaf,EAA6CC,EAAA,YAAmB,EAM7Ee,EAAUC,EAAA,EAChBC,EAAMF,EAAS,IAAM,CAChBA,EAAQ,QACXD,EAAW,MAAM,YAAc,GAC/BA,EAAW,MAAM,WAAa,GAEhC,CAAC,EAKD,eAAeI,GAAe,CAC7B,GAAI,CAEH,KAAM,CAAE,KAAAC,GAAS,MAAMC,EAAM,KAAKC,EAAY,0CAA0C,EAAG,CAC1F,UAAWN,EAAQ,KAAA,CACnB,EAEDD,EAAW,MAAM,YAAcK,EAAK,KAAK,YACzCL,EAAW,MAAM,WAAaK,EAAK,KAAK,UACzC,OAASG,EAAO,CACfC,EAAO,MAAM,gCAAiC,CAAE,MAAAD,CAAA,CAAO,EACvDE,EAAUC,EAAE,iBAAkB,2BAA2B,CAAC,CAC3D,CACD,mBAICC,EAsBM,MAAA,KAAA,EArBLC,EAAA,EAAA,EAAAD,EAMgCE,SALG5B,EAAA,cAAc,cAAa,CAAtD6B,EAAcC,WADtB3B,EAMgC4B,EAAA,CAH9B,IAAKF,EAAa,MACV,WAAAf,EAAA,MAAWgB,CAAS,EAApB,sBAAAvB,GAAAO,EAAA,MAAWgB,CAAS,EAAAvB,EAC5B,UAAAuB,EACA,aAAAD,CAAA,4EAJS,CAAAG,EAAA,EAAAH,EAAa,MAAQ5B,EAAAO,CAAA,EAAkB,OAAM,CAAA,UAMxDyB,EAKYhC,EAAAiC,CAAA,EAAA,YAJFnB,EAAA,2CAAAA,EAAO,MAAAR,GACf,UAAW,GACX,WAAYN,EAAAwB,CAAA,EAAC,iBAAA,UAAA,EACb,QAAS,CAAA,KAAA,KAAA,IAAA,EACV,SAAA,EAAA,sCAEDQ,EAKWhC,EAAAkC,CAAA,EAAA,CAJT,UAAWpB,EAAA,MACZ,KAAA,GACC,QAAOG,CAAA,aACR,IAA0C,KAAvCjB,EAAAwB,CAAA,EAAC,iBAAA,eAAA,CAAA,EAAA,CAAA,CAAA"} \ No newline at end of file diff --git a/dist/AuthMechanismRsa-EWm029j5.chunk.mjs.map.license b/dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.map.license similarity index 100% rename from dist/AuthMechanismRsa-EWm029j5.chunk.mjs.map.license rename to dist/AuthMechanismRsa-vXoEDo92.chunk.mjs.map.license diff --git a/dist/CommentView-BOeY59Ia.chunk.mjs b/dist/CommentView-Dwuq398x.chunk.mjs similarity index 89% rename from dist/CommentView-BOeY59Ia.chunk.mjs rename to dist/CommentView-Dwuq398x.chunk.mjs index da8990def00d8..42d21272ae9d5 100644 --- a/dist/CommentView-BOeY59Ia.chunk.mjs +++ b/dist/CommentView-Dwuq398x.chunk.mjs @@ -1,5 +1,5 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/index-DueKLP2f.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/ArrowRight-CSlQTlWs.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/emoji-C8k9NUlo-BQiX-d8c.chunk.mjs'),window.OC.filePath('', '', 'dist/index-D9CqvIri.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BBuXQ7OS.chunk.css'),window.OC.filePath('', '', 'dist/common-index-BBhtJjWD.chunk.css')])))=>i.map(i=>d[i]); -import{o as n,f as h,g as u,t as y,h as N,m as V,a as T,_ as v,r as c,J as U,K as W,c as p,w as m,k as d,F as H,j as _,L as J,y as w,C as K,b as Z}from"./Web-DYqXJUev.chunk.mjs";import{a as f,c as G}from"./index-Cp0kcsps.chunk.mjs";import{t as Q}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{d as X,m as A}from"./pinia-BsumPXOW.chunk.mjs";import{N as Y,P as ee}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{b as te}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import{_ as oe}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as ie}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{N as se}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{_ as ae}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{N as re,D as ne}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as ce}from"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import{A as me}from"./ArrowRight-CSlQTlWs.chunk.mjs";import{_ as S,l as de}from"./public-C1mLBHT3.chunk.mjs";import{a as I,T as le,f as ue}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{l as g}from"./activity-BZ6xFlZg.chunk.mjs";import{c as D,a as pe}from"./GetComments-2IL7C9Us.chunk.mjs";import{c as x}from"./index-CkGt55pS.chunk.mjs";const he={name:"NcActionSeparator"},ge={class:"action action-separator action--disabled",role:"separator"};function ye(e,o,i,a,r,s){return n(),h("li",ge)}const fe=oe(he,[["render",ye],["__scopeId","data-v-3e2324b7"]]),be={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ce=["aria-hidden","aria-label"],_e=["fill","width","height"],Ie={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},Ne={key:0};function De(e,o,i,a,r,s){return n(),h("span",V(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon close-icon",role:"img",onClick:o[0]||(o[0]=b=>e.$emit("click",b))}),[(n(),h("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[u("path",Ie,[i.title?(n(),h("title",Ne,y(i.title),1)):N("",!0)])],8,_e))],16,Ce)}const ke=S(be,[["render",De]]);async function we(e,o,i){const a=["",e,o,i].join("/");await D.deleteFile(a)}async function Le(e,o,i,a){const r=["",e,o,i].join("/");return await D.customRequest(r,{method:"PROPPATCH",data:` +import{o as n,f as h,g as u,t as y,h as N,m as V,a as T,_ as v,r as c,J as U,K as W,c as p,w as m,k as d,F as H,j as _,L as J,y as w,C as K,b as Z}from"./Web-DYqXJUev.chunk.mjs";import{a as f,c as G}from"./index-Cp0kcsps.chunk.mjs";import{t as Q}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{d as X,m as A}from"./pinia-BsumPXOW.chunk.mjs";import{N as Y,P as ee}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{b as te}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import{_ as oe}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as ie}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{N as se}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{_ as ae}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{N as re,D as ne}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as ce}from"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import{A as me}from"./ArrowRight-CSlQTlWs.chunk.mjs";import{_ as S,l as de}from"./public-C1mLBHT3.chunk.mjs";import{a as I,T as le,f as ue}from"./index-mH69OG7L.chunk.mjs";import{l as g}from"./activity-BZ6xFlZg.chunk.mjs";import{c as D,a as pe}from"./GetComments-2IL7C9Us.chunk.mjs";import{c as x}from"./index-CkGt55pS.chunk.mjs";const he={name:"NcActionSeparator"},ge={class:"action action-separator action--disabled",role:"separator"};function ye(e,o,i,a,r,s){return n(),h("li",ge)}const fe=oe(he,[["render",ye],["__scopeId","data-v-3e2324b7"]]),be={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ce=["aria-hidden","aria-label"],_e=["fill","width","height"],Ie={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},Ne={key:0};function De(e,o,i,a,r,s){return n(),h("span",V(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon close-icon",role:"img",onClick:o[0]||(o[0]=b=>e.$emit("click",b))}),[(n(),h("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[u("path",Ie,[i.title?(n(),h("title",Ne,y(i.title),1)):N("",!0)])],8,_e))],16,Ce)}const ke=S(be,[["render",De]]);async function we(e,o,i){const a=["",e,o,i].join("/");await D.deleteFile(a)}async function Le(e,o,i,a){const r=["",e,o,i].join("/");return await D.customRequest(r,{method:"PROPPATCH",data:` @@ -9,4 +9,4 @@ import{o as n,f as h,g as u,t as y,h as N,m as V,a as T,_ as v,r as c,J as U,K a `})}function L(e,o=1){const i=new DOMParser;let a=e;for(let r=0;r({idsInLimbo:[]}),actions:{addId(e){this.idsInLimbo.push(e)},removeId(e){const o=this.idsInLimbo.indexOf(e);o>-1&&this.idsInLimbo.splice(o,1)},checkForId(e){return this.idsInLimbo.includes(e)}}}),ve={props:{id:{type:Number,default:null},message:{type:String,default:""},resourceId:{type:[String,Number],required:!0},resourceType:{type:String,default:"files"}},data(){return{deleted:!1,editing:!1,loading:!1}},computed:{...A(M)},methods:{onEdit(){this.editing=!0},onEditCancel(){this.editing=!1,this.updateLocalMessage(this.message)},async onEditComment(e){this.loading=!0;try{await Le(this.resourceType,this.resourceId,this.id,e),g.debug("Comment edited",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id,message:e}),this.$emit("update:message",e),this.editing=!1}catch(o){I(t("comments","An error occurred while trying to edit the comment")),g.error("An error occurred while trying to edit the comment",{error:o})}finally{this.loading=!1}},onDeleteWithUndo(){this.$emit("delete"),this.deleted=!0,this.deletedCommentLimboStore.addId(this.id);const e=setTimeout(this.onDelete,le);ue(t("comments","Comment deleted"),()=>{clearTimeout(e),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)})},async onDelete(){try{await we(this.resourceType,this.resourceId,this.id),g.debug("Comment deleted",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id}),this.$emit("delete",this.id)}catch(e){I(t("comments","An error occurred while trying to delete the comment")),g.error("An error occurred while trying to delete the comment",{error:e}),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)}},async onNewComment(e){this.loading=!0;try{const o=await Te(this.resourceType,this.resourceId,e);g.debug("New comment posted",{resourceType:this.resourceType,resourceId:this.resourceId,newComment:o}),this.$emit("new",o),this.$emit("update:message",""),this.localMessage=""}catch(o){I(t("comments","An error occurred while trying to create the comment")),g.error("An error occurred while trying to create the comment",{error:o})}finally{this.loading=!1}}}},Ae=T(()=>v(()=>import("./index-DueKLP2f.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]),import.meta.url)),Se=T(()=>v(()=>import("./index-D9CqvIri.chunk.mjs").then(e=>e.i),__vite__mapDeps([27,4,5,8,9,10,1,11,12,28,23,24,29,3,6,30,7,13,31,32,33,14,15,34,35,36,37]),import.meta.url)),xe={name:"Comment",components:{IconArrowRight:me,IconClose:ke,IconTrashCanOutline:ne,IconPencilOutline:ee,NcActionButton:Y,NcActions:te,NcActionSeparator:fe,NcAvatar:ie,NcButton:se,NcDateTime:ae,NcLoadingIcon:re,NcRichContenteditable:Ae,NcRichText:Se},mixins:[ve],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0},userData:{type:Object,default:()=>({})},tag:{type:String,default:"div"}},data(){return{expanded:!1,localMessage:"",submitted:!1}},computed:{...A(M),isOwnComment(){return f().uid===this.actorId},richContent(){const e={};let o=this.localMessage;return Object.keys(this.userData).forEach((i,a)=>{const r=`mention-${a}`,s=new RegExp(`@${i}|@"${i}"`,"g");o=o.replace(s,`{${r}}`),e[r]={component:ce,props:{user:i,displayName:this.userData[i].label,primary:this.userData[i].primary}}}),{mentions:e,message:o}},isEmptyMessage(){return!this.localMessage||this.localMessage.trim()===""},timestamp(){return Date.parse(this.creationDateTime)},isLimbo(){return this.deletedCommentLimboStore.checkForId(this.id)}},watch:{message(e){this.updateLocalMessage(e)}},beforeMount(){this.updateLocalMessage(this.message)},methods:{t:Q,updateLocalMessage(e){this.localMessage=e.toString(),this.submitted=!1},onSubmit(){if(this.localMessage.trim()!==""){if(this.editor){this.onNewComment(this.localMessage.trim()),this.$nextTick(()=>{this.$refs.editor.$el.focus()});return}this.onEditComment(this.localMessage.trim())}},onExpand(){this.expanded=!0}}},Me={class:"comment__side"},Ee={class:"comment__body"},Oe={class:"comment__header"},Re={class:"comment__author"},$e={key:1,class:"comment_loading icon-loading-small"},je={class:"comment__editor-group"},Pe={class:"comment__submit"},ze={id:"tab-comments__editor-description",class:"comment__editor-description"};function qe(e,o,i,a,r,s){const b=c("NcAvatar"),C=c("IconPencilOutline"),l=c("NcActionButton"),E=c("NcActionSeparator"),O=c("IconTrashCanOutline"),R=c("IconClose"),$=c("NcActions"),j=c("NcDateTime"),P=c("NcRichContenteditable"),z=c("NcLoadingIcon"),q=c("IconArrowRight"),B=c("NcButton"),F=c("NcRichText");return U((n(),p(K(i.tag),{class:w([{"comment--loading":e.loading},"comment"])},{default:m(()=>[u("div",Me,[d(b,{class:"comment__avatar",displayName:i.actorDisplayName,user:i.actorId,size:32},null,8,["displayName","user"])]),u("div",Ee,[u("div",Oe,[u("span",Re,y(i.actorDisplayName),1),s.isOwnComment&&e.id&&!e.loading?(n(),p($,{key:0,class:"comment__actions"},{default:m(()=>[e.editing?(n(),p(l,{key:1,onClick:e.onEditCancel},{icon:m(()=>[d(R,{size:20})]),default:m(()=>[_(" "+y(s.t("comments","Cancel edit")),1)]),_:1},8,["onClick"])):(n(),h(H,{key:0},[d(l,{closeAfterClick:"",onClick:e.onEdit},{icon:m(()=>[d(C,{size:20})]),default:m(()=>[_(" "+y(s.t("comments","Edit comment")),1)]),_:1},8,["onClick"]),d(E),d(l,{closeAfterClick:"",onClick:e.onDeleteWithUndo},{icon:m(()=>[d(O,{size:20})]),default:m(()=>[_(" "+y(s.t("comments","Delete comment")),1)]),_:1},8,["onClick"])],64))]),_:1})):N("",!0),e.id&&e.loading?(n(),h("div",$e)):i.creationDateTime?(n(),p(j,{key:2,class:"comment__timestamp",timestamp:s.timestamp,ignoreSeconds:!0},null,8,["timestamp"])):N("",!0)]),i.editor||e.editing?(n(),h("form",{key:0,class:"comment__editor",onSubmit:o[2]||(o[2]=J(()=>{},["prevent"]))},[u("div",je,[d(P,{ref:"editor",modelValue:r.localMessage,"onUpdate:modelValue":[o[0]||(o[0]=k=>r.localMessage=k),o[1]||(o[1]=k=>r.submitted=!1)],autoComplete:i.autoComplete,contenteditable:!e.loading,label:i.editor?s.t("comments","New comment"):s.t("comments","Edit comment"),placeholder:s.t("comments","Write a comment …"),userData:i.userData,"aria-describedby":"tab-comments__editor-description",onSubmit:s.onSubmit},null,8,["modelValue","autoComplete","contenteditable","label","placeholder","userData","onSubmit"]),u("div",Pe,[d(B,{variant:"tertiary-no-background",type:"submit","aria-label":s.t("comments","Post comment"),disabled:s.isEmptyMessage,onClick:s.onSubmit},{icon:m(()=>[e.loading?(n(),p(z,{key:0})):(n(),p(q,{key:1,size:20}))]),_:1},8,["aria-label","disabled","onClick"])])]),u("div",ze,y(s.t("comments","@ for mentions, : for emoji, / for smart picker")),1)],32)):(n(),p(F,{key:1,class:w(["comment__message",{"comment__message--expanded":r.expanded}]),text:s.richContent.message,arguments:s.richContent.mentions,useMarkdown:"",onClick:s.onExpand},null,8,["class","text","arguments","onClick"]))])]),_:1},8,["class"])),[[W,!e.deleted&&!s.isLimbo]])}const rt=S(xe,[["render",qe],["__scopeId","data-v-767e5a19"]]),nt=Z({props:{resourceId:{type:Number,required:!0},resourceType:{type:String,default:"files"}},data(){return{editorData:{actorDisplayName:f().displayName,actorId:f().uid,key:"editor"},userData:{},currentResourceId:this.resourceId}},methods:{async autoComplete(e,o){const{data:i}=await x.get(G("core/autocomplete/get"),{params:{search:e,itemType:this.resourceType,itemId:this.currentResourceId,sorter:"commenters|share-recipients",limit:de("comments","maxAutoCompleteResults")}});return i.ocs.data.forEach(a=>{this.userData[a.id]=a}),o(Object.values(this.userData))},genMentionsData(e){return Object.values(e).flat().forEach(o=>{this.userData[o.mentionId]={icon:"icon-user",id:o.mentionId,label:o.mentionDisplayName,source:"users",primary:f()?.uid===o.mentionId}}),this.userData}}});export{nt as C,rt as a}; -//# sourceMappingURL=CommentView-BOeY59Ia.chunk.mjs.map +//# sourceMappingURL=CommentView-Dwuq398x.chunk.mjs.map diff --git a/dist/CommentView-BOeY59Ia.chunk.mjs.license b/dist/CommentView-Dwuq398x.chunk.mjs.license similarity index 100% rename from dist/CommentView-BOeY59Ia.chunk.mjs.license rename to dist/CommentView-Dwuq398x.chunk.mjs.license diff --git a/dist/CommentView-BOeY59Ia.chunk.mjs.map b/dist/CommentView-Dwuq398x.chunk.mjs.map similarity index 99% rename from dist/CommentView-BOeY59Ia.chunk.mjs.map rename to dist/CommentView-Dwuq398x.chunk.mjs.map index 7def695878ca4..6f5da5f76670b 100644 --- a/dist/CommentView-BOeY59Ia.chunk.mjs.map +++ b/dist/CommentView-Dwuq398x.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["_sfc_main","_hoisted_1","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","NcActionSeparator","_export_sfc","_hoisted_3","_createElementBlock","_mergeProps","$event","_createElementVNode","_openBlock","DeleteComment","resourceType","resourceId","commentId","commentPath","client","EditComment","message","decodeHtmlEntities","value","passes","parser","decoded","i","NewComment","resourcePath","response","axios","getRootPath","getCurrentUser","comment","props","useDeletedCommentLimbo","defineStore","id","index","CommentMixin","mapStores","logger","error","showError","timeOutDelete","TOAST_UNDO_TIMEOUT","showUndo","newComment","NcRichContenteditable","defineAsyncComponent","NcRichText","n","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","mentions","user","key","regex","NcUserBubble","t","_hoisted_2","_hoisted_4","_hoisted_6","_hoisted_7","_withDirectives","_createBlock","_resolveDynamicComponent","_normalizeClass","_createVNode","_component_NcAvatar","_toDisplayString","_component_NcActions","_component_NcActionButton","_component_IconClose","_createTextVNode","_Fragment","_component_IconPencilOutline","_component_NcActionSeparator","_component_IconTrashCanOutline","_hoisted_5","_component_NcDateTime","_component_NcRichContenteditable","_component_NcButton","_component_NcLoadingIcon","_component_IconArrowRight","_hoisted_8","_component_NcRichText","_vShow","CommentView","defineComponent","search","callback","data","generateOcsUrl","loadState","mention"],"ignoreList":[0,1],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionSeparator-B9pNQaji.mjs","../node_modules/vue-material-design-icons/Close.vue","../build/frontend/apps/comments/src/services/DeleteComment.ts","../build/frontend/apps/comments/src/services/EditComment.ts","../build/frontend/apps/comments/src/utils/decodeHtmlEntities.ts","../build/frontend/apps/comments/src/services/NewComment.ts","../build/frontend/apps/comments/src/store/deletedCommentLimbo.ts","../build/frontend/apps/comments/src/mixins/CommentMixin.ts","../build/frontend/apps/comments/src/components/Comment.vue","../build/frontend/apps/comments/src/mixins/CommentView.ts"],"sourcesContent":["import '../assets/NcActionSeparator-Ct2RnclR.css';\nimport { openBlock, createElementBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionSeparator\"\n};\nconst _hoisted_1 = {\n class: \"action action-separator action--disabled\",\n role: \"separator\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", _hoisted_1);\n}\nconst NcActionSeparator = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-3e2324b7\"]]);\nexport {\n NcActionSeparator as N\n};\n//# sourceMappingURL=NcActionSeparator-B9pNQaji.mjs.map\n","\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Delete a comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Edit an existing comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n * @param message the message content\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number, message: string) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param value - the string to decode\n * @param passes - the number of times to decode the string, default is 1\n */\nexport function decodeHtmlEntities(value: string, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.ts'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.ts'\nimport client from './DavClient.ts'\n\n/**\n * Retrieve the comments list\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param message the message\n * @return The new comment\n */\nexport default async function(resourceType: string, resourceId: number, message: string) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser()!.displayName,\n\t\tactorId: getCurrentUser()!.uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.ts'\nimport DeleteComment from '../services/DeleteComment.ts'\nimport EditComment from '../services/EditComment.ts'\nimport NewComment from '../services/NewComment.ts'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.ts'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tprops: {\n\t\tresourceId: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\teditorData: {\n\t\t\t\tactorDisplayName: getCurrentUser()!.displayName as string,\n\t\t\t\tactorId: getCurrentUser()!.uid as string,\n\t\t\t\tkey: 'editor',\n\t\t\t},\n\t\t\tuserData: {},\n\t\t\tcurrentResourceId: this.resourceId,\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Autocomplete `@mentions`\n\t\t *\n\t\t * @param search the query\n\t\t * @param callback the callback to process the results with\n\t\t */\n\t\tasync autoComplete(search, callback) {\n\t\t\tconst { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch,\n\t\t\t\t\titemType: this.resourceType,\n\t\t\t\t\titemId: this.currentResourceId,\n\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\tlimit: loadState('comments', 'maxAutoCompleteResults'),\n\t\t\t\t},\n\t\t\t})\n\t\t\t// Save user data so it can be used by the editor to replace mentions\n\t\t\tdata.ocs.data.forEach((user) => {\n\t\t\t\tthis.userData[user.id] = user\n\t\t\t})\n\t\t\treturn callback(Object.values(this.userData))\n\t\t},\n\n\t\t/**\n\t\t * Make sure we have all mentions as Array of objects\n\t\t *\n\t\t * @param mentions the mentions list\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tgenMentionsData(mentions: any[]): Record {\n\t\t\tObject.values(mentions)\n\t\t\t\t.flat()\n\t\t\t\t.forEach((mention) => {\n\t\t\t\t\tthis.userData[mention.mentionId] = {\n\t\t\t\t\t\t// TODO: support groups\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: mention.mentionId,\n\t\t\t\t\t\tlabel: mention.mentionDisplayName,\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tprimary: getCurrentUser()?.uid === mention.mentionId,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\treturn this.userData\n\t\t},\n\t},\n})\n"],"file":"CommentView-BOeY59Ia.chunk.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["_sfc_main","_hoisted_1","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","NcActionSeparator","_export_sfc","_hoisted_3","_createElementBlock","_mergeProps","$event","_createElementVNode","_openBlock","DeleteComment","resourceType","resourceId","commentId","commentPath","client","EditComment","message","decodeHtmlEntities","value","passes","parser","decoded","i","NewComment","resourcePath","response","axios","getRootPath","getCurrentUser","comment","props","useDeletedCommentLimbo","defineStore","id","index","CommentMixin","mapStores","logger","error","showError","timeOutDelete","TOAST_UNDO_TIMEOUT","showUndo","newComment","NcRichContenteditable","defineAsyncComponent","NcRichText","n","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","mentions","user","key","regex","NcUserBubble","t","_hoisted_2","_hoisted_4","_hoisted_6","_hoisted_7","_withDirectives","_createBlock","_resolveDynamicComponent","_normalizeClass","_createVNode","_component_NcAvatar","_toDisplayString","_component_NcActions","_component_NcActionButton","_component_IconClose","_createTextVNode","_Fragment","_component_IconPencilOutline","_component_NcActionSeparator","_component_IconTrashCanOutline","_hoisted_5","_component_NcDateTime","_component_NcRichContenteditable","_component_NcButton","_component_NcLoadingIcon","_component_IconArrowRight","_hoisted_8","_component_NcRichText","_vShow","CommentView","defineComponent","search","callback","data","generateOcsUrl","loadState","mention"],"ignoreList":[0,1],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionSeparator-B9pNQaji.mjs","../node_modules/vue-material-design-icons/Close.vue","../build/frontend/apps/comments/src/services/DeleteComment.ts","../build/frontend/apps/comments/src/services/EditComment.ts","../build/frontend/apps/comments/src/utils/decodeHtmlEntities.ts","../build/frontend/apps/comments/src/services/NewComment.ts","../build/frontend/apps/comments/src/store/deletedCommentLimbo.ts","../build/frontend/apps/comments/src/mixins/CommentMixin.ts","../build/frontend/apps/comments/src/components/Comment.vue","../build/frontend/apps/comments/src/mixins/CommentView.ts"],"sourcesContent":["import '../assets/NcActionSeparator-Ct2RnclR.css';\nimport { openBlock, createElementBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionSeparator\"\n};\nconst _hoisted_1 = {\n class: \"action action-separator action--disabled\",\n role: \"separator\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", _hoisted_1);\n}\nconst NcActionSeparator = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-3e2324b7\"]]);\nexport {\n NcActionSeparator as N\n};\n//# sourceMappingURL=NcActionSeparator-B9pNQaji.mjs.map\n","\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Delete a comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.ts'\n\n/**\n * Edit an existing comment\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param commentId the comment iD\n * @param message the message content\n */\nexport default async function(resourceType: string, resourceId: number, commentId: number, message: string) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param value - the string to decode\n * @param passes - the number of times to decode the string, default is 1\n */\nexport function decodeHtmlEntities(value: string, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.ts'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.ts'\nimport client from './DavClient.ts'\n\n/**\n * Retrieve the comments list\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param message the message\n * @return The new comment\n */\nexport default async function(resourceType: string, resourceId: number, message: string) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser()!.displayName,\n\t\tactorId: getCurrentUser()!.uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.ts'\nimport DeleteComment from '../services/DeleteComment.ts'\nimport EditComment from '../services/EditComment.ts'\nimport NewComment from '../services/NewComment.ts'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.ts'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n\tprops: {\n\t\tresourceId: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\teditorData: {\n\t\t\t\tactorDisplayName: getCurrentUser()!.displayName as string,\n\t\t\t\tactorId: getCurrentUser()!.uid as string,\n\t\t\t\tkey: 'editor',\n\t\t\t},\n\t\t\tuserData: {},\n\t\t\tcurrentResourceId: this.resourceId,\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Autocomplete `@mentions`\n\t\t *\n\t\t * @param search the query\n\t\t * @param callback the callback to process the results with\n\t\t */\n\t\tasync autoComplete(search, callback) {\n\t\t\tconst { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch,\n\t\t\t\t\titemType: this.resourceType,\n\t\t\t\t\titemId: this.currentResourceId,\n\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\tlimit: loadState('comments', 'maxAutoCompleteResults'),\n\t\t\t\t},\n\t\t\t})\n\t\t\t// Save user data so it can be used by the editor to replace mentions\n\t\t\tdata.ocs.data.forEach((user) => {\n\t\t\t\tthis.userData[user.id] = user\n\t\t\t})\n\t\t\treturn callback(Object.values(this.userData))\n\t\t},\n\n\t\t/**\n\t\t * Make sure we have all mentions as Array of objects\n\t\t *\n\t\t * @param mentions the mentions list\n\t\t */\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tgenMentionsData(mentions: any[]): Record {\n\t\t\tObject.values(mentions)\n\t\t\t\t.flat()\n\t\t\t\t.forEach((mention) => {\n\t\t\t\t\tthis.userData[mention.mentionId] = {\n\t\t\t\t\t\t// TODO: support groups\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: mention.mentionId,\n\t\t\t\t\t\tlabel: mention.mentionDisplayName,\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tprimary: getCurrentUser()?.uid === mention.mentionId,\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\treturn this.userData\n\t\t},\n\t},\n})\n"],"file":"CommentView-Dwuq398x.chunk.mjs"} \ No newline at end of file diff --git a/dist/CommentView-BOeY59Ia.chunk.mjs.map.license b/dist/CommentView-Dwuq398x.chunk.mjs.map.license similarity index 100% rename from dist/CommentView-BOeY59Ia.chunk.mjs.map.license rename to dist/CommentView-Dwuq398x.chunk.mjs.map.license diff --git a/dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs b/dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs deleted file mode 100644 index 2df4472573ecd..0000000000000 --- a/dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{b as w,l as h,z as D,o as p,f as y,t as I,u as a,h as N,g as u,k as r,w as d,c as k,m as M,T,F as q,B as z,v as s,D as A}from"./Web-DYqXJUev.chunk.mjs";import{f as B,g as F,h as P,i as S}from"./mdi-B6W_Xvj-.chunk.mjs";import{t as n}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as f}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as g}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{c as j,D as E,u as G}from"./DiscoverTypePost-D1FhRXE_.chunk.mjs";import{_ as H}from"./public-C1mLBHT3.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./appstore-main.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";const J=["aria-roledescription","aria-labelledby"],K=["id"],L={class:"app-discover-carousel__wrapper"},O={class:"app-discover-carousel__button-wrapper"},Q={class:"app-discover-carousel__button-wrapper"},R=["aria-label"],U=w({__name:"DiscoverTypeCarousel",props:{...j,content:{type:Array,required:!0}},setup(m){const t=m,$=G(s(()=>t.headline)),e=h(Math.min(1,t.content.length-1)),c=h(t.content[e.value]),C=s(()=>e.valuee.value>0),l=s(()=>t.id??(Math.random()+1).toString(36).substring(7)),v=s(()=>`${l.value}-h`),b=h("slide-in");return D(()=>e.value,(_,i)=>{_{c.value=t.content[e.value]})}),(_,i)=>(p(),y("section",{"aria-roledescription":a(n)("appstore","Carousel"),"aria-labelledby":v.value?`${v.value}`:void 0},[_.headline?(p(),y("h3",{key:0,id:v.value},I(a($)),9,K)):N("",!0),u("div",L,[u("div",O,[r(a(f),{class:"app-discover-carousel__button app-discover-carousel__button--previous",variant:"tertiary-no-background","aria-label":a(n)("appstore","Previous slide"),disabled:!x.value,onClick:i[0]||(i[0]=o=>e.value-=1)},{icon:d(()=>[r(a(g),{path:a(B)},null,8,["path"])]),_:1},8,["aria-label","disabled"])]),r(T,{name:b.value,mode:"out-in"},{default:d(()=>[(p(),k(E,M(c.value,{key:c.value.id??e.value,"aria-labelledby":`${l.value}-tab-${e.value}`,domId:`${l.value}-tabpanel-${e.value}`,inline:"",role:"tabpanel"}),null,16,["aria-labelledby","domId"]))]),_:1},8,["name"]),u("div",Q,[r(a(f),{class:"app-discover-carousel__button app-discover-carousel__button--next",variant:"tertiary-no-background","aria-label":a(n)("appstore","Next slide"),disabled:!C.value,onClick:i[1]||(i[1]=o=>e.value+=1)},{icon:d(()=>[r(a(g),{path:a(F)},null,8,["path"])]),_:1},8,["aria-label","disabled"])])]),u("div",{class:"app-discover-carousel__tabs",role:"tablist","aria-label":a(n)("appstore","Choose slide to display")},[(p(!0),y(q,null,z(m.content.length,o=>(p(),k(a(f),{id:`${l.value}-tab-${o}`,key:o,"aria-label":a(n)("appstore","{index} of {total}",{index:o,total:m.content.length}),"aria-controls":`${l.value}-tabpanel-${o}`,"aria-selected":`${e.value===o-1}`,role:"tab",variant:"tertiary-no-background",onClick:V=>e.value=o-1},{icon:d(()=>[r(a(g),{path:e.value===o-1?a(P):a(S)},null,8,["path"])]),_:2},1032,["id","aria-label","aria-controls","aria-selected","onClick"]))),128))],8,R)],8,J))}}),Ja=H(U,[["__scopeId","data-v-89f194e4"]]);export{Ja as default}; -//# sourceMappingURL=DiscoverTypeCarousel-ChT7kOYo.chunk.mjs.map diff --git a/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs b/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs new file mode 100644 index 0000000000000..d0d47f7102600 --- /dev/null +++ b/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs @@ -0,0 +1,2 @@ +import{b as w,l as h,z as D,o as p,f as y,t as I,u as a,h as N,g as u,k as r,w as d,c as k,m as M,T,F as q,B as z,v as s,D as A}from"./Web-DYqXJUev.chunk.mjs";import{f as B,g as F,h as P,i as S}from"./mdi-B6W_Xvj-.chunk.mjs";import{t as n}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as f}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as g}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{c as j,D as E,u as G}from"./DiscoverTypePost-D1FhRXE_.chunk.mjs";import{_ as H}from"./public-C1mLBHT3.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./appstore-main.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-mH69OG7L.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";const J=["aria-roledescription","aria-labelledby"],K=["id"],L={class:"app-discover-carousel__wrapper"},O={class:"app-discover-carousel__button-wrapper"},Q={class:"app-discover-carousel__button-wrapper"},R=["aria-label"],U=w({__name:"DiscoverTypeCarousel",props:{...j,content:{type:Array,required:!0}},setup(m){const t=m,$=G(s(()=>t.headline)),e=h(Math.min(1,t.content.length-1)),c=h(t.content[e.value]),C=s(()=>e.valuee.value>0),l=s(()=>t.id??(Math.random()+1).toString(36).substring(7)),v=s(()=>`${l.value}-h`),b=h("slide-in");return D(()=>e.value,(_,i)=>{_{c.value=t.content[e.value]})}),(_,i)=>(p(),y("section",{"aria-roledescription":a(n)("appstore","Carousel"),"aria-labelledby":v.value?`${v.value}`:void 0},[_.headline?(p(),y("h3",{key:0,id:v.value},I(a($)),9,K)):N("",!0),u("div",L,[u("div",O,[r(a(f),{class:"app-discover-carousel__button app-discover-carousel__button--previous",variant:"tertiary-no-background","aria-label":a(n)("appstore","Previous slide"),disabled:!x.value,onClick:i[0]||(i[0]=o=>e.value-=1)},{icon:d(()=>[r(a(g),{path:a(B)},null,8,["path"])]),_:1},8,["aria-label","disabled"])]),r(T,{name:b.value,mode:"out-in"},{default:d(()=>[(p(),k(E,M(c.value,{key:c.value.id??e.value,"aria-labelledby":`${l.value}-tab-${e.value}`,domId:`${l.value}-tabpanel-${e.value}`,inline:"",role:"tabpanel"}),null,16,["aria-labelledby","domId"]))]),_:1},8,["name"]),u("div",Q,[r(a(f),{class:"app-discover-carousel__button app-discover-carousel__button--next",variant:"tertiary-no-background","aria-label":a(n)("appstore","Next slide"),disabled:!C.value,onClick:i[1]||(i[1]=o=>e.value+=1)},{icon:d(()=>[r(a(g),{path:a(F)},null,8,["path"])]),_:1},8,["aria-label","disabled"])])]),u("div",{class:"app-discover-carousel__tabs",role:"tablist","aria-label":a(n)("appstore","Choose slide to display")},[(p(!0),y(q,null,z(m.content.length,o=>(p(),k(a(f),{id:`${l.value}-tab-${o}`,key:o,"aria-label":a(n)("appstore","{index} of {total}",{index:o,total:m.content.length}),"aria-controls":`${l.value}-tabpanel-${o}`,"aria-selected":`${e.value===o-1}`,role:"tab",variant:"tertiary-no-background",onClick:V=>e.value=o-1},{icon:d(()=>[r(a(g),{path:e.value===o-1?a(P):a(S)},null,8,["path"])]),_:2},1032,["id","aria-label","aria-controls","aria-selected","onClick"]))),128))],8,R)],8,J))}}),Ja=H(U,[["__scopeId","data-v-89f194e4"]]);export{Ja as default}; +//# sourceMappingURL=DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map diff --git a/dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs.license b/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.license similarity index 100% rename from dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs.license rename to dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.license diff --git a/dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs.map b/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map similarity index 98% rename from dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs.map rename to dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map index 1727e2e160a4c..624a4745b75d4 100644 --- a/dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs.map +++ b/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"DiscoverTypeCarousel-ChT7kOYo.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeCarousel.vue"],"sourcesContent":["\n\n\n\n\n\n\n\n"],"names":["props","__props","translatedHeadline","useLocalizedValue","computed","currentIndex","ref","shownElement","hasNext","hasPrevious","internalId","headingId","transitionName","watch","o","n","nextTick","_createElementBlock","_unref","t","headline","_hoisted_2","_createElementVNode","_hoisted_3","_hoisted_4","_createVNode","NcButton","NcIconSvgWrapper","mdiChevronLeft","_Transition","_createBlock","DiscoverTypePost","_mergeProps","_hoisted_5","mdiChevronRight","_openBlock","_Fragment","_renderList","index","$event","mdiCircleSlice8","mdiCircleOutline"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DiscoverTypeCarousel-D8xqFtm0.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeCarousel.vue"],"sourcesContent":["\n\n\n\n\n\n\n\n"],"names":["props","__props","translatedHeadline","useLocalizedValue","computed","currentIndex","ref","shownElement","hasNext","hasPrevious","internalId","headingId","transitionName","watch","o","n","nextTick","_createElementBlock","_unref","t","headline","_hoisted_2","_createElementVNode","_hoisted_3","_hoisted_4","_createVNode","NcButton","NcIconSvgWrapper","mdiChevronLeft","_Transition","_createBlock","DiscoverTypePost","_mergeProps","_hoisted_5","mdiChevronRight","_openBlock","_Fragment","_renderList","index","$event","mdiCircleSlice8","mdiCircleOutline"],"mappings":"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"} \ No newline at end of file diff --git a/dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs.map.license b/dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map.license similarity index 100% rename from dist/DiscoverTypeCarousel-ChT7kOYo.chunk.mjs.map.license rename to dist/DiscoverTypeCarousel-D8xqFtm0.chunk.mjs.map.license diff --git a/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs b/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs new file mode 100644 index 0000000000000..1ce7f419b8eaa --- /dev/null +++ b/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs @@ -0,0 +1,2 @@ +import{u as x}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{A}from"./UpdateAllDialog-BqC8T943.chunk.mjs";import{l as B,_ as V}from"./public-C1mLBHT3.chunk.mjs";import{b as D}from"./index-Cp0kcsps.chunk.mjs";import{u as j,R as E}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{b as w,E as T,o as p,f as l,G as g,m as v,i as I,c as f,u as _,w as $,h,l as y,H as q,k as d,g as c,j as F,t as k,v as u,F as G,B as H,y as L}from"./Web-DYqXJUev.chunk.mjs";import{u as O,B as R}from"./appstore-main.mjs";import{c as S,D as z,u as C}from"./DiscoverTypePost-D1FhRXE_.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./index-mH69OG7L.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";const J=w({__name:"AppLink",props:{href:{}},setup(t){const o=t,i=j(),e=Object.fromEntries(B("core","apps").map(a=>[a.app??a.id,a.href])),s=y(),r=y();return T(()=>{const a=o.href.match(/^app:(\/\/)?([^/]+)(\/.+)?$/);if(s.value=void 0,r.value=void 0,a===null){r.value={href:o.href,target:"_blank",rel:"noreferrer noopener"};return}const m=a[2];if(a[3]){r.value={href:D(`/apps/${m}${a[3]}`)};return}if(m in e){r.value={href:e[m]};return}s.value={to:{name:"apps-discover",params:{category:i.params?.category??"discover",id:m}}}}),(a,m)=>r.value?(p(),l("a",g(v({key:0},r.value)),[I(a.$slots,"default")],16)):s.value?(p(),f(_(E),g(v({key:1},s.value)),{default:$(()=>[I(a.$slots,"default")]),_:3},16)):h("",!0)}}),K=["href","title"],M={key:1,class:"app-discover-app"},N={class:"app-discover-app__wrapper"},P={class:"app-discover-app__name"},Q=w({__name:"DiscoverTypeApp",props:{modelValue:{}},setup(t){const o=t,i=O(),e=u(()=>i.getAppById(o.modelValue.appId)),s=u(()=>o.modelValue.appId?`https://apps.nextcloud.com/apps/${o.modelValue.appId}`:"#");return(r,a)=>e.value?(p(),l("article",M,[d(A,{class:"app-discover-app__image",app:e.value},null,8,["app"]),c("div",N,[c("h3",P,[d(J,{href:`app:${e.value.id}`},{default:$(()=>[F(k(e.value.name),1)]),_:1},8,["href"])]),c("p",null,k(e.value.summary),1),d(R,{class:"app-discover-app__score",app:e.value},null,8,["app"])])])):(p(),l("a",{key:0,class:"app-discover-app app-discover-app__skeleton",href:s.value,target:"_blank",title:t.modelValue.appId,rel:"noopener noreferrer"},[...a[0]||(a[0]=[q('',5)])],8,K))}}),U=V(Q,[["__scopeId","data-v-6a756697"]]),W={key:0},X={class:"app-discover-showcase__list"},Y=w({__name:"DiscoverTypeShowcase",props:{...S,content:{type:Array,required:!0}},setup(t){const o=t,i=C(u(()=>o.headline)),e=y(),{width:s}=x(e),r=u(()=>s.value<768),a=u(()=>s.value<512);return(m,Z)=>(p(),l("section",{ref_key:"container",ref:e,class:L(["app-discover-showcase",{"app-discover-showcase--small":r.value,"app-discover-showcase--extra-small":a.value}])},[_(i)?(p(),l("h3",W,k(_(i)),1)):h("",!0),c("ul",X,[(p(!0),l(G,null,H(t.content,(n,b)=>(p(),l("li",{key:"id"in n?n.id:b,class:"app-discover-showcase__item"},[n.type==="post"?(p(),f(z,v({key:0,ref_for:!0},n,{inline:""}),null,16)):n.type==="app"?(p(),f(U,{key:1,modelValue:n},null,8,["modelValue"])):h("",!0)]))),128))])],2))}}),Pa=V(Y,[["__scopeId","data-v-83c1b4dd"]]);export{Pa as default}; +//# sourceMappingURL=DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map diff --git a/dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs.license b/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.license similarity index 100% rename from dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs.license rename to dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.license diff --git a/dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs.map b/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map similarity index 98% rename from dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs.map rename to dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map index 198bf78886ce1..d028cc3194b93 100644 --- a/dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs.map +++ b/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"DiscoverTypeShowcase-BukbuTap.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/AppLink.vue","../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeApp.vue","../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeShowcase.vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n"],"names":["props","__props","route","useRoute","knownRoutes","loadState","app","routerProps","ref","linkProps","watchEffect","match","appId","generateUrl","_openBlock","_createElementBlock","_renderSlot","_ctx","_createBlock","_unref","store","useAppsStore","computed","appStoreLink","_hoisted_2","_createVNode","AppImage","_createElementVNode","_hoisted_3","_hoisted_4","AppLink","_createTextVNode","_toDisplayString","BadgeAppScore","translatedHeadline","useLocalizedValue","container","containerWidth","useElementSize","isSmallWidth","isExtraSmallWidth","_Fragment","_renderList","item","index","DiscoverTypePost","_mergeProps","DiscoverTypeApp"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"DiscoverTypeShowcase-65aK4fEm.chunk.mjs","sources":["../build/frontend/apps/appstore/src/components/AppLink.vue","../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeApp.vue","../build/frontend/apps/appstore/src/components/DiscoverType/DiscoverTypeShowcase.vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n"],"names":["props","__props","route","useRoute","knownRoutes","loadState","app","routerProps","ref","linkProps","watchEffect","match","appId","generateUrl","_openBlock","_createElementBlock","_renderSlot","_ctx","_createBlock","_unref","store","useAppsStore","computed","appStoreLink","_hoisted_2","_createVNode","AppImage","_createElementVNode","_hoisted_3","_hoisted_4","AppLink","_createTextVNode","_toDisplayString","BadgeAppScore","translatedHeadline","useLocalizedValue","container","containerWidth","useElementSize","isSmallWidth","isExtraSmallWidth","_Fragment","_renderList","item","index","DiscoverTypePost","_mergeProps","DiscoverTypeApp"],"mappings":"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"} \ No newline at end of file diff --git a/dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs.map.license b/dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map.license similarity index 100% rename from dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs.map.license rename to dist/DiscoverTypeShowcase-65aK4fEm.chunk.mjs.map.license diff --git a/dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs b/dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs deleted file mode 100644 index 8fb7cfa81c6bd..0000000000000 --- a/dist/DiscoverTypeShowcase-BukbuTap.chunk.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{u as x}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{A}from"./UpdateAllDialog-B79HRvpB.chunk.mjs";import{l as B,_ as V}from"./public-C1mLBHT3.chunk.mjs";import{b as D}from"./index-Cp0kcsps.chunk.mjs";import{u as j,R as E}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{b as w,E as T,o as p,f as l,G as g,m as v,i as I,c as f,u as _,w as $,h,l as y,H as q,k as d,g as c,j as F,t as k,v as u,F as G,B as H,y as L}from"./Web-DYqXJUev.chunk.mjs";import{u as O,B as R}from"./appstore-main.mjs";import{c as S,D as z,u as C}from"./DiscoverTypePost-D1FhRXE_.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";/* empty css */import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import"./pinia-BsumPXOW.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";const J=w({__name:"AppLink",props:{href:{}},setup(t){const o=t,i=j(),e=Object.fromEntries(B("core","apps").map(a=>[a.app??a.id,a.href])),s=y(),r=y();return T(()=>{const a=o.href.match(/^app:(\/\/)?([^/]+)(\/.+)?$/);if(s.value=void 0,r.value=void 0,a===null){r.value={href:o.href,target:"_blank",rel:"noreferrer noopener"};return}const m=a[2];if(a[3]){r.value={href:D(`/apps/${m}${a[3]}`)};return}if(m in e){r.value={href:e[m]};return}s.value={to:{name:"apps-discover",params:{category:i.params?.category??"discover",id:m}}}}),(a,m)=>r.value?(p(),l("a",g(v({key:0},r.value)),[I(a.$slots,"default")],16)):s.value?(p(),f(_(E),g(v({key:1},s.value)),{default:$(()=>[I(a.$slots,"default")]),_:3},16)):h("",!0)}}),K=["href","title"],M={key:1,class:"app-discover-app"},N={class:"app-discover-app__wrapper"},P={class:"app-discover-app__name"},Q=w({__name:"DiscoverTypeApp",props:{modelValue:{}},setup(t){const o=t,i=O(),e=u(()=>i.getAppById(o.modelValue.appId)),s=u(()=>o.modelValue.appId?`https://apps.nextcloud.com/apps/${o.modelValue.appId}`:"#");return(r,a)=>e.value?(p(),l("article",M,[d(A,{class:"app-discover-app__image",app:e.value},null,8,["app"]),c("div",N,[c("h3",P,[d(J,{href:`app:${e.value.id}`},{default:$(()=>[F(k(e.value.name),1)]),_:1},8,["href"])]),c("p",null,k(e.value.summary),1),d(R,{class:"app-discover-app__score",app:e.value},null,8,["app"])])])):(p(),l("a",{key:0,class:"app-discover-app app-discover-app__skeleton",href:s.value,target:"_blank",title:t.modelValue.appId,rel:"noopener noreferrer"},[...a[0]||(a[0]=[q('',5)])],8,K))}}),U=V(Q,[["__scopeId","data-v-6a756697"]]),W={key:0},X={class:"app-discover-showcase__list"},Y=w({__name:"DiscoverTypeShowcase",props:{...S,content:{type:Array,required:!0}},setup(t){const o=t,i=C(u(()=>o.headline)),e=y(),{width:s}=x(e),r=u(()=>s.value<768),a=u(()=>s.value<512);return(m,Z)=>(p(),l("section",{ref_key:"container",ref:e,class:L(["app-discover-showcase",{"app-discover-showcase--small":r.value,"app-discover-showcase--extra-small":a.value}])},[_(i)?(p(),l("h3",W,k(_(i)),1)):h("",!0),c("ul",X,[(p(!0),l(G,null,H(t.content,(n,b)=>(p(),l("li",{key:"id"in n?n.id:b,class:"app-discover-showcase__item"},[n.type==="post"?(p(),f(z,v({key:0,ref_for:!0},n,{inline:""}),null,16)):n.type==="app"?(p(),f(U,{key:1,modelValue:n},null,8,["modelValue"])):h("",!0)]))),128))])],2))}}),Pa=V(Y,[["__scopeId","data-v-83c1b4dd"]]);export{Pa as default}; -//# sourceMappingURL=DiscoverTypeShowcase-BukbuTap.chunk.mjs.map diff --git a/dist/FilePicker-0pVFI2AM.chunk.mjs b/dist/FilePicker-0pVFI2AM.chunk.mjs new file mode 100644 index 0000000000000..e5c0bf1c60d64 --- /dev/null +++ b/dist/FilePicker-0pVFI2AM.chunk.mjs @@ -0,0 +1,2 @@ +import{r as re,o as s,f as c,c as C,q as Fe,w,i as ne,g as f,y as U,j as q,t as $,m as D,h as z,k as _,L as K,F as M,ag as be,ac as A,E as Ue,a8 as O,l as L,b as H,z as Pe,S as J,u as d,v as b,ah as de,n as ue,p as We,B as Q,s as pe,ai as Te,D as qe,N as Oe,O as Ze,a5 as Se}from"./Web-DYqXJUev.chunk.mjs";import{u as je,d as Ge,s as Je,b as me,f as Ke,n as X,a as Qe,m as Xe}from"./index-Cp0kcsps.chunk.mjs";import{N as Ye}from"./index-CmDAUQql.chunk.mjs";import{N as we}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{v as et,I as tt,e as se,f as it,s as at}from"./index-BGv_Bbjs.chunk.mjs";import{N as Z}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as Ne}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as ke,a as _e,_ as lt}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{w as rt,x as nt,y as st,z as ot,A as ct,B as dt,C as Ce,t as ut,c as pt}from"./mdi-B6W_Xvj-.chunk.mjs";import{S as Le}from"./ShareType-suoNfd7y.chunk.mjs";import{_ as ee,c as ft,N as xe}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{F as j,P as $e}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{P as mt,a as ht}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import{t as h,l as G,a as he}from"./index-mH69OG7L.chunk.mjs";import{c as Ve}from"./index-CkGt55pS.chunk.mjs";import{l as Ie,i as De}from"./public-C1mLBHT3.chunk.mjs";import{b as ve,p as vt}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{N as ze}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{N as gt}from"./index-BDlLVKOD.chunk.mjs";import{_ as yt}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{g as bt,h as wt,i as ge,j as kt,r as ye,k as Me}from"./dav-DpOWisxz.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const _t={name:"ChevronRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ct=["aria-hidden","aria-label"],Lt=["fill","width","height"],$t={d:"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"},zt={key:0};function Bt(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon chevron-right-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",$t,[e.title?(s(),c("title",zt,$(e.title),1)):z("",!0)])],8,Lt))],16,Ct)}const Ft=ee(_t,[["render",Bt]]),Pt={name:"NcBreadcrumb",components:{NcActions:ve,ChevronRight:Ft,NcButton:Z},inheritAttrs:!1,props:{name:{type:String,required:!0},title:{type:String,default:null},to:{type:[String,Object],default:void 0},href:{type:String,default:void 0},icon:{type:String,default:""},forceIconText:{type:Boolean,default:!1},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1},class:{type:[String,Array,Object],default:""}},emits:["dragenter","dragleave","dropped","update:open"],setup(){const t=ft();return{actionsContainer:`.vue-crumb[data-crumb-id="${t}"]`,crumbId:t}},data(){return{hovering:!1}},computed:{linkAttributes(){return this.to?{to:this.to,...this.$attrs}:this.href?{href:this.href,...this.$attrs}:this.$attrs}},methods:{onOpenChange(t){this.$emit("update:open",t)},dropped(t){return this.disableDrop||(this.$emit("dropped",t,this.to||this.href),this.$parent.$emit("dropped",t,this.to||this.href),this.hovering=!1),!1},dragEnter(t){this.$emit("dragenter",t),!this.disableDrop&&(this.hovering=!0)},dragLeave(t){this.$emit("dragleave",t),!this.disableDrop&&(t.target.contains(t.relatedTarget)||this.$refs.crumb.contains(t.relatedTarget)||(this.hovering=!1))}}},St=["data-crumb-id"];function Nt(t,i,e,a,l,r){const n=re("NcButton"),u=re("NcActions"),p=re("ChevronRight");return s(),c("li",{ref:"crumb",class:U(["vue-crumb",[{"vue-crumb--hovered":l.hovering},t.$props.class]]),"data-crumb-id":a.crumbId,draggable:"false",onDragstart:K(()=>{},["prevent"]),onDrop:i[0]||(i[0]=K((...o)=>r.dropped&&r.dropped(...o),["prevent"])),onDragover:K(()=>{},["prevent"]),onDragenter:i[1]||(i[1]=(...o)=>r.dragEnter&&r.dragEnter(...o)),onDragleave:i[2]||(i[2]=(...o)=>r.dragLeave&&r.dragLeave(...o))},[(e.name||e.icon||t.$slots.icon)&&!t.$slots.default?(s(),C(n,D({key:0,"aria-label":e.icon?e.name:void 0,variant:"tertiary"},r.linkAttributes),Fe({_:2},[t.$slots.icon||e.icon?{name:"icon",fn:w(()=>[ne(t.$slots,"icon",{},()=>[f("span",{class:U([e.icon,"icon"])},null,2)],!0)]),key:"0"}:void 0,!(t.$slots.icon||e.icon)||e.forceIconText?{name:"default",fn:w(()=>[q($(e.name),1)]),key:"1"}:void 0]),1040,["aria-label"])):z("",!0),t.$slots.default?(s(),C(u,{key:1,ref:"actions",container:a.actionsContainer,forceMenu:e.forceMenu,forceName:"",menuName:e.name,open:e.open,title:e.title,variant:"tertiary","onUpdate:open":r.onOpenChange},{icon:w(()=>[ne(t.$slots,"menu-icon",{},void 0,!0)]),default:w(()=>[ne(t.$slots,"default",{},void 0,!0)]),_:3},8,["container","forceMenu","menuName","open","title","onUpdate:open"])):z("",!0),_(p,{class:"vue-crumb__separator",size:20})],42,St)}const Y=ee(Pt,[["render",Nt],["__scopeId","data-v-7cec4a3e"]]),xt={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Vt=["aria-hidden","aria-label"],It=["fill","width","height"],Dt={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},Mt={key:0};function Rt(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Dt,[e.title?(s(),c("title",Mt,$(e.title),1)):z("",!0)])],8,It))],16,Vt)}const Be=ee(xt,[["render",Rt]]),N="vue-crumb",At={name:"NcBreadcrumbs",components:{NcActions:ve,NcActionButton:ze,NcActionRouter:_e,NcActionLink:ke,NcBreadcrumb:Y,IconFolder:Be},props:{rootIcon:{type:String,default:"icon-home"},ariaLabel:{type:String,default:null}},emits:["dropped"],data(){return{hiddenIndices:[],menuBreadcrumbProps:{name:"",forceMenu:!0,disableDrop:!0,open:!1},breadcrumbsRefs:[]}},created(){window.addEventListener("resize",Ge(()=>{this.handleWindowResize()},100)),Je("navigation-toggled",this.delayedResize)},mounted(){this.handleWindowResize()},updated(){this.delayedResize(),this.$nextTick(()=>{this.hideCrumbs()})},beforeUnmount(){window.removeEventListener("resize",this.handleWindowResize),je("navigation-toggled",this.delayedResize)},methods:{closeActions(t){this.$refs.actionsBreadcrumb.$el.contains(t.relatedTarget)||(this.menuBreadcrumbProps.open=!1)},async delayedResize(){await this.$nextTick(),this.handleWindowResize()},handleWindowResize(){if(!this.$refs.container)return;const t=this.breadcrumbsRefs.length,i=[],e=this.$refs.container.offsetWidth;let a=this.getTotalWidth();this.$refs.breadcrumb__actions&&(a+=this.$refs.breadcrumb__actions.offsetWidth);let l=a-e;l+=l>0?64:0;let r=0;const n=Math.floor(t/2);for(;l>0&&ru-p))||(this.hiddenIndices=i)},arraysEqual(t,i){if(t.length!==i.length)return!1;if(t===i)return!0;if(t===null||i===null)return!1;for(let e=0;et+this.getWidth(i.$el,e===this.breadcrumbsRefs.length-1),0)},getWidth(t,i){if(!t?.classList)return 0;const e=t.classList.contains(`${N}--hidden`);t.style.minWidth="auto",i&&(t.style.maxWidth="210px"),t.classList.remove(`${N}--hidden`);const a=t.offsetWidth;return e&&t.classList.add(`${N}--hidden`),t.style.minWidth="",t.style.maxWidth="",a},preventDefault(t){return t.preventDefault&&t.preventDefault(),!1},dragStart(t){return this.preventDefault(t)},dropped(t,i,e){e||this.$emit("dropped",t,i),this.menuBreadcrumbProps.open=!1;const a=document.querySelectorAll(`.${N}`);for(const l of a)l.classList.remove(`${N}--hovered`);return this.preventDefault(t)},dragOver(t){return this.preventDefault(t)},dragEnter(t,i){if(!i&&t.target.closest){const e=t.target.closest(`.${N}`);if(e.classList&&e.classList.contains(N)){const a=document.querySelectorAll(`.${N}`);for(const l of a)l.classList.remove(`${N}--hovered`);e.classList.add(`${N}--hovered`)}}},dragLeave(t,i){if(!i&&!t.target.contains(t.relatedTarget)&&t.target.closest){const e=t.target.closest(`.${N}`);if(e.contains(t.relatedTarget))return;e.classList&&e.classList.contains(N)&&e.classList.remove(`${N}--hovered`)}},hideCrumbs(){this.breadcrumbsRefs.forEach((t,i)=>{t?.$el?.classList&&(this.hiddenIndices.includes(i)?t.$el.classList.add(`${N}--hidden`):t.$el.classList.remove(`${N}--hidden`))})},isBreadcrumb(t){return t?.type?.name==="NcBreadcrumb"}},render(){let t=[];if(this.$slots.default?.().forEach(l=>{if(this.isBreadcrumb(l)){t.push(l);return}l?.type===M&&l?.children?.forEach?.(r=>{this.isBreadcrumb(r)&&t.push(r)})}),t.length===0)return;t[0]=be(t[0],{icon:this.rootIcon,ref:"breadcrumbs"});const i=[];t=t.map((l,r)=>be(l,{ref:n=>{i[r]=n}}));const e=[...t];this.hiddenIndices.length&&e.splice(Math.round(t.length/2),0,A(Y,{class:"dropdown",...this.menuBreadcrumbProps,"aria-hidden":!0,ref:"actionsBreadcrumb",key:"actions-breadcrumb-1",onDragenter:()=>{this.menuBreadcrumbProps.open=!0},onDragleave:this.closeActions,"onUpdate:open":l=>{this.menuBreadcrumbProps.open=l}},{default:()=>this.hiddenIndices.filter(l=>l<=t.length-1).map(l=>{const r=t[l],{to:n,href:u,disableDrop:p,name:o,...g}=r.props;delete g.ref;let y=ze,v="";u&&(y=ke,v=u),n&&(y=_e,v=n);const B=A(Be,{size:20});return A(y,{...g,class:N,href:u||null,to:n||null,draggable:!1,onDragstart:this.dragStart,onDrop:V=>this.dropped(V,v,p),onDragover:this.dragOver,onDragenter:V=>this.dragEnter(V,p),onDragleave:V=>this.dragLeave(V,p)},{default:()=>o,icon:()=>B})})}));const a=[A("nav",{"aria-label":this.ariaLabel},[A("ul",{class:"breadcrumb__crumbs"},[e])])];return vt(this.$slots.actions?.())&&a.push(A("div",{class:"breadcrumb__actions",ref:"breadcrumb__actions"},this.$slots.actions?.())),this.breadcrumbsRefs=i,A("div",{class:["breadcrumb",{"breadcrumb--collapsed":this.hiddenIndices.length===t.length-2}],ref:"container"},a)}},Ht=ee(At,[["__scopeId","data-v-5a4d73af"]]),Et=new mt({concurrency:5});function Ut(t){const{resolve:i,promise:e}=Promise.withResolvers();return Et.add(()=>{const a=new Image;return a.onerror=()=>i(!1),a.onload=()=>i(!0),a.src=t,e}),e}function Wt(t,i={}){i={size:32,cropPreview:!1,mimeFallback:!0,...i};try{const e=t.attributes?.previewUrl||me("/core/preview?fileId={fileid}",{fileid:t.fileid});let a;try{a=new URL(e)}catch{a=new URL(e,window.location.origin)}return a.searchParams.set("x",`${i.size}`),a.searchParams.set("y",`${i.size}`),a.searchParams.set("mimeFallback",`${i.mimeFallback}`),a.searchParams.set("a",i.cropPreview===!0?"0":"1"),a.searchParams.set("c",`${t.attributes.etag}`),a}catch{return null}}function Tt(t,i){const e=L(null),a=L(!1);return Ue(()=>{a.value=!1,e.value=Wt(O(t),O(i||{})),e.value&&O(t).type===j.File&&Ut(e.value.href).then(l=>{a.value=l})}),{previewURL:e,previewLoaded:a}}const x=(t,i)=>{const e=t.__vccOpts||t;for(const[a,l]of i)e[a]=l;return e},qt={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ot=["aria-hidden","aria-label"],Zt=["fill","width","height"],jt={d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"},Gt={key:0};function Jt(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon file-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",jt,[e.title?(s(),c("title",Gt,$(e.title),1)):z("",!0)])],8,Zt))],16,Ot)}const fe=x(qt,[["render",Jt]]),Kt={name:"MenuDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Qt=["aria-hidden","aria-label"],Xt=["fill","width","height"],Yt={d:"M7,10L12,15L17,10H7Z"},ei={key:0};function ti(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-down-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Yt,[e.title?(s(),c("title",ei,$(e.title),1)):z("",!0)])],8,Xt))],16,Qt)}const oe=x(Kt,[["render",ti]]),ii={name:"MenuUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ai=["aria-hidden","aria-label"],li=["fill","width","height"],ri={d:"M7,15L12,10L17,15H7Z"},ni={key:0};function si(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-up-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ri,[e.title?(s(),c("title",ni,$(e.title),1)):z("",!0)])],8,li))],16,ai)}const ce=x(ii,[["render",si]]),oi={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ci=["aria-hidden","aria-label"],di=["fill","width","height"],ui={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},pi={key:0};function fi(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ui,[e.title?(s(),c("title",pi,$(e.title),1)):z("",!0)])],8,di))],16,ci)}const Re=x(oi,[["render",fi]]),Ae={"file-picker__file-icon":"_file-picker__file-icon_1aykw_9","file-picker__file-icon--primary":"_file-picker__file-icon--primary_1aykw_22","file-picker__file-icon-overlay":"_file-picker__file-icon-overlay_1aykw_26"},mi=H({__name:"FilePreview",props:{node:{},cropImagePreviews:{type:Boolean}},setup(t){const i=t,e=L(Ae),{previewURL:a,previewLoaded:l}=Tt(Se(i,"node"),b(()=>({cropPreview:i.cropImagePreviews}))),r=b(()=>i.node.type===j.File),n=b(()=>{if(i.node.type!==j.Folder)return null;if(i.node.attributes?.["is-encrypted"]===1)return ot;if(i.node.attributes?.["is-tag"])return ct;const u=Object.values(i.node.attributes?.["share-types"]||{}).flat();if(u.some(p=>p===Le.Link||p===Le.Email))return dt;if(u.length>0)return Ce;switch(i.node.attributes?.["mount-type"]){case"external":case"external-session":return pt;case"group":return ut;case"shared":return Ce}return null});return(u,p)=>(s(),c("div",{style:Ze(d(l)?{backgroundImage:`url(${d(a)})`}:void 0),class:U(e.value["file-picker__file-icon"])},[d(l)?z("",!0):(s(),c(M,{key:0},[r.value?(s(),C(fe,{key:0,size:32})):(s(),c(M,{key:1},[n.value?(s(),C(d(xe),{key:0,class:U(e.value["file-picker__file-icon-overlay"]),inline:"",path:n.value,size:16},null,8,["class","path"])):z("",!0),_(Re,{class:U(e.value["file-picker__file-icon--primary"]),size:32},null,8,["class"])],64))],64))],6))}}),hi=["tabindex","aria-selected","data-filename"],vi={class:"row-name"},gi={class:"file-picker__name-container","data-testid":"row-name"},yi=["title","textContent"],bi=["textContent"],wi={class:"row-size"},ki={class:"row-modified"},_i=H({__name:"FileListRow",props:{allowPickDirectory:{type:Boolean},selected:{type:Boolean},showCheckbox:{type:Boolean},canPick:{type:Boolean},node:{},cropImagePreviews:{type:Boolean}},emits:["update:selected","enterDirectory"],setup(t,{emit:i}){const e=t,a=i,l=b(()=>e.node.mtime??0),r=b(()=>Xe(e.node.displayname)),n=b(()=>e.node.displayname.slice(0,r.value?-r.value.length:void 0)),u=b(()=>e.node.type===j.Folder),p=b(()=>e.canPick&&(e.allowPickDirectory||!u.value)),o=b(()=>(e.node.permissions&$e.READ)===$e.READ);function g(){p.value&&a("update:selected",!e.selected)}function y(){u.value?o.value&&a("enterDirectory",e.node):g()}function v(B){B.key==="Enter"&&y()}return(B,V)=>(s(),c("tr",D({tabindex:t.showCheckbox&&!u.value?void 0:0,"aria-selected":p.value?t.selected:void 0,class:["file-picker__row",[{"file-picker__row--selected":t.selected&&!t.showCheckbox,"file-picker__row--not-navigatable":u.value&&!o.value,"file-picker__row--not-pickable":!p.value}]],"data-filename":t.node.basename,"data-testid":"file-list-row"},Oe({click:y,...!t.showCheckbox||u.value?{keydown:v}:{}},!0)),[t.showCheckbox?(s(),c("td",{key:0,class:"row-checkbox",onClick:K(()=>{},["stop"])},[_(d(Ne),{"aria-label":d(h)("Select the row for {nodename}",{nodename:n.value}),disabled:!p.value,"data-testid":"row-checkbox",modelValue:t.selected,"onUpdate:modelValue":g},null,8,["aria-label","disabled","modelValue"])])):z("",!0),f("td",vi,[f("div",gi,[_(mi,{node:t.node,cropImagePreviews:t.cropImagePreviews},null,8,["node","cropImagePreviews"]),f("div",{class:"file-picker__file-name",title:n.value,textContent:$(n.value)},null,8,yi),f("div",{class:"file-picker__file-extension",textContent:$(r.value)},null,8,bi)])]),f("td",wi,$(d(it)(t.node.size||0)),1),f("td",ki,[_(d(lt),{timestamp:l.value,ignoreSeconds:""},null,8,["timestamp"])])],16,hi))}}),Ci=x(_i,[["__scopeId","data-v-7857e8bd"]]),Li={"aria-hidden":"true",class:"file-picker__row loading-row"},$i={key:0,class:"row-checkbox"},zi={class:"row-name"},Bi={class:"row-wrapper"},Fi=H({__name:"LoadingTableRow",props:{showCheckbox:{type:Boolean}},setup(t){return(i,e)=>(s(),c("tr",Li,[t.showCheckbox?(s(),c("td",$i,[...e[0]||(e[0]=[f("span",null,null,-1)])])):z("",!0),f("td",zi,[f("div",Bi,[f("span",{class:U(d(Ae)["file-picker__file-icon"])},null,2),e[1]||(e[1]=f("span",null,null,-1))])]),e[2]||(e[2]=f("td",{class:"row-size"},[f("span")],-1)),e[3]||(e[3]=f("td",{class:"row-modified"},[f("span")],-1))]))}}),Pi=x(Fi,[["__scopeId","data-v-1f96131b"]]);function He(){const t=Ie("files","config",null),i=L(t?.show_hidden??!0),e=L(t?.sort_favorites_first??!0),a=L(t?.crop_image_previews??!0);return J(async()=>{if(De())G.debug("Skip loading files settings - currently on public share");else try{const{data:l}=await Ve.get(me("/apps/files/api/v1/configs"));i.value=l?.data?.show_hidden??!1,e.value=l?.data?.sort_favorites_first??!0,a.value=l?.data?.crop_image_previews??!0}catch(l){G.error("Could not load files settings",{error:l}),he(h("Could not load files settings"))}}),{showHiddenFiles:i,sortFavoritesFirst:e,cropImagePreviews:a}}function Si(t){const i=o=>o==="asc"?"ascending":o==="desc"?"descending":"none",e=Ie("files","viewConfigs",null),a=L({sortBy:e?.files?.sorting_mode??"basename",order:i(e?.files?.sorting_direction??"asc")}),l=L({sortBy:e?.recent?.sorting_mode??"basename",order:i(e?.recent?.sorting_direction??"asc")}),r=L({sortBy:e?.favorites?.sorting_mode??"basename",order:i(e?.favorites?.sorting_direction??"asc")});J(async()=>{if(De())G.debug("Skip loading files views - currently on public share");else try{const{data:o}=await Ve.get(me("/apps/files/api/v1/views"));a.value={sortBy:o?.data?.files?.sorting_mode??"basename",order:i(o?.data?.files?.sorting_direction)},r.value={sortBy:o?.data?.favorites?.sorting_mode??"basename",order:i(o?.data?.favorites?.sorting_direction)},l.value={sortBy:o?.data?.recent?.sorting_mode??"basename",order:i(o?.data?.recent?.sorting_direction)}}catch(o){G.error("Could not load files views",{error:o}),he(h("Could not load files views"))}});const n=b(()=>O(t||"files")==="files"?a.value:O(t)==="recent"?l.value:r.value),u=b(()=>n.value.sortBy),p=b(()=>n.value.order);return{filesViewConfig:a,favoritesViewConfig:r,recentViewConfig:l,currentConfig:n,sortBy:u,order:p}}const Ni={key:0,class:"row-checkbox"},xi={class:"hidden-visually"},Vi=["aria-sort"],Ii={class:"header-wrapper"},Di={key:2,style:{width:"44px"}},Mi=["aria-sort"],Ri={key:2,style:{width:"44px"}},Ai=["aria-sort"],Hi={key:2,style:{width:"44px"}},Ei=H({__name:"FileList",props:pe({currentView:{},multiselect:{type:Boolean},allowPickDirectory:{type:Boolean},loading:{type:Boolean},files:{},canPick:{type:Function}},{path:{required:!0},pathModifiers:{},selectedFiles:{required:!0},selectedFilesModifiers:{}}),emits:["update:path","update:selectedFiles"],setup(t){const i=ue(t,"path"),e=ue(t,"selectedFiles"),a=t,l=L(),{currentConfig:r}=Si(a.currentView),n=b(()=>l.value??r.value),u=b(()=>n.value.sortBy==="basename"?n.value.order==="none"?void 0:n.value.order:void 0),p=b(()=>n.value.sortBy==="size"?n.value.order==="none"?void 0:n.value.order:void 0),o=b(()=>n.value.sortBy==="mtime"?n.value.order==="none"?void 0:n.value.order:void 0);function g(F){n.value.sortBy===F?n.value.order==="ascending"?l.value={sortBy:n.value.sortBy,order:"descending"}:l.value={sortBy:n.value.sortBy,order:"ascending"}:l.value={sortBy:F,order:"ascending"}}const{sortFavoritesFirst:y,cropImagePreviews:v}=He(),B=b(()=>at(a.files,{sortFoldersFirst:!0,sortFavoritesFirst:y.value,sortingOrder:n.value.order==="descending"?"desc":"asc",sortingMode:n.value.sortBy})),V=b(()=>a.files.filter(F=>a.allowPickDirectory||F.type!==j.Folder)),te=b(()=>!a.loading&&e.value.length>0&&e.value.length>=V.value.length);function W(){e.value.lengthP.path!==F.path):a.multiselect?e.value=[...e.value,F]:e.value=[F]}function ae(F){i.value=F.path}const T=L(4),E=L();{const F=()=>qe(()=>{const P=E.value?.parentElement?.children||[];let S=E.value?.parentElement?.clientHeight||450;for(let R=0;R{window.addEventListener("resize",F),F()}),Te(()=>{window.removeEventListener("resize",F)})}return(F,P)=>(s(),c("div",{ref_key:"fileContainer",ref:E,class:"file-picker__files"},[f("table",null,[f("thead",null,[f("tr",null,[t.multiselect?(s(),c("th",Ni,[f("span",xi,$(d(h)("Select entry")),1),t.multiselect?(s(),C(d(Ne),{key:0,"aria-label":d(h)("Select all entries"),"data-testid":"select-all-checkbox",modelValue:te.value,"onUpdate:modelValue":W},null,8,["aria-label","modelValue"])):z("",!0)])):z("",!0),f("th",{"aria-sort":u.value,class:"row-name"},[f("div",Ii,[P[3]||(P[3]=f("span",{class:"file-picker__header-preview"},null,-1)),_(d(Z),{"data-test":"file-picker_sort-name",variant:"tertiary",wide:"",onClick:P[0]||(P[0]=S=>g("basename"))},{icon:w(()=>[u.value==="ascending"?(s(),C(ce,{key:0,size:20})):u.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Di))]),default:w(()=>[q(" "+$(d(h)("Name")),1)]),_:1})])],8,Vi),f("th",{"aria-sort":p.value,class:"row-size"},[_(d(Z),{variant:"tertiary",wide:"",onClick:P[1]||(P[1]=S=>g("size"))},{icon:w(()=>[p.value==="ascending"?(s(),C(ce,{key:0,size:20})):p.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Ri))]),default:w(()=>[q(" "+$(d(h)("Size")),1)]),_:1})],8,Mi),f("th",{"aria-sort":o.value,class:"row-modified"},[_(d(Z),{variant:"tertiary",wide:"",onClick:P[2]||(P[2]=S=>g("mtime"))},{icon:w(()=>[o.value==="ascending"?(s(),C(ce,{key:0,size:20})):o.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Hi))]),default:w(()=>[q(" "+$(d(h)("Modified")),1)]),_:1})],8,Ai)])]),f("tbody",null,[t.loading?(s(!0),c(M,{key:0},Q(T.value,S=>(s(),C(Pi,{key:S,showCheckbox:t.multiselect},null,8,["showCheckbox"]))),128)):(s(!0),c(M,{key:1},Q(B.value,S=>(s(),C(Ci,{key:S.fileid||S.path,allowPickDirectory:t.allowPickDirectory,showCheckbox:t.multiselect,canPick:(t.multiselect||e.value.length===0||e.value.includes(S))&&(t.canPick===void 0||t.canPick(S)),selected:e.value.includes(S),node:S,cropImagePreviews:d(v),"onUpdate:selected":R=>ie(S),onEnterDirectory:ae},null,8,["allowPickDirectory","showCheckbox","canPick","selected","node","cropImagePreviews","onUpdate:selected"]))),128))])])],512))}}),Ui=x(Ei,[["__scopeId","data-v-412efd5c"]]),Wi={name:"HomeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ti=["aria-hidden","aria-label"],qi=["fill","width","height"],Oi={d:"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"},Zi={key:0};function ji(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon home-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Oi,[e.title?(s(),c("title",Zi,$(e.title),1)):z("",!0)])],8,qi))],16,Ti)}const Gi=x(Wi,[["render",ji]]),Ji={name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ki=["aria-hidden","aria-label"],Qi=["fill","width","height"],Xi={d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"},Yi={key:0};function ea(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon plus-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Xi,[e.title?(s(),c("title",Yi,$(e.title),1)):z("",!0)])],8,Qi))],16,Ki)}const ta=x(Ji,[["render",ea]]),ia=H({__name:"FilePickerBreadcrumbs",props:pe({showMenu:{type:Boolean}},{path:{required:!0},pathModifiers:{}}),emits:pe(["createNode"],["update:path"]),setup(t,{emit:i}){const e=ue(t,"path"),a=i,l=L(!1),r=L(""),n=We("nameInput");function u(){const g=r.value.trim(),y=n.value?.$el?.querySelector("input");let v="";try{et(g)}catch(B){if(!(B instanceof tt))throw B;switch(B.reason){case se.Character:v=h('"{char}" is not allowed inside a folder name.',{char:B.segment});break;case se.ReservedName:v=h('"{segment}" is a reserved name and not allowed for folder names.',{segment:B.segment});break;case se.Extension:v=h('Folder names must not end with "{extension}".',{extension:B.segment});break;default:v=h("Invalid folder name.")}}return y&&y.setCustomValidity(v),v===""}function p(){const g=r.value.trim();u()&&(l.value=!1,a("createNode",g),r.value="")}const o=b(()=>e.value.split("/").filter(g=>g!=="").map((g,y,v)=>({name:g,path:"/"+v.slice(0,y+1).join("/")})));return(g,y)=>(s(),C(d(Ht),{class:"file-picker__breadcrumbs"},Fe({default:w(()=>[_(d(Y),{name:d(h)("All files"),title:d(h)("Home"),onClick:y[0]||(y[0]=v=>e.value="/")},{icon:w(()=>[_(Gi,{size:20})]),_:1},8,["name","title"]),(s(!0),c(M,null,Q(o.value,v=>(s(),C(d(Y),{key:v.path,name:v.name,title:v.path,onClick:B=>e.value=v.path},null,8,["name","title","onClick"]))),128))]),_:2},[t.showMenu?{name:"actions",fn:w(()=>[_(d(ve),{open:l.value,"onUpdate:open":y[2]||(y[2]=v=>l.value=v),"aria-label":d(h)("Create directory"),forceMenu:!0,forceName:!0,menuName:d(h)("New"),variant:"secondary",onClose:y[3]||(y[3]=v=>r.value="")},{icon:w(()=>[_(ta,{size:20})]),default:w(()=>[_(d(ht),{ref_key:"nameInput",ref:n,modelValue:r.value,"onUpdate:modelValue":[y[1]||(y[1]=v=>r.value=v),u],label:d(h)("New folder"),placeholder:d(h)("New folder name"),onSubmit:p},{icon:w(()=>[_(Re,{size:20})]),_:1},8,["modelValue","label","placeholder"])]),_:1},8,["open","aria-label","menuName"])]),key:"0"}:void 0]),1024))}}),aa=x(ia,[["__scopeId","data-v-b448b141"]]),la={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ra=["aria-hidden","aria-label"],na=["fill","width","height"],sa={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},oa={key:0};function ca(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon close-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",sa,[e.title?(s(),c("title",oa,$(e.title),1)):z("",!0)])],8,na))],16,ra)}const da=x(la,[["render",ca]]),ua={name:"MagnifyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pa=["aria-hidden","aria-label"],fa=["fill","width","height"],ma={d:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},ha={key:0};function va(t,i,e,a,l,r){return s(),c("span",D(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon magnify-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ma,[e.title?(s(),c("title",ha,$(e.title),1)):z("",!0)])],8,fa))],16,pa)}const ga=x(ua,[["render",va]]);function ya(t){const i=[{id:"files",label:h("All files"),icon:rt},{id:"recent",label:h("Recent"),icon:nt},{id:"favorites",label:h("Favorites"),icon:st}],e=t.value?i.filter(({id:a})=>a==="files"):i;return{allViews:i,availableViews:e}}const ba={key:0,class:"file-picker__side"},wa=H({__name:"FilePickerNavigation",props:{currentView:{},filterString:{},isCollapsed:{type:Boolean},disabledNavigation:{type:Boolean}},emits:["update:currentView","update:filterString"],setup(t,{emit:i}){const e=t,a=i,{availableViews:l}=ya(L(Qe()===null)),r=b(()=>l.filter(u=>u.id===e.currentView)[0]??l[0]),n=u=>a("update:filterString",u.toString());return(u,p)=>(s(),c(M,null,[_(d(yt),{class:"file-picker__filter-input",label:d(h)("Filter file list"),showTrailingButton:!!t.filterString,modelValue:t.filterString,"onUpdate:modelValue":n,onTrailingButtonClick:p[0]||(p[0]=o=>n(""))},{"trailing-button-icon":w(()=>[_(da,{size:16})]),default:w(()=>[_(ga,{size:16})]),_:1},8,["label","showTrailingButton","modelValue"]),d(l).length>1&&!t.disabledNavigation?(s(),c(M,{key:0},[t.isCollapsed?(s(),C(d(gt),{key:1,"aria-label":d(h)("Current view selector"),clearable:!1,searchable:!1,options:d(l),modelValue:r.value,"onUpdate:modelValue":p[1]||(p[1]=o=>a("update:currentView",o.id))},null,8,["aria-label","options","modelValue"])):(s(),c("ul",ba,[(s(!0),c(M,null,Q(d(l),o=>(s(),c("li",{key:o.id},[_(d(Z),{variant:t.currentView===o.id?"primary":"tertiary",wide:!0,onClick:g=>u.$emit("update:currentView",o.id)},{icon:w(()=>[_(d(xe),{path:o.icon,size:20},null,8,["path"])]),default:w(()=>[q(" "+$(o.label),1)]),_:2},1032,["variant","onClick"])]))),128))]))],64)):z("",!0)],64))}}),ka=x(wa,[["__scopeId","data-v-e1c54e23"]]);async function _a({client:t,signal:i}){const e=Math.round(Date.now()/1e3)-1209600,{data:a}=await t.search("/",{signal:i,details:!0,data:kt(e)});return a.results.map(l=>ye(l))}async function Ca({client:t,path:i,signal:e}){const a=(await t.getDirectoryContents(X(ge,i),{signal:e,details:!0,includeSelf:!0,data:Me()})).data.map(l=>ye(l));return{contents:a.filter(({path:l})=>l!==i),folder:a.find(({path:l})=>i===l)}}async function La(t,i){const{data:e}=await t.stat(X(ge,i),{details:!0,data:Me()});return ye(e)}function $a(t,i){const e=bt(),a=de([]),l=de(null),r=L(!0);let n;async function u(o){const g=X(i.value,o);await e.createDirectory(X(ge,g));const y=await La(e,g);return a.value=[...a.value,y],y}async function p(){n&&(n.abort(),n=void 0),n=new AbortController,r.value=!0;try{if(t.value==="favorites")a.value=await wt({client:e,path:i.value,signal:n.signal}),l.value=null;else if(t.value==="recent")a.value=await _a({client:e,signal:n.signal}),l.value=null;else{const o=await Ca({client:e,path:i.value,signal:n.signal});l.value=o.folder,a.value=o.contents}}catch(o){if(o instanceof Error&&o.name==="AbortError")return;throw o}finally{n=void 0,r.value=!1}}return Pe([t,i],()=>p()),J(()=>p()),{isLoading:r,files:a,folder:l,loadFiles:p,createDirectory:u}}function za(t){const i=b(()=>t.value.map(e=>e.split("/")));return{isSupportedMimeType:e=>{const a=e.split("/");return i.value.some(([l,r])=>(a[0]===l||l==="*")&&(a[1]===r||r==="*"))}}}const Ba={class:"file-picker__main"},Fa={key:1,class:"file-picker__view"},Pa=H({__name:"FilePicker",props:{buttons:{},name:{},allowPickDirectory:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},disabledNavigation:{type:Boolean,default:!1},filterFn:{type:Function,default:void 0},canPickFn:{type:Function,default:void 0},mimetypeFilter:{default:()=>[]},multiselect:{type:Boolean,default:!1},path:{default:void 0}},emits:["close"],setup(t,{emit:i}){const e=t,a=i,l=L(!0),r=L("files"),n=L(window?.sessionStorage.getItem("NC.FilePicker.LastPath")||"/"),u=L(""),p=b({get:()=>r.value==="files"?u.value||e.path||n.value:"/",set:k=>{u.value=k}}),o=de([]),g=L(""),{files:y,folder:v,isLoading:B,loadFiles:V,createDirectory:te}=$a(r,p);Pe([u],()=>{e.path===void 0&&u.value&&window.sessionStorage.setItem("NC.FilePicker.LastPath",u.value),o.value=[],g.value=""});let W=!1;const ie=b(()=>{const k=o.value.length===0&&e.allowPickDirectory&&v.value&&(!e.canPickFn||e.canPickFn(v.value))?[v.value]:o.value;return(typeof e.buttons=="function"?e.buttons(k,p.value,r.value):e.buttons).map(m=>({...m,disabled:m.disabled||B.value,callback:()=>{W=!0,ae(m.callback,k)}}))});async function ae(k,m){await k(m),a("close",m),W=!1}const T=b(()=>r.value==="favorites"?h("Favorites"):r.value==="recent"?h("Recent"):""),{isSupportedMimeType:E}=za(Se(e,"mimetypeFilter"));J(()=>V());const{showHiddenFiles:F}=He(),P=b(()=>{let k=y.value;return F.value||(k=k.filter(m=>!m.basename.startsWith("."))),e.mimetypeFilter.length>0&&(k=k.filter(m=>m.type==="folder"||m.mime&&E(m.mime))),g.value&&(k=k.filter(m=>m.basename.toLowerCase().includes(g.value.toLowerCase()))),e.filterFn&&(k=k.filter(m=>e.filterFn(m))),k}),S=b(()=>r.value==="files"?h("Upload some content or sync with your devices!"):r.value==="recent"?h("Files and folders you recently modified will show up here."):h("Files and folders you mark as favorite will show up here."));async function R(k){try{const m=await te(k);u.value=m.path,Ke("files:node:created",y.value.filter(I=>I.basename===k)[0])}catch(m){G.warn("Could not create new folder",{name:k,error:m}),he(h("Could not create the new folder"))}}function Ee(k){!k&&!W&&a("close")}return(k,m)=>(s(),C(d(Ye),{open:l.value,"onUpdate:open":[m[6]||(m[6]=I=>l.value=I),Ee],buttons:ie.value,name:t.name,size:"large",contentClasses:"file-picker__content",dialogClasses:"file-picker",navigationClasses:"file-picker__navigation"},{navigation:w(({isCollapsed:I})=>[_(ka,{currentView:r.value,"onUpdate:currentView":m[0]||(m[0]=le=>r.value=le),filterString:g.value,"onUpdate:filterString":m[1]||(m[1]=le=>g.value=le),isCollapsed:I,disabledNavigation:t.disabledNavigation},null,8,["currentView","filterString","isCollapsed","disabledNavigation"])]),default:w(()=>[f("div",Ba,[r.value==="files"?(s(),C(aa,{key:0,path:p.value,"onUpdate:path":m[2]||(m[2]=I=>p.value=I),showMenu:!t.noMenu,onCreateNode:R},null,8,["path","showMenu"])):(s(),c("div",Fa,[f("h3",null,$(T.value),1)])),d(B)||P.value.length>0?(s(),C(Ui,{key:2,path:p.value,"onUpdate:path":[m[3]||(m[3]=I=>p.value=I),m[5]||(m[5]=I=>r.value="files")],selectedFiles:o.value,"onUpdate:selectedFiles":m[4]||(m[4]=I=>o.value=I),allowPickDirectory:t.allowPickDirectory,currentView:r.value,files:P.value,multiselect:t.multiselect,loading:d(B),name:T.value,canPick:t.canPickFn},null,8,["path","selectedFiles","allowPickDirectory","currentView","files","multiselect","loading","name","canPick"])):g.value?(s(),C(d(we),{key:3,name:d(h)("No matching files"),description:d(h)("No files matching your filter were found.")},{icon:w(()=>[_(fe)]),_:1},8,["name","description"])):(s(),C(d(we),{key:4,name:d(h)("No files in here"),description:S.value},{icon:w(()=>[_(fe)]),_:1},8,["name","description"]))])]),_:1},8,["open","buttons","name"]))}}),al=x(Pa,[["__scopeId","data-v-39182aaf"]]);export{al as default}; +//# sourceMappingURL=FilePicker-0pVFI2AM.chunk.mjs.map diff --git a/dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.license b/dist/FilePicker-0pVFI2AM.chunk.mjs.license similarity index 95% rename from dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.license rename to dist/FilePicker-0pVFI2AM.chunk.mjs.license index f98e3d4d5ca97..43e094937d485 100644 --- a/dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.license +++ b/dist/FilePicker-0pVFI2AM.chunk.mjs.license @@ -4,7 +4,7 @@ SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors This file is generated from multiple sources. Included packages: - @nextcloud/dialogs - - version: 7.4.0 + - version: 7.4.1 - license: AGPL-3.0-or-later - @nextcloud/vue - version: 9.9.0 diff --git a/dist/FilePicker-0pVFI2AM.chunk.mjs.map b/dist/FilePicker-0pVFI2AM.chunk.mjs.map new file mode 100644 index 0000000000000..54d692a889df8 --- /dev/null +++ b/dist/FilePicker-0pVFI2AM.chunk.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"FilePicker-0pVFI2AM.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumb-3Y5NWXnV.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumbs-BaTp3Sya.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/preview.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/_plugin-vue_export-helper.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/FilePicker.mjs"],"sourcesContent":["import '../assets/NcBreadcrumb-BxhZKQlW.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, withModifiers, normalizeClass, createBlock, createSlots, withCtx, renderSlot, createTextVNode, createVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nconst _sfc_main$1 = {\n name: \"ChevronRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon chevron-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst ChevronRight = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nconst _sfc_main = {\n name: \"NcBreadcrumb\",\n components: {\n NcActions,\n ChevronRight,\n NcButton\n },\n inheritAttrs: false,\n props: {\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * Route Location the link should navigate to when clicked on.\n *\n * @see https://v3.router.vuejs.org/api/#to\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Set this prop if your app doesn't use vue-router, breadcrumbs will show as normal links.\n */\n href: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class to show an icon along name text (if forceIconText is provided, otherwise just icon).\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Enables text to accompany the icon, if the icon was provided. The text that will be displayed is the name prop.\n */\n forceIconText: {\n type: Boolean,\n default: false\n },\n /**\n * Disable dropping on this breadcrumb.\n */\n disableDrop: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Open state of the Actions menu\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"dragenter\",\n \"dragleave\",\n \"dropped\",\n \"update:open\"\n ],\n setup() {\n const crumbId = createElementId();\n return {\n actionsContainer: `.vue-crumb[data-crumb-id=\"${crumbId}\"]`,\n crumbId\n };\n },\n data() {\n return {\n /**\n * Variable to track if we hover over the breadcrumb\n */\n hovering: false\n };\n },\n computed: {\n /**\n * The attributes to pass to `router-link` or `a`\n */\n linkAttributes() {\n if (this.to) {\n return { to: this.to, ...this.$attrs };\n } else if (this.href) {\n return { href: this.href, ...this.$attrs };\n }\n return this.$attrs;\n }\n },\n methods: {\n /**\n * Function to handle changing the open state of the Actions menu\n * $emit the open state.\n *\n * @param {boolean} open The open state of the Actions menu\n */\n onOpenChange(open) {\n this.$emit(\"update:open\", open);\n },\n /**\n * Function to handle a drop on the breadcrumb.\n * $emit the event and the path, remove the hovering state.\n *\n * @param {object} e The drop event\n * @return {boolean}\n */\n dropped(e) {\n if (this.disableDrop) {\n return false;\n }\n this.$emit(\"dropped\", e, this.to || this.href);\n this.$parent.$emit(\"dropped\", e, this.to || this.href);\n this.hovering = false;\n return false;\n },\n /**\n * Add the hovering state on drag enter\n *\n * @param {DragEvent} e The drag-enter event\n */\n dragEnter(e) {\n this.$emit(\"dragenter\", e);\n if (this.disableDrop) {\n return;\n }\n this.hovering = true;\n },\n /**\n * Remove the hovering state on drag leave\n *\n * @param {DragEvent} e The drag leave event\n */\n dragLeave(e) {\n this.$emit(\"dragleave\", e);\n if (this.disableDrop) {\n return;\n }\n if (e.target.contains(e.relatedTarget) || this.$refs.crumb.contains(e.relatedTarget)) {\n return;\n }\n this.hovering = false;\n }\n }\n};\nconst _hoisted_1 = [\"data-crumb-id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_ChevronRight = resolveComponent(\"ChevronRight\");\n return openBlock(), createElementBlock(\"li\", {\n ref: \"crumb\",\n class: normalizeClass([\"vue-crumb\", [{ \"vue-crumb--hovered\": $data.hovering }, _ctx.$props.class]]),\n \"data-crumb-id\": $setup.crumbId,\n draggable: \"false\",\n onDragstart: withModifiers(() => {\n }, [\"prevent\"]),\n onDrop: _cache[0] || (_cache[0] = withModifiers((...args) => $options.dropped && $options.dropped(...args), [\"prevent\"])),\n onDragover: withModifiers(() => {\n }, [\"prevent\"]),\n onDragenter: _cache[1] || (_cache[1] = (...args) => $options.dragEnter && $options.dragEnter(...args)),\n onDragleave: _cache[2] || (_cache[2] = (...args) => $options.dragLeave && $options.dragLeave(...args))\n }, [\n ($props.name || $props.icon || _ctx.$slots.icon) && !_ctx.$slots.default ? (openBlock(), createBlock(_component_NcButton, mergeProps({\n key: 0,\n \"aria-label\": $props.icon ? $props.name : void 0,\n variant: \"tertiary\"\n }, $options.linkAttributes), createSlots({ _: 2 }, [\n _ctx.$slots.icon || $props.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n class: normalizeClass([$props.icon, \"icon\"])\n }, null, 2)\n ], true)\n ]),\n key: \"0\"\n } : void 0,\n !(_ctx.$slots.icon || $props.icon) || $props.forceIconText ? {\n name: \"default\",\n fn: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n key: \"1\"\n } : void 0\n ]), 1040, [\"aria-label\"])) : createCommentVNode(\"\", true),\n _ctx.$slots.default ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n container: $setup.actionsContainer,\n forceMenu: $props.forceMenu,\n forceName: \"\",\n menuName: $props.name,\n open: $props.open,\n title: $props.title,\n variant: \"tertiary\",\n \"onUpdate:open\": $options.onOpenChange\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"container\", \"forceMenu\", \"menuName\", \"open\", \"title\", \"onUpdate:open\"])) : createCommentVNode(\"\", true),\n createVNode(_component_ChevronRight, {\n class: \"vue-crumb__separator\",\n size: 20\n })\n ], 42, _hoisted_1);\n}\nconst NcBreadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-7cec4a3e\"]]);\nexport {\n NcBreadcrumb as N\n};\n//# sourceMappingURL=NcBreadcrumb-3Y5NWXnV.mjs.map\n","import '../assets/NcBreadcrumbs-B4eyDS9i.css';\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport debounce from \"debounce\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, Fragment, cloneVNode, h } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActions, i as isSlotPopulated } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActionLink } from \"./NcActionLink-BFiaYt9A.mjs\";\nimport { N as NcActionRouter } from \"./NcActionRouter-vYFtIOzD.mjs\";\nimport { N as NcBreadcrumb } from \"./NcBreadcrumb-3Y5NWXnV.mjs\";\nconst _sfc_main$1 = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst crumbClass = \"vue-crumb\";\nconst _sfc_main = {\n name: \"NcBreadcrumbs\",\n components: {\n NcActions,\n NcActionButton,\n NcActionRouter,\n NcActionLink,\n NcBreadcrumb,\n IconFolder\n },\n props: {\n /**\n * Set a css icon-class for the icon of the root breadcrumb to be used.\n */\n rootIcon: {\n type: String,\n default: \"icon-home\"\n },\n /**\n * Set the aria-label of the nav element.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n emits: [\"dropped\"],\n data() {\n return {\n /**\n * Array to track the hidden breadcrumbs by their index.\n * Comparing two crumbs somehow does not work, so we use the indices.\n */\n hiddenIndices: [],\n /**\n * This is the props of the middle Action menu\n * that show the ellipsised breadcrumbs\n */\n menuBreadcrumbProps: {\n // Don't show a name for this breadcrumb, only the Actions menu\n name: \"\",\n forceMenu: true,\n // Don't allow dropping directly on the actions breadcrumb\n disableDrop: true,\n // Is the menu open or not\n open: false\n },\n breadcrumbsRefs: []\n };\n },\n created() {\n window.addEventListener(\"resize\", debounce(() => {\n this.handleWindowResize();\n }, 100));\n subscribe(\"navigation-toggled\", this.delayedResize);\n },\n mounted() {\n this.handleWindowResize();\n },\n updated() {\n this.delayedResize();\n this.$nextTick(() => {\n this.hideCrumbs();\n });\n },\n beforeUnmount() {\n window.removeEventListener(\"resize\", this.handleWindowResize);\n unsubscribe(\"navigation-toggled\", this.delayedResize);\n },\n methods: {\n /**\n * Close the actions menu\n *\n * @param {object} e The event\n */\n closeActions(e) {\n if (this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)) {\n return;\n }\n this.menuBreadcrumbProps.open = false;\n },\n /**\n * Call the resize function after a delay\n */\n async delayedResize() {\n await this.$nextTick();\n this.handleWindowResize();\n },\n /**\n * Check the width of the breadcrumb and hide breadcrumbs\n * if we overflow otherwise.\n */\n handleWindowResize() {\n if (!this.$refs.container) {\n return;\n }\n const nrCrumbs = this.breadcrumbsRefs.length;\n const hiddenIndices = [];\n const availableWidth = this.$refs.container.offsetWidth;\n let totalWidth = this.getTotalWidth();\n if (this.$refs.breadcrumb__actions) {\n totalWidth += this.$refs.breadcrumb__actions.offsetWidth;\n }\n let overflow = totalWidth - availableWidth;\n overflow += overflow > 0 ? 64 : 0;\n let i = 0;\n const startIndex = Math.floor(nrCrumbs / 2);\n while (overflow > 0 && i < nrCrumbs - 2) {\n const currentIndex = startIndex + (i % 2 ? i + 1 : i) / 2 * Math.pow(-1, i + nrCrumbs % 2);\n overflow -= this.getWidth(this.breadcrumbsRefs[currentIndex]?.$el, currentIndex === this.breadcrumbsRefs.length - 1);\n hiddenIndices.push(currentIndex);\n i++;\n }\n if (!this.arraysEqual(this.hiddenIndices, hiddenIndices.sort((a, b) => a - b))) {\n this.hiddenIndices = hiddenIndices;\n }\n },\n /**\n * Checks if two arrays are equal.\n * Only works for primitive arrays, but that's enough here.\n *\n * @param {Array} a The first array\n * @param {Array} b The second array\n * @return {boolean} Wether the arrays are equal\n */\n arraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n } else if (a === b) {\n return true;\n } else if (a === null || b === null) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n },\n /**\n * Calculates the total width of all breadcrumbs\n *\n * @return {number} The total width\n */\n getTotalWidth() {\n return this.breadcrumbsRefs.reduce((width, crumb, index) => width + this.getWidth(crumb.$el, index === this.breadcrumbsRefs.length - 1), 0);\n },\n /**\n * Calculates the width of the provided element\n *\n * @param {object} el The element\n * @param {boolean} isLast Is this the last crumb\n * @return {number} The width\n */\n getWidth(el, isLast) {\n if (!el?.classList) {\n return 0;\n }\n const hide = el.classList.contains(`${crumbClass}--hidden`);\n el.style.minWidth = \"auto\";\n if (isLast) {\n el.style.maxWidth = \"210px\";\n }\n el.classList.remove(`${crumbClass}--hidden`);\n const w = el.offsetWidth;\n if (hide) {\n el.classList.add(`${crumbClass}--hidden`);\n }\n el.style.minWidth = \"\";\n el.style.maxWidth = \"\";\n return w;\n },\n /**\n * Prevents the default of a provided event\n *\n * @param {object} e The event\n * @return {boolean}\n */\n preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n }\n return false;\n },\n /**\n * Handles the drag start.\n * Prevents a breadcrumb from being draggable.\n *\n * @param {object} e The event\n * @return {boolean}\n */\n dragStart(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles when something is dropped on the breadcrumb.\n *\n * @param {object} e The drop event\n * @param {string} path The path of the breadcrumb\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n * @return {boolean}\n */\n dropped(e, path, disabled) {\n if (!disabled) {\n this.$emit(\"dropped\", e, path);\n }\n this.menuBreadcrumbProps.open = false;\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n return this.preventDefault(e);\n },\n /**\n * Handles the drag over event\n *\n * @param {object} e The drag over event\n * @return {boolean}\n */\n dragOver(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles the drag enter event\n *\n * @param {object} e The drag over event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragEnter(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.classList && target.classList.contains(crumbClass)) {\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n target.classList.add(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Handles the drag leave event\n *\n * @param {object} e The drag leave event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragLeave(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.contains(e.relatedTarget)) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.contains(e.relatedTarget)) {\n return;\n }\n if (target.classList && target.classList.contains(crumbClass)) {\n target.classList.remove(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Check for each crumb if we have to hide it and\n * add it to the array of all crumbs.\n */\n hideCrumbs() {\n this.breadcrumbsRefs.forEach((crumb, i) => {\n if (crumb?.$el?.classList) {\n if (this.hiddenIndices.includes(i)) {\n crumb.$el.classList.add(`${crumbClass}--hidden`);\n } else {\n crumb.$el.classList.remove(`${crumbClass}--hidden`);\n }\n }\n });\n },\n isBreadcrumb(vnode) {\n return vnode?.type?.name === \"NcBreadcrumb\";\n }\n },\n /**\n * The render function to display the component\n *\n * @return {object|undefined} The created VNode\n */\n render() {\n let breadcrumbs = [];\n this.$slots.default?.().forEach((vnode) => {\n if (this.isBreadcrumb(vnode)) {\n breadcrumbs.push(vnode);\n return;\n }\n if (vnode?.type === Fragment) {\n vnode?.children?.forEach?.((child) => {\n if (this.isBreadcrumb(child)) {\n breadcrumbs.push(child);\n }\n });\n }\n });\n if (breadcrumbs.length === 0) {\n return;\n }\n breadcrumbs[0] = cloneVNode(breadcrumbs[0], {\n icon: this.rootIcon,\n ref: \"breadcrumbs\"\n });\n const breadcrumbsRefs = [];\n breadcrumbs = breadcrumbs.map((crumb, index) => cloneVNode(crumb, {\n ref: (crumb2) => {\n breadcrumbsRefs[index] = crumb2;\n }\n }));\n const crumbs = [...breadcrumbs];\n if (this.hiddenIndices.length) {\n crumbs.splice(\n Math.round(breadcrumbs.length / 2),\n 0,\n // The Actions menu\n // Use a breadcrumb component for the hidden breadcrumbs\n h(NcBreadcrumb, {\n class: \"dropdown\",\n ...this.menuBreadcrumbProps,\n // Hide the dropdown menu from screen-readers,\n // since the crumbs in the menu are still in the list.\n \"aria-hidden\": true,\n // Add a ref to the Actions menu\n ref: \"actionsBreadcrumb\",\n key: \"actions-breadcrumb-1\",\n // Add handlers so the Actions menu opens on hover\n onDragenter: () => {\n this.menuBreadcrumbProps.open = true;\n },\n onDragleave: this.closeActions,\n // Make sure we keep the same open state\n // as the Actions component\n \"onUpdate:open\": (open) => {\n this.menuBreadcrumbProps.open = open;\n }\n // Add all hidden breadcrumbs as ActionRouter or ActionLink\n }, {\n default: () => this.hiddenIndices.filter((index) => index <= breadcrumbs.length - 1).map((index) => {\n const crumb = breadcrumbs[index];\n const {\n // Get the parameters from the breadcrumb component props\n to,\n href,\n disableDrop,\n name,\n // Props to forward\n ...propsToForward\n } = crumb.props;\n delete propsToForward.ref;\n let element = NcActionButton;\n let path = \"\";\n if (href) {\n element = NcActionLink;\n path = href;\n }\n if (to) {\n element = NcActionRouter;\n path = to;\n }\n const folderIcon = h(IconFolder, {\n size: 20\n });\n return h(element, {\n ...propsToForward,\n class: crumbClass,\n href: href || null,\n to: to || null,\n // Prevent the breadcrumbs from being draggable\n draggable: false,\n // Add the drag and drop handlers\n onDragstart: this.dragStart,\n onDrop: ($event) => this.dropped($event, path, disableDrop),\n onDragover: this.dragOver,\n onDragenter: ($event) => this.dragEnter($event, disableDrop),\n onDragleave: ($event) => this.dragLeave($event, disableDrop)\n }, {\n default: () => name,\n icon: () => folderIcon\n });\n })\n })\n );\n }\n const wrapper = [h(\"nav\", { \"aria-label\": this.ariaLabel }, [h(\"ul\", { class: \"breadcrumb__crumbs\" }, [crumbs])])];\n if (isSlotPopulated(this.$slots.actions?.())) {\n wrapper.push(h(\"div\", { class: \"breadcrumb__actions\", ref: \"breadcrumb__actions\" }, this.$slots.actions?.()));\n }\n this.breadcrumbsRefs = breadcrumbsRefs;\n return h(\"div\", { class: [\"breadcrumb\", { \"breadcrumb--collapsed\": this.hiddenIndices.length === breadcrumbs.length - 2 }], ref: \"container\" }, wrapper);\n }\n};\nconst NcBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-5a4d73af\"]]);\nexport {\n NcBreadcrumbs as N\n};\n//# sourceMappingURL=NcBreadcrumbs-BaTp3Sya.mjs.map\n","import { FileType } from \"@nextcloud/files\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { ref, watchEffect, toValue } from \"vue\";\nimport PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nfunction getPreviewURL(node, options = {}) {\n options = { size: 32, cropPreview: false, mimeFallback: true, ...options };\n try {\n const previewUrl = node.attributes?.previewUrl || generateUrl(\"/core/preview?fileId={fileid}\", {\n fileid: node.fileid\n });\n let url;\n try {\n url = new URL(previewUrl);\n } catch {\n url = new URL(previewUrl, window.location.origin);\n }\n url.searchParams.set(\"x\", `${options.size}`);\n url.searchParams.set(\"y\", `${options.size}`);\n url.searchParams.set(\"mimeFallback\", `${options.mimeFallback}`);\n url.searchParams.set(\"a\", options.cropPreview === true ? \"0\" : \"1\");\n url.searchParams.set(\"c\", `${node.attributes.etag}`);\n return url;\n } catch {\n return null;\n }\n}\nfunction usePreviewURL(node, options) {\n const previewURL = ref(null);\n const previewLoaded = ref(false);\n watchEffect(() => {\n previewLoaded.value = false;\n previewURL.value = getPreviewURL(toValue(node), toValue(options || {}));\n if (previewURL.value && toValue(node).type === FileType.File) {\n preloadImage(previewURL.value.href).then((success) => {\n previewLoaded.value = success;\n });\n }\n });\n return {\n previewURL,\n previewLoaded\n };\n}\nexport {\n getPreviewURL as g,\n usePreviewURL as u\n};\n//# sourceMappingURL=preview.mjs.map\n","const _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nexport {\n _export_sfc as _\n};\n//# sourceMappingURL=_plugin-vue_export-helper.mjs.map\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, ref, computed, toRef, normalizeClass, normalizeStyle, unref, Fragment, createBlock, createVNode, toHandlers, withModifiers, onMounted, toValue, useModel, onUnmounted, withCtx, createTextVNode, renderList, mergeModels, nextTick, useTemplateRef, createSlots, shallowRef, watch } from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcEmptyContent from \"@nextcloud/vue/components/NcEmptyContent\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nimport { FileType, Permission, formatFileSize, sortNodes, validateFilename, InvalidFilenameError, InvalidFilenameErrorReason } from \"@nextcloud/files\";\nimport NcButton from \"@nextcloud/vue/components/NcButton\";\nimport NcCheckboxRadioSwitch from \"@nextcloud/vue/components/NcCheckboxRadioSwitch\";\nimport { extname, join } from \"@nextcloud/paths\";\nimport NcDateTime from \"@nextcloud/vue/components/NcDateTime\";\nimport { mdiKey, mdiTagOutline, mdiLink, mdiAccountPlus, mdiAccountGroupOutline, mdiNetworkOutline, mdiFolder, mdiClock, mdiStar } from \"@mdi/js\";\nimport { ShareType } from \"@nextcloud/sharing\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/components/NcIconSvgWrapper\";\nimport { u as usePreviewURL } from \"./preview.mjs\";\nimport { t, l as logger, s as showError } from \"./index.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { isPublicShare } from \"@nextcloud/sharing/public\";\nimport NcActionInput from \"@nextcloud/vue/components/NcActionInput\";\nimport NcActions from \"@nextcloud/vue/components/NcActions\";\nimport NcBreadcrumb from \"@nextcloud/vue/components/NcBreadcrumb\";\nimport NcBreadcrumbs from \"@nextcloud/vue/components/NcBreadcrumbs\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport NcSelect from \"@nextcloud/vue/components/NcSelect\";\nimport NcTextField from \"@nextcloud/vue/components/NcTextField\";\nimport { getRecentSearch, resultToNode, defaultRootPath, getDefaultPropfind, getClient, getFavoriteNodes } from \"@nextcloud/files/dav\";\nconst _sfc_main$e = {\n name: \"FileIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$c = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$b = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$a = { d: \"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\" };\nconst _hoisted_4$a = { key: 0 };\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon file-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$a, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$a, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$b))\n ], 16, _hoisted_1$c);\n}\nconst IconFile = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$d = {\n name: \"MenuDownIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$b = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$a = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$9 = { d: \"M7,10L12,15L17,10H7Z\" };\nconst _hoisted_4$9 = { key: 0 };\nfunction _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-down-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$9, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$9, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$a))\n ], 16, _hoisted_1$b);\n}\nconst IconSortDescending = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$c = {\n name: \"MenuUpIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$a = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$9 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$8 = { d: \"M7,15L12,10L17,15H7Z\" };\nconst _hoisted_4$8 = { key: 0 };\nfunction _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-up-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$8, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$8, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$9))\n ], 16, _hoisted_1$a);\n}\nconst IconSortAscending = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$b = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$9 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$8 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$7 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4$7 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$7, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$7, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$8))\n ], 16, _hoisted_1$9);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$4]]);\nconst fileListIconStyles = {\n \"file-picker__file-icon\": \"_file-picker__file-icon_1aykw_9\",\n \"file-picker__file-icon--primary\": \"_file-picker__file-icon--primary_1aykw_22\",\n \"file-picker__file-icon-overlay\": \"_file-picker__file-icon-overlay_1aykw_26\"\n};\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n __name: \"FilePreview\",\n props: {\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const fileListIconStyles$1 = ref(fileListIconStyles);\n const {\n previewURL,\n previewLoaded\n } = usePreviewURL(toRef(props, \"node\"), computed(() => ({ cropPreview: props.cropImagePreviews })));\n const isFile = computed(() => props.node.type === FileType.File);\n const folderDecorationIcon = computed(() => {\n if (props.node.type !== FileType.Folder) {\n return null;\n }\n if (props.node.attributes?.[\"is-encrypted\"] === 1) {\n return mdiKey;\n }\n if (props.node.attributes?.[\"is-tag\"]) {\n return mdiTagOutline;\n }\n const shareTypes = Object.values(props.node.attributes?.[\"share-types\"] || {}).flat();\n if (shareTypes.some((type) => type === ShareType.Link || type === ShareType.Email)) {\n return mdiLink;\n }\n if (shareTypes.length > 0) {\n return mdiAccountPlus;\n }\n switch (props.node.attributes?.[\"mount-type\"]) {\n case \"external\":\n case \"external-session\":\n return mdiNetworkOutline;\n case \"group\":\n return mdiAccountGroupOutline;\n case \"shared\":\n return mdiAccountPlus;\n }\n return null;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n style: normalizeStyle(unref(previewLoaded) ? { backgroundImage: `url(${unref(previewURL)})` } : void 0),\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon\"])\n }, [\n !unref(previewLoaded) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n isFile.value ? (openBlock(), createBlock(IconFile, {\n key: 0,\n size: 32\n })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n folderDecorationIcon.value ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon-overlay\"]),\n inline: \"\",\n path: folderDecorationIcon.value,\n size: 16\n }, null, 8, [\"class\", \"path\"])) : createCommentVNode(\"\", true),\n createVNode(IconFolder, {\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon--primary\"]),\n size: 32\n }, null, 8, [\"class\"])\n ], 64))\n ], 64)) : createCommentVNode(\"\", true)\n ], 6);\n };\n }\n});\nconst _hoisted_1$8 = [\"tabindex\", \"aria-selected\", \"data-filename\"];\nconst _hoisted_2$7 = { class: \"row-name\" };\nconst _hoisted_3$6 = {\n class: \"file-picker__name-container\",\n \"data-testid\": \"row-name\"\n};\nconst _hoisted_4$6 = [\"title\", \"textContent\"];\nconst _hoisted_5$1 = [\"textContent\"];\nconst _hoisted_6$1 = { class: \"row-size\" };\nconst _hoisted_7$1 = { class: \"row-modified\" };\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n __name: \"FileListRow\",\n props: {\n allowPickDirectory: { type: Boolean },\n selected: { type: Boolean },\n showCheckbox: { type: Boolean },\n canPick: { type: Boolean },\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n emits: [\"update:selected\", \"enterDirectory\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const timestamp = computed(() => props.node.mtime ?? 0);\n const fileExtension = computed(() => extname(props.node.displayname));\n const displayName = computed(() => props.node.displayname.slice(0, fileExtension.value ? -fileExtension.value.length : void 0));\n const isDirectory = computed(() => props.node.type === FileType.Folder);\n const isPickable = computed(() => props.canPick && (props.allowPickDirectory || !isDirectory.value));\n const isNavigatable = computed(() => (props.node.permissions & Permission.READ) === Permission.READ);\n function toggleSelected() {\n if (!isPickable.value) {\n return;\n }\n emit2(\"update:selected\", !props.selected);\n }\n function handleClick() {\n if (isDirectory.value) {\n if (isNavigatable.value) {\n emit2(\"enterDirectory\", props.node);\n }\n } else {\n toggleSelected();\n }\n }\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n handleClick();\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", mergeProps({\n tabindex: __props.showCheckbox && !isDirectory.value ? void 0 : 0,\n \"aria-selected\": !isPickable.value ? void 0 : __props.selected,\n class: [\"file-picker__row\", [\n {\n \"file-picker__row--selected\": __props.selected && !__props.showCheckbox,\n \"file-picker__row--not-navigatable\": isDirectory.value && !isNavigatable.value,\n \"file-picker__row--not-pickable\": !isPickable.value\n }\n ]],\n \"data-filename\": __props.node.basename,\n \"data-testid\": \"file-list-row\"\n }, toHandlers({\n click: handleClick,\n /* same as tabindex -> if we hide the checkbox or this is a directory we need keyboard access to enter the directory or select the node */\n ...!__props.showCheckbox || isDirectory.value ? { keydown: handleKeyDown } : {}\n }, true)), [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", {\n key: 0,\n class: \"row-checkbox\",\n onClick: withModifiers(() => {\n }, [\"stop\"])\n }, [\n createVNode(unref(NcCheckboxRadioSwitch), {\n \"aria-label\": unref(t)(\"Select the row for {nodename}\", { nodename: displayName.value }),\n disabled: !isPickable.value,\n \"data-testid\": \"row-checkbox\",\n modelValue: __props.selected,\n \"onUpdate:modelValue\": toggleSelected\n }, null, 8, [\"aria-label\", \"disabled\", \"modelValue\"])\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_2$7, [\n createElementVNode(\"div\", _hoisted_3$6, [\n createVNode(_sfc_main$a, {\n node: __props.node,\n cropImagePreviews: __props.cropImagePreviews\n }, null, 8, [\"node\", \"cropImagePreviews\"]),\n createElementVNode(\"div\", {\n class: \"file-picker__file-name\",\n title: displayName.value,\n textContent: toDisplayString(displayName.value)\n }, null, 8, _hoisted_4$6),\n createElementVNode(\"div\", {\n class: \"file-picker__file-extension\",\n textContent: toDisplayString(fileExtension.value)\n }, null, 8, _hoisted_5$1)\n ])\n ]),\n createElementVNode(\"td\", _hoisted_6$1, toDisplayString(unref(formatFileSize)(__props.node.size || 0)), 1),\n createElementVNode(\"td\", _hoisted_7$1, [\n createVNode(unref(NcDateTime), {\n timestamp: timestamp.value,\n ignoreSeconds: \"\"\n }, null, 8, [\"timestamp\"])\n ])\n ], 16, _hoisted_1$8);\n };\n }\n});\nconst FileListRow = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"__scopeId\", \"data-v-7857e8bd\"]]);\nconst _hoisted_1$7 = {\n \"aria-hidden\": \"true\",\n class: \"file-picker__row loading-row\"\n};\nconst _hoisted_2$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_3$5 = { class: \"row-name\" };\nconst _hoisted_4$5 = { class: \"row-wrapper\" };\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n __name: \"LoadingTableRow\",\n props: {\n showCheckbox: { type: Boolean }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", _hoisted_1$7, [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", _hoisted_2$6, [..._cache[0] || (_cache[0] = [\n createElementVNode(\"span\", null, null, -1)\n ])])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_3$5, [\n createElementVNode(\"div\", _hoisted_4$5, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(fileListIconStyles)[\"file-picker__file-icon\"])\n }, null, 2),\n _cache[1] || (_cache[1] = createElementVNode(\"span\", null, null, -1))\n ])\n ]),\n _cache[2] || (_cache[2] = createElementVNode(\"td\", { class: \"row-size\" }, [\n createElementVNode(\"span\")\n ], -1)),\n _cache[3] || (_cache[3] = createElementVNode(\"td\", { class: \"row-modified\" }, [\n createElementVNode(\"span\")\n ], -1))\n ]);\n };\n }\n});\nconst LoadingTableRow = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"__scopeId\", \"data-v-1f96131b\"]]);\nfunction useFilesSettings() {\n const filesUserState = loadState(\"files\", \"config\", null);\n const showHiddenFiles = ref(filesUserState?.show_hidden ?? true);\n const sortFavoritesFirst = ref(filesUserState?.sort_favorites_first ?? true);\n const cropImagePreviews = ref(filesUserState?.crop_image_previews ?? true);\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/configs\"));\n showHiddenFiles.value = data?.data?.show_hidden ?? false;\n sortFavoritesFirst.value = data?.data?.sort_favorites_first ?? true;\n cropImagePreviews.value = data?.data?.crop_image_previews ?? true;\n } catch (error) {\n logger.error(\"Could not load files settings\", { error });\n showError(t(\"Could not load files settings\"));\n }\n } else {\n logger.debug(\"Skip loading files settings - currently on public share\");\n }\n });\n return {\n showHiddenFiles,\n sortFavoritesFirst,\n cropImagePreviews\n };\n}\nfunction useFilesViews(currentView) {\n const convertOrder = (order2) => order2 === \"asc\" ? \"ascending\" : order2 === \"desc\" ? \"descending\" : \"none\";\n const filesViewsState = loadState(\"files\", \"viewConfigs\", null);\n const filesViewConfig = ref({\n sortBy: filesViewsState?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.files?.sorting_direction ?? \"asc\")\n });\n const recentViewConfig = ref({\n sortBy: filesViewsState?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.recent?.sorting_direction ?? \"asc\")\n });\n const favoritesViewConfig = ref({\n sortBy: filesViewsState?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.favorites?.sorting_direction ?? \"asc\")\n });\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/views\"));\n filesViewConfig.value = {\n sortBy: data?.data?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.files?.sorting_direction)\n };\n favoritesViewConfig.value = {\n sortBy: data?.data?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.favorites?.sorting_direction)\n };\n recentViewConfig.value = {\n sortBy: data?.data?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.recent?.sorting_direction)\n };\n } catch (error) {\n logger.error(\"Could not load files views\", { error });\n showError(t(\"Could not load files views\"));\n }\n } else {\n logger.debug(\"Skip loading files views - currently on public share\");\n }\n });\n const currentConfig = computed(() => toValue(currentView || \"files\") === \"files\" ? filesViewConfig.value : toValue(currentView) === \"recent\" ? recentViewConfig.value : favoritesViewConfig.value);\n const sortBy = computed(() => currentConfig.value.sortBy);\n const order = computed(() => currentConfig.value.order);\n return {\n filesViewConfig,\n favoritesViewConfig,\n recentViewConfig,\n currentConfig,\n sortBy,\n order\n };\n}\nconst _hoisted_1$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_2$5 = { class: \"hidden-visually\" };\nconst _hoisted_3$4 = [\"aria-sort\"];\nconst _hoisted_4$4 = { class: \"header-wrapper\" };\nconst _hoisted_5 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_6 = [\"aria-sort\"];\nconst _hoisted_7 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_8 = [\"aria-sort\"];\nconst _hoisted_9 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n __name: \"FileList\",\n props: /* @__PURE__ */ mergeModels({\n currentView: {},\n multiselect: { type: Boolean },\n allowPickDirectory: { type: Boolean },\n loading: { type: Boolean },\n files: {},\n canPick: { type: Function }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {},\n \"selectedFiles\": { required: true },\n \"selectedFilesModifiers\": {}\n }),\n emits: [\"update:path\", \"update:selectedFiles\"],\n setup(__props) {\n const path = useModel(__props, \"path\");\n const selectedFiles = useModel(__props, \"selectedFiles\");\n const props = __props;\n const customSortingConfig = ref();\n const { currentConfig: filesAppSorting } = useFilesViews(props.currentView);\n const sortingConfig = computed(() => customSortingConfig.value ?? filesAppSorting.value);\n const sortByName = computed(() => sortingConfig.value.sortBy === \"basename\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortBySize = computed(() => sortingConfig.value.sortBy === \"size\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortByModified = computed(() => sortingConfig.value.sortBy === \"mtime\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n function toggleSorting(sortBy) {\n if (sortingConfig.value.sortBy === sortBy) {\n if (sortingConfig.value.order === \"ascending\") {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"descending\" };\n } else {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"ascending\" };\n }\n } else {\n customSortingConfig.value = { sortBy, order: \"ascending\" };\n }\n }\n const { sortFavoritesFirst, cropImagePreviews } = useFilesSettings();\n const sortedFiles = computed(() => {\n return sortNodes(props.files, {\n sortFoldersFirst: true,\n sortFavoritesFirst: sortFavoritesFirst.value,\n sortingOrder: sortingConfig.value.order === \"descending\" ? \"desc\" : \"asc\",\n sortingMode: sortingConfig.value.sortBy\n });\n });\n const selectableFiles = computed(() => props.files.filter((file) => props.allowPickDirectory || file.type !== FileType.Folder));\n const allSelected = computed(() => !props.loading && selectedFiles.value.length > 0 && selectedFiles.value.length >= selectableFiles.value.length);\n function onSelectAll() {\n if (selectedFiles.value.length < selectableFiles.value.length) {\n selectedFiles.value = [...selectableFiles.value];\n } else {\n selectedFiles.value = [];\n }\n }\n function onNodeSelected(file) {\n if (selectedFiles.value.includes(file)) {\n selectedFiles.value = selectedFiles.value.filter((f) => f.path !== file.path);\n } else {\n if (props.multiselect) {\n selectedFiles.value = [...selectedFiles.value, file];\n } else {\n selectedFiles.value = [file];\n }\n }\n }\n function onChangeDirectory(dir) {\n path.value = dir.path;\n }\n const skeletonNumber = ref(4);\n const fileContainer = ref();\n {\n const resize = () => nextTick(() => {\n const nodes = fileContainer.value?.parentElement?.children || [];\n let height = fileContainer.value?.parentElement?.clientHeight || 450;\n for (let index = 0; index < nodes.length; index++) {\n if (!fileContainer.value?.isSameNode(nodes[index])) {\n height -= nodes[index].clientHeight;\n }\n }\n skeletonNumber.value = Math.max(1, Math.floor((height - 50) / 50));\n });\n onMounted(() => {\n window.addEventListener(\"resize\", resize);\n resize();\n });\n onUnmounted(() => {\n window.removeEventListener(\"resize\", resize);\n });\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"fileContainer\",\n ref: fileContainer,\n class: \"file-picker__files\"\n }, [\n createElementVNode(\"table\", null, [\n createElementVNode(\"thead\", null, [\n createElementVNode(\"tr\", null, [\n __props.multiselect ? (openBlock(), createElementBlock(\"th\", _hoisted_1$6, [\n createElementVNode(\"span\", _hoisted_2$5, toDisplayString(unref(t)(\"Select entry\")), 1),\n __props.multiselect ? (openBlock(), createBlock(unref(NcCheckboxRadioSwitch), {\n key: 0,\n \"aria-label\": unref(t)(\"Select all entries\"),\n \"data-testid\": \"select-all-checkbox\",\n modelValue: allSelected.value,\n \"onUpdate:modelValue\": onSelectAll\n }, null, 8, [\"aria-label\", \"modelValue\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByName.value,\n class: \"row-name\"\n }, [\n createElementVNode(\"div\", _hoisted_4$4, [\n _cache[3] || (_cache[3] = createElementVNode(\"span\", { class: \"file-picker__header-preview\" }, null, -1)),\n createVNode(unref(NcButton), {\n \"data-test\": \"file-picker_sort-name\",\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => toggleSorting(\"basename\"))\n }, {\n icon: withCtx(() => [\n sortByName.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByName.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_5))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Name\")), 1)\n ]),\n _: 1\n })\n ])\n ], 8, _hoisted_3$4),\n createElementVNode(\"th\", {\n \"aria-sort\": sortBySize.value,\n class: \"row-size\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[1] || (_cache[1] = ($event) => toggleSorting(\"size\"))\n }, {\n icon: withCtx(() => [\n sortBySize.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortBySize.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_7))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Size\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_6),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByModified.value,\n class: \"row-modified\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[2] || (_cache[2] = ($event) => toggleSorting(\"mtime\"))\n }, {\n icon: withCtx(() => [\n sortByModified.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByModified.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_9))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Modified\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_8)\n ])\n ]),\n createElementVNode(\"tbody\", null, [\n __props.loading ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(skeletonNumber.value, (index) => {\n return openBlock(), createBlock(LoadingTableRow, {\n key: index,\n showCheckbox: __props.multiselect\n }, null, 8, [\"showCheckbox\"]);\n }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(sortedFiles.value, (file) => {\n return openBlock(), createBlock(FileListRow, {\n key: file.fileid || file.path,\n allowPickDirectory: __props.allowPickDirectory,\n showCheckbox: __props.multiselect,\n canPick: (__props.multiselect || selectedFiles.value.length === 0 || selectedFiles.value.includes(file)) && (__props.canPick === void 0 || __props.canPick(file)),\n selected: selectedFiles.value.includes(file),\n node: file,\n cropImagePreviews: unref(cropImagePreviews),\n \"onUpdate:selected\": ($event) => onNodeSelected(file),\n onEnterDirectory: onChangeDirectory\n }, null, 8, [\"allowPickDirectory\", \"showCheckbox\", \"canPick\", \"selected\", \"node\", \"cropImagePreviews\", \"onUpdate:selected\"]);\n }), 128))\n ])\n ])\n ], 512);\n };\n }\n});\nconst FileList = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"__scopeId\", \"data-v-412efd5c\"]]);\nconst _sfc_main$6 = {\n name: \"HomeIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$4 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon home-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$4))\n ], 16, _hoisted_1$5);\n}\nconst IconHome = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$5 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon plus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$4);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerBreadcrumbs\",\n props: /* @__PURE__ */ mergeModels({\n showMenu: { type: Boolean }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"createNode\"], [\"update:path\"]),\n setup(__props, { emit: __emit }) {\n const path = useModel(__props, \"path\");\n const emit2 = __emit;\n const actionsOpen = ref(false);\n const newNodeName = ref(\"\");\n const nameInput = useTemplateRef(\"nameInput\");\n function validateInput() {\n const name = newNodeName.value.trim();\n const input = nameInput.value?.$el?.querySelector(\"input\");\n let validity = \"\";\n try {\n validateFilename(name);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n validity = t('\"{char}\" is not allowed inside a folder name.', { char: error.segment });\n break;\n case InvalidFilenameErrorReason.ReservedName:\n validity = t('\"{segment}\" is a reserved name and not allowed for folder names.', { segment: error.segment });\n break;\n case InvalidFilenameErrorReason.Extension:\n validity = t('Folder names must not end with \"{extension}\".', { extension: error.segment });\n break;\n default:\n validity = t(\"Invalid folder name.\");\n }\n }\n if (input) {\n input.setCustomValidity(validity);\n }\n return validity === \"\";\n }\n function onSubmit() {\n const name = newNodeName.value.trim();\n if (validateInput()) {\n actionsOpen.value = false;\n emit2(\"createNode\", name);\n newNodeName.value = \"\";\n }\n }\n const pathElements = computed(() => path.value.split(\"/\").filter((v) => v !== \"\").map((v, i, elements) => ({\n name: v,\n path: \"/\" + elements.slice(0, i + 1).join(\"/\")\n })));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcBreadcrumbs), { class: \"file-picker__breadcrumbs\" }, createSlots({\n default: withCtx(() => [\n createVNode(unref(NcBreadcrumb), {\n name: unref(t)(\"All files\"),\n title: unref(t)(\"Home\"),\n onClick: _cache[0] || (_cache[0] = ($event) => path.value = \"/\")\n }, {\n icon: withCtx(() => [\n createVNode(IconHome, { size: 20 })\n ]),\n _: 1\n }, 8, [\"name\", \"title\"]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(pathElements.value, (dir) => {\n return openBlock(), createBlock(unref(NcBreadcrumb), {\n key: dir.path,\n name: dir.name,\n title: dir.path,\n onClick: ($event) => path.value = dir.path\n }, null, 8, [\"name\", \"title\", \"onClick\"]);\n }), 128))\n ]),\n _: 2\n }, [\n __props.showMenu ? {\n name: \"actions\",\n fn: withCtx(() => [\n createVNode(unref(NcActions), {\n open: actionsOpen.value,\n \"onUpdate:open\": _cache[2] || (_cache[2] = ($event) => actionsOpen.value = $event),\n \"aria-label\": unref(t)(\"Create directory\"),\n forceMenu: true,\n forceName: true,\n menuName: unref(t)(\"New\"),\n variant: \"secondary\",\n onClose: _cache[3] || (_cache[3] = ($event) => newNodeName.value = \"\")\n }, {\n icon: withCtx(() => [\n createVNode(IconPlus, { size: 20 })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcActionInput), {\n ref_key: \"nameInput\",\n ref: nameInput,\n modelValue: newNodeName.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event) => newNodeName.value = $event),\n validateInput\n ],\n label: unref(t)(\"New folder\"),\n placeholder: unref(t)(\"New folder name\"),\n onSubmit\n }, {\n icon: withCtx(() => [\n createVNode(IconFolder, { size: 20 })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"label\", \"placeholder\"])\n ]),\n _: 1\n }, 8, [\"open\", \"aria-label\", \"menuName\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1024);\n };\n }\n});\nconst FilePickerBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"__scopeId\", \"data-v-b448b141\"]]);\nconst _sfc_main$3 = {\n name: \"CloseIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon close-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst IconClose = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$2 = {\n name: \"MagnifyIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon magnify-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$2);\n}\nconst IconMagnify = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render]]);\nfunction useViews(isAnonymous) {\n const allViews = [\n {\n id: \"files\",\n label: t(\"All files\"),\n icon: mdiFolder\n },\n {\n id: \"recent\",\n label: t(\"Recent\"),\n icon: mdiClock\n },\n {\n id: \"favorites\",\n label: t(\"Favorites\"),\n icon: mdiStar\n }\n ];\n const availableViews = isAnonymous.value ? allViews.filter(({ id }) => id === \"files\") : allViews;\n return {\n allViews,\n availableViews\n };\n}\nconst _hoisted_1$1 = {\n key: 0,\n class: \"file-picker__side\"\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerNavigation\",\n props: {\n currentView: {},\n filterString: {},\n isCollapsed: { type: Boolean },\n disabledNavigation: { type: Boolean }\n },\n emits: [\"update:currentView\", \"update:filterString\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const { availableViews } = useViews(ref(getCurrentUser() === null));\n const currentViewObject = computed(() => availableViews.filter((v) => v.id === props.currentView)[0] ?? availableViews[0]);\n const updateFilterValue = (value) => emit2(\"update:filterString\", value.toString());\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(unref(NcTextField), {\n class: \"file-picker__filter-input\",\n label: unref(t)(\"Filter file list\"),\n showTrailingButton: !!__props.filterString,\n modelValue: __props.filterString,\n \"onUpdate:modelValue\": updateFilterValue,\n onTrailingButtonClick: _cache[0] || (_cache[0] = ($event) => updateFilterValue(\"\"))\n }, {\n \"trailing-button-icon\": withCtx(() => [\n createVNode(IconClose, { size: 16 })\n ]),\n default: withCtx(() => [\n createVNode(IconMagnify, { size: 16 })\n ]),\n _: 1\n }, 8, [\"label\", \"showTrailingButton\", \"modelValue\"]),\n unref(availableViews).length > 1 && !__props.disabledNavigation ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n !__props.isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_1$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(availableViews), (view) => {\n return openBlock(), createElementBlock(\"li\", {\n key: view.id\n }, [\n createVNode(unref(NcButton), {\n variant: __props.currentView === view.id ? \"primary\" : \"tertiary\",\n wide: true,\n onClick: ($event) => _ctx.$emit(\"update:currentView\", view.id)\n }, {\n icon: withCtx(() => [\n createVNode(unref(NcIconSvgWrapper), {\n path: view.icon,\n size: 20\n }, null, 8, [\"path\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(view.label), 1)\n ]),\n _: 2\n }, 1032, [\"variant\", \"onClick\"])\n ]);\n }), 128))\n ])) : (openBlock(), createBlock(unref(NcSelect), {\n key: 1,\n \"aria-label\": unref(t)(\"Current view selector\"),\n clearable: false,\n searchable: false,\n options: unref(availableViews),\n modelValue: currentViewObject.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => emit2(\"update:currentView\", $event.id))\n }, null, 8, [\"aria-label\", \"options\", \"modelValue\"]))\n ], 64)) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nconst FilePickerNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-e1c54e23\"]]);\nasync function getRecentNodes({ client, signal }) {\n const lastTwoWeek = Math.round(Date.now() / 1e3) - 60 * 60 * 24 * 14;\n const { data } = await client.search(\"/\", {\n signal,\n details: true,\n data: getRecentSearch(lastTwoWeek)\n });\n return data.results.map((result) => resultToNode(result));\n}\nasync function getNodes({ client, path, signal }) {\n const results = await client.getDirectoryContents(join(defaultRootPath, path), {\n signal,\n details: true,\n includeSelf: true,\n data: getDefaultPropfind()\n });\n const nodes = results.data.map((result) => resultToNode(result));\n return {\n contents: nodes.filter(({ path: nodePath }) => nodePath !== path),\n folder: nodes.find(({ path: nodePath }) => path === nodePath)\n };\n}\nasync function getFile(client, path) {\n const { data } = await client.stat(join(defaultRootPath, path), {\n details: true,\n data: getDefaultPropfind()\n });\n return resultToNode(data);\n}\nfunction useDAVFiles(currentView, currentPath) {\n const client = getClient();\n const files = shallowRef([]);\n const folder = shallowRef(null);\n const isLoading = ref(true);\n let abortController;\n async function createDirectory(name) {\n const path = join(currentPath.value, name);\n await client.createDirectory(join(defaultRootPath, path));\n const directory = await getFile(client, path);\n files.value = [...files.value, directory];\n return directory;\n }\n async function loadDAVFiles() {\n if (abortController) {\n abortController.abort();\n abortController = void 0;\n }\n abortController = new AbortController();\n isLoading.value = true;\n try {\n if (currentView.value === \"favorites\") {\n files.value = await getFavoriteNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = null;\n } else if (currentView.value === \"recent\") {\n files.value = await getRecentNodes({ client, signal: abortController.signal });\n folder.value = null;\n } else {\n const content = await getNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = content.folder;\n files.value = content.contents;\n }\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n return;\n }\n throw error;\n } finally {\n abortController = void 0;\n isLoading.value = false;\n }\n }\n watch([currentView, currentPath], () => loadDAVFiles());\n onMounted(() => loadDAVFiles());\n return {\n isLoading,\n files,\n folder,\n loadFiles: loadDAVFiles,\n createDirectory\n };\n}\nfunction useMimeFilter(allowedMIMETypes) {\n const splittedTypes = computed(() => allowedMIMETypes.value.map((filter) => filter.split(\"/\")));\n const isSupportedMimeType = (mime) => {\n const mimeTypeArray = mime.split(\"/\");\n return splittedTypes.value.some(([type, subtype]) => (\n // check mime type matches or is wildcard\n (mimeTypeArray[0] === type || type === \"*\") && (mimeTypeArray[1] === subtype || subtype === \"*\")\n ));\n };\n return {\n isSupportedMimeType\n };\n}\nconst _hoisted_1 = { class: \"file-picker__main\" };\nconst _hoisted_2 = {\n key: 1,\n class: \"file-picker__view\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"FilePicker\",\n props: {\n buttons: {},\n name: {},\n allowPickDirectory: { type: Boolean, default: false },\n noMenu: { type: Boolean, default: false },\n disabledNavigation: { type: Boolean, default: false },\n filterFn: { type: Function, default: void 0 },\n canPickFn: { type: Function, default: void 0 },\n mimetypeFilter: { default: () => [] },\n multiselect: { type: Boolean, default: false },\n path: { default: void 0 }\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit$1 = __emit;\n const isOpen = ref(true);\n const currentView = ref(\"files\");\n const savedPath = ref(window?.sessionStorage.getItem(\"NC.FilePicker.LastPath\") || \"/\");\n const navigatedPath = ref(\"\");\n const currentPath = computed({\n get: () => {\n return currentView.value === \"files\" ? navigatedPath.value || props.path || savedPath.value : \"/\";\n },\n set: (path) => {\n navigatedPath.value = path;\n }\n });\n const selectedFiles = shallowRef([]);\n const filterString = ref(\"\");\n const {\n files,\n folder: currentFolder,\n isLoading,\n loadFiles,\n createDirectory\n } = useDAVFiles(currentView, currentPath);\n watch([navigatedPath], () => {\n if (props.path === void 0 && navigatedPath.value) {\n window.sessionStorage.setItem(\"NC.FilePicker.LastPath\", navigatedPath.value);\n }\n selectedFiles.value = [];\n filterString.value = \"\";\n });\n let isHandlingCallback = false;\n const dialogButtons = computed(() => {\n const nodes = selectedFiles.value.length === 0 && props.allowPickDirectory && currentFolder.value && (!props.canPickFn || props.canPickFn(currentFolder.value)) ? [currentFolder.value] : selectedFiles.value;\n const buttons = typeof props.buttons === \"function\" ? props.buttons(nodes, currentPath.value, currentView.value) : props.buttons;\n return buttons.map((button) => ({\n ...button,\n disabled: button.disabled || isLoading.value,\n callback: () => {\n isHandlingCallback = true;\n handleButtonClick(button.callback, nodes);\n }\n }));\n });\n async function handleButtonClick(callback, nodes) {\n await callback(nodes);\n emit$1(\"close\", nodes);\n isHandlingCallback = false;\n }\n const viewHeadline = computed(() => currentView.value === \"favorites\" ? t(\"Favorites\") : currentView.value === \"recent\" ? t(\"Recent\") : \"\");\n const { isSupportedMimeType } = useMimeFilter(toRef(props, \"mimetypeFilter\"));\n onMounted(() => loadFiles());\n const { showHiddenFiles } = useFilesSettings();\n const filteredFiles = computed(() => {\n let filtered = files.value;\n if (!showHiddenFiles.value) {\n filtered = filtered.filter((file) => !file.basename.startsWith(\".\"));\n }\n if (props.mimetypeFilter.length > 0) {\n filtered = filtered.filter((file) => file.type === \"folder\" || file.mime && isSupportedMimeType(file.mime));\n }\n if (filterString.value) {\n filtered = filtered.filter((file) => file.basename.toLowerCase().includes(filterString.value.toLowerCase()));\n }\n if (props.filterFn) {\n filtered = filtered.filter((f) => props.filterFn(f));\n }\n return filtered;\n });\n const noFilesDescription = computed(() => {\n if (currentView.value === \"files\") {\n return t(\"Upload some content or sync with your devices!\");\n } else if (currentView.value === \"recent\") {\n return t(\"Files and folders you recently modified will show up here.\");\n } else {\n return t(\"Files and folders you mark as favorite will show up here.\");\n }\n });\n async function onCreateFolder(name) {\n try {\n const folder = await createDirectory(name);\n navigatedPath.value = folder.path;\n emit(\"files:node:created\", files.value.filter((file) => file.basename === name)[0]);\n } catch (error) {\n logger.warn(\"Could not create new folder\", { name, error });\n showError(t(\"Could not create the new folder\"));\n }\n }\n function handleClose(open) {\n if (!open && !isHandlingCallback) {\n emit$1(\"close\");\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n open: isOpen.value,\n \"onUpdate:open\": [\n _cache[6] || (_cache[6] = ($event) => isOpen.value = $event),\n handleClose\n ],\n buttons: dialogButtons.value,\n name: __props.name,\n size: \"large\",\n contentClasses: \"file-picker__content\",\n dialogClasses: \"file-picker\",\n navigationClasses: \"file-picker__navigation\"\n }, {\n navigation: withCtx(({ isCollapsed }) => [\n createVNode(FilePickerNavigation, {\n currentView: currentView.value,\n \"onUpdate:currentView\": _cache[0] || (_cache[0] = ($event) => currentView.value = $event),\n filterString: filterString.value,\n \"onUpdate:filterString\": _cache[1] || (_cache[1] = ($event) => filterString.value = $event),\n isCollapsed,\n disabledNavigation: __props.disabledNavigation\n }, null, 8, [\"currentView\", \"filterString\", \"isCollapsed\", \"disabledNavigation\"])\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1, [\n currentView.value === \"files\" ? (openBlock(), createBlock(FilePickerBreadcrumbs, {\n key: 0,\n path: currentPath.value,\n \"onUpdate:path\": _cache[2] || (_cache[2] = ($event) => currentPath.value = $event),\n showMenu: !__props.noMenu,\n onCreateNode: onCreateFolder\n }, null, 8, [\"path\", \"showMenu\"])) : (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n createElementVNode(\"h3\", null, toDisplayString(viewHeadline.value), 1)\n ])),\n unref(isLoading) || filteredFiles.value.length > 0 ? (openBlock(), createBlock(FileList, {\n key: 2,\n path: currentPath.value,\n \"onUpdate:path\": [\n _cache[3] || (_cache[3] = ($event) => currentPath.value = $event),\n _cache[5] || (_cache[5] = ($event) => currentView.value = \"files\")\n ],\n selectedFiles: selectedFiles.value,\n \"onUpdate:selectedFiles\": _cache[4] || (_cache[4] = ($event) => selectedFiles.value = $event),\n allowPickDirectory: __props.allowPickDirectory,\n currentView: currentView.value,\n files: filteredFiles.value,\n multiselect: __props.multiselect,\n loading: unref(isLoading),\n name: viewHeadline.value,\n canPick: __props.canPickFn\n }, null, 8, [\"path\", \"selectedFiles\", \"allowPickDirectory\", \"currentView\", \"files\", \"multiselect\", \"loading\", \"name\", \"canPick\"])) : filterString.value ? (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 3,\n name: unref(t)(\"No matching files\"),\n description: unref(t)(\"No files matching your filter were found.\")\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"])) : (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 4,\n name: unref(t)(\"No files in here\"),\n description: noFilesDescription.value\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"]))\n ])\n ]),\n _: 1\n }, 8, [\"open\", \"buttons\", \"name\"]);\n };\n }\n});\nconst FilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-39182aaf\"]]);\nexport {\n FilePicker as default\n};\n//# sourceMappingURL=FilePicker.mjs.map\n"],"names":["_sfc_main$1","_hoisted_1$1","_hoisted_2","_hoisted_3","_hoisted_4","_sfc_render$1","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","ChevronRight","_export_sfc","_sfc_main","NcActions","NcButton","crumbId","createElementId","open","e","_hoisted_1","_sfc_render","_component_NcButton","resolveComponent","_component_NcActions","_component_ChevronRight","normalizeClass","withModifiers","args","createBlock","createSlots","withCtx","renderSlot","createTextVNode","createVNode","NcBreadcrumb","IconFolder","crumbClass","NcActionButton","NcActionRouter","NcActionLink","debounce","subscribe","unsubscribe","nrCrumbs","hiddenIndices","availableWidth","totalWidth","overflow","i","startIndex","currentIndex","a","b","width","crumb","index","el","isLast","hide","w","path","disabled","crumbs","target","vnode","breadcrumbs","Fragment","child","cloneVNode","breadcrumbsRefs","crumb2","h","to","href","disableDrop","name","propsToForward","element","folderIcon","wrapper","isSlotPopulated","NcBreadcrumbs","queue","PQueue","preloadImage","url","resolve","promise","image","getPreviewURL","node","options","previewUrl","generateUrl","usePreviewURL","previewURL","ref","previewLoaded","watchEffect","toValue","FileType","success","sfc","props","key","val","_sfc_main$e","_hoisted_1$c","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$7","IconFile","_sfc_main$d","_hoisted_1$b","_hoisted_2$a","_hoisted_3$9","_hoisted_4$9","_sfc_render$6","IconSortDescending","_sfc_main$c","_hoisted_1$a","_hoisted_2$9","_hoisted_3$8","_hoisted_4$8","_sfc_render$5","IconSortAscending","_sfc_main$b","_hoisted_1$9","_hoisted_2$8","_hoisted_3$7","_hoisted_4$7","_sfc_render$4","fileListIconStyles","_sfc_main$a","defineComponent","__props","fileListIconStyles$1","toRef","computed","isFile","folderDecorationIcon","mdiKey","mdiTagOutline","shareTypes","type","ShareType","mdiLink","mdiAccountPlus","mdiNetworkOutline","mdiAccountGroupOutline","normalizeStyle","unref","NcIconSvgWrapper","_hoisted_1$8","_hoisted_2$7","_hoisted_3$6","_hoisted_4$6","_hoisted_5$1","_hoisted_6$1","_hoisted_7$1","_sfc_main$9","__emit","emit2","timestamp","fileExtension","extname","displayName","isDirectory","isPickable","isNavigatable","Permission","toggleSelected","handleClick","handleKeyDown","event","toHandlers","NcCheckboxRadioSwitch","t","formatFileSize","NcDateTime","FileListRow","_hoisted_1$7","_hoisted_2$6","_hoisted_3$5","_hoisted_4$5","_sfc_main$8","LoadingTableRow","useFilesSettings","filesUserState","loadState","showHiddenFiles","sortFavoritesFirst","cropImagePreviews","onMounted","isPublicShare","logger","data","axios","error","showError","useFilesViews","currentView","convertOrder","order2","filesViewsState","filesViewConfig","recentViewConfig","favoritesViewConfig","currentConfig","sortBy","order","_hoisted_1$6","_hoisted_2$5","_hoisted_3$4","_hoisted_4$4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_sfc_main$7","mergeModels","useModel","selectedFiles","customSortingConfig","filesAppSorting","sortingConfig","sortByName","sortBySize","sortByModified","toggleSorting","sortedFiles","sortNodes","selectableFiles","file","allSelected","onSelectAll","onNodeSelected","f","onChangeDirectory","dir","skeletonNumber","fileContainer","resize","nextTick","nodes","height","onUnmounted","renderList","FileList","_sfc_main$6","_hoisted_1$5","_hoisted_2$4","_hoisted_3$3","_hoisted_4$3","_sfc_render$3","IconHome","_sfc_main$5","_hoisted_1$4","_hoisted_2$3","_hoisted_3$2","_hoisted_4$2","_sfc_render$2","IconPlus","_sfc_main$4","actionsOpen","newNodeName","nameInput","useTemplateRef","validateInput","input","validity","validateFilename","InvalidFilenameError","InvalidFilenameErrorReason","onSubmit","pathElements","v","elements","NcActionInput","FilePickerBreadcrumbs","_sfc_main$3","_hoisted_1$3","_hoisted_2$2","_hoisted_3$1","_hoisted_4$1","IconClose","_sfc_main$2","_hoisted_1$2","_hoisted_2$1","IconMagnify","useViews","isAnonymous","allViews","mdiFolder","mdiClock","mdiStar","availableViews","id","getCurrentUser","currentViewObject","updateFilterValue","value","NcTextField","NcSelect","view","FilePickerNavigation","getRecentNodes","client","signal","lastTwoWeek","getRecentSearch","result","resultToNode","getNodes","join","defaultRootPath","getDefaultPropfind","nodePath","getFile","useDAVFiles","currentPath","getClient","files","shallowRef","folder","isLoading","abortController","createDirectory","directory","loadDAVFiles","getFavoriteNodes","content","watch","useMimeFilter","allowedMIMETypes","splittedTypes","filter","mime","mimeTypeArray","subtype","emit$1","isOpen","savedPath","navigatedPath","filterString","currentFolder","loadFiles","isHandlingCallback","dialogButtons","button","handleButtonClick","callback","viewHeadline","isSupportedMimeType","filteredFiles","filtered","noFilesDescription","onCreateFolder","emit","handleClose","NcDialog","isCollapsed","NcEmptyContent","FilePicker"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file diff --git a/dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.map.license b/dist/FilePicker-0pVFI2AM.chunk.mjs.map.license similarity index 95% rename from dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.map.license rename to dist/FilePicker-0pVFI2AM.chunk.mjs.map.license index f98e3d4d5ca97..43e094937d485 100644 --- a/dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.map.license +++ b/dist/FilePicker-0pVFI2AM.chunk.mjs.map.license @@ -4,7 +4,7 @@ SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors This file is generated from multiple sources. Included packages: - @nextcloud/dialogs - - version: 7.4.0 + - version: 7.4.1 - license: AGPL-3.0-or-later - @nextcloud/vue - version: 9.9.0 diff --git a/dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs b/dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs deleted file mode 100644 index b987924d7f6c1..0000000000000 --- a/dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{r as re,o as s,f as c,c as C,q as Pe,w,i as ne,g as f,y as U,j as q,t as $,m as I,h as z,k as _,L as K,F as M,ag as be,ac as A,E as Ue,a8 as O,l as L,b as H,z as Fe,S as J,u as d,v as b,ah as de,n as ue,p as We,B as Q,s as pe,ai as Te,D as qe,N as Oe,O as Ze,a5 as Se}from"./Web-DYqXJUev.chunk.mjs";import{u as je,d as Ge,s as Je,b as me,f as Ke,n as X,a as Qe,m as Xe}from"./index-Cp0kcsps.chunk.mjs";import{N as Ye}from"./index-CmDAUQql.chunk.mjs";import{N as we}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{v as et,I as tt,e as se,f as it,s as at}from"./index-BGv_Bbjs.chunk.mjs";import{N as Z}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as Ne}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as ke,a as _e,_ as lt}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{w as rt,x as nt,y as st,z as ot,A as ct,B as dt,C as Ce,t as ut,c as pt}from"./mdi-B6W_Xvj-.chunk.mjs";import{S as Le}from"./ShareType-suoNfd7y.chunk.mjs";import{_ as ee,c as ft,N as xe}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{F as j,P as $e}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{P as mt,a as ht}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import{t as h,l as G,a as he}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{c as Ve}from"./index-CkGt55pS.chunk.mjs";import{l as De,i as Ie}from"./public-C1mLBHT3.chunk.mjs";import{b as ve,p as vt}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{N as ze}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{N as gt}from"./index-BDlLVKOD.chunk.mjs";import{_ as yt}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{g as bt,h as wt,i as ge,j as kt,r as ye,k as Me}from"./dav-DpOWisxz.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const _t={name:"ChevronRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ct=["aria-hidden","aria-label"],Lt=["fill","width","height"],$t={d:"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"},zt={key:0};function Bt(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon chevron-right-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",$t,[e.title?(s(),c("title",zt,$(e.title),1)):z("",!0)])],8,Lt))],16,Ct)}const Pt=ee(_t,[["render",Bt]]),Ft={name:"NcBreadcrumb",components:{NcActions:ve,ChevronRight:Pt,NcButton:Z},inheritAttrs:!1,props:{name:{type:String,required:!0},title:{type:String,default:null},to:{type:[String,Object],default:void 0},href:{type:String,default:void 0},icon:{type:String,default:""},forceIconText:{type:Boolean,default:!1},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1},class:{type:[String,Array,Object],default:""}},emits:["dragenter","dragleave","dropped","update:open"],setup(){const t=ft();return{actionsContainer:`.vue-crumb[data-crumb-id="${t}"]`,crumbId:t}},data(){return{hovering:!1}},computed:{linkAttributes(){return this.to?{to:this.to,...this.$attrs}:this.href?{href:this.href,...this.$attrs}:this.$attrs}},methods:{onOpenChange(t){this.$emit("update:open",t)},dropped(t){return this.disableDrop||(this.$emit("dropped",t,this.to||this.href),this.$parent.$emit("dropped",t,this.to||this.href),this.hovering=!1),!1},dragEnter(t){this.$emit("dragenter",t),!this.disableDrop&&(this.hovering=!0)},dragLeave(t){this.$emit("dragleave",t),!this.disableDrop&&(t.target.contains(t.relatedTarget)||this.$refs.crumb.contains(t.relatedTarget)||(this.hovering=!1))}}},St=["data-crumb-id"];function Nt(t,i,e,a,l,r){const n=re("NcButton"),u=re("NcActions"),p=re("ChevronRight");return s(),c("li",{ref:"crumb",class:U(["vue-crumb",[{"vue-crumb--hovered":l.hovering},t.$props.class]]),"data-crumb-id":a.crumbId,draggable:"false",onDragstart:K(()=>{},["prevent"]),onDrop:i[0]||(i[0]=K((...o)=>r.dropped&&r.dropped(...o),["prevent"])),onDragover:K(()=>{},["prevent"]),onDragenter:i[1]||(i[1]=(...o)=>r.dragEnter&&r.dragEnter(...o)),onDragleave:i[2]||(i[2]=(...o)=>r.dragLeave&&r.dragLeave(...o))},[(e.name||e.icon||t.$slots.icon)&&!t.$slots.default?(s(),C(n,I({key:0,"aria-label":e.icon?e.name:void 0,variant:"tertiary"},r.linkAttributes),Pe({_:2},[t.$slots.icon||e.icon?{name:"icon",fn:w(()=>[ne(t.$slots,"icon",{},()=>[f("span",{class:U([e.icon,"icon"])},null,2)],!0)]),key:"0"}:void 0,!(t.$slots.icon||e.icon)||e.forceIconText?{name:"default",fn:w(()=>[q($(e.name),1)]),key:"1"}:void 0]),1040,["aria-label"])):z("",!0),t.$slots.default?(s(),C(u,{key:1,ref:"actions",container:a.actionsContainer,forceMenu:e.forceMenu,forceName:"",menuName:e.name,open:e.open,title:e.title,variant:"tertiary","onUpdate:open":r.onOpenChange},{icon:w(()=>[ne(t.$slots,"menu-icon",{},void 0,!0)]),default:w(()=>[ne(t.$slots,"default",{},void 0,!0)]),_:3},8,["container","forceMenu","menuName","open","title","onUpdate:open"])):z("",!0),_(p,{class:"vue-crumb__separator",size:20})],42,St)}const Y=ee(Ft,[["render",Nt],["__scopeId","data-v-7cec4a3e"]]),xt={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Vt=["aria-hidden","aria-label"],Dt=["fill","width","height"],It={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},Mt={key:0};function Rt(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",It,[e.title?(s(),c("title",Mt,$(e.title),1)):z("",!0)])],8,Dt))],16,Vt)}const Be=ee(xt,[["render",Rt]]),N="vue-crumb",At={name:"NcBreadcrumbs",components:{NcActions:ve,NcActionButton:ze,NcActionRouter:_e,NcActionLink:ke,NcBreadcrumb:Y,IconFolder:Be},props:{rootIcon:{type:String,default:"icon-home"},ariaLabel:{type:String,default:null}},emits:["dropped"],data(){return{hiddenIndices:[],menuBreadcrumbProps:{name:"",forceMenu:!0,disableDrop:!0,open:!1},breadcrumbsRefs:[]}},created(){window.addEventListener("resize",Ge(()=>{this.handleWindowResize()},100)),Je("navigation-toggled",this.delayedResize)},mounted(){this.handleWindowResize()},updated(){this.delayedResize(),this.$nextTick(()=>{this.hideCrumbs()})},beforeUnmount(){window.removeEventListener("resize",this.handleWindowResize),je("navigation-toggled",this.delayedResize)},methods:{closeActions(t){this.$refs.actionsBreadcrumb.$el.contains(t.relatedTarget)||(this.menuBreadcrumbProps.open=!1)},async delayedResize(){await this.$nextTick(),this.handleWindowResize()},handleWindowResize(){if(!this.$refs.container)return;const t=this.breadcrumbsRefs.length,i=[],e=this.$refs.container.offsetWidth;let a=this.getTotalWidth();this.$refs.breadcrumb__actions&&(a+=this.$refs.breadcrumb__actions.offsetWidth);let l=a-e;l+=l>0?64:0;let r=0;const n=Math.floor(t/2);for(;l>0&&ru-p))||(this.hiddenIndices=i)},arraysEqual(t,i){if(t.length!==i.length)return!1;if(t===i)return!0;if(t===null||i===null)return!1;for(let e=0;et+this.getWidth(i.$el,e===this.breadcrumbsRefs.length-1),0)},getWidth(t,i){if(!t?.classList)return 0;const e=t.classList.contains(`${N}--hidden`);t.style.minWidth="auto",i&&(t.style.maxWidth="210px"),t.classList.remove(`${N}--hidden`);const a=t.offsetWidth;return e&&t.classList.add(`${N}--hidden`),t.style.minWidth="",t.style.maxWidth="",a},preventDefault(t){return t.preventDefault&&t.preventDefault(),!1},dragStart(t){return this.preventDefault(t)},dropped(t,i,e){e||this.$emit("dropped",t,i),this.menuBreadcrumbProps.open=!1;const a=document.querySelectorAll(`.${N}`);for(const l of a)l.classList.remove(`${N}--hovered`);return this.preventDefault(t)},dragOver(t){return this.preventDefault(t)},dragEnter(t,i){if(!i&&t.target.closest){const e=t.target.closest(`.${N}`);if(e.classList&&e.classList.contains(N)){const a=document.querySelectorAll(`.${N}`);for(const l of a)l.classList.remove(`${N}--hovered`);e.classList.add(`${N}--hovered`)}}},dragLeave(t,i){if(!i&&!t.target.contains(t.relatedTarget)&&t.target.closest){const e=t.target.closest(`.${N}`);if(e.contains(t.relatedTarget))return;e.classList&&e.classList.contains(N)&&e.classList.remove(`${N}--hovered`)}},hideCrumbs(){this.breadcrumbsRefs.forEach((t,i)=>{t?.$el?.classList&&(this.hiddenIndices.includes(i)?t.$el.classList.add(`${N}--hidden`):t.$el.classList.remove(`${N}--hidden`))})},isBreadcrumb(t){return t?.type?.name==="NcBreadcrumb"}},render(){let t=[];if(this.$slots.default?.().forEach(l=>{if(this.isBreadcrumb(l)){t.push(l);return}l?.type===M&&l?.children?.forEach?.(r=>{this.isBreadcrumb(r)&&t.push(r)})}),t.length===0)return;t[0]=be(t[0],{icon:this.rootIcon,ref:"breadcrumbs"});const i=[];t=t.map((l,r)=>be(l,{ref:n=>{i[r]=n}}));const e=[...t];this.hiddenIndices.length&&e.splice(Math.round(t.length/2),0,A(Y,{class:"dropdown",...this.menuBreadcrumbProps,"aria-hidden":!0,ref:"actionsBreadcrumb",key:"actions-breadcrumb-1",onDragenter:()=>{this.menuBreadcrumbProps.open=!0},onDragleave:this.closeActions,"onUpdate:open":l=>{this.menuBreadcrumbProps.open=l}},{default:()=>this.hiddenIndices.filter(l=>l<=t.length-1).map(l=>{const r=t[l],{to:n,href:u,disableDrop:p,name:o,...g}=r.props;delete g.ref;let y=ze,v="";u&&(y=ke,v=u),n&&(y=_e,v=n);const B=A(Be,{size:20});return A(y,{...g,class:N,href:u||null,to:n||null,draggable:!1,onDragstart:this.dragStart,onDrop:V=>this.dropped(V,v,p),onDragover:this.dragOver,onDragenter:V=>this.dragEnter(V,p),onDragleave:V=>this.dragLeave(V,p)},{default:()=>o,icon:()=>B})})}));const a=[A("nav",{"aria-label":this.ariaLabel},[A("ul",{class:"breadcrumb__crumbs"},[e])])];return vt(this.$slots.actions?.())&&a.push(A("div",{class:"breadcrumb__actions",ref:"breadcrumb__actions"},this.$slots.actions?.())),this.breadcrumbsRefs=i,A("div",{class:["breadcrumb",{"breadcrumb--collapsed":this.hiddenIndices.length===t.length-2}],ref:"container"},a)}},Ht=ee(At,[["__scopeId","data-v-5a4d73af"]]),Et=new mt({concurrency:5});function Ut(t){const{resolve:i,promise:e}=Promise.withResolvers();return Et.add(()=>{const a=new Image;return a.onerror=()=>i(!1),a.onload=()=>i(!0),a.src=t,e}),e}function Wt(t,i={}){i={size:32,cropPreview:!1,mimeFallback:!0,...i};try{const e=t.attributes?.previewUrl||me("/core/preview?fileId={fileid}",{fileid:t.fileid});let a;try{a=new URL(e)}catch{a=new URL(e,window.location.origin)}return a.searchParams.set("x",`${i.size}`),a.searchParams.set("y",`${i.size}`),a.searchParams.set("mimeFallback",`${i.mimeFallback}`),a.searchParams.set("a",i.cropPreview===!0?"0":"1"),a.searchParams.set("c",`${t.attributes.etag}`),a}catch{return null}}function Tt(t,i){const e=L(null),a=L(!1);return Ue(()=>{a.value=!1,e.value=Wt(O(t),O(i||{})),e.value&&O(t).type===j.File&&Ut(e.value.href).then(l=>{a.value=l})}),{previewURL:e,previewLoaded:a}}const x=(t,i)=>{const e=t.__vccOpts||t;for(const[a,l]of i)e[a]=l;return e},qt={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ot=["aria-hidden","aria-label"],Zt=["fill","width","height"],jt={d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"},Gt={key:0};function Jt(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon file-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",jt,[e.title?(s(),c("title",Gt,$(e.title),1)):z("",!0)])],8,Zt))],16,Ot)}const fe=x(qt,[["render",Jt]]),Kt={name:"MenuDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Qt=["aria-hidden","aria-label"],Xt=["fill","width","height"],Yt={d:"M7,10L12,15L17,10H7Z"},ei={key:0};function ti(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-down-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Yt,[e.title?(s(),c("title",ei,$(e.title),1)):z("",!0)])],8,Xt))],16,Qt)}const oe=x(Kt,[["render",ti]]),ii={name:"MenuUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ai=["aria-hidden","aria-label"],li=["fill","width","height"],ri={d:"M7,15L12,10L17,15H7Z"},ni={key:0};function si(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-up-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ri,[e.title?(s(),c("title",ni,$(e.title),1)):z("",!0)])],8,li))],16,ai)}const ce=x(ii,[["render",si]]),oi={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ci=["aria-hidden","aria-label"],di=["fill","width","height"],ui={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},pi={key:0};function fi(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ui,[e.title?(s(),c("title",pi,$(e.title),1)):z("",!0)])],8,di))],16,ci)}const Re=x(oi,[["render",fi]]),Ae={"file-picker__file-icon":"_file-picker__file-icon_1aykw_9","file-picker__file-icon--primary":"_file-picker__file-icon--primary_1aykw_22","file-picker__file-icon-overlay":"_file-picker__file-icon-overlay_1aykw_26"},mi=H({__name:"FilePreview",props:{node:{},cropImagePreviews:{type:Boolean}},setup(t){const i=t,e=L(Ae),{previewURL:a,previewLoaded:l}=Tt(Se(i,"node"),b(()=>({cropPreview:i.cropImagePreviews}))),r=b(()=>i.node.type===j.File),n=b(()=>{if(i.node.type!==j.Folder)return null;if(i.node.attributes?.["is-encrypted"]===1)return ot;if(i.node.attributes?.["is-tag"])return ct;const u=Object.values(i.node.attributes?.["share-types"]||{}).flat();if(u.some(p=>p===Le.Link||p===Le.Email))return dt;if(u.length>0)return Ce;switch(i.node.attributes?.["mount-type"]){case"external":case"external-session":return pt;case"group":return ut;case"shared":return Ce}return null});return(u,p)=>(s(),c("div",{style:Ze(d(l)?{backgroundImage:`url(${d(a)})`}:void 0),class:U(e.value["file-picker__file-icon"])},[d(l)?z("",!0):(s(),c(M,{key:0},[r.value?(s(),C(fe,{key:0,size:32})):(s(),c(M,{key:1},[n.value?(s(),C(d(xe),{key:0,class:U(e.value["file-picker__file-icon-overlay"]),inline:"",path:n.value,size:16},null,8,["class","path"])):z("",!0),_(Re,{class:U(e.value["file-picker__file-icon--primary"]),size:32},null,8,["class"])],64))],64))],6))}}),hi=["tabindex","aria-selected","data-filename"],vi={class:"row-name"},gi={class:"file-picker__name-container","data-testid":"row-name"},yi=["title","textContent"],bi=["textContent"],wi={class:"row-size"},ki={class:"row-modified"},_i=H({__name:"FileListRow",props:{allowPickDirectory:{type:Boolean},selected:{type:Boolean},showCheckbox:{type:Boolean},canPick:{type:Boolean},node:{},cropImagePreviews:{type:Boolean}},emits:["update:selected","enterDirectory"],setup(t,{emit:i}){const e=t,a=i,l=b(()=>e.node.mtime??0),r=b(()=>Xe(e.node.displayname)),n=b(()=>e.node.displayname.slice(0,r.value?-r.value.length:void 0)),u=b(()=>e.node.type===j.Folder),p=b(()=>e.canPick&&(e.allowPickDirectory||!u.value)),o=b(()=>(e.node.permissions&$e.READ)===$e.READ);function g(){p.value&&a("update:selected",!e.selected)}function y(){u.value?o.value&&a("enterDirectory",e.node):g()}function v(B){B.key==="Enter"&&y()}return(B,V)=>(s(),c("tr",I({tabindex:t.showCheckbox&&!u.value?void 0:0,"aria-selected":p.value?t.selected:void 0,class:["file-picker__row",[{"file-picker__row--selected":t.selected&&!t.showCheckbox,"file-picker__row--not-navigatable":u.value&&!o.value,"file-picker__row--not-pickable":!p.value}]],"data-filename":t.node.basename,"data-testid":"file-list-row"},Oe({click:y,...!t.showCheckbox||u.value?{keydown:v}:{}},!0)),[t.showCheckbox?(s(),c("td",{key:0,class:"row-checkbox",onClick:K(()=>{},["stop"])},[_(d(Ne),{"aria-label":d(h)("Select the row for {nodename}",{nodename:n.value}),disabled:!p.value,"data-testid":"row-checkbox",modelValue:t.selected,"onUpdate:modelValue":g},null,8,["aria-label","disabled","modelValue"])])):z("",!0),f("td",vi,[f("div",gi,[_(mi,{node:t.node,cropImagePreviews:t.cropImagePreviews},null,8,["node","cropImagePreviews"]),f("div",{class:"file-picker__file-name",title:n.value,textContent:$(n.value)},null,8,yi),f("div",{class:"file-picker__file-extension",textContent:$(r.value)},null,8,bi)])]),f("td",wi,$(d(it)(t.node.size||0)),1),f("td",ki,[_(d(lt),{timestamp:l.value,ignoreSeconds:""},null,8,["timestamp"])])],16,hi))}}),Ci=x(_i,[["__scopeId","data-v-7857e8bd"]]),Li={"aria-hidden":"true",class:"file-picker__row loading-row"},$i={key:0,class:"row-checkbox"},zi={class:"row-name"},Bi={class:"row-wrapper"},Pi=H({__name:"LoadingTableRow",props:{showCheckbox:{type:Boolean}},setup(t){return(i,e)=>(s(),c("tr",Li,[t.showCheckbox?(s(),c("td",$i,[...e[0]||(e[0]=[f("span",null,null,-1)])])):z("",!0),f("td",zi,[f("div",Bi,[f("span",{class:U(d(Ae)["file-picker__file-icon"])},null,2),e[1]||(e[1]=f("span",null,null,-1))])]),e[2]||(e[2]=f("td",{class:"row-size"},[f("span")],-1)),e[3]||(e[3]=f("td",{class:"row-modified"},[f("span")],-1))]))}}),Fi=x(Pi,[["__scopeId","data-v-1f96131b"]]);function He(){const t=De("files","config",null),i=L(t?.show_hidden??!0),e=L(t?.sort_favorites_first??!0),a=L(t?.crop_image_previews??!0);return J(async()=>{if(Ie())G.debug("Skip loading files settings - currently on public share");else try{const{data:l}=await Ve.get(me("/apps/files/api/v1/configs"));i.value=l?.data?.show_hidden??!1,e.value=l?.data?.sort_favorites_first??!0,a.value=l?.data?.crop_image_previews??!0}catch(l){G.error("Could not load files settings",{error:l}),he(h("Could not load files settings"))}}),{showHiddenFiles:i,sortFavoritesFirst:e,cropImagePreviews:a}}function Si(t){const i=o=>o==="asc"?"ascending":o==="desc"?"descending":"none",e=De("files","viewConfigs",null),a=L({sortBy:e?.files?.sorting_mode??"basename",order:i(e?.files?.sorting_direction??"asc")}),l=L({sortBy:e?.recent?.sorting_mode??"basename",order:i(e?.recent?.sorting_direction??"asc")}),r=L({sortBy:e?.favorites?.sorting_mode??"basename",order:i(e?.favorites?.sorting_direction??"asc")});J(async()=>{if(Ie())G.debug("Skip loading files views - currently on public share");else try{const{data:o}=await Ve.get(me("/apps/files/api/v1/views"));a.value={sortBy:o?.data?.files?.sorting_mode??"basename",order:i(o?.data?.files?.sorting_direction)},r.value={sortBy:o?.data?.favorites?.sorting_mode??"basename",order:i(o?.data?.favorites?.sorting_direction)},l.value={sortBy:o?.data?.recent?.sorting_mode??"basename",order:i(o?.data?.recent?.sorting_direction)}}catch(o){G.error("Could not load files views",{error:o}),he(h("Could not load files views"))}});const n=b(()=>O(t||"files")==="files"?a.value:O(t)==="recent"?l.value:r.value),u=b(()=>n.value.sortBy),p=b(()=>n.value.order);return{filesViewConfig:a,favoritesViewConfig:r,recentViewConfig:l,currentConfig:n,sortBy:u,order:p}}const Ni={key:0,class:"row-checkbox"},xi={class:"hidden-visually"},Vi=["aria-sort"],Di={class:"header-wrapper"},Ii={key:2,style:{width:"44px"}},Mi=["aria-sort"],Ri={key:2,style:{width:"44px"}},Ai=["aria-sort"],Hi={key:2,style:{width:"44px"}},Ei=H({__name:"FileList",props:pe({currentView:{},multiselect:{type:Boolean},allowPickDirectory:{type:Boolean},loading:{type:Boolean},files:{},canPick:{type:Function}},{path:{required:!0},pathModifiers:{},selectedFiles:{required:!0},selectedFilesModifiers:{}}),emits:["update:path","update:selectedFiles"],setup(t){const i=ue(t,"path"),e=ue(t,"selectedFiles"),a=t,l=L(),{currentConfig:r}=Si(a.currentView),n=b(()=>l.value??r.value),u=b(()=>n.value.sortBy==="basename"?n.value.order==="none"?void 0:n.value.order:void 0),p=b(()=>n.value.sortBy==="size"?n.value.order==="none"?void 0:n.value.order:void 0),o=b(()=>n.value.sortBy==="mtime"?n.value.order==="none"?void 0:n.value.order:void 0);function g(P){n.value.sortBy===P?n.value.order==="ascending"?l.value={sortBy:n.value.sortBy,order:"descending"}:l.value={sortBy:n.value.sortBy,order:"ascending"}:l.value={sortBy:P,order:"ascending"}}const{sortFavoritesFirst:y,cropImagePreviews:v}=He(),B=b(()=>at(a.files,{sortFoldersFirst:!0,sortFavoritesFirst:y.value,sortingOrder:n.value.order==="descending"?"desc":"asc",sortingMode:n.value.sortBy})),V=b(()=>a.files.filter(P=>a.allowPickDirectory||P.type!==j.Folder)),te=b(()=>!a.loading&&e.value.length>0&&e.value.length>=V.value.length);function W(){e.value.lengthF.path!==P.path):a.multiselect?e.value=[...e.value,P]:e.value=[P]}function ae(P){i.value=P.path}const T=L(4),E=L();{const P=()=>qe(()=>{const F=E.value?.parentElement?.children||[];let S=E.value?.parentElement?.clientHeight||450;for(let R=0;R{window.addEventListener("resize",P),P()}),Te(()=>{window.removeEventListener("resize",P)})}return(P,F)=>(s(),c("div",{ref_key:"fileContainer",ref:E,class:"file-picker__files"},[f("table",null,[f("thead",null,[f("tr",null,[t.multiselect?(s(),c("th",Ni,[f("span",xi,$(d(h)("Select entry")),1),t.multiselect?(s(),C(d(Ne),{key:0,"aria-label":d(h)("Select all entries"),"data-testid":"select-all-checkbox",modelValue:te.value,"onUpdate:modelValue":W},null,8,["aria-label","modelValue"])):z("",!0)])):z("",!0),f("th",{"aria-sort":u.value,class:"row-name"},[f("div",Di,[F[3]||(F[3]=f("span",{class:"file-picker__header-preview"},null,-1)),_(d(Z),{"data-test":"file-picker_sort-name",variant:"tertiary",wide:"",onClick:F[0]||(F[0]=S=>g("basename"))},{icon:w(()=>[u.value==="ascending"?(s(),C(ce,{key:0,size:20})):u.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Ii))]),default:w(()=>[q(" "+$(d(h)("Name")),1)]),_:1})])],8,Vi),f("th",{"aria-sort":p.value,class:"row-size"},[_(d(Z),{variant:"tertiary",wide:"",onClick:F[1]||(F[1]=S=>g("size"))},{icon:w(()=>[p.value==="ascending"?(s(),C(ce,{key:0,size:20})):p.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Ri))]),default:w(()=>[q(" "+$(d(h)("Size")),1)]),_:1})],8,Mi),f("th",{"aria-sort":o.value,class:"row-modified"},[_(d(Z),{variant:"tertiary",wide:"",onClick:F[2]||(F[2]=S=>g("mtime"))},{icon:w(()=>[o.value==="ascending"?(s(),C(ce,{key:0,size:20})):o.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Hi))]),default:w(()=>[q(" "+$(d(h)("Modified")),1)]),_:1})],8,Ai)])]),f("tbody",null,[t.loading?(s(!0),c(M,{key:0},Q(T.value,S=>(s(),C(Fi,{key:S,showCheckbox:t.multiselect},null,8,["showCheckbox"]))),128)):(s(!0),c(M,{key:1},Q(B.value,S=>(s(),C(Ci,{key:S.fileid||S.path,allowPickDirectory:t.allowPickDirectory,showCheckbox:t.multiselect,canPick:(t.multiselect||e.value.length===0||e.value.includes(S))&&(t.canPick===void 0||t.canPick(S)),selected:e.value.includes(S),node:S,cropImagePreviews:d(v),"onUpdate:selected":R=>ie(S),onEnterDirectory:ae},null,8,["allowPickDirectory","showCheckbox","canPick","selected","node","cropImagePreviews","onUpdate:selected"]))),128))])])],512))}}),Ui=x(Ei,[["__scopeId","data-v-412efd5c"]]),Wi={name:"HomeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ti=["aria-hidden","aria-label"],qi=["fill","width","height"],Oi={d:"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"},Zi={key:0};function ji(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon home-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Oi,[e.title?(s(),c("title",Zi,$(e.title),1)):z("",!0)])],8,qi))],16,Ti)}const Gi=x(Wi,[["render",ji]]),Ji={name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ki=["aria-hidden","aria-label"],Qi=["fill","width","height"],Xi={d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"},Yi={key:0};function ea(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon plus-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Xi,[e.title?(s(),c("title",Yi,$(e.title),1)):z("",!0)])],8,Qi))],16,Ki)}const ta=x(Ji,[["render",ea]]),ia=H({__name:"FilePickerBreadcrumbs",props:pe({showMenu:{type:Boolean}},{path:{required:!0},pathModifiers:{}}),emits:pe(["createNode"],["update:path"]),setup(t,{emit:i}){const e=ue(t,"path"),a=i,l=L(!1),r=L(""),n=We("nameInput");function u(){const g=r.value.trim(),y=n.value?.$el?.querySelector("input");let v="";try{et(g)}catch(B){if(!(B instanceof tt))throw B;switch(B.reason){case se.Character:v=h('"{char}" is not allowed inside a folder name.',{char:B.segment});break;case se.ReservedName:v=h('"{segment}" is a reserved name and not allowed for folder names.',{segment:B.segment});break;case se.Extension:v=h('Folder names must not end with "{extension}".',{extension:B.segment});break;default:v=h("Invalid folder name.")}}return y&&y.setCustomValidity(v),v===""}function p(){const g=r.value.trim();u()&&(l.value=!1,a("createNode",g),r.value="")}const o=b(()=>e.value.split("/").filter(g=>g!=="").map((g,y,v)=>({name:g,path:"/"+v.slice(0,y+1).join("/")})));return(g,y)=>(s(),C(d(Ht),{class:"file-picker__breadcrumbs"},Pe({default:w(()=>[_(d(Y),{name:d(h)("All files"),title:d(h)("Home"),onClick:y[0]||(y[0]=v=>e.value="/")},{icon:w(()=>[_(Gi,{size:20})]),_:1},8,["name","title"]),(s(!0),c(M,null,Q(o.value,v=>(s(),C(d(Y),{key:v.path,name:v.name,title:v.path,onClick:B=>e.value=v.path},null,8,["name","title","onClick"]))),128))]),_:2},[t.showMenu?{name:"actions",fn:w(()=>[_(d(ve),{open:l.value,"onUpdate:open":y[2]||(y[2]=v=>l.value=v),"aria-label":d(h)("Create directory"),forceMenu:!0,forceName:!0,menuName:d(h)("New"),variant:"secondary",onClose:y[3]||(y[3]=v=>r.value="")},{icon:w(()=>[_(ta,{size:20})]),default:w(()=>[_(d(ht),{ref_key:"nameInput",ref:n,modelValue:r.value,"onUpdate:modelValue":[y[1]||(y[1]=v=>r.value=v),u],label:d(h)("New folder"),placeholder:d(h)("New folder name"),onSubmit:p},{icon:w(()=>[_(Re,{size:20})]),_:1},8,["modelValue","label","placeholder"])]),_:1},8,["open","aria-label","menuName"])]),key:"0"}:void 0]),1024))}}),aa=x(ia,[["__scopeId","data-v-b448b141"]]),la={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ra=["aria-hidden","aria-label"],na=["fill","width","height"],sa={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},oa={key:0};function ca(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon close-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",sa,[e.title?(s(),c("title",oa,$(e.title),1)):z("",!0)])],8,na))],16,ra)}const da=x(la,[["render",ca]]),ua={name:"MagnifyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pa=["aria-hidden","aria-label"],fa=["fill","width","height"],ma={d:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},ha={key:0};function va(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon magnify-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ma,[e.title?(s(),c("title",ha,$(e.title),1)):z("",!0)])],8,fa))],16,pa)}const ga=x(ua,[["render",va]]);function ya(t){const i=[{id:"files",label:h("All files"),icon:rt},{id:"recent",label:h("Recent"),icon:nt},{id:"favorites",label:h("Favorites"),icon:st}],e=t.value?i.filter(({id:a})=>a==="files"):i;return{allViews:i,availableViews:e}}const ba={key:0,class:"file-picker__side"},wa=H({__name:"FilePickerNavigation",props:{currentView:{},filterString:{},isCollapsed:{type:Boolean},disabledNavigation:{type:Boolean}},emits:["update:currentView","update:filterString"],setup(t,{emit:i}){const e=t,a=i,{availableViews:l}=ya(L(Qe()===null)),r=b(()=>l.filter(u=>u.id===e.currentView)[0]??l[0]),n=u=>a("update:filterString",u.toString());return(u,p)=>(s(),c(M,null,[_(d(yt),{class:"file-picker__filter-input",label:d(h)("Filter file list"),showTrailingButton:!!t.filterString,modelValue:t.filterString,"onUpdate:modelValue":n,onTrailingButtonClick:p[0]||(p[0]=o=>n(""))},{"trailing-button-icon":w(()=>[_(da,{size:16})]),default:w(()=>[_(ga,{size:16})]),_:1},8,["label","showTrailingButton","modelValue"]),d(l).length>1&&!t.disabledNavigation?(s(),c(M,{key:0},[t.isCollapsed?(s(),C(d(gt),{key:1,"aria-label":d(h)("Current view selector"),clearable:!1,searchable:!1,options:d(l),modelValue:r.value,"onUpdate:modelValue":p[1]||(p[1]=o=>a("update:currentView",o.id))},null,8,["aria-label","options","modelValue"])):(s(),c("ul",ba,[(s(!0),c(M,null,Q(d(l),o=>(s(),c("li",{key:o.id},[_(d(Z),{variant:t.currentView===o.id?"primary":"tertiary",wide:!0,onClick:g=>u.$emit("update:currentView",o.id)},{icon:w(()=>[_(d(xe),{path:o.icon,size:20},null,8,["path"])]),default:w(()=>[q(" "+$(o.label),1)]),_:2},1032,["variant","onClick"])]))),128))]))],64)):z("",!0)],64))}}),ka=x(wa,[["__scopeId","data-v-e1c54e23"]]);async function _a({client:t,signal:i}){const e=Math.round(Date.now()/1e3)-1209600,{data:a}=await t.search("/",{signal:i,details:!0,data:kt(e)});return a.results.map(l=>ye(l))}async function Ca({client:t,path:i,signal:e}){const a=(await t.getDirectoryContents(X(ge,i),{signal:e,details:!0,includeSelf:!0,data:Me()})).data.map(l=>ye(l));return{contents:a.filter(({path:l})=>l!==i),folder:a.find(({path:l})=>i===l)}}async function La(t,i){const{data:e}=await t.stat(X(ge,i),{details:!0,data:Me()});return ye(e)}function $a(t,i){const e=bt(),a=de([]),l=de(null),r=L(!0);let n;async function u(o){const g=X(i.value,o);await e.createDirectory(X(ge,g));const y=await La(e,g);return a.value=[...a.value,y],y}async function p(){n&&(n.abort(),n=void 0),n=new AbortController,r.value=!0;try{if(t.value==="favorites")a.value=await wt({client:e,path:i.value,signal:n.signal}),l.value=null;else if(t.value==="recent")a.value=await _a({client:e,signal:n.signal}),l.value=null;else{const o=await Ca({client:e,path:i.value,signal:n.signal});l.value=o.folder,a.value=o.contents}}catch(o){if(o instanceof Error&&o.name==="AbortError")return;throw o}finally{n=void 0,r.value=!1}}return Fe([t,i],()=>p()),J(()=>p()),{isLoading:r,files:a,folder:l,loadFiles:p,createDirectory:u}}function za(t){const i=b(()=>t.value.map(e=>e.split("/")));return{isSupportedMimeType:e=>{const a=e.split("/");return i.value.some(([l,r])=>(a[0]===l||l==="*")&&(a[1]===r||r==="*"))}}}const Ba={class:"file-picker__main"},Pa={key:1,class:"file-picker__view"},Fa=H({__name:"FilePicker",props:{buttons:{},name:{},allowPickDirectory:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},disabledNavigation:{type:Boolean,default:!1},filterFn:{type:Function,default:void 0},canPickFn:{type:Function,default:void 0},mimetypeFilter:{default:()=>[]},multiselect:{type:Boolean,default:!1},path:{default:void 0}},emits:["close"],setup(t,{emit:i}){const e=t,a=i,l=L(!0),r=L("files"),n=L(window?.sessionStorage.getItem("NC.FilePicker.LastPath")||"/"),u=L(""),p=b({get:()=>r.value==="files"?u.value||e.path||n.value:"/",set:k=>{u.value=k}}),o=de([]),g=L(""),{files:y,folder:v,isLoading:B,loadFiles:V,createDirectory:te}=$a(r,p);Fe([u],()=>{e.path===void 0&&u.value&&window.sessionStorage.setItem("NC.FilePicker.LastPath",u.value),o.value=[],g.value=""});let W=!1;const ie=b(()=>{const k=o.value.length===0&&e.allowPickDirectory&&v.value?[v.value]:o.value;return(typeof e.buttons=="function"?e.buttons(k,p.value,r.value):e.buttons).map(m=>({...m,disabled:m.disabled||B.value,callback:()=>{W=!0,ae(m.callback,k)}}))});async function ae(k,m){await k(m),a("close",m),W=!1}const T=b(()=>r.value==="favorites"?h("Favorites"):r.value==="recent"?h("Recent"):""),{isSupportedMimeType:E}=za(Se(e,"mimetypeFilter"));J(()=>V());const{showHiddenFiles:P}=He(),F=b(()=>{let k=y.value;return P.value||(k=k.filter(m=>!m.basename.startsWith("."))),e.mimetypeFilter.length>0&&(k=k.filter(m=>m.type==="folder"||m.mime&&E(m.mime))),g.value&&(k=k.filter(m=>m.basename.toLowerCase().includes(g.value.toLowerCase()))),e.filterFn&&(k=k.filter(m=>e.filterFn(m))),k}),S=b(()=>r.value==="files"?h("Upload some content or sync with your devices!"):r.value==="recent"?h("Files and folders you recently modified will show up here."):h("Files and folders you mark as favorite will show up here."));async function R(k){try{const m=await te(k);u.value=m.path,Ke("files:node:created",y.value.filter(D=>D.basename===k)[0])}catch(m){G.warn("Could not create new folder",{name:k,error:m}),he(h("Could not create the new folder"))}}function Ee(k){!k&&!W&&a("close")}return(k,m)=>(s(),C(d(Ye),{open:l.value,"onUpdate:open":[m[6]||(m[6]=D=>l.value=D),Ee],buttons:ie.value,name:t.name,size:"large",contentClasses:"file-picker__content",dialogClasses:"file-picker",navigationClasses:"file-picker__navigation"},{navigation:w(({isCollapsed:D})=>[_(ka,{currentView:r.value,"onUpdate:currentView":m[0]||(m[0]=le=>r.value=le),filterString:g.value,"onUpdate:filterString":m[1]||(m[1]=le=>g.value=le),isCollapsed:D,disabledNavigation:t.disabledNavigation},null,8,["currentView","filterString","isCollapsed","disabledNavigation"])]),default:w(()=>[f("div",Ba,[r.value==="files"?(s(),C(aa,{key:0,path:p.value,"onUpdate:path":m[2]||(m[2]=D=>p.value=D),showMenu:!t.noMenu,onCreateNode:R},null,8,["path","showMenu"])):(s(),c("div",Pa,[f("h3",null,$(T.value),1)])),d(B)||F.value.length>0?(s(),C(Ui,{key:2,path:p.value,"onUpdate:path":[m[3]||(m[3]=D=>p.value=D),m[5]||(m[5]=D=>r.value="files")],selectedFiles:o.value,"onUpdate:selectedFiles":m[4]||(m[4]=D=>o.value=D),allowPickDirectory:t.allowPickDirectory,currentView:r.value,files:F.value,multiselect:t.multiselect,loading:d(B),name:T.value,canPick:t.canPickFn},null,8,["path","selectedFiles","allowPickDirectory","currentView","files","multiselect","loading","name","canPick"])):g.value?(s(),C(d(we),{key:3,name:d(h)("No matching files"),description:d(h)("No files matching your filter were found.")},{icon:w(()=>[_(fe)]),_:1},8,["name","description"])):(s(),C(d(we),{key:4,name:d(h)("No files in here"),description:S.value},{icon:w(()=>[_(fe)]),_:1},8,["name","description"]))])]),_:1},8,["open","buttons","name"]))}}),al=x(Fa,[["__scopeId","data-v-4f89ed79"]]);export{al as default}; -//# sourceMappingURL=FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.map diff --git a/dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.map b/dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.map deleted file mode 100644 index c57a83f52ec26..0000000000000 --- a/dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumb-3Y5NWXnV.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumbs-BaTp3Sya.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/preview-BIbJGxXF.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/_plugin-vue_export-helper-1tPrXgE0.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/FilePicker-DWYoSaVg.mjs"],"sourcesContent":["import '../assets/NcBreadcrumb-BxhZKQlW.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, withModifiers, normalizeClass, createBlock, createSlots, withCtx, renderSlot, createTextVNode, createVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcButton } from \"./NcButton-jvoYS2my.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActions } from \"./NcActions-C-wDqSrv.mjs\";\nconst _sfc_main$1 = {\n name: \"ChevronRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon chevron-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst ChevronRight = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nconst _sfc_main = {\n name: \"NcBreadcrumb\",\n components: {\n NcActions,\n ChevronRight,\n NcButton\n },\n inheritAttrs: false,\n props: {\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * Route Location the link should navigate to when clicked on.\n *\n * @see https://v3.router.vuejs.org/api/#to\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Set this prop if your app doesn't use vue-router, breadcrumbs will show as normal links.\n */\n href: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class to show an icon along name text (if forceIconText is provided, otherwise just icon).\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Enables text to accompany the icon, if the icon was provided. The text that will be displayed is the name prop.\n */\n forceIconText: {\n type: Boolean,\n default: false\n },\n /**\n * Disable dropping on this breadcrumb.\n */\n disableDrop: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Open state of the Actions menu\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"dragenter\",\n \"dragleave\",\n \"dropped\",\n \"update:open\"\n ],\n setup() {\n const crumbId = createElementId();\n return {\n actionsContainer: `.vue-crumb[data-crumb-id=\"${crumbId}\"]`,\n crumbId\n };\n },\n data() {\n return {\n /**\n * Variable to track if we hover over the breadcrumb\n */\n hovering: false\n };\n },\n computed: {\n /**\n * The attributes to pass to `router-link` or `a`\n */\n linkAttributes() {\n if (this.to) {\n return { to: this.to, ...this.$attrs };\n } else if (this.href) {\n return { href: this.href, ...this.$attrs };\n }\n return this.$attrs;\n }\n },\n methods: {\n /**\n * Function to handle changing the open state of the Actions menu\n * $emit the open state.\n *\n * @param {boolean} open The open state of the Actions menu\n */\n onOpenChange(open) {\n this.$emit(\"update:open\", open);\n },\n /**\n * Function to handle a drop on the breadcrumb.\n * $emit the event and the path, remove the hovering state.\n *\n * @param {object} e The drop event\n * @return {boolean}\n */\n dropped(e) {\n if (this.disableDrop) {\n return false;\n }\n this.$emit(\"dropped\", e, this.to || this.href);\n this.$parent.$emit(\"dropped\", e, this.to || this.href);\n this.hovering = false;\n return false;\n },\n /**\n * Add the hovering state on drag enter\n *\n * @param {DragEvent} e The drag-enter event\n */\n dragEnter(e) {\n this.$emit(\"dragenter\", e);\n if (this.disableDrop) {\n return;\n }\n this.hovering = true;\n },\n /**\n * Remove the hovering state on drag leave\n *\n * @param {DragEvent} e The drag leave event\n */\n dragLeave(e) {\n this.$emit(\"dragleave\", e);\n if (this.disableDrop) {\n return;\n }\n if (e.target.contains(e.relatedTarget) || this.$refs.crumb.contains(e.relatedTarget)) {\n return;\n }\n this.hovering = false;\n }\n }\n};\nconst _hoisted_1 = [\"data-crumb-id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_ChevronRight = resolveComponent(\"ChevronRight\");\n return openBlock(), createElementBlock(\"li\", {\n ref: \"crumb\",\n class: normalizeClass([\"vue-crumb\", [{ \"vue-crumb--hovered\": $data.hovering }, _ctx.$props.class]]),\n \"data-crumb-id\": $setup.crumbId,\n draggable: \"false\",\n onDragstart: withModifiers(() => {\n }, [\"prevent\"]),\n onDrop: _cache[0] || (_cache[0] = withModifiers((...args) => $options.dropped && $options.dropped(...args), [\"prevent\"])),\n onDragover: withModifiers(() => {\n }, [\"prevent\"]),\n onDragenter: _cache[1] || (_cache[1] = (...args) => $options.dragEnter && $options.dragEnter(...args)),\n onDragleave: _cache[2] || (_cache[2] = (...args) => $options.dragLeave && $options.dragLeave(...args))\n }, [\n ($props.name || $props.icon || _ctx.$slots.icon) && !_ctx.$slots.default ? (openBlock(), createBlock(_component_NcButton, mergeProps({\n key: 0,\n \"aria-label\": $props.icon ? $props.name : void 0,\n variant: \"tertiary\"\n }, $options.linkAttributes), createSlots({ _: 2 }, [\n _ctx.$slots.icon || $props.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n class: normalizeClass([$props.icon, \"icon\"])\n }, null, 2)\n ], true)\n ]),\n key: \"0\"\n } : void 0,\n !(_ctx.$slots.icon || $props.icon) || $props.forceIconText ? {\n name: \"default\",\n fn: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n key: \"1\"\n } : void 0\n ]), 1040, [\"aria-label\"])) : createCommentVNode(\"\", true),\n _ctx.$slots.default ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n container: $setup.actionsContainer,\n forceMenu: $props.forceMenu,\n forceName: \"\",\n menuName: $props.name,\n open: $props.open,\n title: $props.title,\n variant: \"tertiary\",\n \"onUpdate:open\": $options.onOpenChange\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"container\", \"forceMenu\", \"menuName\", \"open\", \"title\", \"onUpdate:open\"])) : createCommentVNode(\"\", true),\n createVNode(_component_ChevronRight, {\n class: \"vue-crumb__separator\",\n size: 20\n })\n ], 42, _hoisted_1);\n}\nconst NcBreadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-7cec4a3e\"]]);\nexport {\n NcBreadcrumb as N\n};\n//# sourceMappingURL=NcBreadcrumb-3Y5NWXnV.mjs.map\n","import '../assets/NcBreadcrumbs-B4eyDS9i.css';\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport debounce from \"debounce\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, Fragment, cloneVNode, h } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActions, i as isSlotPopulated } from \"./NcActions-C-wDqSrv.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BO5T5ePT.mjs\";\nimport { N as NcActionLink } from \"./NcActionLink-BFiaYt9A.mjs\";\nimport { N as NcActionRouter } from \"./NcActionRouter-vYFtIOzD.mjs\";\nimport { N as NcBreadcrumb } from \"./NcBreadcrumb-3Y5NWXnV.mjs\";\nconst _sfc_main$1 = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst crumbClass = \"vue-crumb\";\nconst _sfc_main = {\n name: \"NcBreadcrumbs\",\n components: {\n NcActions,\n NcActionButton,\n NcActionRouter,\n NcActionLink,\n NcBreadcrumb,\n IconFolder\n },\n props: {\n /**\n * Set a css icon-class for the icon of the root breadcrumb to be used.\n */\n rootIcon: {\n type: String,\n default: \"icon-home\"\n },\n /**\n * Set the aria-label of the nav element.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n emits: [\"dropped\"],\n data() {\n return {\n /**\n * Array to track the hidden breadcrumbs by their index.\n * Comparing two crumbs somehow does not work, so we use the indices.\n */\n hiddenIndices: [],\n /**\n * This is the props of the middle Action menu\n * that show the ellipsised breadcrumbs\n */\n menuBreadcrumbProps: {\n // Don't show a name for this breadcrumb, only the Actions menu\n name: \"\",\n forceMenu: true,\n // Don't allow dropping directly on the actions breadcrumb\n disableDrop: true,\n // Is the menu open or not\n open: false\n },\n breadcrumbsRefs: []\n };\n },\n created() {\n window.addEventListener(\"resize\", debounce(() => {\n this.handleWindowResize();\n }, 100));\n subscribe(\"navigation-toggled\", this.delayedResize);\n },\n mounted() {\n this.handleWindowResize();\n },\n updated() {\n this.delayedResize();\n this.$nextTick(() => {\n this.hideCrumbs();\n });\n },\n beforeUnmount() {\n window.removeEventListener(\"resize\", this.handleWindowResize);\n unsubscribe(\"navigation-toggled\", this.delayedResize);\n },\n methods: {\n /**\n * Close the actions menu\n *\n * @param {object} e The event\n */\n closeActions(e) {\n if (this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)) {\n return;\n }\n this.menuBreadcrumbProps.open = false;\n },\n /**\n * Call the resize function after a delay\n */\n async delayedResize() {\n await this.$nextTick();\n this.handleWindowResize();\n },\n /**\n * Check the width of the breadcrumb and hide breadcrumbs\n * if we overflow otherwise.\n */\n handleWindowResize() {\n if (!this.$refs.container) {\n return;\n }\n const nrCrumbs = this.breadcrumbsRefs.length;\n const hiddenIndices = [];\n const availableWidth = this.$refs.container.offsetWidth;\n let totalWidth = this.getTotalWidth();\n if (this.$refs.breadcrumb__actions) {\n totalWidth += this.$refs.breadcrumb__actions.offsetWidth;\n }\n let overflow = totalWidth - availableWidth;\n overflow += overflow > 0 ? 64 : 0;\n let i = 0;\n const startIndex = Math.floor(nrCrumbs / 2);\n while (overflow > 0 && i < nrCrumbs - 2) {\n const currentIndex = startIndex + (i % 2 ? i + 1 : i) / 2 * Math.pow(-1, i + nrCrumbs % 2);\n overflow -= this.getWidth(this.breadcrumbsRefs[currentIndex]?.$el, currentIndex === this.breadcrumbsRefs.length - 1);\n hiddenIndices.push(currentIndex);\n i++;\n }\n if (!this.arraysEqual(this.hiddenIndices, hiddenIndices.sort((a, b) => a - b))) {\n this.hiddenIndices = hiddenIndices;\n }\n },\n /**\n * Checks if two arrays are equal.\n * Only works for primitive arrays, but that's enough here.\n *\n * @param {Array} a The first array\n * @param {Array} b The second array\n * @return {boolean} Wether the arrays are equal\n */\n arraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n } else if (a === b) {\n return true;\n } else if (a === null || b === null) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n },\n /**\n * Calculates the total width of all breadcrumbs\n *\n * @return {number} The total width\n */\n getTotalWidth() {\n return this.breadcrumbsRefs.reduce((width, crumb, index) => width + this.getWidth(crumb.$el, index === this.breadcrumbsRefs.length - 1), 0);\n },\n /**\n * Calculates the width of the provided element\n *\n * @param {object} el The element\n * @param {boolean} isLast Is this the last crumb\n * @return {number} The width\n */\n getWidth(el, isLast) {\n if (!el?.classList) {\n return 0;\n }\n const hide = el.classList.contains(`${crumbClass}--hidden`);\n el.style.minWidth = \"auto\";\n if (isLast) {\n el.style.maxWidth = \"210px\";\n }\n el.classList.remove(`${crumbClass}--hidden`);\n const w = el.offsetWidth;\n if (hide) {\n el.classList.add(`${crumbClass}--hidden`);\n }\n el.style.minWidth = \"\";\n el.style.maxWidth = \"\";\n return w;\n },\n /**\n * Prevents the default of a provided event\n *\n * @param {object} e The event\n * @return {boolean}\n */\n preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n }\n return false;\n },\n /**\n * Handles the drag start.\n * Prevents a breadcrumb from being draggable.\n *\n * @param {object} e The event\n * @return {boolean}\n */\n dragStart(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles when something is dropped on the breadcrumb.\n *\n * @param {object} e The drop event\n * @param {string} path The path of the breadcrumb\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n * @return {boolean}\n */\n dropped(e, path, disabled) {\n if (!disabled) {\n this.$emit(\"dropped\", e, path);\n }\n this.menuBreadcrumbProps.open = false;\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n return this.preventDefault(e);\n },\n /**\n * Handles the drag over event\n *\n * @param {object} e The drag over event\n * @return {boolean}\n */\n dragOver(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles the drag enter event\n *\n * @param {object} e The drag over event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragEnter(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.classList && target.classList.contains(crumbClass)) {\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n target.classList.add(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Handles the drag leave event\n *\n * @param {object} e The drag leave event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragLeave(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.contains(e.relatedTarget)) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.contains(e.relatedTarget)) {\n return;\n }\n if (target.classList && target.classList.contains(crumbClass)) {\n target.classList.remove(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Check for each crumb if we have to hide it and\n * add it to the array of all crumbs.\n */\n hideCrumbs() {\n this.breadcrumbsRefs.forEach((crumb, i) => {\n if (crumb?.$el?.classList) {\n if (this.hiddenIndices.includes(i)) {\n crumb.$el.classList.add(`${crumbClass}--hidden`);\n } else {\n crumb.$el.classList.remove(`${crumbClass}--hidden`);\n }\n }\n });\n },\n isBreadcrumb(vnode) {\n return vnode?.type?.name === \"NcBreadcrumb\";\n }\n },\n /**\n * The render function to display the component\n *\n * @return {object|undefined} The created VNode\n */\n render() {\n let breadcrumbs = [];\n this.$slots.default?.().forEach((vnode) => {\n if (this.isBreadcrumb(vnode)) {\n breadcrumbs.push(vnode);\n return;\n }\n if (vnode?.type === Fragment) {\n vnode?.children?.forEach?.((child) => {\n if (this.isBreadcrumb(child)) {\n breadcrumbs.push(child);\n }\n });\n }\n });\n if (breadcrumbs.length === 0) {\n return;\n }\n breadcrumbs[0] = cloneVNode(breadcrumbs[0], {\n icon: this.rootIcon,\n ref: \"breadcrumbs\"\n });\n const breadcrumbsRefs = [];\n breadcrumbs = breadcrumbs.map((crumb, index) => cloneVNode(crumb, {\n ref: (crumb2) => {\n breadcrumbsRefs[index] = crumb2;\n }\n }));\n const crumbs = [...breadcrumbs];\n if (this.hiddenIndices.length) {\n crumbs.splice(\n Math.round(breadcrumbs.length / 2),\n 0,\n // The Actions menu\n // Use a breadcrumb component for the hidden breadcrumbs\n h(NcBreadcrumb, {\n class: \"dropdown\",\n ...this.menuBreadcrumbProps,\n // Hide the dropdown menu from screen-readers,\n // since the crumbs in the menu are still in the list.\n \"aria-hidden\": true,\n // Add a ref to the Actions menu\n ref: \"actionsBreadcrumb\",\n key: \"actions-breadcrumb-1\",\n // Add handlers so the Actions menu opens on hover\n onDragenter: () => {\n this.menuBreadcrumbProps.open = true;\n },\n onDragleave: this.closeActions,\n // Make sure we keep the same open state\n // as the Actions component\n \"onUpdate:open\": (open) => {\n this.menuBreadcrumbProps.open = open;\n }\n // Add all hidden breadcrumbs as ActionRouter or ActionLink\n }, {\n default: () => this.hiddenIndices.filter((index) => index <= breadcrumbs.length - 1).map((index) => {\n const crumb = breadcrumbs[index];\n const {\n // Get the parameters from the breadcrumb component props\n to,\n href,\n disableDrop,\n name,\n // Props to forward\n ...propsToForward\n } = crumb.props;\n delete propsToForward.ref;\n let element = NcActionButton;\n let path = \"\";\n if (href) {\n element = NcActionLink;\n path = href;\n }\n if (to) {\n element = NcActionRouter;\n path = to;\n }\n const folderIcon = h(IconFolder, {\n size: 20\n });\n return h(element, {\n ...propsToForward,\n class: crumbClass,\n href: href || null,\n to: to || null,\n // Prevent the breadcrumbs from being draggable\n draggable: false,\n // Add the drag and drop handlers\n onDragstart: this.dragStart,\n onDrop: ($event) => this.dropped($event, path, disableDrop),\n onDragover: this.dragOver,\n onDragenter: ($event) => this.dragEnter($event, disableDrop),\n onDragleave: ($event) => this.dragLeave($event, disableDrop)\n }, {\n default: () => name,\n icon: () => folderIcon\n });\n })\n })\n );\n }\n const wrapper = [h(\"nav\", { \"aria-label\": this.ariaLabel }, [h(\"ul\", { class: \"breadcrumb__crumbs\" }, [crumbs])])];\n if (isSlotPopulated(this.$slots.actions?.())) {\n wrapper.push(h(\"div\", { class: \"breadcrumb__actions\", ref: \"breadcrumb__actions\" }, this.$slots.actions?.()));\n }\n this.breadcrumbsRefs = breadcrumbsRefs;\n return h(\"div\", { class: [\"breadcrumb\", { \"breadcrumb--collapsed\": this.hiddenIndices.length === breadcrumbs.length - 2 }], ref: \"container\" }, wrapper);\n }\n};\nconst NcBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-5a4d73af\"]]);\nexport {\n NcBreadcrumbs as N\n};\n//# sourceMappingURL=NcBreadcrumbs-BaTp3Sya.mjs.map\n","import { FileType } from \"@nextcloud/files\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { ref, watchEffect, toValue } from \"vue\";\nimport PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nfunction getPreviewURL(node, options = {}) {\n options = { size: 32, cropPreview: false, mimeFallback: true, ...options };\n try {\n const previewUrl = node.attributes?.previewUrl || generateUrl(\"/core/preview?fileId={fileid}\", {\n fileid: node.fileid\n });\n let url;\n try {\n url = new URL(previewUrl);\n } catch {\n url = new URL(previewUrl, window.location.origin);\n }\n url.searchParams.set(\"x\", `${options.size}`);\n url.searchParams.set(\"y\", `${options.size}`);\n url.searchParams.set(\"mimeFallback\", `${options.mimeFallback}`);\n url.searchParams.set(\"a\", options.cropPreview === true ? \"0\" : \"1\");\n url.searchParams.set(\"c\", `${node.attributes.etag}`);\n return url;\n } catch {\n return null;\n }\n}\nfunction usePreviewURL(node, options) {\n const previewURL = ref(null);\n const previewLoaded = ref(false);\n watchEffect(() => {\n previewLoaded.value = false;\n previewURL.value = getPreviewURL(toValue(node), toValue(options || {}));\n if (previewURL.value && toValue(node).type === FileType.File) {\n preloadImage(previewURL.value.href).then((success) => {\n previewLoaded.value = success;\n });\n }\n });\n return {\n previewURL,\n previewLoaded\n };\n}\nexport {\n getPreviewURL as g,\n usePreviewURL as u\n};\n//# sourceMappingURL=preview-BIbJGxXF.mjs.map\n","const _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nexport {\n _export_sfc as _\n};\n//# sourceMappingURL=_plugin-vue_export-helper-1tPrXgE0.mjs.map\n","import { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, ref, computed, toRef, normalizeClass, normalizeStyle, unref, Fragment, createBlock, createVNode, toHandlers, withModifiers, onMounted, toValue, useModel, onUnmounted, withCtx, createTextVNode, renderList, mergeModels, nextTick, useTemplateRef, createSlots, shallowRef, watch } from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcEmptyContent from \"@nextcloud/vue/components/NcEmptyContent\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { FileType, Permission, formatFileSize, sortNodes, validateFilename, InvalidFilenameError, InvalidFilenameErrorReason } from \"@nextcloud/files\";\nimport NcButton from \"@nextcloud/vue/components/NcButton\";\nimport NcCheckboxRadioSwitch from \"@nextcloud/vue/components/NcCheckboxRadioSwitch\";\nimport { extname, join } from \"@nextcloud/paths\";\nimport NcDateTime from \"@nextcloud/vue/components/NcDateTime\";\nimport { mdiKey, mdiTagOutline, mdiLink, mdiAccountPlus, mdiAccountGroupOutline, mdiNetworkOutline, mdiFolder, mdiClock, mdiStar } from \"@mdi/js\";\nimport { ShareType } from \"@nextcloud/sharing\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/components/NcIconSvgWrapper\";\nimport { u as usePreviewURL } from \"./preview-BIbJGxXF.mjs\";\nimport { t, l as logger, s as showError } from \"./index-DL1yHC1K.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { isPublicShare } from \"@nextcloud/sharing/public\";\nimport NcActionInput from \"@nextcloud/vue/components/NcActionInput\";\nimport NcActions from \"@nextcloud/vue/components/NcActions\";\nimport NcBreadcrumb from \"@nextcloud/vue/components/NcBreadcrumb\";\nimport NcBreadcrumbs from \"@nextcloud/vue/components/NcBreadcrumbs\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport NcSelect from \"@nextcloud/vue/components/NcSelect\";\nimport NcTextField from \"@nextcloud/vue/components/NcTextField\";\nimport { getRecentSearch, resultToNode, defaultRootPath, getDefaultPropfind, getClient, getFavoriteNodes } from \"@nextcloud/files/dav\";\nconst _sfc_main$e = {\n name: \"FileIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$c = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$b = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$a = { d: \"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\" };\nconst _hoisted_4$a = { key: 0 };\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon file-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$a, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$a, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$b))\n ], 16, _hoisted_1$c);\n}\nconst IconFile = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$d = {\n name: \"MenuDownIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$b = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$a = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$9 = { d: \"M7,10L12,15L17,10H7Z\" };\nconst _hoisted_4$9 = { key: 0 };\nfunction _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-down-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$9, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$9, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$a))\n ], 16, _hoisted_1$b);\n}\nconst IconSortDescending = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$c = {\n name: \"MenuUpIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$a = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$9 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$8 = { d: \"M7,15L12,10L17,15H7Z\" };\nconst _hoisted_4$8 = { key: 0 };\nfunction _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-up-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$8, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$8, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$9))\n ], 16, _hoisted_1$a);\n}\nconst IconSortAscending = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$b = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$9 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$8 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$7 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4$7 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$7, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$7, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$8))\n ], 16, _hoisted_1$9);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$4]]);\nconst fileListIconStyles = {\n \"file-picker__file-icon\": \"_file-picker__file-icon_1aykw_9\",\n \"file-picker__file-icon--primary\": \"_file-picker__file-icon--primary_1aykw_22\",\n \"file-picker__file-icon-overlay\": \"_file-picker__file-icon-overlay_1aykw_26\"\n};\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n __name: \"FilePreview\",\n props: {\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const fileListIconStyles$1 = ref(fileListIconStyles);\n const {\n previewURL,\n previewLoaded\n } = usePreviewURL(toRef(props, \"node\"), computed(() => ({ cropPreview: props.cropImagePreviews })));\n const isFile = computed(() => props.node.type === FileType.File);\n const folderDecorationIcon = computed(() => {\n if (props.node.type !== FileType.Folder) {\n return null;\n }\n if (props.node.attributes?.[\"is-encrypted\"] === 1) {\n return mdiKey;\n }\n if (props.node.attributes?.[\"is-tag\"]) {\n return mdiTagOutline;\n }\n const shareTypes = Object.values(props.node.attributes?.[\"share-types\"] || {}).flat();\n if (shareTypes.some((type) => type === ShareType.Link || type === ShareType.Email)) {\n return mdiLink;\n }\n if (shareTypes.length > 0) {\n return mdiAccountPlus;\n }\n switch (props.node.attributes?.[\"mount-type\"]) {\n case \"external\":\n case \"external-session\":\n return mdiNetworkOutline;\n case \"group\":\n return mdiAccountGroupOutline;\n case \"shared\":\n return mdiAccountPlus;\n }\n return null;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n style: normalizeStyle(unref(previewLoaded) ? { backgroundImage: `url(${unref(previewURL)})` } : void 0),\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon\"])\n }, [\n !unref(previewLoaded) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n isFile.value ? (openBlock(), createBlock(IconFile, {\n key: 0,\n size: 32\n })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n folderDecorationIcon.value ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon-overlay\"]),\n inline: \"\",\n path: folderDecorationIcon.value,\n size: 16\n }, null, 8, [\"class\", \"path\"])) : createCommentVNode(\"\", true),\n createVNode(IconFolder, {\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon--primary\"]),\n size: 32\n }, null, 8, [\"class\"])\n ], 64))\n ], 64)) : createCommentVNode(\"\", true)\n ], 6);\n };\n }\n});\nconst _hoisted_1$8 = [\"tabindex\", \"aria-selected\", \"data-filename\"];\nconst _hoisted_2$7 = { class: \"row-name\" };\nconst _hoisted_3$6 = {\n class: \"file-picker__name-container\",\n \"data-testid\": \"row-name\"\n};\nconst _hoisted_4$6 = [\"title\", \"textContent\"];\nconst _hoisted_5$1 = [\"textContent\"];\nconst _hoisted_6$1 = { class: \"row-size\" };\nconst _hoisted_7$1 = { class: \"row-modified\" };\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n __name: \"FileListRow\",\n props: {\n allowPickDirectory: { type: Boolean },\n selected: { type: Boolean },\n showCheckbox: { type: Boolean },\n canPick: { type: Boolean },\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n emits: [\"update:selected\", \"enterDirectory\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const timestamp = computed(() => props.node.mtime ?? 0);\n const fileExtension = computed(() => extname(props.node.displayname));\n const displayName = computed(() => props.node.displayname.slice(0, fileExtension.value ? -fileExtension.value.length : void 0));\n const isDirectory = computed(() => props.node.type === FileType.Folder);\n const isPickable = computed(() => props.canPick && (props.allowPickDirectory || !isDirectory.value));\n const isNavigatable = computed(() => (props.node.permissions & Permission.READ) === Permission.READ);\n function toggleSelected() {\n if (!isPickable.value) {\n return;\n }\n emit2(\"update:selected\", !props.selected);\n }\n function handleClick() {\n if (isDirectory.value) {\n if (isNavigatable.value) {\n emit2(\"enterDirectory\", props.node);\n }\n } else {\n toggleSelected();\n }\n }\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n handleClick();\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", mergeProps({\n tabindex: __props.showCheckbox && !isDirectory.value ? void 0 : 0,\n \"aria-selected\": !isPickable.value ? void 0 : __props.selected,\n class: [\"file-picker__row\", [\n {\n \"file-picker__row--selected\": __props.selected && !__props.showCheckbox,\n \"file-picker__row--not-navigatable\": isDirectory.value && !isNavigatable.value,\n \"file-picker__row--not-pickable\": !isPickable.value\n }\n ]],\n \"data-filename\": __props.node.basename,\n \"data-testid\": \"file-list-row\"\n }, toHandlers({\n click: handleClick,\n /* same as tabindex -> if we hide the checkbox or this is a directory we need keyboard access to enter the directory or select the node */\n ...!__props.showCheckbox || isDirectory.value ? { keydown: handleKeyDown } : {}\n }, true)), [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", {\n key: 0,\n class: \"row-checkbox\",\n onClick: withModifiers(() => {\n }, [\"stop\"])\n }, [\n createVNode(unref(NcCheckboxRadioSwitch), {\n \"aria-label\": unref(t)(\"Select the row for {nodename}\", { nodename: displayName.value }),\n disabled: !isPickable.value,\n \"data-testid\": \"row-checkbox\",\n modelValue: __props.selected,\n \"onUpdate:modelValue\": toggleSelected\n }, null, 8, [\"aria-label\", \"disabled\", \"modelValue\"])\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_2$7, [\n createElementVNode(\"div\", _hoisted_3$6, [\n createVNode(_sfc_main$a, {\n node: __props.node,\n cropImagePreviews: __props.cropImagePreviews\n }, null, 8, [\"node\", \"cropImagePreviews\"]),\n createElementVNode(\"div\", {\n class: \"file-picker__file-name\",\n title: displayName.value,\n textContent: toDisplayString(displayName.value)\n }, null, 8, _hoisted_4$6),\n createElementVNode(\"div\", {\n class: \"file-picker__file-extension\",\n textContent: toDisplayString(fileExtension.value)\n }, null, 8, _hoisted_5$1)\n ])\n ]),\n createElementVNode(\"td\", _hoisted_6$1, toDisplayString(unref(formatFileSize)(__props.node.size || 0)), 1),\n createElementVNode(\"td\", _hoisted_7$1, [\n createVNode(unref(NcDateTime), {\n timestamp: timestamp.value,\n ignoreSeconds: \"\"\n }, null, 8, [\"timestamp\"])\n ])\n ], 16, _hoisted_1$8);\n };\n }\n});\nconst FileListRow = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"__scopeId\", \"data-v-7857e8bd\"]]);\nconst _hoisted_1$7 = {\n \"aria-hidden\": \"true\",\n class: \"file-picker__row loading-row\"\n};\nconst _hoisted_2$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_3$5 = { class: \"row-name\" };\nconst _hoisted_4$5 = { class: \"row-wrapper\" };\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n __name: \"LoadingTableRow\",\n props: {\n showCheckbox: { type: Boolean }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", _hoisted_1$7, [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", _hoisted_2$6, [..._cache[0] || (_cache[0] = [\n createElementVNode(\"span\", null, null, -1)\n ])])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_3$5, [\n createElementVNode(\"div\", _hoisted_4$5, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(fileListIconStyles)[\"file-picker__file-icon\"])\n }, null, 2),\n _cache[1] || (_cache[1] = createElementVNode(\"span\", null, null, -1))\n ])\n ]),\n _cache[2] || (_cache[2] = createElementVNode(\"td\", { class: \"row-size\" }, [\n createElementVNode(\"span\")\n ], -1)),\n _cache[3] || (_cache[3] = createElementVNode(\"td\", { class: \"row-modified\" }, [\n createElementVNode(\"span\")\n ], -1))\n ]);\n };\n }\n});\nconst LoadingTableRow = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"__scopeId\", \"data-v-1f96131b\"]]);\nfunction useFilesSettings() {\n const filesUserState = loadState(\"files\", \"config\", null);\n const showHiddenFiles = ref(filesUserState?.show_hidden ?? true);\n const sortFavoritesFirst = ref(filesUserState?.sort_favorites_first ?? true);\n const cropImagePreviews = ref(filesUserState?.crop_image_previews ?? true);\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/configs\"));\n showHiddenFiles.value = data?.data?.show_hidden ?? false;\n sortFavoritesFirst.value = data?.data?.sort_favorites_first ?? true;\n cropImagePreviews.value = data?.data?.crop_image_previews ?? true;\n } catch (error) {\n logger.error(\"Could not load files settings\", { error });\n showError(t(\"Could not load files settings\"));\n }\n } else {\n logger.debug(\"Skip loading files settings - currently on public share\");\n }\n });\n return {\n showHiddenFiles,\n sortFavoritesFirst,\n cropImagePreviews\n };\n}\nfunction useFilesViews(currentView) {\n const convertOrder = (order2) => order2 === \"asc\" ? \"ascending\" : order2 === \"desc\" ? \"descending\" : \"none\";\n const filesViewsState = loadState(\"files\", \"viewConfigs\", null);\n const filesViewConfig = ref({\n sortBy: filesViewsState?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.files?.sorting_direction ?? \"asc\")\n });\n const recentViewConfig = ref({\n sortBy: filesViewsState?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.recent?.sorting_direction ?? \"asc\")\n });\n const favoritesViewConfig = ref({\n sortBy: filesViewsState?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.favorites?.sorting_direction ?? \"asc\")\n });\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/views\"));\n filesViewConfig.value = {\n sortBy: data?.data?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.files?.sorting_direction)\n };\n favoritesViewConfig.value = {\n sortBy: data?.data?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.favorites?.sorting_direction)\n };\n recentViewConfig.value = {\n sortBy: data?.data?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.recent?.sorting_direction)\n };\n } catch (error) {\n logger.error(\"Could not load files views\", { error });\n showError(t(\"Could not load files views\"));\n }\n } else {\n logger.debug(\"Skip loading files views - currently on public share\");\n }\n });\n const currentConfig = computed(() => toValue(currentView || \"files\") === \"files\" ? filesViewConfig.value : toValue(currentView) === \"recent\" ? recentViewConfig.value : favoritesViewConfig.value);\n const sortBy = computed(() => currentConfig.value.sortBy);\n const order = computed(() => currentConfig.value.order);\n return {\n filesViewConfig,\n favoritesViewConfig,\n recentViewConfig,\n currentConfig,\n sortBy,\n order\n };\n}\nconst _hoisted_1$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_2$5 = { class: \"hidden-visually\" };\nconst _hoisted_3$4 = [\"aria-sort\"];\nconst _hoisted_4$4 = { class: \"header-wrapper\" };\nconst _hoisted_5 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_6 = [\"aria-sort\"];\nconst _hoisted_7 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_8 = [\"aria-sort\"];\nconst _hoisted_9 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n __name: \"FileList\",\n props: /* @__PURE__ */ mergeModels({\n currentView: {},\n multiselect: { type: Boolean },\n allowPickDirectory: { type: Boolean },\n loading: { type: Boolean },\n files: {},\n canPick: { type: Function }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {},\n \"selectedFiles\": { required: true },\n \"selectedFilesModifiers\": {}\n }),\n emits: [\"update:path\", \"update:selectedFiles\"],\n setup(__props) {\n const path = useModel(__props, \"path\");\n const selectedFiles = useModel(__props, \"selectedFiles\");\n const props = __props;\n const customSortingConfig = ref();\n const { currentConfig: filesAppSorting } = useFilesViews(props.currentView);\n const sortingConfig = computed(() => customSortingConfig.value ?? filesAppSorting.value);\n const sortByName = computed(() => sortingConfig.value.sortBy === \"basename\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortBySize = computed(() => sortingConfig.value.sortBy === \"size\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortByModified = computed(() => sortingConfig.value.sortBy === \"mtime\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n function toggleSorting(sortBy) {\n if (sortingConfig.value.sortBy === sortBy) {\n if (sortingConfig.value.order === \"ascending\") {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"descending\" };\n } else {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"ascending\" };\n }\n } else {\n customSortingConfig.value = { sortBy, order: \"ascending\" };\n }\n }\n const { sortFavoritesFirst, cropImagePreviews } = useFilesSettings();\n const sortedFiles = computed(() => {\n return sortNodes(props.files, {\n sortFoldersFirst: true,\n sortFavoritesFirst: sortFavoritesFirst.value,\n sortingOrder: sortingConfig.value.order === \"descending\" ? \"desc\" : \"asc\",\n sortingMode: sortingConfig.value.sortBy\n });\n });\n const selectableFiles = computed(() => props.files.filter((file) => props.allowPickDirectory || file.type !== FileType.Folder));\n const allSelected = computed(() => !props.loading && selectedFiles.value.length > 0 && selectedFiles.value.length >= selectableFiles.value.length);\n function onSelectAll() {\n if (selectedFiles.value.length < selectableFiles.value.length) {\n selectedFiles.value = [...selectableFiles.value];\n } else {\n selectedFiles.value = [];\n }\n }\n function onNodeSelected(file) {\n if (selectedFiles.value.includes(file)) {\n selectedFiles.value = selectedFiles.value.filter((f) => f.path !== file.path);\n } else {\n if (props.multiselect) {\n selectedFiles.value = [...selectedFiles.value, file];\n } else {\n selectedFiles.value = [file];\n }\n }\n }\n function onChangeDirectory(dir) {\n path.value = dir.path;\n }\n const skeletonNumber = ref(4);\n const fileContainer = ref();\n {\n const resize = () => nextTick(() => {\n const nodes = fileContainer.value?.parentElement?.children || [];\n let height = fileContainer.value?.parentElement?.clientHeight || 450;\n for (let index = 0; index < nodes.length; index++) {\n if (!fileContainer.value?.isSameNode(nodes[index])) {\n height -= nodes[index].clientHeight;\n }\n }\n skeletonNumber.value = Math.max(1, Math.floor((height - 50) / 50));\n });\n onMounted(() => {\n window.addEventListener(\"resize\", resize);\n resize();\n });\n onUnmounted(() => {\n window.removeEventListener(\"resize\", resize);\n });\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"fileContainer\",\n ref: fileContainer,\n class: \"file-picker__files\"\n }, [\n createElementVNode(\"table\", null, [\n createElementVNode(\"thead\", null, [\n createElementVNode(\"tr\", null, [\n __props.multiselect ? (openBlock(), createElementBlock(\"th\", _hoisted_1$6, [\n createElementVNode(\"span\", _hoisted_2$5, toDisplayString(unref(t)(\"Select entry\")), 1),\n __props.multiselect ? (openBlock(), createBlock(unref(NcCheckboxRadioSwitch), {\n key: 0,\n \"aria-label\": unref(t)(\"Select all entries\"),\n \"data-testid\": \"select-all-checkbox\",\n modelValue: allSelected.value,\n \"onUpdate:modelValue\": onSelectAll\n }, null, 8, [\"aria-label\", \"modelValue\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByName.value,\n class: \"row-name\"\n }, [\n createElementVNode(\"div\", _hoisted_4$4, [\n _cache[3] || (_cache[3] = createElementVNode(\"span\", { class: \"file-picker__header-preview\" }, null, -1)),\n createVNode(unref(NcButton), {\n \"data-test\": \"file-picker_sort-name\",\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => toggleSorting(\"basename\"))\n }, {\n icon: withCtx(() => [\n sortByName.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByName.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_5))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Name\")), 1)\n ]),\n _: 1\n })\n ])\n ], 8, _hoisted_3$4),\n createElementVNode(\"th\", {\n \"aria-sort\": sortBySize.value,\n class: \"row-size\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[1] || (_cache[1] = ($event) => toggleSorting(\"size\"))\n }, {\n icon: withCtx(() => [\n sortBySize.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortBySize.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_7))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Size\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_6),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByModified.value,\n class: \"row-modified\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[2] || (_cache[2] = ($event) => toggleSorting(\"mtime\"))\n }, {\n icon: withCtx(() => [\n sortByModified.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByModified.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_9))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Modified\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_8)\n ])\n ]),\n createElementVNode(\"tbody\", null, [\n __props.loading ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(skeletonNumber.value, (index) => {\n return openBlock(), createBlock(LoadingTableRow, {\n key: index,\n showCheckbox: __props.multiselect\n }, null, 8, [\"showCheckbox\"]);\n }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(sortedFiles.value, (file) => {\n return openBlock(), createBlock(FileListRow, {\n key: file.fileid || file.path,\n allowPickDirectory: __props.allowPickDirectory,\n showCheckbox: __props.multiselect,\n canPick: (__props.multiselect || selectedFiles.value.length === 0 || selectedFiles.value.includes(file)) && (__props.canPick === void 0 || __props.canPick(file)),\n selected: selectedFiles.value.includes(file),\n node: file,\n cropImagePreviews: unref(cropImagePreviews),\n \"onUpdate:selected\": ($event) => onNodeSelected(file),\n onEnterDirectory: onChangeDirectory\n }, null, 8, [\"allowPickDirectory\", \"showCheckbox\", \"canPick\", \"selected\", \"node\", \"cropImagePreviews\", \"onUpdate:selected\"]);\n }), 128))\n ])\n ])\n ], 512);\n };\n }\n});\nconst FileList = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"__scopeId\", \"data-v-412efd5c\"]]);\nconst _sfc_main$6 = {\n name: \"HomeIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$4 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon home-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$4))\n ], 16, _hoisted_1$5);\n}\nconst IconHome = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$5 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon plus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$4);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerBreadcrumbs\",\n props: /* @__PURE__ */ mergeModels({\n showMenu: { type: Boolean }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"createNode\"], [\"update:path\"]),\n setup(__props, { emit: __emit }) {\n const path = useModel(__props, \"path\");\n const emit2 = __emit;\n const actionsOpen = ref(false);\n const newNodeName = ref(\"\");\n const nameInput = useTemplateRef(\"nameInput\");\n function validateInput() {\n const name = newNodeName.value.trim();\n const input = nameInput.value?.$el?.querySelector(\"input\");\n let validity = \"\";\n try {\n validateFilename(name);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n validity = t('\"{char}\" is not allowed inside a folder name.', { char: error.segment });\n break;\n case InvalidFilenameErrorReason.ReservedName:\n validity = t('\"{segment}\" is a reserved name and not allowed for folder names.', { segment: error.segment });\n break;\n case InvalidFilenameErrorReason.Extension:\n validity = t('Folder names must not end with \"{extension}\".', { extension: error.segment });\n break;\n default:\n validity = t(\"Invalid folder name.\");\n }\n }\n if (input) {\n input.setCustomValidity(validity);\n }\n return validity === \"\";\n }\n function onSubmit() {\n const name = newNodeName.value.trim();\n if (validateInput()) {\n actionsOpen.value = false;\n emit2(\"createNode\", name);\n newNodeName.value = \"\";\n }\n }\n const pathElements = computed(() => path.value.split(\"/\").filter((v) => v !== \"\").map((v, i, elements) => ({\n name: v,\n path: \"/\" + elements.slice(0, i + 1).join(\"/\")\n })));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcBreadcrumbs), { class: \"file-picker__breadcrumbs\" }, createSlots({\n default: withCtx(() => [\n createVNode(unref(NcBreadcrumb), {\n name: unref(t)(\"All files\"),\n title: unref(t)(\"Home\"),\n onClick: _cache[0] || (_cache[0] = ($event) => path.value = \"/\")\n }, {\n icon: withCtx(() => [\n createVNode(IconHome, { size: 20 })\n ]),\n _: 1\n }, 8, [\"name\", \"title\"]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(pathElements.value, (dir) => {\n return openBlock(), createBlock(unref(NcBreadcrumb), {\n key: dir.path,\n name: dir.name,\n title: dir.path,\n onClick: ($event) => path.value = dir.path\n }, null, 8, [\"name\", \"title\", \"onClick\"]);\n }), 128))\n ]),\n _: 2\n }, [\n __props.showMenu ? {\n name: \"actions\",\n fn: withCtx(() => [\n createVNode(unref(NcActions), {\n open: actionsOpen.value,\n \"onUpdate:open\": _cache[2] || (_cache[2] = ($event) => actionsOpen.value = $event),\n \"aria-label\": unref(t)(\"Create directory\"),\n forceMenu: true,\n forceName: true,\n menuName: unref(t)(\"New\"),\n variant: \"secondary\",\n onClose: _cache[3] || (_cache[3] = ($event) => newNodeName.value = \"\")\n }, {\n icon: withCtx(() => [\n createVNode(IconPlus, { size: 20 })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcActionInput), {\n ref_key: \"nameInput\",\n ref: nameInput,\n modelValue: newNodeName.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event) => newNodeName.value = $event),\n validateInput\n ],\n label: unref(t)(\"New folder\"),\n placeholder: unref(t)(\"New folder name\"),\n onSubmit\n }, {\n icon: withCtx(() => [\n createVNode(IconFolder, { size: 20 })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"label\", \"placeholder\"])\n ]),\n _: 1\n }, 8, [\"open\", \"aria-label\", \"menuName\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1024);\n };\n }\n});\nconst FilePickerBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"__scopeId\", \"data-v-b448b141\"]]);\nconst _sfc_main$3 = {\n name: \"CloseIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon close-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst IconClose = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$2 = {\n name: \"MagnifyIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon magnify-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$2);\n}\nconst IconMagnify = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render]]);\nfunction useViews(isAnonymous) {\n const allViews = [\n {\n id: \"files\",\n label: t(\"All files\"),\n icon: mdiFolder\n },\n {\n id: \"recent\",\n label: t(\"Recent\"),\n icon: mdiClock\n },\n {\n id: \"favorites\",\n label: t(\"Favorites\"),\n icon: mdiStar\n }\n ];\n const availableViews = isAnonymous.value ? allViews.filter(({ id }) => id === \"files\") : allViews;\n return {\n allViews,\n availableViews\n };\n}\nconst _hoisted_1$1 = {\n key: 0,\n class: \"file-picker__side\"\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerNavigation\",\n props: {\n currentView: {},\n filterString: {},\n isCollapsed: { type: Boolean },\n disabledNavigation: { type: Boolean }\n },\n emits: [\"update:currentView\", \"update:filterString\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const { availableViews } = useViews(ref(getCurrentUser() === null));\n const currentViewObject = computed(() => availableViews.filter((v) => v.id === props.currentView)[0] ?? availableViews[0]);\n const updateFilterValue = (value) => emit2(\"update:filterString\", value.toString());\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(unref(NcTextField), {\n class: \"file-picker__filter-input\",\n label: unref(t)(\"Filter file list\"),\n showTrailingButton: !!__props.filterString,\n modelValue: __props.filterString,\n \"onUpdate:modelValue\": updateFilterValue,\n onTrailingButtonClick: _cache[0] || (_cache[0] = ($event) => updateFilterValue(\"\"))\n }, {\n \"trailing-button-icon\": withCtx(() => [\n createVNode(IconClose, { size: 16 })\n ]),\n default: withCtx(() => [\n createVNode(IconMagnify, { size: 16 })\n ]),\n _: 1\n }, 8, [\"label\", \"showTrailingButton\", \"modelValue\"]),\n unref(availableViews).length > 1 && !__props.disabledNavigation ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n !__props.isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_1$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(availableViews), (view) => {\n return openBlock(), createElementBlock(\"li\", {\n key: view.id\n }, [\n createVNode(unref(NcButton), {\n variant: __props.currentView === view.id ? \"primary\" : \"tertiary\",\n wide: true,\n onClick: ($event) => _ctx.$emit(\"update:currentView\", view.id)\n }, {\n icon: withCtx(() => [\n createVNode(unref(NcIconSvgWrapper), {\n path: view.icon,\n size: 20\n }, null, 8, [\"path\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(view.label), 1)\n ]),\n _: 2\n }, 1032, [\"variant\", \"onClick\"])\n ]);\n }), 128))\n ])) : (openBlock(), createBlock(unref(NcSelect), {\n key: 1,\n \"aria-label\": unref(t)(\"Current view selector\"),\n clearable: false,\n searchable: false,\n options: unref(availableViews),\n modelValue: currentViewObject.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => emit2(\"update:currentView\", $event.id))\n }, null, 8, [\"aria-label\", \"options\", \"modelValue\"]))\n ], 64)) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nconst FilePickerNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-e1c54e23\"]]);\nasync function getRecentNodes({ client, signal }) {\n const lastTwoWeek = Math.round(Date.now() / 1e3) - 60 * 60 * 24 * 14;\n const { data } = await client.search(\"/\", {\n signal,\n details: true,\n data: getRecentSearch(lastTwoWeek)\n });\n return data.results.map((result) => resultToNode(result));\n}\nasync function getNodes({ client, path, signal }) {\n const results = await client.getDirectoryContents(join(defaultRootPath, path), {\n signal,\n details: true,\n includeSelf: true,\n data: getDefaultPropfind()\n });\n const nodes = results.data.map((result) => resultToNode(result));\n return {\n contents: nodes.filter(({ path: nodePath }) => nodePath !== path),\n folder: nodes.find(({ path: nodePath }) => path === nodePath)\n };\n}\nasync function getFile(client, path) {\n const { data } = await client.stat(join(defaultRootPath, path), {\n details: true,\n data: getDefaultPropfind()\n });\n return resultToNode(data);\n}\nfunction useDAVFiles(currentView, currentPath) {\n const client = getClient();\n const files = shallowRef([]);\n const folder = shallowRef(null);\n const isLoading = ref(true);\n let abortController;\n async function createDirectory(name) {\n const path = join(currentPath.value, name);\n await client.createDirectory(join(defaultRootPath, path));\n const directory = await getFile(client, path);\n files.value = [...files.value, directory];\n return directory;\n }\n async function loadDAVFiles() {\n if (abortController) {\n abortController.abort();\n abortController = void 0;\n }\n abortController = new AbortController();\n isLoading.value = true;\n try {\n if (currentView.value === \"favorites\") {\n files.value = await getFavoriteNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = null;\n } else if (currentView.value === \"recent\") {\n files.value = await getRecentNodes({ client, signal: abortController.signal });\n folder.value = null;\n } else {\n const content = await getNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = content.folder;\n files.value = content.contents;\n }\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n return;\n }\n throw error;\n } finally {\n abortController = void 0;\n isLoading.value = false;\n }\n }\n watch([currentView, currentPath], () => loadDAVFiles());\n onMounted(() => loadDAVFiles());\n return {\n isLoading,\n files,\n folder,\n loadFiles: loadDAVFiles,\n createDirectory\n };\n}\nfunction useMimeFilter(allowedMIMETypes) {\n const splittedTypes = computed(() => allowedMIMETypes.value.map((filter) => filter.split(\"/\")));\n const isSupportedMimeType = (mime) => {\n const mimeTypeArray = mime.split(\"/\");\n return splittedTypes.value.some(([type, subtype]) => (\n // check mime type matches or is wildcard\n (mimeTypeArray[0] === type || type === \"*\") && (mimeTypeArray[1] === subtype || subtype === \"*\")\n ));\n };\n return {\n isSupportedMimeType\n };\n}\nconst _hoisted_1 = { class: \"file-picker__main\" };\nconst _hoisted_2 = {\n key: 1,\n class: \"file-picker__view\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"FilePicker\",\n props: {\n buttons: {},\n name: {},\n allowPickDirectory: { type: Boolean, default: false },\n noMenu: { type: Boolean, default: false },\n disabledNavigation: { type: Boolean, default: false },\n filterFn: { type: Function, default: void 0 },\n canPickFn: { type: Function, default: void 0 },\n mimetypeFilter: { default: () => [] },\n multiselect: { type: Boolean, default: false },\n path: { default: void 0 }\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit$1 = __emit;\n const isOpen = ref(true);\n const currentView = ref(\"files\");\n const savedPath = ref(window?.sessionStorage.getItem(\"NC.FilePicker.LastPath\") || \"/\");\n const navigatedPath = ref(\"\");\n const currentPath = computed({\n get: () => {\n return currentView.value === \"files\" ? navigatedPath.value || props.path || savedPath.value : \"/\";\n },\n set: (path) => {\n navigatedPath.value = path;\n }\n });\n const selectedFiles = shallowRef([]);\n const filterString = ref(\"\");\n const {\n files,\n folder: currentFolder,\n isLoading,\n loadFiles,\n createDirectory\n } = useDAVFiles(currentView, currentPath);\n watch([navigatedPath], () => {\n if (props.path === void 0 && navigatedPath.value) {\n window.sessionStorage.setItem(\"NC.FilePicker.LastPath\", navigatedPath.value);\n }\n selectedFiles.value = [];\n filterString.value = \"\";\n });\n let isHandlingCallback = false;\n const dialogButtons = computed(() => {\n const nodes = selectedFiles.value.length === 0 && props.allowPickDirectory && currentFolder.value ? [currentFolder.value] : selectedFiles.value;\n const buttons = typeof props.buttons === \"function\" ? props.buttons(nodes, currentPath.value, currentView.value) : props.buttons;\n return buttons.map((button) => ({\n ...button,\n disabled: button.disabled || isLoading.value,\n callback: () => {\n isHandlingCallback = true;\n handleButtonClick(button.callback, nodes);\n }\n }));\n });\n async function handleButtonClick(callback, nodes) {\n await callback(nodes);\n emit$1(\"close\", nodes);\n isHandlingCallback = false;\n }\n const viewHeadline = computed(() => currentView.value === \"favorites\" ? t(\"Favorites\") : currentView.value === \"recent\" ? t(\"Recent\") : \"\");\n const { isSupportedMimeType } = useMimeFilter(toRef(props, \"mimetypeFilter\"));\n onMounted(() => loadFiles());\n const { showHiddenFiles } = useFilesSettings();\n const filteredFiles = computed(() => {\n let filtered = files.value;\n if (!showHiddenFiles.value) {\n filtered = filtered.filter((file) => !file.basename.startsWith(\".\"));\n }\n if (props.mimetypeFilter.length > 0) {\n filtered = filtered.filter((file) => file.type === \"folder\" || file.mime && isSupportedMimeType(file.mime));\n }\n if (filterString.value) {\n filtered = filtered.filter((file) => file.basename.toLowerCase().includes(filterString.value.toLowerCase()));\n }\n if (props.filterFn) {\n filtered = filtered.filter((f) => props.filterFn(f));\n }\n return filtered;\n });\n const noFilesDescription = computed(() => {\n if (currentView.value === \"files\") {\n return t(\"Upload some content or sync with your devices!\");\n } else if (currentView.value === \"recent\") {\n return t(\"Files and folders you recently modified will show up here.\");\n } else {\n return t(\"Files and folders you mark as favorite will show up here.\");\n }\n });\n async function onCreateFolder(name) {\n try {\n const folder = await createDirectory(name);\n navigatedPath.value = folder.path;\n emit(\"files:node:created\", files.value.filter((file) => file.basename === name)[0]);\n } catch (error) {\n logger.warn(\"Could not create new folder\", { name, error });\n showError(t(\"Could not create the new folder\"));\n }\n }\n function handleClose(open) {\n if (!open && !isHandlingCallback) {\n emit$1(\"close\");\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n open: isOpen.value,\n \"onUpdate:open\": [\n _cache[6] || (_cache[6] = ($event) => isOpen.value = $event),\n handleClose\n ],\n buttons: dialogButtons.value,\n name: __props.name,\n size: \"large\",\n contentClasses: \"file-picker__content\",\n dialogClasses: \"file-picker\",\n navigationClasses: \"file-picker__navigation\"\n }, {\n navigation: withCtx(({ isCollapsed }) => [\n createVNode(FilePickerNavigation, {\n currentView: currentView.value,\n \"onUpdate:currentView\": _cache[0] || (_cache[0] = ($event) => currentView.value = $event),\n filterString: filterString.value,\n \"onUpdate:filterString\": _cache[1] || (_cache[1] = ($event) => filterString.value = $event),\n isCollapsed,\n disabledNavigation: __props.disabledNavigation\n }, null, 8, [\"currentView\", \"filterString\", \"isCollapsed\", \"disabledNavigation\"])\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1, [\n currentView.value === \"files\" ? (openBlock(), createBlock(FilePickerBreadcrumbs, {\n key: 0,\n path: currentPath.value,\n \"onUpdate:path\": _cache[2] || (_cache[2] = ($event) => currentPath.value = $event),\n showMenu: !__props.noMenu,\n onCreateNode: onCreateFolder\n }, null, 8, [\"path\", \"showMenu\"])) : (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n createElementVNode(\"h3\", null, toDisplayString(viewHeadline.value), 1)\n ])),\n unref(isLoading) || filteredFiles.value.length > 0 ? (openBlock(), createBlock(FileList, {\n key: 2,\n path: currentPath.value,\n \"onUpdate:path\": [\n _cache[3] || (_cache[3] = ($event) => currentPath.value = $event),\n _cache[5] || (_cache[5] = ($event) => currentView.value = \"files\")\n ],\n selectedFiles: selectedFiles.value,\n \"onUpdate:selectedFiles\": _cache[4] || (_cache[4] = ($event) => selectedFiles.value = $event),\n allowPickDirectory: __props.allowPickDirectory,\n currentView: currentView.value,\n files: filteredFiles.value,\n multiselect: __props.multiselect,\n loading: unref(isLoading),\n name: viewHeadline.value,\n canPick: __props.canPickFn\n }, null, 8, [\"path\", \"selectedFiles\", \"allowPickDirectory\", \"currentView\", \"files\", \"multiselect\", \"loading\", \"name\", \"canPick\"])) : filterString.value ? (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 3,\n name: unref(t)(\"No matching files\"),\n description: unref(t)(\"No files matching your filter were found.\")\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"])) : (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 4,\n name: unref(t)(\"No files in here\"),\n description: noFilesDescription.value\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"]))\n ])\n ]),\n _: 1\n }, 8, [\"open\", \"buttons\", \"name\"]);\n };\n }\n});\nconst FilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-4f89ed79\"]]);\nexport {\n FilePicker as default\n};\n//# sourceMappingURL=FilePicker-DWYoSaVg.mjs.map\n"],"names":["_sfc_main$1","_hoisted_1$1","_hoisted_2","_hoisted_3","_hoisted_4","_sfc_render$1","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","ChevronRight","_export_sfc","_sfc_main","NcActions","NcButton","crumbId","createElementId","open","e","_hoisted_1","_sfc_render","_component_NcButton","resolveComponent","_component_NcActions","_component_ChevronRight","normalizeClass","withModifiers","args","createBlock","createSlots","withCtx","renderSlot","createTextVNode","createVNode","NcBreadcrumb","IconFolder","crumbClass","NcActionButton","NcActionRouter","NcActionLink","debounce","subscribe","unsubscribe","nrCrumbs","hiddenIndices","availableWidth","totalWidth","overflow","i","startIndex","currentIndex","a","b","width","crumb","index","el","isLast","hide","w","path","disabled","crumbs","target","vnode","breadcrumbs","Fragment","child","cloneVNode","breadcrumbsRefs","crumb2","h","to","href","disableDrop","name","propsToForward","element","folderIcon","wrapper","isSlotPopulated","NcBreadcrumbs","queue","PQueue","preloadImage","url","resolve","promise","image","getPreviewURL","node","options","previewUrl","generateUrl","usePreviewURL","previewURL","ref","previewLoaded","watchEffect","toValue","FileType","success","sfc","props","key","val","_sfc_main$e","_hoisted_1$c","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$7","IconFile","_sfc_main$d","_hoisted_1$b","_hoisted_2$a","_hoisted_3$9","_hoisted_4$9","_sfc_render$6","IconSortDescending","_sfc_main$c","_hoisted_1$a","_hoisted_2$9","_hoisted_3$8","_hoisted_4$8","_sfc_render$5","IconSortAscending","_sfc_main$b","_hoisted_1$9","_hoisted_2$8","_hoisted_3$7","_hoisted_4$7","_sfc_render$4","fileListIconStyles","_sfc_main$a","defineComponent","__props","fileListIconStyles$1","toRef","computed","isFile","folderDecorationIcon","mdiKey","mdiTagOutline","shareTypes","type","ShareType","mdiLink","mdiAccountPlus","mdiNetworkOutline","mdiAccountGroupOutline","normalizeStyle","unref","NcIconSvgWrapper","_hoisted_1$8","_hoisted_2$7","_hoisted_3$6","_hoisted_4$6","_hoisted_5$1","_hoisted_6$1","_hoisted_7$1","_sfc_main$9","__emit","emit2","timestamp","fileExtension","extname","displayName","isDirectory","isPickable","isNavigatable","Permission","toggleSelected","handleClick","handleKeyDown","event","toHandlers","NcCheckboxRadioSwitch","t","formatFileSize","NcDateTime","FileListRow","_hoisted_1$7","_hoisted_2$6","_hoisted_3$5","_hoisted_4$5","_sfc_main$8","LoadingTableRow","useFilesSettings","filesUserState","loadState","showHiddenFiles","sortFavoritesFirst","cropImagePreviews","onMounted","isPublicShare","logger","data","axios","error","showError","useFilesViews","currentView","convertOrder","order2","filesViewsState","filesViewConfig","recentViewConfig","favoritesViewConfig","currentConfig","sortBy","order","_hoisted_1$6","_hoisted_2$5","_hoisted_3$4","_hoisted_4$4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_sfc_main$7","mergeModels","useModel","selectedFiles","customSortingConfig","filesAppSorting","sortingConfig","sortByName","sortBySize","sortByModified","toggleSorting","sortedFiles","sortNodes","selectableFiles","file","allSelected","onSelectAll","onNodeSelected","f","onChangeDirectory","dir","skeletonNumber","fileContainer","resize","nextTick","nodes","height","onUnmounted","renderList","FileList","_sfc_main$6","_hoisted_1$5","_hoisted_2$4","_hoisted_3$3","_hoisted_4$3","_sfc_render$3","IconHome","_sfc_main$5","_hoisted_1$4","_hoisted_2$3","_hoisted_3$2","_hoisted_4$2","_sfc_render$2","IconPlus","_sfc_main$4","actionsOpen","newNodeName","nameInput","useTemplateRef","validateInput","input","validity","validateFilename","InvalidFilenameError","InvalidFilenameErrorReason","onSubmit","pathElements","v","elements","NcActionInput","FilePickerBreadcrumbs","_sfc_main$3","_hoisted_1$3","_hoisted_2$2","_hoisted_3$1","_hoisted_4$1","IconClose","_sfc_main$2","_hoisted_1$2","_hoisted_2$1","IconMagnify","useViews","isAnonymous","allViews","mdiFolder","mdiClock","mdiStar","availableViews","id","getCurrentUser","currentViewObject","updateFilterValue","value","NcTextField","NcSelect","view","FilePickerNavigation","getRecentNodes","client","signal","lastTwoWeek","getRecentSearch","result","resultToNode","getNodes","join","defaultRootPath","getDefaultPropfind","nodePath","getFile","useDAVFiles","currentPath","getClient","files","shallowRef","folder","isLoading","abortController","createDirectory","directory","loadDAVFiles","getFavoriteNodes","content","watch","useMimeFilter","allowedMIMETypes","splittedTypes","filter","mime","mimeTypeArray","subtype","emit$1","isOpen","savedPath","navigatedPath","filterString","currentFolder","loadFiles","isHandlingCallback","dialogButtons","button","handleButtonClick","callback","viewHeadline","isSupportedMimeType","filteredFiles","filtered","noFilesDescription","onCreateFolder","emit","handleClose","NcDialog","isCollapsed","NcEmptyContent","FilePicker"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file diff --git a/dist/FilesSidebarTab-DTUO021l.chunk.mjs b/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs similarity index 55% rename from dist/FilesSidebarTab-DTUO021l.chunk.mjs rename to dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs index 149edcbf6acdd..e916e156d32e9 100644 --- a/dist/FilesSidebarTab-DTUO021l.chunk.mjs +++ b/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs @@ -1,4 +1,4 @@ -import{a as H}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{t as y}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{v as M}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{N}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as S}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{_ as f}from"./public-C1mLBHT3.chunk.mjs";import{o as s,f as r,g as I,t as p,h as d,m as h,r as c,af as z,J as O,k as m,F as C,c as _,w as g,B,j as F,y as L,b as $,v as q}from"./Web-DYqXJUev.chunk.mjs";import{C as P,a as v}from"./CommentView-BOeY59Ia.chunk.mjs";import{l as b}from"./activity-BZ6xFlZg.chunk.mjs";import{c as j,g as U,D as w}from"./GetComments-2IL7C9Us.chunk.mjs";const E={name:"AlertCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Z=["aria-hidden","aria-label"],J=["fill","width","height"],G={d:"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"},K={key:0};function Q(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon alert-circle-outline-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",G,[e.title?(s(),r("title",K,p(e.title),1)):d("",!0)])],8,J))],16,Z)}const W=f(E,[["render",Q]]),X={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Y=["aria-hidden","aria-label"],ee=["fill","width","height"],te={d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"},oe={key:0};function se(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon message-reply-text-outline-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",te,[e.title?(s(),r("title",oe,p(e.title),1)):d("",!0)])],8,ee))],16,Y)}const re=f(X,[["render",se]]),ie={name:"RefreshIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ne=["aria-hidden","aria-label"],ae=["fill","width","height"],le={d:"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"},ce={key:0};function me(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon refresh-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",le,[e.title?(s(),r("title",ce,p(e.title),1)):d("",!0)])],8,ae))],16,ne)}const de=f(ie,[["render",me]]);function ue(t,o,e){const a=["",t,o].join("/"),i=e.toUTCString();return j.customRequest(a,{method:"PROPPATCH",data:` +import{a as H}from"./index-mH69OG7L.chunk.mjs";import{t as y}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{v as M}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{N}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as S}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{_ as f}from"./public-C1mLBHT3.chunk.mjs";import{o as s,f as r,g as I,t as p,h as d,m as h,r as c,af as z,J as O,k as m,F as C,c as _,w as g,B,j as F,y as L,b as $,v as q}from"./Web-DYqXJUev.chunk.mjs";import{C as P,a as v}from"./CommentView-Dwuq398x.chunk.mjs";import{l as b}from"./activity-BZ6xFlZg.chunk.mjs";import{c as j,g as U,D as w}from"./GetComments-2IL7C9Us.chunk.mjs";const E={name:"AlertCircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Z=["aria-hidden","aria-label"],J=["fill","width","height"],G={d:"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"},K={key:0};function Q(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon alert-circle-outline-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",G,[e.title?(s(),r("title",K,p(e.title),1)):d("",!0)])],8,J))],16,Z)}const W=f(E,[["render",Q]]),X={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Y=["aria-hidden","aria-label"],ee=["fill","width","height"],te={d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"},oe={key:0};function se(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon message-reply-text-outline-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",te,[e.title?(s(),r("title",oe,p(e.title),1)):d("",!0)])],8,ee))],16,Y)}const re=f(X,[["render",se]]),ie={name:"RefreshIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ne=["aria-hidden","aria-label"],ae=["fill","width","height"],le={d:"M17.65,6.35C16.2,4.9 14.21,4 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C15.73,20 18.84,17.45 19.73,14H17.65C16.83,16.33 14.61,18 12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6C13.66,6 15.14,6.69 16.22,7.78L13,11H20V4L17.65,6.35Z"},ce={key:0};function me(t,o,e,a,i,n){return s(),r("span",h(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon refresh-icon",role:"img",onClick:o[0]||(o[0]=l=>t.$emit("click",l))}),[(s(),r("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[I("path",le,[e.title?(s(),r("title",ce,p(e.title),1)):d("",!0)])],8,ae))],16,ne)}const de=f(ie,[["render",me]]);function ue(t,o,e){const a=["",t,o].join("/"),i=e.toUTCString();return j.customRequest(a,{method:"PROPPATCH",data:` @@ -8,4 +8,4 @@ import{a as H}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{t as y}from"./tra `})}function pe(t){const o=new AbortController,e=o.signal;return{request:async function(a,i){return await t(a,{signal:e,...i})},abort:()=>o.abort()}}const he={name:"CommentsApp",components:{Comment:v,NcEmptyContent:S,NcButton:N,IconRefresh:de,IconMessageReplyTextOutline:re,IconAlertCircleOutline:W},directives:{elementVisibility:M},mixins:[P],expose:["update"],data(){return{error:"",loading:!1,done:!1,offset:0,comments:[],cancelRequest:()=>{},Comment:v,userData:{}}},computed:{hasComments(){return this.comments.length>0},isFirstLoading(){return this.loading&&this.offset===0}},watch:{resourceId(){this.currentResourceId=this.resourceId}},methods:{t:y,async onVisibilityChange(t){if(t)try{await ue(this.resourceType,this.currentResourceId,new Date)}catch(o){H(o.message||y("comments","Failed to mark comments as read"))}},async update(t){this.currentResourceId=t,this.resetState(),await this.getComments()},onScrollBottomReached(){this.error||this.done||this.loading||this.getComments()},async getComments(){this.cancelRequest("cancel");try{this.loading=!0,this.error="";const{request:t,abort:o}=pe(U);this.cancelRequest=o;const{data:e}=await t({resourceType:this.resourceType,resourceId:this.currentResourceId},{offset:this.offset})||{data:[]};this.logger.debug(`Processed ${e.length} comments`,{comments:e}),e.lengthe.props.id===t);o>-1?this.comments.splice(o,1):b.error("Could not find the deleted comment in the list",{id:t})},resetState(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}},ge={key:1},fe={key:2,class:"comments__info icon-loading"},ye={key:3,class:"comments__info"};function Ce(t,o,e,a,i,n){const l=c("Comment"),V=c("IconMessageReplyTextOutline"),k=c("NcEmptyContent"),R=c("IconAlertCircleOutline"),A=c("IconRefresh"),T=c("NcButton"),x=z("element-visibility");return O((s(),r("div",{class:L(["comments",{"icon-loading":n.isFirstLoading}])},[m(l,h(t.editorData,{editor:"",autoComplete:t.autoComplete,resourceType:t.resourceType,userData:i.userData,resourceId:t.currentResourceId,class:"comments__writer",onNew:n.onNewComment}),null,16,["autoComplete","resourceType","userData","resourceId","onNew"]),n.isFirstLoading?d("",!0):(s(),r(C,{key:0},[!n.hasComments&&i.done?(s(),_(k,{key:0,class:"comments__empty",name:n.t("comments","No comments yet, start the conversation!")},{icon:g(()=>[m(V)]),_:1},8,["name"])):(s(),r("ul",ge,[(s(!0),r(C,null,B(i.comments,u=>(s(),_(l,h({key:u.props.id,modelValue:u.props.message,"onUpdate:modelValue":D=>u.props.message=D,tag:"li"},{ref_for:!0},u.props,{autoComplete:t.autoComplete,resourceType:t.resourceType,resourceId:t.currentResourceId,userData:t.genMentionsData(u.props.mentions),class:"comments__list",onDelete:n.onDelete}),null,16,["modelValue","onUpdate:modelValue","autoComplete","resourceType","resourceId","userData","onDelete"]))),128))])),i.loading&&!n.isFirstLoading?(s(),r("div",fe)):n.hasComments&&i.done?(s(),r("div",ye,p(n.t("comments","No more messages")),1)):i.error?(s(),r(C,{key:4},[m(k,{class:"comments__error",name:i.error},{icon:g(()=>[m(R)]),_:1},8,["name"]),m(T,{class:"comments__retry",onClick:n.getComments},{icon:g(()=>[m(A)]),default:g(()=>[F(" "+p(n.t("comments","Retry")),1)]),_:1},8,["onClick"])],64)):d("",!0)],64))],2)),[[x,n.onVisibilityChange]])}const _e=f(he,[["render",Ce],["__scopeId","data-v-2295a278"]]),Ie=$({__name:"FilesSidebarTab",props:{node:{},active:{type:Boolean},folder:{},view:{}},setup(t){const o=t,e=q(()=>o.node?.fileid);return(a,i)=>e.value!==void 0?(s(),_(_e,{key:e.value,resourceId:e.value,resourceType:"files"},null,8,["resourceId"])):d("",!0)}}),He=Object.freeze(Object.defineProperty({__proto__:null,default:Ie},Symbol.toStringTag,{value:"Module"}));export{_e as C,He as F}; -//# sourceMappingURL=FilesSidebarTab-DTUO021l.chunk.mjs.map +//# sourceMappingURL=FilesSidebarTab-Bv3AwXFc.chunk.mjs.map diff --git a/dist/FilesSidebarTab-DTUO021l.chunk.mjs.license b/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.license similarity index 100% rename from dist/FilesSidebarTab-DTUO021l.chunk.mjs.license rename to dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.license diff --git a/dist/FilesSidebarTab-DTUO021l.chunk.mjs.map b/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.map similarity index 99% rename from dist/FilesSidebarTab-DTUO021l.chunk.mjs.map rename to dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.map index 42ea631937bc6..b4ac8698d63e3 100644 --- a/dist/FilesSidebarTab-DTUO021l.chunk.mjs.map +++ b/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"FilesSidebarTab-DTUO021l.chunk.mjs","sources":["../node_modules/vue-material-design-icons/AlertCircleOutline.vue","../node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","../node_modules/vue-material-design-icons/Refresh.vue","../build/frontend/apps/comments/src/services/ReadComments.ts","../build/frontend/apps/comments/src/utils/cancelableRequest.ts","../build/frontend/apps/comments/src/views/CommentsApp.vue","../build/frontend/apps/comments/src/views/FilesSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Response } from 'webdav'\n\nimport client from './DavClient.ts'\n\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(\n\tresourceType: string,\n\tresourceId: number,\n\tdate: Date,\n): Promise {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\tconst readMarker = date.toUTCString()\n\n\treturn client.customRequest(resourcePath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param request the axios promise request\n * @return\n */\nfunction cancelableRequest(request: (url: string, options?: Record) => Promise) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param url the url to send the request to\n\t * @param [options] optional config for the request\n\t */\n\tconst fetch = async function(url: string, options?: Record) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","\n\n\n\n\n\n\n","\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","markCommentsAsRead","resourceType","resourceId","date","resourcePath","readMarker","client","cancelableRequest","request","controller","signal","url","options","Comment","NcEmptyContent","NcButton","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","t","isVisible","e","showError","abort","getComments","comments","DEFAULT_LIMIT","comment","error","logger","id","index","_normalizeClass","$options","_createVNode","_component_Comment","$data","_Fragment","_createBlock","_component_NcEmptyContent","_component_IconMessageReplyTextOutline","_hoisted_1","_renderList","_hoisted_2","_toDisplayString","_component_IconAlertCircleOutline","_component_NcButton","_component_IconRefresh","_createTextVNode","props","__props","computed","CommentsApp"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file +{"version":3,"file":"FilesSidebarTab-Bv3AwXFc.chunk.mjs","sources":["../node_modules/vue-material-design-icons/AlertCircleOutline.vue","../node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","../node_modules/vue-material-design-icons/Refresh.vue","../build/frontend/apps/comments/src/services/ReadComments.ts","../build/frontend/apps/comments/src/utils/cancelableRequest.ts","../build/frontend/apps/comments/src/views/CommentsApp.vue","../build/frontend/apps/comments/src/views/FilesSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Response } from 'webdav'\n\nimport client from './DavClient.ts'\n\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(\n\tresourceType: string,\n\tresourceId: number,\n\tdate: Date,\n): Promise {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\tconst readMarker = date.toUTCString()\n\n\treturn client.customRequest(resourcePath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param request the axios promise request\n * @return\n */\nfunction cancelableRequest(request: (url: string, options?: Record) => Promise) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param url the url to send the request to\n\t * @param [options] optional config for the request\n\t */\n\tconst fetch = async function(url: string, options?: Record) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","\n\n\n\n\n\n\n","\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","markCommentsAsRead","resourceType","resourceId","date","resourcePath","readMarker","client","cancelableRequest","request","controller","signal","url","options","Comment","NcEmptyContent","NcButton","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","t","isVisible","e","showError","abort","getComments","comments","DEFAULT_LIMIT","comment","error","logger","id","index","_normalizeClass","$options","_createVNode","_component_Comment","$data","_Fragment","_createBlock","_component_NcEmptyContent","_component_IconMessageReplyTextOutline","_hoisted_1","_renderList","_hoisted_2","_toDisplayString","_component_IconAlertCircleOutline","_component_NcButton","_component_IconRefresh","_createTextVNode","props","__props","computed","CommentsApp"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/dist/FilesSidebarTab-DTUO021l.chunk.mjs.map.license b/dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.map.license similarity index 100% rename from dist/FilesSidebarTab-DTUO021l.chunk.mjs.map.license rename to dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs.map.license diff --git a/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs b/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs new file mode 100644 index 0000000000000..f65c742a61a3d --- /dev/null +++ b/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs @@ -0,0 +1,26 @@ +import{d as j,a as Y}from"./index-mH69OG7L.chunk.mjs";import{a as B,q as te,g as oe,b as J,h as se,j as ne,n as re,f as N}from"./index-Cp0kcsps.chunk.mjs";import{t as c,b as O}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{w as ae,d as le}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{D as ce,N as de}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{f as ue}from"./index-BGv_Bbjs.chunk.mjs";import{_ as D,l as ve}from"./public-C1mLBHT3.chunk.mjs";import{N as I,P as me}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{N as pe,_ as fe}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{N as he}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{D as ge,N as be,s as ye}from"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import{o as a,f as m,g as C,t as _,h as y,m as Q,b as P,l as $,c as H,w as h,u as d,j as E,k as S,v as g,D as G,p as we,E as X,i as M,O as ee,z as _e,F as Ce,B as ke}from"./Web-DYqXJUev.chunk.mjs";import{P as Z}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import{N as Ve}from"./index-CmDAUQql.chunk.mjs";import{_ as Se}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{c as He}from"./index-CkGt55pS.chunk.mjs";import{g as ze}from"./dav-DpOWisxz.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const Le={name:"BackupRestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ae=["aria-hidden","aria-label"],$e=["fill","width","height"],xe={d:"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"},De={key:0};function Ee(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon backup-restore-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",xe,[i.title?(a(),m("title",De,_(i.title),1)):y("",!0)])],8,$e))],16,Ae)}const Te=D(Le,[["render",Ee]]),Ne={name:"FileCompareIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ie=["aria-hidden","aria-label"],Me=["fill","width","height"],Be={d:"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z"},Oe={key:0};function Pe(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon file-compare-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Be,[i.title?(a(),m("title",Oe,_(i.title),1)):y("",!0)])],8,Me))],16,Ie)}const Re=D(Ne,[["render",Pe]]),Fe={name:"ImageOffOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ue=["aria-hidden","aria-label"],qe=["fill","width","height"],Ke={d:"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8"},We={key:0};function je(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon image-off-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Ke,[i.title?(a(),m("title",We,_(i.title),1)):y("",!0)])],8,qe))],16,Ue)}const Ye=D(Fe,[["render",je]]),Ze={key:0,class:"version__image"},Je=["src"],Ge={key:2,class:"version__image"},Qe={class:"version__info"},Xe=["title"],ei={key:1,class:"version__info","data-cy-files-version-author-name":""},ii={key:0},ti=["title"],oi={class:"version__info version__info__subline"},si=P({__name:"VersionEntry",props:{version:{},node:{},isCurrent:{type:Boolean},isFirstVersion:{type:Boolean},loadPreview:{type:Boolean},canView:{type:Boolean},canCompare:{type:Boolean}},emits:["click","compare","restore","delete","labelUpdateRequest"],setup(e,{emit:t}){const i=e,n=t,v=$(!1),r=$(!1),l=$(ve("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})),k=g(()=>ue(i.version.size)),f=g(()=>{const p=i.version.label??"";return i.isCurrent?p===""?c("files_versions","Current version"):`${p} (${c("files_versions","Current version")})`:i.isFirstVersion&&p===""?c("files_versions","Initial version"):p}),w=g(()=>!i.version.author||!i.version.authorName?"":i.version.author===B()?.uid?c("files_versions","You"):i.version.authorName??i.version.author),s=g(()=>new Date(i.version.mtime).toLocaleString([O(),O().split("-")[0]],{timeStyle:"long",dateStyle:"long"})),V=g(()=>i.isCurrent?i.node.source:te()+i.version.url),A=g(()=>l.value.files.version_labeling===!0),z=g(()=>l.value.files.version_deletion===!0),F=g(()=>b(i.node,Z.DELETE)),T=g(()=>b(i.node,Z.UPDATE)),U=g(()=>!((i.node.permissions&Z.READ)===0||i.node.attributes["mount-type"]==="shared"&&i.node.attributes["share-attributes"]&&(JSON.parse(i.node.attributes["share-attributes"]).find(p=>p.scope==="permissions"&&p.key==="download")||{})?.value===!1));function q(){n("labelUpdateRequest")}function K(){n("restore",i.version)}async function W(){await G(),await G(),n("delete",i.version)}function o(p){i.canView&&p.preventDefault(),n("click",i.version)}function u(){if(!i.canView)throw new Error("Cannot compare version of this file");n("compare",i.version)}function b(p,L){return(p.permissions&L)!==0}return(p,L)=>(a(),H(d(be),{class:"version",forceDisplayActions:!0,"actions-aria-label":d(c)("files_versions","Actions for version from {versionHumanExplicitDate}",{versionHumanExplicitDate:s.value}),"data-files-versions-version":e.version.fileVersion,href:V.value,onClick:o},{icon:h(()=>[e.loadPreview||v.value?e.version.previewUrl&&!r.value?(a(),m("img",{key:1,src:e.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy",class:"version__image",onLoad:L[0]||(L[0]=ie=>v.value=!0),onError:L[1]||(L[1]=ie=>r.value=!0)},null,40,Je)):(a(),m("div",Ge,[S(Ye,{size:20})])):(a(),m("div",Ze))]),name:h(()=>[C("div",Qe,[f.value?(a(),m("div",{key:0,class:"version__info__label","data-cy-files-version-label":"",title:f.value},_(f.value),9,Xe)):y("",!0),w.value?(a(),m("div",ei,[f.value?(a(),m("span",ii,"•")):y("",!0),S(d(he),{class:"avatar",user:e.version.author??void 0,size:20,disableMenu:"",disableTooltip:"",hideStatus:""},null,8,["user"]),C("div",{class:"version__info__author_name",title:w.value},_(w.value),9,ti)])):y("",!0)])]),subname:h(()=>[C("div",oi,[S(d(fe),{class:"version__info__date",relativeTime:"short",timestamp:e.version.mtime},null,8,["timestamp"]),L[2]||(L[2]=C("span",null,"•",-1)),C("span",null,_(k.value),1)])]),actions:h(()=>[A.value&&T.value?(a(),H(d(I),{key:0,"data-cy-files-versions-version-action":"label",closeAfterClick:!0,onClick:q},{icon:h(()=>[S(me,{size:22})]),default:h(()=>[E(" "+_(e.version.label===""?d(c)("files_versions","Name this version"):d(c)("files_versions","Edit version name")),1)]),_:1})):y("",!0),!e.isCurrent&&e.canView&&e.canCompare?(a(),H(d(I),{key:1,"data-cy-files-versions-version-action":"compare",closeAfterClick:!0,onClick:u},{icon:h(()=>[S(Re,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Compare to current version")),1)]),_:1})):y("",!0),!e.isCurrent&&T.value?(a(),H(d(I),{key:2,"data-cy-files-versions-version-action":"restore",closeAfterClick:!0,onClick:K},{icon:h(()=>[S(Te,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Restore version")),1)]),_:1})):y("",!0),U.value?(a(),H(d(pe),{key:3,"data-cy-files-versions-version-action":"download",href:V.value,closeAfterClick:!0,download:V.value},{icon:h(()=>[S(ge,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Download version")),1)]),_:1},8,["href","download"])):y("",!0),!e.isCurrent&&z.value&&F.value?(a(),H(d(I),{key:4,"data-cy-files-versions-version-action":"delete",closeAfterClick:!0,onClick:W},{icon:h(()=>[S(ce,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Delete version")),1)]),_:1})):y("",!0)]),_:1},8,["actions-aria-label","data-files-versions-version","href"]))}}),ni=D(si,[["__scopeId","data-v-037e7d96"]]),ri={class:"version-label-modal__info"},ai=P({__name:"VersionLabelDialog",props:{open:{type:Boolean,default:!1},label:{type:String,default:""}},emits:["update:open","update:label"],setup(e,{emit:t}){const i=e,n=t,v=we("labelInput"),r=$(""),l=g(()=>{const f=[];return i.label.trim()===""?f.push({label:c("files_versions","Cancel")}):f.push({label:c("files_versions","Remove version name"),type:"reset",variant:"error",callback:()=>{k("")}}),[...f,{label:c("files_versions","Save version name"),icon:ye,type:"submit",variant:"primary"}]});X(()=>{r.value=i.label??""}),X(()=>{i.open&&G(()=>v.value?.focus()),r.value=i.label});function k(f){n("update:label",f)}return(f,w)=>(a(),H(d(Ve),{buttons:l.value,contentClasses:"version-label-modal",isForm:"",open:e.open,size:"normal",name:d(c)("files_versions","Name this version"),"onUpdate:open":w[1]||(w[1]=s=>f.$emit("update:open",s)),onSubmit:w[2]||(w[2]=s=>k(r.value))},{default:h(()=>[S(d(Se),{ref_key:"labelInput",ref:v,modelValue:r.value,"onUpdate:modelValue":w[0]||(w[0]=s=>r.value=s),class:"version-label-modal__input",label:d(c)("files_versions","Version name"),placeholder:d(c)("files_versions","Version name")},null,8,["modelValue","label","placeholder"]),C("p",ri,_(d(c)("files_versions","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.")),1)]),_:1},8,["buttons","open","name"]))}}),li=D(ai,[["__scopeId","data-v-0955585b"]]),x=oe().setApp("files_version").detectUser().build(),ci=P({name:"VirtualScrolling",props:{sections:{type:Array,required:!0},containerElement:{type:HTMLElement,default:null},useWindow:{type:Boolean,default:!1},headerHeight:{type:Number,default:75},renderDistance:{type:Number,default:.5},bottomBufferRatio:{type:Number,default:2},scrollToKey:{type:String,default:""}},emits:["needContent"],data(){return{scrollPosition:0,containerHeight:0,rowsContainerHeight:0,resizeObserver:null}},computed:{visibleSections(){x.debug("[VirtualScrolling] Computing visible section",{sections:this.sections});const e=this.containerHeight,t=this.scrollPosition,i=t+e;let n=0,v=0;const r=this.sections.map(s=>(v+=this.headerHeight,{...s,rows:s.rows.reduce((V,A)=>{n=v,v+=A.height;let z=0;return vi&&(z=(n-i)/e),z>this.renderDistance?V:[...V,{...A,distance:z}]},[])})).filter(s=>s.rows.length>0),l=r.flatMap(({rows:s})=>s).flatMap(({items:s})=>s),k=this._rowIdToKeyMap;l.forEach(s=>s.key=k[s.id]);const f=l.map(({key:s})=>s).filter(s=>s!==void 0),w=Object.values(k).filter(s=>!f.includes(s));return l.filter(({key:s})=>s===void 0).forEach(s=>s.key=w.pop()??Math.random().toString(36).substr(2)),this._rowIdToKeyMap=l.reduce((s,{id:V,key:A})=>({...s,[`${V}`]:A}),{}),r},totalHeight(){return this.sections.map(e=>this.headerHeight+e.height).reduce((e,t)=>e+t,0)+0},paddingTop(){if(this.visibleSections.length===0)return 0;let e=0;for(const t of this.sections){if(t.key!==this.visibleSections[0].rows[0].sectionKey){e+=this.headerHeight+t.height;continue}for(const i of t.rows){if(i.key===this.visibleSections[0].rows[0].key)return e;e+=i.height}e+=this.headerHeight}return e},rowsContainerStyle(){return{height:`${this.totalHeight}px`,paddingTop:`${this.paddingTop}px`}},isNearBottom(){const e=this.containerHeight*this.bottomBufferRatio;return this.scrollPosition+this.containerHeight>=this.totalHeight-e},container(){return x.debug("[VirtualScrolling] Computing container"),this.containerElement!==null?this.containerElement:this.useWindow?window:this.$refs.container}},watch:{isNearBottom(e){x.debug("[VirtualScrolling] isNearBottom changed",{value:e}),e&&this.$emit("needContent")},visibleSections(){this.isNearBottom&&this.$emit("needContent")},scrollToKey(e){let t=0;for(const i of this.sections){if(i.key!==e){t+=this.headerHeight+i.height;continue}break}x.debug("[VirtualScrolling] Scrolling to",{currentRowTopDistanceFromTop:t}),this.container.scrollTo({top:t,behavior:"smooth"})}},beforeCreate(){this._rowIdToKeyMap={}},mounted(){this.resizeObserver=new ResizeObserver(e=>{for(const t of e){const i=t.contentRect;t.target===this.container&&(this.containerHeight=i.height),t.target.classList.contains("vs-rows-container")&&(this.rowsContainerHeight=i.height)}}),this.useWindow?(window.addEventListener("resize",this.updateContainerSize,{passive:!0}),this.containerHeight=window.innerHeight):this.resizeObserver.observe(this.container),this.resizeObserver.observe(this.$refs.rowsContainer),this.container.addEventListener("scroll",this.updateScrollPosition,{passive:!0})},beforeUnmount(){this.useWindow&&window.removeEventListener("resize",this.updateContainerSize),this.resizeObserver?.disconnect(),this.container.removeEventListener("scroll",this.updateScrollPosition)},methods:{updateScrollPosition(){this._onScrollHandle??=requestAnimationFrame(()=>{this._onScrollHandle=null,this.useWindow?this.scrollPosition=this.container.scrollY:this.scrollPosition=this.container.scrollTop})},updateContainerSize(){this.containerHeight=window.innerHeight}}}),di={key:0,ref:"container",class:"vs-container"};function ui(e,t,i,n,v,r){return!e.useWindow&&e.containerElement===null?(a(),m("div",di,[C("div",{ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[M(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),M(e.$slots,"loader",{},void 0,!0)],4)],512)):(a(),m("div",{key:1,ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[M(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),M(e.$slots,"loader",{},void 0,!0)],4))}const vi=D(ci,[["render",ui],["__scopeId","data-v-0a27da21"]]),mi=` + + + + + + + + + + +`,R=ze();async function pi(e){const t=`/versions/${B()?.uid}/versions/${e.fileid}`;try{const i=(await R.getDirectoryContents(t,{data:mi,details:!0})).data.filter(({mime:r})=>r!=="").map(r=>hi(r,e)),n=new Set(i.map(r=>String(r.author))),v=await He.post(J("/displaynames"),{users:[...n]});for(const r of i){const l=v.data.users[r.author??""];l&&(r.authorName=l)}return i}catch(i){throw x.error("Could not fetch version",{exception:i}),i}}async function fi(e){try{x.debug("Restoring version",{url:e.url}),await R.moveFile(`/versions/${B()?.uid}/versions/${e.fileId}/${e.fileVersion}`,`/versions/${B()?.uid}/restore/target`)}catch(t){throw x.error("Could not restore version",{exception:t}),t}}function hi(e,t){const i=Date.parse(e.lastmod);let n;return i===t.mtime?.getTime()?n=J("/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1",{fileId:t.id,fileEtag:t.attributes.etag}):n=J("/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1",{file:t.path,fileVersion:e.basename}),{fileId:t.id,label:e.props["version-label"]?String(e.props["version-label"]):"",author:e.props["version-author"]?String(e.props["version-author"]):null,authorName:null,filename:e.filename,basename:new Date(i).toLocaleString([O(),O().split("-")[0]],{timeStyle:"long",dateStyle:"medium"}),mime:e.mime,etag:`${e.props.getetag}`,size:e.size,type:e.type,mtime:i,permissions:"R",previewUrl:n,url:re("/remote.php/dav",e.filename),source:se("dav")+ne(e.filename),fileVersion:e.basename}}async function gi(e,t){return await R.customRequest(e.filename,{method:"PROPPATCH",data:` + + + + ${t} + + + `})}async function bi(e){await R.deleteFile(e.filename)}const yi={key:0,class:"versions-tab__container"},wi=["aria-label"],ji=P({__name:"FilesVersionsSidebarTab",props:{active:{type:Boolean},node:{},folder:{},view:{}},setup(e){const t=e,i=le(),n=$([]),v=$(!1),r=$(!1),l=$(null),k=g(()=>t.node?.mtime?.getTime()??0),f=g(()=>[...n.value].sort((o,u)=>t.node?o.mtime===t.node.mtime?.getTime()?-1:u.mtime===t.node.mtime?.getTime()?1:u.mtime-o.mtime:0)),w=g(()=>[{key:"versions",rows:f.value.map(o=>({key:o.mtime.toString(),height:68,sectionKey:"versions",items:[{id:o.mtime.toString(),version:o}]})),height:68*f.value.length}]),s=g(()=>n.value.map(o=>o.mtime).reduce((o,u)=>Math.min(o,u))),V=g(()=>t.node?window.OCA.Viewer?.mimetypes?.includes(t.node?.mime):!1),A=g(()=>!i.value&&window.OCA.Viewer?.mimetypesCompare?.includes(t.node?.mime));_e(()=>t.node.id,z,{immediate:!0}),ae(k,z,{debounce:600});async function z(){try{v.value=!0,n.value=await pi(t.node)}finally{v.value=!1}}async function F(o){if(!t.node)return;const u=t.node.clone();u.attributes.etag=o.etag,u.size=o.size,u.mtime=new Date(o.mtime);const b={preventDefault:!1,node:u,version:o};if(N("files_versions:restore:requested",b),!b.preventDefault)try{await fi(o),o.label?j(c("files_versions",`${o.label} restored`)):o.mtime===s.value?j(c("files_versions","Initial version restored")):j(c("files_versions","Version restored")),N("files:node:updated",u),N("files_versions:restore:restored",{node:u,version:o})}catch{Y(c("files_versions","Could not restore version")),N("files_versions:restore:failed",o)}}function T(o){r.value=!0,l.value=o}async function U(o){if(l.value===null)throw new Error("editedVersion should be set at that point");const u=l.value.label;l.value.label=o,r.value=!1;try{await gi(l.value,o),l.value=null}catch(b){l.value.label=u,Y(c("files_versions","Could not set version label")),x.error("Could not set version label",{exception:b})}}async function q(o){const u=n.value.indexOf(o);n.value.splice(u,1);try{await bi(o)}catch{n.value.push(o),Y(c("files_versions","Could not delete version"))}}function K(o){if(t.node!==null){if(o.mtime===t.node?.mtime?.getTime()){window.OCA.Viewer.open({path:t.node.path});return}window.OCA.Viewer.open({fileInfo:{...o,filename:o.filename,previewUrl:void 0},enableSidebar:!1})}}function W(o){const u=n.value.map(b=>({...b,previewUrl:void 0}));window.OCA.Viewer.compare({path:t.node.path},u.find(b=>b.source===o.source))}return(o,u)=>e.node?(a(),m("div",yi,[S(vi,{sections:w.value,headerHeight:0},{default:h(({visibleSections:b})=>[C("ul",{"aria-label":d(c)("files_versions","File versions"),"data-files-versions-versions-list":""},[b.length===1?(a(!0),m(Ce,{key:0},ke(b[0].rows,p=>(a(),H(ni,{key:p.items[0].version.mtime,canView:V.value,canCompare:A.value,loadPreview:e.active,version:p.items[0].version,node:e.node,isCurrent:p.items[0].version.mtime===k.value,isFirstVersion:p.items[0].version.mtime===s.value,onClick:K,onCompare:W,onRestore:F,onLabelUpdateRequest:L=>T(p.items[0].version),onDelete:q},null,8,["canView","canCompare","loadPreview","version","node","isCurrent","isFirstVersion","onLabelUpdateRequest"]))),128)):y("",!0)],8,wi)]),loader:h(()=>[v.value?(a(),H(d(de),{key:0,class:"files-list-viewer__loader"})):y("",!0)]),_:1},8,["sections"]),l.value?(a(),H(li,{key:0,open:r.value,"onUpdate:open":u[0]||(u[0]=b=>r.value=b),label:l.value.label,"onUpdate:label":U},null,8,["open","label"])):y("",!0)])):y("",!0)}});export{ji as default}; +//# sourceMappingURL=FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map diff --git a/dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs.license b/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.license similarity index 100% rename from dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs.license rename to dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.license diff --git a/dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs.map b/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map similarity index 99% rename from dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs.map rename to dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map index 6b32d5cdd490b..226f6a036459f 100644 --- a/dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs.map +++ b/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"FilesVersionsSidebarTab-mZplOG03.chunk.mjs","sources":["../node_modules/vue-material-design-icons/BackupRestore.vue","../node_modules/vue-material-design-icons/FileCompare.vue","../node_modules/vue-material-design-icons/ImageOffOutline.vue","../build/frontend/apps/files_versions/src/components/VersionEntry.vue","../build/frontend/apps/files_versions/src/components/VersionLabelDialog.vue","../build/frontend/apps/files_versions/src/utils/logger.ts","../build/frontend/apps/files_versions/src/components/VirtualScrolling.vue","../build/frontend/apps/files_versions/src/utils/davRequest.ts","../build/frontend/apps/files_versions/src/utils/versions.ts","../build/frontend/apps/files_versions/src/views/FilesVersionsSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getClient } from '@nextcloud/files/dav'\nimport { getCanonicalLocale } from '@nextcloud/l10n'\nimport { encodePath, join } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport davRequest from '../utils/davRequest.ts'\nimport logger from '../utils/logger.ts'\n\nexport interface Version {\n\tfileId: string // The id of the file associated to the version.\n\tlabel: string // 'Current version' or ''\n\tauthor: string | null // UID for the author of the version\n\tauthorName: string | null // Display name of the author\n\tfilename: string // File name relative to the version DAV endpoint\n\tbasename: string // A base name generated from the mtime\n\tmime: string // Empty for the current version, else the actual mime type of the version\n\tetag: string // Empty for the current version, else the actual mime type of the version\n\tsize: number // File size in bytes\n\ttype: string // 'file'\n\tmtime: number // Version creation date as a timestamp\n\tpermissions: string // Only readable: 'R'\n\tpreviewUrl: string // Preview URL of the version\n\turl: string // Download URL of the version\n\tsource: string // The WebDAV endpoint of the resource\n\tfileVersion: string | null // The version id, null for the current version\n}\n\nconst client = getClient()\n\n/**\n * Get file versions for a given node\n *\n * @param node - The node to fetch versions for\n */\nexport async function fetchVersions(node: INode): Promise {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${node.fileid}`\n\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t}) as ResponseDataDetailed\n\n\t\tconst versions = response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map((version) => formatVersion(version as Required, node))\n\n\t\tconst authorIds = new Set(versions.map((version) => String(version.author)))\n\t\tconst authors = await axios.post(generateUrl('/displaynames'), { users: [...authorIds] })\n\n\t\tfor (const version of versions) {\n\t\t\tconst author = authors.data.users[version.author ?? '']\n\t\t\tif (author) {\n\t\t\t\tversion.authorName = author\n\t\t\t}\n\t\t}\n\n\t\treturn versions\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param version - The version to restore\n */\nexport async function restoreVersion(version: Version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param version - The version data from WebDAV\n * @param node - The original node\n */\nfunction formatVersion(version: Required, node: INode): Version {\n\tconst mtime = Date.parse(version.lastmod)\n\n\tlet previewUrl: string\n\tif (mtime === node.mtime?.getTime()) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1', {\n\t\t\tfileId: node.id,\n\t\t\tfileEtag: node.attributes.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1', {\n\t\t\tfile: node.path,\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: node.id!,\n\t\t// If version-label is defined make sure it is a string (prevent issue if the label is a number an PHP returns a number then)\n\t\tlabel: version.props['version-label'] ? String(version.props['version-label']) : '',\n\t\tauthor: version.props['version-author'] ? String(version.props['version-author']) : null,\n\t\tauthorName: null,\n\t\tfilename: version.filename,\n\t\tbasename: new Date(mtime).toLocaleString(\n\t\t\t[getCanonicalLocale(), getCanonicalLocale().split('-')[0]!],\n\t\t\t{\n\t\t\t\ttimeStyle: 'long',\n\t\t\t\tdateStyle: 'medium',\n\t\t\t},\n\t\t),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\tpreviewUrl,\n\t\turl: join('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * Set version label\n *\n * @param version - The version to set the label for\n * @param newLabel - The new label\n */\nexport async function setVersionLabel(version: Version, newLabel: string) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${newLabel}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t`,\n\t\t},\n\t)\n}\n\n/**\n * Delete version\n *\n * @param version - The version to delete\n */\nexport async function deleteVersion(version: Version) {\n\tawait client.deleteFile(version.filename)\n}\n","\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","props","__props","emit","__emit","previewLoaded","ref","previewErrored","capabilities","loadState","humanReadableSize","computed","formatFileSize","versionLabel","label","t","versionAuthor","getCurrentUser","versionHumanExplicitDate","getCanonicalLocale","downloadURL","getRootUrl","enableLabeling","enableDeletion","hasDeletePermissions","hasPermission","Permission","hasUpdatePermissions","isDownloadable","attribute","labelUpdate","restoreVersion","deleteVersion","nextTick","click","event","compareVersion","node","permission","_createBlock","_unref","NcListItem","_createVNode","ImageOffOutline","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","NcAvatar","_hoisted_8","_hoisted_9","NcDateTime","NcActionButton","Pencil","_createTextVNode","FileCompare","BackupRestore","NcActionLink","Download","Delete","labelInput","useTemplateRef","internalLabel","dialogButtons","buttons","setVersionLabel","svgCheck","watchEffect","NcDialog","$emit","NcTextField","_toDisplayString","logger","getLoggerBuilder","_sfc_main$1","defineComponent","containerHeight","containerTop","containerBottom","currentRowTop","currentRowBottom","visibleSections","section","visibleRows","row","distance","visibleItems","rows","items","rowIdToKeyMap","item","usedTokens","key","unusedTokens","finalMapping","id","totalHeight","sectionHeight","paddingTop","buffer","value","currentRowTopDistanceFromTop","entries","entry","cr","_normalizeStyle","_renderSlot","davRequest","client","getClient","fetchVersions","path","versions","mime","version","formatVersion","authorIds","authors","axios","generateUrl","author","exception","mtime","previewUrl","join","generateRemoteUrl","encodePath","newLabel","isMobile","useIsMobile","loading","showVersionLabelForm","editedVersion","currentVersionMtime","orderedVersions","a","b","sections","initialVersionMtime","canView","canCompare","watch","loadVersions","watchDebounced","handleRestore","restoredNode","restoreStartedEventState","showSuccess","showError","handleLabelUpdateRequest","handleLabelUpdate","oldLabel","handleDelete","index","openVersion","_versions","v","VirtualScrolling","_withCtx","_Fragment","_renderList","VersionEntry","NcLoadingIcon","VersionLabelDialog"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file +{"version":3,"file":"FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs","sources":["../node_modules/vue-material-design-icons/BackupRestore.vue","../node_modules/vue-material-design-icons/FileCompare.vue","../node_modules/vue-material-design-icons/ImageOffOutline.vue","../build/frontend/apps/files_versions/src/components/VersionEntry.vue","../build/frontend/apps/files_versions/src/components/VersionLabelDialog.vue","../build/frontend/apps/files_versions/src/utils/logger.ts","../build/frontend/apps/files_versions/src/components/VirtualScrolling.vue","../build/frontend/apps/files_versions/src/utils/davRequest.ts","../build/frontend/apps/files_versions/src/utils/versions.ts","../build/frontend/apps/files_versions/src/views/FilesVersionsSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getClient } from '@nextcloud/files/dav'\nimport { getCanonicalLocale } from '@nextcloud/l10n'\nimport { encodePath, join } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport davRequest from '../utils/davRequest.ts'\nimport logger from '../utils/logger.ts'\n\nexport interface Version {\n\tfileId: string // The id of the file associated to the version.\n\tlabel: string // 'Current version' or ''\n\tauthor: string | null // UID for the author of the version\n\tauthorName: string | null // Display name of the author\n\tfilename: string // File name relative to the version DAV endpoint\n\tbasename: string // A base name generated from the mtime\n\tmime: string // Empty for the current version, else the actual mime type of the version\n\tetag: string // Empty for the current version, else the actual mime type of the version\n\tsize: number // File size in bytes\n\ttype: string // 'file'\n\tmtime: number // Version creation date as a timestamp\n\tpermissions: string // Only readable: 'R'\n\tpreviewUrl: string // Preview URL of the version\n\turl: string // Download URL of the version\n\tsource: string // The WebDAV endpoint of the resource\n\tfileVersion: string | null // The version id, null for the current version\n}\n\nconst client = getClient()\n\n/**\n * Get file versions for a given node\n *\n * @param node - The node to fetch versions for\n */\nexport async function fetchVersions(node: INode): Promise {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${node.fileid}`\n\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t}) as ResponseDataDetailed\n\n\t\tconst versions = response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map((version) => formatVersion(version as Required, node))\n\n\t\tconst authorIds = new Set(versions.map((version) => String(version.author)))\n\t\tconst authors = await axios.post(generateUrl('/displaynames'), { users: [...authorIds] })\n\n\t\tfor (const version of versions) {\n\t\t\tconst author = authors.data.users[version.author ?? '']\n\t\t\tif (author) {\n\t\t\t\tversion.authorName = author\n\t\t\t}\n\t\t}\n\n\t\treturn versions\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param version - The version to restore\n */\nexport async function restoreVersion(version: Version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param version - The version data from WebDAV\n * @param node - The original node\n */\nfunction formatVersion(version: Required, node: INode): Version {\n\tconst mtime = Date.parse(version.lastmod)\n\n\tlet previewUrl: string\n\tif (mtime === node.mtime?.getTime()) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1', {\n\t\t\tfileId: node.id,\n\t\t\tfileEtag: node.attributes.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1', {\n\t\t\tfile: node.path,\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: node.id!,\n\t\t// If version-label is defined make sure it is a string (prevent issue if the label is a number an PHP returns a number then)\n\t\tlabel: version.props['version-label'] ? String(version.props['version-label']) : '',\n\t\tauthor: version.props['version-author'] ? String(version.props['version-author']) : null,\n\t\tauthorName: null,\n\t\tfilename: version.filename,\n\t\tbasename: new Date(mtime).toLocaleString(\n\t\t\t[getCanonicalLocale(), getCanonicalLocale().split('-')[0]!],\n\t\t\t{\n\t\t\t\ttimeStyle: 'long',\n\t\t\t\tdateStyle: 'medium',\n\t\t\t},\n\t\t),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\tpreviewUrl,\n\t\turl: join('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * Set version label\n *\n * @param version - The version to set the label for\n * @param newLabel - The new label\n */\nexport async function setVersionLabel(version: Version, newLabel: string) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${newLabel}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t`,\n\t\t},\n\t)\n}\n\n/**\n * Delete version\n *\n * @param version - The version to delete\n */\nexport async function deleteVersion(version: Version) {\n\tawait client.deleteFile(version.filename)\n}\n","\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","props","__props","emit","__emit","previewLoaded","ref","previewErrored","capabilities","loadState","humanReadableSize","computed","formatFileSize","versionLabel","label","t","versionAuthor","getCurrentUser","versionHumanExplicitDate","getCanonicalLocale","downloadURL","getRootUrl","enableLabeling","enableDeletion","hasDeletePermissions","hasPermission","Permission","hasUpdatePermissions","isDownloadable","attribute","labelUpdate","restoreVersion","deleteVersion","nextTick","click","event","compareVersion","node","permission","_createBlock","_unref","NcListItem","_createVNode","ImageOffOutline","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","NcAvatar","_hoisted_8","_hoisted_9","NcDateTime","NcActionButton","Pencil","_createTextVNode","FileCompare","BackupRestore","NcActionLink","Download","Delete","labelInput","useTemplateRef","internalLabel","dialogButtons","buttons","setVersionLabel","svgCheck","watchEffect","NcDialog","$emit","NcTextField","_toDisplayString","logger","getLoggerBuilder","_sfc_main$1","defineComponent","containerHeight","containerTop","containerBottom","currentRowTop","currentRowBottom","visibleSections","section","visibleRows","row","distance","visibleItems","rows","items","rowIdToKeyMap","item","usedTokens","key","unusedTokens","finalMapping","id","totalHeight","sectionHeight","paddingTop","buffer","value","currentRowTopDistanceFromTop","entries","entry","cr","_normalizeStyle","_renderSlot","davRequest","client","getClient","fetchVersions","path","versions","mime","version","formatVersion","authorIds","authors","axios","generateUrl","author","exception","mtime","previewUrl","join","generateRemoteUrl","encodePath","newLabel","isMobile","useIsMobile","loading","showVersionLabelForm","editedVersion","currentVersionMtime","orderedVersions","a","b","sections","initialVersionMtime","canView","canCompare","watch","loadVersions","watchDebounced","handleRestore","restoredNode","restoreStartedEventState","showSuccess","showError","handleLabelUpdateRequest","handleLabelUpdate","oldLabel","handleDelete","index","openVersion","_versions","v","VirtualScrolling","_withCtx","_Fragment","_renderList","VersionEntry","NcLoadingIcon","VersionLabelDialog"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs.map.license b/dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map.license similarity index 100% rename from dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs.map.license rename to dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs.map.license diff --git a/dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs b/dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs deleted file mode 100644 index 0e72d0ddf0d32..0000000000000 --- a/dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs +++ /dev/null @@ -1,26 +0,0 @@ -import{d as j,a as Y}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{a as B,q as te,g as oe,b as J,h as se,j as ne,n as re,f as N}from"./index-Cp0kcsps.chunk.mjs";import{t as c,b as O}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{w as ae,d as le}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{D as ce,N as de}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{f as ue}from"./index-BGv_Bbjs.chunk.mjs";import{_ as D,l as ve}from"./public-C1mLBHT3.chunk.mjs";import{N as I,P as me}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{N as pe,_ as fe}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{N as he}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{D as ge,N as be,s as ye}from"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import{o as a,f as m,g as C,t as _,h as y,m as Q,b as P,l as $,c as H,w as h,u as d,j as E,k as S,v as g,D as G,p as we,E as X,i as M,O as ee,z as _e,F as Ce,B as ke}from"./Web-DYqXJUev.chunk.mjs";import{P as Z}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import{N as Ve}from"./index-CmDAUQql.chunk.mjs";import{_ as Se}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{c as He}from"./index-CkGt55pS.chunk.mjs";import{g as ze}from"./dav-DpOWisxz.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const Le={name:"BackupRestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ae=["aria-hidden","aria-label"],$e=["fill","width","height"],xe={d:"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"},De={key:0};function Ee(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon backup-restore-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",xe,[i.title?(a(),m("title",De,_(i.title),1)):y("",!0)])],8,$e))],16,Ae)}const Te=D(Le,[["render",Ee]]),Ne={name:"FileCompareIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ie=["aria-hidden","aria-label"],Me=["fill","width","height"],Be={d:"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z"},Oe={key:0};function Pe(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon file-compare-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Be,[i.title?(a(),m("title",Oe,_(i.title),1)):y("",!0)])],8,Me))],16,Ie)}const Re=D(Ne,[["render",Pe]]),Fe={name:"ImageOffOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ue=["aria-hidden","aria-label"],qe=["fill","width","height"],Ke={d:"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8"},We={key:0};function je(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon image-off-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Ke,[i.title?(a(),m("title",We,_(i.title),1)):y("",!0)])],8,qe))],16,Ue)}const Ye=D(Fe,[["render",je]]),Ze={key:0,class:"version__image"},Je=["src"],Ge={key:2,class:"version__image"},Qe={class:"version__info"},Xe=["title"],ei={key:1,class:"version__info","data-cy-files-version-author-name":""},ii={key:0},ti=["title"],oi={class:"version__info version__info__subline"},si=P({__name:"VersionEntry",props:{version:{},node:{},isCurrent:{type:Boolean},isFirstVersion:{type:Boolean},loadPreview:{type:Boolean},canView:{type:Boolean},canCompare:{type:Boolean}},emits:["click","compare","restore","delete","labelUpdateRequest"],setup(e,{emit:t}){const i=e,n=t,v=$(!1),r=$(!1),l=$(ve("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})),k=g(()=>ue(i.version.size)),f=g(()=>{const p=i.version.label??"";return i.isCurrent?p===""?c("files_versions","Current version"):`${p} (${c("files_versions","Current version")})`:i.isFirstVersion&&p===""?c("files_versions","Initial version"):p}),w=g(()=>!i.version.author||!i.version.authorName?"":i.version.author===B()?.uid?c("files_versions","You"):i.version.authorName??i.version.author),s=g(()=>new Date(i.version.mtime).toLocaleString([O(),O().split("-")[0]],{timeStyle:"long",dateStyle:"long"})),V=g(()=>i.isCurrent?i.node.source:te()+i.version.url),A=g(()=>l.value.files.version_labeling===!0),z=g(()=>l.value.files.version_deletion===!0),F=g(()=>b(i.node,Z.DELETE)),T=g(()=>b(i.node,Z.UPDATE)),U=g(()=>!((i.node.permissions&Z.READ)===0||i.node.attributes["mount-type"]==="shared"&&i.node.attributes["share-attributes"]&&(JSON.parse(i.node.attributes["share-attributes"]).find(p=>p.scope==="permissions"&&p.key==="download")||{})?.value===!1));function q(){n("labelUpdateRequest")}function K(){n("restore",i.version)}async function W(){await G(),await G(),n("delete",i.version)}function o(p){i.canView&&p.preventDefault(),n("click",i.version)}function u(){if(!i.canView)throw new Error("Cannot compare version of this file");n("compare",i.version)}function b(p,L){return(p.permissions&L)!==0}return(p,L)=>(a(),H(d(be),{class:"version",forceDisplayActions:!0,"actions-aria-label":d(c)("files_versions","Actions for version from {versionHumanExplicitDate}",{versionHumanExplicitDate:s.value}),"data-files-versions-version":e.version.fileVersion,href:V.value,onClick:o},{icon:h(()=>[e.loadPreview||v.value?e.version.previewUrl&&!r.value?(a(),m("img",{key:1,src:e.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy",class:"version__image",onLoad:L[0]||(L[0]=ie=>v.value=!0),onError:L[1]||(L[1]=ie=>r.value=!0)},null,40,Je)):(a(),m("div",Ge,[S(Ye,{size:20})])):(a(),m("div",Ze))]),name:h(()=>[C("div",Qe,[f.value?(a(),m("div",{key:0,class:"version__info__label","data-cy-files-version-label":"",title:f.value},_(f.value),9,Xe)):y("",!0),w.value?(a(),m("div",ei,[f.value?(a(),m("span",ii,"•")):y("",!0),S(d(he),{class:"avatar",user:e.version.author??void 0,size:20,disableMenu:"",disableTooltip:"",hideStatus:""},null,8,["user"]),C("div",{class:"version__info__author_name",title:w.value},_(w.value),9,ti)])):y("",!0)])]),subname:h(()=>[C("div",oi,[S(d(fe),{class:"version__info__date",relativeTime:"short",timestamp:e.version.mtime},null,8,["timestamp"]),L[2]||(L[2]=C("span",null,"•",-1)),C("span",null,_(k.value),1)])]),actions:h(()=>[A.value&&T.value?(a(),H(d(I),{key:0,"data-cy-files-versions-version-action":"label",closeAfterClick:!0,onClick:q},{icon:h(()=>[S(me,{size:22})]),default:h(()=>[E(" "+_(e.version.label===""?d(c)("files_versions","Name this version"):d(c)("files_versions","Edit version name")),1)]),_:1})):y("",!0),!e.isCurrent&&e.canView&&e.canCompare?(a(),H(d(I),{key:1,"data-cy-files-versions-version-action":"compare",closeAfterClick:!0,onClick:u},{icon:h(()=>[S(Re,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Compare to current version")),1)]),_:1})):y("",!0),!e.isCurrent&&T.value?(a(),H(d(I),{key:2,"data-cy-files-versions-version-action":"restore",closeAfterClick:!0,onClick:K},{icon:h(()=>[S(Te,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Restore version")),1)]),_:1})):y("",!0),U.value?(a(),H(d(pe),{key:3,"data-cy-files-versions-version-action":"download",href:V.value,closeAfterClick:!0,download:V.value},{icon:h(()=>[S(ge,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Download version")),1)]),_:1},8,["href","download"])):y("",!0),!e.isCurrent&&z.value&&F.value?(a(),H(d(I),{key:4,"data-cy-files-versions-version-action":"delete",closeAfterClick:!0,onClick:W},{icon:h(()=>[S(ce,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Delete version")),1)]),_:1})):y("",!0)]),_:1},8,["actions-aria-label","data-files-versions-version","href"]))}}),ni=D(si,[["__scopeId","data-v-037e7d96"]]),ri={class:"version-label-modal__info"},ai=P({__name:"VersionLabelDialog",props:{open:{type:Boolean,default:!1},label:{type:String,default:""}},emits:["update:open","update:label"],setup(e,{emit:t}){const i=e,n=t,v=we("labelInput"),r=$(""),l=g(()=>{const f=[];return i.label.trim()===""?f.push({label:c("files_versions","Cancel")}):f.push({label:c("files_versions","Remove version name"),type:"reset",variant:"error",callback:()=>{k("")}}),[...f,{label:c("files_versions","Save version name"),icon:ye,type:"submit",variant:"primary"}]});X(()=>{r.value=i.label??""}),X(()=>{i.open&&G(()=>v.value?.focus()),r.value=i.label});function k(f){n("update:label",f)}return(f,w)=>(a(),H(d(Ve),{buttons:l.value,contentClasses:"version-label-modal",isForm:"",open:e.open,size:"normal",name:d(c)("files_versions","Name this version"),"onUpdate:open":w[1]||(w[1]=s=>f.$emit("update:open",s)),onSubmit:w[2]||(w[2]=s=>k(r.value))},{default:h(()=>[S(d(Se),{ref_key:"labelInput",ref:v,modelValue:r.value,"onUpdate:modelValue":w[0]||(w[0]=s=>r.value=s),class:"version-label-modal__input",label:d(c)("files_versions","Version name"),placeholder:d(c)("files_versions","Version name")},null,8,["modelValue","label","placeholder"]),C("p",ri,_(d(c)("files_versions","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.")),1)]),_:1},8,["buttons","open","name"]))}}),li=D(ai,[["__scopeId","data-v-0955585b"]]),x=oe().setApp("files_version").detectUser().build(),ci=P({name:"VirtualScrolling",props:{sections:{type:Array,required:!0},containerElement:{type:HTMLElement,default:null},useWindow:{type:Boolean,default:!1},headerHeight:{type:Number,default:75},renderDistance:{type:Number,default:.5},bottomBufferRatio:{type:Number,default:2},scrollToKey:{type:String,default:""}},emits:["needContent"],data(){return{scrollPosition:0,containerHeight:0,rowsContainerHeight:0,resizeObserver:null}},computed:{visibleSections(){x.debug("[VirtualScrolling] Computing visible section",{sections:this.sections});const e=this.containerHeight,t=this.scrollPosition,i=t+e;let n=0,v=0;const r=this.sections.map(s=>(v+=this.headerHeight,{...s,rows:s.rows.reduce((V,A)=>{n=v,v+=A.height;let z=0;return vi&&(z=(n-i)/e),z>this.renderDistance?V:[...V,{...A,distance:z}]},[])})).filter(s=>s.rows.length>0),l=r.flatMap(({rows:s})=>s).flatMap(({items:s})=>s),k=this._rowIdToKeyMap;l.forEach(s=>s.key=k[s.id]);const f=l.map(({key:s})=>s).filter(s=>s!==void 0),w=Object.values(k).filter(s=>!f.includes(s));return l.filter(({key:s})=>s===void 0).forEach(s=>s.key=w.pop()??Math.random().toString(36).substr(2)),this._rowIdToKeyMap=l.reduce((s,{id:V,key:A})=>({...s,[`${V}`]:A}),{}),r},totalHeight(){return this.sections.map(e=>this.headerHeight+e.height).reduce((e,t)=>e+t,0)+0},paddingTop(){if(this.visibleSections.length===0)return 0;let e=0;for(const t of this.sections){if(t.key!==this.visibleSections[0].rows[0].sectionKey){e+=this.headerHeight+t.height;continue}for(const i of t.rows){if(i.key===this.visibleSections[0].rows[0].key)return e;e+=i.height}e+=this.headerHeight}return e},rowsContainerStyle(){return{height:`${this.totalHeight}px`,paddingTop:`${this.paddingTop}px`}},isNearBottom(){const e=this.containerHeight*this.bottomBufferRatio;return this.scrollPosition+this.containerHeight>=this.totalHeight-e},container(){return x.debug("[VirtualScrolling] Computing container"),this.containerElement!==null?this.containerElement:this.useWindow?window:this.$refs.container}},watch:{isNearBottom(e){x.debug("[VirtualScrolling] isNearBottom changed",{value:e}),e&&this.$emit("needContent")},visibleSections(){this.isNearBottom&&this.$emit("needContent")},scrollToKey(e){let t=0;for(const i of this.sections){if(i.key!==e){t+=this.headerHeight+i.height;continue}break}x.debug("[VirtualScrolling] Scrolling to",{currentRowTopDistanceFromTop:t}),this.container.scrollTo({top:t,behavior:"smooth"})}},beforeCreate(){this._rowIdToKeyMap={}},mounted(){this.resizeObserver=new ResizeObserver(e=>{for(const t of e){const i=t.contentRect;t.target===this.container&&(this.containerHeight=i.height),t.target.classList.contains("vs-rows-container")&&(this.rowsContainerHeight=i.height)}}),this.useWindow?(window.addEventListener("resize",this.updateContainerSize,{passive:!0}),this.containerHeight=window.innerHeight):this.resizeObserver.observe(this.container),this.resizeObserver.observe(this.$refs.rowsContainer),this.container.addEventListener("scroll",this.updateScrollPosition,{passive:!0})},beforeUnmount(){this.useWindow&&window.removeEventListener("resize",this.updateContainerSize),this.resizeObserver?.disconnect(),this.container.removeEventListener("scroll",this.updateScrollPosition)},methods:{updateScrollPosition(){this._onScrollHandle??=requestAnimationFrame(()=>{this._onScrollHandle=null,this.useWindow?this.scrollPosition=this.container.scrollY:this.scrollPosition=this.container.scrollTop})},updateContainerSize(){this.containerHeight=window.innerHeight}}}),di={key:0,ref:"container",class:"vs-container"};function ui(e,t,i,n,v,r){return!e.useWindow&&e.containerElement===null?(a(),m("div",di,[C("div",{ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[M(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),M(e.$slots,"loader",{},void 0,!0)],4)],512)):(a(),m("div",{key:1,ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[M(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),M(e.$slots,"loader",{},void 0,!0)],4))}const vi=D(ci,[["render",ui],["__scopeId","data-v-0a27da21"]]),mi=` - - - - - - - - - - -`,R=ze();async function pi(e){const t=`/versions/${B()?.uid}/versions/${e.fileid}`;try{const i=(await R.getDirectoryContents(t,{data:mi,details:!0})).data.filter(({mime:r})=>r!=="").map(r=>hi(r,e)),n=new Set(i.map(r=>String(r.author))),v=await He.post(J("/displaynames"),{users:[...n]});for(const r of i){const l=v.data.users[r.author??""];l&&(r.authorName=l)}return i}catch(i){throw x.error("Could not fetch version",{exception:i}),i}}async function fi(e){try{x.debug("Restoring version",{url:e.url}),await R.moveFile(`/versions/${B()?.uid}/versions/${e.fileId}/${e.fileVersion}`,`/versions/${B()?.uid}/restore/target`)}catch(t){throw x.error("Could not restore version",{exception:t}),t}}function hi(e,t){const i=Date.parse(e.lastmod);let n;return i===t.mtime?.getTime()?n=J("/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1",{fileId:t.id,fileEtag:t.attributes.etag}):n=J("/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1",{file:t.path,fileVersion:e.basename}),{fileId:t.id,label:e.props["version-label"]?String(e.props["version-label"]):"",author:e.props["version-author"]?String(e.props["version-author"]):null,authorName:null,filename:e.filename,basename:new Date(i).toLocaleString([O(),O().split("-")[0]],{timeStyle:"long",dateStyle:"medium"}),mime:e.mime,etag:`${e.props.getetag}`,size:e.size,type:e.type,mtime:i,permissions:"R",previewUrl:n,url:re("/remote.php/dav",e.filename),source:se("dav")+ne(e.filename),fileVersion:e.basename}}async function gi(e,t){return await R.customRequest(e.filename,{method:"PROPPATCH",data:` - - - - ${t} - - - `})}async function bi(e){await R.deleteFile(e.filename)}const yi={key:0,class:"versions-tab__container"},wi=["aria-label"],ji=P({__name:"FilesVersionsSidebarTab",props:{active:{type:Boolean},node:{},folder:{},view:{}},setup(e){const t=e,i=le(),n=$([]),v=$(!1),r=$(!1),l=$(null),k=g(()=>t.node?.mtime?.getTime()??0),f=g(()=>[...n.value].sort((o,u)=>t.node?o.mtime===t.node.mtime?.getTime()?-1:u.mtime===t.node.mtime?.getTime()?1:u.mtime-o.mtime:0)),w=g(()=>[{key:"versions",rows:f.value.map(o=>({key:o.mtime.toString(),height:68,sectionKey:"versions",items:[{id:o.mtime.toString(),version:o}]})),height:68*f.value.length}]),s=g(()=>n.value.map(o=>o.mtime).reduce((o,u)=>Math.min(o,u))),V=g(()=>t.node?window.OCA.Viewer?.mimetypes?.includes(t.node?.mime):!1),A=g(()=>!i.value&&window.OCA.Viewer?.mimetypesCompare?.includes(t.node?.mime));_e(()=>t.node.id,z,{immediate:!0}),ae(k,z,{debounce:600});async function z(){try{v.value=!0,n.value=await pi(t.node)}finally{v.value=!1}}async function F(o){if(!t.node)return;const u=t.node.clone();u.attributes.etag=o.etag,u.size=o.size,u.mtime=new Date(o.mtime);const b={preventDefault:!1,node:u,version:o};if(N("files_versions:restore:requested",b),!b.preventDefault)try{await fi(o),o.label?j(c("files_versions",`${o.label} restored`)):o.mtime===s.value?j(c("files_versions","Initial version restored")):j(c("files_versions","Version restored")),N("files:node:updated",u),N("files_versions:restore:restored",{node:u,version:o})}catch{Y(c("files_versions","Could not restore version")),N("files_versions:restore:failed",o)}}function T(o){r.value=!0,l.value=o}async function U(o){if(l.value===null)throw new Error("editedVersion should be set at that point");const u=l.value.label;l.value.label=o,r.value=!1;try{await gi(l.value,o),l.value=null}catch(b){l.value.label=u,Y(c("files_versions","Could not set version label")),x.error("Could not set version label",{exception:b})}}async function q(o){const u=n.value.indexOf(o);n.value.splice(u,1);try{await bi(o)}catch{n.value.push(o),Y(c("files_versions","Could not delete version"))}}function K(o){if(t.node!==null){if(o.mtime===t.node?.mtime?.getTime()){window.OCA.Viewer.open({path:t.node.path});return}window.OCA.Viewer.open({fileInfo:{...o,filename:o.filename,previewUrl:void 0},enableSidebar:!1})}}function W(o){const u=n.value.map(b=>({...b,previewUrl:void 0}));window.OCA.Viewer.compare({path:t.node.path},u.find(b=>b.source===o.source))}return(o,u)=>e.node?(a(),m("div",yi,[S(vi,{sections:w.value,headerHeight:0},{default:h(({visibleSections:b})=>[C("ul",{"aria-label":d(c)("files_versions","File versions"),"data-files-versions-versions-list":""},[b.length===1?(a(!0),m(Ce,{key:0},ke(b[0].rows,p=>(a(),H(ni,{key:p.items[0].version.mtime,canView:V.value,canCompare:A.value,loadPreview:e.active,version:p.items[0].version,node:e.node,isCurrent:p.items[0].version.mtime===k.value,isFirstVersion:p.items[0].version.mtime===s.value,onClick:K,onCompare:W,onRestore:F,onLabelUpdateRequest:L=>T(p.items[0].version),onDelete:q},null,8,["canView","canCompare","loadPreview","version","node","isCurrent","isFirstVersion","onLabelUpdateRequest"]))),128)):y("",!0)],8,wi)]),loader:h(()=>[v.value?(a(),H(d(de),{key:0,class:"files-list-viewer__loader"})):y("",!0)]),_:1},8,["sections"]),l.value?(a(),H(li,{key:0,open:r.value,"onUpdate:open":u[0]||(u[0]=b=>r.value=b),label:l.value.label,"onUpdate:label":U},null,8,["open","label"])):y("",!0)])):y("",!0)}});export{ji as default}; -//# sourceMappingURL=FilesVersionsSidebarTab-mZplOG03.chunk.mjs.map diff --git a/dist/SetStatusModal-B6T5dnOq.chunk.mjs b/dist/SetStatusModal-B6T5dnOq.chunk.mjs new file mode 100644 index 0000000000000..29ab9a9c85178 --- /dev/null +++ b/dist/SetStatusModal-B6T5dnOq.chunk.mjs @@ -0,0 +1,2 @@ +import{a as v}from"./index-mH69OG7L.chunk.mjs";import{t as s}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{b as O}from"./index-Cp0kcsps.chunk.mjs";import{N as A}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as q}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{N as x}from"./index-BDlLVKOD.chunk.mjs";import{c as C,m as R,a as T,O as j,l as I}from"./user_status-menu.mjs";import{_ as S}from"./public-C1mLBHT3.chunk.mjs";import{r as c,o as n,f as m,g as a,t as l,k as p,w as g,j as b,F as $,B,c as y,a6 as M,m as L,L as U,h as k}from"./Web-DYqXJUev.chunk.mjs";import{N as V}from"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import{_ as E}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{N as D}from"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";function H(){return[{label:s("user_status","Don't clear"),clearAt:null},{label:s("user_status","30 minutes"),clearAt:{type:"period",time:1800}},{label:s("user_status","1 hour"),clearAt:{type:"period",time:3600}},{label:s("user_status","4 hours"),clearAt:{type:"period",time:14400}},{label:s("user_status","Today"),clearAt:{type:"end-of",time:"day"}},{label:s("user_status","This week"),clearAt:{type:"end-of",time:"week"}}]}const W={name:"ClearAtSelect",components:{NcSelect:x},props:{clearAt:{type:Object,default:null}},emits:["selectClearAt"],data(){return{options:H()}},computed:{option(){return{clearAt:this.clearAt,label:C(this.clearAt)}}},methods:{t:s,select(t){t&&this.$emit("selectClearAt",t.clearAt)}}},z={class:"clear-at-select"},K={class:"clear-at-select__label",for:"clearStatus"};function Y(t,i,u,_,o,e){const d=c("NcSelect");return n(),m("div",z,[a("label",K,l(e.t("user_status","Clear status after")),1),p(d,{inputId:"clearStatus",class:"clear-at-select__select",options:o.options,modelValue:e.option,clearable:!1,placement:"top",labelOutside:"","onOption:selected":e.select},null,8,["options","modelValue","onOption:selected"])])}const G=S(W,[["render",Y],["__scopeId","data-v-83a07433"]]),J={name:"CustomMessageInput",components:{NcTextField:E,NcButton:A,NcEmojiPicker:V},props:{icon:{type:String,default:"😀"},message:{type:String,default:""},disabled:{type:Boolean,default:!1}},emits:["change","selectIcon"],computed:{visibleIcon(){return this.icon||"😀"}},methods:{t:s,focus(){this.$refs.input.focus()},onChange(t){this.$emit("change",t)},setIcon(t){this.$emit("selectIcon",t)}}},Q={class:"custom-input",role:"group"},X={class:"custom-input__container"};function Z(t,i,u,_,o,e){const d=c("NcButton"),r=c("NcEmojiPicker"),f=c("NcTextField");return n(),m("div",Q,[p(r,{container:"#user_status-dialog",onSelect:e.setIcon},{default:g(()=>[p(d,{variant:"tertiary","aria-label":e.t("user_status","Emoji for your status message")},{icon:g(()=>[b(l(e.visibleIcon),1)]),_:1},8,["aria-label"])]),_:1},8,["onSelect"]),a("div",X,[p(f,{ref:"input",maxlength:"80",disabled:u.disabled,placeholder:e.t("user_status","What is your status?"),modelValue:u.message,type:"text",label:e.t("user_status","What is your status?"),"onUpdate:modelValue":e.onChange},null,8,["disabled","placeholder","modelValue","label","onUpdate:modelValue"])])])}const ee=S(J,[["render",Z],["__scopeId","data-v-90dc6f12"]]),te={name:"OnlineStatusSelect",components:{NcUserStatusIcon:D},props:{checked:{type:Boolean,default:!1},type:{type:String,required:!0},label:{type:String,required:!0},subline:{type:String,default:null}},emits:["select"],computed:{id(){return`user-status-online-status-${this.type}`}},methods:{onChange(){this.$emit("select",this.type)}}},se={class:"user-status-online-select"},ae=["id","checked"],ie=["for"],re={class:"user-status-online-select__icon-wrapper"},ue={class:"user-status-online-select__subline"};function le(t,i,u,_,o,e){const d=c("NcUserStatusIcon");return n(),m("div",se,[a("input",{id:e.id,checked:u.checked,class:"hidden-visually user-status-online-select__input",type:"radio",name:"user-status-online",onChange:i[0]||(i[0]=(...r)=>e.onChange&&e.onChange(...r))},null,40,ae),a("label",{for:e.id,class:"user-status-online-select__label"},[a("span",re,[p(d,{status:u.type,class:"user-status-online-select__icon","aria-hidden":"true"},null,8,["status"])]),b(" "+l(u.label)+" ",1),a("em",ue,l(u.subline),1)],8,ie)])}const ne=S(te,[["render",le],["__scopeId","data-v-16876893"]]),ce={name:"PredefinedStatus",props:{messageId:{type:String,required:!0},icon:{type:String,required:!0},message:{type:String,required:!0},clearAt:{type:Object,required:!1,default:null},selected:{type:Boolean,required:!1,default:!1}},emits:["select"],computed:{id(){return`user-status-predefined-status-${this.messageId}`},formattedClearAt(){return C(this.clearAt)}},methods:{select(){this.$emit("select")}}},oe={class:"predefined-status"},de=["id","checked"],pe=["for"],me={"aria-hidden":"true",class:"predefined-status__label--icon"},he={class:"predefined-status__label--message"},ge={class:"predefined-status__label--clear-at"};function Se(t,i,u,_,o,e){return n(),m("li",oe,[a("input",{id:e.id,class:"hidden-visually predefined-status__input",type:"radio",name:"predefined-status",checked:u.selected,onChange:i[0]||(i[0]=(...d)=>e.select&&e.select(...d))},null,40,de),a("label",{class:"predefined-status__label",for:e.id},[a("span",me,l(u.icon),1),a("span",he,l(u.message),1),a("span",ge,l(e.formattedClearAt),1)],8,pe)])}const _e=S(ce,[["render",Se],["__scopeId","data-v-200bf95b"]]),fe={name:"PredefinedStatusesList",components:{PredefinedStatus:_e},emits:["selectStatus"],data(){return{lastSelected:null}},computed:{...T({predefinedStatuses:t=>t.predefinedStatuses.predefinedStatuses,messageId:t=>t.userStatus.messageId}),...R(["statusesHaveLoaded"])},watch:{messageId:{immediate:!0,handler(){this.lastSelected=this.messageId}}},created(){this.$store.dispatch("loadAllPredefinedStatuses")},methods:{t:s,selectStatus(t){this.lastSelected=t.id,this.$emit("selectStatus",t)}}},be=["aria-label"],ye={key:1,class:"predefined-statuses-list"};function ve(t,i,u,_,o,e){const d=c("PredefinedStatus");return t.statusesHaveLoaded?(n(),m("ul",{key:0,class:"predefined-statuses-list","aria-label":e.t("user_status","Predefined statuses")},[(n(!0),m($,null,B(t.predefinedStatuses,r=>(n(),y(d,{key:r.id,messageId:r.id,icon:r.icon,message:r.message,clearAt:r.clearAt,selected:o.lastSelected===r.id,onSelect:f=>e.selectStatus(r)},null,8,["messageId","icon","message","clearAt","selected","onSelect"]))),128))],8,be)):(n(),m("div",ye,[...i[0]||(i[0]=[a("div",{class:"icon icon-loading-small"},null,-1)])]))}const Ie=S(fe,[["render",ve],["__scopeId","data-v-b7009355"]]),ke={name:"PreviousStatus",components:{NcButton:A},props:{icon:{type:[String,null],required:!0},message:{type:String,required:!0}},emits:["select"],methods:{t:s,select(){this.$emit("select")}}},Ae={class:"predefined-status__icon"},Me={class:"predefined-status__message"},Ce={class:"predefined-status__clear-at"},$e={class:"backup-status__reset-button"};function Be(t,i,u,_,o,e){const d=c("NcButton");return n(),m("div",{class:"predefined-status backup-status",tabindex:"0",onKeyup:[i[0]||(i[0]=M((...r)=>e.select&&e.select(...r),["enter"])),i[1]||(i[1]=M((...r)=>e.select&&e.select(...r),["space"]))],onClick:i[2]||(i[2]=(...r)=>e.select&&e.select(...r))},[a("span",Ae,l(u.icon),1),a("span",Me,l(u.message),1),a("span",Ce,l(e.t("user_status","Previously set")),1),a("div",$e,[p(d,{onClick:e.select},{default:g(()=>[b(l(e.t("user_status","Reset status")),1)]),_:1},8,["onClick"])])],32)}const Ne=S(ke,[["render",Be],["__scopeId","data-v-5fa747a0"]]);function Pe(){return[{type:"online",label:s("user_status","Online")},{type:"away",label:s("user_status","Away")},{type:"busy",label:s("user_status","Busy")},{type:"dnd",label:s("user_status","Do not disturb"),subline:s("user_status","Mute all notifications")},{type:"invisible",label:s("user_status","Invisible"),subline:s("user_status","Appear offline")}]}const we={name:"SetStatusModal",components:{ClearAtSelect:G,CustomMessageInput:ee,NcModal:q,OnlineStatusSelect:ne,PredefinedStatusesList:Ie,PreviousStatus:Ne,NcButton:A},mixins:[j],props:{inline:{type:Boolean,default:!1}},emits:["close"],data(){return{clearAt:null,editedMessage:"",predefinedMessageId:null,isSavingStatus:!1,statuses:Pe()}},computed:{messageId(){return this.$store.state.userStatus.messageId},icon(){return this.$store.state.userStatus.icon},message(){return this.$store.state.userStatus.message||""},hasBackupStatus(){return this.messageId&&(this.backupIcon||this.backupMessage)},backupIcon(){return this.$store.state.userBackupStatus.icon||""},backupMessage(){return this.$store.state.userBackupStatus.message||""},absencePageUrl(){return O("settings/user/availability#absence")},resetButtonText(){return this.backupIcon&&this.backupMessage?s("user_status",'Reset status to "{icon} {message}"',{icon:this.backupIcon,message:this.backupMessage}):this.backupMessage?s("user_status",'Reset status to "{message}"',{message:this.backupMessage}):this.backupIcon?s("user_status",'Reset status to "{icon}"',{icon:this.backupIcon}):s("user_status","Reset status")},setReturnFocus(){if(!this.inline)return document.querySelector('[aria-controls="header-menu-user-menu"]')??void 0}},watch:{message:{immediate:!0,handler(t){this.editedMessage=t}}},mounted(){this.$store.dispatch("fetchBackupFromServer"),this.predefinedMessageId=this.$store.state.userStatus.messageId,this.$store.state.userStatus.clearAt!==null&&(this.clearAt={type:"_time",time:this.$store.state.userStatus.clearAt})},methods:{t:s,closeModal(){this.$emit("close")},setIcon(t){this.predefinedMessageId=null,this.$store.dispatch("setCustomMessage",{message:this.message,icon:t,clearAt:this.clearAt}),this.$nextTick(()=>{this.$refs.customMessageInput.focus()})},setMessage(t){this.predefinedMessageId=null,this.editedMessage=t},setClearAt(t){this.clearAt=t},selectPredefinedMessage(t){this.predefinedMessageId=t.id,this.clearAt=t.clearAt,this.$store.dispatch("setPredefinedMessage",{messageId:t.id,clearAt:t.clearAt})},async saveStatus(){if(!this.isSavingStatus){try{this.isSavingStatus=!0,this.predefinedMessageId===null?await this.$store.dispatch("setCustomMessage",{message:this.editedMessage,icon:this.icon,clearAt:this.clearAt}):this.$store.dispatch("setPredefinedMessage",{messageId:this.predefinedMessageId,clearAt:this.clearAt})}catch(t){v(s("user_status","There was an error saving the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.closeModal()}},async clearStatus(){try{this.isSavingStatus=!0,await this.$store.dispatch("clearMessage")}catch(t){v(s("user_status","There was an error clearing the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.predefinedMessageId=null,this.closeModal()},async revertBackupFromServer(){try{this.isSavingStatus=!0,await this.$store.dispatch("revertBackupFromServer",{messageId:this.messageId})}catch(t){v(s("user_status","There was an error reverting the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.predefinedMessageId=this.$store.state.userStatus?.messageId}}},Fe={class:"set-status-modal"},Oe={id:"user_status-set-dialog",class:"set-status-modal__header"},qe=["aria-label"],xe={class:"set-status-modal__header"},Re={class:"set-status-modal__custom-input"},Te={key:0,class:"set-status-modal__automation-hint"},je={class:"status-buttons"};function Le(t,i,u,_,o,e){const d=c("OnlineStatusSelect"),r=c("CustomMessageInput"),f=c("NcButton"),N=c("PreviousStatus"),P=c("PredefinedStatusesList"),w=c("ClearAtSelect"),F=c("NcModal");return n(),y(F,{id:"user_status-dialog",size:"normal",labelId:"user_status-set-dialog",dark:"",setReturnFocus:e.setReturnFocus,onClose:e.closeModal},{default:g(()=>[a("div",Fe,[a("h2",Oe,l(e.t("user_status","Online status")),1),a("div",{class:"set-status-modal__online-status",role:"radiogroup","aria-label":e.t("user_status","Online status")},[(n(!0),m($,null,B(o.statuses,h=>(n(),y(d,L({key:h.type},{ref_for:!0},h,{checked:h.type===t.statusType,onSelect:t.changeStatus}),null,16,["checked","onSelect"]))),128))],8,qe),a("form",{onSubmit:i[0]||(i[0]=U((...h)=>e.saveStatus&&e.saveStatus(...h),["prevent"])),onReset:i[1]||(i[1]=(...h)=>e.clearStatus&&e.clearStatus(...h))},[a("h3",xe,l(e.t("user_status","Status message")),1),a("div",Re,[p(r,{ref:"customMessageInput",icon:e.icon,message:o.editedMessage,onChange:e.setMessage,onSelectIcon:e.setIcon},null,8,["icon","message","onChange","onSelectIcon"]),e.messageId==="vacationing"?(n(),y(f,{key:0,href:e.absencePageUrl,target:"_blank",variant:"secondary","aria-label":e.t("user_status","Set absence period")},{default:g(()=>[b(l(e.t("user_status","Set absence period and replacement")+" ↗"),1)]),_:1},8,["href","aria-label"])):k("",!0)]),e.hasBackupStatus?(n(),m("div",Te,l(e.t("user_status","Your status was set automatically")),1)):k("",!0),e.hasBackupStatus?(n(),y(N,{key:1,icon:e.backupIcon,message:e.backupMessage,onSelect:e.revertBackupFromServer},null,8,["icon","message","onSelect"])):k("",!0),p(P,{onSelectStatus:e.selectPredefinedMessage},null,8,["onSelectStatus"]),p(w,{clearAt:o.clearAt,onSelectClearAt:e.setClearAt},null,8,["clearAt","onSelectClearAt"]),a("div",je,[p(f,{wide:!0,variant:"tertiary",type:"reset","aria-label":e.t("user_status","Clear status message"),disabled:o.isSavingStatus},{default:g(()=>[b(l(e.t("user_status","Clear status message")),1)]),_:1},8,["aria-label","disabled"]),p(f,{wide:!0,variant:"primary",type:"submit","aria-label":e.t("user_status","Set status message"),disabled:o.isSavingStatus},{default:g(()=>[b(l(e.t("user_status","Set status message")),1)]),_:1},8,["aria-label","disabled"])])],32)])]),_:1},8,["setReturnFocus","onClose"])}const ct=S(we,[["render",Le],["__scopeId","data-v-e87f4d59"]]);export{ct as default}; +//# sourceMappingURL=SetStatusModal-B6T5dnOq.chunk.mjs.map diff --git a/dist/SetStatusModal-BSp1mmzy.chunk.mjs.license b/dist/SetStatusModal-B6T5dnOq.chunk.mjs.license similarity index 100% rename from dist/SetStatusModal-BSp1mmzy.chunk.mjs.license rename to dist/SetStatusModal-B6T5dnOq.chunk.mjs.license diff --git a/dist/SetStatusModal-BSp1mmzy.chunk.mjs.map b/dist/SetStatusModal-B6T5dnOq.chunk.mjs.map similarity index 99% rename from dist/SetStatusModal-BSp1mmzy.chunk.mjs.map rename to dist/SetStatusModal-B6T5dnOq.chunk.mjs.map index 8356281cd4cd6..18d4014737b9a 100644 --- a/dist/SetStatusModal-BSp1mmzy.chunk.mjs.map +++ b/dist/SetStatusModal-B6T5dnOq.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"SetStatusModal-BSp1mmzy.chunk.mjs","sources":["../build/frontend/apps/user_status/src/services/clearAtOptionsService.js","../build/frontend/apps/user_status/src/components/ClearAtSelect.vue","../build/frontend/apps/user_status/src/components/CustomMessageInput.vue","../build/frontend/apps/user_status/src/components/OnlineStatusSelect.vue","../build/frontend/apps/user_status/src/components/PredefinedStatus.vue","../build/frontend/apps/user_status/src/components/PredefinedStatusesList.vue","../build/frontend/apps/user_status/src/components/PreviousStatus.vue","../build/frontend/apps/user_status/src/services/statusOptionsService.js","../build/frontend/apps/user_status/src/components/SetStatusModal.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\n/**\n * Returns an array\n *\n * @return {object[]}\n */\nfunction getAllClearAtOptions() {\n\treturn [{\n\t\tlabel: t('user_status', 'Don\\'t clear'),\n\t\tclearAt: null,\n\t}, {\n\t\tlabel: t('user_status', '30 minutes'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 1800,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '1 hour'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 3600,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '4 hours'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 14400,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'Today'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'day',\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'This week'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'week',\n\t\t},\n\t}]\n}\n\nexport {\n\tgetAllClearAtOptions,\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\n/**\n * Returns a list of all user-definable statuses\n *\n * @return {object[]}\n */\nfunction getAllStatusOptions() {\n\treturn [{\n\t\ttype: 'online',\n\t\tlabel: t('user_status', 'Online'),\n\t}, {\n\t\ttype: 'away',\n\t\tlabel: t('user_status', 'Away'),\n\t}, {\n\t\ttype: 'busy',\n\t\tlabel: t('user_status', 'Busy'),\n\t}, {\n\t\ttype: 'dnd',\n\t\tlabel: t('user_status', 'Do not disturb'),\n\t\tsubline: t('user_status', 'Mute all notifications'),\n\t}, {\n\t\ttype: 'invisible',\n\t\tlabel: t('user_status', 'Invisible'),\n\t\tsubline: t('user_status', 'Appear offline'),\n\t}]\n}\n\nexport {\n\tgetAllStatusOptions,\n}\n","\n\n\n\n\n\n\n"],"names":["getAllClearAtOptions","t","_sfc_main","NcSelect","clearAtFormat","option","_hoisted_1","_openBlock","_createElementBlock","_createElementVNode","_hoisted_2","_toDisplayString","$options","_createVNode","_component_NcSelect","$data","NcTextField","NcButton","NcEmojiPicker","value","icon","_component_NcEmojiPicker","_component_NcButton","_component_NcTextField","$props","NcUserStatusIcon","_hoisted_4","_hoisted_5","args","_component_NcUserStatusIcon","_hoisted_6","PredefinedStatus","mapState","state","mapGetters","status","_ctx","_Fragment","_renderList","_createBlock","_component_PredefinedStatus","$event","_cache","_hoisted_3","getAllStatusOptions","ClearAtSelect","CustomMessageInput","NcModal","OnlineStatusSelect","PredefinedStatusesList","PreviousStatus","OnlineStatusMixin","generateUrl","newValue","message","clearAt","err","showError","logger","_hoisted_7","_component_NcModal","_component_OnlineStatusSelect","_mergeProps","_component_CustomMessageInput","_component_PreviousStatus","_component_PredefinedStatusesList","_component_ClearAtSelect"],"mappings":"ovCAYA,SAASA,GAAuB,CAC/B,MAAO,CAAC,CACP,MAAOC,EAAE,cAAe,aAAc,EACtC,QAAS,IACX,EAAI,CACF,MAAOA,EAAE,cAAe,YAAY,EACpC,QAAS,CACR,KAAM,SACN,KAAM,IACT,CACA,EAAI,CACF,MAAOA,EAAE,cAAe,QAAQ,EAChC,QAAS,CACR,KAAM,SACN,KAAM,IACT,CACA,EAAI,CACF,MAAOA,EAAE,cAAe,SAAS,EACjC,QAAS,CACR,KAAM,SACN,KAAM,KACT,CACA,EAAI,CACF,MAAOA,EAAE,cAAe,OAAO,EAC/B,QAAS,CACR,KAAM,SACN,KAAM,KACT,CACA,EAAI,CACF,MAAOA,EAAE,cAAe,WAAW,EACnC,QAAS,CACR,KAAM,SACN,KAAM,MACT,CACA,CAAE,CACF,CCnBA,MAAKC,EAAU,CACd,KAAM,gBACN,WAAY,CACX,SAAAC,GAGD,MAAO,CACN,QAAS,CACR,KAAM,OACN,QAAS,OAIX,MAAO,CAAC,eAAe,EAEvB,MAAO,CACN,MAAO,CACN,QAASH,EAAoB,CAC9B,CACD,EAEA,SAAU,CAMT,QAAS,CACR,MAAO,CACN,QAAS,KAAK,QACd,MAAOI,EAAc,KAAK,OAAO,CAClC,CACD,GAGD,QAAS,GACRH,EAOA,OAAOI,EAAQ,CACTA,GAIL,KAAK,MAAM,gBAAiBA,EAAO,OAAO,CAC3C,EAEF,EAzEMC,EAAA,CAAA,MAAM,iBAAiB,KACpB,MAAM,yBAAyB,IAAI,6DAD3C,OAAAC,EAAA,EAAAC,EAaM,MAbNF,EAaM,CAZLG,EAEQ,QAFRC,EAEQC,EADJC,EAAA,EAAC,cAAA,oBAAA,CAAA,EAAA,CAAA,EAELC,EAQ6BC,EAAA,CAP5B,QAAQ,cACR,MAAM,0BACL,QAASC,EAAA,QACT,WAAYH,EAAA,OACZ,UAAW,GACZ,UAAU,MACV,aAAA,GACC,oBAAiBA,EAAA,2HCiBhBV,EAAU,CACd,KAAM,qBAEN,WAAY,aACXc,EACA,SAAAC,EACA,cAAAC,GAGD,MAAO,CACN,KAAM,CACL,KAAM,OACN,QAAS,MAGV,QAAS,CACR,KAAM,OACN,QAAS,IAGV,SAAU,CACT,KAAM,QACN,QAAS,KAIX,MAAO,CACN,SACA,cAGD,SAAU,CAMT,aAAc,CACb,OAAO,KAAK,MAAQ,IACrB,GAGD,QAAS,GACRjB,EAEA,OAAQ,CACP,KAAK,MAAM,MAAM,MAAK,CACvB,EAOA,SAASkB,EAAO,CACf,KAAK,MAAM,SAAUA,CAAK,CAC3B,EAEA,QAAQC,EAAM,CACb,KAAK,MAAM,aAAcA,CAAI,CAC9B,EAEF,KA5FM,MAAM,eAAe,KAAK,SAUzBV,EAAA,CAAA,MAAM,yBAAyB,wFAVrC,OAAAH,EAAA,EAAAC,EAqBM,MArBNF,EAqBM,CApBLO,EAQgBQ,EAAA,CARD,UAAU,sBAAuB,SAAQT,EAAA,oBACvD,IAMW,CANXC,EAMWS,EAAA,CALV,QAAQ,WACP,aAAYV,EAAA,EAAC,cAAA,+BAAA,IACH,OACV,IAAiB,KAAdA,EAAA,WAAW,EAAA,CAAA,kDAIjBH,EAUM,MAVNC,EAUM,CATLG,EAQiCU,EAAA,CAPhC,IAAI,QACJ,UAAU,KACT,SAAUC,EAAA,SACV,YAAaZ,EAAA,EAAC,cAAA,sBAAA,EACd,WAAYY,EAAA,QACb,KAAK,OACJ,MAAOZ,EAAA,EAAC,cAAA,sBAAA,EACR,sBAAmBA,EAAA,yJCKnBV,GAAU,CACd,KAAM,qBAEN,WAAY,CACX,iBAAAuB,GAGD,MAAO,CACN,QAAS,CACR,KAAM,QACN,QAAS,IAGV,KAAM,CACL,KAAM,OACN,SAAU,IAGX,MAAO,CACN,KAAM,OACN,SAAU,IAGX,QAAS,CACR,KAAM,OACN,QAAS,OAIX,MAAO,CAAC,QAAQ,EAEhB,SAAU,CACT,IAAK,CACJ,MAAO,6BAA6B,KAAK,IAAI,EAC9C,GAGD,QAAS,CACR,UAAW,CACV,KAAK,MAAM,SAAU,KAAK,IAAI,CAC/B,EAEF,EAlEMnB,GAAA,CAAA,MAAM,2BAA2B,iCAS9BoB,GAAA,CAAA,MAAM,yCAAyC,EAOjDC,GAAA,CAAA,MAAM,oCAAoC,yDAhBhD,OAAApB,EAAA,EAAAC,EAkBM,MAlBNF,GAkBM,CAjBLG,EAMoB,QAAA,CALlB,GAAIG,EAAA,GACJ,QAASY,EAAA,QACV,MAAM,mDACN,KAAK,QACL,KAAK,qBACJ,6BAAQZ,EAAA,UAAAA,EAAA,SAAA,GAAAgB,CAAA,gBACVnB,EASQ,QAAA,CATA,IAAKG,EAAA,GAAI,MAAM,qCACtBH,EAKO,OALPiB,GAKO,CAJNb,EAGsBgB,EAAA,CAFpB,OAAQL,EAAA,KACT,MAAM,kCACN,cAAY,+BACP,IACPb,EAAGa,EAAA,KAAK,EAAG,IACX,CAAA,EAAAf,EAAiE,KAAjEkB,GAAiEhB,EAAfa,EAAA,OAAO,EAAA,CAAA,0ECSvDtB,GAAU,CACd,KAAM,mBAEN,MAAO,CACN,UAAW,CACV,KAAM,OACN,SAAU,IAGX,KAAM,CACL,KAAM,OACN,SAAU,IAGX,QAAS,CACR,KAAM,OACN,SAAU,IAGX,QAAS,CACR,KAAM,OACN,SAAU,GACV,QAAS,MAGV,SAAU,CACT,KAAM,QACN,SAAU,GACV,QAAS,KAIX,MAAO,CAAC,QAAQ,EAEhB,SAAU,CACT,IAAK,CACJ,MAAO,iCAAiC,KAAK,SAAS,EACvD,EAEA,kBAAmB,CAClB,OAAOE,EAAc,KAAK,OAAO,CAClC,GAGD,QAAS,CAIR,QAAS,CACR,KAAK,MAAM,QAAQ,CACpB,EAEF,EA7EKE,GAAA,CAAA,MAAM,mBAAmB,qCASrB,cAAY,OAAO,MAAM,kCAGzBqB,GAAA,CAAA,MAAM,mCAAmC,EAGzCG,GAAA,CAAA,MAAM,oCAAoC,2BAflD,OAAAvB,EAAA,EAAAC,EAmBK,KAnBLF,GAmBK,CAlBJG,EAMkB,QAAA,CALhB,GAAIG,EAAA,GACL,MAAM,2CACN,KAAK,QACL,KAAK,oBACJ,QAASY,EAAA,SACT,6BAAQZ,EAAA,QAAAA,EAAA,OAAA,GAAAgB,CAAA,gBACVnB,EAUQ,QAAA,CAVD,MAAM,2BAA4B,IAAKG,EAAA,KAC7CH,EAEO,OAFPiB,GAEOf,EADHa,EAAA,IAAI,EAAA,CAAA,EAERf,EAEO,OAFPkB,GAEOhB,EADHa,EAAA,OAAO,EAAA,CAAA,EAEXf,EAEO,OAFPqB,GAEOnB,EADHC,EAAA,gBAAgB,EAAA,CAAA,0ECWlBV,GAAU,CACd,KAAM,yBACN,WAAY,CACX,iBAAA6B,IAGD,MAAO,CAAC,cAAc,EAEtB,MAAO,CACN,MAAO,CACN,aAAc,IACf,CACD,EAEA,SAAU,CACT,GAAGC,EAAS,CACX,mBAAqBC,GAAUA,EAAM,mBAAmB,mBACxD,UAAYA,GAAUA,EAAM,WAAW,SACxC,CAAC,EAED,GAAGC,EAAW,CAAC,oBAAoB,CAAC,GAGrC,MAAO,CACN,UAAW,CACV,UAAW,GACX,SAAU,CACT,KAAK,aAAe,KAAK,SAC1B,IAQF,SAAU,CACT,KAAK,OAAO,SAAS,2BAA2B,CACjD,EAEA,QAAS,GACRjC,EAOA,aAAakC,EAAQ,CACpB,KAAK,aAAeA,EAAO,GAC3B,KAAK,MAAM,eAAgBA,CAAM,CAClC,EAEF,8BA/DE,MAAM,0FAfAC,EAAA,wBADP5B,EAaK,KAAA,OAXJ,MAAM,2BACL,aAAYI,EAAA,EAAC,cAAA,qBAAA,WACdJ,EAQkC6B,EAAA,KAAAC,EAPhBF,EAAA,mBAAVD,QADRI,EAQkCC,EAAA,CANhC,IAAKL,EAAO,GACZ,UAAWA,EAAO,GAClB,KAAMA,EAAO,KACb,QAASA,EAAO,QAChB,QAASA,EAAO,QAChB,SAAUpB,EAAA,eAAiBoB,EAAO,GAClC,SAAMM,GAAE7B,EAAA,aAAauB,CAAM,2FAE9B5B,IAAAC,EAIM,MAJNE,GAIM,CAAA,GAAAgC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,CADLjC,EAAuC,MAAA,CAAlC,MAAM,yBAAyB,EAAA,KAAA,EAAA,sECUjCP,GAAU,CACd,KAAM,iBAEN,WAAY,CACX,SAAAe,GAGD,MAAO,CACN,KAAM,CACL,KAAM,CAAC,OAAQ,IAAI,EACnB,SAAU,IAGX,QAAS,CACR,KAAM,OACN,SAAU,KAIZ,MAAO,CAAC,QAAQ,EAEhB,QAAS,GACRhB,EAKA,QAAS,CACR,KAAK,MAAM,QAAQ,CACpB,EAEF,EArDQK,GAAA,CAAA,MAAM,yBAAyB,EAG/BI,GAAA,CAAA,MAAM,4BAA4B,EAGlCiC,GAAA,CAAA,MAAM,6BAA6B,EAIpCjB,GAAA,CAAA,MAAM,6BAA6B,4DAhBzClB,EAqBM,MAAA,CApBL,MAAM,kCACN,SAAS,IACR,QAAK,uBAAQI,EAAA,QAAAA,EAAA,OAAA,GAAAgB,CAAA,EAAM,CAAA,OAAA,CAAA,yBACNhB,EAAA,QAAAA,EAAA,OAAA,GAAAgB,CAAA,EAAM,CAAA,OAAA,CAAA,IACnB,4BAAOhB,EAAA,QAAAA,EAAA,OAAA,GAAAgB,CAAA,KACRnB,EAEO,OAFPH,GAEOK,EADHa,EAAA,IAAI,EAAA,CAAA,EAERf,EAEO,OAFPC,GAEOC,EADHa,EAAA,OAAO,EAAA,CAAA,EAEXf,EAEO,OAFPkC,GAEOhC,EADHC,EAAA,EAAC,cAAA,gBAAA,CAAA,EAAA,CAAA,EAGLH,EAIM,MAJNiB,GAIM,CAHLb,EAEWS,EAAA,CAFA,QAAOV,EAAA,MAAM,EAAA,WACvB,IAAsC,KAAnCA,EAAA,EAAC,cAAA,cAAA,CAAA,EAAA,CAAA,8FCXR,SAASgC,IAAsB,CAC9B,MAAO,CAAC,CACP,KAAM,SACN,MAAO3C,EAAE,cAAe,QAAQ,CAClC,EAAI,CACF,KAAM,OACN,MAAOA,EAAE,cAAe,MAAM,CAChC,EAAI,CACF,KAAM,OACN,MAAOA,EAAE,cAAe,MAAM,CAChC,EAAI,CACF,KAAM,MACN,MAAOA,EAAE,cAAe,gBAAgB,EACxC,QAASA,EAAE,cAAe,wBAAwB,CACpD,EAAI,CACF,KAAM,YACN,MAAOA,EAAE,cAAe,WAAW,EACnC,QAASA,EAAE,cAAe,gBAAgB,CAC5C,CAAE,CACF,CCwEA,MAAKC,GAAU,CACd,KAAM,iBAEN,WAAY,CACX,cAAA2C,EACA,mBAAAC,GACA,QAAAC,EACA,mBAAAC,GACA,uBAAAC,GACA,eAAAC,GACA,SAAAjC,GAGD,OAAQ,CAACkC,CAAiB,EAE1B,MAAO,CAMN,OAAQ,CACP,KAAM,QACN,QAAS,KAIX,MAAO,CAAC,OAAO,EAEf,MAAO,CACN,MAAO,CACN,QAAS,KACT,cAAe,GACf,oBAAqB,KACrB,eAAgB,GAChB,SAAUP,GAAmB,CAC9B,CACD,EAEA,SAAU,CACT,WAAY,CACX,OAAO,KAAK,OAAO,MAAM,WAAW,SACrC,EAEA,MAAO,CACN,OAAO,KAAK,OAAO,MAAM,WAAW,IACrC,EAEA,SAAU,CACT,OAAO,KAAK,OAAO,MAAM,WAAW,SAAW,EAChD,EAEA,iBAAkB,CACjB,OAAO,KAAK,YAAc,KAAK,YAAc,KAAK,cACnD,EAEA,YAAa,CACZ,OAAO,KAAK,OAAO,MAAM,iBAAiB,MAAQ,EACnD,EAEA,eAAgB,CACf,OAAO,KAAK,OAAO,MAAM,iBAAiB,SAAW,EACtD,EAEA,gBAAiB,CAChB,OAAOQ,EAAY,oCAAoC,CACxD,EAEA,iBAAkB,CACjB,OAAI,KAAK,YAAc,KAAK,cACpBnD,EAAE,cAAe,qCAAsC,CAC7D,KAAM,KAAK,WACX,QAAS,KAAK,cACd,EACS,KAAK,cACRA,EAAE,cAAe,8BAA+B,CACtD,QAAS,KAAK,cACd,EACS,KAAK,WACRA,EAAE,cAAe,2BAA4B,CACnD,KAAM,KAAK,WACX,EAGKA,EAAE,cAAe,cAAc,CACvC,EAEA,gBAAiB,CAChB,GAAI,MAAK,OAGT,OAAO,SAAS,cAAc,yCAAyC,GAAK,MAC7E,GAGD,MAAO,CACN,QAAS,CACR,UAAW,GACX,QAAQoD,EAAU,CACjB,KAAK,cAAgBA,CACtB,IAOF,SAAU,CACT,KAAK,OAAO,SAAS,uBAAuB,EAE5C,KAAK,oBAAsB,KAAK,OAAO,MAAM,WAAW,UACpD,KAAK,OAAO,MAAM,WAAW,UAAY,OAC5C,KAAK,QAAU,CACd,KAAM,QACN,KAAM,KAAK,OAAO,MAAM,WAAW,OACpC,EAEF,EAEA,QAAS,GACRpD,EAKA,YAAa,CACZ,KAAK,MAAM,OAAO,CACnB,EAOA,QAAQmB,EAAM,CACb,KAAK,oBAAsB,KAC3B,KAAK,OAAO,SAAS,mBAAoB,CACxC,QAAS,KAAK,QACd,KAAAA,EACA,QAAS,KAAK,QACd,EACD,KAAK,UAAU,IAAM,CACpB,KAAK,MAAM,mBAAmB,MAAK,CACpC,CAAC,CACF,EAOA,WAAWkC,EAAS,CACnB,KAAK,oBAAsB,KAC3B,KAAK,cAAgBA,CACtB,EAOA,WAAWC,EAAS,CACnB,KAAK,QAAUA,CAChB,EAOA,wBAAwBpB,EAAQ,CAC/B,KAAK,oBAAsBA,EAAO,GAClC,KAAK,QAAUA,EAAO,QACtB,KAAK,OAAO,SAAS,uBAAwB,CAC5C,UAAWA,EAAO,GAClB,QAASA,EAAO,QAChB,CACF,EAOA,MAAM,YAAa,CAClB,GAAI,MAAK,eAIT,CAAA,GAAI,CACH,KAAK,eAAiB,GAElB,KAAK,sBAAwB,KAChC,MAAM,KAAK,OAAO,SAAS,mBAAoB,CAC9C,QAAS,KAAK,cACd,KAAM,KAAK,KACX,QAAS,KAAK,QACd,EAED,KAAK,OAAO,SAAS,uBAAwB,CAC5C,UAAW,KAAK,oBAChB,QAAS,KAAK,QACd,CAEH,OAASqB,EAAK,CACbC,EAAUxD,EAAE,cAAe,sCAAsC,CAAC,EAClEyD,EAAO,MAAMF,CAAG,EAChB,KAAK,eAAiB,GACtB,MACD,CAEA,KAAK,eAAiB,GACtB,KAAK,WAAU,CAAA,CAChB,EAMA,MAAM,aAAc,CACnB,GAAI,CACH,KAAK,eAAiB,GAEtB,MAAM,KAAK,OAAO,SAAS,cAAc,CAC1C,OAASA,EAAK,CACbC,EAAUxD,EAAE,cAAe,wCAAwC,CAAC,EACpEyD,EAAO,MAAMF,CAAG,EAChB,KAAK,eAAiB,GACtB,MACD,CAEA,KAAK,eAAiB,GACtB,KAAK,oBAAsB,KAC3B,KAAK,WAAU,CAChB,EAMA,MAAM,wBAAyB,CAC9B,GAAI,CACH,KAAK,eAAiB,GAEtB,MAAM,KAAK,OAAO,SAAS,yBAA0B,CACpD,UAAW,KAAK,UAChB,CACF,OAASA,EAAK,CACbC,EAAUxD,EAAE,cAAe,yCAAyC,CAAC,EACrEyD,EAAO,MAAMF,CAAG,EAChB,KAAK,eAAiB,GACtB,MACD,CAEA,KAAK,eAAiB,GACtB,KAAK,oBAAsB,KAAK,OAAO,MAAM,YAAY,SAC1D,EAEF,EA5VOlD,GAAA,CAAA,MAAM,kBAAkB,MAExB,GAAG,yBAAyB,MAAM,8CAiBjCoB,GAAA,CAAA,MAAM,0BAA0B,EAG/BC,GAAA,CAAA,MAAM,gCAAgC,YAkB1C,MAAM,qCAYFgC,GAAA,CAAA,MAAM,gBAAgB,wMA3D9BpB,EA+EUqB,EAAA,CA9ET,GAAG,qBACH,KAAK,SACL,QAAQ,yBACR,KAAA,GACC,eAAgBhD,EAAA,eAChB,QAAOA,EAAA,uBACR,IAuEM,CAvENH,EAuEM,MAvENH,GAuEM,CArELG,EAEK,KAFLC,GAEKC,EADDC,EAAA,EAAC,cAAA,eAAA,CAAA,EAAA,CAAA,EAELH,EAUM,MAAA,CATL,MAAM,kCACN,KAAK,aACJ,aAAYG,EAAA,EAAC,cAAA,eAAA,WACdJ,EAK0B6B,EAAA,KAAAC,EAJRvB,EAAA,SAAVoB,IADR5B,EAAA,EAAAgC,EAK0BsB,EAL1BC,EAK0B,CAHxB,IAAK3B,EAAO,mBACLA,EAAM,CACb,QAASA,EAAO,OAASC,EAAA,WACzB,SAAQA,EAAA,8DAIX3B,EAoDO,OAAA,CApDA,+BAAgBG,EAAA,YAAAA,EAAA,WAAA,GAAAgB,CAAA,EAAU,CAAA,SAAA,CAAA,GAAG,4BAAOhB,EAAA,aAAAA,EAAA,YAAA,GAAAgB,CAAA,KAC1CnB,EAEK,KAFLiB,GAEKf,EADDC,EAAA,EAAC,cAAA,gBAAA,CAAA,EAAA,CAAA,EAELH,EAeM,MAfNkB,GAeM,CAdLd,EAKyBkD,EAAA,CAJxB,IAAI,qBACH,KAAMnD,EAAA,KACN,QAASG,EAAA,cACT,SAAQH,EAAA,WACR,aAAYA,EAAA,8DAEPA,EAAA,YAAS,mBADhB2B,EAOWjB,EAAA,OALT,KAAMV,EAAA,eACP,OAAO,SACP,QAAQ,YACP,aAAYA,EAAA,EAAC,cAAA,oBAAA,cACd,IAAmE,KAAhEA,EAAA,EAAC,cAAA,oCAAA,EAAA,IAAA,EAAA,CAAA,8CAICA,EAAA,qBADPJ,EAIM,MAJNsB,GAIMnB,EADFC,EAAA,EAAC,cAAA,mCAAA,CAAA,EAAA,CAAA,YAGEA,EAAA,qBADP2B,EAIoCyB,EAAA,OAFlC,KAAMpD,EAAA,WACN,QAASA,EAAA,cACT,SAAQA,EAAA,wEACVC,EAAkEoD,EAAA,CAAzC,eAAcrD,EAAA,uBAAuB,EAAA,KAAA,EAAA,CAAA,gBAAA,CAAA,EAC9DC,EAE+BqD,EAAA,CAD7B,QAASnD,EAAA,QACT,gBAAeH,EAAA,kDACjBH,EAiBM,MAjBNkD,GAiBM,CAhBL9C,EAOWS,EAAA,CANT,KAAM,GACP,QAAQ,WACR,KAAK,QACJ,aAAYV,EAAA,EAAC,cAAA,sBAAA,EACb,SAAUG,EAAA,2BACX,IAA8C,KAA3CH,EAAA,EAAC,cAAA,sBAAA,CAAA,EAAA,CAAA,sCAELC,EAOWS,EAAA,CANT,KAAM,GACP,QAAQ,UACR,KAAK,SACJ,aAAYV,EAAA,EAAC,cAAA,oBAAA,EACb,SAAUG,EAAA,2BACX,IAA4C,KAAzCH,EAAA,EAAC,cAAA,oBAAA,CAAA,EAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"SetStatusModal-B6T5dnOq.chunk.mjs","sources":["../build/frontend/apps/user_status/src/services/clearAtOptionsService.js","../build/frontend/apps/user_status/src/components/ClearAtSelect.vue","../build/frontend/apps/user_status/src/components/CustomMessageInput.vue","../build/frontend/apps/user_status/src/components/OnlineStatusSelect.vue","../build/frontend/apps/user_status/src/components/PredefinedStatus.vue","../build/frontend/apps/user_status/src/components/PredefinedStatusesList.vue","../build/frontend/apps/user_status/src/components/PreviousStatus.vue","../build/frontend/apps/user_status/src/services/statusOptionsService.js","../build/frontend/apps/user_status/src/components/SetStatusModal.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\n/**\n * Returns an array\n *\n * @return {object[]}\n */\nfunction getAllClearAtOptions() {\n\treturn [{\n\t\tlabel: t('user_status', 'Don\\'t clear'),\n\t\tclearAt: null,\n\t}, {\n\t\tlabel: t('user_status', '30 minutes'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 1800,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '1 hour'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 3600,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '4 hours'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 14400,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'Today'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'day',\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'This week'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'week',\n\t\t},\n\t}]\n}\n\nexport {\n\tgetAllClearAtOptions,\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\n/**\n * Returns a list of all user-definable statuses\n *\n * @return {object[]}\n */\nfunction getAllStatusOptions() {\n\treturn [{\n\t\ttype: 'online',\n\t\tlabel: t('user_status', 'Online'),\n\t}, {\n\t\ttype: 'away',\n\t\tlabel: t('user_status', 'Away'),\n\t}, {\n\t\ttype: 'busy',\n\t\tlabel: t('user_status', 'Busy'),\n\t}, {\n\t\ttype: 'dnd',\n\t\tlabel: t('user_status', 'Do not disturb'),\n\t\tsubline: t('user_status', 'Mute all notifications'),\n\t}, {\n\t\ttype: 'invisible',\n\t\tlabel: t('user_status', 'Invisible'),\n\t\tsubline: t('user_status', 'Appear offline'),\n\t}]\n}\n\nexport {\n\tgetAllStatusOptions,\n}\n","\n\n\n\n\n\n\n"],"names":["getAllClearAtOptions","t","_sfc_main","NcSelect","clearAtFormat","option","_hoisted_1","_openBlock","_createElementBlock","_createElementVNode","_hoisted_2","_toDisplayString","$options","_createVNode","_component_NcSelect","$data","NcTextField","NcButton","NcEmojiPicker","value","icon","_component_NcEmojiPicker","_component_NcButton","_component_NcTextField","$props","NcUserStatusIcon","_hoisted_4","_hoisted_5","args","_component_NcUserStatusIcon","_hoisted_6","PredefinedStatus","mapState","state","mapGetters","status","_ctx","_Fragment","_renderList","_createBlock","_component_PredefinedStatus","$event","_cache","_hoisted_3","getAllStatusOptions","ClearAtSelect","CustomMessageInput","NcModal","OnlineStatusSelect","PredefinedStatusesList","PreviousStatus","OnlineStatusMixin","generateUrl","newValue","message","clearAt","err","showError","logger","_hoisted_7","_component_NcModal","_component_OnlineStatusSelect","_mergeProps","_component_CustomMessageInput","_component_PreviousStatus","_component_PredefinedStatusesList","_component_ClearAtSelect"],"mappings":"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"} \ No newline at end of file diff --git a/dist/SetStatusModal-BSp1mmzy.chunk.mjs.map.license b/dist/SetStatusModal-B6T5dnOq.chunk.mjs.map.license similarity index 100% rename from dist/SetStatusModal-BSp1mmzy.chunk.mjs.map.license rename to dist/SetStatusModal-B6T5dnOq.chunk.mjs.map.license diff --git a/dist/SetStatusModal-BSp1mmzy.chunk.mjs b/dist/SetStatusModal-BSp1mmzy.chunk.mjs deleted file mode 100644 index 63c8e8f941aff..0000000000000 --- a/dist/SetStatusModal-BSp1mmzy.chunk.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{a as v}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{t as s}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{b as O}from"./index-Cp0kcsps.chunk.mjs";import{N as A}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as q}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{N as x}from"./index-BDlLVKOD.chunk.mjs";import{c as C,m as R,a as T,O as j,l as I}from"./user_status-menu.mjs";import{_ as S}from"./public-C1mLBHT3.chunk.mjs";import{r as c,o as n,f as m,g as a,t as l,k as p,w as g,j as b,F as $,B,c as y,a6 as M,m as L,L as U,h as k}from"./Web-DYqXJUev.chunk.mjs";import{N as V}from"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import{_ as E}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{N as D}from"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";function H(){return[{label:s("user_status","Don't clear"),clearAt:null},{label:s("user_status","30 minutes"),clearAt:{type:"period",time:1800}},{label:s("user_status","1 hour"),clearAt:{type:"period",time:3600}},{label:s("user_status","4 hours"),clearAt:{type:"period",time:14400}},{label:s("user_status","Today"),clearAt:{type:"end-of",time:"day"}},{label:s("user_status","This week"),clearAt:{type:"end-of",time:"week"}}]}const W={name:"ClearAtSelect",components:{NcSelect:x},props:{clearAt:{type:Object,default:null}},emits:["selectClearAt"],data(){return{options:H()}},computed:{option(){return{clearAt:this.clearAt,label:C(this.clearAt)}}},methods:{t:s,select(t){t&&this.$emit("selectClearAt",t.clearAt)}}},z={class:"clear-at-select"},K={class:"clear-at-select__label",for:"clearStatus"};function Y(t,i,u,_,o,e){const d=c("NcSelect");return n(),m("div",z,[a("label",K,l(e.t("user_status","Clear status after")),1),p(d,{inputId:"clearStatus",class:"clear-at-select__select",options:o.options,modelValue:e.option,clearable:!1,placement:"top",labelOutside:"","onOption:selected":e.select},null,8,["options","modelValue","onOption:selected"])])}const G=S(W,[["render",Y],["__scopeId","data-v-83a07433"]]),J={name:"CustomMessageInput",components:{NcTextField:E,NcButton:A,NcEmojiPicker:V},props:{icon:{type:String,default:"😀"},message:{type:String,default:""},disabled:{type:Boolean,default:!1}},emits:["change","selectIcon"],computed:{visibleIcon(){return this.icon||"😀"}},methods:{t:s,focus(){this.$refs.input.focus()},onChange(t){this.$emit("change",t)},setIcon(t){this.$emit("selectIcon",t)}}},Q={class:"custom-input",role:"group"},X={class:"custom-input__container"};function Z(t,i,u,_,o,e){const d=c("NcButton"),r=c("NcEmojiPicker"),f=c("NcTextField");return n(),m("div",Q,[p(r,{container:"#user_status-dialog",onSelect:e.setIcon},{default:g(()=>[p(d,{variant:"tertiary","aria-label":e.t("user_status","Emoji for your status message")},{icon:g(()=>[b(l(e.visibleIcon),1)]),_:1},8,["aria-label"])]),_:1},8,["onSelect"]),a("div",X,[p(f,{ref:"input",maxlength:"80",disabled:u.disabled,placeholder:e.t("user_status","What is your status?"),modelValue:u.message,type:"text",label:e.t("user_status","What is your status?"),"onUpdate:modelValue":e.onChange},null,8,["disabled","placeholder","modelValue","label","onUpdate:modelValue"])])])}const ee=S(J,[["render",Z],["__scopeId","data-v-90dc6f12"]]),te={name:"OnlineStatusSelect",components:{NcUserStatusIcon:D},props:{checked:{type:Boolean,default:!1},type:{type:String,required:!0},label:{type:String,required:!0},subline:{type:String,default:null}},emits:["select"],computed:{id(){return`user-status-online-status-${this.type}`}},methods:{onChange(){this.$emit("select",this.type)}}},se={class:"user-status-online-select"},ae=["id","checked"],ie=["for"],re={class:"user-status-online-select__icon-wrapper"},ue={class:"user-status-online-select__subline"};function le(t,i,u,_,o,e){const d=c("NcUserStatusIcon");return n(),m("div",se,[a("input",{id:e.id,checked:u.checked,class:"hidden-visually user-status-online-select__input",type:"radio",name:"user-status-online",onChange:i[0]||(i[0]=(...r)=>e.onChange&&e.onChange(...r))},null,40,ae),a("label",{for:e.id,class:"user-status-online-select__label"},[a("span",re,[p(d,{status:u.type,class:"user-status-online-select__icon","aria-hidden":"true"},null,8,["status"])]),b(" "+l(u.label)+" ",1),a("em",ue,l(u.subline),1)],8,ie)])}const ne=S(te,[["render",le],["__scopeId","data-v-16876893"]]),ce={name:"PredefinedStatus",props:{messageId:{type:String,required:!0},icon:{type:String,required:!0},message:{type:String,required:!0},clearAt:{type:Object,required:!1,default:null},selected:{type:Boolean,required:!1,default:!1}},emits:["select"],computed:{id(){return`user-status-predefined-status-${this.messageId}`},formattedClearAt(){return C(this.clearAt)}},methods:{select(){this.$emit("select")}}},oe={class:"predefined-status"},de=["id","checked"],pe=["for"],me={"aria-hidden":"true",class:"predefined-status__label--icon"},he={class:"predefined-status__label--message"},ge={class:"predefined-status__label--clear-at"};function Se(t,i,u,_,o,e){return n(),m("li",oe,[a("input",{id:e.id,class:"hidden-visually predefined-status__input",type:"radio",name:"predefined-status",checked:u.selected,onChange:i[0]||(i[0]=(...d)=>e.select&&e.select(...d))},null,40,de),a("label",{class:"predefined-status__label",for:e.id},[a("span",me,l(u.icon),1),a("span",he,l(u.message),1),a("span",ge,l(e.formattedClearAt),1)],8,pe)])}const _e=S(ce,[["render",Se],["__scopeId","data-v-200bf95b"]]),fe={name:"PredefinedStatusesList",components:{PredefinedStatus:_e},emits:["selectStatus"],data(){return{lastSelected:null}},computed:{...T({predefinedStatuses:t=>t.predefinedStatuses.predefinedStatuses,messageId:t=>t.userStatus.messageId}),...R(["statusesHaveLoaded"])},watch:{messageId:{immediate:!0,handler(){this.lastSelected=this.messageId}}},created(){this.$store.dispatch("loadAllPredefinedStatuses")},methods:{t:s,selectStatus(t){this.lastSelected=t.id,this.$emit("selectStatus",t)}}},be=["aria-label"],ye={key:1,class:"predefined-statuses-list"};function ve(t,i,u,_,o,e){const d=c("PredefinedStatus");return t.statusesHaveLoaded?(n(),m("ul",{key:0,class:"predefined-statuses-list","aria-label":e.t("user_status","Predefined statuses")},[(n(!0),m($,null,B(t.predefinedStatuses,r=>(n(),y(d,{key:r.id,messageId:r.id,icon:r.icon,message:r.message,clearAt:r.clearAt,selected:o.lastSelected===r.id,onSelect:f=>e.selectStatus(r)},null,8,["messageId","icon","message","clearAt","selected","onSelect"]))),128))],8,be)):(n(),m("div",ye,[...i[0]||(i[0]=[a("div",{class:"icon icon-loading-small"},null,-1)])]))}const Ie=S(fe,[["render",ve],["__scopeId","data-v-b7009355"]]),ke={name:"PreviousStatus",components:{NcButton:A},props:{icon:{type:[String,null],required:!0},message:{type:String,required:!0}},emits:["select"],methods:{t:s,select(){this.$emit("select")}}},Ae={class:"predefined-status__icon"},Me={class:"predefined-status__message"},Ce={class:"predefined-status__clear-at"},$e={class:"backup-status__reset-button"};function Be(t,i,u,_,o,e){const d=c("NcButton");return n(),m("div",{class:"predefined-status backup-status",tabindex:"0",onKeyup:[i[0]||(i[0]=M((...r)=>e.select&&e.select(...r),["enter"])),i[1]||(i[1]=M((...r)=>e.select&&e.select(...r),["space"]))],onClick:i[2]||(i[2]=(...r)=>e.select&&e.select(...r))},[a("span",Ae,l(u.icon),1),a("span",Me,l(u.message),1),a("span",Ce,l(e.t("user_status","Previously set")),1),a("div",$e,[p(d,{onClick:e.select},{default:g(()=>[b(l(e.t("user_status","Reset status")),1)]),_:1},8,["onClick"])])],32)}const Ne=S(ke,[["render",Be],["__scopeId","data-v-5fa747a0"]]);function Pe(){return[{type:"online",label:s("user_status","Online")},{type:"away",label:s("user_status","Away")},{type:"busy",label:s("user_status","Busy")},{type:"dnd",label:s("user_status","Do not disturb"),subline:s("user_status","Mute all notifications")},{type:"invisible",label:s("user_status","Invisible"),subline:s("user_status","Appear offline")}]}const we={name:"SetStatusModal",components:{ClearAtSelect:G,CustomMessageInput:ee,NcModal:q,OnlineStatusSelect:ne,PredefinedStatusesList:Ie,PreviousStatus:Ne,NcButton:A},mixins:[j],props:{inline:{type:Boolean,default:!1}},emits:["close"],data(){return{clearAt:null,editedMessage:"",predefinedMessageId:null,isSavingStatus:!1,statuses:Pe()}},computed:{messageId(){return this.$store.state.userStatus.messageId},icon(){return this.$store.state.userStatus.icon},message(){return this.$store.state.userStatus.message||""},hasBackupStatus(){return this.messageId&&(this.backupIcon||this.backupMessage)},backupIcon(){return this.$store.state.userBackupStatus.icon||""},backupMessage(){return this.$store.state.userBackupStatus.message||""},absencePageUrl(){return O("settings/user/availability#absence")},resetButtonText(){return this.backupIcon&&this.backupMessage?s("user_status",'Reset status to "{icon} {message}"',{icon:this.backupIcon,message:this.backupMessage}):this.backupMessage?s("user_status",'Reset status to "{message}"',{message:this.backupMessage}):this.backupIcon?s("user_status",'Reset status to "{icon}"',{icon:this.backupIcon}):s("user_status","Reset status")},setReturnFocus(){if(!this.inline)return document.querySelector('[aria-controls="header-menu-user-menu"]')??void 0}},watch:{message:{immediate:!0,handler(t){this.editedMessage=t}}},mounted(){this.$store.dispatch("fetchBackupFromServer"),this.predefinedMessageId=this.$store.state.userStatus.messageId,this.$store.state.userStatus.clearAt!==null&&(this.clearAt={type:"_time",time:this.$store.state.userStatus.clearAt})},methods:{t:s,closeModal(){this.$emit("close")},setIcon(t){this.predefinedMessageId=null,this.$store.dispatch("setCustomMessage",{message:this.message,icon:t,clearAt:this.clearAt}),this.$nextTick(()=>{this.$refs.customMessageInput.focus()})},setMessage(t){this.predefinedMessageId=null,this.editedMessage=t},setClearAt(t){this.clearAt=t},selectPredefinedMessage(t){this.predefinedMessageId=t.id,this.clearAt=t.clearAt,this.$store.dispatch("setPredefinedMessage",{messageId:t.id,clearAt:t.clearAt})},async saveStatus(){if(!this.isSavingStatus){try{this.isSavingStatus=!0,this.predefinedMessageId===null?await this.$store.dispatch("setCustomMessage",{message:this.editedMessage,icon:this.icon,clearAt:this.clearAt}):this.$store.dispatch("setPredefinedMessage",{messageId:this.predefinedMessageId,clearAt:this.clearAt})}catch(t){v(s("user_status","There was an error saving the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.closeModal()}},async clearStatus(){try{this.isSavingStatus=!0,await this.$store.dispatch("clearMessage")}catch(t){v(s("user_status","There was an error clearing the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.predefinedMessageId=null,this.closeModal()},async revertBackupFromServer(){try{this.isSavingStatus=!0,await this.$store.dispatch("revertBackupFromServer",{messageId:this.messageId})}catch(t){v(s("user_status","There was an error reverting the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.predefinedMessageId=this.$store.state.userStatus?.messageId}}},Fe={class:"set-status-modal"},Oe={id:"user_status-set-dialog",class:"set-status-modal__header"},qe=["aria-label"],xe={class:"set-status-modal__header"},Re={class:"set-status-modal__custom-input"},Te={key:0,class:"set-status-modal__automation-hint"},je={class:"status-buttons"};function Le(t,i,u,_,o,e){const d=c("OnlineStatusSelect"),r=c("CustomMessageInput"),f=c("NcButton"),N=c("PreviousStatus"),P=c("PredefinedStatusesList"),w=c("ClearAtSelect"),F=c("NcModal");return n(),y(F,{id:"user_status-dialog",size:"normal",labelId:"user_status-set-dialog",dark:"",setReturnFocus:e.setReturnFocus,onClose:e.closeModal},{default:g(()=>[a("div",Fe,[a("h2",Oe,l(e.t("user_status","Online status")),1),a("div",{class:"set-status-modal__online-status",role:"radiogroup","aria-label":e.t("user_status","Online status")},[(n(!0),m($,null,B(o.statuses,h=>(n(),y(d,L({key:h.type},{ref_for:!0},h,{checked:h.type===t.statusType,onSelect:t.changeStatus}),null,16,["checked","onSelect"]))),128))],8,qe),a("form",{onSubmit:i[0]||(i[0]=U((...h)=>e.saveStatus&&e.saveStatus(...h),["prevent"])),onReset:i[1]||(i[1]=(...h)=>e.clearStatus&&e.clearStatus(...h))},[a("h3",xe,l(e.t("user_status","Status message")),1),a("div",Re,[p(r,{ref:"customMessageInput",icon:e.icon,message:o.editedMessage,onChange:e.setMessage,onSelectIcon:e.setIcon},null,8,["icon","message","onChange","onSelectIcon"]),e.messageId==="vacationing"?(n(),y(f,{key:0,href:e.absencePageUrl,target:"_blank",variant:"secondary","aria-label":e.t("user_status","Set absence period")},{default:g(()=>[b(l(e.t("user_status","Set absence period and replacement")+" ↗"),1)]),_:1},8,["href","aria-label"])):k("",!0)]),e.hasBackupStatus?(n(),m("div",Te,l(e.t("user_status","Your status was set automatically")),1)):k("",!0),e.hasBackupStatus?(n(),y(N,{key:1,icon:e.backupIcon,message:e.backupMessage,onSelect:e.revertBackupFromServer},null,8,["icon","message","onSelect"])):k("",!0),p(P,{onSelectStatus:e.selectPredefinedMessage},null,8,["onSelectStatus"]),p(w,{clearAt:o.clearAt,onSelectClearAt:e.setClearAt},null,8,["clearAt","onSelectClearAt"]),a("div",je,[p(f,{wide:!0,variant:"tertiary",type:"reset","aria-label":e.t("user_status","Clear status message"),disabled:o.isSavingStatus},{default:g(()=>[b(l(e.t("user_status","Clear status message")),1)]),_:1},8,["aria-label","disabled"]),p(f,{wide:!0,variant:"primary",type:"submit","aria-label":e.t("user_status","Set status message"),disabled:o.isSavingStatus},{default:g(()=>[b(l(e.t("user_status","Set status message")),1)]),_:1},8,["aria-label","disabled"])])],32)])]),_:1},8,["setReturnFocus","onClose"])}const ct=S(we,[["render",Le],["__scopeId","data-v-e87f4d59"]]);export{ct as default}; -//# sourceMappingURL=SetStatusModal-BSp1mmzy.chunk.mjs.map diff --git a/dist/SystemTagPicker-BHM6bOgM.chunk.mjs b/dist/SystemTagPicker-BHM6bOgM.chunk.mjs deleted file mode 100644 index f638ce938d9d8..0000000000000 --- a/dist/SystemTagPicker-BHM6bOgM.chunk.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{f as R,a as q,d as J}from"./index-Cp0kcsps.chunk.mjs";import{a as _}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{_ as A,l as K}from"./public-C1mLBHT3.chunk.mjs";import{t as f,g as S,e as Q,p as W,a as k}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as X}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as Y}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{P as tt,N as et}from"./Plus-Cvoorj3T.chunk.mjs";import st from"./index-BRPJrOcF.chunk.mjs";import{N as at}from"./index-CmDAUQql.chunk.mjs";import{N as it}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as ot}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as lt}from"./mdi-B6W_Xvj-.chunk.mjs";import{_ as nt}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{o as a,f as d,g,t as p,h as C,m as w,b as rt,r as c,c as h,w as m,F as E,k as u,B as ct,O as dt,j as N,J as mt,K as gt,y as ht}from"./Web-DYqXJUev.chunk.mjs";import{P as pt}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{l as L,g as O,s as x,e as I,h as z,c as ut,i as yt,f as ft,u as Ct}from"./api-CqKbR_Nj.chunk.mjs";import{e as bt,i as kt,a as Nt}from"./systemtags-init.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./dav-DpOWisxz.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";import"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./index-BGv_Bbjs.chunk.mjs";const At={name:"CheckCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},vt=["aria-hidden","aria-label"],wt=["fill","width","height"],Tt={d:"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z"},_t={key:0};function St(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon check-circle-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Tt,[e.title?(a(),d("title",_t,p(e.title),1)):C("",!0)])],8,wt))],16,vt)}const Lt=A(At,[["render",St]]),It={name:"CircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},$t=["aria-hidden","aria-label"],Rt=["fill","width","height"],Et={d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},Ot={key:0};function xt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon circle-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Et,[e.title?(a(),d("title",Ot,p(e.title),1)):C("",!0)])],8,Rt))],16,$t)}const zt=A(It,[["render",xt]]),Pt={name:"CircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Mt=["aria-hidden","aria-label"],Vt=["fill","width","height"],Bt={d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},Ut={key:0};function Dt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon circle-outline-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Bt,[e.title?(a(),d("title",Ut,p(e.title),1)):C("",!0)])],8,Vt))],16,Mt)}const Gt=A(Pt,[["render",Dt]]),jt={name:"TagOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ft=["aria-hidden","aria-label"],Ht=["fill","width","height"],Zt={d:"M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L11.59 21.42A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M13 20L4 11V4H11L20 13M6.5 5A1.5 1.5 0 1 1 5 6.5A1.5 1.5 0 0 1 6.5 5Z"},qt={key:0};function Jt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon tag-outline-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Zt,[e.title?(a(),d("title",qt,p(e.title),1)):C("",!0)])],8,Ht))],16,Ft)}const Kt=A(jt,[["render",Jt]]),Qt=J(Ct,500),Wt=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||(Nt()?"000000":"ffffff");var P=(t=>(t.BASE="base",t.LOADING="loading",t.CREATING_TAG="creating-tag",t.DONE="done",t))(P||{});const Xt=K("systemtags","restrictSystemTagsCreationToAdmin",!1),Yt=rt({name:"SystemTagPicker",components:{CheckIcon:Lt,CircleIcon:zt,CircleOutlineIcon:Gt,NcButton:X,NcCheckboxRadioSwitch:Y,NcChip:et,NcColorPicker:st,NcDialog:at,NcEmptyContent:it,NcLoadingIcon:ot,NcNoteCard:lt,NcTextField:nt,PencilIcon:pt,PlusIcon:tt,TagIcon:Kt},props:{nodes:{type:Array,required:!0}},emits:{close(t){return t===null||typeof t=="boolean"}},setup(){return{emit:R,Status:P,t:f,canEditOrCreateTag:!Xt||q()?.isAdmin}},data(){return{status:"base",opened:!0,openedPicker:!1,input:"",tags:[],tagList:{},toAdd:[],toRemove:[]}},computed:{sortedTags(){return[...this.tags].sort((t,s)=>t.displayName.localeCompare(s.displayName,S(),{ignorePunctuation:!0}))},filteredTags(){return this.input.trim()===""?this.sortedTags:this.sortedTags.filter(t=>t.displayName.normalize().toLowerCase().includes(this.input.normalize().toLowerCase()))},hasChanges(){return this.toAdd.length>0||this.toRemove.length>0},canCreateTag(){return this.input.trim()!==""&&!this.tags.some(t=>t.displayName.trim().toLocaleLowerCase()===this.input.trim().toLocaleLowerCase())},statusMessage(){if(this.toAdd.length===0&&this.toRemove.length===0)return"";if(this.toAdd.length===1&&this.toRemove.length===1)return k("systemtags","{tag1} will be set and {tag2} will be removed from {count} file.","{tag1} will be set and {tag2} will be removed from {count} files.",this.nodes.length,{tag1:this.formatTagChip(this.toAdd[0]),tag2:this.formatTagChip(this.toRemove[0]),count:this.nodes.length},{escape:!1});const t=this.toAdd.map(this.formatTagChip),s=t.pop(),e=this.toRemove.map(this.formatTagChip),o=e.pop(),l=k("systemtags","{tag} will be set to 1 file.","{tag} will be set to {count} files.",this.nodes.length,{tag:s,count:this.nodes.length},{escape:!1}),n=k("systemtags","{tag} will be removed from {count} file.","{tag} will be removed from {count} files.",this.nodes.length,{tag:o,count:this.nodes.length},{escape:!1}),i=k("systemtags","{tags} and {lastTag} will be set to 1 file.","{tags} and {lastTag} will be set to {count} files.",this.nodes.length,{tags:t.join(", "),lastTag:s,count:this.nodes.length},{escape:!1}),y=k("systemtags","{tags} and {lastTag} will be removed from 1 file.","{tags} and {lastTag} will be removed from {count} files.",this.nodes.length,{tags:e.join(", "),lastTag:o,count:this.nodes.length},{escape:!1});return this.toAdd.length===1&&this.toRemove.length===0?l:this.toAdd.length===0&&this.toRemove.length===1?n:this.toAdd.length>1&&this.toRemove.length===0?i:this.toAdd.length===0&&this.toRemove.length>1?y:this.toAdd.length>1&&this.toRemove.length===1?`${i} ${n}`:this.toAdd.length===1&&this.toRemove.length>1?`${l} ${y}`:`${i} ${y}`}},beforeMount(){ft().then(t=>{this.tags=t}),this.tagList=this.nodes.reduce((t,s)=>((I(s)||[]).forEach(e=>{t[e]=(t[e]||0)+1}),t),{}),this.canEditOrCreateTag||L.debug("System tag creation is restricted to admins and the current user is not an admin")},methods:{formatTagChip(t){const s=this.$refs.chip.$el.cloneNode(!0);if(t.color){const e=this.tagListStyle(t);Object.entries(e).forEach(([o,l])=>{s.style.setProperty(o,l)})}return s.outerHTML.replace("%s",Q(W.sanitize(t.displayName)))},formatTagName(t){return t.userVisible?t.userAssignable?t.displayName:f("systemtags","{displayName} (restricted)",{displayName:t.displayName}):f("systemtags","{displayName} (hidden)",{displayName:t.displayName})},onColorChange(t,s){t.color=s.replace("#",""),Qt(t)},isChecked(t){return t.displayName in this.tagList&&this.tagList[t.displayName]===this.nodes.length},isIndeterminate(t){return t.displayName in this.tagList&&this.tagList[t.displayName]!==0&&this.tagList[t.displayName]!==this.nodes.length},onCheckUpdate(t,s){s?(this.toAdd.push(t),this.toRemove=this.toRemove.filter(e=>e.id!==t.id),this.tagList[t.displayName]=this.nodes.length):(this.toRemove.push(t),this.toAdd=this.toAdd.filter(e=>e.id!==t.id),this.tagList[t.displayName]=0)},async onNewTag(){if(!this.canEditOrCreateTag){_(f("systemtags","Only admins can create new tags"));return}this.status="creating-tag";try{const t={displayName:this.input.trim(),userAssignable:!0,userVisible:!0,canAssign:!0},s=await ut(t),e=await yt(s);this.tags.push(e),this.input="",this.onCheckUpdate(e,!0),await this.$nextTick(),Array.isArray(this.$refs.tags)&&this.$refs.tags.find(o=>o.dataset.cySystemtagsPickerTag===s.toString())?.scrollIntoView({behavior:"instant",block:"center",inline:"center"})}catch(t){_(t?.message||f("systemtags","Failed to create tag"))}finally{this.status="base"}},async onSubmit(){this.status="loading",L.debug("Applying tags",{toAdd:this.toAdd,toRemove:this.toRemove});try{for(const s of this.toAdd){const{etag:e,objects:o}=await O(s,"files"),l=[...new Set([...o.map(n=>n.id).filter(Boolean),...this.nodes.map(n=>n.fileid).filter(Boolean)])];await x(s,"files",l.map(n=>({id:n,type:"files"})),e)}for(const s of this.toRemove){const{etag:e,objects:o}=await O(s,"files"),l=new Set(this.nodes.map(i=>i.fileid)),n=o.map(i=>i.id).filter((i,y,T)=>!l.has(i)&&T.indexOf(i)===y);await x(s,"files",n.map(i=>({id:i,type:"files"})),e)}}catch(s){L.error("Failed to apply tags",{error:s}),_(f("systemtags","Failed to apply tags changes")),this.status="base";return}const t=[];this.toAdd.forEach(s=>{this.nodes.forEach(e=>{const o=[...I(e)||[],s.displayName].sort((l,n)=>l.localeCompare(n,S(),{ignorePunctuation:!0}));z(e,o),t.push(e)})}),this.toRemove.forEach(s=>{this.nodes.forEach(e=>{const o=[...I(e)||[]].filter(l=>l!==s.displayName).sort((l,n)=>l.localeCompare(n,S(),{ignorePunctuation:!0}));z(e,o),t.push(e)})}),t.forEach(s=>R("systemtags:node:updated",s)),this.status="done",setTimeout(()=>{this.opened=!1,this.$emit("close",!0)},2e3)},onCancel(){this.opened=!1,this.$emit("close",null)},tagListStyle(t){if(!t.color)return{"--color-circle-icon":"var(--color-text-maxcontrast)"};const s=bt(`#${t.color}`,`#${Wt}`),e=kt(s)?"#000000":"#ffffff";return{"--color-circle-icon":"var(--color-primary-element)","--color-primary":s,"--color-primary-text":e,"--color-primary-element":s,"--color-primary-element-text":e}}}}),te={class:"systemtags-picker__input"},ee={class:"systemtags-picker__tags","data-cy-systemtags-picker-tags":""},se=["data-cy-systemtags-picker-tag"],ae={class:"systemtags-picker__tag-create-subline"},ie={class:"systemtags-picker__note"},oe=["innerHTML"];function le(t,s,e,o,l,n){const i=c("NcLoadingIcon"),y=c("CheckIcon"),T=c("NcEmptyContent"),M=c("TagIcon"),V=c("NcTextField"),B=c("NcCheckboxRadioSwitch"),U=c("CircleIcon"),D=c("CircleOutlineIcon"),G=c("PencilIcon"),v=c("NcButton"),j=c("NcColorPicker"),F=c("PlusIcon"),$=c("NcNoteCard"),H=c("NcChip"),Z=c("NcDialog");return a(),h(Z,{"data-cy-systemtags-picker":"",noClose:t.status===t.Status.LOADING,name:t.t("systemtags","Manage tags"),open:t.opened,class:ht(["systemtags-picker--"+t.status,"systemtags-picker"]),closeOnClickOutside:"",outTransition:"","onUpdate:open":t.onCancel},{actions:m(()=>[u(v,{disabled:t.status!==t.Status.BASE,variant:"tertiary","data-cy-systemtags-picker-button-cancel":"",onClick:t.onCancel},{default:m(()=>[N(p(t.t("systemtags","Cancel")),1)]),_:1},8,["disabled","onClick"]),u(v,{disabled:!t.hasChanges||t.status!==t.Status.BASE,"data-cy-systemtags-picker-button-submit":"",onClick:t.onSubmit},{default:m(()=>[N(p(t.t("systemtags","Apply")),1)]),_:1},8,["disabled","onClick"])]),default:m(()=>[t.status===t.Status.LOADING||t.status===t.Status.DONE?(a(),h(T,{key:0,name:t.t("systemtags","Applying tags changes…")},{icon:m(()=>[t.status===t.Status.LOADING?(a(),h(i,{key:0})):(a(),h(y,{key:1,fillColor:"var(--color-border-success)"}))]),_:1},8,["name"])):(a(),d(E,{key:1},[g("div",te,[u(V,{modelValue:t.input,"onUpdate:modelValue":s[0]||(s[0]=r=>t.input=r),label:t.canEditOrCreateTag?t.t("systemtags","Search or create tag"):t.t("systemtags","Search tag"),"data-cy-systemtags-picker-input":""},{default:m(()=>[u(M,{size:20})]),_:1},8,["modelValue","label"])]),g("ul",ee,[(a(!0),d(E,null,ct(t.filteredTags,r=>(a(),d("li",{key:r.id,ref_for:!0,ref:"tags","data-cy-systemtags-picker-tag":r.id,style:dt(t.tagListStyle(r)),class:"systemtags-picker__tag"},[u(B,{modelValue:t.isChecked(r),disabled:!r.canAssign,indeterminate:t.isIndeterminate(r),label:r.displayName,class:"systemtags-picker__tag-checkbox","onUpdate:modelValue":b=>t.onCheckUpdate(r,b)},{default:m(()=>[N(p(t.formatTagName(r)),1)]),_:2},1032,["modelValue","disabled","indeterminate","label","onUpdate:modelValue"]),t.canEditOrCreateTag?(a(),h(j,{key:0,"data-cy-systemtags-picker-tag-color":r.id,modelValue:`#${r.color||"000000"}`,shown:t.openedPicker===r.id,class:"systemtags-picker__tag-color","onUpdate:shown":b=>t.openedPicker=b?r.id:!1,onSubmit:b=>t.onColorChange(r,b)},{default:m(()=>[u(v,{"aria-label":t.t("systemtags","Change tag color"),variant:"tertiary"},{icon:m(()=>[r.color?(a(),h(U,{key:0,size:24,fillColor:"var(--color-circle-icon)",class:"button-color-circle"})):(a(),h(D,{key:1,size:24,fillColor:"var(--color-circle-icon)",class:"button-color-empty"})),u(G,{class:"button-color-pencil"})]),_:2},1032,["aria-label"])]),_:2},1032,["data-cy-systemtags-picker-tag-color","modelValue","shown","onUpdate:shown","onSubmit"])):C("",!0)],12,se))),128)),g("li",null,[t.canEditOrCreateTag&&t.canCreateTag?(a(),h(v,{key:0,disabled:t.status===t.Status.CREATING_TAG,alignment:"start",class:"systemtags-picker__tag-create",type:"submit",variant:"tertiary","data-cy-systemtags-picker-button-create":"",onClick:t.onNewTag},{icon:m(()=>[u(F)]),default:m(()=>[N(p(t.input.trim()),1),s[1]||(s[1]=g("br",null,null,-1)),g("span",ae,p(t.t("systemtags","Create new tag")),1)]),_:1},8,["disabled","onClick"])):C("",!0)])]),g("div",ie,[t.hasChanges?(a(),h($,{key:1,type:"info"},{default:m(()=>[g("span",{innerHTML:t.statusMessage},null,8,oe)]),_:1})):(a(),h($,{key:0,type:"info"},{default:m(()=>[N(p(t.t("systemtags","Choose tags for the selected files")),1)]),_:1}))])],64)),mt(g("div",null,[u(H,{ref:"chip",text:"%s",noClose:"",variant:"primary"},null,512)],512),[[gt,!1]])]),_:1},8,["noClose","name","open","class","onUpdate:open"])}const Pe=A(Yt,[["render",le],["__scopeId","data-v-1f458e10"]]);export{Pe as default}; -//# sourceMappingURL=SystemTagPicker-BHM6bOgM.chunk.mjs.map diff --git a/dist/SystemTagPicker-Bys_E8hA.chunk.mjs b/dist/SystemTagPicker-Bys_E8hA.chunk.mjs new file mode 100644 index 0000000000000..9a6ea1ee7c34e --- /dev/null +++ b/dist/SystemTagPicker-Bys_E8hA.chunk.mjs @@ -0,0 +1,2 @@ +import{f as R,a as q,d as J}from"./index-Cp0kcsps.chunk.mjs";import{a as _}from"./index-mH69OG7L.chunk.mjs";import{_ as A,l as K}from"./public-C1mLBHT3.chunk.mjs";import{t as f,g as S,e as Q,p as W,a as k}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as X}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as Y}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{P as tt,N as et}from"./Plus-Cvoorj3T.chunk.mjs";import st from"./index-BRPJrOcF.chunk.mjs";import{N as at}from"./index-CmDAUQql.chunk.mjs";import{N as it}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as ot}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as lt}from"./mdi-B6W_Xvj-.chunk.mjs";import{_ as nt}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{o as a,f as d,g,t as p,h as C,m as w,b as rt,r as c,c as h,w as m,F as E,k as u,B as ct,O as dt,j as N,J as mt,K as gt,y as ht}from"./Web-DYqXJUev.chunk.mjs";import{P as pt}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{l as L,g as O,s as x,e as I,h as z,c as ut,i as yt,f as ft,u as Ct}from"./api-CqKbR_Nj.chunk.mjs";import{e as bt,i as kt,a as Nt}from"./systemtags-init.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./dav-DpOWisxz.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";import"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./index-BGv_Bbjs.chunk.mjs";const At={name:"CheckCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},vt=["aria-hidden","aria-label"],wt=["fill","width","height"],Tt={d:"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z"},_t={key:0};function St(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon check-circle-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Tt,[e.title?(a(),d("title",_t,p(e.title),1)):C("",!0)])],8,wt))],16,vt)}const Lt=A(At,[["render",St]]),It={name:"CircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},$t=["aria-hidden","aria-label"],Rt=["fill","width","height"],Et={d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},Ot={key:0};function xt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon circle-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Et,[e.title?(a(),d("title",Ot,p(e.title),1)):C("",!0)])],8,Rt))],16,$t)}const zt=A(It,[["render",xt]]),Pt={name:"CircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Mt=["aria-hidden","aria-label"],Vt=["fill","width","height"],Bt={d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},Ut={key:0};function Dt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon circle-outline-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Bt,[e.title?(a(),d("title",Ut,p(e.title),1)):C("",!0)])],8,Vt))],16,Mt)}const Gt=A(Pt,[["render",Dt]]),jt={name:"TagOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ft=["aria-hidden","aria-label"],Ht=["fill","width","height"],Zt={d:"M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L11.59 21.42A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M13 20L4 11V4H11L20 13M6.5 5A1.5 1.5 0 1 1 5 6.5A1.5 1.5 0 0 1 6.5 5Z"},qt={key:0};function Jt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon tag-outline-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Zt,[e.title?(a(),d("title",qt,p(e.title),1)):C("",!0)])],8,Ht))],16,Ft)}const Kt=A(jt,[["render",Jt]]),Qt=J(Ct,500),Wt=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||(Nt()?"000000":"ffffff");var P=(t=>(t.BASE="base",t.LOADING="loading",t.CREATING_TAG="creating-tag",t.DONE="done",t))(P||{});const Xt=K("systemtags","restrictSystemTagsCreationToAdmin",!1),Yt=rt({name:"SystemTagPicker",components:{CheckIcon:Lt,CircleIcon:zt,CircleOutlineIcon:Gt,NcButton:X,NcCheckboxRadioSwitch:Y,NcChip:et,NcColorPicker:st,NcDialog:at,NcEmptyContent:it,NcLoadingIcon:ot,NcNoteCard:lt,NcTextField:nt,PencilIcon:pt,PlusIcon:tt,TagIcon:Kt},props:{nodes:{type:Array,required:!0}},emits:{close(t){return t===null||typeof t=="boolean"}},setup(){return{emit:R,Status:P,t:f,canEditOrCreateTag:!Xt||q()?.isAdmin}},data(){return{status:"base",opened:!0,openedPicker:!1,input:"",tags:[],tagList:{},toAdd:[],toRemove:[]}},computed:{sortedTags(){return[...this.tags].sort((t,s)=>t.displayName.localeCompare(s.displayName,S(),{ignorePunctuation:!0}))},filteredTags(){return this.input.trim()===""?this.sortedTags:this.sortedTags.filter(t=>t.displayName.normalize().toLowerCase().includes(this.input.normalize().toLowerCase()))},hasChanges(){return this.toAdd.length>0||this.toRemove.length>0},canCreateTag(){return this.input.trim()!==""&&!this.tags.some(t=>t.displayName.trim().toLocaleLowerCase()===this.input.trim().toLocaleLowerCase())},statusMessage(){if(this.toAdd.length===0&&this.toRemove.length===0)return"";if(this.toAdd.length===1&&this.toRemove.length===1)return k("systemtags","{tag1} will be set and {tag2} will be removed from {count} file.","{tag1} will be set and {tag2} will be removed from {count} files.",this.nodes.length,{tag1:this.formatTagChip(this.toAdd[0]),tag2:this.formatTagChip(this.toRemove[0]),count:this.nodes.length},{escape:!1});const t=this.toAdd.map(this.formatTagChip),s=t.pop(),e=this.toRemove.map(this.formatTagChip),o=e.pop(),l=k("systemtags","{tag} will be set to 1 file.","{tag} will be set to {count} files.",this.nodes.length,{tag:s,count:this.nodes.length},{escape:!1}),n=k("systemtags","{tag} will be removed from {count} file.","{tag} will be removed from {count} files.",this.nodes.length,{tag:o,count:this.nodes.length},{escape:!1}),i=k("systemtags","{tags} and {lastTag} will be set to 1 file.","{tags} and {lastTag} will be set to {count} files.",this.nodes.length,{tags:t.join(", "),lastTag:s,count:this.nodes.length},{escape:!1}),y=k("systemtags","{tags} and {lastTag} will be removed from 1 file.","{tags} and {lastTag} will be removed from {count} files.",this.nodes.length,{tags:e.join(", "),lastTag:o,count:this.nodes.length},{escape:!1});return this.toAdd.length===1&&this.toRemove.length===0?l:this.toAdd.length===0&&this.toRemove.length===1?n:this.toAdd.length>1&&this.toRemove.length===0?i:this.toAdd.length===0&&this.toRemove.length>1?y:this.toAdd.length>1&&this.toRemove.length===1?`${i} ${n}`:this.toAdd.length===1&&this.toRemove.length>1?`${l} ${y}`:`${i} ${y}`}},beforeMount(){ft().then(t=>{this.tags=t}),this.tagList=this.nodes.reduce((t,s)=>((I(s)||[]).forEach(e=>{t[e]=(t[e]||0)+1}),t),{}),this.canEditOrCreateTag||L.debug("System tag creation is restricted to admins and the current user is not an admin")},methods:{formatTagChip(t){const s=this.$refs.chip.$el.cloneNode(!0);if(t.color){const e=this.tagListStyle(t);Object.entries(e).forEach(([o,l])=>{s.style.setProperty(o,l)})}return s.outerHTML.replace("%s",Q(W.sanitize(t.displayName)))},formatTagName(t){return t.userVisible?t.userAssignable?t.displayName:f("systemtags","{displayName} (restricted)",{displayName:t.displayName}):f("systemtags","{displayName} (hidden)",{displayName:t.displayName})},onColorChange(t,s){t.color=s.replace("#",""),Qt(t)},isChecked(t){return t.displayName in this.tagList&&this.tagList[t.displayName]===this.nodes.length},isIndeterminate(t){return t.displayName in this.tagList&&this.tagList[t.displayName]!==0&&this.tagList[t.displayName]!==this.nodes.length},onCheckUpdate(t,s){s?(this.toAdd.push(t),this.toRemove=this.toRemove.filter(e=>e.id!==t.id),this.tagList[t.displayName]=this.nodes.length):(this.toRemove.push(t),this.toAdd=this.toAdd.filter(e=>e.id!==t.id),this.tagList[t.displayName]=0)},async onNewTag(){if(!this.canEditOrCreateTag){_(f("systemtags","Only admins can create new tags"));return}this.status="creating-tag";try{const t={displayName:this.input.trim(),userAssignable:!0,userVisible:!0,canAssign:!0},s=await ut(t),e=await yt(s);this.tags.push(e),this.input="",this.onCheckUpdate(e,!0),await this.$nextTick(),Array.isArray(this.$refs.tags)&&this.$refs.tags.find(o=>o.dataset.cySystemtagsPickerTag===s.toString())?.scrollIntoView({behavior:"instant",block:"center",inline:"center"})}catch(t){_(t?.message||f("systemtags","Failed to create tag"))}finally{this.status="base"}},async onSubmit(){this.status="loading",L.debug("Applying tags",{toAdd:this.toAdd,toRemove:this.toRemove});try{for(const s of this.toAdd){const{etag:e,objects:o}=await O(s,"files"),l=[...new Set([...o.map(n=>n.id).filter(Boolean),...this.nodes.map(n=>n.fileid).filter(Boolean)])];await x(s,"files",l.map(n=>({id:n,type:"files"})),e)}for(const s of this.toRemove){const{etag:e,objects:o}=await O(s,"files"),l=new Set(this.nodes.map(i=>i.fileid)),n=o.map(i=>i.id).filter((i,y,T)=>!l.has(i)&&T.indexOf(i)===y);await x(s,"files",n.map(i=>({id:i,type:"files"})),e)}}catch(s){L.error("Failed to apply tags",{error:s}),_(f("systemtags","Failed to apply tags changes")),this.status="base";return}const t=[];this.toAdd.forEach(s=>{this.nodes.forEach(e=>{const o=[...I(e)||[],s.displayName].sort((l,n)=>l.localeCompare(n,S(),{ignorePunctuation:!0}));z(e,o),t.push(e)})}),this.toRemove.forEach(s=>{this.nodes.forEach(e=>{const o=[...I(e)||[]].filter(l=>l!==s.displayName).sort((l,n)=>l.localeCompare(n,S(),{ignorePunctuation:!0}));z(e,o),t.push(e)})}),t.forEach(s=>R("systemtags:node:updated",s)),this.status="done",setTimeout(()=>{this.opened=!1,this.$emit("close",!0)},2e3)},onCancel(){this.opened=!1,this.$emit("close",null)},tagListStyle(t){if(!t.color)return{"--color-circle-icon":"var(--color-text-maxcontrast)"};const s=bt(`#${t.color}`,`#${Wt}`),e=kt(s)?"#000000":"#ffffff";return{"--color-circle-icon":"var(--color-primary-element)","--color-primary":s,"--color-primary-text":e,"--color-primary-element":s,"--color-primary-element-text":e}}}}),te={class:"systemtags-picker__input"},ee={class:"systemtags-picker__tags","data-cy-systemtags-picker-tags":""},se=["data-cy-systemtags-picker-tag"],ae={class:"systemtags-picker__tag-create-subline"},ie={class:"systemtags-picker__note"},oe=["innerHTML"];function le(t,s,e,o,l,n){const i=c("NcLoadingIcon"),y=c("CheckIcon"),T=c("NcEmptyContent"),M=c("TagIcon"),V=c("NcTextField"),B=c("NcCheckboxRadioSwitch"),U=c("CircleIcon"),D=c("CircleOutlineIcon"),G=c("PencilIcon"),v=c("NcButton"),j=c("NcColorPicker"),F=c("PlusIcon"),$=c("NcNoteCard"),H=c("NcChip"),Z=c("NcDialog");return a(),h(Z,{"data-cy-systemtags-picker":"",noClose:t.status===t.Status.LOADING,name:t.t("systemtags","Manage tags"),open:t.opened,class:ht(["systemtags-picker--"+t.status,"systemtags-picker"]),closeOnClickOutside:"",outTransition:"","onUpdate:open":t.onCancel},{actions:m(()=>[u(v,{disabled:t.status!==t.Status.BASE,variant:"tertiary","data-cy-systemtags-picker-button-cancel":"",onClick:t.onCancel},{default:m(()=>[N(p(t.t("systemtags","Cancel")),1)]),_:1},8,["disabled","onClick"]),u(v,{disabled:!t.hasChanges||t.status!==t.Status.BASE,"data-cy-systemtags-picker-button-submit":"",onClick:t.onSubmit},{default:m(()=>[N(p(t.t("systemtags","Apply")),1)]),_:1},8,["disabled","onClick"])]),default:m(()=>[t.status===t.Status.LOADING||t.status===t.Status.DONE?(a(),h(T,{key:0,name:t.t("systemtags","Applying tags changes…")},{icon:m(()=>[t.status===t.Status.LOADING?(a(),h(i,{key:0})):(a(),h(y,{key:1,fillColor:"var(--color-border-success)"}))]),_:1},8,["name"])):(a(),d(E,{key:1},[g("div",te,[u(V,{modelValue:t.input,"onUpdate:modelValue":s[0]||(s[0]=r=>t.input=r),label:t.canEditOrCreateTag?t.t("systemtags","Search or create tag"):t.t("systemtags","Search tag"),"data-cy-systemtags-picker-input":""},{default:m(()=>[u(M,{size:20})]),_:1},8,["modelValue","label"])]),g("ul",ee,[(a(!0),d(E,null,ct(t.filteredTags,r=>(a(),d("li",{key:r.id,ref_for:!0,ref:"tags","data-cy-systemtags-picker-tag":r.id,style:dt(t.tagListStyle(r)),class:"systemtags-picker__tag"},[u(B,{modelValue:t.isChecked(r),disabled:!r.canAssign,indeterminate:t.isIndeterminate(r),label:r.displayName,class:"systemtags-picker__tag-checkbox","onUpdate:modelValue":b=>t.onCheckUpdate(r,b)},{default:m(()=>[N(p(t.formatTagName(r)),1)]),_:2},1032,["modelValue","disabled","indeterminate","label","onUpdate:modelValue"]),t.canEditOrCreateTag?(a(),h(j,{key:0,"data-cy-systemtags-picker-tag-color":r.id,modelValue:`#${r.color||"000000"}`,shown:t.openedPicker===r.id,class:"systemtags-picker__tag-color","onUpdate:shown":b=>t.openedPicker=b?r.id:!1,onSubmit:b=>t.onColorChange(r,b)},{default:m(()=>[u(v,{"aria-label":t.t("systemtags","Change tag color"),variant:"tertiary"},{icon:m(()=>[r.color?(a(),h(U,{key:0,size:24,fillColor:"var(--color-circle-icon)",class:"button-color-circle"})):(a(),h(D,{key:1,size:24,fillColor:"var(--color-circle-icon)",class:"button-color-empty"})),u(G,{class:"button-color-pencil"})]),_:2},1032,["aria-label"])]),_:2},1032,["data-cy-systemtags-picker-tag-color","modelValue","shown","onUpdate:shown","onSubmit"])):C("",!0)],12,se))),128)),g("li",null,[t.canEditOrCreateTag&&t.canCreateTag?(a(),h(v,{key:0,disabled:t.status===t.Status.CREATING_TAG,alignment:"start",class:"systemtags-picker__tag-create",type:"submit",variant:"tertiary","data-cy-systemtags-picker-button-create":"",onClick:t.onNewTag},{icon:m(()=>[u(F)]),default:m(()=>[N(p(t.input.trim()),1),s[1]||(s[1]=g("br",null,null,-1)),g("span",ae,p(t.t("systemtags","Create new tag")),1)]),_:1},8,["disabled","onClick"])):C("",!0)])]),g("div",ie,[t.hasChanges?(a(),h($,{key:1,type:"info"},{default:m(()=>[g("span",{innerHTML:t.statusMessage},null,8,oe)]),_:1})):(a(),h($,{key:0,type:"info"},{default:m(()=>[N(p(t.t("systemtags","Choose tags for the selected files")),1)]),_:1}))])],64)),mt(g("div",null,[u(H,{ref:"chip",text:"%s",noClose:"",variant:"primary"},null,512)],512),[[gt,!1]])]),_:1},8,["noClose","name","open","class","onUpdate:open"])}const Pe=A(Yt,[["render",le],["__scopeId","data-v-1f458e10"]]);export{Pe as default}; +//# sourceMappingURL=SystemTagPicker-Bys_E8hA.chunk.mjs.map diff --git a/dist/SystemTagPicker-BHM6bOgM.chunk.mjs.license b/dist/SystemTagPicker-Bys_E8hA.chunk.mjs.license similarity index 100% rename from dist/SystemTagPicker-BHM6bOgM.chunk.mjs.license rename to dist/SystemTagPicker-Bys_E8hA.chunk.mjs.license diff --git a/dist/SystemTagPicker-BHM6bOgM.chunk.mjs.map b/dist/SystemTagPicker-Bys_E8hA.chunk.mjs.map similarity index 99% rename from dist/SystemTagPicker-BHM6bOgM.chunk.mjs.map rename to dist/SystemTagPicker-Bys_E8hA.chunk.mjs.map index 20c255b310b4b..a9ce762860f02 100644 --- a/dist/SystemTagPicker-BHM6bOgM.chunk.mjs.map +++ b/dist/SystemTagPicker-Bys_E8hA.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"SystemTagPicker-BHM6bOgM.chunk.mjs","sources":["../node_modules/vue-material-design-icons/CheckCircle.vue","../node_modules/vue-material-design-icons/Circle.vue","../node_modules/vue-material-design-icons/CircleOutline.vue","../node_modules/vue-material-design-icons/TagOutline.vue","../build/frontend/apps/systemtags/src/components/SystemTagPicker.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n","\n\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","debounceUpdateTag","debounce","updateTag","mainBackgroundColor","isDarkModeEnabled","Status","restrictSystemTagsCreationToAdmin","loadState","defineComponent","CheckIcon","CircleIcon","CircleOutlineIcon","NcButton","NcCheckboxRadioSwitch","NcChip","NcColorPicker","NcDialog","NcEmptyContent","NcLoadingIcon","NcNoteCard","NcTextField","PencilIcon","PlusIcon","TagIcon","status","emit","t","getCurrentUser","a","b","getLanguage","tag","n","tagsAdd","lastTagAdd","tagsRemove","lastTagRemove","addStringSingular","removeStringSingular","addStringPlural","removeStringPlural","fetchTags","tags","acc","node","getNodeSystemTags","logger","chipCloneEl","style","key","value","escapeHTML","domPurify","color","checked","search","showError","payload","id","createTag","fetchTag","el","error","etag","objects","getTagObjects","ids","obj","setTagObjects","nodeFileIds","index","self","nodes","setNodeSystemTags","primaryElement","elementColor","textColor","invertTextColor","_hoisted_1","_hoisted_4","_hoisted_5","_createBlock","_component_NcDialog","_normalizeClass","_withCtx","_createVNode","_component_NcButton","_createTextVNode","_toDisplayString","_component_NcEmptyContent","_component_NcLoadingIcon","_component_CheckIcon","_Fragment","_component_NcTextField","_component_TagIcon","_hoisted_2","_renderList","_normalizeStyle","_component_NcCheckboxRadioSwitch","_component_NcColorPicker","_component_CircleIcon","_component_CircleOutlineIcon","_component_PencilIcon","_component_PlusIcon","_component_NcNoteCard","_hoisted_6","_component_NcChip"],"mappings":"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","x_google_ignoreList":[0,1,2,3]} \ No newline at end of file +{"version":3,"file":"SystemTagPicker-Bys_E8hA.chunk.mjs","sources":["../node_modules/vue-material-design-icons/CheckCircle.vue","../node_modules/vue-material-design-icons/Circle.vue","../node_modules/vue-material-design-icons/CircleOutline.vue","../node_modules/vue-material-design-icons/TagOutline.vue","../build/frontend/apps/systemtags/src/components/SystemTagPicker.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n","\n\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","debounceUpdateTag","debounce","updateTag","mainBackgroundColor","isDarkModeEnabled","Status","restrictSystemTagsCreationToAdmin","loadState","defineComponent","CheckIcon","CircleIcon","CircleOutlineIcon","NcButton","NcCheckboxRadioSwitch","NcChip","NcColorPicker","NcDialog","NcEmptyContent","NcLoadingIcon","NcNoteCard","NcTextField","PencilIcon","PlusIcon","TagIcon","status","emit","t","getCurrentUser","a","b","getLanguage","tag","n","tagsAdd","lastTagAdd","tagsRemove","lastTagRemove","addStringSingular","removeStringSingular","addStringPlural","removeStringPlural","fetchTags","tags","acc","node","getNodeSystemTags","logger","chipCloneEl","style","key","value","escapeHTML","domPurify","color","checked","search","showError","payload","id","createTag","fetchTag","el","error","etag","objects","getTagObjects","ids","obj","setTagObjects","nodeFileIds","index","self","nodes","setNodeSystemTags","primaryElement","elementColor","textColor","invertTextColor","_hoisted_1","_hoisted_4","_hoisted_5","_createBlock","_component_NcDialog","_normalizeClass","_withCtx","_createVNode","_component_NcButton","_createTextVNode","_toDisplayString","_component_NcEmptyContent","_component_NcLoadingIcon","_component_CheckIcon","_Fragment","_component_NcTextField","_component_TagIcon","_hoisted_2","_renderList","_normalizeStyle","_component_NcCheckboxRadioSwitch","_component_NcColorPicker","_component_CircleIcon","_component_CircleOutlineIcon","_component_PencilIcon","_component_PlusIcon","_component_NcNoteCard","_hoisted_6","_component_NcChip"],"mappings":"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","x_google_ignoreList":[0,1,2,3]} \ No newline at end of file diff --git a/dist/SystemTagPicker-BHM6bOgM.chunk.mjs.map.license b/dist/SystemTagPicker-Bys_E8hA.chunk.mjs.map.license similarity index 100% rename from dist/SystemTagPicker-BHM6bOgM.chunk.mjs.map.license rename to dist/SystemTagPicker-Bys_E8hA.chunk.mjs.map.license diff --git a/dist/UpdateAllDialog-B79HRvpB.chunk.mjs b/dist/UpdateAllDialog-B79HRvpB.chunk.mjs deleted file mode 100644 index db9d54a30c216..0000000000000 --- a/dist/UpdateAllDialog-B79HRvpB.chunk.mjs +++ /dev/null @@ -1,2 +0,0 @@ -import{r as U,o as d,f as k,g,J as K,am as Q,y as c,k as p,t as f,n as X,b as G,E as Y,c as h,u as e,l as D,w as u,h as V,v as S,a7 as Z,F as z,B,z as x,j as C,a8 as ee,C as j,a as ae,_ as te,q as le}from"./Web-DYqXJUev.chunk.mjs";import{D as se,E as pe,F as ie,G as oe,H as re,I as ne,J as T,q as de,K as ue,v as me,N as ce}from"./mdi-B6W_Xvj-.chunk.mjs";import{t as n,g as _e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{a as ye,N}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{_ as he,N as v,c as ge}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{b as be}from"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import{P as fe}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{e as ve,b as ke,w as Ae}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{s as we,t as Ge,u as M,v as O,N as w}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as q}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import{s as Ie,N as Se}from"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import{N as E}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import{N as $e}from"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{b as $,B as De,e as Ve,f as Ce,u as P,g as F,d as H,M as Me,l as xe}from"./appstore-main.mjs";import{_ as I}from"./public-C1mLBHT3.chunk.mjs";import{a as Ee}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";const ze={name:"NcActionCheckbox",components:{NcIconSvgWrapper:v},mixins:[ye],inject:{isInSemanticMenu:{from:ve,default:!1}},props:{id:{type:String,default:()=>"action-"+ge(),validator:i=>i.trim()!==""},modelValue:{type:Boolean,default:!1},value:{type:[String,Number],default:""},disabled:{type:Boolean,default:!1}},emits:["change","check","uncheck","update:modelValue"],setup(i){return{model:X(i,"modelValue"),mdiCheckboxBlankOutline:Ge,mdiCheckboxMarked:we}},methods:{onChange(i){this.$emit("change",i),i.target.checked?this.$emit("check"):this.$emit("uncheck")}}},qe=["role"],Ne=["role","aria-checked"],Le={class:"action-checkbox__icon"},Ue=["id","value","disabled"],Be={class:"action-checkbox__text"};function je(i,s,r,a,l,t){const o=U("NcIconSvgWrapper");return d(),k("li",{class:c(["action",{"action--disabled":r.disabled}]),role:t.isInSemanticMenu&&"presentation"},[g("label",{class:"action-checkbox",role:t.isInSemanticMenu&&"menuitemcheckbox","aria-checked":t.isInSemanticMenu&&a.model.toString()},[g("span",Le,[K(g("input",{id:r.id,"onUpdate:modelValue":s[0]||(s[0]=b=>a.model=b),type:"checkbox",class:c(["action-checkbox__input",{focusable:!r.disabled}]),value:r.value,disabled:r.disabled,onChange:s[1]||(s[1]=(...b)=>t.onChange&&t.onChange(...b))},null,42,Ue),[[Q,a.model]]),p(o,{path:a.model?a.mdiCheckboxMarked:a.mdiCheckboxBlankOutline,size:20},null,8,["path"])]),g("span",Be,f(i.text),1)],8,Ne)],10,qe)}const Te=he(ze,[["render",je],["__scopeId","data-v-2947bc3b"]]),Oe=["src"],Pe=new fe({concurrency:4}),Fe=G({__name:"AppImage",props:{app:{}},setup(i){const s=i,r=D(!1),a=D(!0);return Y(()=>{s.app.screenshot?(r.value=!1,a.value=!0,Pe.add(()=>{const l=new Image,{promise:t,resolve:o}=Promise.withResolvers();return l.onload=()=>{a.value=!1,o()},l.onerror=()=>{r.value=!0,a.value=!1,o()},l.src=s.app.screenshot,t})):(a.value=!1,r.value=!1)}),(l,t)=>(d(),k("div",{class:c(l.$style.appImage)},[r.value||!s.app.screenshot?(d(),h(e(v),{key:0,size:80,path:e(se)},null,8,["path"])):a.value?(d(),h(e(q),{key:1,size:80})):(d(),k("img",{key:2,class:c(l.$style.appImage__image),src:s.app.screenshot,alt:""},null,10,Oe))],2))}}),He="_appImage_1ky4h_2",Re="_appImage__image_1ky4h_9",Je={appImage:He,appImage__image:Re},We={$style:Je},Ke=I(Fe,[["__cssModules",We]]),Qe=G({__name:"AppGridItem",props:{app:{}},setup(i){const s=$(),r=M(),a=S(()=>({...r,params:{...r.params,id:i.app.id},query:s.getQuery()}));return(l,t)=>{const o=U("RouterLink");return d(),k("li",{class:c(l.$style.appGridItem)},[p(o,{to:a.value},{default:u(()=>[p(Ke,{app:i.app,class:c(l.$style.appGridItem__image)},null,8,["app","class"]),g("div",{class:c(l.$style.appGridItem__content)},[g("h3",{class:c(l.$style.appGridItem__name)},f(i.app.name),3),g("p",null,f(i.app.summary),1)],2)]),_:1},8,["to"]),g("div",{class:c(l.$style.appGridItem__badges)},[p(De,{app:i.app},null,8,["app"]),p(Ve,{level:i.app.level},null,8,["level"]),i.app.app_api&&i.app.daemon?(d(),h(Ce,{key:0,daemon:i.app.daemon},null,8,["daemon"])):V("",!0)],2)],2)}}}),Xe="_appGridItem_6wxsl_2",Ye="_appGridItem__content_6wxsl_17",Ze="_appGridItem__image_6wxsl_21",ea="_appGridItem__name_6wxsl_29",aa="_appGridItem__badges_6wxsl_35",ta={appGridItem:Xe,appGridItem__content:Ye,appGridItem__image:Ze,appGridItem__name:ea,appGridItem__badges:aa},la={$style:ta},sa=I(Qe,[["__cssModules",la]]),pa=G({__name:"AppGrid",props:{apps:{}},setup(i){Z(a=>({dc9c258c:r.value}));const s=$(),r=S(()=>s.gridSizePx);return(a,l)=>(d(),k("ul",{class:c(a.$style.appGrid)},[(d(!0),k(z,null,B(i.apps,t=>(d(),h(sa,{key:t.id,app:t},null,8,["app"]))),128))],2))}}),ia="_appGrid_xjc6e_2",oa={appGrid:ia},ra={$style:oa},R=I(pa,[["__cssModules",ra]]),na=G({__name:"AppToolbar",setup(i){const s=M(),r=O(),a=$();return x(()=>a.isGridView,l=>{r.replace({...s,query:{...s.query,grid:l?null:void 0}})}),x(()=>a.defaultGridSize,l=>{a.isGridView&&r.replace({...s,query:{...s.query,grid:l||null}})}),x(()=>a.showIncompatible,l=>{l?r.replace({...s,query:{...s.query,compatible:void 0}}):r.replace({...s,query:{...s.query,compatible:null}})}),(l,t)=>(d(),k("div",{class:c(l.$style.appToolbar)},[p(e(ke),{class:c(l.$style.appToolbar__filterButton),"aria-label":e(n)("appstore","Filter view"),forceMenu:""},{icon:u(()=>[p(e(v),{path:e(re)},null,8,["path"])]),default:u(()=>[e(a).isGridView?(d(),h(e(be),{key:0,name:e(n)("appstore","Grid size")},{default:u(()=>[p(e(N),{"aria-label":e(n)("appstore","Small grid size"),modelValue:e(a).defaultGridSize==="",type:"radio",value:"","onUpdate:modelValue":t[0]||(t[0]=o=>e(a).defaultGridSize="")},{icon:u(()=>[p(e(v),{path:e(pe)},null,8,["path"])]),_:1},8,["aria-label","modelValue"]),p(e(N),{"aria-label":e(n)("appstore","Medium grid size"),modelValue:e(a).defaultGridSize==="m",type:"radio",value:"m","onUpdate:modelValue":t[1]||(t[1]=o=>e(a).defaultGridSize="m")},{icon:u(()=>[p(e(v),{path:e(ie)},null,8,["path"])]),_:1},8,["aria-label","modelValue"]),p(e(N),{"aria-label":e(n)("appstore","Large grid size"),modelValue:e(a).defaultGridSize==="l",type:"radio",value:"l","onUpdate:modelValue":t[2]||(t[2]=o=>e(a).defaultGridSize="l")},{icon:u(()=>[p(e(v),{path:e(oe)},null,8,["path"])]),_:1},8,["aria-label","modelValue"])]),_:1},8,["name"])):V("",!0),p(e(Te),{modelValue:e(a).showIncompatible,"onUpdate:modelValue":t[3]||(t[3]=o=>e(a).showIncompatible=o)},{default:u(()=>[C(f(e(n)("appstore","Show incompatible")),1)]),_:1},8,["modelValue"])]),_:1},8,["class","aria-label"]),p(e(w),{pressed:e(a).isGridView,"onUpdate:pressed":t[4]||(t[4]=o=>e(a).isGridView=o),"aria-label":e(n)("appstore","Grid view"),variant:"tertiary"},{icon:u(()=>[p(e(v),{path:e(ne)},null,8,["path"])]),_:1},8,["pressed","aria-label"])],2))}}),da="_appToolbar_1v7y4_2",ua={appToolbar:da},ma={$style:ua},J=I(na,[["__cssModules",ma]]);function W(i){const s=$(),r=M();return S(()=>{const a=[r.query.q||""].flat()[0];return ee(i).filter(l=>{if(!s.showIncompatible&&l.isCompatible===!1)return!1;if(a){const t=a.trim().toLocaleLowerCase();return l.name.toLocaleLowerCase().includes(t)||l.id.toLocaleLowerCase().includes(t)||l.summary.toLocaleLowerCase().includes(t)}return!0})})}const ca=G({__name:"AppstoreManage",setup(i){const s=ae(()=>te(()=>Promise.resolve().then(()=>Na),void 0,import.meta.url)),r=M(),a=P(),l=F(),t=$(),o=S(()=>r.params.category),b=S(()=>o.value==="installed"?a.apps.filter(m=>m.installed):o.value==="enabled"?a.apps.filter(m=>m.active):o.value==="disabled"?a.apps.filter(m=>m.installed&&!m.active):o.value==="updates"?a.apps.filter(m=>m.active&&m.update):[]),A=W(b);async function _(){await Ie(s,{apps:A.value})}return(m,y)=>(d(),k(z,null,[p(J),o.value==="updates"&&e(l).updateCount>0?(d(),h(e(w),{key:0,class:c(m.$style.appstoreManage__updateAllButton),variant:"primary",onClick:_},{icon:u(()=>[p(e(v),{path:e(T)},null,8,["path"])]),default:u(()=>[C(" "+f(e(n)("appstore","Update all applications")),1)]),_:1},8,["class"])):V("",!0),e(a).isLoadingApps?(d(),h(e(E),{key:1,name:e(n)("appstore","Loading app list")},{icon:u(()=>[p(e(q),{size:64})]),_:1},8,["name"])):e(A).length?(d(),h(j(e(t).isGridView?R:H),{key:2,class:c(m.$style.appstoreManage),apps:e(A)},null,8,["class","apps"])):(d(),h(e(E),{key:3,name:e(n)("appstore","No matching apps found")},{action:u(()=>[p(e(w),{variant:"primary",onClick:y[0]||(y[0]=L=>m.$router.push({query:m.$route.query,name:"apps-search"}))},{default:u(()=>[C(f(e(n)("appstore","Search everywhere")),1)]),_:1})]),_:1},8,["name"]))],64))}}),_a="_appstoreManage_worb1_2",ya="_appstoreManage__updateAllButton_worb1_6",ha={appstoreManage:_a,appstoreManage__updateAllButton:ya},ga={$style:ha},ba=I(ca,[["__cssModules",ga]]),wt=Object.freeze(Object.defineProperty({__proto__:null,default:ba},Symbol.toStringTag,{value:"Module"})),fa=G({__name:"AppstoreSearch",setup(i){const s=M(),r=O(),a=P(),l=$(),t=W(()=>a.apps),o=D("");return x(()=>s.query.q,b=>{o.value=[b||""].flat()[0]},{immediate:!0}),Ae(o,b=>{r.replace({...s,query:{...s.query,q:b.trim()}})},{debounce:500}),(b,A)=>(d(),k(z,null,[p(J),e(a).isLoadingApps?(d(),h(e(E),{key:0,name:e(n)("appstore","Loading app list")},{icon:u(()=>[p(e(q),{size:64})]),_:1},8,["name"])):e(t).length&&o.value.trim().length>2?(d(),h(j(e(l).isGridView?R:H),{key:1,class:c(b.$style.appstoreSearch),apps:e(t)},null,8,["class","apps"])):(d(),h(e(E),{key:2,name:e(n)("appstore","No matching apps found"),description:o.value.trim().length<=2?e(n)("appstore","Please enter more characters to search."):void 0},{action:u(()=>[p(e($e),{modelValue:o.value,"onUpdate:modelValue":A[0]||(A[0]=_=>o.value=_),type:"search",label:e(n)("appstore","Search apps")},null,8,["modelValue","label"])]),_:1},8,["name","description"]))],64))}}),va="_appstoreSearch_e0puj_2",ka={appstoreSearch:va},Aa={$style:ka},wa=I(fa,[["__cssModules",Aa]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:wa},Symbol.toStringTag,{value:"Module"})),Ga=G({__name:"UpdateAllDialog",props:{apps:{}},emits:["close"],setup(i,{emit:s}){const r=i,a=s,l=F(),t=D(""),o=D(!1),b=S(()=>{if(!t.value)return"";const _=r.apps.find(y=>y.id===t.value);if(!_||!_.releases||_.releases.length===0)return"";const[m]=_.releases;return m.translations[_e()]?.changelog??m.translations.en?.changelog??""});async function A(){o.value=!0;for(const _ of r.apps)try{await l.updateApp(_.id)}catch(m){xe.error(`Failed to update app ${_.id}`,{error:m}),Ee(n("appstore","Failed to update app {appName}",{appName:_.name}))}o.value=!1,a("close")}return(_,m)=>(d(),h(e(Se),{contentClasses:_.$style.updateAllDialog,size:"normal",name:e(n)("appstore","Update all apps")},{actions:u(()=>[p(e(w),{variant:"tertiary",onClick:m[0]||(m[0]=y=>a("close"))},{default:u(()=>[C(f(e(n)("appstore","Cancel")),1)]),_:1}),p(e(w),{variant:"primary",onClick:A},le({default:u(()=>[C(" "+f(e(n)("appstore","Update all")),1)]),_:2},[o.value?{name:"icon",fn:u(()=>[p(e(q))]),key:"0"}:void 0]),1024)]),default:u(()=>[g("p",null,f(e(n)("appstore","Are you sure you want to update all apps?")),1),g("ul",null,[(d(!0),k(z,null,B(i.apps,y=>(d(),k("li",{key:y.id,class:c(_.$style.updateAllDialog__listEntry)},[g("div",{class:c(_.$style.updateAllDialog__listEntryContent)},[g("div",{class:c(_.$style.updateAllDialog__listEntryHeading)},[p(e(v),{path:y.update?e(T):e(de),name:y.update?void 0:e(n)("appstore","Update done")},null,8,["path","name"]),g("span",{class:c(_.$style.updateAllDialog__listEntryName)},f(y.name)+" ("+f(y.version)+" → "+f(y.update)+")",3)],2),g("div",{class:c(_.$style.updateAllDialog__listEntryActions)},[y.website?(d(),h(e(w),{key:0,"aria-label":e(n)("appstore","View website"),title:e(n)("appstore","View website"),href:y.website,target:"_blank",variant:"tertiary"},{icon:u(()=>[p(e(v),{path:e(ue)},null,8,["path"])]),_:1},8,["aria-label","title","href"])):V("",!0),y.releases?(d(),h(e(w),{key:1,"aria-label":e(n)("appstore","Show details"),title:e(n)("appstore","Show details"),pressed:t.value===y.id,"onUpdate:pressed":L=>t.value=L?y.id:""},{icon:u(()=>[p(e(v),{path:e(me)},null,8,["path"])]),_:1},8,["aria-label","title","pressed","onUpdate:pressed"])):V("",!0)],2)],2)],2))),128))]),p(e(ce),{class:c(_.$style.updateAllDialog__listEntryDetails),heading:e(n)("appstore","Details"),type:"info"},{default:u(()=>[p(Me,{minHeadingLevel:3,text:b.value},null,8,["text"])]),_:1},8,["class","heading"])]),_:1},8,["contentClasses","name"]))}}),Ia="_updateAllDialog_e6bft_2",Sa="_updateAllDialog__list_e6bft_6",$a="_updateAllDialog__listEntry_e6bft_12",Da="_updateAllDialog__listEntryHeading_e6bft_19",Va="_updateAllDialog__listEntryName_e6bft_23",Ca="_updateAllDialog__listEntryActions_e6bft_28",Ma="_updateAllDialog__listEntryContent_e6bft_34",xa="_updateAllDialog__listEntryDetails_e6bft_39",Ea={updateAllDialog:Ia,updateAllDialog__list:Sa,updateAllDialog__listEntry:$a,updateAllDialog__listEntryHeading:Da,updateAllDialog__listEntryName:Va,updateAllDialog__listEntryActions:Ca,updateAllDialog__listEntryContent:Ma,updateAllDialog__listEntryDetails:xa},za={$style:Ea},qa=I(Ga,[["__cssModules",za]]),Na=Object.freeze(Object.defineProperty({__proto__:null,default:qa},Symbol.toStringTag,{value:"Module"}));export{Ke as A,J as a,R as b,wt as c,Gt as d,W as u}; -//# sourceMappingURL=UpdateAllDialog-B79HRvpB.chunk.mjs.map diff --git a/dist/UpdateAllDialog-BqC8T943.chunk.mjs b/dist/UpdateAllDialog-BqC8T943.chunk.mjs new file mode 100644 index 0000000000000..15285fb16f78c --- /dev/null +++ b/dist/UpdateAllDialog-BqC8T943.chunk.mjs @@ -0,0 +1,2 @@ +import{r as U,o as d,f as k,g,J as K,am as Q,y as c,k as p,t as f,n as X,b as G,E as Y,c as h,u as e,l as D,w as u,h as V,v as S,a7 as Z,F as z,B,z as x,j as C,a8 as ee,C as j,a as ae,_ as te,q as le}from"./Web-DYqXJUev.chunk.mjs";import{D as se,E as pe,F as ie,G as oe,H as re,I as ne,J as T,q as de,K as ue,v as me,N as ce}from"./mdi-B6W_Xvj-.chunk.mjs";import{t as n,g as _e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{a as ye,N}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{_ as he,N as v,c as ge}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{b as be}from"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import{P as fe}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{e as ve,b as ke,w as Ae}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{s as we,t as Ge,u as M,v as O,N as w}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as q}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import{s as Ie,N as Se}from"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import{N as E}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import{N as $e}from"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{b as $,B as De,e as Ve,f as Ce,u as P,g as F,d as H,M as Me,l as xe}from"./appstore-main.mjs";import{_ as I}from"./public-C1mLBHT3.chunk.mjs";import{a as Ee}from"./index-mH69OG7L.chunk.mjs";const ze={name:"NcActionCheckbox",components:{NcIconSvgWrapper:v},mixins:[ye],inject:{isInSemanticMenu:{from:ve,default:!1}},props:{id:{type:String,default:()=>"action-"+ge(),validator:i=>i.trim()!==""},modelValue:{type:Boolean,default:!1},value:{type:[String,Number],default:""},disabled:{type:Boolean,default:!1}},emits:["change","check","uncheck","update:modelValue"],setup(i){return{model:X(i,"modelValue"),mdiCheckboxBlankOutline:Ge,mdiCheckboxMarked:we}},methods:{onChange(i){this.$emit("change",i),i.target.checked?this.$emit("check"):this.$emit("uncheck")}}},qe=["role"],Ne=["role","aria-checked"],Le={class:"action-checkbox__icon"},Ue=["id","value","disabled"],Be={class:"action-checkbox__text"};function je(i,s,r,a,l,t){const o=U("NcIconSvgWrapper");return d(),k("li",{class:c(["action",{"action--disabled":r.disabled}]),role:t.isInSemanticMenu&&"presentation"},[g("label",{class:"action-checkbox",role:t.isInSemanticMenu&&"menuitemcheckbox","aria-checked":t.isInSemanticMenu&&a.model.toString()},[g("span",Le,[K(g("input",{id:r.id,"onUpdate:modelValue":s[0]||(s[0]=b=>a.model=b),type:"checkbox",class:c(["action-checkbox__input",{focusable:!r.disabled}]),value:r.value,disabled:r.disabled,onChange:s[1]||(s[1]=(...b)=>t.onChange&&t.onChange(...b))},null,42,Ue),[[Q,a.model]]),p(o,{path:a.model?a.mdiCheckboxMarked:a.mdiCheckboxBlankOutline,size:20},null,8,["path"])]),g("span",Be,f(i.text),1)],8,Ne)],10,qe)}const Te=he(ze,[["render",je],["__scopeId","data-v-2947bc3b"]]),Oe=["src"],Pe=new fe({concurrency:4}),Fe=G({__name:"AppImage",props:{app:{}},setup(i){const s=i,r=D(!1),a=D(!0);return Y(()=>{s.app.screenshot?(r.value=!1,a.value=!0,Pe.add(()=>{const l=new Image,{promise:t,resolve:o}=Promise.withResolvers();return l.onload=()=>{a.value=!1,o()},l.onerror=()=>{r.value=!0,a.value=!1,o()},l.src=s.app.screenshot,t})):(a.value=!1,r.value=!1)}),(l,t)=>(d(),k("div",{class:c(l.$style.appImage)},[r.value||!s.app.screenshot?(d(),h(e(v),{key:0,size:80,path:e(se)},null,8,["path"])):a.value?(d(),h(e(q),{key:1,size:80})):(d(),k("img",{key:2,class:c(l.$style.appImage__image),src:s.app.screenshot,alt:""},null,10,Oe))],2))}}),He="_appImage_1ky4h_2",Re="_appImage__image_1ky4h_9",Je={appImage:He,appImage__image:Re},We={$style:Je},Ke=I(Fe,[["__cssModules",We]]),Qe=G({__name:"AppGridItem",props:{app:{}},setup(i){const s=$(),r=M(),a=S(()=>({...r,params:{...r.params,id:i.app.id},query:s.getQuery()}));return(l,t)=>{const o=U("RouterLink");return d(),k("li",{class:c(l.$style.appGridItem)},[p(o,{to:a.value},{default:u(()=>[p(Ke,{app:i.app,class:c(l.$style.appGridItem__image)},null,8,["app","class"]),g("div",{class:c(l.$style.appGridItem__content)},[g("h3",{class:c(l.$style.appGridItem__name)},f(i.app.name),3),g("p",null,f(i.app.summary),1)],2)]),_:1},8,["to"]),g("div",{class:c(l.$style.appGridItem__badges)},[p(De,{app:i.app},null,8,["app"]),p(Ve,{level:i.app.level},null,8,["level"]),i.app.app_api&&i.app.daemon?(d(),h(Ce,{key:0,daemon:i.app.daemon},null,8,["daemon"])):V("",!0)],2)],2)}}}),Xe="_appGridItem_6wxsl_2",Ye="_appGridItem__content_6wxsl_17",Ze="_appGridItem__image_6wxsl_21",ea="_appGridItem__name_6wxsl_29",aa="_appGridItem__badges_6wxsl_35",ta={appGridItem:Xe,appGridItem__content:Ye,appGridItem__image:Ze,appGridItem__name:ea,appGridItem__badges:aa},la={$style:ta},sa=I(Qe,[["__cssModules",la]]),pa=G({__name:"AppGrid",props:{apps:{}},setup(i){Z(a=>({dc9c258c:r.value}));const s=$(),r=S(()=>s.gridSizePx);return(a,l)=>(d(),k("ul",{class:c(a.$style.appGrid)},[(d(!0),k(z,null,B(i.apps,t=>(d(),h(sa,{key:t.id,app:t},null,8,["app"]))),128))],2))}}),ia="_appGrid_xjc6e_2",oa={appGrid:ia},ra={$style:oa},R=I(pa,[["__cssModules",ra]]),na=G({__name:"AppToolbar",setup(i){const s=M(),r=O(),a=$();return x(()=>a.isGridView,l=>{r.replace({...s,query:{...s.query,grid:l?null:void 0}})}),x(()=>a.defaultGridSize,l=>{a.isGridView&&r.replace({...s,query:{...s.query,grid:l||null}})}),x(()=>a.showIncompatible,l=>{l?r.replace({...s,query:{...s.query,compatible:void 0}}):r.replace({...s,query:{...s.query,compatible:null}})}),(l,t)=>(d(),k("div",{class:c(l.$style.appToolbar)},[p(e(ke),{class:c(l.$style.appToolbar__filterButton),"aria-label":e(n)("appstore","Filter view"),forceMenu:""},{icon:u(()=>[p(e(v),{path:e(re)},null,8,["path"])]),default:u(()=>[e(a).isGridView?(d(),h(e(be),{key:0,name:e(n)("appstore","Grid size")},{default:u(()=>[p(e(N),{"aria-label":e(n)("appstore","Small grid size"),modelValue:e(a).defaultGridSize==="",type:"radio",value:"","onUpdate:modelValue":t[0]||(t[0]=o=>e(a).defaultGridSize="")},{icon:u(()=>[p(e(v),{path:e(pe)},null,8,["path"])]),_:1},8,["aria-label","modelValue"]),p(e(N),{"aria-label":e(n)("appstore","Medium grid size"),modelValue:e(a).defaultGridSize==="m",type:"radio",value:"m","onUpdate:modelValue":t[1]||(t[1]=o=>e(a).defaultGridSize="m")},{icon:u(()=>[p(e(v),{path:e(ie)},null,8,["path"])]),_:1},8,["aria-label","modelValue"]),p(e(N),{"aria-label":e(n)("appstore","Large grid size"),modelValue:e(a).defaultGridSize==="l",type:"radio",value:"l","onUpdate:modelValue":t[2]||(t[2]=o=>e(a).defaultGridSize="l")},{icon:u(()=>[p(e(v),{path:e(oe)},null,8,["path"])]),_:1},8,["aria-label","modelValue"])]),_:1},8,["name"])):V("",!0),p(e(Te),{modelValue:e(a).showIncompatible,"onUpdate:modelValue":t[3]||(t[3]=o=>e(a).showIncompatible=o)},{default:u(()=>[C(f(e(n)("appstore","Show incompatible")),1)]),_:1},8,["modelValue"])]),_:1},8,["class","aria-label"]),p(e(w),{pressed:e(a).isGridView,"onUpdate:pressed":t[4]||(t[4]=o=>e(a).isGridView=o),"aria-label":e(n)("appstore","Grid view"),variant:"tertiary"},{icon:u(()=>[p(e(v),{path:e(ne)},null,8,["path"])]),_:1},8,["pressed","aria-label"])],2))}}),da="_appToolbar_1v7y4_2",ua={appToolbar:da},ma={$style:ua},J=I(na,[["__cssModules",ma]]);function W(i){const s=$(),r=M();return S(()=>{const a=[r.query.q||""].flat()[0];return ee(i).filter(l=>{if(!s.showIncompatible&&l.isCompatible===!1)return!1;if(a){const t=a.trim().toLocaleLowerCase();return l.name.toLocaleLowerCase().includes(t)||l.id.toLocaleLowerCase().includes(t)||l.summary.toLocaleLowerCase().includes(t)}return!0})})}const ca=G({__name:"AppstoreManage",setup(i){const s=ae(()=>te(()=>Promise.resolve().then(()=>Na),void 0,import.meta.url)),r=M(),a=P(),l=F(),t=$(),o=S(()=>r.params.category),b=S(()=>o.value==="installed"?a.apps.filter(m=>m.installed):o.value==="enabled"?a.apps.filter(m=>m.active):o.value==="disabled"?a.apps.filter(m=>m.installed&&!m.active):o.value==="updates"?a.apps.filter(m=>m.active&&m.update):[]),A=W(b);async function _(){await Ie(s,{apps:A.value})}return(m,y)=>(d(),k(z,null,[p(J),o.value==="updates"&&e(l).updateCount>0?(d(),h(e(w),{key:0,class:c(m.$style.appstoreManage__updateAllButton),variant:"primary",onClick:_},{icon:u(()=>[p(e(v),{path:e(T)},null,8,["path"])]),default:u(()=>[C(" "+f(e(n)("appstore","Update all applications")),1)]),_:1},8,["class"])):V("",!0),e(a).isLoadingApps?(d(),h(e(E),{key:1,name:e(n)("appstore","Loading app list")},{icon:u(()=>[p(e(q),{size:64})]),_:1},8,["name"])):e(A).length?(d(),h(j(e(t).isGridView?R:H),{key:2,class:c(m.$style.appstoreManage),apps:e(A)},null,8,["class","apps"])):(d(),h(e(E),{key:3,name:e(n)("appstore","No matching apps found")},{action:u(()=>[p(e(w),{variant:"primary",onClick:y[0]||(y[0]=L=>m.$router.push({query:m.$route.query,name:"apps-search"}))},{default:u(()=>[C(f(e(n)("appstore","Search everywhere")),1)]),_:1})]),_:1},8,["name"]))],64))}}),_a="_appstoreManage_worb1_2",ya="_appstoreManage__updateAllButton_worb1_6",ha={appstoreManage:_a,appstoreManage__updateAllButton:ya},ga={$style:ha},ba=I(ca,[["__cssModules",ga]]),wt=Object.freeze(Object.defineProperty({__proto__:null,default:ba},Symbol.toStringTag,{value:"Module"})),fa=G({__name:"AppstoreSearch",setup(i){const s=M(),r=O(),a=P(),l=$(),t=W(()=>a.apps),o=D("");return x(()=>s.query.q,b=>{o.value=[b||""].flat()[0]},{immediate:!0}),Ae(o,b=>{r.replace({...s,query:{...s.query,q:b.trim()}})},{debounce:500}),(b,A)=>(d(),k(z,null,[p(J),e(a).isLoadingApps?(d(),h(e(E),{key:0,name:e(n)("appstore","Loading app list")},{icon:u(()=>[p(e(q),{size:64})]),_:1},8,["name"])):e(t).length&&o.value.trim().length>2?(d(),h(j(e(l).isGridView?R:H),{key:1,class:c(b.$style.appstoreSearch),apps:e(t)},null,8,["class","apps"])):(d(),h(e(E),{key:2,name:e(n)("appstore","No matching apps found"),description:o.value.trim().length<=2?e(n)("appstore","Please enter more characters to search."):void 0},{action:u(()=>[p(e($e),{modelValue:o.value,"onUpdate:modelValue":A[0]||(A[0]=_=>o.value=_),type:"search",label:e(n)("appstore","Search apps")},null,8,["modelValue","label"])]),_:1},8,["name","description"]))],64))}}),va="_appstoreSearch_e0puj_2",ka={appstoreSearch:va},Aa={$style:ka},wa=I(fa,[["__cssModules",Aa]]),Gt=Object.freeze(Object.defineProperty({__proto__:null,default:wa},Symbol.toStringTag,{value:"Module"})),Ga=G({__name:"UpdateAllDialog",props:{apps:{}},emits:["close"],setup(i,{emit:s}){const r=i,a=s,l=F(),t=D(""),o=D(!1),b=S(()=>{if(!t.value)return"";const _=r.apps.find(y=>y.id===t.value);if(!_||!_.releases||_.releases.length===0)return"";const[m]=_.releases;return m.translations[_e()]?.changelog??m.translations.en?.changelog??""});async function A(){o.value=!0;for(const _ of r.apps)try{await l.updateApp(_.id)}catch(m){xe.error(`Failed to update app ${_.id}`,{error:m}),Ee(n("appstore","Failed to update app {appName}",{appName:_.name}))}o.value=!1,a("close")}return(_,m)=>(d(),h(e(Se),{contentClasses:_.$style.updateAllDialog,size:"normal",name:e(n)("appstore","Update all apps")},{actions:u(()=>[p(e(w),{variant:"tertiary",onClick:m[0]||(m[0]=y=>a("close"))},{default:u(()=>[C(f(e(n)("appstore","Cancel")),1)]),_:1}),p(e(w),{variant:"primary",onClick:A},le({default:u(()=>[C(" "+f(e(n)("appstore","Update all")),1)]),_:2},[o.value?{name:"icon",fn:u(()=>[p(e(q))]),key:"0"}:void 0]),1024)]),default:u(()=>[g("p",null,f(e(n)("appstore","Are you sure you want to update all apps?")),1),g("ul",null,[(d(!0),k(z,null,B(i.apps,y=>(d(),k("li",{key:y.id,class:c(_.$style.updateAllDialog__listEntry)},[g("div",{class:c(_.$style.updateAllDialog__listEntryContent)},[g("div",{class:c(_.$style.updateAllDialog__listEntryHeading)},[p(e(v),{path:y.update?e(T):e(de),name:y.update?void 0:e(n)("appstore","Update done")},null,8,["path","name"]),g("span",{class:c(_.$style.updateAllDialog__listEntryName)},f(y.name)+" ("+f(y.version)+" → "+f(y.update)+")",3)],2),g("div",{class:c(_.$style.updateAllDialog__listEntryActions)},[y.website?(d(),h(e(w),{key:0,"aria-label":e(n)("appstore","View website"),title:e(n)("appstore","View website"),href:y.website,target:"_blank",variant:"tertiary"},{icon:u(()=>[p(e(v),{path:e(ue)},null,8,["path"])]),_:1},8,["aria-label","title","href"])):V("",!0),y.releases?(d(),h(e(w),{key:1,"aria-label":e(n)("appstore","Show details"),title:e(n)("appstore","Show details"),pressed:t.value===y.id,"onUpdate:pressed":L=>t.value=L?y.id:""},{icon:u(()=>[p(e(v),{path:e(me)},null,8,["path"])]),_:1},8,["aria-label","title","pressed","onUpdate:pressed"])):V("",!0)],2)],2)],2))),128))]),p(e(ce),{class:c(_.$style.updateAllDialog__listEntryDetails),heading:e(n)("appstore","Details"),type:"info"},{default:u(()=>[p(Me,{minHeadingLevel:3,text:b.value},null,8,["text"])]),_:1},8,["class","heading"])]),_:1},8,["contentClasses","name"]))}}),Ia="_updateAllDialog_e6bft_2",Sa="_updateAllDialog__list_e6bft_6",$a="_updateAllDialog__listEntry_e6bft_12",Da="_updateAllDialog__listEntryHeading_e6bft_19",Va="_updateAllDialog__listEntryName_e6bft_23",Ca="_updateAllDialog__listEntryActions_e6bft_28",Ma="_updateAllDialog__listEntryContent_e6bft_34",xa="_updateAllDialog__listEntryDetails_e6bft_39",Ea={updateAllDialog:Ia,updateAllDialog__list:Sa,updateAllDialog__listEntry:$a,updateAllDialog__listEntryHeading:Da,updateAllDialog__listEntryName:Va,updateAllDialog__listEntryActions:Ca,updateAllDialog__listEntryContent:Ma,updateAllDialog__listEntryDetails:xa},za={$style:Ea},qa=I(Ga,[["__cssModules",za]]),Na=Object.freeze(Object.defineProperty({__proto__:null,default:qa},Symbol.toStringTag,{value:"Module"}));export{Ke as A,J as a,R as b,wt as c,Gt as d,W as u}; +//# sourceMappingURL=UpdateAllDialog-BqC8T943.chunk.mjs.map diff --git a/dist/UpdateAllDialog-B79HRvpB.chunk.mjs.license b/dist/UpdateAllDialog-BqC8T943.chunk.mjs.license similarity index 100% rename from dist/UpdateAllDialog-B79HRvpB.chunk.mjs.license rename to dist/UpdateAllDialog-BqC8T943.chunk.mjs.license diff --git a/dist/UpdateAllDialog-B79HRvpB.chunk.mjs.map b/dist/UpdateAllDialog-BqC8T943.chunk.mjs.map similarity index 99% rename from dist/UpdateAllDialog-B79HRvpB.chunk.mjs.map rename to dist/UpdateAllDialog-BqC8T943.chunk.mjs.map index 2f149bcc4c554..a214f73bc9434 100644 --- a/dist/UpdateAllDialog-B79HRvpB.chunk.mjs.map +++ b/dist/UpdateAllDialog-BqC8T943.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["_sfc_main","NcIconSvgWrapper","ActionGlobalMixin","NC_ACTIONS_IS_SEMANTIC_MENU","createElementId","id","props","useModel","mdiCheckboxBlankOutline","mdiCheckboxMarked","event","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_component_NcIconSvgWrapper","resolveComponent","openBlock","createElementBlock","normalizeClass","createElementVNode","withDirectives","$event","args","vModelCheckbox","createVNode","toDisplayString","NcActionCheckbox","_export_sfc","queue","PQueue","__props","isError","ref","isLoading","watchEffect","image","promise","resolve","_createElementBlock","_normalizeClass","$style","_createBlock","_unref","mdiCogOutline","NcLoadingIcon","userSettingsStore","useUserSettingsStore","route","useRoute","routeToDetails","computed","_createVNode","_component_RouterLink","AppImage","_createElementVNode","_toDisplayString","BadgeAppScore","BadgeAppLevel","BadgeAppDaemon","userSettings","gridSize","_Fragment","_renderList","app","AppGridItem","router","useRouter","watch","enabled","newSize","showIncompatible","NcActions","t","mdiFilterVariant","NcActionButtonGroup","NcActionButton","mdiSizeS","mdiSizeM","mdiSizeL","NcButton","mdiViewGrid","useFilteredApps","apps","store","query","toValue","needle","UpdateAllDialog","defineAsyncComponent","__vitePreload","UpdateAllDialog$1","useAppsStore","updatesStore","useUpdatesStore","currentCategory","visibleApps","onUpdateAll","spawnDialog","AppToolbar","mdiUpdate","_createTextVNode","NcEmptyContent","_openBlock","_resolveDynamicComponent","AppGrid","AppTable","$router","$route","search","newQuery","watchDebounced","newValue","NcInputField","emit","__emit","showDetails","isUpdating","changelogText","release","getLanguage","onUpdate","error","logger","showError","NcDialog","mdiCheck","mdiWeb","mdiInformationOutline","NcNoteCard","MarkdownPreview"],"ignoreList":[0],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionCheckbox-DBqiK-AZ.mjs","../build/frontend/apps/appstore/src/components/AppImage.vue","../build/frontend/apps/appstore/src/components/AppGrid/AppGridItem.vue","../build/frontend/apps/appstore/src/components/AppGrid/AppGrid.vue","../build/frontend/apps/appstore/src/components/AppToolbar.vue","../build/frontend/apps/appstore/src/composables/useFilteredApps.ts","../build/frontend/apps/appstore/src/views/AppstoreManage.vue","../build/frontend/apps/appstore/src/views/AppstoreSearch.vue","../build/frontend/apps/appstore/src/components/UpdateAllDialog.vue"],"sourcesContent":["import '../assets/NcActionCheckbox-wD8m_a8-.css';\nimport { h as mdiCheckboxMarked, i as mdiCheckboxBlankOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, withDirectives, vModelCheckbox, createVNode, toDisplayString, useModel } from \"vue\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionCheckbox\",\n components: {\n NcIconSvgWrapper\n },\n mixins: [ActionGlobalMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * checked state of the the checkbox element\n */\n modelValue: {\n type: Boolean,\n default: false\n },\n /**\n * value of the checkbox input\n */\n value: {\n type: [String, Number],\n default: \"\"\n },\n /**\n * disabled state of the checkbox element\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /** Native change event */\n \"change\",\n /** Checkbox is checked */\n \"check\",\n /** Checkbox is unchecked */\n \"uncheck\",\n /** Model value changed */\n \"update:modelValue\"\n ],\n setup(props) {\n const model = useModel(props, \"modelValue\");\n return {\n model,\n mdiCheckboxBlankOutline,\n mdiCheckboxMarked\n };\n },\n methods: {\n onChange(event) {\n this.$emit(\"change\", event);\n if (event.target.checked) {\n this.$emit(\"check\");\n } else {\n this.$emit(\"uncheck\");\n }\n }\n }\n};\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"role\", \"aria-checked\"];\nconst _hoisted_3 = { class: \"action-checkbox__icon\" };\nconst _hoisted_4 = [\"id\", \"value\", \"disabled\"];\nconst _hoisted_5 = { class: \"action-checkbox__text\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass([\"action\", { \"action--disabled\": $props.disabled }]),\n role: $options.isInSemanticMenu && \"presentation\"\n }, [\n createElementVNode(\"label\", {\n class: \"action-checkbox\",\n role: $options.isInSemanticMenu && \"menuitemcheckbox\",\n \"aria-checked\": $options.isInSemanticMenu && $setup.model.toString()\n }, [\n createElementVNode(\"span\", _hoisted_3, [\n withDirectives(createElementVNode(\"input\", {\n id: $props.id,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $setup.model = $event),\n type: \"checkbox\",\n class: normalizeClass([\"action-checkbox__input\", { focusable: !$props.disabled }]),\n value: $props.value,\n disabled: $props.disabled,\n onChange: _cache[1] || (_cache[1] = (...args) => $options.onChange && $options.onChange(...args))\n }, null, 42, _hoisted_4), [\n [vModelCheckbox, $setup.model]\n ]),\n createVNode(_component_NcIconSvgWrapper, {\n path: $setup.model ? $setup.mdiCheckboxMarked : $setup.mdiCheckboxBlankOutline,\n size: 20\n }, null, 8, [\"path\"])\n ]),\n createElementVNode(\"span\", _hoisted_5, toDisplayString(_ctx.text), 1)\n ], 8, _hoisted_2)\n ], 10, _hoisted_1);\n}\nconst NcActionCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-2947bc3b\"]]);\nexport {\n NcActionCheckbox as N\n};\n//# sourceMappingURL=NcActionCheckbox-DBqiK-AZ.mjs.map\n","\n\n\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { computed, toValue } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useUserSettingsStore } from '../store/userSettings.ts'\n\n/**\n * Get the filtered list of apps based on the user settings\n *\n * @param apps - The apps to filter\n */\nexport function useFilteredApps(apps: MaybeRefOrGetter<(IAppstoreApp | IAppstoreExApp)[]>) {\n\tconst store = useUserSettingsStore()\n\tconst route = useRoute()\n\treturn computed(() => {\n\t\tconst query = [route.query.q || ''].flat()[0]!\n\t\treturn toValue(apps)\n\t\t\t.filter((app) => {\n\t\t\t\tif (!store.showIncompatible && app.isCompatible === false) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (query) {\n\t\t\t\t\tconst needle = query.trim().toLocaleLowerCase()\n\t\t\t\t\treturn app.name.toLocaleLowerCase().includes(needle)\n\t\t\t\t\t\t|| app.id.toLocaleLowerCase().includes(needle)\n\t\t\t\t\t\t|| app.summary.toLocaleLowerCase().includes(needle)\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t})\n\t})\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"file":"UpdateAllDialog-B79HRvpB.chunk.mjs"} \ No newline at end of file +{"version":3,"mappings":"44EAQA,MAAMA,GAAY,CAChB,KAAM,mBACN,WAAY,CACV,iBAAAC,CACJ,EACE,OAAQ,CAACC,EAAiB,EAC1B,OAAQ,CACN,iBAAkB,CAChB,KAAMC,GACN,QAAS,EACf,CACA,EACE,MAAO,CAIL,GAAI,CACF,KAAM,OACN,QAAS,IAAM,UAAYC,GAAe,EAC1C,UAAYC,GAAOA,EAAG,KAAI,IAAO,EACvC,EAII,WAAY,CACV,KAAM,QACN,QAAS,EACf,EAII,MAAO,CACL,KAAM,CAAC,OAAQ,MAAM,EACrB,QAAS,EACf,EAII,SAAU,CACR,KAAM,QACN,QAAS,EACf,CACA,EACE,MAAO,CAEL,SAEA,QAEA,UAEA,mBACJ,EACE,MAAMC,EAAO,CAEX,MAAO,CACL,MAFYC,EAASD,EAAO,YAAY,EAGxC,wBAAAE,GACA,kBAAAC,EACN,CACE,EACA,QAAS,CACP,SAASC,EAAO,CACd,KAAK,MAAM,SAAUA,CAAK,EACtBA,EAAM,OAAO,QACf,KAAK,MAAM,OAAO,EAElB,KAAK,MAAM,SAAS,CAExB,CACJ,CACA,EACMC,GAAa,CAAC,MAAM,EACpBC,GAAa,CAAC,OAAQ,cAAc,EACpCC,GAAa,CAAE,MAAO,uBAAuB,EAC7CC,GAAa,CAAC,KAAM,QAAS,UAAU,EACvCC,GAAa,CAAE,MAAO,uBAAuB,EACnD,SAASC,GAAYC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,EAAU,CAClE,MAAMC,EAA8BC,EAAiB,kBAAkB,EACvE,OAAOC,EAAS,EAAIC,EAAmB,KAAM,CAC3C,MAAOC,EAAe,CAAC,SAAU,CAAE,mBAAoBR,EAAO,QAAQ,CAAE,CAAC,EACzE,KAAMG,EAAS,kBAAoB,cACvC,EAAK,CACDM,EAAmB,QAAS,CAC1B,MAAO,kBACP,KAAMN,EAAS,kBAAoB,mBACnC,eAAgBA,EAAS,kBAAoBF,EAAO,MAAM,SAAQ,CACxE,EAAO,CACDQ,EAAmB,OAAQf,GAAY,CACrCgB,EAAeD,EAAmB,QAAS,CACzC,GAAIT,EAAO,GACX,sBAAuBD,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAKY,GAAWV,EAAO,MAAQU,GAC5E,KAAM,WACN,MAAOH,EAAe,CAAC,yBAA0B,CAAE,UAAW,CAACR,EAAO,QAAQ,CAAE,CAAC,EACjF,MAAOA,EAAO,MACd,SAAUA,EAAO,SACjB,SAAUD,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIa,IAAST,EAAS,UAAYA,EAAS,SAAS,GAAGS,CAAI,EACzG,EAAW,KAAM,GAAIjB,EAAU,EAAG,CACxB,CAACkB,EAAgBZ,EAAO,KAAK,CACvC,CAAS,EACDa,EAAYV,EAA6B,CACvC,KAAMH,EAAO,MAAQA,EAAO,kBAAoBA,EAAO,wBACvD,KAAM,EAChB,EAAW,KAAM,EAAG,CAAC,MAAM,CAAC,CAC5B,CAAO,EACDQ,EAAmB,OAAQb,GAAYmB,EAAgBjB,EAAK,IAAI,EAAG,CAAC,CAC1E,EAAO,EAAGL,EAAU,CACpB,EAAK,GAAID,EAAU,CACnB,CACA,MAAMwB,GAAmCC,GAAYpC,GAAW,CAAC,CAAC,SAAUgB,EAAW,EAAG,CAAC,YAAa,iBAAiB,CAAC,CAAC,aCtErHqB,GAAQ,IAAIC,GAAO,CAAE,YAAa,EAAG,kDAjC3C,MAAMhC,EAAQiC,EAIRC,EAAUC,EAAI,EAAK,EACnBC,EAAYD,EAAI,EAAI,EAC1B,OAAAE,EAAY,IAAM,CACbrC,EAAM,IAAI,YACbkC,EAAQ,MAAQ,GAChBE,EAAU,MAAQ,GAClBL,GAAM,IAAI,IAAM,CACf,MAAMO,EAAQ,IAAI,MACZ,CAAE,QAAAC,EAAS,QAAAC,GAAY,QAAQ,gBACrC,OAAAF,EAAM,OAAS,IAAM,CACpBF,EAAU,MAAQ,GAClBI,EAAA,CACD,EACAF,EAAM,QAAU,IAAM,CACrBJ,EAAQ,MAAQ,GAChBE,EAAU,MAAQ,GAClBI,EAAA,CACD,EACAF,EAAM,IAAMtC,EAAM,IAAI,WACfuC,CACR,CAAC,IAEDH,EAAU,MAAQ,GAClBF,EAAQ,MAAQ,GAElB,CAAC,cAQAO,EAaM,OAbA,MAAKC,EAAEC,SAAO,QAAQ,IAEpBT,EAAA,OAAO,CAAKlC,EAAM,IAAI,gBAD7B4C,EAGyBC,EAAAlD,CAAA,SADvB,KAAM,GACN,KAAMkD,EAAAC,EAAA,qBAEkBV,EAAA,WAA1BQ,EAAkDC,EAAAE,CAAA,SAAZ,KAAM,WAE5CN,EAIQ,aAFN,MAAKC,EAAEC,SAAO,eAAe,EAC7B,IAAK3C,EAAM,IAAI,WAChB,IAAI,mNC3CP,MAAMgD,EAAoBC,EAAA,EACpBC,EAAQC,EAAA,EACRC,EAAiBC,EAAS,KAAO,CACtC,GAAGH,EACH,OAAQ,CACP,GAAGA,EAAM,OACT,GAAIjB,EAAA,IAAI,IAET,MAAOe,EAAkB,UAAS,EACjC,mDAIDP,EAeK,MAfA,MAAKC,EAAEC,SAAO,WAAW,IAC7BW,EAQaC,EAAA,CARA,GAAIH,EAAA,OAAc,WAC9B,IAAoD,CAApDE,EAAoDE,GAAA,CAAzC,IAAAvB,EAAA,IAAK,MAAKS,EAAEC,SAAO,kBAAkB,2BAChDc,EAKM,OALA,MAAKf,EAAEC,SAAO,oBAAoB,IACvCc,EAEK,MAFA,MAAKf,EAAEC,SAAO,iBAAiB,GAChCe,EAAAzB,EAAA,IAAI,IAAI,KAEZwB,EAAwB,SAAAC,EAAlBzB,EAAA,IAAI,OAAO,0BAGnBwB,EAIM,OAJA,MAAKf,EAAEC,SAAO,mBAAmB,IACtCW,EAAsBK,GAAA,CAAN,IAAA1B,EAAA,KAAG,gBACnBqB,EAAoCM,GAAA,CAApB,MAAO3B,EAAA,IAAI,yBACLA,EAAA,IAAI,SAAWA,EAAA,IAAI,YAAzCW,EAAwEiB,GAAA,OAAtB,OAAQ5B,EAAA,IAAI,4bC9BjE,MAAM6B,EAAeb,EAAA,EACfc,EAAWV,EAAS,IAAMS,EAAa,UAAU,oBAItDrB,EAKK,MALA,MAAKC,EAAEC,SAAO,OAAO,WACzBF,EAGQuB,EAAA,KAAAC,EAFOhC,EAAA,KAAPiC,QADRtB,EAGQuB,GAAA,CADN,IAAKD,EAAI,GACT,IAAAA,CAAA,wJCPJ,MAAMhB,EAAQC,EAAA,EACRiB,EAASC,EAAA,EACTrB,EAAoBC,EAAA,EAE1B,OAAAqB,EAAM,IAAMtB,EAAkB,WAAauB,GAAqB,CAC/DH,EAAO,QAAQ,CACd,GAAGlB,EACH,MAAO,CACN,GAAGA,EAAM,MACT,KAAMqB,EAAU,KAAO,OACxB,CACA,CACF,CAAC,EAEDD,EAAM,IAAMtB,EAAkB,gBAAkBwB,GAAY,CACvDxB,EAAkB,YACrBoB,EAAO,QAAQ,CACd,GAAGlB,EACH,MAAO,CACN,GAAGA,EAAM,MACT,KAAMsB,GAAW,KAClB,CACA,CAEH,CAAC,EAEDF,EAAM,IAAMtB,EAAkB,iBAAmByB,GAAqB,CACjEA,EACHL,EAAO,QAAQ,CACd,GAAGlB,EACH,MAAO,CACN,GAAGA,EAAM,MACT,WAAY,OACb,CACA,EAEDkB,EAAO,QAAQ,CACd,GAAGlB,EACH,MAAO,CACN,GAAGA,EAAM,MACT,WAAY,KACb,CACA,CAEH,CAAC,cAIAT,EAmDM,OAnDA,MAAKC,EAAEC,SAAO,UAAU,IAC7BW,EAwCYT,EAAA6B,EAAA,GAxCA,MAAKhC,EAAEC,SAAO,wBAAwB,EAAG,aAAYE,EAAA8B,CAAA,EAAC,0BAA6B,eACnF,OACV,IAA6C,CAA7CrB,EAA6CT,EAAAlD,CAAA,GAA1B,KAAMkD,EAAA+B,EAAA,GAAgB,6BAE1C,IA+BsB,CA/BK/B,EAAAG,CAAA,EAAkB,gBAA7CJ,EA+BsBC,EAAAgC,EAAA,SA/BoC,KAAMhC,EAAA8B,CAAA,EAAC,oCAChE,IASiB,CATjBrB,EASiBT,EAAAiC,CAAA,GARf,aAAYjC,EAAA8B,CAAA,EAAC,8BACb,WAAY9B,EAAAG,CAAA,EAAkB,kBAAe,GAC9C,KAAK,QACL,MAAM,GACL,sBAAiBpC,EAAA,KAAAA,EAAA,GAAAY,GAAEqB,EAAAG,CAAA,EAAkB,gBAAe,MAC1C,OACV,IAAqC,CAArCM,EAAqCT,EAAAlD,CAAA,GAAlB,KAAMkD,EAAAkC,EAAA,GAAQ,uDAGnCzB,EASiBT,EAAAiC,CAAA,GARf,aAAYjC,EAAA8B,CAAA,EAAC,+BACb,WAAY9B,EAAAG,CAAA,EAAkB,kBAAe,IAC9C,KAAK,QACL,MAAM,IACL,sBAAiBpC,EAAA,KAAAA,EAAA,GAAAY,GAAEqB,EAAAG,CAAA,EAAkB,gBAAe,OAC1C,OACV,IAAqC,CAArCM,EAAqCT,EAAAlD,CAAA,GAAlB,KAAMkD,EAAAmC,EAAA,GAAQ,uDAGnC1B,EASiBT,EAAAiC,CAAA,GARf,aAAYjC,EAAA8B,CAAA,EAAC,8BACb,WAAY9B,EAAAG,CAAA,EAAkB,kBAAe,IAC9C,KAAK,QACL,MAAM,IACL,sBAAiBpC,EAAA,KAAAA,EAAA,GAAAY,GAAEqB,EAAAG,CAAA,EAAkB,gBAAe,OAC1C,OACV,IAAqC,CAArCM,EAAqCT,EAAAlD,CAAA,GAAlB,KAAMkD,EAAAoC,EAAA,GAAQ,oFAKpC3B,EAEmBT,EAAAhB,EAAA,GAFQ,WAAAgB,EAAAG,CAAA,EAAkB,iBAAlB,sBAAApC,EAAA,KAAAA,EAAA,GAAAY,GAAAqB,EAAAG,CAAA,EAAkB,iBAAgBxB,EAAA,aAC5D,IAAwC,KAArCqB,EAAA8B,CAAA,EAAC,8FAINrB,EAOWT,EAAAqC,CAAA,GANF,QAASrC,EAAAG,CAAA,EAAkB,WAAlB,mBAAApC,EAAA,KAAAA,EAAA,GAAAY,GAAAqB,EAAAG,CAAA,EAAkB,WAAUxB,GAC5C,aAAYqB,EAAA8B,CAAA,EAAC,wBACd,QAAQ,aACG,OACV,IAAwC,CAAxCrB,EAAwCT,EAAAlD,CAAA,GAArB,KAAMkD,EAAAsC,EAAA,GAAW,qJCjGjC,SAASC,EAAgBC,EAA2D,CAC1F,MAAMC,EAAQrC,EAAA,EACRC,EAAQC,EAAA,EACd,OAAOE,EAAS,IAAM,CACrB,MAAMkC,EAAQ,CAACrC,EAAM,MAAM,GAAK,EAAE,EAAE,OAAO,CAAC,EAC5C,OAAOsC,GAAQH,CAAI,EACjB,OAAQnB,GAAQ,CAChB,GAAI,CAACoB,EAAM,kBAAoBpB,EAAI,eAAiB,GACnD,MAAO,GAER,GAAIqB,EAAO,CACV,MAAME,EAASF,EAAM,OAAO,oBAC5B,OAAOrB,EAAI,KAAK,oBAAoB,SAASuB,CAAM,GAC/CvB,EAAI,GAAG,oBAAoB,SAASuB,CAAM,GAC1CvB,EAAI,QAAQ,oBAAoB,SAASuB,CAAM,CACpD,CACA,MAAO,EACR,CAAC,CACH,CAAC,CACF,8CCdA,MAAMC,EAAkBC,GAAqB,IAAAC,GAAA,IAAM,2BAAAC,EAAA,yBAA2C,EAExF3C,EAAQC,EAAA,EACRmC,EAAQQ,EAAA,EACRC,EAAeC,EAAA,EACflC,EAAeb,EAAA,EAEfgD,EAAkB5C,EAAS,IAAMH,EAAM,OAAQ,QAA4D,EAC3GmC,EAAOhC,EAAS,IACjB4C,EAAgB,QAAU,YACtBX,EAAM,KAAK,OAAQpB,GAAQA,EAAI,SAAS,EACrC+B,EAAgB,QAAU,UAC7BX,EAAM,KAAK,OAAQpB,GAAQA,EAAI,MAAM,EAClC+B,EAAgB,QAAU,WAC7BX,EAAM,KAAK,OAAQpB,GAAQA,EAAI,WAAa,CAACA,EAAI,MAAM,EACpD+B,EAAgB,QAAU,UAC7BX,EAAM,KAAK,OAAQpB,GAAQA,EAAI,QAAUA,EAAI,MAAM,EAEpD,EACP,EACKgC,EAAcd,EAAgBC,CAAI,EAKxC,eAAec,GAAc,CAC5B,MAAMC,GAAYV,EAAiB,CAClC,KAAMQ,EAAY,MAClB,CACF,6BAIC5C,EAAc+C,CAAA,EAGPJ,EAAA,QAAe,WAAkBpD,EAAAkD,CAAA,EAAa,YAAW,OADhEnD,EASWC,EAAAqC,CAAA,SAPT,MAAKxC,EAAEC,SAAO,+BAA+B,EAC9C,QAAQ,UACP,QAAOwD,CAAA,GACG,OACV,IAAsC,CAAtC7C,EAAsCT,EAAAlD,CAAA,GAAnB,KAAMkD,EAAAyD,CAAA,GAAS,6BACxB,IACX,CADWC,EAAA,MACR1D,EAAA8B,CAAA,EAAC,wEAKE9B,EAAAyC,CAAA,EAAM,mBADb1C,EAMiBC,EAAA2D,CAAA,SAJf,KAAM3D,EAAA8B,CAAA,EAAC,iCACG,OACV,IAA4B,CAA5BrB,EAA4BT,EAAAE,CAAA,GAAZ,KAAM,GAAE,sBAMdF,EAAAqD,CAAA,EAAY,QAFxBO,IAAA7D,EAIuB8D,EAHjB7D,EAAAiB,CAAA,EAAa,WAAa6C,EAAUC,CAAQ,SAEhD,MAAKlE,EAAEC,SAAO,cAAc,EAC5B,KAAME,EAAAqD,CAAA,kCACRtD,EAQiBC,EAAA2D,CAAA,SANf,KAAM3D,EAAA8B,CAAA,EAAC,uCACG,SACV,IAEW,CAFXrB,EAEWT,EAAAqC,CAAA,GAFD,QAAQ,UAAW,uBAAO2B,UAAQ,KAAI,OAAUC,SAAO,MAAK,kCACrE,IAAwC,KAArCjE,EAAA8B,CAAA,EAAC,4YCnER,MAAMzB,EAAQC,EAAA,EACRiB,EAASC,EAAA,EACTiB,EAAQQ,EAAA,EACRhC,EAAeb,EAAA,EAEfiD,EAAcd,EAAgB,IAAME,EAAM,IAAI,EAC9CyB,EAAS5E,EAAI,EAAE,EAErB,OAAAmC,EAAM,IAAMpB,EAAM,MAAM,EAAI8D,GAAa,CACxCD,EAAO,MAAQ,CAACC,GAAY,EAAE,EAAE,OAAO,CAAC,CACzC,EAAG,CAAE,UAAW,GAAM,EAEtBC,GAAeF,EAASG,GAAa,CACpC9C,EAAO,QAAQ,CACd,GAAGlB,EACH,MAAO,CACN,GAAGA,EAAM,MACT,EAAGgE,EAAS,MAAK,CAClB,CACA,CACF,EAAG,CAAE,SAAU,IAAK,wBAInB5D,EAAc+C,CAAA,EAIPxD,EAAAyC,CAAA,EAAM,mBADb1C,EAMiBC,EAAA2D,CAAA,SAJf,KAAM3D,EAAA8B,CAAA,EAAC,iCACG,OACV,IAA4B,CAA5BrB,EAA4BT,EAAAE,CAAA,GAAZ,KAAM,GAAE,sBAMdF,EAAAqD,CAAA,EAAY,QAAUa,QAAO,OAAO,OAAM,GAFtDN,EAAA,EAAA7D,EAIuB8D,EAHjB7D,EAAAiB,CAAA,EAAa,WAAa6C,EAAUC,CAAQ,SAEhD,MAAKlE,EAAEC,SAAO,cAAc,EAC5B,KAAME,EAAAqD,CAAA,kCACRtD,EAOiBC,EAAA2D,CAAA,SALf,KAAM3D,EAAA8B,CAAA,EAAC,qCACP,YAAaoC,QAAO,OAAO,QAAM,EAAQlE,EAAA8B,CAAA,EAAC,sDAA0D,SAC1F,SACV,IAAqF,CAArFrB,EAAqFT,EAAAsE,EAAA,cAA9DJ,EAAA,2CAAAA,EAAM,MAAAvF,GAAE,KAAK,SAAU,MAAOqB,EAAA8B,CAAA,EAAC,iYChDzD,MAAM3E,EAAQiC,EAIRmF,EAAOC,EAIP/B,EAAQU,EAAA,EACRsB,EAAcnF,EAAI,EAAE,EACpBoF,EAAapF,EAAI,EAAK,EAEtBqF,EAAgBnE,EAAS,IAAM,CACpC,GAAI,CAACiE,EAAY,MAChB,MAAO,GAGR,MAAMpD,EAAMlE,EAAM,KAAK,KAAMkE,GAAQA,EAAI,KAAOoD,EAAY,KAAK,EACjE,GAAI,CAACpD,GAAO,CAACA,EAAI,UAAYA,EAAI,SAAS,SAAW,EACpD,MAAO,GAGR,KAAM,CAACuD,CAAO,EAAIvD,EAAI,SAEtB,OADuBuD,EAAQ,aAAaC,GAAA,CAAa,GAClC,WAAaD,EAAQ,aAAa,IAAI,WAAa,EAC3E,CAAC,EAKD,eAAeE,GAAW,CACzBJ,EAAW,MAAQ,GACnB,UAAWrD,KAAOlE,EAAM,KACvB,GAAI,CACH,MAAMsF,EAAM,UAAUpB,EAAI,EAAE,CAC7B,OAAS0D,EAAO,CACfC,GAAO,MAAM,wBAAwB3D,EAAI,EAAE,GAAI,CAAE,MAAA0D,EAAO,EACxDE,GAAUnD,EAAE,WAAY,iCAAkC,CAAE,QAAST,EAAI,KAAM,CAAC,CACjF,CAEDqD,EAAW,MAAQ,GACnBH,EAAK,OAAO,CACb,mBAICxE,EA0DWC,EAAAkF,EAAA,GA1DA,eAAgBpF,SAAO,gBAAiB,KAAK,SAAU,KAAME,EAAA8B,CAAA,EAAC,gCA+C7D,UACV,IAEW,CAFXrB,EAEWT,EAAAqC,CAAA,GAFD,QAAQ,WAAY,uBAAOkC,EAAI,sBACxC,IAA6B,KAA1BvE,EAAA8B,CAAA,EAAC,iCAELrB,EAKWT,EAAAqC,CAAA,GALD,QAAQ,UAAW,QAAOyC,CAAA,gBAGxB,IACX,CADWpB,EAAA,MACR1D,EAAA8B,CAAA,EAAC,qCAHY4C,EAAA,YAAa,YAC5B,IAAiB,CAAjBjE,EAAiBT,EAAAE,CAAA,yCApDpB,IAAuE,CAAvEU,EAAuE,WAAjEZ,EAAA8B,CAAA,EAAC,4DACPlB,EAkCK,kBAjCJhB,EAgCKuB,EAAA,KAAAC,EAhCahC,EAAA,KAAPiC,QAAXzB,EAgCK,MAhCoB,IAAKyB,EAAI,GAAK,MAAKxB,EAAEC,SAAO,0BAA0B,IAC9Ec,EA8BM,OA9BA,MAAKf,EAAEC,SAAO,iCAAiC,IACpDc,EAKM,OALA,MAAKf,EAAEC,SAAO,iCAAiC,IACpDW,EAEiET,EAAAlD,CAAA,GAD/D,KAAMuE,EAAI,OAASrB,EAAAyD,CAAA,EAAYzD,EAAAmF,EAAA,EAC/B,KAAM9D,EAAI,OAAS,OAAYrB,EAAA8B,CAAA,EAAC,mDAClClB,EAAiH,QAA1G,MAAKf,EAAEC,SAAO,8BAA8B,GAAKe,EAAAQ,EAAI,IAAI,EAAG,OAAKA,EAAI,OAAO,EAAG,MAAGR,EAAGQ,EAAI,MAAM,EAAG,IAAC,OAE3GT,EAsBM,OAtBA,MAAKf,EAAEC,SAAO,iCAAiC,IAE7CuB,EAAI,aADXtB,EAUWC,EAAAqC,CAAA,SART,aAAYrC,EAAA8B,CAAA,EAAC,2BACb,MAAO9B,EAAA8B,CAAA,EAAC,2BACR,KAAMT,EAAI,QACX,OAAO,SACP,QAAQ,aACG,OACV,IAAmC,CAAnCZ,EAAmCT,EAAAlD,CAAA,GAAhB,KAAMkD,EAAAoF,EAAA,GAAM,mEAI1B/D,EAAI,cADXtB,EASWC,EAAAqC,CAAA,SAPT,aAAYrC,EAAA8B,CAAA,EAAC,2BACb,MAAO9B,EAAA8B,CAAA,EAAC,2BACR,QAAS2C,EAAA,QAAgBpD,EAAI,GAC7B,sBAAgBoD,EAAA,MAAc9F,EAAS0C,EAAI,GAAE,KACnC,OACV,IAAkD,CAAlDZ,EAAkDT,EAAAlD,CAAA,GAA/B,KAAMkD,EAAAqF,EAAA,GAAqB,+GAQpD5E,EAOaT,EAAAsF,EAAA,GANX,MAAKzF,EAAEC,SAAO,iCAAiC,EAC/C,QAASE,EAAA8B,CAAA,EAAC,sBACX,KAAK,mBACL,IAEyB,CAFzBrB,EAEyB8E,GAAA,CADvB,gBAAiB,EACjB,KAAMZ,EAAA","names":["_sfc_main","NcIconSvgWrapper","ActionGlobalMixin","NC_ACTIONS_IS_SEMANTIC_MENU","createElementId","id","props","useModel","mdiCheckboxBlankOutline","mdiCheckboxMarked","event","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_component_NcIconSvgWrapper","resolveComponent","openBlock","createElementBlock","normalizeClass","createElementVNode","withDirectives","$event","args","vModelCheckbox","createVNode","toDisplayString","NcActionCheckbox","_export_sfc","queue","PQueue","__props","isError","ref","isLoading","watchEffect","image","promise","resolve","_createElementBlock","_normalizeClass","$style","_createBlock","_unref","mdiCogOutline","NcLoadingIcon","userSettingsStore","useUserSettingsStore","route","useRoute","routeToDetails","computed","_createVNode","_component_RouterLink","AppImage","_createElementVNode","_toDisplayString","BadgeAppScore","BadgeAppLevel","BadgeAppDaemon","userSettings","gridSize","_Fragment","_renderList","app","AppGridItem","router","useRouter","watch","enabled","newSize","showIncompatible","NcActions","t","mdiFilterVariant","NcActionButtonGroup","NcActionButton","mdiSizeS","mdiSizeM","mdiSizeL","NcButton","mdiViewGrid","useFilteredApps","apps","store","query","toValue","needle","UpdateAllDialog","defineAsyncComponent","__vitePreload","UpdateAllDialog$1","useAppsStore","updatesStore","useUpdatesStore","currentCategory","visibleApps","onUpdateAll","spawnDialog","AppToolbar","mdiUpdate","_createTextVNode","NcEmptyContent","_openBlock","_resolveDynamicComponent","AppGrid","AppTable","$router","$route","search","newQuery","watchDebounced","newValue","NcInputField","emit","__emit","showDetails","isUpdating","changelogText","release","getLanguage","onUpdate","error","logger","showError","NcDialog","mdiCheck","mdiWeb","mdiInformationOutline","NcNoteCard","MarkdownPreview"],"ignoreList":[0],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionCheckbox-DBqiK-AZ.mjs","../build/frontend/apps/appstore/src/components/AppImage.vue","../build/frontend/apps/appstore/src/components/AppGrid/AppGridItem.vue","../build/frontend/apps/appstore/src/components/AppGrid/AppGrid.vue","../build/frontend/apps/appstore/src/components/AppToolbar.vue","../build/frontend/apps/appstore/src/composables/useFilteredApps.ts","../build/frontend/apps/appstore/src/views/AppstoreManage.vue","../build/frontend/apps/appstore/src/views/AppstoreSearch.vue","../build/frontend/apps/appstore/src/components/UpdateAllDialog.vue"],"sourcesContent":["import '../assets/NcActionCheckbox-wD8m_a8-.css';\nimport { h as mdiCheckboxMarked, i as mdiCheckboxBlankOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, withDirectives, vModelCheckbox, createVNode, toDisplayString, useModel } from \"vue\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionCheckbox\",\n components: {\n NcIconSvgWrapper\n },\n mixins: [ActionGlobalMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * checked state of the the checkbox element\n */\n modelValue: {\n type: Boolean,\n default: false\n },\n /**\n * value of the checkbox input\n */\n value: {\n type: [String, Number],\n default: \"\"\n },\n /**\n * disabled state of the checkbox element\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /** Native change event */\n \"change\",\n /** Checkbox is checked */\n \"check\",\n /** Checkbox is unchecked */\n \"uncheck\",\n /** Model value changed */\n \"update:modelValue\"\n ],\n setup(props) {\n const model = useModel(props, \"modelValue\");\n return {\n model,\n mdiCheckboxBlankOutline,\n mdiCheckboxMarked\n };\n },\n methods: {\n onChange(event) {\n this.$emit(\"change\", event);\n if (event.target.checked) {\n this.$emit(\"check\");\n } else {\n this.$emit(\"uncheck\");\n }\n }\n }\n};\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"role\", \"aria-checked\"];\nconst _hoisted_3 = { class: \"action-checkbox__icon\" };\nconst _hoisted_4 = [\"id\", \"value\", \"disabled\"];\nconst _hoisted_5 = { class: \"action-checkbox__text\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass([\"action\", { \"action--disabled\": $props.disabled }]),\n role: $options.isInSemanticMenu && \"presentation\"\n }, [\n createElementVNode(\"label\", {\n class: \"action-checkbox\",\n role: $options.isInSemanticMenu && \"menuitemcheckbox\",\n \"aria-checked\": $options.isInSemanticMenu && $setup.model.toString()\n }, [\n createElementVNode(\"span\", _hoisted_3, [\n withDirectives(createElementVNode(\"input\", {\n id: $props.id,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $setup.model = $event),\n type: \"checkbox\",\n class: normalizeClass([\"action-checkbox__input\", { focusable: !$props.disabled }]),\n value: $props.value,\n disabled: $props.disabled,\n onChange: _cache[1] || (_cache[1] = (...args) => $options.onChange && $options.onChange(...args))\n }, null, 42, _hoisted_4), [\n [vModelCheckbox, $setup.model]\n ]),\n createVNode(_component_NcIconSvgWrapper, {\n path: $setup.model ? $setup.mdiCheckboxMarked : $setup.mdiCheckboxBlankOutline,\n size: 20\n }, null, 8, [\"path\"])\n ]),\n createElementVNode(\"span\", _hoisted_5, toDisplayString(_ctx.text), 1)\n ], 8, _hoisted_2)\n ], 10, _hoisted_1);\n}\nconst NcActionCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-2947bc3b\"]]);\nexport {\n NcActionCheckbox as N\n};\n//# sourceMappingURL=NcActionCheckbox-DBqiK-AZ.mjs.map\n","\n\n\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { computed, toValue } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useUserSettingsStore } from '../store/userSettings.ts'\n\n/**\n * Get the filtered list of apps based on the user settings\n *\n * @param apps - The apps to filter\n */\nexport function useFilteredApps(apps: MaybeRefOrGetter<(IAppstoreApp | IAppstoreExApp)[]>) {\n\tconst store = useUserSettingsStore()\n\tconst route = useRoute()\n\treturn computed(() => {\n\t\tconst query = [route.query.q || ''].flat()[0]!\n\t\treturn toValue(apps)\n\t\t\t.filter((app) => {\n\t\t\t\tif (!store.showIncompatible && app.isCompatible === false) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (query) {\n\t\t\t\t\tconst needle = query.trim().toLocaleLowerCase()\n\t\t\t\t\treturn app.name.toLocaleLowerCase().includes(needle)\n\t\t\t\t\t\t|| app.id.toLocaleLowerCase().includes(needle)\n\t\t\t\t\t\t|| app.summary.toLocaleLowerCase().includes(needle)\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t})\n\t})\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"file":"UpdateAllDialog-BqC8T943.chunk.mjs"} \ No newline at end of file diff --git a/dist/UpdateAllDialog-B79HRvpB.chunk.mjs.map.license b/dist/UpdateAllDialog-BqC8T943.chunk.mjs.map.license similarity index 100% rename from dist/UpdateAllDialog-B79HRvpB.chunk.mjs.map.license rename to dist/UpdateAllDialog-BqC8T943.chunk.mjs.map.license diff --git a/dist/appstore-main.mjs b/dist/appstore-main.mjs index 61f82487cb100..66265f6e0e947 100644 --- a/dist/appstore-main.mjs +++ b/dist/appstore-main.mjs @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/AppstoreDiscover-C9at7Z-5.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/pinia-BsumPXOW.chunk.mjs'),window.OC.filePath('', '', 'dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcContent-BYh5hWDN-CKeEKmjj.chunk.css'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-Fnpm9Yo9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrayArrowDown-BEbvWlY3.chunk.css'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-CSlQTlWs.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcBreadcrumbs-B4eyDS9i-BknLVeOm.chunk.css'),window.OC.filePath('', '', 'dist/common-NcTextArea-Dxzj4zdb-CY5ND5WA.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/Plus-Cvoorj3T.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Plus-Som-mR4B.chunk.css'),window.OC.filePath('', '', 'dist/index-BRPJrOcF.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/index-Cdqy7gO-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BnF98eos.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs'),window.OC.filePath('', '', 'dist/emoji-C8k9NUlo-BQiX-d8c.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmojiPicker-UTxgju3f-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/index-D9CqvIri.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBuXQ7OS.chunk.css'),window.OC.filePath('', '', 'dist/index-DueKLP2f.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBhtJjWD.chunk.css'),window.OC.filePath('', '', 'dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs'),window.OC.filePath('', '', 'dist/ContentCopy-B9XOXCFO.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ContentCopy-D7mIRwIy.chunk.css'),window.OC.filePath('', '', 'dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserBubble-BXR7vT0V-f2DD9EAL.chunk.css'),window.OC.filePath('', '', 'dist/modulepreload-polyfill-BxzAKjcf.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgrtITOq.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-AppstoreDiscover-D5SWaP1O.chunk.css'),window.OC.filePath('', '', 'dist/common-NcActionSeparator-Ct2RnclR-pXJ_-D_I.chunk.css'),window.OC.filePath('', '', 'dist/common-NcGuestContent-CM0uWLr1-BezK2wMx.chunk.css'),window.OC.filePath('', '', 'dist/UpdateAllDialog-B79HRvpB.chunk.mjs'),window.OC.filePath('', '', 'dist/common-UpdateAllDialog-CZVJ1CV6.chunk.css'),window.OC.filePath('', '', 'dist/AppstoreBrowse-AfNqrsSg.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-AppstoreBrowse-BmXPxQ1G.chunk.css')])))=>i.map(i=>d[i]); -import{d as ke,c as Ft}from"./pinia-BsumPXOW.chunk.mjs";import{b as B,o as u,f as x,g as _,t as v,i as Wt,y as w,c as D,u as o,L as Xt,w as y,j as N,v as $,F as M,B as Z,k,l as E,a9 as dt,p as ht,z as re,h as I,q as Me,a8 as fe,R as Yt,a as Jt,_ as oe,E as Kt,S as ea,r as ta,e as aa}from"./Web-DYqXJUev.chunk.mjs";import{t as c,p as na,g as sa}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as ie,v as Oe,u as _e,H as la,I as ra}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as ia,a as oa}from"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{c as Ge,f as gt,g as pa,b as K}from"./index-Cp0kcsps.chunk.mjs";import{_ as q,l as ee}from"./public-C1mLBHT3.chunk.mjs";import{N as ca}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{_ as mt,N as L}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{c as ua,d as J,e as da,f as ha,N as ga}from"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import{P as ft}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import{N as ma,a as fa,_ as ba}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{W as ka,w as _a,b as ya,m as wa,u as va}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{N as Ie}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as xa}from"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import{N as $a,a as Ta}from"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import{N as bt,s as kt}from"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import{N as Ue}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{L as Aa,M as Sa,O as Ra,P as Da,Q as za,R as Ia,S as Ca,T as La,U as Ea,V as Ba,W as Pa,w as Na,X as qa,D as Se,Y as Ma,Z as Oa,_ as Ze,y as je,$ as _t,a0 as Ga,a1 as yt,q as wt,a2 as Ua,a3 as Za,a4 as ja,a5 as vt,a6 as Ha,a7 as Qa,a8 as xt,N as at,a9 as Va,aa as Fa,ab as Wa,ac as Xa,ad as Ya,K as Ja,ae as Ka,l as en,J as tn,af as an,v as nn,ag as sn}from"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import{c as O}from"./index-CkGt55pS.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import{a as be}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{a as ln,P as ye,c as He}from"./index-BgrtITOq.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const rn={class:"app-navigation-spacer"},on=B({__name:"NcAppNavigationSpacer",setup(e){return(t,n)=>(u(),x("li",rn))}}),pn=mt(on,[["__scopeId","data-v-277fa710"]]),cn={name:"NcAppSidebarTab",inject:["registerTab","unregisterTab","getActiveTab","isTablistShown"],props:{id:{type:String,required:!0},name:{type:String,required:!0},icon:{type:String,default:""},order:{type:Number,default:0}},emits:["bottomReached","scroll"],expose:["id","name","icon","order","renderIcon"],computed:{isActive(){return this.getActiveTab()===this.id}},created(){this.registerTab(this)},beforeUnmount(){this.unregisterTab(this.id)},methods:{onScroll(e){this.$el.scrollHeight-this.$el.scrollTop===this.$el.clientHeight&&this.$emit("bottomReached",e),this.$emit("scroll",e)},renderIcon(){return this.$slots.icon?.()}}},un=["id","aria-hidden","aria-label","aria-labelledby","role","tabindex"],dn={class:"hidden-visually"};function hn(e,t,n,s,a,r){return u(),x("section",{id:`tab-${n.id}`,"aria-hidden":!r.isActive,"aria-label":r.isTablistShown()?void 0:n.name,"aria-labelledby":r.isTablistShown()?`tab-button-${n.id}`:void 0,class:w(["app-sidebar__tab",{"app-sidebar__tab--active":r.isActive}]),role:r.isTablistShown()?"tabpanel":void 0,tabindex:r.isTablistShown()?0:-1,onScroll:t[0]||(t[0]=(...l)=>r.onScroll&&r.onScroll(...l))},[_("h3",dn,v(n.name),1),Wt(e.$slots,"default",{},void 0,!0)],42,un)}const Ce=mt(cn,[["render",hn],["__scopeId","data-v-dba10798"]]),W=Object.freeze({discover:c("appstore","Discover"),installed:c("appstore","Your apps"),enabled:c("appstore","Active apps"),disabled:c("appstore","Disabled apps"),updates:c("appstore","Updates"),bundles:c("appstore","App bundles"),featured:c("appstore","Featured apps"),supported:c("appstore","Supported apps"),search:c("appstore","Search results")}),X=Object.freeze({discover:Za,installed:Ua,enabled:wt,disabled:yt,bundles:Ga,supported:_t,featured:je,updates:Ze,ai:Oa,auth:Ma,customization:Se,dashboard:qa,files:Na,games:Pa,integration:Ba,monitoring:Ea,multimedia:La,office:Ca,organization:Ia,search:za,security:Da,social:Ra,tools:Sa,workflow:Aa}),Ji=["post","showcase","carousel"];ln(O);const te=Ge("apps/appstore/api/v1"),se=Object.freeze({apps:`${te}/apps`,categories:`${te}/apps/categories`,enable:`${te}/apps/enable`,disable:`${te}/apps/disable`,uninstall:`${te}/apps/uninstall`,update:`${te}/apps/update`,bundleEnable:`${te}/bundles/enable`}),we=new ft({concurrency:1});async function nt(e,t=!1,n){return we.add(async()=>{await O.post(se.enable,{appId:e,groups:n,force:t||void 0},{confirmPassword:ye.Strict})})}async function gn(e){return we.add(async()=>{await O.post(se.disable,{appId:e},{confirmPassword:ye.Lax})})}async function mn(e){return we.add(async()=>{await O.post(se.update,{appId:e},{confirmPassword:ye.Strict})})}async function fn(e){return we.add(async()=>{await O.post(se.uninstall,{appId:e},{confirmPassword:ye.Strict})})}async function bn(){const{data:e}=await O.get(se.apps);return e.ocs.data}async function kn(){const{data:e}=await O.get(se.categories);for(const t of e.ocs.data)t.icon=X[t.id]??"";return e.ocs.data}async function _n(e){return we.add(async()=>{await O.post(se.bundleEnable,{bundleId:e},{confirmPassword:ye.Strict})})}async function ge(){const{data:e}=await O.get(Ge("core/navigation/apps?format=json"));e.ocs.meta.statuscode===200&&(gt("nextcloud:app-menu.refresh",{apps:e.ocs.data}),window.dispatchEvent(new Event("resize")))}function pe(e){return e.installed||e.internal?!1:e.missingDependencies===void 0||e.missingDependencies.length===0||!e.isCompatible&&e.missingDependencies.length===1}function $t(e){return e.installed&&e.removable&&!e.active}function Tt(e){return!Rt(e)&&!Dt(e)&&At(e)&&e.isCompatible}function At(e){return!e.active&&(e.installed||pe(e))}function ve(e){return!e.active&&!e.isCompatible}function St(e){return!Rt(e)&&!Dt(e)&&e.active&&!e.internal}function yn(e){return e.update!==void 0}const wn=["filesystem","prelogin","authentication","logging","prevent_group_restriction"];function Qe(e){return!e.active&&!e.installed||!e.active&&ve(e)?!1:e.types?e.types.every(t=>!wn.includes(t)):!0}function Rt(e){return e.app_api&&(e.status.action==="init"||e.status.action==="healthcheck")}function Dt(e){return e.app_api&&e.status.action==="deploy"}const H=pa().setApp("appstore").detectUser().build(),vn=B({__name:"DaemonSelectionDialogListEntry",props:{daemon:{},isDefault:{type:Boolean}},emits:["selected"],setup(e,{emit:t}){const n=e,s=t,a=$(()=>`${n.daemon.name} - ${n.daemon.display_name}`);return(r,l)=>(u(),D(o($a),{active:e.isDefault,counterNumber:e.daemon.exAppsCount,counterType:"highlighted",details:e.isDefault?o(c)("appstore","Default"):"",forceDisplayActions:"",name:a.value,onClick:l[0]||(l[0]=Xt(p=>s("selected"),["stop"]))},{subname:y(()=>[N(v(e.daemon.accepts_deploy_id),1)]),_:1},8,["active","counterNumber","details","name"]))}}),xn=["aria-label"],$n=B({__name:"DaemonSelectionDialogList",emits:["selected"],setup(e){const t=xe();return(n,s)=>(u(),x("ul",{class:w(n.$style.DaemonSelectionDialogList),"aria-label":o(c)("appstore","Registered Deploy daemons list")},[(u(!0),x(M,null,Z(o(t).dockerDaemons,a=>(u(),D(vn,{key:a.id,daemon:a,isDefault:o(t).defaultDaemon?.name===a.name,onSelected:r=>n.$emit("selected",a)},null,8,["daemon","isDefault","onSelected"]))),128))],10,xn))}}),Tn="_DaemonSelectionDialogList_x38pt_2",An={DaemonSelectionDialogList:Tn},Sn={$style:An},Rn=q($n,[["__cssModules",Sn]]),Dn=B({__name:"DaemonSelectionDialog",props:{app:{}},emits:["close"],setup(e){const t=xe(),n=K("/settings/admin/app_api");return(s,a)=>(u(),D(o(bt),{name:o(c)("appstore","Choose Deploy Daemon for {appName}",{appName:e.app.name}),size:"normal","onUpdate:open":a[1]||(a[1]=r=>r||s.$emit("close"))},{default:y(()=>[o(t).dockerDaemons.length===0?(u(),D(o(Ue),{key:0,class:"daemon-selection-list__empty-content",name:o(c)("appstore","No Deploy daemons configured"),description:o(c)("appstore","Register a custom one or setup from available templates")},{icon:y(()=>[k(o(L),{path:o(ja)},null,8,["path"])]),action:y(()=>[k(o(ie),{href:o(n)},{default:y(()=>[N(v(o(c)("appstore","Manage Deploy daemons")),1)]),_:1},8,["href"])]),_:1},8,["name","description"])):(u(),D(Rn,{key:1,app:e.app,onSelected:a[0]||(a[0]=r=>s.$emit("close",r))},null,8,["app"]))]),_:1},8,["name"]))}});async function zn(){const{data:e}=await O.get(K("/apps/app_api/apps/list"));return e.apps}async function In(e){const{data:t}=await O.get(K(`/apps/app_api/apps/status/${e}`));return t}async function Be(e,t,n){await He(),await O.post(K(`/apps/app_api/apps/enable/${e.id}/${t.name}`),{deployOptions:n})}async function Cn(e){await He(),await O.post(K("/apps/app_api/apps/force"),{appId:e})}async function st(e){await He(),await O.get(K(`apps/app_api/apps/disable/${e}`))}const xe=ke("external-apps",()=>{const e=ee("appstore","appApiEnabled",!1),t=E([]),n=E(ee("appstore","appstoreExAppUpdateCount",0));let s=null;const a=E(ee("appstore","defaultDaemonConfigAccessible",!1)),r=E(ee("appstore","defaultDaemonConfig",null)),l=E([]),p=$(()=>t.value.filter(m=>m?.status?.action&&m.status.type!==""&&(m?.status?.action==="deploy"||m.status.action==="init"||m.status.action==="healthcheck")));function i(m){return t.value.find(({id:f})=>f===m)??null}async function g(m){const f=i(m);if(!f)throw new Error(`App with id ${m} not found`);f.loading=!0;try{if(l.value.length===1&&f.needsDownload)Be(f,l[0]),f.daemon=l[0];else if(f.needsDownload){const U=await kt(Dn,{app:f});if(!U)throw new Error("No daemon selected");await Be(f,U),f.daemon=U}else await Be(f,f.daemon);f.installed||(f.needsDownload=!1,f.status={type:"install",action:"deploy",init:0,deploy:0}),f.removable=!0,delete f.error,await T(m)}finally{f.loading=!1}}async function h(m){const f=i(m);if(!f)throw new Error(`App with id ${m} not found`);f.loading=!0;try{await Cn(m),await R(!0),f.active=!1}finally{f.loading=!1}}async function d(m){const f=i(m);if(!f)throw new Error(`App with id ${m} not found`);f.loading=!0;try{await st(m),f.active=!1}finally{f.loading=!1}}async function b(m){const f=i(m);if(!f)throw new Error(`App with id ${m} not found`);f.loading=!0;try{await st(m),f.active=!1,f.needsDownload=!0,f.installed=!1,f.daemon=null,f.status={},f.update!==null&&n.value--,delete f.update,delete f.error}finally{f.loading=!1}}async function S(m){const f=i(m);if(!f)throw new Error(`App with id ${m} not found`);f.loading=!0;try{await O.get(K(`/apps/app_api/apps/update/${m}`)),f.version=f.update||f.version,f.status={type:"update",action:"deploy",init:0,deploy:0},delete f.update,delete f.error,n.value--,await T(m)}catch(U){H.error("Failed to update ex app",{appId:m,error:U}),be(c("appstore","Could not update the app. Please try again later."))}finally{f.loading=!1}}async function R(m=!1){(m||!r.value||!l.value.length)&&await P(),(m||t.value.length===0)&&await Y()}return{isEnabled:e,apps:t,updateCount:n,defaultDaemon:r,dockerDaemons:l,daemonAccessible:a,getById:i,disableApp:d,enableApp:g,forceEnableApp:h,updateApp:S,uninstallApp:b,initialize:R};async function P(){try{const{data:m}=await O.get(K("/apps/app_api/daemons"));r.value=m.daemons.find(f=>f.name===m.default_daemon_config),l.value=m.daemons.filter(f=>f.accepts_deploy_id==="docker-install")}catch(m){return H.error("[app-api-store] Failed to fetch Docker daemons",{error:m}),!1}return!0}async function Y(){try{t.value=await zn()}catch(m){H.error("An error occurred while fetching apps",{error:m}),be(c("appstore","An error occurred during the request. Unable to proceed."))}}async function T(m){const f=i(m);if(!f){H.error("[app-api-store] app not found while fetching status",{appId:m});return}f.loading=!0;try{const U=await In(m);f.status=U,H.debug("[app-api-store] initializingOrDeployingApps after setAppStatus",{initializingOrDeployingApps:p}),p.value.length===0&&(H.debug("[app-api-store] Clearing interval"),clearInterval(s),s=null),f.status.error&&p.value.length===1&&(clearInterval(s),s=null)}catch(U){throw A(),U}finally{f.loading=!1}}function A(){clearInterval(s),p.value.length!==0&&(s=window.setInterval(()=>{H.debug("[app-api-store] initializingOrDeployingApps",{initializingOrDeployingApps:p});for(const m of p.value)T(m.id)},2e3))}}),j=ke("apps",()=>{const e=xe(),t=E([]),n=E([]),s=dt(ee("appstore","appstoreBundles")),a=E(!1),r=E(!1),l=$(()=>[...t.value,...e.isEnabled?e.apps:[]]);function p(T){return n.value.find(({id:A})=>A===T)??null}function i(T){return l.value.find(({id:A})=>A===T)??null}function g(T){return l.value.filter(A=>[A.category].flat().includes(T))}async function h(T,A=!1){const m=i(T);if(!m)throw new Error(`App with id ${T} not found`);if(m.active||!m.installed&&!pe(m))throw new Error(`App with id ${T} cannot be enabled`);if(!A&&ve(m))throw new Error(`App with id ${T} requires force enable`);m.loading=!0;try{m.app_api?await e.enableApp(T):await nt(T,A),A&&(m.isCompatible=!0),m.active=!0,m.installed=!0,m.removable=!0,await ge()}finally{m.loading=!1}}async function d(T){const A=i(T);if(!A)throw new Error(`App with id ${T} not found`);if(!St(A))throw new Error(`App with id ${T} cannot be disabled`);A.loading=!0;try{A.app_api?await e.disableApp(T):await gn(T),A.active=!1,A.isCompatible=A.missingDependencies===void 0||A.missingDependencies.length===0,await ge()}finally{A.loading=!1}}async function b(T){const A=i(T);if(!A)throw new Error(`App with id ${T} not found`);if(!$t(A))throw new Error(`App with id ${T} cannot be uninstalled`);A.loading=!0;try{A.app_api?await e.uninstallApp(T):await fn(T),A.active=!1,A.installed=!1,await ge()}finally{A.loading=!1}}async function S(T,A){const m=i(T);if(!m)throw new Error(`App with id ${T} not found`);if(!Qe(m))throw new Error(`App with id ${T} cannot be limited to groups`);if(!m.app_api)try{m.loading=!0,await nt(T,!1,A),m.groups=A}finally{m.loading=!1}}async function R(T){const A=s.find(m=>m.id===T);if(!A)throw new Error(`Bundle with id ${T} not found`);try{for(const m of A.appIdentifiers){const f=i(m);f.loading=!0}await _n(A.id);for(const m of A.appIdentifiers){const f=i(m);f.active=!0,f.installed=!0,f.removable=!0,await ge()}}finally{for(const m of A.appIdentifiers){const f=i(m);f.loading=!1}}}async function P(){try{r.value=!0,n.value=await kn()}catch(T){H.error("Failed to load app categories",{error:T}),be(c("appstore","Could not load app categories. Please try again later."))}finally{r.value=!1}}async function Y(){try{a.value=!0,t.value=await bn()}catch(T){H.error("Failed to load apps list",{error:T}),be(c("appstore","Could not load apps list. Please try again later."))}finally{a.value=!1}}return Y(),P(),{apps:l,bundles:s,categories:n,isLoadingApps:a,isLoadingCategories:r,disableApp:d,enableApp:h,uninstallApp:b,enableBundle:R,getAppById:i,getAppsByCategory:g,getCategoryById:p,limitAppToGroups:S}}),zt=ke("updates",()=>{const e=xe(),t=E(ee("appstore","appstoreUpdateCount",0)),n=$(()=>t.value+e.updateCount);async function s(a){const r=j().getAppById(a);if(!r)throw new Error(`App with id ${a} not found`);try{"app_api"in r&&r.app_api?await e.updateApp(a):(await mn(a),t.value=Math.max(t.value-1,0)),r.update=void 0,ge()}catch(l){H.error("Failed to update app",{appId:a,error:l}),be(c("appstore","Could not update the app. Please try again later."))}}return{updateCount:n,updateApp:s}}),It=ke("userSettings",()=>{const e=E(""),t=E(!1),n=E(!0),s=$(()=>e.value==="m"?"468px":e.value==="l"?"512px":"320px");function a(l){return{...(_e()??{}).query,grid:l??t.value?e.value||null:void 0,compatible:n.value?void 0:null}}return Oe().afterEach(l=>{r(l.query)}),{defaultGridSize:e,gridSizePx:s,isGridView:t,showIncompatible:n,getQuery:a};function r(l){t.value="grid"in l,e.value=[l.grid??""].flat()[0].toLowerCase(),n.value=!("compatible"in l)}}),Ln=B({__name:"AppstoreNavigation",setup(e){const t=ee("settings","appstoreEnabled",!0),n=j(),s=zt(),a=It(),r=$(()=>n.categories),l=$(()=>n.isLoadingCategories),p=_e(),i=Oe(),g=ht("search");ka("f",()=>{g.value?.$refs.inputElement||(gt("toggle-navigation",{open:!0}),window.setTimeout(()=>g.value?.$refs.inputElement?.focus(),400)),g.value?.$refs.inputElement?.focus()},{ctrl:!0,stop:!0,prevent:!0});const h=E("");re(()=>p.query.q,b=>{h.value=[b||""].flat()[0]},{immediate:!0}),_a(h,(b,S)=>{if(b.trim()!==S.trim()){if(i.currentRoute.value.name==="apps-discover"||i.currentRoute.value.name==="apps-manage"&&p.params.category==="bundles"){i.push({name:"apps-search",query:{...p.query,q:b.trim()||void 0}});return}i.replace({...p,query:{...p.query,q:b.trim()||void 0}})}},{debounce:500});const d=$(()=>n.apps.find(({level:b})=>b===300)!==void 0);return(b,S)=>(u(),D(o(ua),{"aria-label":o(c)("appstore","Appstore categories")},{search:y(()=>[k(o(da),{ref_key:"search",ref:h,modelValue:h.value,"onUpdate:modelValue":S[0]||(S[0]=R=>h.value=R),label:o(c)("appstore","Search apps…")},null,8,["modelValue","label"])]),list:y(()=>[o(t)?(u(),D(o(J),{key:0,to:{name:"apps-discover"},name:o(W).discover},{icon:y(()=>[k(o(L),{path:o(X).discover},null,8,["path"])]),_:1},8,["name"])):I("",!0),k(o(J),{to:{name:"apps-manage",params:{category:"installed"}},name:o(W).installed},{icon:y(()=>[k(o(L),{path:o(X).installed},null,8,["path"])]),_:1},8,["name"]),k(o(J),{to:{name:"apps-manage",params:{category:"enabled"}},name:o(W).enabled},{icon:y(()=>[k(o(L),{path:o(X).enabled},null,8,["path"])]),_:1},8,["name"]),k(o(J),{to:{name:"apps-manage",params:{category:"disabled"}},name:o(W).disabled},{icon:y(()=>[k(o(L),{path:o(X).disabled},null,8,["path"])]),_:1},8,["name"]),o(s).updateCount>0?(u(),D(o(J),{key:1,to:{name:"apps-manage",params:{category:"updates"}},name:o(W).updates},{counter:y(()=>[k(o(Ta),{count:o(s).updateCount},null,8,["count"])]),icon:y(()=>[k(o(L),{path:o(X).updates},null,8,["path"])]),_:1},8,["name"])):I("",!0),k(o(J),{to:{name:"apps-bundles"},name:o(W).bundles},{icon:y(()=>[k(o(L),{path:o(X).bundles},null,8,["path"])]),_:1},8,["name"]),k(o(pn)),o(t)&&l.value?(u(),x("li",{key:2,class:w(b.$style.appstoreNavigation__categories_loading)},[k(o(Ie),{size:20,name:o(c)("appstore","Loading categories")},null,8,["name"])],2)):o(t)&&!l.value?(u(),x(M,{key:3},[d.value?(u(),D(o(J),{key:0,id:"app-category-supported",to:{name:"apps-category",params:{category:"supported"},query:o(a).getQuery(!0)},name:o(W).supported},{icon:y(()=>[k(o(L),{path:o(X).supported},null,8,["path"])]),_:1},8,["to","name"])):I("",!0),k(o(J),{id:"app-category-featured",to:{name:"apps-category",params:{category:"featured"},query:o(a).getQuery(!0)},name:o(W).featured},{icon:y(()=>[k(o(L),{path:o(X).featured},null,8,["path"])]),_:1},8,["to","name"]),(u(!0),x(M,null,Z(r.value,R=>(u(),D(o(J),{id:`app-category-${R.id}`,key:R.id,name:R.displayName,to:{name:"apps-category",params:{category:R.id},query:o(a).getQuery(!0)}},{icon:y(()=>[k(o(L),{path:R.icon},null,8,["path"])]),_:2},1032,["id","name","to"]))),128))],64)):I("",!0)]),_:1},8,["aria-label"]))}}),En="_appstoreNavigation__categories_loading_1fsn2_2",Bn={appstoreNavigation__categories_loading:En},Pn={$style:Bn},Nn=q(Ln,[["__cssModules",Pn]]),qn=B({__name:"AppActions",props:{app:{},actions:{},maxInlineActions:{default:1},iconOnly:{type:Boolean}},setup(e){const t=$(()=>e.actions.length<=e.maxInlineActions?e.actions:e.actions.filter(s=>s.inline!==!1).slice(0,e.maxInlineActions)),n=$(()=>e.actions.filter(s=>!t.value.includes(s)));return(s,a)=>(u(),x("div",{class:w(s.$style.appActions)},[(u(!0),x(M,null,Z(t.value,r=>(u(),D(o(ie),{key:r.id,ariaLabel:e.iconOnly?r.label(e.app):void 0,title:e.iconOnly?r.label(e.app):void 0,variant:r.variant,href:"href"in r?r.href(e.app):void 0,to:"to"in r?r.to(e.app):void 0,target:"href"in r?"_blank":void 0,onClick:l=>"callback"in r&&r.callback(e.app)},Me({icon:y(()=>[k(o(L),{path:r.icon},null,8,["path"])]),_:2},[e.iconOnly?void 0:{name:"default",fn:y(()=>[N(v(r.label(e.app)),1)]),key:"0"}]),1032,["ariaLabel","title","variant","href","to","target","onClick"]))),128)),k(o(ya),{forceMenu:""},{default:y(()=>[(u(!0),x(M,null,Z(n.value,r=>(u(),x(M,null,["callback"in r?(u(),D(o(ca),{key:"callback-"+r.id,closeAfterClick:"",variant:r.variant,onClick:l=>r.callback(e.app)},{icon:y(()=>[k(o(L),{path:r.icon},null,8,["path"])]),default:y(()=>[N(" "+v(r.label(e.app)),1)]),_:2},1032,["variant","onClick"])):"href"in r?(u(),D(o(ma),{key:"link-"+r.id,closeAfterClick:"",variant:r.variant,href:r.href(e.app)},{icon:y(()=>[k(o(L),{path:r.icon},null,8,["path"])]),default:y(()=>[N(" "+v(r.label(e.app)),1)]),_:2},1032,["variant","href"])):(u(),D(o(fa),{key:"route-"+r.id,closeAfterClick:"",variant:r.variant,to:r.to(e.app)},{icon:y(()=>[k(o(L),{path:r.icon},null,8,["path"])]),default:y(()=>[N(" "+v(r.label(e.app)),1)]),_:2},1032,["variant","to"]))],64))),256))]),_:1})],2))}}),Mn="_appActions_lrf6h_2",On={appActions:Mn},Gn={$style:On},Ct=q(qn,[["__cssModules",Gn]]),Un=B({__name:"AppDeployDaemonTab",props:{app:{}},setup(e){const t=E(e.app?.daemon?.deploy_config?.computeDevice?.id!=="cpu"||!1);return(n,s)=>e.app?.daemon?(u(),D(o(Ce),{key:0,id:"daemon",name:o(c)("appstore","Daemon"),order:5},{icon:y(()=>[k(o(L),{path:o(vt),size:24},null,8,["path"])]),default:y(()=>[_("div",{class:w(n.$style.appDeployDaemonTab)},[_("h4",null,v(o(c)("appstore","Deploy Daemon")),1),_("p",null,[_("b",null,v(o(c)("appstore","Type")),1),N(": "+v(e.app?.daemon.accepts_deploy_id),1)]),_("p",null,[_("b",null,v(o(c)("appstore","Name")),1),N(": "+v(e.app?.daemon.name),1)]),_("p",null,[_("b",null,v(o(c)("appstore","Display Name")),1),N(": "+v(e.app?.daemon.display_name),1)]),_("p",null,[_("b",null,v(o(c)("appstore","GPUs support")),1),N(": "+v(t.value),1)]),_("p",null,[_("b",null,v(o(c)("appstore","Compute device")),1),N(": "+v(e.app?.daemon?.deploy_config?.computeDevice?.label),1)])],2)]),_:1},8,["name"])):I("",!0)}}),Zn="_appDeployDaemonTab_1xkhp_2",jn={appDeployDaemonTab:Zn},Hn={$style:jn},Qn=q(Un,[["__cssModules",Hn]]);function Ve(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var le=Ve();function lt(e){le=e}var ne={exec:()=>null};function z(e,t=""){let n=typeof e=="string"?e:e.source,s={replace:(a,r)=>{let l=typeof r=="string"?r:r.source;return l=l.replace(G.caret,"$1"),n=n.replace(a,l),s},getRegex:()=>new RegExp(n,t)};return s}var Vn=(()=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}>`)},Fn=/^(?:[ \t]*(?:\n|$))+/,Wn=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Xn=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,$e=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Yn=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Fe=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Lt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Et=z(Lt).replace(/bull/g,Fe).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Jn=z(Lt).replace(/bull/g,Fe).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),We=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Kn=/^[^\n]+/,Xe=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,es=z(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Xe).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ts=z(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Fe).getRegex(),Le="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ye=/|$))/,as=z("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ye).replace("tag",Le).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Bt=z(We).replace("hr",$e).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Le).getRegex(),ns=z(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Bt).getRegex(),Je={blockquote:ns,code:Wn,def:es,fences:Xn,heading:Yn,hr:$e,html:as,lheading:Et,list:ts,newline:Fn,paragraph:Bt,table:ne,text:Kn},rt=z("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",$e).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Le).getRegex(),ss={...Je,lheading:Jn,table:rt,paragraph:z(We).replace("hr",$e).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",rt).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Le).getRegex()},ls={...Je,html:z(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ye).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ne,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:z(We).replace("hr",$e).replace("heading",` *#{1,6} *[^ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/AppstoreDiscover-DDOLgo3I.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/index-mH69OG7L.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/pinia-BsumPXOW.chunk.mjs'),window.OC.filePath('', '', 'dist/NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcContent-BYh5hWDN-CKeEKmjj.chunk.css'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-Fnpm9Yo9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrayArrowDown-BEbvWlY3.chunk.css'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-CSlQTlWs.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcBreadcrumbs-B4eyDS9i-BknLVeOm.chunk.css'),window.OC.filePath('', '', 'dist/common-NcTextArea-Dxzj4zdb-CY5ND5WA.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/Plus-Cvoorj3T.chunk.mjs'),window.OC.filePath('', '', 'dist/common-Plus-Som-mR4B.chunk.css'),window.OC.filePath('', '', 'dist/index-BRPJrOcF.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/index-Cdqy7gO-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BnF98eos.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs'),window.OC.filePath('', '', 'dist/emoji-C8k9NUlo-BQiX-d8c.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmojiPicker-UTxgju3f-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/index-D9CqvIri.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBuXQ7OS.chunk.css'),window.OC.filePath('', '', 'dist/index-DueKLP2f.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BBhtJjWD.chunk.css'),window.OC.filePath('', '', 'dist/NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs'),window.OC.filePath('', '', 'dist/ContentCopy-B9XOXCFO.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ContentCopy-D7mIRwIy.chunk.css'),window.OC.filePath('', '', 'dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserBubble-BXR7vT0V-f2DD9EAL.chunk.css'),window.OC.filePath('', '', 'dist/modulepreload-polyfill-BxzAKjcf.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgrtITOq.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-AppstoreDiscover-D5SWaP1O.chunk.css'),window.OC.filePath('', '', 'dist/common-NcActionSeparator-Ct2RnclR-pXJ_-D_I.chunk.css'),window.OC.filePath('', '', 'dist/common-NcGuestContent-CM0uWLr1-BezK2wMx.chunk.css'),window.OC.filePath('', '', 'dist/UpdateAllDialog-BqC8T943.chunk.mjs'),window.OC.filePath('', '', 'dist/common-UpdateAllDialog-CZVJ1CV6.chunk.css'),window.OC.filePath('', '', 'dist/AppstoreBrowse-DsTlcR8_.chunk.mjs'),window.OC.filePath('', '', 'dist/appstore-AppstoreBrowse-BmXPxQ1G.chunk.css')])))=>i.map(i=>d[i]); +import{d as ke,c as Ft}from"./pinia-BsumPXOW.chunk.mjs";import{b as B,o as u,f as x,g as _,t as v,i as Wt,y as w,c as D,u as o,L as Xt,w as y,j as N,v as $,F as M,B as Z,k,l as E,a9 as dt,p as ht,z as re,h as I,q as Me,a8 as fe,R as Yt,a as Jt,_ as oe,E as Kt,S as ea,r as ta,e as aa}from"./Web-DYqXJUev.chunk.mjs";import{t as c,p as na,g as sa}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as ie,v as Oe,u as _e,H as la,I as ra}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as ia,a as oa}from"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{c as Ge,f as gt,g as pa,b as K}from"./index-Cp0kcsps.chunk.mjs";import{_ as q,l as ee}from"./public-C1mLBHT3.chunk.mjs";import{N as ca}from"./PencilOutline-DhyEf5vr.chunk.mjs";import{_ as mt,N as L}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{c as ua,d as J,e as da,f as ha,N as ga}from"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import{P as ft}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import{N as ma,a as fa,_ as ba}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{W as ka,w as _a,b as ya,m as wa,u as va}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{N as Ie}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as xa}from"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import{N as $a,a as Ta}from"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import{N as bt,s as kt}from"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import{N as Ue}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{L as Aa,M as Sa,O as Ra,P as Da,Q as za,R as Ia,S as Ca,T as La,U as Ea,V as Ba,W as Pa,w as Na,X as qa,D as Se,Y as Ma,Z as Oa,_ as Ze,y as je,$ as _t,a0 as Ga,a1 as yt,q as wt,a2 as Ua,a3 as Za,a4 as ja,a5 as vt,a6 as Ha,a7 as Qa,a8 as xt,N as at,a9 as Va,aa as Fa,ab as Wa,ac as Xa,ad as Ya,K as Ja,ae as Ka,l as en,J as tn,af as an,v as nn,ag as sn}from"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import{c as O}from"./index-CkGt55pS.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import{a as be}from"./index-mH69OG7L.chunk.mjs";import{a as ln,P as ye,c as He}from"./index-BgrtITOq.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const rn={class:"app-navigation-spacer"},on=B({__name:"NcAppNavigationSpacer",setup(e){return(t,n)=>(u(),x("li",rn))}}),pn=mt(on,[["__scopeId","data-v-277fa710"]]),cn={name:"NcAppSidebarTab",inject:["registerTab","unregisterTab","getActiveTab","isTablistShown"],props:{id:{type:String,required:!0},name:{type:String,required:!0},icon:{type:String,default:""},order:{type:Number,default:0}},emits:["bottomReached","scroll"],expose:["id","name","icon","order","renderIcon"],computed:{isActive(){return this.getActiveTab()===this.id}},created(){this.registerTab(this)},beforeUnmount(){this.unregisterTab(this.id)},methods:{onScroll(e){this.$el.scrollHeight-this.$el.scrollTop===this.$el.clientHeight&&this.$emit("bottomReached",e),this.$emit("scroll",e)},renderIcon(){return this.$slots.icon?.()}}},un=["id","aria-hidden","aria-label","aria-labelledby","role","tabindex"],dn={class:"hidden-visually"};function hn(e,t,n,s,a,r){return u(),x("section",{id:`tab-${n.id}`,"aria-hidden":!r.isActive,"aria-label":r.isTablistShown()?void 0:n.name,"aria-labelledby":r.isTablistShown()?`tab-button-${n.id}`:void 0,class:w(["app-sidebar__tab",{"app-sidebar__tab--active":r.isActive}]),role:r.isTablistShown()?"tabpanel":void 0,tabindex:r.isTablistShown()?0:-1,onScroll:t[0]||(t[0]=(...l)=>r.onScroll&&r.onScroll(...l))},[_("h3",dn,v(n.name),1),Wt(e.$slots,"default",{},void 0,!0)],42,un)}const Ce=mt(cn,[["render",hn],["__scopeId","data-v-dba10798"]]),W=Object.freeze({discover:c("appstore","Discover"),installed:c("appstore","Your apps"),enabled:c("appstore","Active apps"),disabled:c("appstore","Disabled apps"),updates:c("appstore","Updates"),bundles:c("appstore","App bundles"),featured:c("appstore","Featured apps"),supported:c("appstore","Supported apps"),search:c("appstore","Search results")}),X=Object.freeze({discover:Za,installed:Ua,enabled:wt,disabled:yt,bundles:Ga,supported:_t,featured:je,updates:Ze,ai:Oa,auth:Ma,customization:Se,dashboard:qa,files:Na,games:Pa,integration:Ba,monitoring:Ea,multimedia:La,office:Ca,organization:Ia,search:za,security:Da,social:Ra,tools:Sa,workflow:Aa}),Ji=["post","showcase","carousel"];ln(O);const te=Ge("apps/appstore/api/v1"),se=Object.freeze({apps:`${te}/apps`,categories:`${te}/apps/categories`,enable:`${te}/apps/enable`,disable:`${te}/apps/disable`,uninstall:`${te}/apps/uninstall`,update:`${te}/apps/update`,bundleEnable:`${te}/bundles/enable`}),we=new ft({concurrency:1});async function nt(e,t=!1,n){return we.add(async()=>{await O.post(se.enable,{appId:e,groups:n,force:t||void 0},{confirmPassword:ye.Strict})})}async function gn(e){return we.add(async()=>{await O.post(se.disable,{appId:e},{confirmPassword:ye.Lax})})}async function mn(e){return we.add(async()=>{await O.post(se.update,{appId:e},{confirmPassword:ye.Strict})})}async function fn(e){return we.add(async()=>{await O.post(se.uninstall,{appId:e},{confirmPassword:ye.Strict})})}async function bn(){const{data:e}=await O.get(se.apps);return e.ocs.data}async function kn(){const{data:e}=await O.get(se.categories);for(const t of e.ocs.data)t.icon=X[t.id]??"";return e.ocs.data}async function _n(e){return we.add(async()=>{await O.post(se.bundleEnable,{bundleId:e},{confirmPassword:ye.Strict})})}async function ge(){const{data:e}=await O.get(Ge("core/navigation/apps?format=json"));e.ocs.meta.statuscode===200&&(gt("nextcloud:app-menu.refresh",{apps:e.ocs.data}),window.dispatchEvent(new Event("resize")))}function pe(e){return e.installed||e.internal?!1:e.missingDependencies===void 0||e.missingDependencies.length===0||!e.isCompatible&&e.missingDependencies.length===1}function $t(e){return e.installed&&e.removable&&!e.active}function Tt(e){return!Rt(e)&&!Dt(e)&&At(e)&&e.isCompatible}function At(e){return!e.active&&(e.installed||pe(e))}function ve(e){return!e.active&&!e.isCompatible}function St(e){return!Rt(e)&&!Dt(e)&&e.active&&!e.internal}function yn(e){return e.update!==void 0}const wn=["filesystem","prelogin","authentication","logging","prevent_group_restriction"];function Qe(e){return!e.active&&!e.installed||!e.active&&ve(e)?!1:e.types?e.types.every(t=>!wn.includes(t)):!0}function Rt(e){return e.app_api&&(e.status.action==="init"||e.status.action==="healthcheck")}function Dt(e){return e.app_api&&e.status.action==="deploy"}const H=pa().setApp("appstore").detectUser().build(),vn=B({__name:"DaemonSelectionDialogListEntry",props:{daemon:{},isDefault:{type:Boolean}},emits:["selected"],setup(e,{emit:t}){const n=e,s=t,a=$(()=>`${n.daemon.name} - ${n.daemon.display_name}`);return(r,l)=>(u(),D(o($a),{active:e.isDefault,counterNumber:e.daemon.exAppsCount,counterType:"highlighted",details:e.isDefault?o(c)("appstore","Default"):"",forceDisplayActions:"",name:a.value,onClick:l[0]||(l[0]=Xt(p=>s("selected"),["stop"]))},{subname:y(()=>[N(v(e.daemon.accepts_deploy_id),1)]),_:1},8,["active","counterNumber","details","name"]))}}),xn=["aria-label"],$n=B({__name:"DaemonSelectionDialogList",emits:["selected"],setup(e){const t=xe();return(n,s)=>(u(),x("ul",{class:w(n.$style.DaemonSelectionDialogList),"aria-label":o(c)("appstore","Registered Deploy daemons list")},[(u(!0),x(M,null,Z(o(t).dockerDaemons,a=>(u(),D(vn,{key:a.id,daemon:a,isDefault:o(t).defaultDaemon?.name===a.name,onSelected:r=>n.$emit("selected",a)},null,8,["daemon","isDefault","onSelected"]))),128))],10,xn))}}),Tn="_DaemonSelectionDialogList_x38pt_2",An={DaemonSelectionDialogList:Tn},Sn={$style:An},Rn=q($n,[["__cssModules",Sn]]),Dn=B({__name:"DaemonSelectionDialog",props:{app:{}},emits:["close"],setup(e){const t=xe(),n=K("/settings/admin/app_api");return(s,a)=>(u(),D(o(bt),{name:o(c)("appstore","Choose Deploy Daemon for {appName}",{appName:e.app.name}),size:"normal","onUpdate:open":a[1]||(a[1]=r=>r||s.$emit("close"))},{default:y(()=>[o(t).dockerDaemons.length===0?(u(),D(o(Ue),{key:0,class:"daemon-selection-list__empty-content",name:o(c)("appstore","No Deploy daemons configured"),description:o(c)("appstore","Register a custom one or setup from available templates")},{icon:y(()=>[k(o(L),{path:o(ja)},null,8,["path"])]),action:y(()=>[k(o(ie),{href:o(n)},{default:y(()=>[N(v(o(c)("appstore","Manage Deploy daemons")),1)]),_:1},8,["href"])]),_:1},8,["name","description"])):(u(),D(Rn,{key:1,app:e.app,onSelected:a[0]||(a[0]=r=>s.$emit("close",r))},null,8,["app"]))]),_:1},8,["name"]))}});async function zn(){const{data:e}=await O.get(K("/apps/app_api/apps/list"));return e.apps}async function In(e){const{data:t}=await O.get(K(`/apps/app_api/apps/status/${e}`));return t}async function Be(e,t,n){await He(),await O.post(K(`/apps/app_api/apps/enable/${e.id}/${t.name}`),{deployOptions:n})}async function Cn(e){await He(),await O.post(K("/apps/app_api/apps/force"),{appId:e})}async function st(e){await He(),await O.get(K(`apps/app_api/apps/disable/${e}`))}const xe=ke("external-apps",()=>{const e=ee("appstore","appApiEnabled",!1),t=E([]),n=E(ee("appstore","appstoreExAppUpdateCount",0));let s=null;const a=E(ee("appstore","defaultDaemonConfigAccessible",!1)),r=E(ee("appstore","defaultDaemonConfig",null)),l=E([]),p=$(()=>t.value.filter(m=>m?.status?.action&&m.status.type!==""&&(m?.status?.action==="deploy"||m.status.action==="init"||m.status.action==="healthcheck")));function i(m){return t.value.find(({id:f})=>f===m)??null}async function g(m){const f=i(m);if(!f)throw new Error(`App with id ${m} not found`);f.loading=!0;try{if(l.value.length===1&&f.needsDownload)Be(f,l[0]),f.daemon=l[0];else if(f.needsDownload){const U=await kt(Dn,{app:f});if(!U)throw new Error("No daemon selected");await Be(f,U),f.daemon=U}else await Be(f,f.daemon);f.installed||(f.needsDownload=!1,f.status={type:"install",action:"deploy",init:0,deploy:0}),f.removable=!0,delete f.error,await T(m)}finally{f.loading=!1}}async function h(m){const f=i(m);if(!f)throw new Error(`App with id ${m} not found`);f.loading=!0;try{await Cn(m),await R(!0),f.active=!1}finally{f.loading=!1}}async function d(m){const f=i(m);if(!f)throw new Error(`App with id ${m} not found`);f.loading=!0;try{await st(m),f.active=!1}finally{f.loading=!1}}async function b(m){const f=i(m);if(!f)throw new Error(`App with id ${m} not found`);f.loading=!0;try{await st(m),f.active=!1,f.needsDownload=!0,f.installed=!1,f.daemon=null,f.status={},f.update!==null&&n.value--,delete f.update,delete f.error}finally{f.loading=!1}}async function S(m){const f=i(m);if(!f)throw new Error(`App with id ${m} not found`);f.loading=!0;try{await O.get(K(`/apps/app_api/apps/update/${m}`)),f.version=f.update||f.version,f.status={type:"update",action:"deploy",init:0,deploy:0},delete f.update,delete f.error,n.value--,await T(m)}catch(U){H.error("Failed to update ex app",{appId:m,error:U}),be(c("appstore","Could not update the app. Please try again later."))}finally{f.loading=!1}}async function R(m=!1){(m||!r.value||!l.value.length)&&await P(),(m||t.value.length===0)&&await Y()}return{isEnabled:e,apps:t,updateCount:n,defaultDaemon:r,dockerDaemons:l,daemonAccessible:a,getById:i,disableApp:d,enableApp:g,forceEnableApp:h,updateApp:S,uninstallApp:b,initialize:R};async function P(){try{const{data:m}=await O.get(K("/apps/app_api/daemons"));r.value=m.daemons.find(f=>f.name===m.default_daemon_config),l.value=m.daemons.filter(f=>f.accepts_deploy_id==="docker-install")}catch(m){return H.error("[app-api-store] Failed to fetch Docker daemons",{error:m}),!1}return!0}async function Y(){try{t.value=await zn()}catch(m){H.error("An error occurred while fetching apps",{error:m}),be(c("appstore","An error occurred during the request. Unable to proceed."))}}async function T(m){const f=i(m);if(!f){H.error("[app-api-store] app not found while fetching status",{appId:m});return}f.loading=!0;try{const U=await In(m);f.status=U,H.debug("[app-api-store] initializingOrDeployingApps after setAppStatus",{initializingOrDeployingApps:p}),p.value.length===0&&(H.debug("[app-api-store] Clearing interval"),clearInterval(s),s=null),f.status.error&&p.value.length===1&&(clearInterval(s),s=null)}catch(U){throw A(),U}finally{f.loading=!1}}function A(){clearInterval(s),p.value.length!==0&&(s=window.setInterval(()=>{H.debug("[app-api-store] initializingOrDeployingApps",{initializingOrDeployingApps:p});for(const m of p.value)T(m.id)},2e3))}}),j=ke("apps",()=>{const e=xe(),t=E([]),n=E([]),s=dt(ee("appstore","appstoreBundles")),a=E(!1),r=E(!1),l=$(()=>[...t.value,...e.isEnabled?e.apps:[]]);function p(T){return n.value.find(({id:A})=>A===T)??null}function i(T){return l.value.find(({id:A})=>A===T)??null}function g(T){return l.value.filter(A=>[A.category].flat().includes(T))}async function h(T,A=!1){const m=i(T);if(!m)throw new Error(`App with id ${T} not found`);if(m.active||!m.installed&&!pe(m))throw new Error(`App with id ${T} cannot be enabled`);if(!A&&ve(m))throw new Error(`App with id ${T} requires force enable`);m.loading=!0;try{m.app_api?await e.enableApp(T):await nt(T,A),A&&(m.isCompatible=!0),m.active=!0,m.installed=!0,m.removable=!0,await ge()}finally{m.loading=!1}}async function d(T){const A=i(T);if(!A)throw new Error(`App with id ${T} not found`);if(!St(A))throw new Error(`App with id ${T} cannot be disabled`);A.loading=!0;try{A.app_api?await e.disableApp(T):await gn(T),A.active=!1,A.isCompatible=A.missingDependencies===void 0||A.missingDependencies.length===0,await ge()}finally{A.loading=!1}}async function b(T){const A=i(T);if(!A)throw new Error(`App with id ${T} not found`);if(!$t(A))throw new Error(`App with id ${T} cannot be uninstalled`);A.loading=!0;try{A.app_api?await e.uninstallApp(T):await fn(T),A.active=!1,A.installed=!1,await ge()}finally{A.loading=!1}}async function S(T,A){const m=i(T);if(!m)throw new Error(`App with id ${T} not found`);if(!Qe(m))throw new Error(`App with id ${T} cannot be limited to groups`);if(!m.app_api)try{m.loading=!0,await nt(T,!1,A),m.groups=A}finally{m.loading=!1}}async function R(T){const A=s.find(m=>m.id===T);if(!A)throw new Error(`Bundle with id ${T} not found`);try{for(const m of A.appIdentifiers){const f=i(m);f.loading=!0}await _n(A.id);for(const m of A.appIdentifiers){const f=i(m);f.active=!0,f.installed=!0,f.removable=!0,await ge()}}finally{for(const m of A.appIdentifiers){const f=i(m);f.loading=!1}}}async function P(){try{r.value=!0,n.value=await kn()}catch(T){H.error("Failed to load app categories",{error:T}),be(c("appstore","Could not load app categories. Please try again later."))}finally{r.value=!1}}async function Y(){try{a.value=!0,t.value=await bn()}catch(T){H.error("Failed to load apps list",{error:T}),be(c("appstore","Could not load apps list. Please try again later."))}finally{a.value=!1}}return Y(),P(),{apps:l,bundles:s,categories:n,isLoadingApps:a,isLoadingCategories:r,disableApp:d,enableApp:h,uninstallApp:b,enableBundle:R,getAppById:i,getAppsByCategory:g,getCategoryById:p,limitAppToGroups:S}}),zt=ke("updates",()=>{const e=xe(),t=E(ee("appstore","appstoreUpdateCount",0)),n=$(()=>t.value+e.updateCount);async function s(a){const r=j().getAppById(a);if(!r)throw new Error(`App with id ${a} not found`);try{"app_api"in r&&r.app_api?await e.updateApp(a):(await mn(a),t.value=Math.max(t.value-1,0)),r.update=void 0,ge()}catch(l){H.error("Failed to update app",{appId:a,error:l}),be(c("appstore","Could not update the app. Please try again later."))}}return{updateCount:n,updateApp:s}}),It=ke("userSettings",()=>{const e=E(""),t=E(!1),n=E(!0),s=$(()=>e.value==="m"?"468px":e.value==="l"?"512px":"320px");function a(l){return{...(_e()??{}).query,grid:l??t.value?e.value||null:void 0,compatible:n.value?void 0:null}}return Oe().afterEach(l=>{r(l.query)}),{defaultGridSize:e,gridSizePx:s,isGridView:t,showIncompatible:n,getQuery:a};function r(l){t.value="grid"in l,e.value=[l.grid??""].flat()[0].toLowerCase(),n.value=!("compatible"in l)}}),Ln=B({__name:"AppstoreNavigation",setup(e){const t=ee("settings","appstoreEnabled",!0),n=j(),s=zt(),a=It(),r=$(()=>n.categories),l=$(()=>n.isLoadingCategories),p=_e(),i=Oe(),g=ht("search");ka("f",()=>{g.value?.$refs.inputElement||(gt("toggle-navigation",{open:!0}),window.setTimeout(()=>g.value?.$refs.inputElement?.focus(),400)),g.value?.$refs.inputElement?.focus()},{ctrl:!0,stop:!0,prevent:!0});const h=E("");re(()=>p.query.q,b=>{h.value=[b||""].flat()[0]},{immediate:!0}),_a(h,(b,S)=>{if(b.trim()!==S.trim()){if(i.currentRoute.value.name==="apps-discover"||i.currentRoute.value.name==="apps-manage"&&p.params.category==="bundles"){i.push({name:"apps-search",query:{...p.query,q:b.trim()||void 0}});return}i.replace({...p,query:{...p.query,q:b.trim()||void 0}})}},{debounce:500});const d=$(()=>n.apps.find(({level:b})=>b===300)!==void 0);return(b,S)=>(u(),D(o(ua),{"aria-label":o(c)("appstore","Appstore categories")},{search:y(()=>[k(o(da),{ref_key:"search",ref:h,modelValue:h.value,"onUpdate:modelValue":S[0]||(S[0]=R=>h.value=R),label:o(c)("appstore","Search apps…")},null,8,["modelValue","label"])]),list:y(()=>[o(t)?(u(),D(o(J),{key:0,to:{name:"apps-discover"},name:o(W).discover},{icon:y(()=>[k(o(L),{path:o(X).discover},null,8,["path"])]),_:1},8,["name"])):I("",!0),k(o(J),{to:{name:"apps-manage",params:{category:"installed"}},name:o(W).installed},{icon:y(()=>[k(o(L),{path:o(X).installed},null,8,["path"])]),_:1},8,["name"]),k(o(J),{to:{name:"apps-manage",params:{category:"enabled"}},name:o(W).enabled},{icon:y(()=>[k(o(L),{path:o(X).enabled},null,8,["path"])]),_:1},8,["name"]),k(o(J),{to:{name:"apps-manage",params:{category:"disabled"}},name:o(W).disabled},{icon:y(()=>[k(o(L),{path:o(X).disabled},null,8,["path"])]),_:1},8,["name"]),o(s).updateCount>0?(u(),D(o(J),{key:1,to:{name:"apps-manage",params:{category:"updates"}},name:o(W).updates},{counter:y(()=>[k(o(Ta),{count:o(s).updateCount},null,8,["count"])]),icon:y(()=>[k(o(L),{path:o(X).updates},null,8,["path"])]),_:1},8,["name"])):I("",!0),k(o(J),{to:{name:"apps-bundles"},name:o(W).bundles},{icon:y(()=>[k(o(L),{path:o(X).bundles},null,8,["path"])]),_:1},8,["name"]),k(o(pn)),o(t)&&l.value?(u(),x("li",{key:2,class:w(b.$style.appstoreNavigation__categories_loading)},[k(o(Ie),{size:20,name:o(c)("appstore","Loading categories")},null,8,["name"])],2)):o(t)&&!l.value?(u(),x(M,{key:3},[d.value?(u(),D(o(J),{key:0,id:"app-category-supported",to:{name:"apps-category",params:{category:"supported"},query:o(a).getQuery(!0)},name:o(W).supported},{icon:y(()=>[k(o(L),{path:o(X).supported},null,8,["path"])]),_:1},8,["to","name"])):I("",!0),k(o(J),{id:"app-category-featured",to:{name:"apps-category",params:{category:"featured"},query:o(a).getQuery(!0)},name:o(W).featured},{icon:y(()=>[k(o(L),{path:o(X).featured},null,8,["path"])]),_:1},8,["to","name"]),(u(!0),x(M,null,Z(r.value,R=>(u(),D(o(J),{id:`app-category-${R.id}`,key:R.id,name:R.displayName,to:{name:"apps-category",params:{category:R.id},query:o(a).getQuery(!0)}},{icon:y(()=>[k(o(L),{path:R.icon},null,8,["path"])]),_:2},1032,["id","name","to"]))),128))],64)):I("",!0)]),_:1},8,["aria-label"]))}}),En="_appstoreNavigation__categories_loading_1fsn2_2",Bn={appstoreNavigation__categories_loading:En},Pn={$style:Bn},Nn=q(Ln,[["__cssModules",Pn]]),qn=B({__name:"AppActions",props:{app:{},actions:{},maxInlineActions:{default:1},iconOnly:{type:Boolean}},setup(e){const t=$(()=>e.actions.length<=e.maxInlineActions?e.actions:e.actions.filter(s=>s.inline!==!1).slice(0,e.maxInlineActions)),n=$(()=>e.actions.filter(s=>!t.value.includes(s)));return(s,a)=>(u(),x("div",{class:w(s.$style.appActions)},[(u(!0),x(M,null,Z(t.value,r=>(u(),D(o(ie),{key:r.id,ariaLabel:e.iconOnly?r.label(e.app):void 0,title:e.iconOnly?r.label(e.app):void 0,variant:r.variant,href:"href"in r?r.href(e.app):void 0,to:"to"in r?r.to(e.app):void 0,target:"href"in r?"_blank":void 0,onClick:l=>"callback"in r&&r.callback(e.app)},Me({icon:y(()=>[k(o(L),{path:r.icon},null,8,["path"])]),_:2},[e.iconOnly?void 0:{name:"default",fn:y(()=>[N(v(r.label(e.app)),1)]),key:"0"}]),1032,["ariaLabel","title","variant","href","to","target","onClick"]))),128)),k(o(ya),{forceMenu:""},{default:y(()=>[(u(!0),x(M,null,Z(n.value,r=>(u(),x(M,null,["callback"in r?(u(),D(o(ca),{key:"callback-"+r.id,closeAfterClick:"",variant:r.variant,onClick:l=>r.callback(e.app)},{icon:y(()=>[k(o(L),{path:r.icon},null,8,["path"])]),default:y(()=>[N(" "+v(r.label(e.app)),1)]),_:2},1032,["variant","onClick"])):"href"in r?(u(),D(o(ma),{key:"link-"+r.id,closeAfterClick:"",variant:r.variant,href:r.href(e.app)},{icon:y(()=>[k(o(L),{path:r.icon},null,8,["path"])]),default:y(()=>[N(" "+v(r.label(e.app)),1)]),_:2},1032,["variant","href"])):(u(),D(o(fa),{key:"route-"+r.id,closeAfterClick:"",variant:r.variant,to:r.to(e.app)},{icon:y(()=>[k(o(L),{path:r.icon},null,8,["path"])]),default:y(()=>[N(" "+v(r.label(e.app)),1)]),_:2},1032,["variant","to"]))],64))),256))]),_:1})],2))}}),Mn="_appActions_lrf6h_2",On={appActions:Mn},Gn={$style:On},Ct=q(qn,[["__cssModules",Gn]]),Un=B({__name:"AppDeployDaemonTab",props:{app:{}},setup(e){const t=E(e.app?.daemon?.deploy_config?.computeDevice?.id!=="cpu"||!1);return(n,s)=>e.app?.daemon?(u(),D(o(Ce),{key:0,id:"daemon",name:o(c)("appstore","Daemon"),order:5},{icon:y(()=>[k(o(L),{path:o(vt),size:24},null,8,["path"])]),default:y(()=>[_("div",{class:w(n.$style.appDeployDaemonTab)},[_("h4",null,v(o(c)("appstore","Deploy Daemon")),1),_("p",null,[_("b",null,v(o(c)("appstore","Type")),1),N(": "+v(e.app?.daemon.accepts_deploy_id),1)]),_("p",null,[_("b",null,v(o(c)("appstore","Name")),1),N(": "+v(e.app?.daemon.name),1)]),_("p",null,[_("b",null,v(o(c)("appstore","Display Name")),1),N(": "+v(e.app?.daemon.display_name),1)]),_("p",null,[_("b",null,v(o(c)("appstore","GPUs support")),1),N(": "+v(t.value),1)]),_("p",null,[_("b",null,v(o(c)("appstore","Compute device")),1),N(": "+v(e.app?.daemon?.deploy_config?.computeDevice?.label),1)])],2)]),_:1},8,["name"])):I("",!0)}}),Zn="_appDeployDaemonTab_1xkhp_2",jn={appDeployDaemonTab:Zn},Hn={$style:jn},Qn=q(Un,[["__cssModules",Hn]]);function Ve(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var le=Ve();function lt(e){le=e}var ne={exec:()=>null};function z(e,t=""){let n=typeof e=="string"?e:e.source,s={replace:(a,r)=>{let l=typeof r=="string"?r:r.source;return l=l.replace(G.caret,"$1"),n=n.replace(a,l),s},getRegex:()=>new RegExp(n,t)};return s}var Vn=(()=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}>`)},Fn=/^(?:[ \t]*(?:\n|$))+/,Wn=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Xn=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,$e=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Yn=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Fe=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Lt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Et=z(Lt).replace(/bull/g,Fe).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Jn=z(Lt).replace(/bull/g,Fe).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),We=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Kn=/^[^\n]+/,Xe=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,es=z(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Xe).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ts=z(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Fe).getRegex(),Le="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ye=/|$))/,as=z("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ye).replace("tag",Le).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Bt=z(We).replace("hr",$e).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Le).getRegex(),ns=z(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Bt).getRegex(),Je={blockquote:ns,code:Wn,def:es,fences:Xn,heading:Yn,hr:$e,html:as,lheading:Et,list:ts,newline:Fn,paragraph:Bt,table:ne,text:Kn},rt=z("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",$e).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Le).getRegex(),ss={...Je,lheading:Jn,table:rt,paragraph:z(We).replace("hr",$e).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",rt).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Le).getRegex()},ls={...Je,html:z(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ye).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ne,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:z(We).replace("hr",$e).replace("heading",` *#{1,6} *[^ ]`).replace("lheading",Et).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},rs=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,is=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Pt=/^( {2,}|\\)\n(?!\s*$)/,os=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Vn?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),qt=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,hs=z(qt,"u").replace(/punct/g,ce).getRegex(),gs=z(qt,"u").replace(/punct/g,Nt).getRegex(),Mt="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",ms=z(Mt,"gu").replace(/notPunctSpace/g,Ke).replace(/punctSpace/g,Ee).replace(/punct/g,ce).getRegex(),fs=z(Mt,"gu").replace(/notPunctSpace/g,us).replace(/punctSpace/g,cs).replace(/punct/g,Nt).getRegex(),bs=z("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ke).replace(/punctSpace/g,Ee).replace(/punct/g,ce).getRegex(),ks=z(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,ce).getRegex(),_s="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",ys=z(_s,"gu").replace(/notPunctSpace/g,Ke).replace(/punctSpace/g,Ee).replace(/punct/g,ce).getRegex(),ws=z(/\\(punct)/,"gu").replace(/punct/g,ce).getRegex(),vs=z(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),xs=z(Ye).replace("(?:-->|$)","-->").getRegex(),$s=z("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",xs).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Re=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Ts=z(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Re).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Ot=z(/^!?\[(label)\]\[(ref)\]/).replace("label",Re).replace("ref",Xe).getRegex(),Gt=z(/^!?\[(ref)\](?:\[\])?/).replace("ref",Xe).getRegex(),As=z("reflink|nolink(?!\\()","g").replace("reflink",Ot).replace("nolink",Gt).getRegex(),it=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,et={_backpedal:ne,anyPunctuation:ws,autolink:vs,blockSkip:ds,br:Pt,code:is,del:ne,delLDelim:ne,delRDelim:ne,emStrongLDelim:hs,emStrongRDelimAst:ms,emStrongRDelimUnd:bs,escape:rs,link:Ts,nolink:Gt,punctuation:ps,reflink:Ot,reflinkSearch:As,tag:$s,text:os,url:ne},Ss={...et,link:z(/^!?\[(label)\]\((.*?)\)/).replace("label",Re).getRegex(),reflink:z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Re).getRegex()},Pe={...et,emStrongRDelimAst:fs,emStrongLDelim:gs,delLDelim:ks,delRDelim:ys,url:z(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",it).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:z(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},ot=e=>Ds[e];function F(e,t){if(t){if(G.escapeTest.test(e))return e.replace(G.escapeReplace,ot)}else if(G.escapeTestNoEncode.test(e))return e.replace(G.escapeReplaceNoEncode,ot);return e}function pt(e){try{e=encodeURI(e).replace(G.percentDecode,"%")}catch{return null}return e}function ct(e,t){let n=e.replace(G.findPipe,(r,l,p)=>{let i=!1,g=l;for(;--g>=0&&p[g]==="\\";)i=!i;return i?"|":" |"}),s=n.split(G.splitPipe),a=0;if(s[0].trim()||s.shift(),s.length>0&&!s.at(-1)?.trim()&&s.pop(),t)if(s.length>t)s.splice(t);else for(;s.length0?-2:-1}function Is(e,t=0){let n=t,s="";for(let a of e)if(a===" "){let r=4-n%4;s+=" ".repeat(r),n+=r}else s+=a,n++;return s}function ut(e,t,n,s,a){let r=t.href,l=t.title||null,p=e[1].replace(a.other.outputLinkReplace,"$1");s.state.inLink=!0;let i={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:r,title:l,text:p,tokens:s.inlineTokens(p)};return s.state.inLink=!1,i}function Cs(e,t,n){let s=e.match(n.other.indentCodeCompensation);if(s===null)return t;let a=s[1];return t.split(` `).map(r=>{let l=r.match(n.other.beginningSpace);if(l===null)return r;let[p]=l;return p.length>=a.length?r.slice(a.length):r}).join(` `)}var De=class{options;rules;lexer;constructor(e){this.options=e||le}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:he(n,` @@ -57,5 +57,5 @@ ${this.parser.parse(e)} ${e} `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+` `}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${F(e,!0)}`}br(e){return"
"}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let s=this.parser.parseInline(n),a=pt(e);if(a===null)return s;e=a;let r='
",r}image({href:e,title:t,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let a=pt(e);if(a===null)return F(n);e=a;let r=`${F(n)}{let l=a[r].flat(1/0);n=n.concat(this.walkTokens(l,t))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let r=t.renderers[a.name];r?t.renderers[a.name]=function(...l){let p=a.renderer.apply(this,l);return p===!1&&(p=r.apply(this,l)),p}:t.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let r=t[a.level];r?r.unshift(a.tokenizer):t[a.level]=[a.tokenizer],a.start&&(a.level==="block"?t.startBlock?t.startBlock.push(a.start):t.startBlock=[a.start]:a.level==="inline"&&(t.startInline?t.startInline.push(a.start):t.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(t.childTokens[a.name]=a.childTokens)}),s.extensions=t),n.renderer){let a=this.defaults.renderer||new ze(this.defaults);for(let r in n.renderer){if(!(r in a))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let l=r,p=n.renderer[l],i=a[l];a[l]=(...g)=>{let h=p.apply(a,g);return h===!1&&(h=i.apply(a,g)),h||""}}s.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new De(this.defaults);for(let r in n.tokenizer){if(!(r in a))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let l=r,p=n.tokenizer[l],i=a[l];a[l]=(...g)=>{let h=p.apply(a,g);return h===!1&&(h=i.apply(a,g)),h}}s.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new me;for(let r in n.hooks){if(!(r in a))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let l=r,p=n.hooks[l],i=a[l];me.passThroughHooks.has(r)?a[l]=g=>{if(this.defaults.async&&me.passThroughHooksRespectAsync.has(r))return(async()=>{let d=await p.call(a,g);return i.call(a,d)})();let h=p.call(a,g);return i.call(a,h)}:a[l]=(...g)=>{if(this.defaults.async)return(async()=>{let d=await p.apply(a,g);return d===!1&&(d=await i.apply(a,g)),d})();let h=p.apply(a,g);return h===!1&&(h=i.apply(a,g)),h}}s.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,r=n.walkTokens;s.walkTokens=function(l){let p=[];return p.push(r.call(this,l)),a&&(p=p.concat(a.call(this,l))),p}}this.defaults={...this.defaults,...s}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Q.lex(e,t??this.defaults)}parser(e,t){return V.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let s={...n},a={...this.defaults,...s},r=this.onError(!!a.silent,!!a.async);if(this.defaults.async===!0&&s.async===!1)return r(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return r(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return r(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(a.hooks&&(a.hooks.options=a,a.hooks.block=e),a.async)return(async()=>{let l=a.hooks?await a.hooks.preprocess(t):t,p=await(a.hooks?await a.hooks.provideLexer(e):e?Q.lex:Q.lexInline)(l,a),i=a.hooks?await a.hooks.processAllTokens(p):p;a.walkTokens&&await Promise.all(this.walkTokens(i,a.walkTokens));let g=await(a.hooks?await a.hooks.provideParser(e):e?V.parse:V.parseInline)(i,a);return a.hooks?await a.hooks.postprocess(g):g})().catch(r);try{a.hooks&&(t=a.hooks.preprocess(t));let l=(a.hooks?a.hooks.provideLexer(e):e?Q.lex:Q.lexInline)(t,a);a.hooks&&(l=a.hooks.processAllTokens(l)),a.walkTokens&&this.walkTokens(l,a.walkTokens);let p=(a.hooks?a.hooks.provideParser(e):e?V.parse:V.parseInline)(l,a);return a.hooks&&(p=a.hooks.postprocess(p)),p}catch(l){return r(l)}}}onError(e,t){return n=>{if(n.message+=` -Please report this to https://github.com/markedjs/marked.`,e){let s="

An error occurred:

"+F(n.message+"",!0)+"
";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}},ae=new Ls;function C(e,t){return ae.parse(e,t)}C.options=C.setOptions=function(e){return ae.setOptions(e),C.defaults=ae.defaults,lt(C.defaults),C},C.getDefaults=Ve,C.defaults=le,C.use=function(...e){return ae.use(...e),C.defaults=ae.defaults,lt(C.defaults),C},C.walkTokens=function(e,t){return ae.walkTokens(e,t)},C.parseInline=ae.parseInline,C.Parser=V,C.parser=V.parse,C.Renderer=ze,C.TextRenderer=tt,C.Lexer=Q,C.lexer=Q.lex,C.Tokenizer=De,C.Hooks=me,C.parse=C,C.options,C.setOptions,C.use,C.walkTokens,C.parseInline,V.parse,Q.lex;function Es(e,t){const n=new C.Renderer;return n.blockquote=Ns,n.link=Bs,n.image=Ps,$(()=>{const s=t?.minHeadingLevel??1;n.heading=qs(s);const a=fe(e).trim();return na.sanitize(C(a,{async:!1,renderer:n,gfm:!1,breaks:!1,pedantic:!1}),{ALLOWED_TAGS:["h1","h2","h3","h4","h5","h6","strong","p","a","ul","ol","li","em","del","blockquote"]})})}function Bs({href:e,title:t,text:n}){let s;try{s=new URL(e)}catch{return""}if(s.protocol!=="http:"&&s.protocol!=="https:")return"";let a='
",a}function Ps({title:e,text:t}){return t||(e??"")}function Ns({text:e}){return`
${e}
`}function qs(e){return({text:t,depth:n})=>(n=Math.min(6,n+(e-1)),`${t}`)}const Ms=["innerHTML"],Os=B({__name:"MarkdownPreview",props:{text:{},minHeadingLevel:{default:1}},setup(e){const t=Es(()=>e.text,{minHeadingLevel:e.minHeadingLevel});return(n,s)=>(u(),x("div",{class:"settings-markdown",innerHTML:o(t)},null,8,Ms))}}),Ut=q(Os,[["__scopeId","data-v-cf1f9874"]]),Gs=B({__name:"AppDescriptionTab",props:{app:{}},setup(e){return(t,n)=>(u(),D(o(Ce),{id:"desc",name:o(c)("appstore","Description"),order:0},{icon:y(()=>[k(o(L),{path:o(Ha)},null,8,["path"])]),default:y(()=>[_("div",{class:w(t.$style.appDescriptionTab)},[k(Ut,{text:e.app.description,minHeadingLevel:3},null,8,["text"])],2)]),_:1},8,["name"]))}}),Us="_appDescriptionTab_118mz_2",Zs={appDescriptionTab:Us},js={$style:Zs},Hs=q(Gs,[["__cssModules",js]]),Qs=["title"],Vs=B({__name:"BadgeAppDaemon",props:{daemon:{}},setup(e){return(t,n)=>e.daemon?(u(),x("span",{key:0,class:w(t.$style.appDaemonBadge),title:e.daemon.name},[k(o(L),{path:o(vt),size:20,inline:""},null,8,["path"]),N(" "+v(e.daemon.display_name),1)],10,Qs)):I("",!0)}}),Fs="_appDaemonBadge_1n34s_2",Ws={appDaemonBadge:Fs},Xs={$style:Ws},Zt=q(Vs,[["__cssModules",Xs]]),Ys=["title"],Js=B({__name:"BadgeAppLevel",props:{level:{}},setup(e){const t=e,n=$(()=>t.level===300),s=$(()=>t.level===200),a=$(()=>n.value?_t:je),r=$(()=>n.value?c("appstore","Supported"):c("appstore","Featured")),l=$(()=>n.value?c("appstore","This app is supported via your current Nextcloud subscription."):c("appstore","Featured apps are developed by and within the community. They offer central functionality and are ready for production use."));return(p,i)=>n.value||s.value?(u(),x("span",{key:0,class:w([p.$style.appLevelBadge,{[p.$style.appLevelBadge__supported]:n.value}]),title:l.value},[k(o(L),{path:a.value,size:20,inline:""},null,8,["path"]),N(" "+v(r.value),1)],10,Ys)):I("",!0)}}),Ks="_appLevelBadge_q2et3_2",el="_appLevelBadge__supported_q2et3_15",tl={appLevelBadge:Ks,appLevelBadge__supported:el},al={$style:tl},jt=q(Js,[["__cssModules",al]]),nl=["aria-label","title"],sl=B({__name:"BadgeAppScore",props:{app:{}},setup(e){const t=$(()=>!e.app.shipped&&e.app.ratingNumOverall&&e.app.ratingNumOverall>5),n=$(()=>e.app.ratingOverall??4),s=$(()=>{const p=(n.value*5).toFixed(1);return c("appstore","Community rating: {score}/5",{score:p})}),a=$(()=>Math.floor(n.value*5+.25)),r=$(()=>Math.min(Math.floor((1-n.value)*5+.25),5-a.value)),l=$(()=>a.value+r.value<5);return(p,i)=>t.value?(u(),x("span",{key:0,role:"img","aria-label":s.value,title:s.value,class:w(p.$style.badgeAppScore)},[(u(!0),x(M,null,Z(a.value,g=>(u(),D(o(L),{key:`full-star-${g}`,path:o(je),inline:""},null,8,["path"]))),128)),l.value?(u(),D(o(L),{key:0,path:o(Qa),inline:""},null,8,["path"])):I("",!0),(u(!0),x(M,null,Z(r.value,g=>(u(),D(o(L),{key:`empty-star-${g}`,path:o(xt),inline:""},null,8,["path"]))),128))],10,nl)):I("",!0)}}),ll="_badgeAppScore_1t97c_2",rl={badgeAppScore:ll},il={$style:rl},ol=q(sl,[["__cssModules",il]]),pl=new ft({concurrency:3}),Ht=ke("groups",()=>{const e=E(new Map);async function t(r){return await pl.add(()=>a(r))}async function n(r){const l=Ge("/cloud/groups/details");try{const{data:p}=await O.get(l,{params:{search:r.trim(),limit:10}});for(const i of p.ocs.data.groups)e.value.has(i.id)||e.value.set(i.id,{id:i.id,displayName:i.displayname,isNoUser:!0})}catch(p){H.error("Failed to search groups",{error:p})}}function s(r){return e.value.get(r)}return{groups:$(()=>Array.from(e.value.values())),searchGroups:n,getGroupById:s,fetchGroupById:t};async function a(r){return e.value.has(r)||await n(r),e.value.get(r)}});function Qt(e){const t=Ht(),n=E([]);return re(()=>fe(e).groups,async()=>{const s=fe(e).groups;if(s===void 0){n.value=[];return}const a=s.map(l=>t.fetchGroupById(l)),r=await Promise.all(a);n.value=r.filter(Boolean)},{immediate:!0}),dt(n)}const cl={class:"app-details"},ul=["aria-label"],dl=["id"],hl=["aria-labelledby"],gl=["title"],ml=["aria-label"],fl=["href"],bl=B({__name:"AppDetailsTab",props:{app:{}},setup(e){const t=j(),n=Yt(),s=$(()=>e.app.releases?.map(d=>d.lastModified).map(d=>Date.parse(d)).sort().at(-1)),a=$(()=>e.app?[e.app.author].flat().map(h).sort((d,b)=>d.split(" ").at(-1).localeCompare(b.split(" ").at(-1))).join(", "):""),r=$(()=>`https://apps.nextcloud.com/apps/${e.app.id}`),l=Qt(()=>e.app),p=$(()=>{const d=[];return e.app.internal||d.push({id:"appstore",href:r.value,label:c("appstore","View in store")}),e.app.website&&d.push({id:"website",href:e.app.website,label:c("appstore","Visit website")}),e.app.documentation&&(e.app.documentation.user&&d.push({id:"doc-user",href:e.app.documentation.user,label:c("appstore","Usage documentation")}),e.app.documentation.admin&&d.push({id:"doc-admin",href:e.app.documentation.admin,label:c("appstore","Admin documentation")}),e.app.documentation.developer&&d.push({id:"doc-developer",href:e.app.documentation.developer,label:c("appstore","Developer documentation")})),d}),i=$(()=>[e.app.category].flat().map(d=>t.getCategoryById(d)?.displayName??d).join(", ")),g=$(()=>e.app.active&&!Qe(e.app));function h(d){return d["@value"]?d["@value"]:d}return(d,b)=>(u(),D(o(Ce),{id:"details",name:o(c)("appstore","Details"),order:1},{icon:y(()=>[k(o(L),{path:o(Va)},null,8,["path"])]),default:y(()=>[_("div",cl,[_("div",{class:w(d.$style.appstoreDetailsTab__badges)},[k(jt,{level:e.app.level},null,8,["level"]),e.app.app_api&&e.app.daemon?(u(),D(Zt,{key:0,daemon:e.app.daemon},null,8,["daemon"])):I("",!0),k(ol,{app:e.app},null,8,["app"])],2),!e.app.isCompatible&&e.app.missingDependencies&&e.app.missingDependencies.length?(u(),D(o(at),{key:0,type:"error"},{default:y(()=>[N(v(o(c)("appstore","This app cannot be installed because the following dependencies are not fulfilled:"))+" ",1),_("ul",{"aria-label":o(c)("appstore","Missing dependencies"),class:w(d.$style.appstoreDetailsTab__missingDependencies)},[(u(!0),x(M,null,Z(e.app.missingDependencies,(S,R)=>(u(),x("li",{key:R},v(S),1))),128))],10,ul)]),_:1})):I("",!0),g.value?(u(),D(o(at),{key:1,type:"info"},{default:y(()=>[N(v(o(c)("appstore","This app cannot be limited to groups because it provides functionality that is executed before group membership is determined.")),1)]),_:1})):I("",!0),o(l).length?(u(),x("div",{key:2,class:w(d.$style.appstoreDetailsTab__section)},[_("h4",{id:o(n)},v(o(c)("appstore","Limited to groups")),9,dl),_("ul",{"aria-labelledby":o(n),class:w(d.$style.appstoreDetailsTab__sectionDetails)},[(u(!0),x(M,null,Z(o(l),S=>(u(),x("li",{key:S.id,title:S.id},v(S.displayName),9,gl))),128))],10,hl)],2)):I("",!0),s.value&&!e.app.shipped?(u(),x("div",{key:3,class:w(d.$style.appstoreDetailsTab__section)},[_("h4",null,v(o(c)("appstore","Latest updated")),1),k(o(ba),{class:w(d.$style.appstoreDetailsTab__sectionDetails),timestamp:s.value},null,8,["class","timestamp"])],2)):I("",!0),_("div",{class:w(d.$style.appstoreDetailsTab__section)},[_("h4",null,v(o(c)("appstore","Author")),1),_("p",{class:w(d.$style.appstoreDetailsTab__sectionDetails)},v(a.value),3)],2),_("div",{class:w(d.$style.appstoreDetailsTab__section)},[_("h4",null,v(o(c)("appstore","Categories")),1),_("p",{class:w(d.$style.appstoreDetailsTab__sectionDetails)},v(i.value),3)],2),p.value.length>0?(u(),x("div",{key:4,class:w(d.$style.appstoreDetailsTab__section)},[_("h4",null,v(o(c)("appstore","Resources")),1),_("ul",{class:w(d.$style.appstoreDetailsTab__resources),"aria-label":o(c)("appstore","Documentation resources")},[(u(!0),x(M,null,Z(p.value,S=>(u(),x("li",{key:S.id,class:w(d.$style.appstoreDetailsTab__resourcesItem)},[_("a",{class:w(d.$style.appstoreDetailsTab__resourcesLink),href:S.href,target:"_blank",rel:"noreferrer noopener"},v(S.label)+" ↗ ",11,fl)],2))),128))],10,ml)],2)):I("",!0)])]),_:1},8,["name"]))}}),kl="_appstoreDetailsTab__badges_4x76r_2",_l="_appstoreDetailsTab__section_4x76r_8",yl="_appstoreDetailsTab__sectionDetails_4x76r_18",wl="_appstoreDetailsTab__missingDependencies_4x76r_22",vl="_appstoreDetailsTab__resourcesLink_4x76r_28",xl="_appstoreDetailsTab__resourcesItem_4x76r_32",$l={appstoreDetailsTab__badges:kl,appstoreDetailsTab__section:_l,appstoreDetailsTab__sectionDetails:yl,appstoreDetailsTab__missingDependencies:wl,appstoreDetailsTab__resourcesLink:vl,appstoreDetailsTab__resourcesItem:xl},Tl={$style:$l},Al=q(bl,[["__cssModules",Tl]]),Sl=B({__name:"AppReleasesTab",props:{app:{}},setup(e){const t=e,n=$(()=>(t.app.releases??[]).filter(a=>{const r=Object.values(a.translations??{});return r.length>0&&r.some(({changelog:l})=>!!l)}));function s(a){return a.translations[sa()]?.changelog??a.translations.en?.changelog??""}return(a,r)=>n.value.length>0?(u(),D(o(Ce),{key:0,id:"changelog",name:o(c)("appstore","Changelog"),order:2},{icon:y(()=>[k(o(L),{path:o(Fa),size:24},null,8,["path"])]),default:y(()=>[(u(!0),x(M,null,Z(n.value,l=>(u(),x("div",{key:l.version,class:w(a.$style.appReleasesTab)},[_("h3",{class:w(a.$style.appReleasesTab__heading)},v(l.version),3),k(Ut,{class:w(a.$style.appReleasesTab__text),minHeadingLevel:3,text:s(l)},null,8,["class","text"])],2))),128))]),_:1},8,["name"])):I("",!0)}}),Rl="_appReleasesTab__heading_9xawz_2",Dl="_appReleasesTab__text_9xawz_7",zl={appReleasesTab__heading:Rl,appReleasesTab__text:Dl},Il={$style:zl},Cl=q(Sl,[["__cssModules",Il]]),Ll={id:"disable",icon:yt,order:10,enabled:St,label:()=>c("appstore","Disable"),async callback(e){await j().disableApp(e.id)}},El={id:"enable",icon:wt,order:1,variant:"primary",enabled(e){return!pe(e)&&Tt(e)},label:()=>c("appstore","Enable"),async callback(e){await j().enableApp(e.id)}},Bl={id:"force-enable",icon:Wa,order:3,inline:!1,variant:"warning",label:()=>c("appstore","Force enable"),enabled(e){return!pe(e)&&At(e)&&ve(e)},async callback(e){await j().enableApp(e.id,!0)}},Pl={id:"install",icon:Ze,order:5,enabled(e){return pe(e)&&!ve(e)},label:e=>e.app_api?c("appstore","Deploy and enable"):e.needsDownload?c("appstore","Download and enable"):c("appstore","Install and enable"),async callback(e){await j().enableApp(e.id)}},Nl={id:"install-forced",icon:Ze,order:5,inline:!1,enabled(e){return pe(e)&&ve(e)},label:e=>e.app_api?c("appstore","Deploy and force enable"):e.needsDownload?c("appstore","Download and force enable"):c("appstore","Install and force enable"),async callback(e){await j().enableApp(e.id,!0)}},ql=[{id:"rate",icon:xt,order:30,inline:!1,label:()=>c("appstore","Rate the app"),enabled(e){return!e.shipped},href(e){return`https://apps.nextcloud.com/apps/${encodeURIComponent(e.id)}#comments`}},{id:"report-bug",icon:Xa,order:32,inline:!1,label:()=>c("appstore","Report a bug"),enabled(e){return!!e.bugs},href(e){return e.bugs}},{id:"discussion",icon:Ya,order:35,inline:!1,label:()=>c("appstore","Ask questions or discuss the app"),enabled(e){return!!e.discussion},href(e){return e.discussion}},{id:"website",icon:Ja,order:38,inline:!1,label:()=>c("appstore","Visit the website"),enabled(e){return!!e.website},href(e){return e.website}}],Ml=Jt(()=>oe(()=>Promise.resolve().then(()=>br),void 0,import.meta.url)),Ol={id:"limit-to-group",icon:Ka,order:16,inline:!1,label:()=>c("appstore","Limit to groups"),enabled:Qe,async callback(e){await kt(Ml,{app:e})}},Gl={id:"remove",order:20,icon:en,variant:"error",inline:!1,enabled:$t,label:()=>c("appstore","Remove"),async callback(e){await j().uninstallApp(e.id)}},Ul={id:"update",icon:tn,variant:"primary",order:0,enabled(e){return yn(e)?e.app_api?e.daemon&&e.daemon?.accepts_deploy_id==="manual-install"?!0:xe().daemonAccessible:!0:!1},label:e=>c("appstore","Update to {version}",{version:e.update}),async callback(e){await zt().updateApp(e.id)}},Zl=[Ul,El,Ll,Bl,Pl,Nl,Gl,Ol,...ql].sort((e,t)=>e.order-t.order);function Vt(e){return $(()=>fe(e)?Zl.filter(t=>t.enabled(fe(e))):[])}function jl(e){const t=E(null),n=$(()=>{let s;return e.value?.app_api?s=Se:s=[e.value?.category??[]].flat().map(a=>X[a]).filter(a=>!!a).at(0)??(e.value?.app_api?Se:an),s?``:null});return Kt(async()=>{if(!e.value?.icon)t.value=n.value;else{t.value=null;try{const s=await(await(await window.fetch(e.value.icon)).blob()).text();t.value=s.replaceAll(/fill="#(fff|ffffff)([a-z0-9]{1,2})?"/ig,'fill="currentColor"')}catch(s){t.value=n.value,H.error("Could not load app icon",{error:s})}}}),{appIcon:t}}const Hl=B({__name:"AppstoreSidebar",setup(e){const t=_e(),n=Oe(),s=j(),a=It(),r=$(()=>[t.params.id].flat()[0]),l=$(()=>s.getAppById(r.value)??null),{appIcon:p}=jl(l),i=$(()=>l.value?l.value.license?c("appstore","Version {version}, {license}-licensed",{version:l.value.version,license:String(l.value.license).toUpperCase()}):c("appstore","Version {version}",{version:l.value.version}):""),g=E("details");re([l],()=>{g.value="details"});function h(){n.replace({name:t.name,params:{...t.params,id:void 0},query:a.getQuery()})}const d=E(!1),b=$(()=>l.value?.screenshot&&d.value);function S(){if(l.value?.releases&&l.value?.screenshot){const P=new Image;P.onload=()=>{d.value=!0},P.src=l.value.screenshot}}re([l],S),ea(S);const R=Vt(()=>l.value);return(P,Y)=>(u(),D(o(ha),{active:g.value,"onUpdate:active":Y[0]||(Y[0]=T=>g.value=T),class:w([P.$style.appstoreSidebar,{[P.$style.appstoreSidebar_withScreenshot]:b.value}]),background:b.value?l.value.screenshot:void 0,compact:!b.value,name:l.value?.name??r.value,title:l.value?.name??r.value,subname:i.value,subtitle:i.value,onClose:h},Me({default:y(()=>[l.value?(u(),x(M,{key:1},[k(Hs,{app:l.value},null,8,["app"]),k(Cl,{app:l.value},null,8,["app"]),k(Al,{app:l.value},null,8,["app"]),l.value.app_api?(u(),D(Qn,{key:0,app:l.value},null,8,["app"])):I("",!0)],64)):(u(),D(o(Ue),{key:0,name:"No such app"}))]),_:2},[b.value?void 0:{name:"header",fn:y(()=>[k(o(L),{class:w(P.$style.appstoreSidebar__fallbackIcon),svg:o(p)??"",size:64},null,8,["class","svg"])]),key:"0"},l.value?{name:"description",fn:y(()=>[k(Ct,{app:l.value,actions:o(R),iconOnly:"",maxInlineActions:6},null,8,["app","actions"])]),key:"1"}:void 0]),1032,["active","class","background","compact","name","title","subname","subtitle"]))}}),Ql="_appstoreSidebar_withScreenshot_1224s_3",Vl="_appstoreSidebar__fallbackIcon_1224s_9",Fl={appstoreSidebar_withScreenshot:Ql,appstoreSidebar__fallbackIcon:Vl},Wl={$style:Fl},Xl=q(Hl,[["__cssModules",Wl]]),Yl=B({__name:"AppstoreApp",setup(e){const t=_e(),n=j(),s=$(()=>t.params.category?[t.params.category].flat()[0]:t.name==="apps-bundles"?"bundles":t.name==="apps-search"?"search":"discover"),a=$(()=>s.value in W?W[s.value]:n.getCategoryById(s.value)?.displayName??s.value),r=$(()=>`${a.value} - ${c("appstore","App store")}`),l=$(()=>!!t.params.id);return(p,i)=>{const g=ta("router-view");return u(),D(o(oa),{appName:"appstore"},{default:y(()=>[k(Nn),k(o(ia),{class:w(p.$style.appstoreApp__content),pageHeading:o(c)("appstore","App store"),pageTitle:r.value},{default:y(()=>[a.value?(u(),x("h2",{key:0,class:w(p.$style.appstoreApp__heading)},v(a.value),3)):I("",!0),k(g)]),_:1},8,["class","pageHeading","pageTitle"]),l.value?(u(),D(Xl,{key:0})):I("",!0)]),_:1})}}}),Jl="_appstoreApp__content_1pi7x_2",Kl="_appstoreApp__heading_1pi7x_7",er={appstoreApp__content:Jl,appstoreApp__heading:Kl},tr={$style:er},ar=q(Yl,[["__cssModules",tr]]),nr=ee("appstore","appstoreEnabled",!0),sr=()=>oe(()=>import("./AppstoreDiscover-C9at7Z-5.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73]),import.meta.url),lr=()=>oe(()=>import("./UpdateAllDialog-B79HRvpB.chunk.mjs").then(e=>e.c),__vite__mapDeps([74,1,2,3,4,5,6,7,8,9,10,25,13,14,26,27,23,24,28,15,16,29,30,31,32,33,12,17,34,20,21,35,36,37,38,39,40,41,42,18,19,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,11,75,72,73]),import.meta.url),rr=()=>oe(()=>Promise.resolve().then(()=>ii),void 0,import.meta.url),ir=()=>oe(()=>import("./AppstoreBrowse-AfNqrsSg.chunk.mjs"),__vite__mapDeps([76,6,7,4,1,2,5,8,9,18,19,15,16,74,3,10,25,13,14,26,27,23,24,28,29,30,31,32,33,12,17,34,20,21,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,11,75,72,73,22,69,70,77]),import.meta.url),or=()=>oe(()=>import("./UpdateAllDialog-B79HRvpB.chunk.mjs").then(e=>e.d),__vite__mapDeps([74,1,2,3,4,5,6,7,8,9,10,25,13,14,26,27,23,24,28,15,16,29,30,31,32,33,12,17,34,20,21,35,36,37,38,39,40,41,42,18,19,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,11,75,72,73]),import.meta.url),pr=[{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:nr?{name:"apps-discover"}:{name:"apps-manage",params:{category:"installed"}},children:[{path:"discover/:id?",name:"apps-discover",component:sr},{path:"bundles/:id?",name:"apps-bundles",component:rr},{path:":category(installed|enabled|disabled|updates)/:id?",name:"apps-manage",component:lr},{path:":category/:id?",name:"apps-category",component:ir},{path:"search/:id?",name:"apps-search",component:or}]}],cr=la({history:ra(K("")),linkActiveClass:"active",routes:pr}),ur=Ft(),Ae=aa(ar);Ae.config.idPrefix="appstore",Ae.use(ur),Ae.use(cr),Ae.mount("#content");const dr=B({__name:"LimitToGroupDialog",props:{app:{}},emits:["close"],setup(e,{emit:t}){const n=t,s=j(),a=Ht(),r=E(!1),l=E([]);re(()=>e.app,()=>{l.value=(e.app.groups??[]).map(d=>{const b=a.getGroupById(d);return b||a.searchGroups(d),b??{id:d,displayName:d,isNoUser:!0}})},{immediate:!0});const p=$(()=>a.groups.filter(d=>!l.value.includes(d))),i=wa(a.searchGroups,400);async function g(){try{r.value=!0,await s.limitAppToGroups(e.app.id,l.value.map(d=>d.id)),n("close")}finally{r.value=!1}}async function h(){try{r.value=!0,await s.limitAppToGroups(e.app.id,[]),n("close")}finally{r.value=!1}}return(d,b)=>(u(),D(o(bt),{isForm:"",name:o(c)("appstore","Limit to groups"),onSubmit:g,onReset:h},{actions:y(()=>[k(o(ie),{disabled:r.value,type:"reset"},{default:y(()=>[N(v(o(c)("appstore","Reset limitation")),1)]),_:1},8,["disabled"]),k(o(ie),{disabled:r.value,type:"submit",variant:"primary"},Me({default:y(()=>[N(" "+v(o(c)("appstore","Save")),1)]),_:2},[r.value?{name:"icon",fn:y(()=>[k(o(Ie))]),key:"0"}:void 0]),1032,["disabled"])]),default:y(()=>[_("p",null,v(o(c)("appstore","Restrict the usage of {app} to members of the following groups.",{app:e.app.name})),1),k(o(ga),{modelValue:l.value,"onUpdate:modelValue":b[0]||(b[0]=S=>l.value=S),class:w(d.$style.limitToGroupDialog__input),keepOpen:"",labelOutside:"",multiple:"",options:p.value,onSearch:o(i)},null,8,["modelValue","class","options","onSearch"])]),_:1},8,["name"]))}}),hr="_limitToGroupDialog__input_sofp5_2",gr={limitToGroupDialog__input:hr},mr={$style:gr},fr=q(dr,[["__cssModules",mr]]),br=Object.freeze(Object.defineProperty({__proto__:null,default:fr},Symbol.toStringTag,{value:"Module"})),kr=["src","height","width"],_r=B({__name:"AppIcon",props:{app:{},noFallback:{type:Boolean},size:{default:20}},setup(e){const t=$(()=>e.app.icon?.endsWith(".svg")),n=E("");return re(()=>e.app.icon,async()=>{if(n.value="",e.app.icon?.endsWith(".svg")){const s=await fetch(e.app.icon);s.ok&&(n.value=await s.text(),n.value=n.value.replaceAll(/(?<=[";])fill:\s?(#fff(fff)?|white)(;|(?="))/gi,"").replaceAll(/(?<=\s)fill="[^"]+"/gi,"").replaceAll(/(?<=\s)color="[^"]+"/gi,""))}},{immediate:!0}),(s,a)=>(u(),x("span",{class:w(s.$style.appIcon)},[n.value?(u(),D(o(L),{key:0,size:e.size,svg:n.value},null,8,["size","svg"])):e.app.icon&&!t.value?(u(),x("img",{key:1,class:w(s.$style.appIcon__image),alt:"",src:e.app.icon,height:e.size,width:e.size},null,10,kr)):e.noFallback?I("",!0):(u(),D(o(L),{key:2,path:o(Se),size:e.size},null,8,["path","size"]))],2))}}),yr="_appIcon_mcsmb_2",wr="_appIcon__image_mcsmb_7",vr={appIcon:yr,appIcon__image:wr},xr={$style:vr},$r=q(_r,[["__cssModules",xr]]),Tr={key:0,class:"hidden-visually"},Ar={class:"hidden-visually"},Sr={key:0},Rr={key:1},Dr=["title"],zr={key:0,"aria-hidden":"true"},Ir=B({__name:"AppTableRow",props:{app:{},isNarrow:{type:Boolean},isWide:{type:Boolean}},setup(e){const t=_e(),n=$(()=>({...t,params:{...t.params,id:e.app.id},query:{...t.query}})),s=$(()=>({id:"details",order:99,enabled:()=>!0,label:()=>c("appstore","Show details"),icon:nn,to:()=>n.value,inline:!1})),a=Qt(()=>e.app),r=Vt(()=>e.app),l=$(()=>[...r.value,s.value]);return(p,i)=>(u(),x("tr",{class:w(p.$style.appTableRow)},[_("td",{class:w(p.$style.appTableRow__nameCell)},[k(o(ie),{alignment:"start",title:o(c)("appstore","Show details"),to:n.value,variant:"tertiary-no-background",wide:""},{icon:y(()=>[e.app.loading?(u(),D(o(Ie),{key:0,size:24})):(u(),D($r,{key:1,app:e.app,size:24},null,8,["app"]))]),default:y(()=>[N(" "+v(e.app.name)+" ",1),e.app.loading?(u(),x("span",Tr,"("+v(o(c)("appstore","is loading…"))+")",1)):I("",!0),_("span",Ar,"("+v(o(c)("appstore","Show details"))+")",1)]),_:1},8,["title","to"])],2),_("td",null,[_("span",{class:w(p.$style.appTableRow__versionCell)},v(e.app.version),3)]),e.isNarrow?I("",!0):(u(),x("td",Sr,[_("div",{class:w(p.$style.appTableRow__levelCell)},[e.app.level?(u(),D(jt,{key:0,level:e.app.level},null,8,["level"])):I("",!0),"daemon"in e.app&&e.app.daemon?(u(),D(Zt,{key:1,daemon:e.app.daemon},null,8,["daemon"])):I("",!0)],2)])),e.isWide?(u(),x("td",Rr,[o(a).length>0?(u(),x("ul",{key:0,class:w(p.$style.appTableRow__groupsCell),title:o(a).map(g=>g.displayName).join(", ")},[(u(!0),x(M,null,Z(o(a),(g,h)=>(u(),x(M,{key:g.id},[h===3?(u(),x("li",zr," … ")):I("",!0),_("li",{class:w({"hidden-visually":h>2})},[k(o(xa),{text:g.displayName,noClose:""},null,8,["text"])],2)],64))),128))],10,Dr)):I("",!0)])):I("",!0),_("td",null,[_("div",{class:w(p.$style.appTableRow__actionsCell)},[k(Ct,{class:w(p.$style.appTableRow__actionsCellActions),app:e.app,actions:l.value,iconOnly:e.isNarrow},null,8,["class","app","actions","iconOnly"])],2)])],2))}}),Cr="_appTableRow_yekky_2",Lr="_appTableRow__nameCell_yekky_11",Er="_appTableRow__levelCell_yekky_16",Br="_appTableRow__versionCell_yekky_22",Pr="_appTableRow__groupsCell_yekky_26",Nr="_appTableRow__actionsCell_yekky_31",qr="_appTableRow__actionsCellActions_yekky_37",Mr={appTableRow:Cr,appTableRow__nameCell:Lr,appTableRow__levelCell:Er,appTableRow__versionCell:Br,appTableRow__groupsCell:Pr,appTableRow__actionsCell:Nr,appTableRow__actionsCellActions:qr},Or={$style:Mr},Gr=q(Ir,[["__cssModules",Or]]),Ur={hidden:""},Zr={key:0},jr={key:1},Hr=B({__name:"AppTable",props:{apps:{}},setup(e){const t=ht("table"),{width:n}=va(t),s=$(()=>n.value<768),a=$(()=>n.value>=1280);return(r,l)=>(u(),x("table",{ref:"table",class:w([r.$style.appTable,{[r.$style.appTable_narrow]:s.value,[r.$style.appTable_wide]:a.value}])},[_("colgroup",null,[_("col",{class:w(r.$style.appTable__colName)},null,2),_("col",{class:w(r.$style.appTable__colVersion)},null,2),s.value?I("",!0):(u(),x("col",{key:0,class:w(r.$style.appTable__colSupport)},null,2)),a.value?(u(),x("col",{key:1,class:w(r.$style.appTable__colGroups)},null,2)):I("",!0),_("col",{class:w(r.$style.appTable__colActions)},null,2)]),_("thead",Ur,[_("tr",null,[_("th",null,v(o(c)("appstore","App name")),1),_("th",null,v(o(c)("appstore","Version")),1),s.value?I("",!0):(u(),x("th",Zr,v(o(c)("appstore","Support level")),1)),a.value?(u(),x("th",jr,v(o(c)("appstore","Groups")),1)):I("",!0),_("th",null,v(o(c)("appstore","Actions")),1)])]),_("tbody",null,[(u(!0),x(M,null,Z(e.apps,p=>(u(),D(Gr,{key:p.id,app:p,isNarrow:s.value,isWide:a.value},null,8,["app","isNarrow","isWide"]))),128))])],2))}}),Qr="_appTable_ss46x_2",Vr="_appTable__colName_ss46x_7",Fr="_appTable_narrow_ss46x_11",Wr="_appTable_wide_ss46x_15",Xr="_appTable__colSupport_ss46x_19",Yr="_appTable__colActions_ss46x_27",Jr={appTable:Qr,appTable__colName:Vr,appTable_narrow:Fr,appTable_wide:Wr,appTable__colSupport:Xr,appTable__colActions:Yr},Kr={$style:Jr},ei=q(Hr,[["__cssModules",Kr]]),ti=B({__name:"AppstoreBundles",setup(e){const t=j(),n=$(()=>t.bundles.map(l=>({...l,apps:l.appIdentifiers.map(p=>t.apps.find(i=>i.id===p)).filter(Boolean),isEnabling:!1})));function s(l){return l.appIdentifiers.every(p=>{const i=t.apps.find(g=>g.id===p);return i&&(i.active||Tt(i))})}function a(l){return l.appIdentifiers.every(p=>{const i=t.apps.find(g=>g.id===p);return i&&i.active})}async function r(l){l.isEnabling=!0,await t.enableBundle(l.id),l.isEnabling=!1}return(l,p)=>o(t).isLoadingApps?(u(),D(o(Ue),{key:0,name:o(c)("appstore","Loading app list")},{icon:y(()=>[k(o(Ie),{size:64})]),_:1},8,["name"])):(u(!0),x(M,{key:1},Z(n.value,i=>(u(),x("section",{key:i.id},[_("div",{class:w(l.$style.appstoreBundles__header)},[_("h3",null,v(i.name),1),a(i)?I("",!0):(u(),D(o(ie),{key:0,disabled:!s(i),variant:"primary",onClick:g=>r(i)},{icon:y(()=>[k(o(L),{path:o(sn)},null,8,["path"])]),default:y(()=>[N(" "+v(o(c)("appstore","Download and enable all")),1)]),_:1},8,["disabled","onClick"]))],2),k(ei,{class:w(l.$style.appstoreBundles__appTable),apps:i.apps},null,8,["class","apps"])]))),128))}}),ai="_appstoreBundles__header_oplvy_2",ni="_appstoreBundles__appTable_oplvy_11",si={appstoreBundles__header:ai,appstoreBundles__appTable:ni},li={$style:si},ri=q(ti,[["__cssModules",li]]),ii=Object.freeze(Object.defineProperty({__proto__:null,default:ri},Symbol.toStringTag,{value:"Module"}));export{Ji as A,ol as B,Ut as M,St as a,It as b,pe as c,ei as d,jt as e,Zt as f,zt as g,H as l,ve as n,j as u}; +Please report this to https://github.com/markedjs/marked.`,e){let s="

An error occurred:

"+F(n.message+"",!0)+"
";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}},ae=new Ls;function C(e,t){return ae.parse(e,t)}C.options=C.setOptions=function(e){return ae.setOptions(e),C.defaults=ae.defaults,lt(C.defaults),C},C.getDefaults=Ve,C.defaults=le,C.use=function(...e){return ae.use(...e),C.defaults=ae.defaults,lt(C.defaults),C},C.walkTokens=function(e,t){return ae.walkTokens(e,t)},C.parseInline=ae.parseInline,C.Parser=V,C.parser=V.parse,C.Renderer=ze,C.TextRenderer=tt,C.Lexer=Q,C.lexer=Q.lex,C.Tokenizer=De,C.Hooks=me,C.parse=C,C.options,C.setOptions,C.use,C.walkTokens,C.parseInline,V.parse,Q.lex;function Es(e,t){const n=new C.Renderer;return n.blockquote=Ns,n.link=Bs,n.image=Ps,$(()=>{const s=t?.minHeadingLevel??1;n.heading=qs(s);const a=fe(e).trim();return na.sanitize(C(a,{async:!1,renderer:n,gfm:!1,breaks:!1,pedantic:!1}),{ALLOWED_TAGS:["h1","h2","h3","h4","h5","h6","strong","p","a","ul","ol","li","em","del","blockquote"]})})}function Bs({href:e,title:t,text:n}){let s;try{s=new URL(e)}catch{return""}if(s.protocol!=="http:"&&s.protocol!=="https:")return"";let a='
",a}function Ps({title:e,text:t}){return t||(e??"")}function Ns({text:e}){return`
${e}
`}function qs(e){return({text:t,depth:n})=>(n=Math.min(6,n+(e-1)),`${t}`)}const Ms=["innerHTML"],Os=B({__name:"MarkdownPreview",props:{text:{},minHeadingLevel:{default:1}},setup(e){const t=Es(()=>e.text,{minHeadingLevel:e.minHeadingLevel});return(n,s)=>(u(),x("div",{class:"settings-markdown",innerHTML:o(t)},null,8,Ms))}}),Ut=q(Os,[["__scopeId","data-v-cf1f9874"]]),Gs=B({__name:"AppDescriptionTab",props:{app:{}},setup(e){return(t,n)=>(u(),D(o(Ce),{id:"desc",name:o(c)("appstore","Description"),order:0},{icon:y(()=>[k(o(L),{path:o(Ha)},null,8,["path"])]),default:y(()=>[_("div",{class:w(t.$style.appDescriptionTab)},[k(Ut,{text:e.app.description,minHeadingLevel:3},null,8,["text"])],2)]),_:1},8,["name"]))}}),Us="_appDescriptionTab_118mz_2",Zs={appDescriptionTab:Us},js={$style:Zs},Hs=q(Gs,[["__cssModules",js]]),Qs=["title"],Vs=B({__name:"BadgeAppDaemon",props:{daemon:{}},setup(e){return(t,n)=>e.daemon?(u(),x("span",{key:0,class:w(t.$style.appDaemonBadge),title:e.daemon.name},[k(o(L),{path:o(vt),size:20,inline:""},null,8,["path"]),N(" "+v(e.daemon.display_name),1)],10,Qs)):I("",!0)}}),Fs="_appDaemonBadge_1n34s_2",Ws={appDaemonBadge:Fs},Xs={$style:Ws},Zt=q(Vs,[["__cssModules",Xs]]),Ys=["title"],Js=B({__name:"BadgeAppLevel",props:{level:{}},setup(e){const t=e,n=$(()=>t.level===300),s=$(()=>t.level===200),a=$(()=>n.value?_t:je),r=$(()=>n.value?c("appstore","Supported"):c("appstore","Featured")),l=$(()=>n.value?c("appstore","This app is supported via your current Nextcloud subscription."):c("appstore","Featured apps are developed by and within the community. They offer central functionality and are ready for production use."));return(p,i)=>n.value||s.value?(u(),x("span",{key:0,class:w([p.$style.appLevelBadge,{[p.$style.appLevelBadge__supported]:n.value}]),title:l.value},[k(o(L),{path:a.value,size:20,inline:""},null,8,["path"]),N(" "+v(r.value),1)],10,Ys)):I("",!0)}}),Ks="_appLevelBadge_q2et3_2",el="_appLevelBadge__supported_q2et3_15",tl={appLevelBadge:Ks,appLevelBadge__supported:el},al={$style:tl},jt=q(Js,[["__cssModules",al]]),nl=["aria-label","title"],sl=B({__name:"BadgeAppScore",props:{app:{}},setup(e){const t=$(()=>!e.app.shipped&&e.app.ratingNumOverall&&e.app.ratingNumOverall>5),n=$(()=>e.app.ratingOverall??4),s=$(()=>{const p=(n.value*5).toFixed(1);return c("appstore","Community rating: {score}/5",{score:p})}),a=$(()=>Math.floor(n.value*5+.25)),r=$(()=>Math.min(Math.floor((1-n.value)*5+.25),5-a.value)),l=$(()=>a.value+r.value<5);return(p,i)=>t.value?(u(),x("span",{key:0,role:"img","aria-label":s.value,title:s.value,class:w(p.$style.badgeAppScore)},[(u(!0),x(M,null,Z(a.value,g=>(u(),D(o(L),{key:`full-star-${g}`,path:o(je),inline:""},null,8,["path"]))),128)),l.value?(u(),D(o(L),{key:0,path:o(Qa),inline:""},null,8,["path"])):I("",!0),(u(!0),x(M,null,Z(r.value,g=>(u(),D(o(L),{key:`empty-star-${g}`,path:o(xt),inline:""},null,8,["path"]))),128))],10,nl)):I("",!0)}}),ll="_badgeAppScore_1t97c_2",rl={badgeAppScore:ll},il={$style:rl},ol=q(sl,[["__cssModules",il]]),pl=new ft({concurrency:3}),Ht=ke("groups",()=>{const e=E(new Map);async function t(r){return await pl.add(()=>a(r))}async function n(r){const l=Ge("/cloud/groups/details");try{const{data:p}=await O.get(l,{params:{search:r.trim(),limit:10}});for(const i of p.ocs.data.groups)e.value.has(i.id)||e.value.set(i.id,{id:i.id,displayName:i.displayname,isNoUser:!0})}catch(p){H.error("Failed to search groups",{error:p})}}function s(r){return e.value.get(r)}return{groups:$(()=>Array.from(e.value.values())),searchGroups:n,getGroupById:s,fetchGroupById:t};async function a(r){return e.value.has(r)||await n(r),e.value.get(r)}});function Qt(e){const t=Ht(),n=E([]);return re(()=>fe(e).groups,async()=>{const s=fe(e).groups;if(s===void 0){n.value=[];return}const a=s.map(l=>t.fetchGroupById(l)),r=await Promise.all(a);n.value=r.filter(Boolean)},{immediate:!0}),dt(n)}const cl={class:"app-details"},ul=["aria-label"],dl=["id"],hl=["aria-labelledby"],gl=["title"],ml=["aria-label"],fl=["href"],bl=B({__name:"AppDetailsTab",props:{app:{}},setup(e){const t=j(),n=Yt(),s=$(()=>e.app.releases?.map(d=>d.lastModified).map(d=>Date.parse(d)).sort().at(-1)),a=$(()=>e.app?[e.app.author].flat().map(h).sort((d,b)=>d.split(" ").at(-1).localeCompare(b.split(" ").at(-1))).join(", "):""),r=$(()=>`https://apps.nextcloud.com/apps/${e.app.id}`),l=Qt(()=>e.app),p=$(()=>{const d=[];return e.app.internal||d.push({id:"appstore",href:r.value,label:c("appstore","View in store")}),e.app.website&&d.push({id:"website",href:e.app.website,label:c("appstore","Visit website")}),e.app.documentation&&(e.app.documentation.user&&d.push({id:"doc-user",href:e.app.documentation.user,label:c("appstore","Usage documentation")}),e.app.documentation.admin&&d.push({id:"doc-admin",href:e.app.documentation.admin,label:c("appstore","Admin documentation")}),e.app.documentation.developer&&d.push({id:"doc-developer",href:e.app.documentation.developer,label:c("appstore","Developer documentation")})),d}),i=$(()=>[e.app.category].flat().map(d=>t.getCategoryById(d)?.displayName??d).join(", ")),g=$(()=>e.app.active&&!Qe(e.app));function h(d){return d["@value"]?d["@value"]:d}return(d,b)=>(u(),D(o(Ce),{id:"details",name:o(c)("appstore","Details"),order:1},{icon:y(()=>[k(o(L),{path:o(Va)},null,8,["path"])]),default:y(()=>[_("div",cl,[_("div",{class:w(d.$style.appstoreDetailsTab__badges)},[k(jt,{level:e.app.level},null,8,["level"]),e.app.app_api&&e.app.daemon?(u(),D(Zt,{key:0,daemon:e.app.daemon},null,8,["daemon"])):I("",!0),k(ol,{app:e.app},null,8,["app"])],2),!e.app.isCompatible&&e.app.missingDependencies&&e.app.missingDependencies.length?(u(),D(o(at),{key:0,type:"error"},{default:y(()=>[N(v(o(c)("appstore","This app cannot be installed because the following dependencies are not fulfilled:"))+" ",1),_("ul",{"aria-label":o(c)("appstore","Missing dependencies"),class:w(d.$style.appstoreDetailsTab__missingDependencies)},[(u(!0),x(M,null,Z(e.app.missingDependencies,(S,R)=>(u(),x("li",{key:R},v(S),1))),128))],10,ul)]),_:1})):I("",!0),g.value?(u(),D(o(at),{key:1,type:"info"},{default:y(()=>[N(v(o(c)("appstore","This app cannot be limited to groups because it provides functionality that is executed before group membership is determined.")),1)]),_:1})):I("",!0),o(l).length?(u(),x("div",{key:2,class:w(d.$style.appstoreDetailsTab__section)},[_("h4",{id:o(n)},v(o(c)("appstore","Limited to groups")),9,dl),_("ul",{"aria-labelledby":o(n),class:w(d.$style.appstoreDetailsTab__sectionDetails)},[(u(!0),x(M,null,Z(o(l),S=>(u(),x("li",{key:S.id,title:S.id},v(S.displayName),9,gl))),128))],10,hl)],2)):I("",!0),s.value&&!e.app.shipped?(u(),x("div",{key:3,class:w(d.$style.appstoreDetailsTab__section)},[_("h4",null,v(o(c)("appstore","Latest updated")),1),k(o(ba),{class:w(d.$style.appstoreDetailsTab__sectionDetails),timestamp:s.value},null,8,["class","timestamp"])],2)):I("",!0),_("div",{class:w(d.$style.appstoreDetailsTab__section)},[_("h4",null,v(o(c)("appstore","Author")),1),_("p",{class:w(d.$style.appstoreDetailsTab__sectionDetails)},v(a.value),3)],2),_("div",{class:w(d.$style.appstoreDetailsTab__section)},[_("h4",null,v(o(c)("appstore","Categories")),1),_("p",{class:w(d.$style.appstoreDetailsTab__sectionDetails)},v(i.value),3)],2),p.value.length>0?(u(),x("div",{key:4,class:w(d.$style.appstoreDetailsTab__section)},[_("h4",null,v(o(c)("appstore","Resources")),1),_("ul",{class:w(d.$style.appstoreDetailsTab__resources),"aria-label":o(c)("appstore","Documentation resources")},[(u(!0),x(M,null,Z(p.value,S=>(u(),x("li",{key:S.id,class:w(d.$style.appstoreDetailsTab__resourcesItem)},[_("a",{class:w(d.$style.appstoreDetailsTab__resourcesLink),href:S.href,target:"_blank",rel:"noreferrer noopener"},v(S.label)+" ↗ ",11,fl)],2))),128))],10,ml)],2)):I("",!0)])]),_:1},8,["name"]))}}),kl="_appstoreDetailsTab__badges_4x76r_2",_l="_appstoreDetailsTab__section_4x76r_8",yl="_appstoreDetailsTab__sectionDetails_4x76r_18",wl="_appstoreDetailsTab__missingDependencies_4x76r_22",vl="_appstoreDetailsTab__resourcesLink_4x76r_28",xl="_appstoreDetailsTab__resourcesItem_4x76r_32",$l={appstoreDetailsTab__badges:kl,appstoreDetailsTab__section:_l,appstoreDetailsTab__sectionDetails:yl,appstoreDetailsTab__missingDependencies:wl,appstoreDetailsTab__resourcesLink:vl,appstoreDetailsTab__resourcesItem:xl},Tl={$style:$l},Al=q(bl,[["__cssModules",Tl]]),Sl=B({__name:"AppReleasesTab",props:{app:{}},setup(e){const t=e,n=$(()=>(t.app.releases??[]).filter(a=>{const r=Object.values(a.translations??{});return r.length>0&&r.some(({changelog:l})=>!!l)}));function s(a){return a.translations[sa()]?.changelog??a.translations.en?.changelog??""}return(a,r)=>n.value.length>0?(u(),D(o(Ce),{key:0,id:"changelog",name:o(c)("appstore","Changelog"),order:2},{icon:y(()=>[k(o(L),{path:o(Fa),size:24},null,8,["path"])]),default:y(()=>[(u(!0),x(M,null,Z(n.value,l=>(u(),x("div",{key:l.version,class:w(a.$style.appReleasesTab)},[_("h3",{class:w(a.$style.appReleasesTab__heading)},v(l.version),3),k(Ut,{class:w(a.$style.appReleasesTab__text),minHeadingLevel:3,text:s(l)},null,8,["class","text"])],2))),128))]),_:1},8,["name"])):I("",!0)}}),Rl="_appReleasesTab__heading_9xawz_2",Dl="_appReleasesTab__text_9xawz_7",zl={appReleasesTab__heading:Rl,appReleasesTab__text:Dl},Il={$style:zl},Cl=q(Sl,[["__cssModules",Il]]),Ll={id:"disable",icon:yt,order:10,enabled:St,label:()=>c("appstore","Disable"),async callback(e){await j().disableApp(e.id)}},El={id:"enable",icon:wt,order:1,variant:"primary",enabled(e){return!pe(e)&&Tt(e)},label:()=>c("appstore","Enable"),async callback(e){await j().enableApp(e.id)}},Bl={id:"force-enable",icon:Wa,order:3,inline:!1,variant:"warning",label:()=>c("appstore","Force enable"),enabled(e){return!pe(e)&&At(e)&&ve(e)},async callback(e){await j().enableApp(e.id,!0)}},Pl={id:"install",icon:Ze,order:5,enabled(e){return pe(e)&&!ve(e)},label:e=>e.app_api?c("appstore","Deploy and enable"):e.needsDownload?c("appstore","Download and enable"):c("appstore","Install and enable"),async callback(e){await j().enableApp(e.id)}},Nl={id:"install-forced",icon:Ze,order:5,inline:!1,enabled(e){return pe(e)&&ve(e)},label:e=>e.app_api?c("appstore","Deploy and force enable"):e.needsDownload?c("appstore","Download and force enable"):c("appstore","Install and force enable"),async callback(e){await j().enableApp(e.id,!0)}},ql=[{id:"rate",icon:xt,order:30,inline:!1,label:()=>c("appstore","Rate the app"),enabled(e){return!e.shipped},href(e){return`https://apps.nextcloud.com/apps/${encodeURIComponent(e.id)}#comments`}},{id:"report-bug",icon:Xa,order:32,inline:!1,label:()=>c("appstore","Report a bug"),enabled(e){return!!e.bugs},href(e){return e.bugs}},{id:"discussion",icon:Ya,order:35,inline:!1,label:()=>c("appstore","Ask questions or discuss the app"),enabled(e){return!!e.discussion},href(e){return e.discussion}},{id:"website",icon:Ja,order:38,inline:!1,label:()=>c("appstore","Visit the website"),enabled(e){return!!e.website},href(e){return e.website}}],Ml=Jt(()=>oe(()=>Promise.resolve().then(()=>br),void 0,import.meta.url)),Ol={id:"limit-to-group",icon:Ka,order:16,inline:!1,label:()=>c("appstore","Limit to groups"),enabled:Qe,async callback(e){await kt(Ml,{app:e})}},Gl={id:"remove",order:20,icon:en,variant:"error",inline:!1,enabled:$t,label:()=>c("appstore","Remove"),async callback(e){await j().uninstallApp(e.id)}},Ul={id:"update",icon:tn,variant:"primary",order:0,enabled(e){return yn(e)?e.app_api?e.daemon&&e.daemon?.accepts_deploy_id==="manual-install"?!0:xe().daemonAccessible:!0:!1},label:e=>c("appstore","Update to {version}",{version:e.update}),async callback(e){await zt().updateApp(e.id)}},Zl=[Ul,El,Ll,Bl,Pl,Nl,Gl,Ol,...ql].sort((e,t)=>e.order-t.order);function Vt(e){return $(()=>fe(e)?Zl.filter(t=>t.enabled(fe(e))):[])}function jl(e){const t=E(null),n=$(()=>{let s;return e.value?.app_api?s=Se:s=[e.value?.category??[]].flat().map(a=>X[a]).filter(a=>!!a).at(0)??(e.value?.app_api?Se:an),s?``:null});return Kt(async()=>{if(!e.value?.icon)t.value=n.value;else{t.value=null;try{const s=await(await(await window.fetch(e.value.icon)).blob()).text();t.value=s.replaceAll(/fill="#(fff|ffffff)([a-z0-9]{1,2})?"/ig,'fill="currentColor"')}catch(s){t.value=n.value,H.error("Could not load app icon",{error:s})}}}),{appIcon:t}}const Hl=B({__name:"AppstoreSidebar",setup(e){const t=_e(),n=Oe(),s=j(),a=It(),r=$(()=>[t.params.id].flat()[0]),l=$(()=>s.getAppById(r.value)??null),{appIcon:p}=jl(l),i=$(()=>l.value?l.value.license?c("appstore","Version {version}, {license}-licensed",{version:l.value.version,license:String(l.value.license).toUpperCase()}):c("appstore","Version {version}",{version:l.value.version}):""),g=E("details");re([l],()=>{g.value="details"});function h(){n.replace({name:t.name,params:{...t.params,id:void 0},query:a.getQuery()})}const d=E(!1),b=$(()=>l.value?.screenshot&&d.value);function S(){if(l.value?.releases&&l.value?.screenshot){const P=new Image;P.onload=()=>{d.value=!0},P.src=l.value.screenshot}}re([l],S),ea(S);const R=Vt(()=>l.value);return(P,Y)=>(u(),D(o(ha),{active:g.value,"onUpdate:active":Y[0]||(Y[0]=T=>g.value=T),class:w([P.$style.appstoreSidebar,{[P.$style.appstoreSidebar_withScreenshot]:b.value}]),background:b.value?l.value.screenshot:void 0,compact:!b.value,name:l.value?.name??r.value,title:l.value?.name??r.value,subname:i.value,subtitle:i.value,onClose:h},Me({default:y(()=>[l.value?(u(),x(M,{key:1},[k(Hs,{app:l.value},null,8,["app"]),k(Cl,{app:l.value},null,8,["app"]),k(Al,{app:l.value},null,8,["app"]),l.value.app_api?(u(),D(Qn,{key:0,app:l.value},null,8,["app"])):I("",!0)],64)):(u(),D(o(Ue),{key:0,name:"No such app"}))]),_:2},[b.value?void 0:{name:"header",fn:y(()=>[k(o(L),{class:w(P.$style.appstoreSidebar__fallbackIcon),svg:o(p)??"",size:64},null,8,["class","svg"])]),key:"0"},l.value?{name:"description",fn:y(()=>[k(Ct,{app:l.value,actions:o(R),iconOnly:"",maxInlineActions:6},null,8,["app","actions"])]),key:"1"}:void 0]),1032,["active","class","background","compact","name","title","subname","subtitle"]))}}),Ql="_appstoreSidebar_withScreenshot_1224s_3",Vl="_appstoreSidebar__fallbackIcon_1224s_9",Fl={appstoreSidebar_withScreenshot:Ql,appstoreSidebar__fallbackIcon:Vl},Wl={$style:Fl},Xl=q(Hl,[["__cssModules",Wl]]),Yl=B({__name:"AppstoreApp",setup(e){const t=_e(),n=j(),s=$(()=>t.params.category?[t.params.category].flat()[0]:t.name==="apps-bundles"?"bundles":t.name==="apps-search"?"search":"discover"),a=$(()=>s.value in W?W[s.value]:n.getCategoryById(s.value)?.displayName??s.value),r=$(()=>`${a.value} - ${c("appstore","App store")}`),l=$(()=>!!t.params.id);return(p,i)=>{const g=ta("router-view");return u(),D(o(oa),{appName:"appstore"},{default:y(()=>[k(Nn),k(o(ia),{class:w(p.$style.appstoreApp__content),pageHeading:o(c)("appstore","App store"),pageTitle:r.value},{default:y(()=>[a.value?(u(),x("h2",{key:0,class:w(p.$style.appstoreApp__heading)},v(a.value),3)):I("",!0),k(g)]),_:1},8,["class","pageHeading","pageTitle"]),l.value?(u(),D(Xl,{key:0})):I("",!0)]),_:1})}}}),Jl="_appstoreApp__content_1pi7x_2",Kl="_appstoreApp__heading_1pi7x_7",er={appstoreApp__content:Jl,appstoreApp__heading:Kl},tr={$style:er},ar=q(Yl,[["__cssModules",tr]]),nr=ee("appstore","appstoreEnabled",!0),sr=()=>oe(()=>import("./AppstoreDiscover-DDOLgo3I.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73]),import.meta.url),lr=()=>oe(()=>import("./UpdateAllDialog-BqC8T943.chunk.mjs").then(e=>e.c),__vite__mapDeps([74,1,2,3,4,5,6,7,8,9,10,25,13,14,26,27,23,24,28,15,16,29,30,31,32,33,12,17,34,20,21,35,36,37,38,39,40,41,42,18,19,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,11,75,72,73]),import.meta.url),rr=()=>oe(()=>Promise.resolve().then(()=>ii),void 0,import.meta.url),ir=()=>oe(()=>import("./AppstoreBrowse-DsTlcR8_.chunk.mjs"),__vite__mapDeps([76,6,7,4,1,2,5,8,9,18,19,15,16,74,3,10,25,13,14,26,27,23,24,28,29,30,31,32,33,12,17,34,20,21,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,11,75,72,73,22,69,70,77]),import.meta.url),or=()=>oe(()=>import("./UpdateAllDialog-BqC8T943.chunk.mjs").then(e=>e.d),__vite__mapDeps([74,1,2,3,4,5,6,7,8,9,10,25,13,14,26,27,23,24,28,15,16,29,30,31,32,33,12,17,34,20,21,35,36,37,38,39,40,41,42,18,19,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,11,75,72,73]),import.meta.url),pr=[{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:nr?{name:"apps-discover"}:{name:"apps-manage",params:{category:"installed"}},children:[{path:"discover/:id?",name:"apps-discover",component:sr},{path:"bundles/:id?",name:"apps-bundles",component:rr},{path:":category(installed|enabled|disabled|updates)/:id?",name:"apps-manage",component:lr},{path:":category/:id?",name:"apps-category",component:ir},{path:"search/:id?",name:"apps-search",component:or}]}],cr=la({history:ra(K("")),linkActiveClass:"active",routes:pr}),ur=Ft(),Ae=aa(ar);Ae.config.idPrefix="appstore",Ae.use(ur),Ae.use(cr),Ae.mount("#content");const dr=B({__name:"LimitToGroupDialog",props:{app:{}},emits:["close"],setup(e,{emit:t}){const n=t,s=j(),a=Ht(),r=E(!1),l=E([]);re(()=>e.app,()=>{l.value=(e.app.groups??[]).map(d=>{const b=a.getGroupById(d);return b||a.searchGroups(d),b??{id:d,displayName:d,isNoUser:!0}})},{immediate:!0});const p=$(()=>a.groups.filter(d=>!l.value.includes(d))),i=wa(a.searchGroups,400);async function g(){try{r.value=!0,await s.limitAppToGroups(e.app.id,l.value.map(d=>d.id)),n("close")}finally{r.value=!1}}async function h(){try{r.value=!0,await s.limitAppToGroups(e.app.id,[]),n("close")}finally{r.value=!1}}return(d,b)=>(u(),D(o(bt),{isForm:"",name:o(c)("appstore","Limit to groups"),onSubmit:g,onReset:h},{actions:y(()=>[k(o(ie),{disabled:r.value,type:"reset"},{default:y(()=>[N(v(o(c)("appstore","Reset limitation")),1)]),_:1},8,["disabled"]),k(o(ie),{disabled:r.value,type:"submit",variant:"primary"},Me({default:y(()=>[N(" "+v(o(c)("appstore","Save")),1)]),_:2},[r.value?{name:"icon",fn:y(()=>[k(o(Ie))]),key:"0"}:void 0]),1032,["disabled"])]),default:y(()=>[_("p",null,v(o(c)("appstore","Restrict the usage of {app} to members of the following groups.",{app:e.app.name})),1),k(o(ga),{modelValue:l.value,"onUpdate:modelValue":b[0]||(b[0]=S=>l.value=S),class:w(d.$style.limitToGroupDialog__input),keepOpen:"",labelOutside:"",multiple:"",options:p.value,onSearch:o(i)},null,8,["modelValue","class","options","onSearch"])]),_:1},8,["name"]))}}),hr="_limitToGroupDialog__input_sofp5_2",gr={limitToGroupDialog__input:hr},mr={$style:gr},fr=q(dr,[["__cssModules",mr]]),br=Object.freeze(Object.defineProperty({__proto__:null,default:fr},Symbol.toStringTag,{value:"Module"})),kr=["src","height","width"],_r=B({__name:"AppIcon",props:{app:{},noFallback:{type:Boolean},size:{default:20}},setup(e){const t=$(()=>e.app.icon?.endsWith(".svg")),n=E("");return re(()=>e.app.icon,async()=>{if(n.value="",e.app.icon?.endsWith(".svg")){const s=await fetch(e.app.icon);s.ok&&(n.value=await s.text(),n.value=n.value.replaceAll(/(?<=[";])fill:\s?(#fff(fff)?|white)(;|(?="))/gi,"").replaceAll(/(?<=\s)fill="[^"]+"/gi,"").replaceAll(/(?<=\s)color="[^"]+"/gi,""))}},{immediate:!0}),(s,a)=>(u(),x("span",{class:w(s.$style.appIcon)},[n.value?(u(),D(o(L),{key:0,size:e.size,svg:n.value},null,8,["size","svg"])):e.app.icon&&!t.value?(u(),x("img",{key:1,class:w(s.$style.appIcon__image),alt:"",src:e.app.icon,height:e.size,width:e.size},null,10,kr)):e.noFallback?I("",!0):(u(),D(o(L),{key:2,path:o(Se),size:e.size},null,8,["path","size"]))],2))}}),yr="_appIcon_mcsmb_2",wr="_appIcon__image_mcsmb_7",vr={appIcon:yr,appIcon__image:wr},xr={$style:vr},$r=q(_r,[["__cssModules",xr]]),Tr={key:0,class:"hidden-visually"},Ar={class:"hidden-visually"},Sr={key:0},Rr={key:1},Dr=["title"],zr={key:0,"aria-hidden":"true"},Ir=B({__name:"AppTableRow",props:{app:{},isNarrow:{type:Boolean},isWide:{type:Boolean}},setup(e){const t=_e(),n=$(()=>({...t,params:{...t.params,id:e.app.id},query:{...t.query}})),s=$(()=>({id:"details",order:99,enabled:()=>!0,label:()=>c("appstore","Show details"),icon:nn,to:()=>n.value,inline:!1})),a=Qt(()=>e.app),r=Vt(()=>e.app),l=$(()=>[...r.value,s.value]);return(p,i)=>(u(),x("tr",{class:w(p.$style.appTableRow)},[_("td",{class:w(p.$style.appTableRow__nameCell)},[k(o(ie),{alignment:"start",title:o(c)("appstore","Show details"),to:n.value,variant:"tertiary-no-background",wide:""},{icon:y(()=>[e.app.loading?(u(),D(o(Ie),{key:0,size:24})):(u(),D($r,{key:1,app:e.app,size:24},null,8,["app"]))]),default:y(()=>[N(" "+v(e.app.name)+" ",1),e.app.loading?(u(),x("span",Tr,"("+v(o(c)("appstore","is loading…"))+")",1)):I("",!0),_("span",Ar,"("+v(o(c)("appstore","Show details"))+")",1)]),_:1},8,["title","to"])],2),_("td",null,[_("span",{class:w(p.$style.appTableRow__versionCell)},v(e.app.version),3)]),e.isNarrow?I("",!0):(u(),x("td",Sr,[_("div",{class:w(p.$style.appTableRow__levelCell)},[e.app.level?(u(),D(jt,{key:0,level:e.app.level},null,8,["level"])):I("",!0),"daemon"in e.app&&e.app.daemon?(u(),D(Zt,{key:1,daemon:e.app.daemon},null,8,["daemon"])):I("",!0)],2)])),e.isWide?(u(),x("td",Rr,[o(a).length>0?(u(),x("ul",{key:0,class:w(p.$style.appTableRow__groupsCell),title:o(a).map(g=>g.displayName).join(", ")},[(u(!0),x(M,null,Z(o(a),(g,h)=>(u(),x(M,{key:g.id},[h===3?(u(),x("li",zr," … ")):I("",!0),_("li",{class:w({"hidden-visually":h>2})},[k(o(xa),{text:g.displayName,noClose:""},null,8,["text"])],2)],64))),128))],10,Dr)):I("",!0)])):I("",!0),_("td",null,[_("div",{class:w(p.$style.appTableRow__actionsCell)},[k(Ct,{class:w(p.$style.appTableRow__actionsCellActions),app:e.app,actions:l.value,iconOnly:e.isNarrow},null,8,["class","app","actions","iconOnly"])],2)])],2))}}),Cr="_appTableRow_yekky_2",Lr="_appTableRow__nameCell_yekky_11",Er="_appTableRow__levelCell_yekky_16",Br="_appTableRow__versionCell_yekky_22",Pr="_appTableRow__groupsCell_yekky_26",Nr="_appTableRow__actionsCell_yekky_31",qr="_appTableRow__actionsCellActions_yekky_37",Mr={appTableRow:Cr,appTableRow__nameCell:Lr,appTableRow__levelCell:Er,appTableRow__versionCell:Br,appTableRow__groupsCell:Pr,appTableRow__actionsCell:Nr,appTableRow__actionsCellActions:qr},Or={$style:Mr},Gr=q(Ir,[["__cssModules",Or]]),Ur={hidden:""},Zr={key:0},jr={key:1},Hr=B({__name:"AppTable",props:{apps:{}},setup(e){const t=ht("table"),{width:n}=va(t),s=$(()=>n.value<768),a=$(()=>n.value>=1280);return(r,l)=>(u(),x("table",{ref:"table",class:w([r.$style.appTable,{[r.$style.appTable_narrow]:s.value,[r.$style.appTable_wide]:a.value}])},[_("colgroup",null,[_("col",{class:w(r.$style.appTable__colName)},null,2),_("col",{class:w(r.$style.appTable__colVersion)},null,2),s.value?I("",!0):(u(),x("col",{key:0,class:w(r.$style.appTable__colSupport)},null,2)),a.value?(u(),x("col",{key:1,class:w(r.$style.appTable__colGroups)},null,2)):I("",!0),_("col",{class:w(r.$style.appTable__colActions)},null,2)]),_("thead",Ur,[_("tr",null,[_("th",null,v(o(c)("appstore","App name")),1),_("th",null,v(o(c)("appstore","Version")),1),s.value?I("",!0):(u(),x("th",Zr,v(o(c)("appstore","Support level")),1)),a.value?(u(),x("th",jr,v(o(c)("appstore","Groups")),1)):I("",!0),_("th",null,v(o(c)("appstore","Actions")),1)])]),_("tbody",null,[(u(!0),x(M,null,Z(e.apps,p=>(u(),D(Gr,{key:p.id,app:p,isNarrow:s.value,isWide:a.value},null,8,["app","isNarrow","isWide"]))),128))])],2))}}),Qr="_appTable_ss46x_2",Vr="_appTable__colName_ss46x_7",Fr="_appTable_narrow_ss46x_11",Wr="_appTable_wide_ss46x_15",Xr="_appTable__colSupport_ss46x_19",Yr="_appTable__colActions_ss46x_27",Jr={appTable:Qr,appTable__colName:Vr,appTable_narrow:Fr,appTable_wide:Wr,appTable__colSupport:Xr,appTable__colActions:Yr},Kr={$style:Jr},ei=q(Hr,[["__cssModules",Kr]]),ti=B({__name:"AppstoreBundles",setup(e){const t=j(),n=$(()=>t.bundles.map(l=>({...l,apps:l.appIdentifiers.map(p=>t.apps.find(i=>i.id===p)).filter(Boolean),isEnabling:!1})));function s(l){return l.appIdentifiers.every(p=>{const i=t.apps.find(g=>g.id===p);return i&&(i.active||Tt(i))})}function a(l){return l.appIdentifiers.every(p=>{const i=t.apps.find(g=>g.id===p);return i&&i.active})}async function r(l){l.isEnabling=!0,await t.enableBundle(l.id),l.isEnabling=!1}return(l,p)=>o(t).isLoadingApps?(u(),D(o(Ue),{key:0,name:o(c)("appstore","Loading app list")},{icon:y(()=>[k(o(Ie),{size:64})]),_:1},8,["name"])):(u(!0),x(M,{key:1},Z(n.value,i=>(u(),x("section",{key:i.id},[_("div",{class:w(l.$style.appstoreBundles__header)},[_("h3",null,v(i.name),1),a(i)?I("",!0):(u(),D(o(ie),{key:0,disabled:!s(i),variant:"primary",onClick:g=>r(i)},{icon:y(()=>[k(o(L),{path:o(sn)},null,8,["path"])]),default:y(()=>[N(" "+v(o(c)("appstore","Download and enable all")),1)]),_:1},8,["disabled","onClick"]))],2),k(ei,{class:w(l.$style.appstoreBundles__appTable),apps:i.apps},null,8,["class","apps"])]))),128))}}),ai="_appstoreBundles__header_oplvy_2",ni="_appstoreBundles__appTable_oplvy_11",si={appstoreBundles__header:ai,appstoreBundles__appTable:ni},li={$style:si},ri=q(ti,[["__cssModules",li]]),ii=Object.freeze(Object.defineProperty({__proto__:null,default:ri},Symbol.toStringTag,{value:"Module"}));export{Ji as A,ol as B,Ut as M,St as a,It as b,pe as c,ei as d,jt as e,Zt as f,zt as g,H as l,ve as n,j as u}; //# sourceMappingURL=appstore-main.mjs.map diff --git a/dist/appstore-main.mjs.map b/dist/appstore-main.mjs.map index 08ebffee7e753..c6cd08db0c7cb 100644 --- a/dist/appstore-main.mjs.map +++ b/dist/appstore-main.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["_hoisted_1","_sfc_main","defineComponent","__props","_ctx","_cache","openBlock","createElementBlock","NcAppNavigationSpacer","_export_sfc","event","_hoisted_2","_sfc_render","$props","$setup","$data","$options","normalizeClass","args","createElementVNode","toDisplayString","renderSlot","NcAppSidebarTab","APPSTORE_CATEGORY_NAMES","t","APPSTORE_CATEGORY_ICONS","mdiStarCircleOutline","mdiAccountOutline","mdiCheck","mdiClose","mdiArchiveOutline","mdiStarShootingOutline","mdiStar","mdiDownload","mdiCreationOutline","mdiKeyOutline","mdiCogOutline","mdiViewColumnOutline","mdiFolder","mdiControllerClassicOutline","mdiOpenInApp","mdiMonitorEye","mdiMultimedia","mdiFileDocumentEdit","mdiOfficeBuildingOutline","mdiMagnify","mdiSecurity","mdiAccountMultipleOutline","mdiTools","mdiClipboardFlowOutline","APP_DISCOVER_KNOWN_TYPES","addPasswordConfirmationInterceptors","axios","BASE_URL","generateOcsUrl","Url","queue","PQueue","enableApp","appId","force","groups","PwdConfirmationMode","disableApp","updateApp","uninstallApp","getApps","data","getCategories","category","enableBundle","bundleId","rebuildNavigation","emit","canInstall","app","canUninstall","canEnable","isInitializing","isDeploying","canForceEnable","needForceEnable","canDisable","canUpdate","restrictedTypes","canLimitToGroups","type","logger","getLoggerBuilder","props","__emit","itemTitle","computed","_createBlock","_unref","NcListItem","_createTextVNode","_toDisplayString","store","useExAppsStore","_createElementBlock","_normalizeClass","$style","_openBlock","_Fragment","_renderList","daemon","DaemonSelectionDialogListEntry","$event","$emit","appApiAdminPage","generateUrl","NcDialog","NcEmptyContent","_createVNode","NcIconSvgWrapper","mdiFormatListBulleted","NcButton","DaemonSelectionDialogList","fetchApps","fetchAppStatus","enableExApp","deployOptions","confirmPassword","forceEnableExApp","disableExApp","defineStore","isEnabled","loadState","apps","ref","updateCount","statusUpdater","daemonAccessible","defaultDaemon","dockerDaemons","initializingOrDeployingApps","getById","id","exAppApi.enableExApp","spawnDialog","DaemonSelectionDialog","forceEnableApp","exAppApi.forceEnableExApp","initialize","exAppApi.disableExApp","error","showError","fetchDockerDaemons","fetchAllApps","exAppApi.fetchApps","status","exAppApi.fetchAppStatus","e","updateAppsStatus","useAppsStore","exApps","appstoreApps","categories","bundles","readonly","isLoadingApps","isLoadingCategories","getCategoryById","categoryId","getAppById","getAppsByCategory","api.enableApp","api.disableApp","api.uninstallApp","limitAppToGroups","bundle","b","api.enableBundle","loadCategories","api.getCategories","loadApps","api.getApps","useUpdatesStore","internalUpdateCount","api.updateApp","useUserSettingsStore","defaultGridSize","isGridView","showIncompatible","gridSizePx","getQuery","gridMode","useRoute","useRouter","to","updateFromQuery","query","appstoreEnabled","updateStore","userSettings","categoriesLoading","route","router","searchElement","useTemplateRef","useHotKey","search","watch","newQuery","watchDebounced","newValue","oldValue","isSubscribed","level","NcAppNavigation","NcAppNavigationSearch","NcAppNavigationItem","NcCounterBubble","NcLoadingIcon","inlineActions","action","menuActions","NcActions","NcActionButton","NcActionLink","NcActionRouter","gpuSupport","mdiFileChart","_createElementVNode","M","O","G","u","_","k","n","r","i","s","m","be","Re","Oe","Te","C","we","Q","se","ie","ye","j","Pe","F","Se","$e","v","U","_e","oe","Le","K","ne","Me","ze","Ee","Ie","ae","Ae","z","H","W","Ce","le","Be","De","qe","ue","ve","He","pe","Ze","Ge","Ne","Qe","je","Fe","Ue","Ke","We","Xe","q","Je","ce","he","Ve","re","X","Ye","N","et","B","E","tt","ke","T","J","V","a","o","l","I","de","ge","fe","nt","w","p","c","h","R","f","S","ee","te","me","xe","Z","A","d","x","y","$","P","D","L","g","useMarkdown","text","options","renderer","marked","markedBlockquote","markedLink","markedImage","minHeading","getMarkedHeading","markdown","toValue","dompurify","href","title","url","out","depth","renderMarkdown","mdiTextShort","MarkdownPreview","isSupported","isFeatured","badgeIcon","badgeText","badgeTitle","isShown","score","appScore","fullStars","emptyStars","hasHalfStar","index","mdiStarHalfFull","mdiStarOutline","useGroupsStore","fetchGroupById","groupId","internalFetchGroupById","searchGroups","group","getGroupById","useLimitedGroups","groupsStore","groupsAppIsLimitedTo","promises","results","idLimitedToGroups","useId","lastModified","release","date","appAuthors","authorName","appstoreUrl","externalResources","resources","appCategories","cannotLimitToGroups","xmlNode","mdiTextBoxOutline","BadgeAppLevel","BadgeAppDaemon","BadgeAppScore","NcNoteCard","dep","_hoisted_3","_hoisted_5","NcDateTime","resource","_hoisted_7","releases","values","changelog","createChangelogFromRelease","getLanguage","mdiClockFast","actionDisable","actionEnable","actionForceEnable","mdiAlertCircleCheckOutline","actionInstall","actionInstallForced","actionsInteract","mdiBugOutline","mdiForumOutline","mdiWeb","LimitToGroupDialog","defineAsyncComponent","__vitePreload","LimitToGroupDialog$1","actionLimitToGroup","mdiAccountGroup","actionRemove","mdiTrashCanOutline","actionUpdate","mdiUpdate","actions","useActions","useAppIcon","appIcon","categoryIcon","path","name","icon","mdiCog","watchEffect","rawSvg","licenseText","activeTab","hideAppDetails","screenshotLoaded","hasScreenshot","loadScreenshot","image","onMounted","NcAppSidebar","AppDescriptionTab","AppReleasesTab","AppDetailsTab","AppDeployDaemonTab","AppActions","currentCategory","heading","pageTitle","showSidebar","NcContent","AppstoreNavigation","NcAppContent","_component_router_view","AppstoreSidebar","AppstoreDiscover","AppstoreManage","AppstoreBundles","AppstoreBrowse","AppstoreSearch","routes","createRouter","createWebHistory","pinia","createPinia","createApp","AppstoreApp","loading","availableGroups","onSearch","useDebounceFn","onSave","onReset","NcSelectUsers","isSvg","svgIcon","response","detailsRoute","detailsAction","mdiInformationOutline","rawActions","AppIcon","_hoisted_4","_hoisted_6","NcChip","tableElement","tableWidth","useElementSize","isNarrow","isWide","AppTableRow","appBundles","canEnableBundle","isBundleEnabled","enableAll","mdiDownloadMultiple","AppTable"],"ignoreList":[0,1,18],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSpacer-CIRC4ZEj.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebarTab-DOSDDbGA.mjs","../build/frontend/apps/appstore/src/constants.ts","../build/frontend/apps/appstore/src/service/api.ts","../build/frontend/apps/appstore/src/service/rebuild-navigation.ts","../build/frontend/apps/appstore/src/utils/appStatus.ts","../build/frontend/apps/appstore/src/utils/logger.ts","../build/frontend/apps/appstore/src/components/DaemonSelectionDialog/DaemonSelectionDialogListEntry.vue","../build/frontend/apps/appstore/src/components/DaemonSelectionDialog/DaemonSelectionDialogList.vue","../build/frontend/apps/appstore/src/components/DaemonSelectionDialog/DaemonSelectionDialog.vue","../build/frontend/apps/appstore/src/service/exAppApi.ts","../build/frontend/apps/appstore/src/store/exApps.ts","../build/frontend/apps/appstore/src/store/apps.ts","../build/frontend/apps/appstore/src/store/updates.ts","../build/frontend/apps/appstore/src/store/userSettings.ts","../build/frontend/apps/appstore/src/views/AppstoreNavigation.vue","../build/frontend/apps/appstore/src/components/AppActions.vue","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppDeployDaemonTab.vue","../node_modules/marked/lib/marked.esm.js","../build/frontend/apps/appstore/src/composables/useMarkdown.ts","../build/frontend/apps/appstore/src/components/MarkdownPreview.vue","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppDescriptionTab.vue","../build/frontend/apps/appstore/src/components/BadgeAppDaemon.vue","../build/frontend/apps/appstore/src/components/BadgeAppLevel.vue","../build/frontend/apps/appstore/src/components/BadgeAppScore.vue","../build/frontend/apps/appstore/src/store/groups.ts","../build/frontend/apps/appstore/src/composables/useLimitedGroups.ts","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppDetailsTab.vue","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppReleasesTab.vue","../build/frontend/apps/appstore/src/actions/actionDisable.ts","../build/frontend/apps/appstore/src/actions/actionEnable.ts","../build/frontend/apps/appstore/src/actions/actionForceEnable.ts","../build/frontend/apps/appstore/src/actions/actionInstall.ts","../build/frontend/apps/appstore/src/actions/actionInstallForced.ts","../build/frontend/apps/appstore/src/actions/actionInteract.ts","../build/frontend/apps/appstore/src/actions/actionLimitToGroup.ts","../build/frontend/apps/appstore/src/actions/actionRemove.ts","../build/frontend/apps/appstore/src/actions/actionUpdate.ts","../build/frontend/apps/appstore/src/actions/index.ts","../build/frontend/apps/appstore/src/composables/useActions.ts","../build/frontend/apps/appstore/src/composables/useAppIcon.ts","../build/frontend/apps/appstore/src/views/AppstoreSidebar.vue","../build/frontend/apps/appstore/src/AppstoreApp.vue","../build/frontend/apps/appstore/src/router/routes.ts","../build/frontend/apps/appstore/src/router/index.ts","../build/frontend/apps/appstore/src/main.ts","../build/frontend/apps/appstore/src/components/LimitToGroupDialog.vue","../build/frontend/apps/appstore/src/components/AppIcon.vue","../build/frontend/apps/appstore/src/components/AppTable/AppTableRow.vue","../build/frontend/apps/appstore/src/components/AppTable/AppTable.vue","../build/frontend/apps/appstore/src/views/AppstoreBundles.vue"],"sourcesContent":["import '../assets/NcAppNavigationSpacer-LST5uYYS.css';\nimport { defineComponent, openBlock, createElementBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = { class: \"app-navigation-spacer\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationSpacer\",\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"li\", _hoisted_1);\n };\n }\n});\nconst NcAppNavigationSpacer = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-277fa710\"]]);\nexport {\n NcAppNavigationSpacer as N\n};\n//# sourceMappingURL=NcAppNavigationSpacer-CIRC4ZEj.mjs.map\n","import '../assets/NcAppSidebarTab-Xd3HTDbw.css';\nimport { openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, renderSlot } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcAppSidebarTab\",\n inject: [\"registerTab\", \"unregisterTab\", \"getActiveTab\", \"isTablistShown\"],\n props: {\n /**\n * Unique id of the sidebar tab\n */\n id: {\n type: String,\n required: true\n },\n /**\n * Tab name in navigation\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Tab icon's html class in navigation. Used if #icon slot is not provided\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Tab order in navigation. If not provided, name is used.\n */\n order: {\n type: Number,\n default: 0\n }\n },\n emits: [\n \"bottomReached\",\n \"scroll\"\n ],\n expose: [\"id\", \"name\", \"icon\", \"order\", \"renderIcon\"],\n computed: {\n /**\n * Is the current tab an active tab, that should be shown?\n *\n * @return {boolean}\n */\n isActive() {\n return this.getActiveTab() === this.id;\n }\n },\n created() {\n this.registerTab(this);\n },\n beforeUnmount() {\n this.unregisterTab(this.id);\n },\n methods: {\n onScroll(event) {\n if (this.$el.scrollHeight - this.$el.scrollTop === this.$el.clientHeight) {\n this.$emit(\"bottomReached\", event);\n }\n this.$emit(\"scroll\", event);\n },\n /**\n * Render tab's icon slot if any\n *\n * @return {import('vue').VNode[]}\n */\n renderIcon() {\n return this.$slots.icon?.();\n }\n }\n};\nconst _hoisted_1 = [\"id\", \"aria-hidden\", \"aria-label\", \"aria-labelledby\", \"role\", \"tabindex\"];\nconst _hoisted_2 = { class: \"hidden-visually\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"section\", {\n id: `tab-${$props.id}`,\n \"aria-hidden\": !$options.isActive,\n \"aria-label\": $options.isTablistShown() ? void 0 : $props.name,\n \"aria-labelledby\": $options.isTablistShown() ? `tab-button-${$props.id}` : void 0,\n class: normalizeClass([\"app-sidebar__tab\", { \"app-sidebar__tab--active\": $options.isActive }]),\n role: $options.isTablistShown() ? \"tabpanel\" : void 0,\n tabindex: $options.isTablistShown() ? 0 : -1,\n onScroll: _cache[0] || (_cache[0] = (...args) => $options.onScroll && $options.onScroll(...args))\n }, [\n createElementVNode(\"h3\", _hoisted_2, toDisplayString($props.name), 1),\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 42, _hoisted_1);\n}\nconst NcAppSidebarTab = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-dba10798\"]]);\nexport {\n NcAppSidebarTab as N\n};\n//# sourceMappingURL=NcAppSidebarTab-DOSDDbGA.mjs.map\n","/**\n * SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tmdiAccountMultipleOutline,\n\tmdiAccountOutline,\n\tmdiArchiveOutline,\n\tmdiCheck,\n\tmdiClipboardFlowOutline,\n\tmdiClose,\n\tmdiCogOutline,\n\tmdiControllerClassicOutline,\n\tmdiCreationOutline,\n\tmdiDownload,\n\tmdiFileDocumentEdit,\n\tmdiFolder,\n\tmdiKeyOutline,\n\tmdiMagnify,\n\tmdiMonitorEye,\n\tmdiMultimedia,\n\tmdiOfficeBuildingOutline,\n\tmdiOpenInApp,\n\tmdiSecurity,\n\tmdiStar,\n\tmdiStarCircleOutline,\n\tmdiStarShootingOutline,\n\tmdiTools,\n\tmdiViewColumnOutline,\n} from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\n\n/**\n * The names of the special appstore sections\n */\nexport const APPSTORE_CATEGORY_NAMES = Object.freeze({\n\tdiscover: t('appstore', 'Discover'),\n\tinstalled: t('appstore', 'Your apps'),\n\tenabled: t('appstore', 'Active apps'),\n\tdisabled: t('appstore', 'Disabled apps'),\n\tupdates: t('appstore', 'Updates'),\n\tbundles: t('appstore', 'App bundles'),\n\tfeatured: t('appstore', 'Featured apps'),\n\tsupported: t('appstore', 'Supported apps'), // From subscription\n\tsearch: t('appstore', 'Search results'),\n})\n\n/**\n * SVG paths used for appstore category icons\n */\nexport const APPSTORE_CATEGORY_ICONS = Object.freeze({\n\t// system special categories\n\tdiscover: mdiStarCircleOutline,\n\tinstalled: mdiAccountOutline,\n\tenabled: mdiCheck,\n\tdisabled: mdiClose,\n\tbundles: mdiArchiveOutline,\n\tsupported: mdiStarShootingOutline,\n\tfeatured: mdiStar,\n\tupdates: mdiDownload,\n\n\t// generic category\n\tai: mdiCreationOutline,\n\tauth: mdiKeyOutline,\n\tcustomization: mdiCogOutline,\n\tdashboard: mdiViewColumnOutline,\n\tfiles: mdiFolder,\n\tgames: mdiControllerClassicOutline,\n\tintegration: mdiOpenInApp,\n\tmonitoring: mdiMonitorEye,\n\tmultimedia: mdiMultimedia,\n\toffice: mdiFileDocumentEdit,\n\torganization: mdiOfficeBuildingOutline,\n\tsearch: mdiMagnify,\n\tsecurity: mdiSecurity,\n\tsocial: mdiAccountMultipleOutline,\n\ttools: mdiTools,\n\tworkflow: mdiClipboardFlowOutline,\n})\n\n/**\n * Currently known types of app discover section elements\n */\nexport const APP_DISCOVER_KNOWN_TYPES = ['post', 'showcase', 'carousel'] as const\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\nimport type { IAppstoreApp, IAppstoreCategory } from '../apps.d.ts'\n\nimport axios from '@nextcloud/axios'\nimport { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport PQueue from 'p-queue'\nimport { APPSTORE_CATEGORY_ICONS } from '../constants.ts'\n\naddPasswordConfirmationInterceptors(axios)\n\nconst BASE_URL = generateOcsUrl('apps/appstore/api/v1')\nconst Url = Object.freeze({\n\tapps: `${BASE_URL}/apps`,\n\tcategories: `${BASE_URL}/apps/categories`,\n\tenable: `${BASE_URL}/apps/enable`,\n\tdisable: `${BASE_URL}/apps/disable`,\n\tuninstall: `${BASE_URL}/apps/uninstall`,\n\tupdate: `${BASE_URL}/apps/update`,\n\tbundleEnable: `${BASE_URL}/bundles/enable`,\n})\n\nconst queue = new PQueue({ concurrency: 1 })\n\n/**\n * Enable an app by its app id\n *\n * @param appId - The app to enable\n * @param force - Whether to force enable the app\n * @param groups - The groups to enable the app for\n */\nexport async function enableApp(appId: string, force = false, groups?: string[]) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.enable, { appId, groups, force: force || undefined }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n\n/**\n * Disable app by its app id\n *\n * @param appId - The app to disable\n */\nexport async function disableApp(appId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.disable, { appId }, { confirmPassword: PwdConfirmationMode.Lax })\n\t})\n}\n\n/**\n * Update an app by its app id\n *\n * @param appId - The app id to update\n */\nexport async function updateApp(appId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.update, { appId }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n\n/**\n * Uninstall an app by its app id\n *\n * @param appId - The app to uninstall\n */\nexport async function uninstallApp(appId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.uninstall, { appId }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n\n/**\n * Get all apps from the appstore\n */\nexport async function getApps() {\n\tconst { data } = await axios.get>(Url.apps)\n\treturn data.ocs.data\n}\n\n/**\n * Get app categories\n */\nexport async function getCategories() {\n\tconst { data } = await axios.get>(Url.categories)\n\tfor (const category of data.ocs.data) {\n\t\tcategory.icon = APPSTORE_CATEGORY_ICONS[category.id] ?? ''\n\t}\n\treturn data.ocs.data\n}\n\n/**\n * Enable an app bundle by its id\n *\n * @param bundleId - The id of the bundle to enable\n */\nexport async function enableBundle(bundleId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.bundleEnable, { bundleId }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios from '@nextcloud/axios'\nimport { emit } from '@nextcloud/event-bus'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Rebuilds the app navigation menu\n */\nexport async function rebuildNavigation() {\n\tconst { data } = await axios.get(generateOcsUrl('core/navigation/apps?format=json'))\n\tif (data.ocs.meta.statuscode !== 200) {\n\t\treturn\n\t}\n\n\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\twindow.dispatchEvent(new Event('resize'))\n}\n","/*!\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\n/**\n * Check if an app can be installed.\n *\n * @param app - The app to check if installable\n */\nexport function canInstall(app: IAppstoreApp | IAppstoreExApp) {\n\tif (app.installed || app.internal) {\n\t\treturn false\n\t}\n\n\tif (app.missingDependencies === undefined || app.missingDependencies.length === 0) {\n\t\treturn true\n\t}\n\n\tif (!app.isCompatible && app.missingDependencies.length === 1) {\n\t\t// incompatible so can be installed but has to be force-enabled\n\t\treturn true\n\t}\n\n\treturn false\n}\n\n/**\n * Check if an app can be uninstalled.\n *\n * @param app - The app to check if uninstallable\n */\nexport function canUninstall(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.installed && app.removable && !app.active\n}\n\n/**\n * Check if app can be enabled.\n *\n * @param app - The app to check\n */\nexport function canEnable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !isInitializing(app) && !isDeploying(app) && canForceEnable(app) && app.isCompatible\n}\n\n/**\n * Check if an app can be force-enabled\n *\n * @param app - The app to check\n */\nexport function canForceEnable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !app.active && (app.installed || canInstall(app))\n}\n\n/**\n * Check if an app needs to be force-enabled\n *\n * @param app - The app to check\n */\nexport function needForceEnable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !app.active && !app.isCompatible\n}\n\n/**\n * Check if an app can be disabled.\n *\n * @param app - The app to check\n */\nexport function canDisable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !isInitializing(app) && !isDeploying(app) && app.active && !app.internal\n}\n\n/**\n * Check if an app can be updated.\n *\n * @param app - The app to check if update-able\n */\nexport function canUpdate(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.update !== undefined\n}\n\nconst restrictedTypes = ['filesystem', 'prelogin', 'authentication', 'logging', 'prevent_group_restriction']\n\n/**\n * Check if an app can be limited to groups\n *\n * @param app - The app to check if can be limited to groups\n */\nexport function canLimitToGroups(app: IAppstoreApp | IAppstoreExApp) {\n\tif (!app.active && !app.installed) {\n\t\treturn false\n\t}\n\n\tif (!app.active && needForceEnable(app)) {\n\t\treturn false\n\t}\n\n\tif (!app.types) {\n\t\treturn true\n\t}\n\n\treturn app.types.every((type) => !restrictedTypes.includes(type))\n}\n\n/**\n * Check if an app is currently being initialized.\n *\n * @param app - The app to check\n */\nfunction isInitializing(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.app_api\n\t\t&& (app.status.action === 'init' || app.status.action === 'healthcheck')\n}\n\n/**\n * Check if an app is currently being deployed.\n *\n * @param app - The app to check\n */\nfunction isDeploying(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.app_api\n\t\t&& app.status.action === 'deploy'\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('appstore')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","/*!\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { IAppstoreExApp, IDeployDaemon, IDeployOptions, IExAppStatus } from '../apps.d.ts'\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * Fetch all external (app_api) apps from the server.\n */\nexport async function fetchApps() {\n\tconst { data } = await axios.get(generateUrl('/apps/app_api/apps/list'))\n\treturn data.apps as IAppstoreExApp[]\n}\n\n/**\n * Get the status of an external app.\n *\n * @param appId - The app to fetch\n */\nexport async function fetchAppStatus(appId: string) {\n\tconst { data } = await axios.get(generateUrl(`/apps/app_api/apps/status/${appId}`))\n\treturn data\n}\n\n/**\n * Enable an external app.\n *\n * @param app - The app to enable\n * @param daemon - The daemon to use for deployment\n * @param deployOptions - Additional options for deployment\n */\nexport async function enableExApp(app: IAppstoreExApp, daemon: IDeployDaemon, deployOptions?: IDeployOptions) {\n\tawait confirmPassword()\n\tawait axios.post(generateUrl(`/apps/app_api/apps/enable/${app.id}/${daemon.name}`), { deployOptions })\n}\n\n/**\n * Force enable an external app\n *\n * @param appId - The app to force-enable\n */\nexport async function forceEnableExApp(appId: string) {\n\tawait confirmPassword()\n\tawait axios.post(generateUrl('/apps/app_api/apps/force'), { appId })\n}\n\n/**\n * Disable an external app.\n *\n * @param appId - The app to disable\n */\nexport async function disableExApp(appId: string) {\n\tawait confirmPassword()\n\tawait axios.get(generateUrl(`apps/app_api/apps/disable/${appId}`))\n}\n\n/**\n * Remove an external app.\n *\n * @param appId - The app to uninstall\n * @param removeData - If all data should be removed\n */\nexport async function uninstallExApp(appId: string, removeData = false) {\n\tawait confirmPassword()\n\tawait axios.get(generateUrl(`/apps/app_api/apps/uninstall/${appId}?removeData=${removeData}`))\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreExApp, IDeployDaemon, IExAppStatus } from '../apps.d.ts'\n\nimport axios from '@nextcloud/axios'\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport { spawnDialog } from '@nextcloud/vue'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport DaemonSelectionDialog from '../components/DaemonSelectionDialog/DaemonSelectionDialog.vue'\nimport * as exAppApi from '../service/exAppApi.ts'\nimport logger from '../utils/logger.ts'\n\nexport const useExAppsStore = defineStore('external-apps', () => {\n\t/**\n\t * Is the App API enabled\n\t */\n\tconst isEnabled = loadState('appstore', 'appApiEnabled', false)\n\n\t/**\n\t * All external apps available\n\t */\n\tconst apps = ref([])\n\n\t/**\n\t * Number of external apps with available updates, used to show the update badge in the UI\n\t */\n\tconst updateCount = ref(loadState('appstore', 'appstoreExAppUpdateCount', 0))\n\n\t/**\n\t * The interval ID for the status updater\n\t */\n\tlet statusUpdater: number | null = null\n\n\t/**\n\t * Whether at least one of the configured daemons is accessible.\n\t */\n\tconst daemonAccessible = ref(loadState('appstore', 'defaultDaemonConfigAccessible', false))\n\n\t/**\n\t * The default daemon, used for apps that don't specify a daemon or have a daemon that is not accessible.\n\t */\n\tconst defaultDaemon = ref(loadState('appstore', 'defaultDaemonConfig', null))\n\n\t/**\n\t * The list of daemons that support docker-based deployment, used to show the daemon selection when enabling an app.\n\t */\n\tconst dockerDaemons = ref([])\n\n\tconst initializingOrDeployingApps = computed(() => apps.value\n\t\t.filter((app) => app?.status?.action\n\t\t\t&& app.status.type !== ''\n\t\t\t&& (app?.status?.action === 'deploy' || app.status.action === 'init' || app.status.action === 'healthcheck')))\n\n\t/**\n\t * Get an external app by its ID\n\t *\n\t * @param appId - The app ID\n\t */\n\tfunction getById(appId: string): IAppstoreExApp | null {\n\t\treturn apps.value.find(({ id }) => id === appId) ?? null\n\t}\n\n\t/**\n\t * Enable an exApp.\n\t *\n\t * @param appId - The app ID\n\t */\n\tasync function enableApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (dockerDaemons.value.length === 1 && app.needsDownload) {\n\t\t\t\texAppApi.enableExApp(app, dockerDaemons[0])\n\t\t\t\tapp.daemon = dockerDaemons[0]\n\t\t\t} else if (app.needsDownload) {\n\t\t\t\tconst daemon = await spawnDialog(DaemonSelectionDialog, { app })\n\t\t\t\tif (!daemon) {\n\t\t\t\t\tthrow new Error('No daemon selected')\n\t\t\t\t}\n\t\t\t\tawait exAppApi.enableExApp(app, daemon)\n\t\t\t\tapp.daemon = daemon\n\t\t\t} else {\n\t\t\t\tawait exAppApi.enableExApp(app, app.daemon!)\n\t\t\t}\n\n\t\t\tif (!app.installed) {\n\t\t\t\tapp.needsDownload = false\n\t\t\t\tapp.status = {\n\t\t\t\t\ttype: 'install',\n\t\t\t\t\taction: 'deploy',\n\t\t\t\t\tinit: 0,\n\t\t\t\t\tdeploy: 0,\n\t\t\t\t} as IExAppStatus\n\t\t\t}\n\t\t\tapp.removable = true\n\t\t\tdelete app.error\n\n\t\t\tawait fetchAppStatus(appId)\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Force enable an exApp by ignoring its dependencies.\n\t *\n\t * @param appId - The app to force-enable\n\t */\n\tasync function forceEnableApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait exAppApi.forceEnableExApp(appId)\n\t\t\tawait initialize(true)\n\t\t\tapp.active = false\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * @param appId - The app to disable\n\t */\n\tasync function disableApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait exAppApi.disableExApp(appId)\n\t\t\tapp.active = false\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Uninstall an app by its id\n\t *\n\t * @param appId - The app to uninstall\n\t */\n\tasync function uninstallApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait exAppApi.disableExApp(appId)\n\t\t\tapp.active = false\n\t\t\tapp.needsDownload = true\n\t\t\tapp.installed = false\n\t\t\tapp.daemon = null\n\t\t\tapp.status = {}\n\t\t\tif (app.update !== null) {\n\t\t\t\tupdateCount.value--\n\t\t\t}\n\t\t\tdelete app.update\n\t\t\tdelete app.error\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Update an external app\n\t *\n\t * @param appId - The app ID\n\t */\n\tasync function updateApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait axios.get(generateUrl(`/apps/app_api/apps/update/${appId}`))\n\t\t\tapp.version = app.update || app.version\n\t\t\tapp.status = {\n\t\t\t\ttype: 'update',\n\t\t\t\taction: 'deploy',\n\t\t\t\tinit: 0,\n\t\t\t\tdeploy: 0,\n\t\t\t} satisfies IExAppStatus\n\t\t\tdelete app.update\n\t\t\tdelete app.error\n\t\t\tupdateCount.value--\n\n\t\t\tawait fetchAppStatus(appId)\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to update ex app', { appId, error })\n\t\t\tshowError(t('appstore', 'Could not update the app. Please try again later.'))\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Initialize the store.\n\t * This only needs to be called when an app management operation is performed.\n\t *\n\t * @param force - If the initialization should be forced (to run again)\n\t */\n\tasync function initialize(force = false) {\n\t\tif (force || (!defaultDaemon.value || !dockerDaemons.value.length)) {\n\t\t\tawait fetchDockerDaemons()\n\t\t}\n\t\tif (force || apps.value.length === 0) {\n\t\t\tawait fetchAllApps()\n\t\t}\n\t}\n\n\treturn {\n\t\tisEnabled,\n\n\t\tapps,\n\t\tupdateCount,\n\t\tdefaultDaemon,\n\t\tdockerDaemons,\n\t\tdaemonAccessible,\n\n\t\tgetById,\n\t\tdisableApp,\n\t\tenableApp,\n\t\tforceEnableApp,\n\t\tupdateApp,\n\t\tuninstallApp,\n\t\tinitialize,\n\t}\n\n\t/**\n\t * Fetch the configured docker daemons from the backend.\n\t */\n\tasync function fetchDockerDaemons() {\n\t\ttry {\n\t\t\tconst { data } = await axios.get(generateUrl('/apps/app_api/daemons'))\n\t\t\tdefaultDaemon.value = data.daemons.find((daemon: IDeployDaemon) => daemon.name === data.default_daemon_config)\n\t\t\tdockerDaemons.value = data.daemons.filter((daemon: IDeployDaemon) => daemon.accepts_deploy_id === 'docker-install')\n\t\t} catch (error) {\n\t\t\tlogger.error('[app-api-store] Failed to fetch Docker daemons', { error })\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t}\n\n\t/**\n\t * Fetch the list of external apps from the backend.\n\t */\n\tasync function fetchAllApps() {\n\t\ttry {\n\t\t\tapps.value = await exAppApi.fetchApps()\n\t\t} catch (error) {\n\t\t\tlogger.error('An error occurred while fetching apps', { error })\n\t\t\tshowError(t('appstore', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t}\n\n\t/**\n\t * Get the status of an external app.\n\t *\n\t * @param appId - The app ID to fetch the status for\n\t */\n\tasync function fetchAppStatus(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tlogger.error('[app-api-store] app not found while fetching status', { appId })\n\t\t\treturn\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tconst status = await exAppApi.fetchAppStatus(appId)\n\t\t\tapp.status = status\n\t\t\tlogger.debug('[app-api-store] initializingOrDeployingApps after setAppStatus', { initializingOrDeployingApps })\n\t\t\tif (initializingOrDeployingApps.value.length === 0) {\n\t\t\t\tlogger.debug('[app-api-store] Clearing interval')\n\t\t\t\tclearInterval(statusUpdater as number)\n\t\t\t\tstatusUpdater = null\n\t\t\t}\n\t\t\tif (app.status.error && initializingOrDeployingApps.value.length === 1) {\n\t\t\t\tclearInterval(statusUpdater as number)\n\t\t\t\tstatusUpdater = null\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tupdateAppsStatus()\n\t\t\tthrow e\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Update the status of all apps that are currently initializing or deploying\n\t */\n\tfunction updateAppsStatus() {\n\t\tclearInterval(statusUpdater as number)\n\t\tif (initializingOrDeployingApps.value.length === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tstatusUpdater = window.setInterval(() => {\n\t\t\tlogger.debug('[app-api-store] initializingOrDeployingApps', { initializingOrDeployingApps })\n\t\t\tfor (const app of initializingOrDeployingApps.value) {\n\t\t\t\tfetchAppStatus(app.id)\n\t\t\t}\n\t\t}, 2000)\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppBundle, IAppstoreApp, IAppstoreCategory, IAppstoreExApp } from '../apps.d.ts'\n\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { defineStore } from 'pinia'\nimport { computed, readonly, ref } from 'vue'\nimport * as api from '../service/api.ts'\nimport { rebuildNavigation } from '../service/rebuild-navigation.ts'\nimport { canDisable, canInstall, canLimitToGroups, canUninstall, needForceEnable } from '../utils/appStatus.ts'\nimport logger from '../utils/logger.ts'\nimport { useExAppsStore } from './exApps.ts'\n\nexport const useAppsStore = defineStore('apps', () => {\n\tconst exApps = useExAppsStore()\n\n\t/**\n\t * All apps available in the appstore\n\t */\n\tconst appstoreApps = ref([])\n\t/**\n\t * All app categories available in the appstore\n\t */\n\tconst categories = ref([])\n\t/**\n\t * All app bundles available in the appstore\n\t */\n\tconst bundles = readonly(loadState('appstore', 'appstoreBundles'))\n\n\t/**\n\t * Loading state of the store\n\t */\n\tconst isLoadingApps = ref(false)\n\tconst isLoadingCategories = ref(false)\n\n\t/**\n\t * All apps available\n\t */\n\tconst apps = computed(() => [...appstoreApps.value, ...(exApps.isEnabled ? exApps.apps : [])])\n\n\t/**\n\t * Get a category by its id\n\t *\n\t * @param categoryId - The id of the category\n\t */\n\tfunction getCategoryById(categoryId: string) {\n\t\treturn categories.value.find(({ id }) => id === categoryId) ?? null\n\t}\n\n\t/**\n\t * Get an app by its id\n\t *\n\t * @param appId - The id of the app\n\t */\n\tfunction getAppById(appId: string): IAppstoreApp | IAppstoreExApp | null {\n\t\treturn apps.value.find(({ id }) => id === appId) ?? null\n\t}\n\n\t/**\n\t * Get all apps of a category\n\t *\n\t * @param categoryId - The id of the category\n\t */\n\tfunction getAppsByCategory(categoryId: string): (IAppstoreApp | IAppstoreExApp)[] {\n\t\treturn apps.value.filter((app) => [app.category].flat().includes(categoryId))\n\t}\n\n\t/**\n\t * Enable an app by its id\n\t *\n\t * @param appId - The app to enable\n\t * @param force - Whether to force enable the app\n\t */\n\tasync function enableApp(appId: string, force = false) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (app.active || (!app.installed && !canInstall(app))) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be enabled`)\n\t\t}\n\n\t\tif (!force && needForceEnable(app)) {\n\t\t\tthrow new Error(`App with id ${appId} requires force enable`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (app.app_api) {\n\t\t\t\tawait exApps.enableApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.enableApp(appId, force)\n\t\t\t}\n\t\t\tif (force) {\n\t\t\t\tapp.isCompatible = true\n\t\t\t}\n\t\t\tapp.active = true\n\t\t\tapp.installed = true\n\t\t\tapp.removable = true\n\t\t\tawait rebuildNavigation()\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Disable an app by its id\n\t *\n\t * @param appId - The app to disable\n\t */\n\tasync function disableApp(appId: string) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (!canDisable(app)) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be disabled`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (app.app_api) {\n\t\t\t\tawait exApps.disableApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.disableApp(appId)\n\t\t\t}\n\t\t\tapp.active = false\n\t\t\t// revert \"force enable\"\n\t\t\tapp.isCompatible = app.missingDependencies === undefined || app.missingDependencies.length === 0\n\t\t\tawait rebuildNavigation()\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Uninstall an app by its id\n\t *\n\t * @param appId - The app to uninstall\n\t */\n\tasync function uninstallApp(appId: string) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (!canUninstall(app)) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be uninstalled`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (app.app_api) {\n\t\t\t\tawait exApps.uninstallApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.uninstallApp(appId)\n\t\t\t}\n\t\t\tapp.active = false\n\t\t\tapp.installed = false\n\t\t\tawait rebuildNavigation()\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Limit access to an app to specific groups\n\t *\n\t * @param appId - The app to limit access to\n\t * @param groups - The groups which should have access\n\t */\n\tasync function limitAppToGroups(appId: string, groups: string[]) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (!canLimitToGroups(app)) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be limited to groups`)\n\t\t}\n\n\t\tif (app.app_api) {\n\t\t\treturn\n\t\t}\n\n\t\ttry {\n\t\t\tapp.loading = true\n\t\t\tawait api.enableApp(appId, false, groups)\n\t\t\tapp.groups = groups\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Enable a whole bundle of apps by its id\n\t *\n\t * @param bundleId - The id of the bundle to enable\n\t */\n\tasync function enableBundle(bundleId: string) {\n\t\tconst bundle = bundles.find((b) => b.id === bundleId)\n\t\tif (!bundle) {\n\t\t\tthrow new Error(`Bundle with id ${bundleId} not found`)\n\t\t}\n\n\t\ttry {\n\t\t\tfor (const appId of bundle.appIdentifiers) {\n\t\t\t\tconst app = getAppById(appId)!\n\t\t\t\tapp.loading = true\n\t\t\t}\n\t\t\tawait api.enableBundle(bundle.id)\n\t\t\tfor (const appId of bundle.appIdentifiers) {\n\t\t\t\tconst app = getAppById(appId)!\n\t\t\t\tapp.active = true\n\t\t\t\tapp.installed = true\n\t\t\t\tapp.removable = true\n\t\t\t\tawait rebuildNavigation()\n\t\t\t}\n\t\t} finally {\n\t\t\tfor (const appId of bundle.appIdentifiers) {\n\t\t\t\tconst app = getAppById(appId)!\n\t\t\t\tapp.loading = false\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Load the app categories from the backend\n\t */\n\tasync function loadCategories() {\n\t\ttry {\n\t\t\tisLoadingCategories.value = true\n\t\t\tcategories.value = await api.getCategories()\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to load app categories', { error })\n\t\t\tshowError(t('appstore', 'Could not load app categories. Please try again later.'))\n\t\t} finally {\n\t\t\tisLoadingCategories.value = false\n\t\t}\n\t}\n\n\t/**\n\t * Load the apps from the backend\n\t */\n\tasync function loadApps() {\n\t\ttry {\n\t\t\tisLoadingApps.value = true\n\t\t\tappstoreApps.value = await api.getApps()\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to load apps list', { error })\n\t\t\tshowError(t('appstore', 'Could not load apps list. Please try again later.'))\n\t\t} finally {\n\t\t\tisLoadingApps.value = false\n\t\t}\n\t}\n\n\t// initialize store\n\tloadApps()\n\tloadCategories()\n\n\treturn {\n\t\tapps,\n\t\tbundles,\n\t\tcategories,\n\t\tisLoadingApps,\n\t\tisLoadingCategories,\n\n\t\tdisableApp,\n\t\tenableApp,\n\t\tuninstallApp,\n\t\tenableBundle,\n\n\t\tgetAppById,\n\t\tgetAppsByCategory,\n\t\tgetCategoryById,\n\t\tlimitAppToGroups,\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport * as api from '../service/api.ts'\nimport { rebuildNavigation } from '../service/rebuild-navigation.ts'\nimport logger from '../utils/logger.ts'\nimport { useAppsStore } from './apps.ts'\nimport { useExAppsStore } from './exApps.ts'\n\nexport const useUpdatesStore = defineStore('updates', () => {\n\tconst exApps = useExAppsStore()\n\n\t/**\n\t * Number of apps with available updates\n\t */\n\tconst internalUpdateCount = ref(loadState('appstore', 'appstoreUpdateCount', 0))\n\n\t/**\n\t * Total number of apps with available updates\n\t */\n\tconst updateCount = computed(() => internalUpdateCount.value + exApps.updateCount)\n\n\t/**\n\t * Update the given app\n\t *\n\t * @param appId - The app id to update\n\t * @throws {Error} if the app is not found\n\t */\n\tasync function updateApp(appId: string) {\n\t\tconst store = useAppsStore()\n\n\t\tconst app = store.getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\ttry {\n\t\t\tif ('app_api' in app && app.app_api) {\n\t\t\t\tawait exApps.updateApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.updateApp(appId)\n\t\t\t\tinternalUpdateCount.value = Math.max(internalUpdateCount.value - 1, 0)\n\t\t\t}\n\n\t\t\tapp.update = undefined\n\t\t\trebuildNavigation()\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to update app', { appId, error })\n\t\t\tshowError(t('appstore', 'Could not update the app. Please try again later.'))\n\t\t}\n\t}\n\n\treturn {\n\t\tupdateCount,\n\t\tupdateApp,\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { LocationQuery } from 'vue-router'\n\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\nexport const useUserSettingsStore = defineStore('userSettings', () => {\n\tconst defaultGridSize = ref('')\n\n\tconst isGridView = ref(false)\n\tconst showIncompatible = ref(true)\n\n\tconst gridSizePx = computed(() => {\n\t\tif (defaultGridSize.value === 'm') {\n\t\t\treturn '468px'\n\t\t} else if (defaultGridSize.value === 'l') {\n\t\t\treturn '512px'\n\t\t}\n\t\treturn '320px'\n\t})\n\n\t/**\n\t * Get the query parameters for the current settings\n\t *\n\t * @param gridMode Optional override for the grid mode, if not provided it will use the current setting\n\t */\n\tfunction getQuery(gridMode?: boolean) {\n\t\tconst route = useRoute() ?? {}\n\t\treturn {\n\t\t\t...route.query,\n\t\t\tgrid: (gridMode ?? isGridView.value) ? (defaultGridSize.value || null) : undefined,\n\t\t\tcompatible: showIncompatible.value ? undefined : null,\n\t\t}\n\t}\n\n\tconst router = useRouter()\n\trouter.afterEach((to) => {\n\t\tupdateFromQuery(to.query)\n\t})\n\n\treturn {\n\t\tdefaultGridSize,\n\t\tgridSizePx,\n\n\t\tisGridView,\n\t\tshowIncompatible,\n\n\t\tgetQuery,\n\t}\n\n\t/**\n\t * Initializes the store with the current query parameters\n\t *\n\t * @param query The query parameters to initialize the store with\n\t */\n\tfunction updateFromQuery(query: LocationQuery) {\n\t\tisGridView.value = 'grid' in query\n\t\tdefaultGridSize.value = [query.grid ?? ''].flat()[0]!.toLowerCase()\n\t\tshowIncompatible.value = !('compatible' in query)\n\t}\n})\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/**\n * marked v17.0.6 - a markdown parser\n * Copyright (c) 2018-2026, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction M(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var O=M();function G(u){O=u}var _={exec:()=>null};function k(u,e=\"\"){let t=typeof u==\"string\"?u:u.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var be=(()=>{try{return!!new RegExp(\"(?<=1)(?/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] +\\S/,listReplaceTask:/^\\[[ xX]\\] +/,listTaskCheckbox:/\\[[ xX]\\]/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^
/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:u=>new RegExp(`^( {0,3}${u})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}#`),htmlBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}<(?:[a-z].*>|!--)`,\"i\"),blockquoteBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}>`)},Re=/^(?:[ \\t]*(?:\\n|$))+/,Oe=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Te=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,C=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,we=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,Q=/ {0,3}(?:[*+-]|\\d{1,9}[.)])/,se=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,ie=k(se).replace(/bull/g,Q).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),ye=k(se).replace(/bull/g,Q).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),j=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,Pe=/^[^\\n]+/,F=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,Se=k(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",F).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),$e=k(/^(bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,Q).getRegex(),v=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",U=/|$))/,_e=k(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|\\\\n*|$)|\\\\n*|$)|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",U).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),oe=k(j).replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]\").replace(\"html\",\")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Le=k(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",oe).getRegex(),K={blockquote:Le,code:Oe,def:Se,fences:Te,heading:we,hr:C,html:_e,lheading:ie,list:$e,newline:Re,paragraph:oe,table:_,text:Pe},ne=k(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]\").replace(\"html\",\")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Me={...K,lheading:ye,table:ne,paragraph:k(j).replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",ne).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]\").replace(\"html\",\")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},ze={...K,html:k(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",U).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:_,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:k(j).replace(\"hr\",C).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",ie).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Ee=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,Ie=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,ae=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`+)[^`]+\\k(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",be?\"(?`+)[^`]+\\k(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ue=/^(?:\\*+(?:((?!\\*)punct)|([^\\s*]))?)|^_+(?:((?!_)punct)|([^\\s_]))?/,ve=k(ue,\"u\").replace(/punct/g,z).getRegex(),He=k(ue,\"u\").replace(/punct/g,le).getRegex(),pe=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",Ze=k(pe,\"gu\").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Ge=k(pe,\"gu\").replace(/notPunctSpace/g,De).replace(/punctSpace/g,Be).replace(/punct/g,le).getRegex(),Ne=k(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Qe=k(/^~~?(?:((?!~)punct)|[^\\s~])/,\"u\").replace(/punct/g,z).getRegex(),je=\"^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)\",Fe=k(je,\"gu\").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Ue=k(/\\\\(punct)/,\"gu\").replace(/punct/g,z).getRegex(),Ke=k(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),We=k(U).replace(\"(?:-->|$)\",\"-->\").getRegex(),Xe=k(\"^comment|^|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^|^\").replace(\"comment\",We).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\])|[^\\[\\]\\\\`])*?/,Je=k(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]+(?:\\n[ \\t]*)?|\\n[ \\t]*)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),ce=k(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",F).getRegex(),he=k(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",F).getRegex(),Ve=k(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",ce).replace(\"nolink\",he).getRegex(),re=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,X={_backpedal:_,anyPunctuation:Ue,autolink:Ke,blockSkip:qe,br:ae,code:Ie,del:_,delLDelim:_,delRDelim:_,emStrongLDelim:ve,emStrongRDelimAst:Ze,emStrongRDelimUnd:Ne,escape:Ee,link:Je,nolink:he,punctuation:Ce,reflink:ce,reflinkSearch:Ve,tag:Xe,text:Ae,url:_},Ye={...X,link:k(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:k(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},N={...X,emStrongRDelimAst:Ge,emStrongLDelim:He,delLDelim:Qe,delRDelim:Fe,url:k(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",re).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:k(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\\":\">\",'\"':\""\",\"'\":\"'\"},ke=u=>tt[u];function T(u,e){if(e){if(m.escapeTest.test(u))return u.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(u))return u.replace(m.escapeReplaceNoEncode,ke);return u}function J(u){try{u=encodeURI(u).replace(m.percentDecode,\"%\")}catch{return null}return u}function V(u,e){let t=u.replace(m.findPipe,(i,s,a)=>{let o=!1,l=s;for(;--l>=0&&a[l]===\"\\\\\";)o=!o;return o?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length0?-2:-1}function ge(u,e=0){let t=e,n=\"\";for(let r of u)if(r===\"\t\"){let i=4-t%4;n+=\" \".repeat(i),t+=i}else n+=r,t++;return n}function fe(u,e,t,n,r){let i=e.href,s=e.title||null,a=u[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let o={type:u[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function nt(u,e,t){let n=u.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`\n`)}var w=class{options;rules;lexer;constructor(e){this.options=e||O}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:I(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=nt(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=I(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:I(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=I(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let a=!1,o=[],l;for(l=0;l1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let l=!1,p=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let d=ge(t[2].split(`\n`,1)[0],t[1].length),h=e.split(`\n`,1)[0],R=!d.trim(),f=0;if(this.options.pedantic?(f=2,c=d.trimStart()):R?f=t[1].length+1:(f=d.search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=d.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(p+=h+`\n`,e=e.substring(h.length+1),l=!0),!l){let S=this.rules.other.nextBulletRegex(f),Y=this.rules.other.hrRegex(f),ee=this.rules.other.fencesBeginRegex(f),te=this.rules.other.headingBeginRegex(f),me=this.rules.other.htmlBeginRegex(f),xe=this.rules.other.blockquoteBeginRegex(f);for(;e;){let Z=e.split(`\n`,1)[0],A;if(h=Z,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting,\" \"),A=h):A=h.replace(this.rules.other.tabCharGlobal,\" \"),ee.test(h)||te.test(h)||me.test(h)||xe.test(h)||S.test(h)||Y.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`\n`+A.slice(f);else{if(R||d.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||ee.test(d)||te.test(d)||Y.test(d))break;c+=`\n`+h}R=!h.trim(),p+=Z+`\n`,e=e.substring(Z.length+1),d=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(a=!0)),i.items.push({type:\"list_item\",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),i.raw+=p}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l of i.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0]?.type===\"text\"||l.tokens[0]?.type===\"paragraph\"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,\"\");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,\"\");break}}let p=this.rules.other.listTaskCheckbox.exec(l.raw);if(p){let c={type:\"checkbox\",raw:p[0]+\" \",checked:p[0]!==\"[ ]\"};l.checked=c.checked,i.loose?l.tokens[0]&&[\"paragraph\",\"text\"].includes(l.tokens[0].type)&&\"tokens\"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=c.raw+l.tokens[0].raw,l.tokens[0].text=c.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(c)):l.tokens.unshift({type:\"paragraph\",raw:c.raw,text:c.raw,tokens:[c]}):l.tokens.unshift(c)}}if(!i.loose){let p=l.tokens.filter(d=>d.type===\"space\"),c=p.length>0&&p.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=c}}if(i.loose)for(let l of i.items){l.loose=!0;for(let p of l.tokens)p.type===\"text\"&&(p.type=\"paragraph\")}return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(a)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(a)?s.align.push(\"left\"):s.align.push(null);for(let a=0;a({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[l]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=I(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=de(t[2],\"()\");if(s===-2)return;if(s>-1){let o=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),fe(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return fe(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[3]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){l+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){p+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l+p);let d=[...r[0]][0].length,h=e.slice(0,s+r.index+d+o);if(Math.min(s,o)%2){let f=h.slice(1,-1);return{type:\"em\",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:\"strong\",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e,t,n=\"\"){let r=this.rules.inline.delLDelim.exec(e);if(!r)return;if(!(r[1]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=this.rules.inline.delRDelim;for(p.lastIndex=0,t=t.slice(-1*e.length+s);(r=p.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a||(o=[...a].length,o!==s))continue;if(r[3]||r[4]){l+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l);let c=[...r[0]][0].length,d=e.slice(0,s+r.index+c+o),h=d.slice(s,-s);return{type:\"del\",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var x=class u{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||O,this.options.tokenizer=this.options.tokenizer||new w,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:B.normal,inline:E.normal};this.options.pedantic?(t.block=B.pedantic,t.inline=E.pedantic):this.options.gfm&&(t.block=B.gfm,this.options.breaks?t.inline=E.breaks:t.inline=E.gfm),this.tokenizer.rules=t}static get rules(){return{block:B,inline:E}}static lex(e,t){return new u(t).lex(e)}static lexInline(e,t){return new u(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,a=e.slice(1),o;this.options.extensions.startBlock.forEach(l=>{o=l.call({lexer:this},a),typeof o==\"number\"&&o>=0&&(s=Math.min(s,o))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+\"[\"+\"a\".repeat(r[0].length-i-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a=\"\";for(;e;){s||(a=\"\"),s=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=t.at(-1);o.type===\"text\"&&p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let l=e;if(this.options.extensions?.startInline){let p=1/0,c=e.slice(1),d;this.options.extensions.startInline.forEach(h=>{d=h.call({lexer:this},c),typeof d==\"number\"&&d>=0&&(p=Math.min(p,d))}),p<1/0&&p>=0&&(l=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(l)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(a=o.raw.slice(-1)),s=!0;let p=t.at(-1);p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(e){let p=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return t}};var y=class{options;parser;constructor(e){this.options=e||O}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'
'+(n?i:T(i,!0))+`
\n`:\"
\"+(n?i:T(i,!0))+`
\n`}blockquote({tokens:e}){return`
\n${this.parser.parse(e)}
\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)}\n`}hr(e){return`
\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let a=0;a\n`+r+\"\n`}listitem(e){return`
  • ${this.parser.parse(e.tokens)}
  • \n`}checkbox({checked:e}){return\" '}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    \n`}table(e){let t=\"\",n=\"\";for(let i=0;i${r}`),`\n\n`+t+`\n`+r+`
    \n`}tablerow({text:e}){return`\n${e}\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`\n`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${T(e,!0)}`}br(e){return\"
    \"}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='
    \"+r+\"\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return T(n);e=i;let s=`\"${T(n)}\"`;return\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:T(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}checkbox({raw:e}){return e}};var b=class u{options;renderer;textRenderer;constructor(e){this.options=e||O,this.options.renderer=this.options.renderer||new y,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new u(t).parse(e)}static parseInline(e,t){return new u(t).parseInline(e)}parse(e){this.renderer.parser=this;let t=\"\";for(let n=0;n{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new y(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let a=s,o=n.renderer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new w(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let a=s,o=n.tokenizer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new P;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let a=s,o=n.hooks[a],l=i[a];P.passThroughHooks.has(s)?i[a]=p=>{if(this.defaults.async&&P.passThroughHooksRespectAsync.has(s))return(async()=>{let d=await o.call(i,p);return l.call(i,d)})();let c=o.call(i,p);return l.call(i,c)}:i[a]=(...p)=>{if(this.defaults.async)return(async()=>{let d=await o.apply(i,p);return d===!1&&(d=await l.apply(i,p)),d})();let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return a(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return a(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,p=await(s.hooks?await s.hooks.provideLexer(e):e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(p):p;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser(e):e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let l=(s.hooks?s.hooks.provideLexer(e):e?x.lex:x.lexInline)(n,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let c=(s.hooks?s.hooks.provideParser(e):e?b.parse:b.parseInline)(l,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"

    An error occurred:

    \"+T(n.message+\"\",!0)+\"
    \";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var L=new D;function g(u,e){return L.parse(u,e)}g.options=g.setOptions=function(u){return L.setOptions(u),g.defaults=L.defaults,G(g.defaults),g};g.getDefaults=M;g.defaults=O;g.use=function(...u){return L.use(...u),g.defaults=L.defaults,G(g.defaults),g};g.walkTokens=function(u,e){return L.walkTokens(u,e)};g.parseInline=L.parseInline;g.Parser=b;g.parser=b.parse;g.Renderer=y;g.TextRenderer=$;g.Lexer=x;g.lexer=x.lex;g.Tokenizer=w;g.Hooks=P;g.parse=g;var Qt=g.options,jt=g.setOptions,Ft=g.use,Ut=g.walkTokens,Kt=g.parseInline,Wt=g,Xt=b.parse,Jt=x.lex;export{P as Hooks,x as Lexer,D as Marked,b as Parser,y as Renderer,$ as TextRenderer,w as Tokenizer,O as defaults,M as getDefaults,Jt as lexer,g as marked,Qt as options,Wt as parse,Kt as parseInline,Xt as parser,jt as setOptions,Ft as use,Ut as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Tokens } from 'marked'\nimport type { MaybeRefOrGetter } from 'vue'\n\nimport dompurify from 'dompurify'\nimport { marked } from 'marked'\nimport { computed, toValue } from 'vue'\n\nexport interface MarkdownOptions {\n\tminHeadingLevel?: number\n}\n\n/**\n * Render Markdown to HTML\n *\n * @param text - The Markdown source\n * @param options - Markdown options\n */\nexport function useMarkdown(text: MaybeRefOrGetter, options?: MarkdownOptions) {\n\tconst renderer = new marked.Renderer()\n\trenderer.blockquote = markedBlockquote\n\trenderer.link = markedLink\n\trenderer.image = markedImage\n\n\treturn computed(() => {\n\t\tconst minHeading = options?.minHeadingLevel ?? 1\n\t\trenderer.heading = getMarkedHeading(minHeading)\n\t\tconst markdown = toValue(text).trim()\n\n\t\treturn dompurify.sanitize(\n\t\t\tmarked(markdown, {\n\t\t\t\tasync: false,\n\t\t\t\trenderer,\n\t\t\t\tgfm: false,\n\t\t\t\tbreaks: false,\n\t\t\t\tpedantic: false,\n\t\t\t}),\n\t\t\t{\n\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t'h1',\n\t\t\t\t\t'h2',\n\t\t\t\t\t'h3',\n\t\t\t\t\t'h4',\n\t\t\t\t\t'h5',\n\t\t\t\t\t'h6',\n\t\t\t\t\t'strong',\n\t\t\t\t\t'p',\n\t\t\t\t\t'a',\n\t\t\t\t\t'ul',\n\t\t\t\t\t'ol',\n\t\t\t\t\t'li',\n\t\t\t\t\t'em',\n\t\t\t\t\t'del',\n\t\t\t\t\t'blockquote',\n\t\t\t\t],\n\t\t\t},\n\t\t)\n\t})\n}\n\n/**\n * Custom link renderer that only allows http and https links\n *\n * @param ctx - The render context\n * @param ctx.href - The link href\n * @param ctx.title - The link title\n * @param ctx.text - The link text\n */\nfunction markedLink({ href, title, text }: Tokens.Link) {\n\tlet url: URL\n\ttry {\n\t\turl = new URL(href)\n\t} catch {\n\t\treturn ''\n\t}\n\n\tif (url.protocol !== 'http:' && url.protocol !== 'https:') {\n\t\treturn ''\n\t}\n\n\tlet out = ''\n\treturn out\n}\n\n/**\n * Only render image alt text or title\n *\n * @param ctx - The render context\n * @param ctx.title - The image title\n * @param ctx.text - The image alt text\n */\nfunction markedImage({ title, text }: Tokens.Image): string {\n\tif (text) {\n\t\treturn text\n\t}\n\treturn title ?? ''\n}\n\n/**\n * Render block quotes without any special styling\n *\n * @param ctx - The render context\n * @param ctx.text - The blockquote text\n */\nfunction markedBlockquote({ text }: Tokens.Blockquote): string {\n\treturn `
    ${text}
    `\n}\n\n/**\n * Get a custom heading renderer that clamps heading levels\n *\n * @param minHeading - The heading to clamp to\n */\nfunction getMarkedHeading(minHeading: number) {\n\t/**\n\t * Custom heading renderer that adjusts heading levels\n\t *\n\t * @param ctx - The render context\n\t * @param ctx.text - The heading text\n\t * @param ctx.depth - The heading depth\n\t */\n\treturn ({ text, depth }: Tokens.Heading): string => {\n\t\tdepth = Math.min(6, depth + (minHeading - 1))\n\t\treturn `${text}`\n\t}\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/**\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\nimport type { NcSelectUsersModel } from '@nextcloud/vue/components/NcSelectUsers'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport PQueue from 'p-queue'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport logger from '../utils/logger.ts'\n\nconst queue = new PQueue({ concurrency: 3 })\n\nexport const useGroupsStore = defineStore('groups', () => {\n\tconst groups = ref(new Map())\n\n\t/**\n\t * Get group details by id\n\t *\n\t * @param groupId - The id of the group to fetch\n\t */\n\tasync function fetchGroupById(groupId: string) {\n\t\treturn await queue.add(() => internalFetchGroupById(groupId))\n\t}\n\n\t/**\n\t * Search the API for groups matching the query\n\t *\n\t * @param query - Query to search\n\t */\n\tasync function searchGroups(query: string) {\n\t\tconst url = generateOcsUrl('/cloud/groups/details')\n\t\ttry {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst { data } = await axios.get>(url, {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch: query.trim(),\n\t\t\t\t\tlimit: 10,\n\t\t\t\t},\n\t\t\t})\n\t\t\tfor (const group of data.ocs.data.groups) {\n\t\t\t\tif (groups.value.has(group.id)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tgroups.value.set(group.id, {\n\t\t\t\t\tid: group.id,\n\t\t\t\t\tdisplayName: group.displayname,\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to search groups', { error })\n\t\t}\n\t}\n\n\t/**\n\t * Get a group by its id\n\t *\n\t * @param groupId - The id of the group to retrieve\n\t */\n\tfunction getGroupById(groupId: string) {\n\t\treturn groups.value.get(groupId)\n\t}\n\n\treturn {\n\t\tgroups: computed(() => Array.from(groups.value.values())),\n\t\tsearchGroups,\n\t\tgetGroupById,\n\t\tfetchGroupById,\n\t}\n\n\t/**\n\t * Handle fetching group details by id\n\t *\n\t * @param groupId - The id of the group to fetch\n\t */\n\tasync function internalFetchGroupById(groupId: string) {\n\t\tif (!groups.value.has(groupId)) {\n\t\t\tawait searchGroups(groupId)\n\t\t}\n\t\treturn groups.value.get(groupId)\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { readonly, ref, toValue, watch } from 'vue'\nimport { useGroupsStore } from '../store/groups.ts'\n\n/**\n * Get the groups an app is limited to and keep it up to date\n *\n * @param app - The app to get the groups\n */\nexport function useLimitedGroups(app: MaybeRefOrGetter) {\n\tconst groupsStore = useGroupsStore()\n\tconst groupsAppIsLimitedTo = ref<{ id: string, displayName: string }[]>([])\n\twatch(() => toValue(app).groups, async () => {\n\t\tconst groups = toValue(app).groups\n\t\tif (groups === undefined) {\n\t\t\tgroupsAppIsLimitedTo.value = []\n\t\t\treturn\n\t\t}\n\n\t\tconst promises = groups.map((group) => groupsStore.fetchGroupById(group))\n\t\tconst results = await Promise.all(promises)\n\t\tgroupsAppIsLimitedTo.value = results.filter(Boolean) as { id: string, displayName: string }[]\n\t}, { immediate: true })\n\n\treturn readonly(groupsAppIsLimitedTo)\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiClose } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canDisable } from '../utils/appStatus.ts'\n\nexport const actionDisable: AppAction = {\n\tid: 'disable',\n\ticon: mdiClose,\n\torder: 10,\n\tenabled: canDisable,\n\tlabel: () => t('appstore', 'Disable'),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.disableApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiCheck } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canEnable, canInstall } from '../utils/appStatus.ts'\n\nexport const actionEnable: AppAction = {\n\tid: 'enable',\n\ticon: mdiCheck,\n\torder: 1,\n\tvariant: 'primary',\n\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\treturn !canInstall(app) && canEnable(app)\n\t},\n\tlabel: () => t('appstore', 'Enable'),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiAlertCircleCheckOutline } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canForceEnable, canInstall, needForceEnable } from '../utils/appStatus.ts'\n\nexport const actionForceEnable: AppAction = {\n\tid: 'force-enable',\n\ticon: mdiAlertCircleCheckOutline,\n\torder: 3,\n\tinline: false,\n\tvariant: 'warning',\n\tlabel: () => t('appstore', 'Force enable'),\n\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\treturn !canInstall(app) && canForceEnable(app) && needForceEnable(app)\n\t},\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id, true)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiDownload } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canInstall, needForceEnable } from '../utils/appStatus.ts'\n\nexport const actionInstall: AppAction = {\n\tid: 'install',\n\ticon: mdiDownload,\n\torder: 5,\n\tenabled(app) {\n\t\treturn canInstall(app) && !needForceEnable(app)\n\t},\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => {\n\t\tif (app.app_api) {\n\t\t\treturn t('appstore', 'Deploy and enable')\n\t\t}\n\t\tif (app.needsDownload) {\n\t\t\treturn t('appstore', 'Download and enable')\n\t\t}\n\t\treturn t('appstore', 'Install and enable')\n\t},\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiDownload } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canInstall, needForceEnable } from '../utils/appStatus.ts'\n\nexport const actionInstallForced: AppAction = {\n\tid: 'install-forced',\n\ticon: mdiDownload,\n\torder: 5,\n\tinline: false,\n\tenabled(app) {\n\t\treturn canInstall(app) && needForceEnable(app)\n\t},\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => {\n\t\tif (app.app_api) {\n\t\t\treturn t('appstore', 'Deploy and force enable')\n\t\t}\n\t\tif (app.needsDownload) {\n\t\t\treturn t('appstore', 'Download and force enable')\n\t\t}\n\t\treturn t('appstore', 'Install and force enable')\n\t},\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id, true)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiBugOutline, mdiForumOutline, mdiStarOutline, mdiWeb } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\n\nexport const actionsInteract: AppAction[] = [\n\t{\n\t\tid: 'rate',\n\t\ticon: mdiStarOutline,\n\t\torder: 30,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Rate the app'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !app.shipped\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn `https://apps.nextcloud.com/apps/${encodeURIComponent(app.id)}#comments`\n\t\t},\n\t},\n\t{\n\t\tid: 'report-bug',\n\t\ticon: mdiBugOutline,\n\t\torder: 32,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Report a bug'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !!app.bugs\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn app.bugs!\n\t\t},\n\t},\n\t{\n\t\tid: 'discussion',\n\t\ticon: mdiForumOutline,\n\t\torder: 35,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Ask questions or discuss the app'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !!app.discussion\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn app.discussion!\n\t\t},\n\t},\n\t{\n\t\tid: 'website',\n\t\ticon: mdiWeb,\n\t\torder: 38,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Visit the website'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !!app.website\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn app.website!\n\t\t},\n\t},\n]\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiAccountGroup } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { spawnDialog } from '@nextcloud/vue'\nimport { defineAsyncComponent } from 'vue'\nimport { canLimitToGroups } from '../utils/appStatus.ts'\n\nconst LimitToGroupDialog = defineAsyncComponent(() => import('../components/LimitToGroupDialog.vue'))\n\nexport const actionLimitToGroup: AppAction = {\n\tid: 'limit-to-group',\n\ticon: mdiAccountGroup,\n\torder: 16,\n\tinline: false,\n\tlabel: () => t('appstore', 'Limit to groups'),\n\tenabled: canLimitToGroups,\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tawait spawnDialog(LimitToGroupDialog, { app })\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiTrashCanOutline } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canUninstall } from '../utils/appStatus.ts'\n\nexport const actionRemove: AppAction = {\n\tid: 'remove',\n\torder: 20,\n\ticon: mdiTrashCanOutline,\n\tvariant: 'error',\n\tinline: false,\n\tenabled: canUninstall,\n\tlabel: () => t('appstore', 'Remove'),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.uninstallApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiUpdate } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useExAppsStore } from '../store/exApps.ts'\nimport { useUpdatesStore } from '../store/updates.ts'\nimport { canUpdate } from '../utils/appStatus.ts'\n\nexport const actionUpdate: AppAction = {\n\tid: 'update',\n\ticon: mdiUpdate,\n\tvariant: 'primary',\n\torder: 0,\n\tenabled(app) {\n\t\tif (!canUpdate(app)) {\n\t\t\treturn false\n\t\t}\n\t\tif (app.app_api) {\n\t\t\tif (app.daemon && app.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst exAppsStore = useExAppsStore()\n\t\t\treturn exAppsStore.daemonAccessible\n\t\t}\n\t\treturn true\n\t},\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => t('appstore', 'Update to {version}', { version: app.update! }),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useUpdatesStore()\n\t\tawait store.updateApp(app.id)\n\t},\n}\n","/*\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { RouteLocationRaw } from 'vue-router'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { actionDisable } from './actionDisable.ts'\nimport { actionEnable } from './actionEnable.ts'\nimport { actionForceEnable } from './actionForceEnable.ts'\nimport { actionInstall } from './actionInstall.ts'\nimport { actionInstallForced } from './actionInstallForced.ts'\nimport { actionsInteract } from './actionInteract.ts'\nimport { actionLimitToGroup } from './actionLimitToGroup.ts'\nimport { actionRemove } from './actionRemove.ts'\nimport { actionUpdate } from './actionUpdate.ts'\n\ninterface AppActionBase {\n\tenabled: (app: IAppstoreApp | IAppstoreExApp) => boolean\n\n\tid: string\n\ticon: string\n\torder: number\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => string\n\tvariant?: 'primary' | 'error' | 'warning'\n\tinline?: boolean\n}\n\ninterface AppActionWithCallback extends AppActionBase {\n\tcallback: (app: IAppstoreApp | IAppstoreExApp) => Promise\n}\n\ninterface AppActionWithHref extends AppActionBase {\n\thref: (app: IAppstoreApp | IAppstoreExApp) => string\n}\n\ninterface AppActionWithRoute extends AppActionBase {\n\tto: (app: IAppstoreApp | IAppstoreExApp) => RouteLocationRaw\n}\n\nexport type AppAction = AppActionWithCallback | AppActionWithHref | AppActionWithRoute\n\nexport const actions = [\n\tactionUpdate,\n\tactionEnable,\n\tactionDisable,\n\tactionForceEnable,\n\tactionInstall,\n\tactionInstallForced,\n\tactionRemove,\n\tactionLimitToGroup,\n\t...actionsInteract,\n].sort((a, b) => a.order - b.order)\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { computed, toValue } from 'vue'\nimport { actions } from '../actions/index.ts'\n\n/**\n * Get the available actions for an app\n *\n * @param app - The app to get the actions for\n */\nexport function useActions(app: MaybeRefOrGetter) {\n\treturn computed(() => toValue(app) ? actions.filter((action) => action.enabled(toValue(app)!)) : [])\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Ref } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { mdiCog, mdiCogOutline } from '@mdi/js'\nimport { computed, ref, watchEffect } from 'vue'\nimport { APPSTORE_CATEGORY_ICONS } from '../constants.ts'\nimport logger from '../utils/logger.ts'\n\n/**\n * Get the app icon raw SVG for use with `NcIconSvgWrapper` (do never use without sanitizing)\n * It has a fallback to the categroy icon.\n *\n * @param app The app to get the icon for\n */\nexport function useAppIcon(app: Ref) {\n\tconst appIcon = ref(null)\n\n\t/**\n\t * Fallback value if no app icon available\n\t */\n\tconst categoryIcon = computed(() => {\n\t\tlet path: string\n\t\tif (app.value?.app_api) {\n\t\t\t// Use different default icon for ExApps (AppAPI)\n\t\t\tpath = mdiCogOutline\n\t\t} else {\n\t\t\tpath = [app.value?.category ?? []].flat()\n\t\t\t\t.map((name) => APPSTORE_CATEGORY_ICONS[name])\n\t\t\t\t.filter((icon) => !!icon)\n\t\t\t\t.at(0)\n\t\t\t\t?? (!app.value?.app_api ? mdiCog : mdiCogOutline)\n\t\t}\n\t\treturn path ? `` : null\n\t})\n\n\twatchEffect(async () => {\n\t\t// Note: Only variables until the first `await` will be watched!\n\t\tif (!app.value?.icon) {\n\t\t\tappIcon.value = categoryIcon.value\n\t\t} else {\n\t\t\tappIcon.value = null\n\t\t\t// Now try to load the real app icon\n\t\t\ttry {\n\t\t\t\tconst response = await window.fetch(app.value.icon)\n\t\t\t\tconst blob = await response.blob()\n\t\t\t\tconst rawSvg = await blob.text()\n\t\t\t\tappIcon.value = rawSvg.replaceAll(/fill=\"#(fff|ffffff)([a-z0-9]{1,2})?\"/ig, 'fill=\"currentColor\"')\n\t\t\t} catch (error) {\n\t\t\t\tappIcon.value = categoryIcon.value\n\t\t\t\tlogger.error('Could not load app icon', { error })\n\t\t\t}\n\t\t}\n\t})\n\n\treturn {\n\t\tappIcon,\n\t}\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { RouteRecordRaw } from 'vue-router'\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst appstoreEnabled = loadState('appstore', 'appstoreEnabled', true)\n\n// Dynamic loading\nconst AppstoreDiscover = () => import('../views/AppstoreDiscover.vue')\nconst AppstoreManage = () => import('../views/AppstoreManage.vue')\nconst AppstoreBundles = () => import('../views/AppstoreBundles.vue')\nconst AppstoreBrowse = () => import('../views/AppstoreBrowse.vue')\nconst AppstoreSearch = () => import('../views/AppstoreSearch.vue')\n\nconst routes: RouteRecordRaw[] = [\n\t{\n\t\tpath: '/:index(index.php/)?settings/apps',\n\t\tname: 'apps',\n\t\tredirect: appstoreEnabled\n\t\t\t? {\n\t\t\t\t\tname: 'apps-discover',\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tname: 'apps-manage',\n\t\t\t\t\tparams: { category: 'installed' },\n\t\t\t\t},\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tpath: 'discover/:id?',\n\t\t\t\tname: 'apps-discover',\n\t\t\t\tcomponent: AppstoreDiscover,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'bundles/:id?',\n\t\t\t\tname: 'apps-bundles',\n\t\t\t\tcomponent: AppstoreBundles,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: ':category(installed|enabled|disabled|updates)/:id?',\n\t\t\t\tname: 'apps-manage',\n\t\t\t\tcomponent: AppstoreManage,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: ':category/:id?',\n\t\t\t\tname: 'apps-category',\n\t\t\t\tcomponent: AppstoreBrowse,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'search/:id?',\n\t\t\t\tname: 'apps-search',\n\t\t\t\tcomponent: AppstoreSearch,\n\t\t\t},\n\t\t],\n\t},\n]\n\nexport default routes\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport { createRouter, createWebHistory } from 'vue-router'\nimport routes from './routes.ts'\n\nconst router = createRouter({\n\thistory: createWebHistory(generateUrl('')),\n\tlinkActiveClass: 'active',\n\troutes,\n})\n\nexport default router\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createPinia } from 'pinia'\nimport { createApp } from 'vue'\nimport AppstoreApp from './AppstoreApp.vue'\nimport router from './router/index.ts'\n\nimport 'vite/modulepreload-polyfill'\n\nconst pinia = createPinia()\nconst app = createApp(AppstoreApp)\napp.config.idPrefix = 'appstore'\napp.use(pinia)\napp.use(router)\napp.mount('#content')\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"file":"appstore-main.mjs"} \ No newline at end of file +{"version":3,"mappings":";o/FAGA,MAAMA,GAAa,CAAE,MAAO,uBAAuB,EAC7CC,GAA4BC,EAAgB,CAChD,OAAQ,wBACR,MAAMC,EAAS,CACb,MAAO,CAACC,EAAMC,KACLC,EAAS,EAAIC,EAAmB,KAAMP,EAAU,EAE3D,CACF,CAAC,EACKQ,GAAwCC,GAAYR,GAAW,CAAC,CAAC,YAAa,iBAAiB,CAAC,CAAC,ECTjGA,GAAY,CAChB,KAAM,kBACN,OAAQ,CAAC,cAAe,gBAAiB,eAAgB,gBAAgB,EACzE,MAAO,CAIL,GAAI,CACF,KAAM,OACN,SAAU,EAChB,EAII,KAAM,CACJ,KAAM,OACN,SAAU,EAChB,EAII,KAAM,CACJ,KAAM,OACN,QAAS,EACf,EAII,MAAO,CACL,KAAM,OACN,QAAS,CACf,CACA,EACE,MAAO,CACL,gBACA,QACJ,EACE,OAAQ,CAAC,KAAM,OAAQ,OAAQ,QAAS,YAAY,EACpD,SAAU,CAMR,UAAW,CACT,OAAO,KAAK,iBAAmB,KAAK,EACtC,CACJ,EACE,SAAU,CACR,KAAK,YAAY,IAAI,CACvB,EACA,eAAgB,CACd,KAAK,cAAc,KAAK,EAAE,CAC5B,EACA,QAAS,CACP,SAASS,EAAO,CACV,KAAK,IAAI,aAAe,KAAK,IAAI,YAAc,KAAK,IAAI,cAC1D,KAAK,MAAM,gBAAiBA,CAAK,EAEnC,KAAK,MAAM,SAAUA,CAAK,CAC5B,EAMA,YAAa,CACX,OAAO,KAAK,OAAO,OAAI,CACzB,CACJ,CACA,EACMV,GAAa,CAAC,KAAM,cAAe,aAAc,kBAAmB,OAAQ,UAAU,EACtFW,GAAa,CAAE,MAAO,iBAAiB,EAC7C,SAASC,GAAYR,EAAMC,EAAQQ,EAAQC,EAAQC,EAAOC,EAAU,CAClE,OAAOV,EAAS,EAAIC,EAAmB,UAAW,CAChD,GAAI,OAAOM,EAAO,EAAE,GACpB,cAAe,CAACG,EAAS,SACzB,aAAcA,EAAS,eAAc,EAAK,OAASH,EAAO,KAC1D,kBAAmBG,EAAS,iBAAmB,cAAcH,EAAO,EAAE,GAAK,OAC3E,MAAOI,EAAe,CAAC,mBAAoB,CAAE,2BAA4BD,EAAS,QAAQ,CAAE,CAAC,EAC7F,KAAMA,EAAS,eAAc,EAAK,WAAa,OAC/C,SAAUA,EAAS,eAAc,EAAK,EAAI,GAC1C,SAAUX,EAAO,CAAC,IAAMA,EAAO,CAAC,EAAI,IAAIa,IAASF,EAAS,UAAYA,EAAS,SAAS,GAAGE,CAAI,EACnG,EAAK,CACDC,EAAmB,KAAMR,GAAYS,EAAgBP,EAAO,IAAI,EAAG,CAAC,EACpEQ,GAAWjB,EAAK,OAAQ,UAAW,GAAI,OAAQ,EAAI,CACvD,EAAK,GAAIJ,EAAU,CACnB,CACA,MAAMsB,GAAkCb,GAAYR,GAAW,CAAC,CAAC,SAAUW,EAAW,EAAG,CAAC,YAAa,iBAAiB,CAAC,CAAC,ECvD7GW,EAA0B,OAAO,OAAO,CACpD,SAAUC,EAAE,WAAY,UAAU,EAClC,UAAWA,EAAE,WAAY,WAAW,EACpC,QAASA,EAAE,WAAY,aAAa,EACpC,SAAUA,EAAE,WAAY,eAAe,EACvC,QAASA,EAAE,WAAY,SAAS,EAChC,QAASA,EAAE,WAAY,aAAa,EACpC,SAAUA,EAAE,WAAY,eAAe,EACvC,UAAWA,EAAE,WAAY,gBAAgB,EACzC,OAAQA,EAAE,WAAY,gBAAgB,CACvC,CAAC,EAKYC,EAA0B,OAAO,OAAO,CAEpD,SAAUC,GACV,UAAWC,GACX,QAASC,GACT,SAAUC,GACV,QAASC,GACT,UAAWC,GACX,SAAUC,GACV,QAASC,GAGT,GAAIC,GACJ,KAAMC,GACN,cAAeC,GACf,UAAWC,GACX,MAAOC,GACP,MAAOC,GACP,YAAaC,GACb,WAAYC,GACZ,WAAYC,GACZ,OAAQC,GACR,aAAcC,GACd,OAAQC,GACR,SAAUC,GACV,OAAQC,GACR,MAAOC,GACP,SAAUC,EACX,CAAC,EAKYC,GAA2B,CAAC,OAAQ,WAAY,UAAU,ECtEvEC,GAAoCC,CAAK,EAEzC,MAAMC,GAAWC,GAAe,sBAAsB,EAChDC,GAAM,OAAO,OAAO,CACzB,KAAM,GAAGF,EAAQ,QACjB,WAAY,GAAGA,EAAQ,mBACvB,OAAQ,GAAGA,EAAQ,eACnB,QAAS,GAAGA,EAAQ,gBACpB,UAAW,GAAGA,EAAQ,kBACtB,OAAQ,GAAGA,EAAQ,eACnB,aAAc,GAAGA,EAAQ,iBAC1B,CAAC,EAEKG,GAAQ,IAAIC,GAAO,CAAE,YAAa,EAAG,EAS3C,eAAsBC,GAAUC,EAAeC,EAAQ,GAAOC,EAAmB,CAChF,OAAOL,GAAM,IAAI,SAAY,CAC5B,MAAMJ,EAAM,KAAKG,GAAI,OAAQ,CAAE,MAAAI,EAAO,OAAAE,EAAQ,MAAOD,GAAS,QAAa,CAAE,gBAAiBE,GAAoB,OAAQ,CAC3H,CAAC,CACF,CAOA,eAAsBC,GAAWJ,EAAe,CAC/C,OAAOH,GAAM,IAAI,SAAY,CAC5B,MAAMJ,EAAM,KAAKG,GAAI,QAAS,CAAE,MAAAI,CAAA,EAAS,CAAE,gBAAiBG,GAAoB,IAAK,CACtF,CAAC,CACF,CAOA,eAAsBE,GAAUL,EAAe,CAC9C,OAAOH,GAAM,IAAI,SAAY,CAC5B,MAAMJ,EAAM,KAAKG,GAAI,OAAQ,CAAE,MAAAI,CAAA,EAAS,CAAE,gBAAiBG,GAAoB,OAAQ,CACxF,CAAC,CACF,CAOA,eAAsBG,GAAaN,EAAe,CACjD,OAAOH,GAAM,IAAI,SAAY,CAC5B,MAAMJ,EAAM,KAAKG,GAAI,UAAW,CAAE,MAAAI,CAAA,EAAS,CAAE,gBAAiBG,GAAoB,OAAQ,CAC3F,CAAC,CACF,CAKA,eAAsBI,IAAU,CAC/B,KAAM,CAAE,KAAAC,CAAA,EAAS,MAAMf,EAAM,IAAiCG,GAAI,IAAI,EACtE,OAAOY,EAAK,IAAI,IACjB,CAKA,eAAsBC,IAAgB,CACrC,KAAM,CAAE,KAAAD,CAAA,EAAS,MAAMf,EAAM,IAAsCG,GAAI,UAAU,EACjF,UAAWc,KAAYF,EAAK,IAAI,KAC/BE,EAAS,KAAO5C,EAAwB4C,EAAS,EAAE,GAAK,GAEzD,OAAOF,EAAK,IAAI,IACjB,CAOA,eAAsBG,GAAaC,EAAkB,CACpD,OAAOf,GAAM,IAAI,SAAY,CAC5B,MAAMJ,EAAM,KAAKG,GAAI,aAAc,CAAE,SAAAgB,CAAA,EAAY,CAAE,gBAAiBT,GAAoB,OAAQ,CACjG,CAAC,CACF,CCzFA,eAAsBU,IAAoB,CACzC,KAAM,CAAE,KAAAL,GAAS,MAAMf,EAAM,IAAiBE,GAAe,kCAAkC,CAAC,EAC5Fa,EAAK,IAAI,KAAK,aAAe,MAIjCM,GAAK,6BAA8B,CAAE,KAAMN,EAAK,IAAI,KAAM,EAC1D,OAAO,cAAc,IAAI,MAAM,QAAQ,CAAC,EACzC,CCVO,SAASO,GAAWC,EAAoC,CAC9D,OAAIA,EAAI,WAAaA,EAAI,SACjB,GAGJA,EAAI,sBAAwB,QAAaA,EAAI,oBAAoB,SAAW,GAI5E,CAACA,EAAI,cAAgBA,EAAI,oBAAoB,SAAW,CAM7D,CAOO,SAASC,GAAaD,EAAoC,CAChE,OAAOA,EAAI,WAAaA,EAAI,WAAa,CAACA,EAAI,MAC/C,CAOO,SAASE,GAAUF,EAAoC,CAC7D,MAAO,CAACG,GAAeH,CAAG,GAAK,CAACI,GAAYJ,CAAG,GAAKK,GAAeL,CAAG,GAAKA,EAAI,YAChF,CAOO,SAASK,GAAeL,EAAoC,CAClE,MAAO,CAACA,EAAI,SAAWA,EAAI,WAAaD,GAAWC,CAAG,EACvD,CAOO,SAASM,GAAgBN,EAAoC,CACnE,MAAO,CAACA,EAAI,QAAU,CAACA,EAAI,YAC5B,CAOO,SAASO,GAAWP,EAAoC,CAC9D,MAAO,CAACG,GAAeH,CAAG,GAAK,CAACI,GAAYJ,CAAG,GAAKA,EAAI,QAAU,CAACA,EAAI,QACxE,CAOO,SAASQ,GAAUR,EAAoC,CAC7D,OAAOA,EAAI,SAAW,MACvB,CAEA,MAAMS,GAAkB,CAAC,aAAc,WAAY,iBAAkB,UAAW,2BAA2B,EAOpG,SAASC,GAAiBV,EAAoC,CAKpE,MAJI,CAACA,EAAI,QAAU,CAACA,EAAI,WAIpB,CAACA,EAAI,QAAUM,GAAgBN,CAAG,EAC9B,GAGHA,EAAI,MAIFA,EAAI,MAAM,MAAOW,GAAS,CAACF,GAAgB,SAASE,CAAI,CAAC,EAHxD,EAIT,CAOA,SAASR,GAAeH,EAAoC,CAC3D,OAAOA,EAAI,UACNA,EAAI,OAAO,SAAW,QAAUA,EAAI,OAAO,SAAW,cAC5D,CAOA,SAASI,GAAYJ,EAAoC,CACxD,OAAOA,EAAI,SACPA,EAAI,OAAO,SAAW,QAC3B,CCrHA,MAAAY,EAAeC,KACb,OAAO,UAAU,EACjB,aACA,sICEF,MAAMC,EAAQtF,EAWRsE,EAAOiB,EAIPC,EAAYC,EAAS,IAAM,GAAGH,EAAM,OAAO,IAAI,MAAMA,EAAM,OAAO,YAAY,EAAE,oBAIrFI,EAWaC,EAAAC,EAAA,GAVX,OAAQ5F,EAAA,UACR,cAAeA,EAAA,OAAO,YACvB,YAAY,cACX,QAASA,EAAA,UAAY2F,EAAAtE,CAAA,EAAC,yBACvB,uBACC,KAAMmE,EAAA,MACN,0BAAYlB,EAAI,yBACN,UACV,IAA8B,CAA3BuB,EAAAC,EAAA9F,EAAA,OAAO,iBAAiB,sJCxB9B,MAAM+F,EAAQC,GAAA,oBAIbC,EASK,MARH,MAAKC,EAAEC,SAAO,yBAAyB,EACvC,aAAYR,EAAAtE,CAAA,EAAC,gDACd+E,EAAA,IAAAH,EAKyCI,EAAA,KAAAC,EAJvBX,EAAAI,CAAA,EAAM,cAAhBQ,QADRb,EAKyCc,GAAA,CAHvC,IAAKD,EAAO,GACZ,OAAAA,EACA,UAAWZ,KAAM,eAAe,OAASY,EAAO,KAChD,WAAQE,GAAEC,QAAK,WAAaH,CAAM,wQCCtC,MAAMR,EAAQC,GAAA,EACRW,EAAkBC,EAAY,yBAAyB,oBAI5DlB,EAuBWC,EAAAkB,EAAA,GAtBT,KAAMlB,EAAAtE,CAAA,EAAC,yDAA8DrB,EAAA,IAAI,KAAI,EAC9E,KAAK,SACJ,gBAAWE,EAAA,KAAAA,EAAA,GAAAuG,GAAEA,GAAUC,QAAK,sBAC7B,IAaiB,CAZVf,EAAAI,CAAA,EAAM,cAAc,SAAM,OADjCL,EAaiBC,EAAAmB,EAAA,SAXhB,MAAM,uCACL,KAAMnB,EAAAtE,CAAA,EAAC,2CACP,YAAasE,EAAAtE,CAAA,EAAC,wEACJ,OACV,IAAkD,CAAlD0F,EAAkDpB,EAAAqB,CAAA,GAA/B,KAAMrB,EAAAsB,EAAA,GAAqB,mBAEpC,SACV,IAEW,CAFXF,EAEWpB,EAAAuB,EAAA,GAFA,KAAMvB,EAAAgB,CAAA,GAAe,WAC/B,IAA4C,KAAzChB,EAAAtE,CAAA,EAAC,kGAKPqE,EAGsCyB,GAAA,OADpC,IAAKnH,EAAA,IACL,WAAQE,EAAA,KAAAA,EAAA,GAAAuG,GAAEC,QAAK,QAAUD,CAAM,4CC1CnC,eAAsBW,IAAY,CACjC,KAAM,CAAE,KAAApD,GAAS,MAAMf,EAAM,IAAI2D,EAAY,yBAAyB,CAAC,EACvE,OAAO5C,EAAK,IACb,CAOA,eAAsBqD,GAAe7D,EAAe,CACnD,KAAM,CAAE,KAAAQ,GAAS,MAAMf,EAAM,IAAkB2D,EAAY,6BAA6BpD,CAAK,EAAE,CAAC,EAChG,OAAOQ,CACR,CASA,eAAsBsD,GAAY9C,EAAqB+B,EAAuBgB,EAAgC,CAC7G,MAAMC,GAAA,EACN,MAAMvE,EAAM,KAAK2D,EAAY,6BAA6BpC,EAAI,EAAE,IAAI+B,EAAO,IAAI,EAAE,EAAG,CAAE,cAAAgB,EAAe,CACtG,CAOA,eAAsBE,GAAiBjE,EAAe,CACrD,MAAMgE,GAAA,EACN,MAAMvE,EAAM,KAAK2D,EAAY,0BAA0B,EAAG,CAAE,MAAApD,EAAO,CACpE,CAOA,eAAsBkE,GAAalE,EAAe,CACjD,MAAMgE,GAAA,EACN,MAAMvE,EAAM,IAAI2D,EAAY,6BAA6BpD,CAAK,EAAE,CAAC,CAClE,CCxCO,MAAMwC,GAAiB2B,GAAY,gBAAiB,IAAM,CAIhE,MAAMC,EAAYC,GAAU,WAAY,gBAAiB,EAAK,EAKxDC,EAAOC,EAAsB,EAAE,EAK/BC,EAAcD,EAAIF,GAAU,WAAY,2BAA4B,CAAC,CAAC,EAK5E,IAAII,EAA+B,KAKnC,MAAMC,EAAmBH,EAAIF,GAAU,WAAY,gCAAiC,EAAK,CAAC,EAKpFM,EAAgBJ,EAAIF,GAAgC,WAAY,sBAAuB,IAAI,CAAC,EAK5FO,EAAgBL,EAAqB,EAAE,EAEvCM,EAA8B5C,EAAS,IAAMqC,EAAK,MACtD,OAAQtD,GAAQA,GAAK,QAAQ,QAC1BA,EAAI,OAAO,OAAS,KACnBA,GAAK,QAAQ,SAAW,UAAYA,EAAI,OAAO,SAAW,QAAUA,EAAI,OAAO,SAAW,cAAc,CAAC,EAO/G,SAAS8D,EAAQ9E,EAAsC,CACtD,OAAOsE,EAAK,MAAM,KAAK,CAAC,CAAE,GAAAS,KAASA,IAAO/E,CAAK,GAAK,IACrD,CAOA,eAAeD,EAAUC,EAAe,CACvC,MAAMgB,EAAM8D,EAAQ9E,CAAK,EACzB,GAAI,CAACgB,EACJ,MAAM,IAAI,MAAM,eAAehB,CAAK,YAAY,EAGjDgB,EAAI,QAAU,GACd,GAAI,CACH,GAAI4D,EAAc,MAAM,SAAW,GAAK5D,EAAI,cAC3CgE,GAAqBhE,EAAK4D,EAAc,CAAC,CAAC,EAC1C5D,EAAI,OAAS4D,EAAc,CAAC,UAClB5D,EAAI,cAAe,CAC7B,MAAM+B,EAAS,MAAMkC,GAAYC,GAAuB,CAAE,IAAAlE,EAAK,EAC/D,GAAI,CAAC+B,EACJ,MAAM,IAAI,MAAM,oBAAoB,EAErC,MAAMiC,GAAqBhE,EAAK+B,CAAM,EACtC/B,EAAI,OAAS+B,CACd,MACC,MAAMiC,GAAqBhE,EAAKA,EAAI,MAAO,EAGvCA,EAAI,YACRA,EAAI,cAAgB,GACpBA,EAAI,OAAS,CACZ,KAAM,UACN,OAAQ,SACR,KAAM,EACN,OAAQ,IAGVA,EAAI,UAAY,GAChB,OAAOA,EAAI,MAEX,MAAM6C,EAAe7D,CAAK,CAC3B,SACCgB,EAAI,QAAU,EACf,CACD,CAOA,eAAemE,EAAenF,EAAe,CAC5C,MAAMgB,EAAM8D,EAAQ9E,CAAK,EACzB,GAAI,CAACgB,EACJ,MAAM,IAAI,MAAM,eAAehB,CAAK,YAAY,EAGjDgB,EAAI,QAAU,GACd,GAAI,CACH,MAAMoE,GAA0BpF,CAAK,EACrC,MAAMqF,EAAW,EAAI,EACrBrE,EAAI,OAAS,EACd,SACCA,EAAI,QAAU,EACf,CACD,CAKA,eAAeZ,EAAWJ,EAAe,CACxC,MAAMgB,EAAM8D,EAAQ9E,CAAK,EACzB,GAAI,CAACgB,EACJ,MAAM,IAAI,MAAM,eAAehB,CAAK,YAAY,EAGjDgB,EAAI,QAAU,GACd,GAAI,CACH,MAAMsE,GAAsBtF,CAAK,EACjCgB,EAAI,OAAS,EACd,SACCA,EAAI,QAAU,EACf,CACD,CAOA,eAAeV,EAAaN,EAAe,CAC1C,MAAMgB,EAAM8D,EAAQ9E,CAAK,EACzB,GAAI,CAACgB,EACJ,MAAM,IAAI,MAAM,eAAehB,CAAK,YAAY,EAGjDgB,EAAI,QAAU,GACd,GAAI,CACH,MAAMsE,GAAsBtF,CAAK,EACjCgB,EAAI,OAAS,GACbA,EAAI,cAAgB,GACpBA,EAAI,UAAY,GAChBA,EAAI,OAAS,KACbA,EAAI,OAAS,GACTA,EAAI,SAAW,MAClBwD,EAAY,QAEb,OAAOxD,EAAI,OACX,OAAOA,EAAI,KACZ,SACCA,EAAI,QAAU,EACf,CACD,CAOA,eAAeX,EAAUL,EAAe,CACvC,MAAMgB,EAAM8D,EAAQ9E,CAAK,EACzB,GAAI,CAACgB,EACJ,MAAM,IAAI,MAAM,eAAehB,CAAK,YAAY,EAGjDgB,EAAI,QAAU,GACd,GAAI,CACH,MAAMvB,EAAM,IAAI2D,EAAY,6BAA6BpD,CAAK,EAAE,CAAC,EACjEgB,EAAI,QAAUA,EAAI,QAAUA,EAAI,QAChCA,EAAI,OAAS,CACZ,KAAM,SACN,OAAQ,SACR,KAAM,EACN,OAAQ,GAET,OAAOA,EAAI,OACX,OAAOA,EAAI,MACXwD,EAAY,QAEZ,MAAMX,EAAe7D,CAAK,CAC3B,OAASuF,EAAO,CACf3D,EAAO,MAAM,0BAA2B,CAAE,MAAA5B,EAAO,MAAAuF,EAAO,EACxDC,GAAU3H,EAAE,WAAY,mDAAmD,CAAC,CAC7E,SACCmD,EAAI,QAAU,EACf,CACD,CAQA,eAAeqE,EAAWpF,EAAQ,GAAO,EACpCA,GAAU,CAAC0E,EAAc,OAAS,CAACC,EAAc,MAAM,SAC1D,MAAMa,EAAA,GAEHxF,GAASqE,EAAK,MAAM,SAAW,IAClC,MAAMoB,EAAA,CAER,CAEA,MAAO,CACN,UAAAtB,EAEA,KAAAE,EACA,YAAAE,EACA,cAAAG,EACA,cAAAC,EACA,iBAAAF,EAEA,QAAAI,EACA,WAAA1E,EACA,UAAAL,EACA,eAAAoF,EACA,UAAA9E,EACA,aAAAC,EACA,WAAA+E,CAAA,EAMD,eAAeI,GAAqB,CACnC,GAAI,CACH,KAAM,CAAE,KAAAjF,GAAS,MAAMf,EAAM,IAAI2D,EAAY,uBAAuB,CAAC,EACrEuB,EAAc,MAAQnE,EAAK,QAAQ,KAAMuC,GAA0BA,EAAO,OAASvC,EAAK,qBAAqB,EAC7GoE,EAAc,MAAQpE,EAAK,QAAQ,OAAQuC,GAA0BA,EAAO,oBAAsB,gBAAgB,CACnH,OAASwC,EAAO,CACf,OAAA3D,EAAO,MAAM,iDAAkD,CAAE,MAAA2D,CAAA,CAAO,EACjE,EACR,CACA,MAAO,EACR,CAKA,eAAeG,GAAe,CAC7B,GAAI,CACHpB,EAAK,MAAQ,MAAMqB,GAAS,CAC7B,OAASJ,EAAO,CACf3D,EAAO,MAAM,wCAAyC,CAAE,MAAA2D,CAAA,CAAO,EAC/DC,GAAU3H,EAAE,WAAY,0DAA0D,CAAC,CACpF,CACD,CAOA,eAAegG,EAAe7D,EAAe,CAC5C,MAAMgB,EAAM8D,EAAQ9E,CAAK,EACzB,GAAI,CAACgB,EAAK,CACTY,EAAO,MAAM,sDAAuD,CAAE,MAAA5B,CAAA,CAAO,EAC7E,MACD,CAEAgB,EAAI,QAAU,GACd,GAAI,CACH,MAAM4E,EAAS,MAAMC,GAAwB7F,CAAK,EAClDgB,EAAI,OAAS4E,EACbhE,EAAO,MAAM,iEAAkE,CAAE,4BAAAiD,CAAA,CAA6B,EAC1GA,EAA4B,MAAM,SAAW,IAChDjD,EAAO,MAAM,mCAAmC,EAChD,cAAc6C,CAAuB,EACrCA,EAAgB,MAEbzD,EAAI,OAAO,OAAS6D,EAA4B,MAAM,SAAW,IACpE,cAAcJ,CAAuB,EACrCA,EAAgB,KAElB,OAASqB,EAAG,CACX,MAAAC,EAAA,EACMD,CACP,SACC9E,EAAI,QAAU,EACf,CACD,CAKA,SAAS+E,GAAmB,CAC3B,cAActB,CAAuB,EACjCI,EAA4B,MAAM,SAAW,IAIjDJ,EAAgB,OAAO,YAAY,IAAM,CACxC7C,EAAO,MAAM,8CAA+C,CAAE,4BAAAiD,CAAA,CAA6B,EAC3F,UAAW7D,KAAO6D,EAA4B,MAC7ChB,EAAe7C,EAAI,EAAE,CAEvB,EAAG,GAAI,EACR,CACD,CAAC,ECpTYgF,EAAe7B,GAAY,OAAQ,IAAM,CACrD,MAAM8B,EAASzD,GAAA,EAKT0D,EAAe3B,EAAoB,EAAE,EAIrC4B,EAAa5B,EAAyB,EAAE,EAIxC6B,EAAUC,GAAShC,GAAwB,WAAY,iBAAiB,CAAC,EAKzEiC,EAAgB/B,EAAI,EAAK,EACzBgC,EAAsBhC,EAAI,EAAK,EAK/BD,EAAOrC,EAAS,IAAM,CAAC,GAAGiE,EAAa,MAAO,GAAID,EAAO,UAAYA,EAAO,KAAO,EAAG,CAAC,EAO7F,SAASO,EAAgBC,EAAoB,CAC5C,OAAON,EAAW,MAAM,KAAK,CAAC,CAAE,GAAApB,KAASA,IAAO0B,CAAU,GAAK,IAChE,CAOA,SAASC,EAAW1G,EAAqD,CACxE,OAAOsE,EAAK,MAAM,KAAK,CAAC,CAAE,GAAAS,KAASA,IAAO/E,CAAK,GAAK,IACrD,CAOA,SAAS2G,EAAkBF,EAAuD,CACjF,OAAOnC,EAAK,MAAM,OAAQtD,GAAQ,CAACA,EAAI,QAAQ,EAAE,OAAO,SAASyF,CAAU,CAAC,CAC7E,CAQA,eAAe1G,EAAUC,EAAeC,EAAQ,GAAO,CACtD,MAAMe,EAAM0F,EAAW1G,CAAK,EAC5B,GAAI,CAACgB,EACJ,MAAM,IAAI,MAAM,eAAehB,CAAK,YAAY,EAGjD,GAAIgB,EAAI,QAAW,CAACA,EAAI,WAAa,CAACD,GAAWC,CAAG,EACnD,MAAM,IAAI,MAAM,eAAehB,CAAK,oBAAoB,EAGzD,GAAI,CAACC,GAASqB,GAAgBN,CAAG,EAChC,MAAM,IAAI,MAAM,eAAehB,CAAK,wBAAwB,EAG7DgB,EAAI,QAAU,GACd,GAAI,CACCA,EAAI,QACP,MAAMiF,EAAO,UAAUjG,CAAK,EAE5B,MAAM4G,GAAc5G,EAAOC,CAAK,EAE7BA,IACHe,EAAI,aAAe,IAEpBA,EAAI,OAAS,GACbA,EAAI,UAAY,GAChBA,EAAI,UAAY,GAChB,MAAMH,GAAA,CACP,SACCG,EAAI,QAAU,EACf,CACD,CAOA,eAAeZ,EAAWJ,EAAe,CACxC,MAAMgB,EAAM0F,EAAW1G,CAAK,EAC5B,GAAI,CAACgB,EACJ,MAAM,IAAI,MAAM,eAAehB,CAAK,YAAY,EAGjD,GAAI,CAACuB,GAAWP,CAAG,EAClB,MAAM,IAAI,MAAM,eAAehB,CAAK,qBAAqB,EAG1DgB,EAAI,QAAU,GACd,GAAI,CACCA,EAAI,QACP,MAAMiF,EAAO,WAAWjG,CAAK,EAE7B,MAAM6G,GAAe7G,CAAK,EAE3BgB,EAAI,OAAS,GAEbA,EAAI,aAAeA,EAAI,sBAAwB,QAAaA,EAAI,oBAAoB,SAAW,EAC/F,MAAMH,GAAA,CACP,SACCG,EAAI,QAAU,EACf,CACD,CAOA,eAAeV,EAAaN,EAAe,CAC1C,MAAMgB,EAAM0F,EAAW1G,CAAK,EAC5B,GAAI,CAACgB,EACJ,MAAM,IAAI,MAAM,eAAehB,CAAK,YAAY,EAGjD,GAAI,CAACiB,GAAaD,CAAG,EACpB,MAAM,IAAI,MAAM,eAAehB,CAAK,wBAAwB,EAG7DgB,EAAI,QAAU,GACd,GAAI,CACCA,EAAI,QACP,MAAMiF,EAAO,aAAajG,CAAK,EAE/B,MAAM8G,GAAiB9G,CAAK,EAE7BgB,EAAI,OAAS,GACbA,EAAI,UAAY,GAChB,MAAMH,GAAA,CACP,SACCG,EAAI,QAAU,EACf,CACD,CAQA,eAAe+F,EAAiB/G,EAAeE,EAAkB,CAChE,MAAMc,EAAM0F,EAAW1G,CAAK,EAC5B,GAAI,CAACgB,EACJ,MAAM,IAAI,MAAM,eAAehB,CAAK,YAAY,EAGjD,GAAI,CAAC0B,GAAiBV,CAAG,EACxB,MAAM,IAAI,MAAM,eAAehB,CAAK,8BAA8B,EAGnE,GAAI,CAAAgB,EAAI,QAIR,GAAI,CACHA,EAAI,QAAU,GACd,MAAM4F,GAAc5G,EAAO,GAAOE,CAAM,EACxCc,EAAI,OAASd,CACd,SACCc,EAAI,QAAU,EACf,CACD,CAOA,eAAeL,EAAaC,EAAkB,CAC7C,MAAMoG,EAASZ,EAAQ,KAAMa,GAAMA,EAAE,KAAOrG,CAAQ,EACpD,GAAI,CAACoG,EACJ,MAAM,IAAI,MAAM,kBAAkBpG,CAAQ,YAAY,EAGvD,GAAI,CACH,UAAWZ,KAASgH,EAAO,eAAgB,CAC1C,MAAMhG,EAAM0F,EAAW1G,CAAK,EAC5BgB,EAAI,QAAU,EACf,CACA,MAAMkG,GAAiBF,EAAO,EAAE,EAChC,UAAWhH,KAASgH,EAAO,eAAgB,CAC1C,MAAMhG,EAAM0F,EAAW1G,CAAK,EAC5BgB,EAAI,OAAS,GACbA,EAAI,UAAY,GAChBA,EAAI,UAAY,GAChB,MAAMH,GAAA,CACP,CACD,SACC,UAAWb,KAASgH,EAAO,eAAgB,CAC1C,MAAMhG,EAAM0F,EAAW1G,CAAK,EAC5BgB,EAAI,QAAU,EACf,CACD,CACD,CAKA,eAAemG,GAAiB,CAC/B,GAAI,CACHZ,EAAoB,MAAQ,GAC5BJ,EAAW,MAAQ,MAAMiB,GAAI,CAC9B,OAAS7B,EAAO,CACf3D,EAAO,MAAM,gCAAiC,CAAE,MAAA2D,CAAA,CAAO,EACvDC,GAAU3H,EAAE,WAAY,wDAAwD,CAAC,CAClF,SACC0I,EAAoB,MAAQ,EAC7B,CACD,CAKA,eAAec,GAAW,CACzB,GAAI,CACHf,EAAc,MAAQ,GACtBJ,EAAa,MAAQ,MAAMoB,GAAI,CAChC,OAAS/B,EAAO,CACf3D,EAAO,MAAM,2BAA4B,CAAE,MAAA2D,CAAA,CAAO,EAClDC,GAAU3H,EAAE,WAAY,mDAAmD,CAAC,CAC7E,SACCyI,EAAc,MAAQ,EACvB,CACD,CAGA,OAAAe,EAAA,EACAF,EAAA,EAEO,CACN,KAAA7C,EACA,QAAA8B,EACA,WAAAD,EACA,cAAAG,EACA,oBAAAC,EAAA,WAEAnG,EAAA,UACAL,EAAA,aACAO,EAAA,aACAK,EAEA,WAAA+F,EACA,kBAAAC,EACA,gBAAAH,EACA,iBAAAO,CAAA,CAEF,CAAC,EC5QYQ,GAAkBpD,GAAY,UAAW,IAAM,CAC3D,MAAM8B,EAASzD,GAAA,EAKTgF,EAAsBjD,EAAIF,GAAkB,WAAY,sBAAuB,CAAC,CAAC,EAKjFG,EAAcvC,EAAS,IAAMuF,EAAoB,MAAQvB,EAAO,WAAW,EAQjF,eAAe5F,EAAUL,EAAe,CAGvC,MAAMgB,EAFQgF,EAAA,EAEI,WAAWhG,CAAK,EAClC,GAAI,CAACgB,EACJ,MAAM,IAAI,MAAM,eAAehB,CAAK,YAAY,EAGjD,GAAI,CACC,YAAagB,GAAOA,EAAI,QAC3B,MAAMiF,EAAO,UAAUjG,CAAK,GAE5B,MAAMyH,GAAczH,CAAK,EACzBwH,EAAoB,MAAQ,KAAK,IAAIA,EAAoB,MAAQ,EAAG,CAAC,GAGtExG,EAAI,OAAS,OACbH,GAAA,CACD,OAAS0E,EAAO,CACf3D,EAAO,MAAM,uBAAwB,CAAE,MAAA5B,EAAO,MAAAuF,EAAO,EACrDC,GAAU3H,EAAE,WAAY,mDAAmD,CAAC,CAC7E,CACD,CAEA,MAAO,CACN,YAAA2G,EAAA,UACAnE,CAAA,CAEF,CAAC,ECpDYqH,GAAuBvD,GAAY,eAAgB,IAAM,CACrE,MAAMwD,EAAkBpD,EAAI,EAAE,EAExBqD,EAAarD,EAAI,EAAK,EACtBsD,EAAmBtD,EAAI,EAAI,EAE3BuD,EAAa7F,EAAS,IACvB0F,EAAgB,QAAU,IACtB,QACGA,EAAgB,QAAU,IAC7B,QAED,OACP,EAOD,SAASI,EAASC,EAAoB,CAErC,MAAO,CACN,IAFaC,GAAA,GAAc,IAElB,MACT,KAAOD,GAAYJ,EAAW,MAAUD,EAAgB,OAAS,KAAQ,OACzE,WAAYE,EAAiB,MAAQ,OAAY,KAEnD,CAGA,OADeK,GAAA,EACR,UAAWC,GAAO,CACxBC,EAAgBD,EAAG,KAAK,CACzB,CAAC,EAEM,CACN,gBAAAR,EACA,WAAAG,EAEA,WAAAF,EACA,iBAAAC,EAEA,SAAAE,CAAA,EAQD,SAASK,EAAgBC,EAAsB,CAC9CT,EAAW,MAAQ,SAAUS,EAC7BV,EAAgB,MAAQ,CAACU,EAAM,MAAQ,EAAE,EAAE,OAAO,CAAC,EAAG,cACtDR,EAAiB,MAAQ,EAAE,eAAgBQ,EAC5C,CACD,CAAC,6CCxCD,MAAMC,EAAkBjE,GAAmB,WAAY,kBAAmB,EAAI,EAExE9B,EAAQyD,EAAA,EACRuC,EAAchB,GAAA,EACdiB,EAAed,GAAA,EACfvB,EAAalE,EAAS,IAAMM,EAAM,UAAU,EAC5CkG,EAAoBxG,EAAS,IAAMM,EAAM,mBAAmB,EAE5DmG,EAAQT,GAAA,EACRU,EAAST,GAAA,EAETU,EAAgBC,GAAe,QAAQ,EAE7CC,GAAU,IAAK,IAAM,CACfF,EAAc,OAAO,MAAM,eAC/B9H,GAAK,oBAAqB,CACzB,KAAM,GACN,EAED,OAAO,WAAW,IAAM8H,EAAc,OAAO,MAAM,cAAc,QAAS,GAAG,GAE9EA,EAAc,OAAO,MAAM,cAAc,OAC1C,EAAG,CAAE,KAAM,GAAM,KAAM,GAAM,QAAS,GAAM,EAE5C,MAAMG,EAASxE,EAAI,EAAE,EAErByE,GAAM,IAAMN,EAAM,MAAM,EAAIO,GAAa,CACxCF,EAAO,MAAQ,CAACE,GAAY,EAAE,EAAE,OAAO,CAAC,CACzC,EAAG,CAAE,UAAW,GAAM,EAEtBC,GAAeH,EAAQ,CAACI,EAAUC,IAAa,CAC9C,GAAID,EAAS,SAAWC,EAAS,OAIjC,IAAIT,EAAO,aAAa,MAAM,OAAS,iBAAoBA,EAAO,aAAa,MAAM,OAAS,eAAiBD,EAAM,OAAO,WAAa,UAAY,CACpJC,EAAO,KAAK,CACX,KAAM,cACN,MAAO,CACN,GAAGD,EAAM,MACT,EAAGS,EAAS,QAAU,OACvB,CACA,EACD,MACD,CAEAR,EAAO,QAAQ,CACd,GAAGD,EACH,MAAO,CACN,GAAGA,EAAM,MACT,EAAGS,EAAS,QAAU,OACvB,CACA,EACF,EAAG,CAAE,SAAU,IAAK,EAOpB,MAAME,EAAepH,EAAS,IAAMM,EAAM,KAAK,KAAK,CAAC,CAAE,MAAA+G,CAAA,IAAYA,IAAU,GAAG,IAAM,MAAS,oBAK9FpH,EAkGkBC,EAAAoH,EAAA,GAlGA,aAAYpH,EAAAtE,CAAA,EAAC,oCACnB,SACV,IAG0C,CAH1C0F,EAG0CpB,EAAAqH,EAAA,WAFrC,SAAJ,IAAIT,aACKA,EAAA,2CAAAA,EAAM,MAAA9F,GACd,MAAOd,EAAAtE,CAAA,EAAC,6DAEA,OACV,IAOsB,CANfsE,EAAAmG,CAAA,OADPpG,EAOsBC,EAAAsH,CAAA,SALpB,GAAI,uBACJ,KAAMtH,EAAAvE,CAAA,EAAwB,WACpB,OACV,IAA6D,CAA7D2F,EAA6DpB,EAAAqB,CAAA,GAA1C,KAAMrB,EAAArE,CAAA,EAAwB,wDAGnDyF,EAMsBpB,EAAAsH,CAAA,GALpB,GAAI,mDACJ,KAAMtH,EAAAvE,CAAA,EAAwB,YACpB,OACV,IAA8D,CAA9D2F,EAA8DpB,EAAAqB,CAAA,GAA3C,KAAMrB,EAAArE,CAAA,EAAwB,+CAGnDyF,EAMsBpB,EAAAsH,CAAA,GALpB,GAAI,iDACJ,KAAMtH,EAAAvE,CAAA,EAAwB,UACpB,OACV,IAA4D,CAA5D2F,EAA4DpB,EAAAqB,CAAA,GAAzC,KAAMrB,EAAArE,CAAA,EAAwB,6CAGnDyF,EAMsBpB,EAAAsH,CAAA,GALpB,GAAI,kDACJ,KAAMtH,EAAAvE,CAAA,EAAwB,WACpB,OACV,IAA6D,CAA7D2F,EAA6DpB,EAAAqB,CAAA,GAA1C,KAAMrB,EAAArE,CAAA,EAAwB,8CAI5CqE,EAAAoG,CAAA,EAAY,YAAW,OAD9BrG,EAUsBC,EAAAsH,CAAA,SARpB,GAAI,iDACJ,KAAMtH,EAAAvE,CAAA,EAAwB,UACpB,UACV,IAAoD,CAApD2F,EAAoDpB,EAAAuH,EAAA,GAAlC,MAAOvH,EAAAoG,CAAA,EAAY,iCAE3B,OACV,IAA4D,CAA5DhF,EAA4DpB,EAAAqB,CAAA,GAAzC,KAAMrB,EAAArE,CAAA,EAAwB,uDAGnDyF,EAMsBpB,EAAAsH,CAAA,GALpB,GAAI,sBACJ,KAAMtH,EAAAvE,CAAA,EAAwB,UACpB,OACV,IAA4D,CAA5D2F,EAA4DpB,EAAAqB,CAAA,GAAzC,KAAMrB,EAAArE,CAAA,EAAwB,6CAInDyF,EAAyBpB,EAAAtF,EAAA,GAGfsF,EAAAmG,CAAA,GAAmBG,EAAA,WAA7BhG,EAEK,YAF4C,MAAKC,EAAEC,SAAO,sCAAsC,IACpGY,EAAwEpB,EAAAwH,EAAA,GAAxD,KAAM,GAAK,KAAMxH,EAAAtE,CAAA,EAAC,wDAGdsE,EAAAmG,CAAA,IAAoBG,EAAA,WAAzChG,EAiCWI,EAAA,SA/BHwG,EAAA,WADPnH,EAQsBC,EAAAsH,CAAA,SANrB,GAAG,yBACF,GAAE,0DAAqEtH,EAAAqG,CAAA,EAAa,SAAQ,KAC5F,KAAMrG,EAAAvE,CAAA,EAAwB,YACpB,OACV,IAA8D,CAA9D2F,EAA8DpB,EAAAqB,CAAA,GAA3C,KAAMrB,EAAArE,CAAA,EAAwB,8DAGnDyF,EAOsBpB,EAAAsH,CAAA,GANrB,GAAG,wBACF,GAAE,yDAAoEtH,EAAAqG,CAAA,EAAa,SAAQ,KAC3F,KAAMrG,EAAAvE,CAAA,EAAwB,WACpB,OACV,IAA6D,CAA7D2F,EAA6DpB,EAAAqB,CAAA,GAA1C,KAAMrB,EAAArE,CAAA,EAAwB,0DAInD2E,EAasBI,EAAA,KAAAC,EAZFqD,EAAA,MAAZzF,QADRwB,EAasBC,EAAAsH,CAAA,GAXpB,GAAE,gBAAkB/I,EAAS,EAAE,GAC/B,IAAKA,EAAS,GACd,KAAMA,EAAS,YACf,GAAE,sBAA2D,iBAAAA,EAAS,IAAmB,MAAAyB,EAAAqG,CAAA,EAAa,SAAQ,OAKpG,OACV,IAA0C,CAA1CjF,EAA0CpB,EAAAqB,CAAA,GAAvB,KAAM9C,EAAS,+WC/JxC,MAAMkJ,EAAgB3H,EAAS,IAC1BzF,EAAA,QAAQ,QAAUA,EAAA,iBACdA,EAAA,QAEDA,EAAA,QACL,OAAQqN,GAAWA,EAAO,SAAW,EAAK,EAC1C,MAAM,EAAGrN,EAAA,gBAAgB,CAC3B,EAEKsN,EAAc7H,EAAS,IAAMzF,EAAA,QACjC,OAAQqN,GAAW,CAACD,EAAc,MAAM,SAASC,CAAM,CAAC,CAAC,oBAI1DpH,EAuDM,OAvDA,MAAKC,EAAEC,SAAO,UAAU,WAC7BF,EAgBWI,EAAA,KAAAC,EAfO8G,EAAA,MAAVC,QADR3H,EAgBWC,EAAAuB,EAAA,GAdT,IAAKmG,EAAO,GACZ,UAAWrN,WAAWqN,EAAO,MAAMrN,EAAA,GAAG,EAAI,OAC1C,MAAOA,WAAWqN,EAAO,MAAMrN,EAAA,GAAG,EAAI,OACtC,QAASqN,EAAO,QAChB,KAAI,SAAYA,EAASA,EAAO,KAAKrN,EAAA,GAAG,EAAI,OAC5C,GAAE,OAAUqN,EAASA,EAAO,GAAGrN,EAAA,GAAG,EAAI,OACtC,OAAM,SAAYqN,EAAM,SAAc,OACtC,wBAAqBA,GAAUA,EAAO,SAASrN,EAAA,GAAG,OACxC,OACV,IAAwC,CAAxC+G,EAAwCpB,EAAAqB,CAAA,GAArB,KAAMqG,EAAO,+BAEhBrN,EAAA,sBAAW,eAC3B,IAAuB,KAApBqN,EAAO,MAAMrN,EAAA,GAAG,gGAGrB+G,EAoCYpB,EAAA4H,EAAA,GApCD,cAAS,WACT,IAA6B,QAAvCtH,EAkCWI,EAAA,KAAAC,EAlCgBgH,EAAA,MAAVD,+BAEKA,OADrB3H,EAUiBC,EAAA6H,EAAA,GARf,IAAG,YAAgBH,EAAO,GAC3B,mBACC,QAASA,EAAO,QAChB,QAAK5G,GAAE4G,EAAO,SAASrN,EAAA,GAAG,IAChB,OACV,IAAwC,CAAxC+G,EAAwCpB,EAAAqB,CAAA,GAArB,KAAMqG,EAAO,mCACtB,IACX,CADWxH,EAAA,IACXC,EAAGuH,EAAO,MAAMrN,EAAA,GAAG,mDAGEqN,OADtB3H,EAUeC,EAAA8H,EAAA,GARb,IAAG,QAAYJ,EAAO,GACvB,mBACC,QAASA,EAAO,QAChB,KAAMA,EAAO,KAAKrN,EAAA,GAAG,IACX,OACV,IAAwC,CAAxC+G,EAAwCpB,EAAAqB,CAAA,GAArB,KAAMqG,EAAO,mCACtB,IACX,CADWxH,EAAA,IACXC,EAAGuH,EAAO,MAAMrN,EAAA,GAAG,4CAEpB0F,EAUiBC,EAAA+H,EAAA,GARf,IAAG,SAAaL,EAAO,GACxB,mBACC,QAASA,EAAO,QAChB,GAAIA,EAAO,GAAGrN,EAAA,GAAG,IACP,OACV,IAAwC,CAAxC+G,EAAwCpB,EAAAqB,CAAA,GAArB,KAAMqG,EAAO,mCACtB,IACX,CADWxH,EAAA,IACXC,EAAGuH,EAAO,MAAMrN,EAAA,GAAG,sNCvExB,MAAM2N,EAAa5F,EAJL/H,EAIe,KAAK,QAAQ,eAAe,eAAe,KAAO,OAAS,EAAK,eAKrFA,EAAA,KAAK,YADZ0F,EAgBkBC,EAAAxE,EAAA,SAdjB,GAAG,SACF,KAAMwE,EAAAtE,CAAA,EAAC,qBACP,MAAO,IACG,OACV,IAAoD,CAApD0F,EAAoDpB,EAAAqB,CAAA,GAAjC,KAAMrB,EAAAiI,EAAA,EAAe,KAAM,iCAE/C,IAOM,CAPNC,EAOM,OAPA,MAAK3H,EAAEC,SAAO,kBAAkB,IACrC0H,EAA6C,YAAtClI,EAAAtE,CAAA,EAAC,gCACRwM,EAA8E,UAA3EA,EAAkC,WAA5BlI,EAAAtE,CAAA,EAAC,uBAA2BwE,EAAA,KAAEC,EAAG9F,EAAA,KAAK,OAAO,iBAAiB,OACvE6N,EAAiE,UAA9DA,EAAkC,WAA5BlI,EAAAtE,CAAA,EAAC,uBAA2BwE,EAAA,KAAEC,EAAG9F,EAAA,KAAK,OAAO,IAAI,OAC1D6N,EAAiF,UAA9EA,EAA0C,WAApClI,EAAAtE,CAAA,EAAC,+BAAmCwE,EAAA,KAAEC,EAAG9F,EAAA,KAAK,OAAO,YAAY,OAC1E6N,EAAmE,UAAhEA,EAA0C,WAApClI,EAAAtE,CAAA,EAAC,+BAAmCwE,EAAA,OAAK8H,EAAA,KAAU,OAC5DE,EAA2G,UAAxGA,EAA4C,WAAtClI,EAAAtE,CAAA,EAAC,mCAAqC,KAAEyE,EAAG9F,OAAK,QAAQ,eAAe,eAAe,KAAK,qJCxBvG,SAAS8N,IAAG,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,WAAW,KAAK,IAAI,GAAG,MAAM,KAAK,SAAS,GAAG,SAAS,KAAK,OAAO,GAAG,UAAU,KAAK,WAAW,IAAI,CAAC,CAAC,IAAIC,GAAED,GAAC,EAAG,SAASE,GAAEC,EAAE,CAACF,GAAEE,CAAC,CAAC,IAAIC,GAAE,CAAC,KAAK,IAAI,IAAI,EAAE,SAASC,EAAEF,EAAE3E,EAAE,GAAG,CAAC,IAAIjI,EAAE,OAAO4M,GAAG,SAASA,EAAEA,EAAE,OAAOG,EAAE,CAAC,QAAQ,CAACC,EAAEC,IAAI,CAAC,IAAIC,EAAE,OAAOD,GAAG,SAASA,EAAEA,EAAE,OAAO,OAAOC,EAAEA,EAAE,QAAQC,EAAE,MAAM,IAAI,EAAEnN,EAAEA,EAAE,QAAQgN,EAAEE,CAAC,EAAEH,CAAC,EAAE,SAAS,IAAI,IAAI,OAAO/M,EAAEiI,CAAC,CAAC,EAAE,OAAO8E,CAAC,CAAC,IAAIK,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAC,EAAID,EAAE,CAAC,iBAAiB,yBAAyB,kBAAkB,cAAc,uBAAuB,gBAAgB,eAAe,OAAO,WAAW,KAAK,kBAAkB,KAAK,gBAAgB,KAAK,aAAa,OAAO,kBAAkB,MAAM,cAAc,MAAM,oBAAoB,OAAO,UAAU,WAAW,gBAAgB,oBAAoB,gBAAgB,WAAW,wBAAwB,iCAAiC,yBAAyB,mBAAmB,mBAAmB,0BAA0B,WAAW,iBAAiB,gBAAgB,eAAe,iBAAiB,YAAY,QAAQ,SAAS,aAAa,WAAW,eAAe,OAAO,gBAAgB,aAAa,kBAAkB,YAAY,gBAAgB,YAAY,iBAAiB,aAAa,eAAe,YAAY,UAAU,QAAQ,QAAQ,UAAU,kBAAkB,iCAAiC,gBAAgB,mCAAmC,kBAAkB,KAAK,gBAAgB,KAAK,kBAAkB,gCAAgC,oBAAoB,gBAAgB,WAAW,UAAU,cAAc,WAAW,mBAAmB,oDAAoD,sBAAsB,qDAAqD,MAAM,eAAe,cAAc,OAAO,SAAS,MAAM,UAAU,MAAM,UAAU,QAAQ,eAAe,WAAW,UAAU,SAAS,cAAc,OAAO,cAAc,MAAM,cAAcP,GAAG,IAAI,OAAO,WAAWA,CAAC,8BAA8B,EAAE,gBAAgBA,GAAG,IAAI,OAAO,QAAQ,KAAK,IAAI,EAAEA,EAAE,CAAC,CAAC,oDAAoD,EAAE,QAAQA,GAAG,IAAI,OAAO,QAAQ,KAAK,IAAI,EAAEA,EAAE,CAAC,CAAC,oDAAoD,EAAE,iBAAiBA,GAAG,IAAI,OAAO,QAAQ,KAAK,IAAI,EAAEA,EAAE,CAAC,CAAC,iBAAiB,EAAE,kBAAkBA,GAAG,IAAI,OAAO,QAAQ,KAAK,IAAI,EAAEA,EAAE,CAAC,CAAC,IAAI,EAAE,eAAeA,GAAG,IAAI,OAAO,QAAQ,KAAK,IAAI,EAAEA,EAAE,CAAC,CAAC,qBAAqB,GAAG,EAAE,qBAAqBA,GAAG,IAAI,OAAO,QAAQ,KAAK,IAAI,EAAEA,EAAE,CAAC,CAAC,IAAI,CAAC,EAAES,GAAG,uBAAuBC,GAAG,wDAAwDC,GAAG,8GAA8GC,GAAE,qEAAqEC,GAAG,uCAAuCC,GAAE,8BAA8BC,GAAG,iKAAiKC,GAAGd,EAAEa,EAAE,EAAE,QAAQ,QAAQD,EAAC,EAAE,QAAQ,aAAa,mBAAmB,EAAE,QAAQ,UAAU,uBAAuB,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,WAAW,cAAc,EAAE,QAAQ,QAAQ,mBAAmB,EAAE,QAAQ,WAAW,EAAE,EAAE,SAAQ,EAAGG,GAAGf,EAAEa,EAAE,EAAE,QAAQ,QAAQD,EAAC,EAAE,QAAQ,aAAa,mBAAmB,EAAE,QAAQ,UAAU,uBAAuB,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,WAAW,cAAc,EAAE,QAAQ,QAAQ,mBAAmB,EAAE,QAAQ,SAAS,mCAAmC,EAAE,SAAQ,EAAGI,GAAE,uFAAuFC,GAAG,UAAUC,GAAE,mCAAmCC,GAAGnB,EAAE,6GAA6G,EAAE,QAAQ,QAAQkB,EAAC,EAAE,QAAQ,QAAQ,8DAA8D,EAAE,SAAQ,EAAGE,GAAGpB,EAAE,gCAAgC,EAAE,QAAQ,QAAQY,EAAC,EAAE,SAAQ,EAAGS,GAAE,gWAAgWC,GAAE,gCAAgCC,GAAGvB,EAAE,4dAA4d,GAAG,EAAE,QAAQ,UAAUsB,EAAC,EAAE,QAAQ,MAAMD,EAAC,EAAE,QAAQ,YAAY,0EAA0E,EAAE,SAAQ,EAAGG,GAAGxB,EAAEgB,EAAC,EAAE,QAAQ,KAAKN,EAAC,EAAE,QAAQ,UAAU,uBAAuB,EAAE,QAAQ,YAAY,EAAE,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ,aAAa,SAAS,EAAE,QAAQ,SAAS,gDAAgD,EAAE,QAAQ,OAAO,6BAA6B,EAAE,QAAQ,OAAO,6DAA6D,EAAE,QAAQ,MAAMW,EAAC,EAAE,SAAQ,EAAGI,GAAGzB,EAAE,yCAAyC,EAAE,QAAQ,YAAYwB,EAAE,EAAE,SAAQ,EAAGE,GAAE,CAAC,WAAWD,GAAG,KAAKjB,GAAG,IAAIW,GAAG,OAAOV,GAAG,QAAQE,GAAG,GAAGD,GAAE,KAAKa,GAAG,SAAST,GAAG,KAAKM,GAAG,QAAQb,GAAG,UAAUiB,GAAG,MAAMzB,GAAE,KAAKkB,EAAE,EAAEU,GAAG3B,EAAE,6JAA6J,EAAE,QAAQ,KAAKU,EAAC,EAAE,QAAQ,UAAU,uBAAuB,EAAE,QAAQ,aAAa,SAAS,EAAE,QAAQ,OAAO,wBAAwB,EAAE,QAAQ,SAAS,gDAAgD,EAAE,QAAQ,OAAO,6BAA6B,EAAE,QAAQ,OAAO,6DAA6D,EAAE,QAAQ,MAAMW,EAAC,EAAE,SAAQ,EAAGO,GAAG,CAAC,GAAGF,GAAE,SAASX,GAAG,MAAMY,GAAG,UAAU3B,EAAEgB,EAAC,EAAE,QAAQ,KAAKN,EAAC,EAAE,QAAQ,UAAU,uBAAuB,EAAE,QAAQ,YAAY,EAAE,EAAE,QAAQ,QAAQiB,EAAE,EAAE,QAAQ,aAAa,SAAS,EAAE,QAAQ,SAAS,gDAAgD,EAAE,QAAQ,OAAO,6BAA6B,EAAE,QAAQ,OAAO,6DAA6D,EAAE,QAAQ,MAAMN,EAAC,EAAE,SAAQ,CAAE,EAAEQ,GAAG,CAAC,GAAGH,GAAE,KAAK1B,EAAE,wIAAwI,EAAE,QAAQ,UAAUsB,EAAC,EAAE,QAAQ,OAAO,mKAAmK,EAAE,SAAQ,EAAG,IAAI,oEAAoE,QAAQ,yBAAyB,OAAOvB,GAAE,SAAS,mCAAmC,UAAUC,EAAEgB,EAAC,EAAE,QAAQ,KAAKN,EAAC,EAAE,QAAQ,UAAU;AAAA,EACj3N,EAAE,QAAQ,WAAWI,EAAE,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ,aAAa,SAAS,EAAE,QAAQ,UAAU,EAAE,EAAE,QAAQ,QAAQ,EAAE,EAAE,QAAQ,QAAQ,EAAE,EAAE,QAAQ,OAAO,EAAE,EAAE,SAAQ,CAAE,EAAEgB,GAAG,8CAA8CC,GAAG,sCAAsCC,GAAG,wBAAwBC,GAAG,8EAA8EC,GAAE,gBAAgBC,GAAE,kBAAkBC,GAAE,mBAAmBC,GAAGrC,EAAE,wBAAwB,GAAG,EAAE,QAAQ,cAAcmC,EAAC,EAAE,SAAQ,EAAGG,GAAG,qBAAqBC,GAAG,uBAAuBC,GAAG,yBAAyBC,GAAGzC,EAAE,yBAAyB,GAAG,EAAE,QAAQ,OAAO,mGAAmG,EAAE,QAAQ,WAAWM,GAAG,WAAW,WAAW,EAAE,QAAQ,OAAO,yBAAyB,EAAE,QAAQ,OAAO,gBAAgB,EAAE,WAAWoC,GAAG,oEAAoEC,GAAG3C,EAAE0C,GAAG,GAAG,EAAE,QAAQ,SAASR,EAAC,EAAE,SAAQ,EAAGU,GAAG5C,EAAE0C,GAAG,GAAG,EAAE,QAAQ,SAASJ,EAAE,EAAE,SAAQ,EAAGO,GAAG,wQAAwQC,GAAG9C,EAAE6C,GAAG,IAAI,EAAE,QAAQ,iBAAiBT,EAAC,EAAE,QAAQ,cAAcD,EAAC,EAAE,QAAQ,SAASD,EAAC,EAAE,WAAWa,GAAG/C,EAAE6C,GAAG,IAAI,EAAE,QAAQ,iBAAiBL,EAAE,EAAE,QAAQ,cAAcD,EAAE,EAAE,QAAQ,SAASD,EAAE,EAAE,WAAWU,GAAGhD,EAAE,mNAAmN,IAAI,EAAE,QAAQ,iBAAiBoC,EAAC,EAAE,QAAQ,cAAcD,EAAC,EAAE,QAAQ,SAASD,EAAC,EAAE,WAAWe,GAAGjD,EAAE,8BAA8B,GAAG,EAAE,QAAQ,SAASkC,EAAC,EAAE,SAAQ,EAAGgB,GAAG,qNAAqNC,GAAGnD,EAAEkD,GAAG,IAAI,EAAE,QAAQ,iBAAiBd,EAAC,EAAE,QAAQ,cAAcD,EAAC,EAAE,QAAQ,SAASD,EAAC,EAAE,SAAQ,EAAGkB,GAAGpD,EAAE,YAAY,IAAI,EAAE,QAAQ,SAASkC,EAAC,EAAE,WAAWmB,GAAGrD,EAAE,qCAAqC,EAAE,QAAQ,SAAS,8BAA8B,EAAE,QAAQ,QAAQ,8IAA8I,EAAE,SAAQ,EAAGsD,GAAGtD,EAAEsB,EAAC,EAAE,QAAQ,YAAY,KAAK,EAAE,SAAQ,EAAGiC,GAAGvD,EAAE,0JAA0J,EAAE,QAAQ,UAAUsD,EAAE,EAAE,QAAQ,YAAY,6EAA6E,EAAE,SAAQ,EAAGE,GAAE,uFAAuFC,GAAGzD,EAAE,4EAA4E,EAAE,QAAQ,QAAQwD,EAAC,EAAE,QAAQ,OAAO,yCAAyC,EAAE,QAAQ,QAAQ,6DAA6D,EAAE,WAAWE,GAAG1D,EAAE,yBAAyB,EAAE,QAAQ,QAAQwD,EAAC,EAAE,QAAQ,MAAMtC,EAAC,EAAE,WAAWyC,GAAG3D,EAAE,uBAAuB,EAAE,QAAQ,MAAMkB,EAAC,EAAE,SAAQ,EAAG0C,GAAG5D,EAAE,wBAAwB,GAAG,EAAE,QAAQ,UAAU0D,EAAE,EAAE,QAAQ,SAASC,EAAE,EAAE,SAAQ,EAAGE,GAAG,qCAAqCC,GAAE,CAAC,WAAW/D,GAAE,eAAeqD,GAAG,SAASC,GAAG,UAAUZ,GAAG,GAAGT,GAAG,KAAKD,GAAG,IAAIhC,GAAE,UAAUA,GAAE,UAAUA,GAAE,eAAe4C,GAAG,kBAAkBG,GAAG,kBAAkBE,GAAG,OAAOlB,GAAG,KAAK2B,GAAG,OAAOE,GAAG,YAAYtB,GAAG,QAAQqB,GAAG,cAAcE,GAAG,IAAIL,GAAG,KAAKtB,GAAG,IAAIlC,EAAC,EAAEgE,GAAG,CAAC,GAAGD,GAAE,KAAK9D,EAAE,yBAAyB,EAAE,QAAQ,QAAQwD,EAAC,EAAE,SAAQ,EAAG,QAAQxD,EAAE,+BAA+B,EAAE,QAAQ,QAAQwD,EAAC,EAAE,SAAQ,CAAE,EAAEQ,GAAE,CAAC,GAAGF,GAAE,kBAAkBf,GAAG,eAAeH,GAAG,UAAUK,GAAG,UAAUE,GAAG,IAAInD,EAAE,gEAAgE,EAAE,QAAQ,WAAW6D,EAAE,EAAE,QAAQ,QAAQ,2EAA2E,EAAE,SAAQ,EAAG,WAAW,6EAA6E,IAAI,0EAA0E,KAAK7D,EAAE,qNAAqN,EAAE,QAAQ,WAAW6D,EAAE,EAAE,SAAQ,CAAE,EAAEI,GAAG,CAAC,GAAGD,GAAE,GAAGhE,EAAEgC,EAAE,EAAE,QAAQ,OAAO,GAAG,EAAE,SAAQ,EAAG,KAAKhC,EAAEgE,GAAE,IAAI,EAAE,QAAQ,OAAO,eAAe,EAAE,QAAQ,UAAU,GAAG,EAAE,UAAU,EAAEE,GAAE,CAAC,OAAOxC,GAAE,IAAIE,GAAG,SAASC,EAAE,EAAEsC,GAAE,CAAC,OAAOL,GAAE,IAAIE,GAAE,OAAOC,GAAG,SAASF,EAAE,EAAMK,GAAG,CAAC,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,EAAEC,GAAGvE,GAAGsE,GAAGtE,CAAC,EAAE,SAASwE,EAAExE,EAAE3E,EAAE,CAAC,GAAGA,GAAG,GAAGkF,EAAE,WAAW,KAAKP,CAAC,EAAE,OAAOA,EAAE,QAAQO,EAAE,cAAcgE,EAAE,UAAUhE,EAAE,mBAAmB,KAAKP,CAAC,EAAE,OAAOA,EAAE,QAAQO,EAAE,sBAAsBgE,EAAE,EAAE,OAAOvE,CAAC,CAAC,SAASyE,GAAEzE,EAAE,CAAC,GAAG,CAACA,EAAE,UAAUA,CAAC,EAAE,QAAQO,EAAE,cAAc,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAOP,CAAC,CAAC,SAAS0E,GAAE1E,EAAE3E,EAAE,CAAC,IAAIjI,EAAE4M,EAAE,QAAQO,EAAE,SAAS,CAACF,EAAEC,EAAEqE,IAAI,CAAC,IAAIC,EAAE,GAAGC,EAAEvE,EAAE,KAAK,EAAEuE,GAAG,GAAGF,EAAEE,CAAC,IAAI,MAAMD,EAAE,CAACA,EAAE,OAAOA,EAAE,IAAI,IAAI,CAAC,EAAEzE,EAAE/M,EAAE,MAAMmN,EAAE,SAAS,EAAEH,EAAE,EAAE,GAAGD,EAAE,CAAC,EAAE,QAAQA,EAAE,MAAK,EAAGA,EAAE,OAAO,GAAG,CAACA,EAAE,GAAG,EAAE,GAAG,KAAI,GAAIA,EAAE,MAAM9E,EAAE,GAAG8E,EAAE,OAAO9E,EAAE8E,EAAE,OAAO9E,CAAC,MAAO,MAAK8E,EAAE,OAAO9E,GAAG8E,EAAE,KAAK,EAAE,EAAE,KAAKC,EAAED,EAAE,OAAOC,IAAID,EAAEC,CAAC,EAAED,EAAEC,CAAC,EAAE,OAAO,QAAQG,EAAE,UAAU,GAAG,EAAE,OAAOJ,CAAC,CAAC,SAAS2E,GAAE9E,EAAE3E,EAAEjI,EAAE,CAAC,IAAI+M,EAAEH,EAAE,OAAO,GAAGG,IAAI,EAAE,MAAM,GAAG,IAAIC,EAAE,EAAE,KAAKA,EAAED,GAAUH,EAAE,OAAOG,EAAEC,EAAE,CAAC,IAAS/E,GAAM+E,IAAoC,OAAOJ,EAAE,MAAM,EAAEG,EAAEC,CAAC,CAAC,CAAC,SAAS2E,GAAG/E,EAAE3E,EAAE,CAAC,GAAG2E,EAAE,QAAQ3E,EAAE,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,IAAIjI,EAAE,EAAE,QAAQ+M,EAAE,EAAEA,EAAEH,EAAE,OAAOG,IAAI,GAAGH,EAAEG,CAAC,IAAI,KAAKA,YAAYH,EAAEG,CAAC,IAAI9E,EAAE,CAAC,EAAEjI,YAAY4M,EAAEG,CAAC,IAAI9E,EAAE,CAAC,IAAIjI,IAAIA,EAAE,GAAG,OAAO+M,EAAE,OAAO/M,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS4R,GAAGhF,EAAE3E,EAAE,EAAE,CAAC,IAAIjI,EAAEiI,EAAE8E,EAAE,GAAG,QAAQC,KAAKJ,EAAE,GAAGI,IAAI,IAAI,CAAC,IAAIC,EAAE,EAAEjN,EAAE,EAAE+M,GAAG,IAAI,OAAOE,CAAC,EAAEjN,GAAGiN,CAAC,MAAMF,GAAGC,EAAEhN,IAAI,OAAO+M,CAAC,CAAC,SAAS8E,GAAGjF,EAAE3E,EAAEjI,EAAE+M,EAAEC,EAAE,CAAC,IAAIC,EAAEhF,EAAE,KAAKiF,EAAEjF,EAAE,OAAO,KAAKsJ,EAAE3E,EAAE,CAAC,EAAE,QAAQI,EAAE,MAAM,kBAAkB,IAAI,EAAED,EAAE,MAAM,OAAO,GAAG,IAAIyE,EAAE,CAAC,KAAK5E,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ,OAAO,IAAI5M,EAAE,KAAKiN,EAAE,MAAMC,EAAE,KAAKqE,EAAE,OAAOxE,EAAE,aAAawE,CAAC,CAAC,EAAE,OAAOxE,EAAE,MAAM,OAAO,GAAGyE,CAAC,CAAC,SAASM,GAAGlF,EAAE3E,EAAEjI,EAAE,CAAC,IAAI+M,EAAEH,EAAE,MAAM5M,EAAE,MAAM,sBAAsB,EAAE,GAAG+M,IAAI,KAAK,OAAO9E,EAAE,IAAI+E,EAAED,EAAE,CAAC,EAAE,OAAO9E,EAAE,MAAM;AAAA,CACtmM,EAAE,IAAIgF,GAAG,CAAC,IAAIC,EAAED,EAAE,MAAMjN,EAAE,MAAM,cAAc,EAAE,GAAGkN,IAAI,KAAK,OAAOD,EAAE,GAAG,CAACsE,CAAC,EAAErE,EAAE,OAAOqE,EAAE,QAAQvE,EAAE,OAAOC,EAAE,MAAMD,EAAE,MAAM,EAAEC,CAAC,CAAC,EAAE,KAAK;AAAA,CACnI,CAAC,CAAC,IAAI8E,GAAE,KAAK,CAAC,QAAQ,MAAM,MAAM,YAAY,EAAE,CAAC,KAAK,QAAQ,GAAGrF,EAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,QAAQ,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAIK,EAAE,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,MAAM,iBAAiB,EAAE,EAAE,MAAM,CAAC,KAAK,OAAO,IAAI,EAAE,CAAC,EAAE,eAAe,WAAW,KAAK,KAAK,QAAQ,SAASA,EAAE2E,GAAE3E,EAAE;AAAA,CACvW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,OAAO,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAIA,EAAE,EAAE,CAAC,EAAEC,EAAE8E,GAAG/E,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,IAAIA,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAI,EAAG,QAAQ,KAAK,MAAM,OAAO,eAAe,IAAI,EAAE,EAAE,CAAC,EAAE,KAAKC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,QAAQ,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAID,EAAE,EAAE,CAAC,EAAE,KAAI,EAAG,GAAG,KAAK,MAAM,MAAM,WAAW,KAAKA,CAAC,EAAE,CAAC,IAAIC,EAAE0E,GAAE3E,EAAE,GAAG,GAAG,KAAK,QAAQ,UAAU,CAACC,GAAG,KAAK,MAAM,MAAM,gBAAgB,KAAKA,CAAC,KAAKD,EAAEC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,KAAKD,EAAE,OAAO,KAAK,MAAM,OAAOA,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI2E,GAAE,EAAE,CAAC,EAAE;AAAA,CACjkB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,WAAW,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI3E,EAAE2E,GAAE,EAAE,CAAC,EAAE;AAAA,CAC9E,EAAE,MAAM;AAAA,CACR,EAAE1E,EAAE,GAAGC,EAAE,GAAGC,EAAE,GAAG,KAAKH,EAAE,OAAO,GAAG,CAAC,IAAIwE,EAAE,GAAGC,EAAE,GAAGC,EAAE,IAAIA,EAAE,EAAEA,EAAE1E,EAAE,OAAO0E,IAAI,GAAG,KAAK,MAAM,MAAM,gBAAgB,KAAK1E,EAAE0E,CAAC,CAAC,EAAED,EAAE,KAAKzE,EAAE0E,CAAC,CAAC,EAAEF,EAAE,WAAW,CAACA,EAAEC,EAAE,KAAKzE,EAAE0E,CAAC,CAAC,MAAO,OAAM1E,EAAEA,EAAE,MAAM0E,CAAC,EAAE,IAAIO,EAAER,EAAE,KAAK;AAAA,CACxM,EAAES,EAAED,EAAE,QAAQ,KAAK,MAAM,MAAM,wBAAwB;AAAA,OACjD,EAAE,QAAQ,KAAK,MAAM,MAAM,yBAAyB,EAAE,EAAEhF,EAAEA,EAAE,GAAGA,CAAC;AAAA,EACrEgF,CAAC,GAAGA,EAAE/E,EAAEA,EAAE,GAAGA,CAAC;AAAA,EACdgF,CAAC,GAAGA,EAAE,IAAI,EAAE,KAAK,MAAM,MAAM,IAAI,GAAG,KAAK,MAAM,MAAM,IAAI,GAAG,KAAK,MAAM,YAAYA,EAAE/E,EAAE,EAAE,EAAE,KAAK,MAAM,MAAM,IAAI,EAAEH,EAAE,SAAS,EAAE,MAAM,IAAImF,EAAEhF,EAAE,GAAG,EAAE,EAAE,GAAGgF,GAAG,OAAO,OAAO,MAAM,GAAGA,GAAG,OAAO,aAAa,CAAC,IAAIC,EAAED,EAAEE,EAAED,EAAE,IAAI;AAAA,EACzNpF,EAAE,KAAK;AAAA,CACR,EAAEsF,EAAE,KAAK,WAAWD,CAAC,EAAElF,EAAEA,EAAE,OAAO,CAAC,EAAEmF,EAAErF,EAAEA,EAAE,UAAU,EAAEA,EAAE,OAAOmF,EAAE,IAAI,MAAM,EAAEE,EAAE,IAAIpF,EAAEA,EAAE,UAAU,EAAEA,EAAE,OAAOkF,EAAE,KAAK,MAAM,EAAEE,EAAE,KAAK,KAAK,SAASH,GAAG,OAAO,OAAO,CAAC,IAAIC,EAAED,EAAEE,EAAED,EAAE,IAAI;AAAA,EAClLpF,EAAE,KAAK;AAAA,CACR,EAAEsF,EAAE,KAAK,KAAKD,CAAC,EAAElF,EAAEA,EAAE,OAAO,CAAC,EAAEmF,EAAErF,EAAEA,EAAE,UAAU,EAAEA,EAAE,OAAOkF,EAAE,IAAI,MAAM,EAAEG,EAAE,IAAIpF,EAAEA,EAAE,UAAU,EAAEA,EAAE,OAAOkF,EAAE,IAAI,MAAM,EAAEE,EAAE,IAAItF,EAAEqF,EAAE,UAAUlF,EAAE,GAAG,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM;AAAA,CACpK,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa,IAAIF,EAAE,OAAOE,EAAE,KAAKD,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAIF,EAAE,EAAE,CAAC,EAAE,KAAI,EAAGC,EAAED,EAAE,OAAO,EAAEE,EAAE,CAAC,KAAK,OAAO,IAAI,GAAG,QAAQD,EAAE,MAAMA,EAAE,CAACD,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,EAAEA,EAAEC,EAAE,aAAaD,EAAE,MAAM,EAAE,CAAC,GAAG,KAAKA,CAAC,GAAG,KAAK,QAAQ,WAAWA,EAAEC,EAAED,EAAE,SAAS,IAAIG,EAAE,KAAK,MAAM,MAAM,cAAcH,CAAC,EAAEwE,EAAE,GAAG,KAAK,GAAG,CAAC,IAAIE,EAAE,GAAGO,EAAE,GAAGC,EAAE,GAAG,GAAG,EAAE,EAAE/E,EAAE,KAAK,CAAC,IAAI,KAAK,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,MAAM8E,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,UAAUA,EAAE,MAAM,EAAE,IAAI,EAAEJ,GAAG,EAAE,CAAC,EAAE,MAAM;AAAA,EAC1d,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAEM,EAAE,EAAE,MAAM;AAAA,EAC7B,CAAC,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAE,KAAI,EAAGC,EAAE,EAAE,GAAG,KAAK,QAAQ,UAAUA,EAAE,EAAEH,EAAE,EAAE,UAAS,GAAIE,EAAEC,EAAE,EAAE,CAAC,EAAE,OAAO,GAAGA,EAAE,EAAE,OAAO,KAAK,MAAM,MAAM,YAAY,EAAEA,EAAEA,EAAE,EAAE,EAAEA,EAAEH,EAAE,EAAE,MAAMG,CAAC,EAAEA,GAAG,EAAE,CAAC,EAAE,QAAQD,GAAG,KAAK,MAAM,MAAM,UAAU,KAAKD,CAAC,IAAIF,GAAGE,EAAE;AAAA,EACtN,EAAE,EAAE,UAAUA,EAAE,OAAO,CAAC,EAAET,EAAE,IAAI,CAACA,EAAE,CAAC,IAAIY,EAAE,KAAK,MAAM,MAAM,gBAAgBD,CAAC,EAAE,EAAE,KAAK,MAAM,MAAM,QAAQA,CAAC,EAAEE,EAAG,KAAK,MAAM,MAAM,iBAAiBF,CAAC,EAAEG,EAAG,KAAK,MAAM,MAAM,kBAAkBH,CAAC,EAAEI,EAAG,KAAK,MAAM,MAAM,eAAeJ,CAAC,EAAEK,EAAG,KAAK,MAAM,MAAM,qBAAqBL,CAAC,EAAE,KAAK,GAAG,CAAC,IAAIM,EAAE,EAAE,MAAM;AAAA,EACtS,CAAC,EAAE,CAAC,EAAEC,GAAE,GAAGT,EAAEQ,EAAE,KAAK,QAAQ,UAAUR,EAAEA,EAAE,QAAQ,KAAK,MAAM,MAAM,mBAAmB,IAAI,EAAES,GAAET,GAAGS,GAAET,EAAE,QAAQ,KAAK,MAAM,MAAM,cAAc,MAAM,EAAEI,EAAG,KAAKJ,CAAC,GAAGK,EAAG,KAAKL,CAAC,GAAGM,EAAG,KAAKN,CAAC,GAAGO,EAAG,KAAKP,CAAC,GAAGG,EAAE,KAAKH,CAAC,GAAG,EAAE,KAAKA,CAAC,EAAE,MAAM,GAAGS,GAAE,OAAO,KAAK,MAAM,MAAM,YAAY,GAAGP,GAAG,CAACF,EAAE,KAAI,EAAGD,GAAG;AAAA,EAC3RU,GAAE,MAAMP,CAAC,MAAM,CAAC,GAAGD,GAAG,EAAE,QAAQ,KAAK,MAAM,MAAM,cAAc,MAAM,EAAE,OAAO,KAAK,MAAM,MAAM,YAAY,GAAG,GAAGG,EAAG,KAAK,CAAC,GAAGC,EAAG,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAMN,GAAG;AAAA,EAC5JC,CAAC,CAACC,EAAE,CAACD,EAAE,KAAI,EAAGF,GAAGU,EAAE;AAAA,EACnB,EAAE,EAAE,UAAUA,EAAE,OAAO,CAAC,EAAE,EAAEC,GAAE,MAAMP,CAAC,CAAC,CAAC,CAACnF,EAAE,QAAQsE,EAAEtE,EAAE,MAAM,GAAG,KAAK,MAAM,MAAM,gBAAgB,KAAK+E,CAAC,IAAIT,EAAE,KAAKtE,EAAE,MAAM,KAAK,CAAC,KAAK,YAAY,IAAI+E,EAAE,KAAK,CAAC,CAAC,KAAK,QAAQ,KAAK,KAAK,MAAM,MAAM,WAAW,KAAKC,CAAC,EAAE,MAAM,GAAG,KAAKA,EAAE,OAAO,EAAE,CAAC,EAAEhF,EAAE,KAAK+E,CAAC,CAAC,IAAIR,EAAEvE,EAAE,MAAM,GAAG,EAAE,EAAE,GAAGuE,EAAEA,EAAE,IAAIA,EAAE,IAAI,QAAO,EAAGA,EAAE,KAAKA,EAAE,KAAK,QAAO,MAAQ,QAAOvE,EAAE,IAAIA,EAAE,IAAI,QAAO,EAAG,QAAQwE,KAAKxE,EAAE,MAAM,CAAC,GAAG,KAAK,MAAM,MAAM,IAAI,GAAGwE,EAAE,OAAO,KAAK,MAAM,YAAYA,EAAE,KAAK,EAAE,EAAEA,EAAE,KAAK,CAAC,GAAGA,EAAE,KAAKA,EAAE,KAAK,QAAQ,KAAK,MAAM,MAAM,gBAAgB,EAAE,EAAEA,EAAE,OAAO,CAAC,GAAG,OAAO,QAAQA,EAAE,OAAO,CAAC,GAAG,OAAO,YAAY,CAACA,EAAE,OAAO,CAAC,EAAE,IAAIA,EAAE,OAAO,CAAC,EAAE,IAAI,QAAQ,KAAK,MAAM,MAAM,gBAAgB,EAAE,EAAEA,EAAE,OAAO,CAAC,EAAE,KAAKA,EAAE,OAAO,CAAC,EAAE,KAAK,QAAQ,KAAK,MAAM,MAAM,gBAAgB,EAAE,EAAE,QAAQQ,EAAE,KAAK,MAAM,YAAY,OAAO,EAAEA,GAAG,EAAEA,IAAI,GAAG,KAAK,MAAM,MAAM,WAAW,KAAK,KAAK,MAAM,YAAYA,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,MAAM,YAAYA,CAAC,EAAE,IAAI,KAAK,MAAM,YAAYA,CAAC,EAAE,IAAI,QAAQ,KAAK,MAAM,MAAM,gBAAgB,EAAE,EAAE,KAAK,CAAC,CAAC,IAAID,EAAE,KAAK,MAAM,MAAM,iBAAiB,KAAKP,EAAE,GAAG,EAAE,GAAGO,EAAE,CAAC,IAAIC,EAAE,CAAC,KAAK,WAAW,IAAID,EAAE,CAAC,EAAE,IAAI,QAAQA,EAAE,CAAC,IAAI,KAAK,EAAEP,EAAE,QAAQQ,EAAE,QAAQhF,EAAE,MAAMwE,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,EAAE,SAASA,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,WAAWA,EAAE,OAAO,CAAC,GAAGA,EAAE,OAAO,CAAC,EAAE,QAAQA,EAAE,OAAO,CAAC,EAAE,IAAIQ,EAAE,IAAIR,EAAE,OAAO,CAAC,EAAE,IAAIA,EAAE,OAAO,CAAC,EAAE,KAAKQ,EAAE,IAAIR,EAAE,OAAO,CAAC,EAAE,KAAKA,EAAE,OAAO,CAAC,EAAE,OAAO,QAAQQ,CAAC,GAAGR,EAAE,OAAO,QAAQ,CAAC,KAAK,YAAY,IAAIQ,EAAE,IAAI,KAAKA,EAAE,IAAI,OAAO,CAACA,CAAC,CAAC,CAAC,EAAER,EAAE,OAAO,QAAQQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAChF,EAAE,MAAM,CAAC,IAAI+E,EAAEP,EAAE,OAAO,OAAO,GAAG,EAAE,OAAO,OAAO,EAAEQ,EAAED,EAAE,OAAO,GAAGA,EAAE,KAAK,GAAG,KAAK,MAAM,MAAM,QAAQ,KAAK,EAAE,GAAG,CAAC,EAAE/E,EAAE,MAAMgF,CAAC,CAAC,CAAC,GAAGhF,EAAE,MAAM,QAAQwE,KAAKxE,EAAE,MAAM,CAACwE,EAAE,MAAM,GAAG,QAAQO,KAAKP,EAAE,OAAOO,EAAE,OAAO,SAASA,EAAE,KAAK,YAAY,CAAC,OAAO/E,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,OAAO,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAIF,EAAE,EAAE,CAAC,EAAE,YAAW,EAAG,QAAQ,KAAK,MAAM,MAAM,oBAAoB,GAAG,EAAEC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,MAAM,aAAa,IAAI,EAAE,QAAQ,KAAK,MAAM,OAAO,eAAe,IAAI,EAAE,GAAGC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,KAAK,MAAM,OAAO,eAAe,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,MAAM,IAAIF,EAAE,IAAI,EAAE,CAAC,EAAE,KAAKC,EAAE,MAAMC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,MAAM,eAAe,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,IAAIF,EAAEuE,GAAE,EAAE,CAAC,CAAC,EAAEtE,EAAE,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,MAAM,gBAAgB,EAAE,EAAE,MAAM,GAAG,EAAEC,EAAE,EAAE,CAAC,GAAG,KAAI,EAAG,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,MAAM,kBAAkB,EAAE,EAAE,MAAM;AAAA,CAC53E,EAAE,GAAGC,EAAE,CAAC,KAAK,QAAQ,IAAI,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAAE,EAAE,GAAGH,EAAE,SAASC,EAAE,OAAO,CAAC,QAAQuE,KAAKvE,EAAE,KAAK,MAAM,MAAM,gBAAgB,KAAKuE,CAAC,EAAErE,EAAE,MAAM,KAAK,OAAO,EAAE,KAAK,MAAM,MAAM,iBAAiB,KAAKqE,CAAC,EAAErE,EAAE,MAAM,KAAK,QAAQ,EAAE,KAAK,MAAM,MAAM,eAAe,KAAKqE,CAAC,EAAErE,EAAE,MAAM,KAAK,MAAM,EAAEA,EAAE,MAAM,KAAK,IAAI,EAAE,QAAQqE,EAAE,EAAEA,EAAExE,EAAE,OAAOwE,IAAIrE,EAAE,OAAO,KAAK,CAAC,KAAKH,EAAEwE,CAAC,EAAE,OAAO,KAAK,MAAM,OAAOxE,EAAEwE,CAAC,CAAC,EAAE,OAAO,GAAG,MAAMrE,EAAE,MAAMqE,CAAC,CAAC,CAAC,EAAE,QAAQA,KAAKtE,EAAEC,EAAE,KAAK,KAAKoE,GAAEC,EAAErE,EAAE,OAAO,MAAM,EAAE,IAAI,CAACsE,EAAEC,KAAK,CAAC,KAAKD,EAAE,OAAO,KAAK,MAAM,OAAOA,CAAC,EAAE,OAAO,GAAG,MAAMtE,EAAE,MAAMuE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAOvE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,SAAS,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAIH,EAAE,EAAE,CAAC,EAAE,KAAI,EAAG,MAAM,CAAC,KAAK,UAAU,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,KAAKA,EAAE,OAAO,KAAK,MAAM,OAAOA,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,UAAU,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAIA,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI;AAAA,EACvzB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,YAAY,IAAI,EAAE,CAAC,EAAE,KAAKA,EAAE,OAAO,KAAK,MAAM,OAAOA,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,OAAO,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,KAAK,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,OAAO,OAAO,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,SAAS,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,MAAM,MAAM,QAAQ,KAAK,MAAM,MAAM,UAAU,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM,MAAM,OAAO,GAAG,KAAK,MAAM,MAAM,QAAQ,KAAK,MAAM,MAAM,QAAQ,KAAK,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,MAAM,OAAO,IAAI,CAAC,KAAK,MAAM,MAAM,YAAY,KAAK,MAAM,MAAM,kBAAkB,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM,MAAM,WAAW,GAAG,KAAK,MAAM,MAAM,YAAY,KAAK,MAAM,MAAM,gBAAgB,KAAK,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,MAAM,WAAW,IAAI,CAAC,KAAK,OAAO,IAAI,EAAE,CAAC,EAAE,OAAO,KAAK,MAAM,MAAM,OAAO,WAAW,KAAK,MAAM,MAAM,WAAW,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAIA,EAAE,EAAE,CAAC,EAAE,KAAI,EAAG,GAAG,CAAC,KAAK,QAAQ,UAAU,KAAK,MAAM,MAAM,kBAAkB,KAAKA,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,MAAM,MAAM,gBAAgB,KAAKA,CAAC,EAAE,OAAO,IAAIG,EAAEwE,GAAE3E,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAIA,EAAE,OAAOG,EAAE,QAAQ,IAAI,EAAE,MAAM,KAAK,CAAC,IAAIA,EAAEyE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAGzE,IAAI,GAAG,OAAO,GAAGA,EAAE,GAAG,CAAC,IAAIsE,GAAG,EAAE,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,OAAOtE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,EAAEA,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,EAAEsE,CAAC,EAAE,KAAI,EAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAIxE,EAAE,EAAE,CAAC,EAAEC,EAAE,GAAG,GAAG,KAAK,QAAQ,SAAS,CAAC,IAAIC,EAAE,KAAK,MAAM,MAAM,kBAAkB,KAAKF,CAAC,EAAEE,IAAIF,EAAEE,EAAE,CAAC,EAAED,EAAEC,EAAE,CAAC,EAAE,MAAMD,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAOD,EAAEA,EAAE,OAAO,KAAK,MAAM,MAAM,kBAAkB,KAAKA,CAAC,IAAI,KAAK,QAAQ,UAAU,CAAC,KAAK,MAAM,MAAM,gBAAgB,KAAKD,CAAC,EAAEC,EAAEA,EAAE,MAAM,CAAC,EAAEA,EAAEA,EAAE,MAAM,EAAE,EAAE,GAAG6E,GAAG,EAAE,CAAC,KAAK7E,GAAGA,EAAE,QAAQ,KAAK,MAAM,OAAO,eAAe,IAAI,EAAE,MAAMC,GAAGA,EAAE,QAAQ,KAAK,MAAM,OAAO,eAAe,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAIF,EAAE,IAAIA,EAAE,KAAK,MAAM,OAAO,QAAQ,KAAK,CAAC,KAAKA,EAAE,KAAK,MAAM,OAAO,OAAO,KAAK,CAAC,GAAG,CAAC,IAAIC,GAAGD,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAG,QAAQ,KAAK,MAAM,MAAM,oBAAoB,GAAG,EAAEE,EAAE,EAAED,EAAE,YAAW,CAAE,EAAE,GAAG,CAACC,EAAE,CAAC,IAAIC,EAAEH,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,OAAO,IAAIG,EAAE,KAAKA,CAAC,CAAC,CAAC,OAAO2E,GAAG9E,EAAEE,EAAEF,EAAE,CAAC,EAAE,KAAK,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,EAAEA,EAAE,GAAG,CAAC,IAAIC,EAAE,KAAK,MAAM,OAAO,eAAe,KAAK,CAAC,EAAE,GAAG,GAACA,GAAG,CAACA,EAAE,CAAC,GAAG,CAACA,EAAE,CAAC,GAAG,CAACA,EAAE,CAAC,GAAG,CAACA,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAGD,EAAE,MAAM,KAAK,MAAM,MAAM,mBAAmB,KAAY,EAAEC,EAAE,CAAC,GAAGA,EAAE,CAAC,IAAQ,CAACD,GAAG,KAAK,MAAM,OAAO,YAAY,KAAKA,CAAC,GAAE,CAAC,IAAIG,EAAE,CAAC,GAAGF,EAAE,CAAC,CAAC,EAAE,OAAO,EAAEuE,EAAEC,EAAEC,EAAEvE,EAAE8E,EAAE,EAAEC,EAAEjF,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,MAAM,OAAO,kBAAkB,KAAK,MAAM,OAAO,kBAAkB,IAAIiF,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,EAAE,OAAO/E,CAAC,GAAGF,EAAEiF,EAAE,KAAK,CAAC,KAAK,MAAM,CAAC,GAAGV,EAAEvE,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAGA,EAAE,CAAC,EAAE,CAACuE,EAAE,SAAS,GAAGC,EAAE,CAAC,GAAGD,CAAC,EAAE,OAAOvE,EAAE,CAAC,GAAGA,EAAE,CAAC,EAAE,CAACyE,GAAGD,EAAE,QAAQ,UAAUxE,EAAE,CAAC,GAAGA,EAAE,CAAC,IAAIE,EAAE,GAAG,GAAGA,EAAEsE,GAAG,GAAG,CAACQ,GAAGR,EAAE,QAAQ,CAAC,GAAGC,GAAGD,EAAEC,EAAE,EAAE,SAASD,EAAE,KAAK,IAAIA,EAAEA,EAAEC,EAAEO,CAAC,EAAE,IAAIY,EAAE,CAAC,GAAG5F,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAOkF,EAAE,EAAE,MAAM,EAAEhF,EAAEF,EAAE,MAAM4F,EAAEpB,CAAC,EAAE,GAAG,KAAK,IAAItE,EAAEsE,CAAC,EAAE,EAAE,CAAC,IAAIY,EAAEF,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,KAAK,IAAIA,EAAE,KAAKE,EAAE,OAAO,KAAK,MAAM,aAAaA,CAAC,CAAC,CAAC,CAAC,IAAID,EAAED,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,SAAS,IAAIA,EAAE,KAAKC,EAAE,OAAO,KAAK,MAAM,aAAaA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAIpF,EAAE,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,MAAM,kBAAkB,GAAG,EAAEC,EAAE,KAAK,MAAM,MAAM,aAAa,KAAKD,CAAC,EAAEE,EAAE,KAAK,MAAM,MAAM,kBAAkB,KAAKF,CAAC,GAAG,KAAK,MAAM,MAAM,gBAAgB,KAAKA,CAAC,EAAE,OAAOC,GAAGC,IAAIF,EAAEA,EAAE,UAAU,EAAEA,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,IAAI,EAAE,CAAC,EAAE,KAAKA,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAEA,EAAE,GAAG,CAAC,IAAIC,EAAE,KAAK,MAAM,OAAO,UAAU,KAAK,CAAC,EAAE,GAAIA,IAAY,CAAEA,EAAE,CAAC,GAAQ,CAACD,GAAG,KAAK,MAAM,OAAO,YAAY,KAAKA,CAAC,GAAE,CAAC,IAAIG,EAAE,CAAC,GAAGF,EAAE,CAAC,CAAC,EAAE,OAAO,EAAEuE,EAAEC,EAAEC,EAAEvE,EAAE8E,EAAE,KAAK,MAAM,OAAO,UAAU,IAAIA,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,EAAE,OAAO9E,CAAC,GAAGF,EAAEgF,EAAE,KAAK,CAAC,KAAK,MAAM,CAAC,GAAGT,EAAEvE,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAGA,EAAE,CAAC,GAAGA,EAAE,CAAC,EAAE,CAACuE,IAAIC,EAAE,CAAC,GAAGD,CAAC,EAAE,OAAOC,IAAItE,GAAG,SAAS,GAAGF,EAAE,CAAC,GAAGA,EAAE,CAAC,EAAE,CAACyE,GAAGD,EAAE,QAAQ,CAAC,GAAGC,GAAGD,EAAEC,EAAE,EAAE,SAASD,EAAE,KAAK,IAAIA,EAAEA,EAAEC,CAAC,EAAE,IAAIQ,EAAE,CAAC,GAAGjF,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO4F,EAAE,EAAE,MAAM,EAAE1F,EAAEF,EAAE,MAAMiF,EAAET,CAAC,EAAEU,EAAEU,EAAE,MAAM1F,EAAE,CAACA,CAAC,EAAE,MAAM,CAAC,KAAK,MAAM,IAAI0F,EAAE,KAAKV,EAAE,OAAO,KAAK,MAAM,aAAaA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,OAAO,SAAS,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAInF,EAAEC,EAAE,OAAO,EAAE,CAAC,IAAI,KAAKD,EAAE,EAAE,CAAC,EAAEC,EAAE,UAAUD,IAAIA,EAAE,EAAE,CAAC,EAAEC,EAAED,GAAG,CAAC,KAAK,OAAO,IAAI,EAAE,CAAC,EAAE,KAAKA,EAAE,KAAKC,EAAE,OAAO,CAAC,CAAC,KAAK,OAAO,IAAID,EAAE,KAAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC,IAAIA,EAAEC,EAAE,GAAG,EAAE,CAAC,IAAI,IAAID,EAAE,EAAE,CAAC,EAAEC,EAAE,UAAUD,MAAM,CAAC,IAAIE,EAAE,GAAGA,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,MAAM,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,SAASA,IAAI,EAAE,CAAC,GAAGF,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,OAAOC,EAAE,UAAU,EAAE,CAAC,EAAEA,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,IAAI,EAAE,CAAC,EAAE,KAAKD,EAAE,KAAKC,EAAE,OAAO,CAAC,CAAC,KAAK,OAAO,IAAID,EAAE,KAAKA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAIA,EAAE,KAAK,MAAM,MAAM,WAAW,MAAM,CAAC,KAAK,OAAO,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQA,CAAC,CAAC,CAAC,CAAC,EAAM8F,EAAE,MAAMjG,EAAC,CAAC,OAAO,QAAQ,MAAM,YAAY,UAAU,YAAY3E,EAAE,CAAC,KAAK,OAAO,GAAG,KAAK,OAAO,MAAM,OAAO,OAAO,IAAI,EAAE,KAAK,QAAQA,GAAGyE,GAAE,KAAK,QAAQ,UAAU,KAAK,QAAQ,WAAW,IAAIqF,GAAE,KAAK,UAAU,KAAK,QAAQ,UAAU,KAAK,UAAU,QAAQ,KAAK,QAAQ,KAAK,UAAU,MAAM,KAAK,KAAK,YAAY,GAAG,KAAK,MAAM,CAAC,OAAO,GAAG,WAAW,GAAG,IAAI,EAAE,EAAE,IAAI/R,EAAE,CAAC,MAAMmN,EAAE,MAAM6D,GAAE,OAAO,OAAOC,GAAE,MAAM,EAAE,KAAK,QAAQ,UAAUjR,EAAE,MAAMgR,GAAE,SAAShR,EAAE,OAAOiR,GAAE,UAAU,KAAK,QAAQ,MAAMjR,EAAE,MAAMgR,GAAE,IAAI,KAAK,QAAQ,OAAOhR,EAAE,OAAOiR,GAAE,OAAOjR,EAAE,OAAOiR,GAAE,KAAK,KAAK,UAAU,MAAMjR,CAAC,CAAC,WAAW,OAAO,CAAC,MAAM,CAAC,MAAMgR,GAAE,OAAOC,EAAC,CAAC,CAAC,OAAO,IAAIhJ,EAAEjI,EAAE,CAAC,OAAO,IAAI4M,GAAE5M,CAAC,EAAE,IAAIiI,CAAC,CAAC,CAAC,OAAO,UAAUA,EAAEjI,EAAE,CAAC,OAAO,IAAI4M,GAAE5M,CAAC,EAAE,aAAaiI,CAAC,CAAC,CAAC,IAAIA,EAAE,CAACA,EAAEA,EAAE,QAAQkF,EAAE,eAAe;AAAA,CACpmK,EAAE,KAAK,YAAYlF,EAAE,KAAK,MAAM,EAAE,QAAQjI,EAAE,EAAEA,EAAE,KAAK,YAAY,OAAOA,IAAI,CAAC,IAAI+M,EAAE,KAAK,YAAY/M,CAAC,EAAE,KAAK,aAAa+M,EAAE,IAAIA,EAAE,MAAM,CAAC,CAAC,OAAO,KAAK,YAAY,GAAG,KAAK,MAAM,CAAC,YAAY9E,EAAEjI,EAAE,GAAG+M,EAAE,GAAG,CAAC,IAAI,KAAK,UAAU,MAAM,KAAK,KAAK,QAAQ,WAAW9E,EAAEA,EAAE,QAAQkF,EAAE,cAAc,MAAM,EAAE,QAAQA,EAAE,UAAU,EAAE,GAAGlF,GAAG,CAAC,IAAI+E,EAAE,GAAG,KAAK,QAAQ,YAAY,OAAO,KAAKE,IAAIF,EAAEE,EAAE,KAAK,CAAC,MAAM,IAAI,EAAEjF,EAAEjI,CAAC,IAAIiI,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAEhN,EAAE,KAAKgN,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,GAAGA,EAAE,KAAK,UAAU,MAAM/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAE,IAAIE,EAAElN,EAAE,GAAG,EAAE,EAAEgN,EAAE,IAAI,SAAS,GAAGE,IAAI,OAAOA,EAAE,KAAK;AAAA,EACljBlN,EAAE,KAAKgN,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,KAAK/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAE,IAAIE,EAAElN,EAAE,GAAG,EAAE,EAAEkN,GAAG,OAAO,aAAaA,GAAG,OAAO,QAAQA,EAAE,MAAMA,EAAE,IAAI,SAAS;AAAA,CAC5J,EAAE,GAAG;AAAA,GACHF,EAAE,IAAIE,EAAE,MAAM;AAAA,EACfF,EAAE,KAAK,KAAK,YAAY,GAAG,EAAE,EAAE,IAAIE,EAAE,MAAMlN,EAAE,KAAKgN,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,OAAO/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAEhN,EAAE,KAAKgN,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,QAAQ/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAEhN,EAAE,KAAKgN,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,GAAG/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAEhN,EAAE,KAAKgN,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,WAAW/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAEhN,EAAE,KAAKgN,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,KAAK/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAEhN,EAAE,KAAKgN,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,KAAK/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAEhN,EAAE,KAAKgN,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,IAAI/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAE,IAAIE,EAAElN,EAAE,GAAG,EAAE,EAAEkN,GAAG,OAAO,aAAaA,GAAG,OAAO,QAAQA,EAAE,MAAMA,EAAE,IAAI,SAAS;AAAA,CACvpB,EAAE,GAAG;AAAA,GACHF,EAAE,IAAIE,EAAE,MAAM;AAAA,EACfF,EAAE,IAAI,KAAK,YAAY,GAAG,EAAE,EAAE,IAAIE,EAAE,MAAM,KAAK,OAAO,MAAMF,EAAE,GAAG,IAAI,KAAK,OAAO,MAAMA,EAAE,GAAG,EAAE,CAAC,KAAKA,EAAE,KAAK,MAAMA,EAAE,KAAK,EAAEhN,EAAE,KAAKgN,CAAC,GAAG,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,MAAM/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAEhN,EAAE,KAAKgN,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,SAAS/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAEhN,EAAE,KAAKgN,CAAC,EAAE,QAAQ,CAAC,IAAIC,EAAEhF,EAAE,GAAG,KAAK,QAAQ,YAAY,WAAW,CAAC,IAAIiF,EAAE,IAAIqE,EAAEtJ,EAAE,MAAM,CAAC,EAAEuJ,EAAE,KAAK,QAAQ,WAAW,WAAW,QAAQC,GAAG,CAACD,EAAEC,EAAE,KAAK,CAAC,MAAM,IAAI,EAAEF,CAAC,EAAE,OAAOC,GAAG,UAAUA,GAAG,IAAItE,EAAE,KAAK,IAAIA,EAAEsE,CAAC,EAAE,CAAC,EAAEtE,EAAE,KAAKA,GAAG,IAAID,EAAEhF,EAAE,UAAU,EAAEiF,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,MAAM,MAAMF,EAAE,KAAK,UAAU,UAAUC,CAAC,GAAG,CAAC,IAAIC,EAAElN,EAAE,GAAG,EAAE,EAAE+M,GAAGG,GAAG,OAAO,aAAaA,EAAE,MAAMA,EAAE,IAAI,SAAS;AAAA,CACnoB,EAAE,GAAG;AAAA,GACHF,EAAE,IAAIE,EAAE,MAAM;AAAA,EACfF,EAAE,KAAK,KAAK,YAAY,IAAG,EAAG,KAAK,YAAY,GAAG,EAAE,EAAE,IAAIE,EAAE,MAAMlN,EAAE,KAAKgN,CAAC,EAAED,EAAEE,EAAE,SAAShF,EAAE,OAAOA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,KAAK/E,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAU+E,EAAE,IAAI,MAAM,EAAE,IAAIE,EAAElN,EAAE,GAAG,EAAE,EAAEkN,GAAG,OAAO,QAAQA,EAAE,MAAMA,EAAE,IAAI,SAAS;AAAA,CACzP,EAAE,GAAG;AAAA,GACHF,EAAE,IAAIE,EAAE,MAAM;AAAA,EACfF,EAAE,KAAK,KAAK,YAAY,IAAG,EAAG,KAAK,YAAY,GAAG,EAAE,EAAE,IAAIE,EAAE,MAAMlN,EAAE,KAAKgN,CAAC,EAAE,QAAQ,CAAC,GAAG/E,EAAE,CAAC,IAAIiF,EAAE,0BAA0BjF,EAAE,WAAW,CAAC,EAAE,GAAG,KAAK,QAAQ,OAAO,CAAC,QAAQ,MAAMiF,CAAC,EAAE,KAAK,KAAM,OAAM,IAAI,MAAMA,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,IAAI,GAAGlN,CAAC,CAAC,OAAOiI,EAAEjI,EAAE,GAAG,CAAC,OAAO,KAAK,YAAY,KAAK,CAAC,IAAIiI,EAAE,OAAOjI,CAAC,CAAC,EAAEA,CAAC,CAAC,aAAaiI,EAAEjI,EAAE,GAAG,CAAC,KAAK,UAAU,MAAM,KAAK,IAAI+M,EAAE9E,EAAE+E,EAAE,KAAK,GAAG,KAAK,OAAO,MAAM,CAAC,IAAIwE,EAAE,OAAO,KAAK,KAAK,OAAO,KAAK,EAAE,GAAGA,EAAE,OAAO,EAAE,MAAMxE,EAAE,KAAK,UAAU,MAAM,OAAO,cAAc,KAAKD,CAAC,KAAK,MAAMyE,EAAE,SAASxE,EAAE,CAAC,EAAE,MAAMA,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,CAAC,IAAID,EAAEA,EAAE,MAAM,EAAEC,EAAE,KAAK,EAAE,IAAI,IAAI,OAAOA,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,IAAID,EAAE,MAAM,KAAK,UAAU,MAAM,OAAO,cAAc,SAAS,EAAE,CAAC,MAAMC,EAAE,KAAK,UAAU,MAAM,OAAO,eAAe,KAAKD,CAAC,KAAK,MAAMA,EAAEA,EAAE,MAAM,EAAEC,EAAE,KAAK,EAAE,KAAKD,EAAE,MAAM,KAAK,UAAU,MAAM,OAAO,eAAe,SAAS,EAAE,IAAIE,EAAE,MAAMD,EAAE,KAAK,UAAU,MAAM,OAAO,UAAU,KAAKD,CAAC,KAAK,MAAME,EAAED,EAAE,CAAC,EAAEA,EAAE,CAAC,EAAE,OAAO,EAAED,EAAEA,EAAE,MAAM,EAAEC,EAAE,MAAMC,CAAC,EAAE,IAAI,IAAI,OAAOD,EAAE,CAAC,EAAE,OAAOC,EAAE,CAAC,EAAE,IAAIF,EAAE,MAAM,KAAK,UAAU,MAAM,OAAO,UAAU,SAAS,EAAEA,EAAE,KAAK,QAAQ,OAAO,cAAc,KAAK,CAAC,MAAM,IAAI,EAAEA,CAAC,GAAGA,EAAE,IAAIG,EAAE,GAAGqE,EAAE,GAAG,KAAKtJ,GAAG,CAACiF,IAAIqE,EAAE,IAAIrE,EAAE,GAAG,IAAIsE,EAAE,GAAG,KAAK,QAAQ,YAAY,QAAQ,KAAKQ,IAAIR,EAAEQ,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE/J,EAAEjI,CAAC,IAAIiI,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAExR,EAAE,KAAKwR,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,GAAGA,EAAE,KAAK,UAAU,OAAOvJ,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAExR,EAAE,KAAKwR,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,IAAIvJ,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAExR,EAAE,KAAKwR,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,KAAKvJ,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAExR,EAAE,KAAKwR,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,QAAQvJ,EAAE,KAAK,OAAO,KAAK,EAAE,CAACA,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAE,IAAIQ,EAAEhS,EAAE,GAAG,EAAE,EAAEwR,EAAE,OAAO,QAAQQ,GAAG,OAAO,QAAQA,EAAE,KAAKR,EAAE,IAAIQ,EAAE,MAAMR,EAAE,MAAMxR,EAAE,KAAKwR,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,SAASvJ,EAAE8E,EAAEwE,CAAC,EAAE,CAACtJ,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAExR,EAAE,KAAKwR,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,SAASvJ,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAExR,EAAE,KAAKwR,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,GAAGvJ,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAExR,EAAE,KAAKwR,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,IAAIvJ,EAAE8E,EAAEwE,CAAC,EAAE,CAACtJ,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAExR,EAAE,KAAKwR,CAAC,EAAE,QAAQ,CAAC,GAAGA,EAAE,KAAK,UAAU,SAASvJ,CAAC,EAAE,CAACA,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAExR,EAAE,KAAKwR,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,MAAM,SAASA,EAAE,KAAK,UAAU,IAAIvJ,CAAC,GAAG,CAACA,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAExR,EAAE,KAAKwR,CAAC,EAAE,QAAQ,CAAC,IAAIC,EAAExJ,EAAE,GAAG,KAAK,QAAQ,YAAY,YAAY,CAAC,IAAI+J,EAAE,IAAIC,EAAEhK,EAAE,MAAM,CAAC,EAAE2K,EAAE,KAAK,QAAQ,WAAW,YAAY,QAAQV,GAAG,CAACU,EAAEV,EAAE,KAAK,CAAC,MAAM,IAAI,EAAED,CAAC,EAAE,OAAOW,GAAG,UAAUA,GAAG,IAAIZ,EAAE,KAAK,IAAIA,EAAEY,CAAC,EAAE,CAAC,EAAEZ,EAAE,KAAKA,GAAG,IAAIP,EAAExJ,EAAE,UAAU,EAAE+J,EAAE,CAAC,EAAE,CAAC,GAAGR,EAAE,KAAK,UAAU,WAAWC,CAAC,EAAE,CAACxJ,EAAEA,EAAE,UAAUuJ,EAAE,IAAI,MAAM,EAAEA,EAAE,IAAI,MAAM,EAAE,IAAI,MAAMD,EAAEC,EAAE,IAAI,MAAM,EAAE,GAAGtE,EAAE,GAAG,IAAI8E,EAAEhS,EAAE,GAAG,EAAE,EAAEgS,GAAG,OAAO,QAAQA,EAAE,KAAKR,EAAE,IAAIQ,EAAE,MAAMR,EAAE,MAAMxR,EAAE,KAAKwR,CAAC,EAAE,QAAQ,CAAC,GAAGvJ,EAAE,CAAC,IAAI+J,EAAE,0BAA0B/J,EAAE,WAAW,CAAC,EAAE,GAAG,KAAK,QAAQ,OAAO,CAAC,QAAQ,MAAM+J,CAAC,EAAE,KAAK,YAAY,IAAI,MAAMA,CAAC,CAAC,CAAC,CAAC,OAAOhS,CAAC,CAAC,EAAM8S,GAAE,KAAK,CAAC,QAAQ,OAAO,YAAY,EAAE,CAAC,KAAK,QAAQ,GAAGpG,EAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQK,CAAC,EAAE,CAAC,IAAIC,GAAG,GAAG,IAAI,MAAMG,EAAE,aAAa,IAAI,CAAC,EAAEF,EAAE,EAAE,QAAQE,EAAE,cAAc,EAAE,EAAE;AAAA,EAC91F,OAAOH,EAAE,8BAA8BoE,EAAEpE,CAAC,EAAE,MAAMD,EAAEE,EAAEmE,EAAEnE,EAAE,EAAE,GAAG;AAAA,EAC/D,eAAeF,EAAEE,EAAEmE,EAAEnE,EAAE,EAAE,GAAG;AAAA,CAC7B,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM;AAAA,EAC7B,KAAK,OAAO,MAAM,CAAC,CAAC;AAAA,CACrB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC;AAAA,CACtH,CAAC,GAAG,EAAE,CAAC,MAAM;AAAA,CACb,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,QAAQF,EAAE,EAAE,MAAMC,EAAE,GAAG,QAAQuE,EAAE,EAAEA,EAAE,EAAE,MAAM,OAAOA,IAAI,CAAC,IAAIC,EAAE,EAAE,MAAMD,CAAC,EAAEvE,GAAG,KAAK,SAASwE,CAAC,CAAC,CAAC,IAAIvE,EAAE,EAAE,KAAK,KAAKC,EAAE,GAAGH,IAAI,EAAE,WAAWA,EAAE,IAAI,GAAG,MAAM,IAAIE,EAAEC,EAAE;AAAA,EAC7KF,EAAE,KAAKC,EAAE;AAAA,CACV,CAAC,SAAS,EAAE,CAAC,MAAM,OAAO,KAAK,OAAO,MAAM,EAAE,MAAM,CAAC;AAAA,CACrD,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,WAAW,EAAE,cAAc,IAAI,+BAA+B,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,MAAM,KAAK,OAAO,YAAY,CAAC,CAAC;AAAA,CACxJ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAGF,EAAE,GAAG,QAAQE,EAAE,EAAEA,EAAE,EAAE,OAAO,OAAOA,IAAIF,GAAG,KAAK,UAAU,EAAE,OAAOE,CAAC,CAAC,EAAE,GAAG,KAAK,SAAS,CAAC,KAAKF,CAAC,CAAC,EAAE,IAAIC,EAAE,GAAG,QAAQC,EAAE,EAAEA,EAAE,EAAE,KAAK,OAAOA,IAAI,CAAC,IAAIC,EAAE,EAAE,KAAKD,CAAC,EAAEF,EAAE,GAAG,QAAQwE,EAAE,EAAEA,EAAErE,EAAE,OAAOqE,IAAIxE,GAAG,KAAK,UAAUG,EAAEqE,CAAC,CAAC,EAAEvE,GAAG,KAAK,SAAS,CAAC,KAAKD,CAAC,CAAC,CAAC,CAAC,OAAOC,IAAIA,EAAE,UAAUA,CAAC,YAAY;AAAA;AAAA,EAEpS,EAAE;AAAA,EACFA,EAAE;AAAA,CACH,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AAAA,EACzB,CAAC;AAAA,CACF,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,OAAO,YAAY,EAAE,MAAM,EAAED,EAAE,EAAE,OAAO,KAAK,KAAK,OAAO,EAAE,MAAM,IAAIA,CAAC,WAAW,EAAE,KAAK,KAAK,IAAIA,CAAC,KAAK,EAAE,KAAKA,CAAC;AAAA,CACxI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,WAAW,KAAK,OAAO,YAAY,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,OAAO,KAAK,OAAO,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,SAASqE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,QAAQ,KAAK,OAAO,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAOrE,CAAC,EAAE,CAAC,IAAIC,EAAE,KAAK,OAAO,YAAYD,CAAC,EAAEE,EAAEoE,GAAE,CAAC,EAAE,GAAGpE,IAAI,KAAK,OAAOD,EAAE,EAAEC,EAAE,IAAIC,EAAE,YAAY,EAAE,IAAI,OAAO,IAAIA,GAAG,WAAWkE,EAAE,CAAC,EAAE,KAAKlE,GAAG,IAAIF,EAAE,OAAOE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAKH,EAAE,OAAOC,CAAC,EAAE,CAACA,IAAID,EAAE,KAAK,OAAO,YAAYC,EAAE,KAAK,OAAO,YAAY,GAAG,IAAIC,EAAEoE,GAAE,CAAC,EAAE,GAAGpE,IAAI,KAAK,OAAOmE,EAAErE,CAAC,EAAE,EAAEE,EAAE,IAAIC,EAAE,aAAa,CAAC,UAAUkE,EAAErE,CAAC,CAAC,IAAI,OAAO,IAAIG,GAAG,WAAWkE,EAAE,CAAC,CAAC,KAAKlE,GAAG,IAAIA,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,WAAW,GAAG,EAAE,OAAO,KAAK,OAAO,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,EAAE,QAAQ,EAAE,KAAKkE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAM2B,GAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAM3J,EAAE,MAAMwD,EAAC,CAAC,QAAQ,SAAS,aAAa,YAAY3E,EAAE,CAAC,KAAK,QAAQA,GAAGyE,GAAE,KAAK,QAAQ,SAAS,KAAK,QAAQ,UAAU,IAAIoG,GAAE,KAAK,SAAS,KAAK,QAAQ,SAAS,KAAK,SAAS,QAAQ,KAAK,QAAQ,KAAK,SAAS,OAAO,KAAK,KAAK,aAAa,IAAIC,EAAC,CAAC,OAAO,MAAM9K,EAAEjI,EAAE,CAAC,OAAO,IAAI4M,GAAE5M,CAAC,EAAE,MAAMiI,CAAC,CAAC,CAAC,OAAO,YAAYA,EAAEjI,EAAE,CAAC,OAAO,IAAI4M,GAAE5M,CAAC,EAAE,YAAYiI,CAAC,CAAC,CAAC,MAAMA,EAAE,CAAC,KAAK,SAAS,OAAO,KAAK,IAAIjI,EAAE,GAAG,QAAQ+M,EAAE,EAAEA,EAAE9E,EAAE,OAAO8E,IAAI,CAAC,IAAIC,EAAE/E,EAAE8E,CAAC,EAAE,GAAG,KAAK,QAAQ,YAAY,YAAYC,EAAE,IAAI,EAAE,CAAC,IAAIE,EAAEF,EAAEuE,EAAE,KAAK,QAAQ,WAAW,UAAUrE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,EAAEA,CAAC,EAAE,GAAGqE,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,UAAU,OAAO,QAAQ,aAAa,OAAO,OAAO,MAAM,YAAY,MAAM,EAAE,SAASrE,EAAE,IAAI,EAAE,CAAClN,GAAGuR,GAAG,GAAG,QAAQ,CAAC,CAAC,IAAItE,EAAED,EAAE,OAAOC,EAAE,MAAM,IAAI,QAAQ,CAACjN,GAAG,KAAK,SAAS,MAAMiN,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAACjN,GAAG,KAAK,SAAS,GAAGiN,CAAC,EAAE,KAAK,CAAC,IAAI,UAAU,CAACjN,GAAG,KAAK,SAAS,QAAQiN,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAACjN,GAAG,KAAK,SAAS,KAAKiN,CAAC,EAAE,KAAK,CAAC,IAAI,QAAQ,CAACjN,GAAG,KAAK,SAAS,MAAMiN,CAAC,EAAE,KAAK,CAAC,IAAI,aAAa,CAACjN,GAAG,KAAK,SAAS,WAAWiN,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAACjN,GAAG,KAAK,SAAS,KAAKiN,CAAC,EAAE,KAAK,CAAC,IAAI,WAAW,CAACjN,GAAG,KAAK,SAAS,SAASiN,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAACjN,GAAG,KAAK,SAAS,KAAKiN,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAACjN,GAAG,KAAK,SAAS,IAAIiN,CAAC,EAAE,KAAK,CAAC,IAAI,YAAY,CAACjN,GAAG,KAAK,SAAS,UAAUiN,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAACjN,GAAG,KAAK,SAAS,KAAKiN,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAIC,EAAE,eAAeD,EAAE,KAAK,wBAAwB,GAAG,KAAK,QAAQ,OAAO,OAAO,QAAQ,MAAMC,CAAC,EAAE,GAAG,MAAM,IAAI,MAAMA,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOlN,CAAC,CAAC,YAAYiI,EAAEjI,EAAE,KAAK,SAAS,CAAC,KAAK,SAAS,OAAO,KAAK,IAAI+M,EAAE,GAAG,QAAQC,EAAE,EAAEA,EAAE/E,EAAE,OAAO+E,IAAI,CAAC,IAAIC,EAAEhF,EAAE+E,CAAC,EAAE,GAAG,KAAK,QAAQ,YAAY,YAAYC,EAAE,IAAI,EAAE,CAAC,IAAIsE,EAAE,KAAK,QAAQ,WAAW,UAAUtE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,EAAEA,CAAC,EAAE,GAAGsE,IAAI,IAAI,CAAC,CAAC,SAAS,OAAO,OAAO,QAAQ,SAAS,KAAK,WAAW,KAAK,MAAM,MAAM,EAAE,SAAStE,EAAE,IAAI,EAAE,CAACF,GAAGwE,GAAG,GAAG,QAAQ,CAAC,CAAC,IAAIrE,EAAED,EAAE,OAAOC,EAAE,KAAI,CAAE,IAAI,SAAS,CAACH,GAAG/M,EAAE,KAAKkN,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAACH,GAAG/M,EAAE,KAAKkN,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAACH,GAAG/M,EAAE,KAAKkN,CAAC,EAAE,KAAK,CAAC,IAAI,QAAQ,CAACH,GAAG/M,EAAE,MAAMkN,CAAC,EAAE,KAAK,CAAC,IAAI,WAAW,CAACH,GAAG/M,EAAE,SAASkN,CAAC,EAAE,KAAK,CAAC,IAAI,SAAS,CAACH,GAAG/M,EAAE,OAAOkN,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAACH,GAAG/M,EAAE,GAAGkN,CAAC,EAAE,KAAK,CAAC,IAAI,WAAW,CAACH,GAAG/M,EAAE,SAASkN,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,CAACH,GAAG/M,EAAE,GAAGkN,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAACH,GAAG/M,EAAE,IAAIkN,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAACH,GAAG/M,EAAE,KAAKkN,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAIqE,EAAE,eAAerE,EAAE,KAAK,wBAAwB,GAAG,KAAK,QAAQ,OAAO,OAAO,QAAQ,MAAMqE,CAAC,EAAE,GAAG,MAAM,IAAI,MAAMA,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOxE,CAAC,CAAC,EAAMiG,GAAE,KAAK,CAAC,QAAQ,MAAM,YAAY,EAAE,CAAC,KAAK,QAAQ,GAAGtG,EAAC,CAAC,OAAO,iBAAiB,IAAI,IAAI,CAAC,aAAa,cAAc,mBAAmB,cAAc,CAAC,EAAE,OAAO,6BAA6B,IAAI,IAAI,CAAC,aAAa,cAAc,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,KAAK,MAAM,CAAC,OAAO,EAAEmG,EAAE,IAAIA,EAAE,SAAS,CAAC,cAAc,EAAE,KAAK,MAAM,CAAC,OAAO,EAAEzJ,EAAE,MAAMA,EAAE,WAAW,CAAC,EAAM6J,GAAE,KAAK,CAAC,SAASxG,GAAC,EAAG,QAAQ,KAAK,WAAW,MAAM,KAAK,cAAc,EAAE,EAAE,YAAY,KAAK,cAAc,EAAE,EAAE,OAAOrD,EAAE,SAAS0J,GAAE,aAAaC,GAAE,MAAMF,EAAE,UAAUd,GAAE,MAAMiB,GAAE,eAAe,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAIjG,EAAE,GAAG,QAAQC,KAAK,EAAE,OAAOD,EAAEA,EAAE,OAAO,EAAE,KAAK,KAAKC,CAAC,CAAC,EAAEA,EAAE,KAAI,CAAE,IAAI,QAAQ,CAAC,IAAIC,EAAED,EAAE,QAAQE,KAAKD,EAAE,OAAOF,EAAEA,EAAE,OAAO,KAAK,WAAWG,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQA,KAAKD,EAAE,KAAK,QAAQsE,KAAKrE,EAAEH,EAAEA,EAAE,OAAO,KAAK,WAAWwE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,IAAItE,EAAED,EAAED,EAAEA,EAAE,OAAO,KAAK,WAAWE,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAIA,EAAED,EAAE,KAAK,SAAS,YAAY,cAAcC,EAAE,IAAI,EAAE,KAAK,SAAS,WAAW,YAAYA,EAAE,IAAI,EAAE,QAAQC,GAAG,CAAC,IAAIqE,EAAEtE,EAAEC,CAAC,EAAE,KAAK,GAAG,EAAEH,EAAEA,EAAE,OAAO,KAAK,WAAWwE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAEtE,EAAE,SAASF,EAAEA,EAAE,OAAO,KAAK,WAAWE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAOF,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,SAAS,YAAY,CAAC,UAAU,GAAG,YAAY,EAAE,EAAE,OAAO,EAAE,QAAQA,GAAG,CAAC,IAAIC,EAAE,CAAC,GAAGD,CAAC,EAAE,GAAGC,EAAE,MAAM,KAAK,SAAS,OAAOA,EAAE,OAAO,GAAGD,EAAE,aAAaA,EAAE,WAAW,QAAQE,GAAG,CAAC,GAAG,CAACA,EAAE,KAAK,MAAM,IAAI,MAAM,yBAAyB,EAAE,GAAG,aAAaA,EAAE,CAAC,IAAIC,EAAE,EAAE,UAAUD,EAAE,IAAI,EAAEC,EAAE,EAAE,UAAUD,EAAE,IAAI,EAAE,YAAYsE,EAAE,CAAC,IAAIC,EAAEvE,EAAE,SAAS,MAAM,KAAKsE,CAAC,EAAE,OAAOC,IAAI,KAAKA,EAAEtE,EAAE,MAAM,KAAKqE,CAAC,GAAGC,CAAC,EAAE,EAAE,UAAUvE,EAAE,IAAI,EAAEA,EAAE,QAAQ,CAAC,GAAG,cAAcA,EAAE,CAAC,GAAG,CAACA,EAAE,OAAOA,EAAE,QAAQ,SAASA,EAAE,QAAQ,SAAS,MAAM,IAAI,MAAM,6CAA6C,EAAE,IAAIC,EAAE,EAAED,EAAE,KAAK,EAAEC,EAAEA,EAAE,QAAQD,EAAE,SAAS,EAAE,EAAEA,EAAE,KAAK,EAAE,CAACA,EAAE,SAAS,EAAEA,EAAE,QAAQA,EAAE,QAAQ,QAAQ,EAAE,WAAW,EAAE,WAAW,KAAKA,EAAE,KAAK,EAAE,EAAE,WAAW,CAACA,EAAE,KAAK,EAAEA,EAAE,QAAQ,WAAW,EAAE,YAAY,EAAE,YAAY,KAAKA,EAAE,KAAK,EAAE,EAAE,YAAY,CAACA,EAAE,KAAK,GAAG,CAAC,gBAAgBA,GAAGA,EAAE,cAAc,EAAE,YAAYA,EAAE,IAAI,EAAEA,EAAE,YAAY,CAAC,EAAED,EAAE,WAAW,GAAGD,EAAE,SAAS,CAAC,IAAIE,EAAE,KAAK,SAAS,UAAU,IAAI6F,GAAE,KAAK,QAAQ,EAAE,QAAQ5F,KAAKH,EAAE,SAAS,CAAC,GAAG,EAAEG,KAAKD,GAAG,MAAM,IAAI,MAAM,aAAaC,CAAC,kBAAkB,EAAE,GAAG,CAAC,UAAU,QAAQ,EAAE,SAASA,CAAC,EAAE,SAAS,IAAIqE,EAAErE,EAAEsE,EAAEzE,EAAE,SAASwE,CAAC,EAAEE,EAAExE,EAAEsE,CAAC,EAAEtE,EAAEsE,CAAC,EAAE,IAAIS,IAAI,CAAC,IAAIC,EAAET,EAAE,MAAMvE,EAAE+E,CAAC,EAAE,OAAOC,IAAI,KAAKA,EAAER,EAAE,MAAMxE,EAAE+E,CAAC,GAAGC,GAAG,EAAE,CAAC,CAACjF,EAAE,SAASC,CAAC,CAAC,GAAGF,EAAE,UAAU,CAAC,IAAIE,EAAE,KAAK,SAAS,WAAW,IAAI8E,GAAE,KAAK,QAAQ,EAAE,QAAQ7E,KAAKH,EAAE,UAAU,CAAC,GAAG,EAAEG,KAAKD,GAAG,MAAM,IAAI,MAAM,cAAcC,CAAC,kBAAkB,EAAE,GAAG,CAAC,UAAU,QAAQ,OAAO,EAAE,SAASA,CAAC,EAAE,SAAS,IAAIqE,EAAErE,EAAEsE,EAAEzE,EAAE,UAAUwE,CAAC,EAAEE,EAAExE,EAAEsE,CAAC,EAAEtE,EAAEsE,CAAC,EAAE,IAAIS,IAAI,CAAC,IAAIC,EAAET,EAAE,MAAMvE,EAAE+E,CAAC,EAAE,OAAOC,IAAI,KAAKA,EAAER,EAAE,MAAMxE,EAAE+E,CAAC,GAAGC,CAAC,CAAC,CAACjF,EAAE,UAAUC,CAAC,CAAC,GAAGF,EAAE,MAAM,CAAC,IAAIE,EAAE,KAAK,SAAS,OAAO,IAAI+F,GAAE,QAAQ9F,KAAKH,EAAE,MAAM,CAAC,GAAG,EAAEG,KAAKD,GAAG,MAAM,IAAI,MAAM,SAASC,CAAC,kBAAkB,EAAE,GAAG,CAAC,UAAU,OAAO,EAAE,SAASA,CAAC,EAAE,SAAS,IAAIqE,EAAErE,EAAEsE,EAAEzE,EAAE,MAAMwE,CAAC,EAAEE,EAAExE,EAAEsE,CAAC,EAAEyB,GAAE,iBAAiB,IAAI9F,CAAC,EAAED,EAAEsE,CAAC,EAAES,GAAG,CAAC,GAAG,KAAK,SAAS,OAAOgB,GAAE,6BAA6B,IAAI9F,CAAC,EAAE,OAAO,SAAS,CAAC,IAAI,EAAE,MAAMsE,EAAE,KAAKvE,EAAE+E,CAAC,EAAE,OAAOP,EAAE,KAAKxE,EAAE,CAAC,CAAC,GAAC,EAAI,IAAIgF,EAAET,EAAE,KAAKvE,EAAE+E,CAAC,EAAE,OAAOP,EAAE,KAAKxE,EAAEgF,CAAC,CAAC,EAAEhF,EAAEsE,CAAC,EAAE,IAAIS,IAAI,CAAC,GAAG,KAAK,SAAS,MAAM,OAAO,SAAS,CAAC,IAAI,EAAE,MAAMR,EAAE,MAAMvE,EAAE+E,CAAC,EAAE,OAAO,IAAI,KAAK,EAAE,MAAMP,EAAE,MAAMxE,EAAE+E,CAAC,GAAG,CAAC,GAAC,EAAI,IAAIC,EAAET,EAAE,MAAMvE,EAAE+E,CAAC,EAAE,OAAOC,IAAI,KAAKA,EAAER,EAAE,MAAMxE,EAAE+E,CAAC,GAAGC,CAAC,CAAC,CAACjF,EAAE,MAAMC,CAAC,CAAC,GAAGF,EAAE,WAAW,CAAC,IAAIE,EAAE,KAAK,SAAS,WAAWC,EAAEH,EAAE,WAAWC,EAAE,WAAW,SAASuE,EAAE,CAAC,IAAIC,EAAE,GAAG,OAAOA,EAAE,KAAKtE,EAAE,KAAK,KAAKqE,CAAC,CAAC,EAAEtE,IAAIuE,EAAEA,EAAE,OAAOvE,EAAE,KAAK,KAAKsE,CAAC,CAAC,GAAGC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,GAAG,KAAK,SAAS,GAAGxE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,GAAG,KAAK,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO6F,EAAE,IAAI,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAOzJ,EAAE,MAAM,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC2D,EAAEC,IAAI,CAAC,IAAIC,EAAE,CAAC,GAAGD,CAAC,EAAEE,EAAE,CAAC,GAAG,KAAK,SAAS,GAAGD,CAAC,EAAEsE,EAAE,KAAK,QAAQ,CAAC,CAACrE,EAAE,OAAO,CAAC,CAACA,EAAE,KAAK,EAAE,GAAG,KAAK,SAAS,QAAQ,IAAID,EAAE,QAAQ,GAAG,OAAOsE,EAAE,IAAI,MAAM,oIAAoI,CAAC,EAAE,GAAG,OAAOxE,EAAE,KAAKA,IAAI,KAAK,OAAOwE,EAAE,IAAI,MAAM,gDAAgD,CAAC,EAAE,GAAG,OAAOxE,GAAG,SAAS,OAAOwE,EAAE,IAAI,MAAM,wCAAwC,OAAO,UAAU,SAAS,KAAKxE,CAAC,EAAE,mBAAmB,CAAC,EAAE,GAAGG,EAAE,QAAQA,EAAE,MAAM,QAAQA,EAAEA,EAAE,MAAM,MAAM,GAAGA,EAAE,MAAM,OAAO,SAAS,CAAC,IAAIsE,EAAEtE,EAAE,MAAM,MAAMA,EAAE,MAAM,WAAWH,CAAC,EAAEA,EAAE,EAAE,MAAMG,EAAE,MAAM,MAAMA,EAAE,MAAM,aAAa,CAAC,EAAE,EAAE2F,EAAE,IAAIA,EAAE,WAAWrB,EAAEtE,CAAC,EAAE+E,EAAE/E,EAAE,MAAM,MAAMA,EAAE,MAAM,iBAAiB,CAAC,EAAE,EAAEA,EAAE,YAAY,MAAM,QAAQ,IAAI,KAAK,WAAW+E,EAAE/E,EAAE,UAAU,CAAC,EAAE,IAAIgF,EAAE,MAAMhF,EAAE,MAAM,MAAMA,EAAE,MAAM,cAAc,CAAC,EAAE,EAAE9D,EAAE,MAAMA,EAAE,aAAa6I,EAAE/E,CAAC,EAAE,OAAOA,EAAE,MAAM,MAAMA,EAAE,MAAM,YAAYgF,CAAC,EAAEA,CAAC,GAAC,EAAI,MAAMX,CAAC,EAAE,GAAG,CAACrE,EAAE,QAAQH,EAAEG,EAAE,MAAM,WAAWH,CAAC,GAAG,IAAI,GAAGG,EAAE,MAAMA,EAAE,MAAM,aAAa,CAAC,EAAE,EAAE2F,EAAE,IAAIA,EAAE,WAAW9F,EAAEG,CAAC,EAAEA,EAAE,QAAQ,EAAEA,EAAE,MAAM,iBAAiB,CAAC,GAAGA,EAAE,YAAY,KAAK,WAAW,EAAEA,EAAE,UAAU,EAAE,IAAI+E,GAAG/E,EAAE,MAAMA,EAAE,MAAM,cAAc,CAAC,EAAE,EAAE9D,EAAE,MAAMA,EAAE,aAAa,EAAE8D,CAAC,EAAE,OAAOA,EAAE,QAAQ+E,EAAE/E,EAAE,MAAM,YAAY+E,CAAC,GAAGA,CAAC,OAAOT,EAAE,CAAC,OAAOD,EAAEC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAOzE,GAAG,CAAC,GAAGA,EAAE,SAAS;AAAA,2DAC7mQ,EAAE,CAAC,IAAIC,EAAE,iCAAiCoE,EAAErE,EAAE,QAAQ,GAAG,EAAE,EAAE,SAAS,OAAO,EAAE,QAAQ,QAAQC,CAAC,EAAEA,CAAC,CAAC,GAAG,EAAE,OAAO,QAAQ,OAAOD,CAAC,EAAE,MAAMA,CAAC,CAAC,CAAC,EAAMmG,GAAE,IAAID,GAAE,SAASE,EAAEvG,EAAE3E,EAAE,CAAC,OAAOiL,GAAE,MAAMtG,EAAE3E,CAAC,CAAC,CAACkL,EAAE,QAAQA,EAAE,WAAW,SAASvG,EAAE,CAAC,OAAOsG,GAAE,WAAWtG,CAAC,EAAEuG,EAAE,SAASD,GAAE,SAASvG,GAAEwG,EAAE,QAAQ,EAAEA,CAAC,EAAEA,EAAE,YAAY1G,GAAE0G,EAAE,SAASzG,GAAEyG,EAAE,IAAI,YAAYvG,EAAE,CAAC,OAAOsG,GAAE,IAAI,GAAGtG,CAAC,EAAEuG,EAAE,SAASD,GAAE,SAASvG,GAAEwG,EAAE,QAAQ,EAAEA,CAAC,EAAEA,EAAE,WAAW,SAASvG,EAAE3E,EAAE,CAAC,OAAOiL,GAAE,WAAWtG,EAAE3E,CAAC,CAAC,EAAEkL,EAAE,YAAYD,GAAE,YAAYC,EAAE,OAAO/J,EAAE+J,EAAE,OAAO/J,EAAE,MAAM+J,EAAE,SAASL,GAAEK,EAAE,aAAaJ,GAAEI,EAAE,MAAMN,EAAEM,EAAE,MAAMN,EAAE,IAAIM,EAAE,UAAUpB,GAAEoB,EAAE,MAAMH,GAAEG,EAAE,MAAMA,EAASA,EAAE,QAAWA,EAAE,WAAcA,EAAE,IAAOA,EAAE,WAAcA,EAAE,YAAoB/J,EAAE,MAASyJ,EAAE,IChDnuB,SAASO,GAAYC,EAAgCC,EAA2B,CACtF,MAAMC,EAAW,IAAIC,EAAO,SAC5B,OAAAD,EAAS,WAAaE,GACtBF,EAAS,KAAOG,GAChBH,EAAS,MAAQI,GAEVvP,EAAS,IAAM,CACrB,MAAMwP,EAAaN,GAAS,iBAAmB,EAC/CC,EAAS,QAAUM,GAAiBD,CAAU,EAC9C,MAAME,EAAWC,GAAQV,CAAI,EAAE,OAE/B,OAAOW,GAAU,SAChBR,EAAOM,EAAU,CAChB,MAAO,GACP,SAAAP,EACA,IAAK,GACL,OAAQ,GACR,SAAU,GACV,EACD,CACC,aAAc,CACb,KACA,KACA,KACA,KACA,KACA,KACA,SACA,IACA,IACA,KACA,KACA,KACA,KACA,MACA,aACD,CACD,CAEF,CAAC,CACF,CAUA,SAASG,GAAW,CAAE,KAAAO,EAAM,MAAAC,EAAO,KAAAb,GAAqB,CACvD,IAAIc,EACJ,GAAI,CACHA,EAAM,IAAI,IAAIF,CAAI,CACnB,MAAQ,CACP,MAAO,EACR,CAEA,GAAIE,EAAI,WAAa,SAAWA,EAAI,WAAa,SAChD,MAAO,GAGR,IAAIC,EAAM,YAAcH,EAAO,8BAC/B,OAAIC,IACHE,GAAO,WAAaF,EAAQ,KAE7BE,GAAO,IAAMf,EAAK,WAAW,oBAAqB,IAAI,EAAI,OACnDe,CACR,CASA,SAAST,GAAY,CAAE,MAAAO,EAAO,KAAAb,GAA8B,CAC3D,OAAIA,IAGGa,GAAS,GACjB,CAQA,SAAST,GAAiB,CAAE,KAAAJ,GAAmC,CAC9D,MAAO,eAAeA,CAAI,eAC3B,CAOA,SAASQ,GAAiBD,EAAoB,CAQ7C,MAAO,CAAC,CAAE,KAAAP,EAAM,MAAAgB,MACfA,EAAQ,KAAK,IAAI,EAAGA,GAAST,EAAa,EAAE,EACrC,KAAKS,CAAK,IAAIhB,CAAI,MAAMgB,CAAK,IAEtC,4GC/GA,MAAMC,EAAiBlB,GAAY,IAAMzU,EAAA,KAAM,CAAE,gBAAcA,EAAA,gBAAG,oBAKjEiG,EAAyD,OAApD,MAAM,oBAAoB,UAAQN,EAAAgQ,CAAA,wICPvCjQ,EAUkBC,EAAAxE,EAAA,GATjB,GAAG,OACF,KAAMwE,EAAAtE,CAAA,EAAC,0BACP,MAAO,IACG,OACV,IAAyC,CAAzC0F,EAAyCpB,EAAAqB,CAAA,GAAtB,KAAMrB,EAAAiQ,EAAA,GAAY,6BAEtC,IAEM,CAFN/H,EAEM,OAFA,MAAK3H,EAAEC,SAAO,iBAAiB,IACpCY,EAAgE8O,GAAA,CAA9C,KAAM7V,EAAA,IAAI,YAAc,gBAAiB,0OCVtDA,EAAA,YADPiG,EAMO,cAJL,MAAKC,EAAEC,SAAO,cAAc,EAC5B,MAAOnG,EAAA,OAAO,OACf+G,EAA2DpB,EAAAqB,CAAA,GAAxC,KAAMrB,EAAAiI,EAAA,EAAe,KAAM,GAAI,8BAAS,IAC3D9H,EAAG9F,EAAA,OAAO,YAAY,gMCXxB,MAAMsF,EAAQtF,EAOR8V,EAAcrQ,EAAS,IAAMH,EAAM,QAAU,GAAG,EAChDyQ,EAAatQ,EAAS,IAAMH,EAAM,QAAU,GAAG,EAC/C0Q,EAAYvQ,EAAS,IAAMqQ,EAAY,MAC1ClU,GACAC,EAAO,EACJoU,EAAYxQ,EAAS,IAAMqQ,EAAY,MAAQzU,EAAE,WAAY,WAAW,EAAIA,EAAE,WAAY,UAAU,CAAC,EACrG6U,EAAazQ,EAAS,IAAMqQ,EAAY,MAC3CzU,EAAE,WAAY,gEAAgE,EAC9EA,EAAE,WAAY,6HAA6H,CAAC,eAKvIyU,EAAA,OAAeC,EAAA,WADtB9P,EAMO,cAJL,MAAKC,EAAA,CAAIC,SAAO,gBAAkBA,SAAO,wBAAwB,EAAG2P,EAAA,MAAW,GAC/E,MAAOI,EAAA,QACRnP,EAAwDpB,EAAAqB,CAAA,GAArC,KAAMgP,EAAA,MAAY,KAAM,GAAI,4BAASnQ,EAAA,MACrDoQ,EAAA,KAAS,6QClBd,MAAME,EAAU1Q,EAAS,IAAM,CAACzF,MAAI,SAAWA,EAAA,IAAI,kBAAoBA,EAAA,IAAI,iBAAmB,CAAC,EACzFoW,EAAQ3Q,EAAS,IAAMzF,EAAA,IAAI,eAAiB,CAAC,EAE7CuV,EAAQ9P,EAAS,IAAM,CAC5B,MAAM4Q,GAAYD,EAAM,MAAQ,GAAG,QAAQ,CAAC,EAC5C,OAAO/U,EAAE,WAAY,8BAA+B,CAAE,MAAOgV,EAAU,CACxE,CAAC,EAEKC,EAAY7Q,EAAS,IAAM,KAAK,MAAM2Q,EAAM,MAAQ,EAAI,GAAI,CAAC,EAC7DG,EAAa9Q,EAAS,IAAM,KAAK,IAAI,KAAK,OAAO,EAAI2Q,EAAM,OAAS,EAAI,GAAI,EAAG,EAAIE,EAAU,KAAK,CAAC,EACnGE,EAAc/Q,EAAS,IAAO6Q,EAAU,MAAQC,EAAW,MAAS,CAAC,eAKnEJ,EAAA,WADPlQ,EAiBO,cAfN,KAAK,MACJ,aAAYsP,EAAA,MACZ,MAAOA,EAAA,MACP,MAAKrP,EAAEC,SAAO,aAAa,WAC5BF,EAIUI,EAAA,KAAAC,EAHOgQ,EAAA,MAATG,QADR/Q,EAIUC,EAAAqB,CAAA,GAFR,iBAAkByP,CAAK,GACvB,KAAM9Q,EAAA9D,EAAA,EACP,oCACuB2U,EAAA,WAAxB9Q,EAAsEC,EAAAqB,CAAA,SAAhC,KAAMrB,EAAA+Q,EAAA,EAAiB,6CAC7DzQ,EAIUI,EAAA,KAAAC,EAHOiQ,EAAA,MAATE,QADR/Q,EAIUC,EAAAqB,CAAA,GAFR,kBAAmByP,CAAK,GACxB,KAAM9Q,EAAAgR,EAAA,EACP,yJChCGtT,GAAQ,IAAIC,GAAO,CAAE,YAAa,EAAG,EAE9BsT,GAAiBjP,GAAY,SAAU,IAAM,CACzD,MAAMjE,EAASqE,EAAI,IAAI,GAAiC,EAOxD,eAAe8O,EAAeC,EAAiB,CAC9C,OAAO,MAAMzT,GAAM,IAAI,IAAM0T,EAAuBD,CAAO,CAAC,CAC7D,CAOA,eAAeE,EAAanL,EAAe,CAC1C,MAAM2J,EAAMrS,GAAe,uBAAuB,EAClD,GAAI,CAEH,KAAM,CAAE,KAAAa,CAAA,EAAS,MAAMf,EAAM,IAAkCuS,EAAK,CACnE,OAAQ,CACP,OAAQ3J,EAAM,OACd,MAAO,GACR,CACA,EACD,UAAWoL,KAASjT,EAAK,IAAI,KAAK,OAC7BN,EAAO,MAAM,IAAIuT,EAAM,EAAE,GAI7BvT,EAAO,MAAM,IAAIuT,EAAM,GAAI,CAC1B,GAAIA,EAAM,GACV,YAAaA,EAAM,YACnB,SAAU,GACV,CAEH,OAASlO,EAAO,CACf3D,EAAO,MAAM,0BAA2B,CAAE,MAAA2D,CAAA,CAAO,CAClD,CACD,CAOA,SAASmO,EAAaJ,EAAiB,CACtC,OAAOpT,EAAO,MAAM,IAAIoT,CAAO,CAChC,CAEA,MAAO,CACN,OAAQrR,EAAS,IAAM,MAAM,KAAK/B,EAAO,MAAM,QAAQ,CAAC,EACxD,aAAAsT,EACA,aAAAE,EACA,eAAAL,CAAA,EAQD,eAAeE,EAAuBD,EAAiB,CACtD,OAAKpT,EAAO,MAAM,IAAIoT,CAAO,GAC5B,MAAME,EAAaF,CAAO,EAEpBpT,EAAO,MAAM,IAAIoT,CAAO,CAChC,CACD,CAAC,ECvEM,SAASK,GAAiB3S,EAAsD,CACtF,MAAM4S,EAAcR,GAAA,EACdS,EAAuBtP,EAA2C,EAAE,EAC1E,OAAAyE,GAAM,IAAM4I,GAAQ5Q,CAAG,EAAE,OAAQ,SAAY,CAC5C,MAAMd,EAAS0R,GAAQ5Q,CAAG,EAAE,OAC5B,GAAId,IAAW,OAAW,CACzB2T,EAAqB,MAAQ,GAC7B,MACD,CAEA,MAAMC,EAAW5T,EAAO,IAAKuT,GAAUG,EAAY,eAAeH,CAAK,CAAC,EAClEM,EAAU,MAAM,QAAQ,IAAID,CAAQ,EAC1CD,EAAqB,MAAQE,EAAQ,OAAO,OAAO,CACpD,EAAG,CAAE,UAAW,GAAM,EAEf1N,GAASwN,CAAoB,CACrC,mLCRA,MAAMtR,EAAQyD,EAAA,EAERgO,EAAoBC,GAAA,EAEpBC,EAAejS,EAAS,IAAMzF,EAAA,IAAI,UACrC,IAAK2X,GAAYA,EAAQ,YAAY,EACtC,IAAKC,GAAS,KAAK,MAAMA,CAAI,CAAC,EAC9B,OACA,GAAG,EAAE,CAAC,EAKFC,EAAapS,EAAS,IACtBzF,EAAA,IAIE,CAACA,EAAA,IAAI,MAAM,EAAE,OAAO,IAAI8X,CAAU,EACvC,KAAK,CAAClF,EAAG,IAAMA,EAAE,MAAM,GAAG,EAAE,GAAG,EAAE,EAAG,cAAc,EAAE,MAAM,GAAG,EAAE,GAAG,EAAE,CAAE,CAAC,EACvE,KAAK,IAAI,EALH,EAMR,EAEKmF,EAActS,EAAS,IAAM,mCAAmCzF,EAAA,IAAI,EAAE,EAAE,EACxEqX,EAAuBF,GAAiB,IAAMnX,EAAA,GAAG,EAKjDgY,EAAoBvS,EAAS,IAAM,CACxC,MAAMwS,EAA2D,GACjE,OAAKjY,MAAI,UACRiY,EAAU,KAAK,CACd,GAAI,WACJ,KAAMF,EAAY,MAClB,MAAO1W,EAAE,WAAY,eAAe,EACpC,EAEErB,MAAI,SACPiY,EAAU,KAAK,CACd,GAAI,UACJ,KAAMjY,EAAA,IAAI,QACV,MAAOqB,EAAE,WAAY,eAAe,EACpC,EAEErB,MAAI,gBACHA,EAAA,IAAI,cAAc,MACrBiY,EAAU,KAAK,CACd,GAAI,WACJ,KAAMjY,EAAA,IAAI,cAAc,KACxB,MAAOqB,EAAE,WAAY,qBAAqB,EAC1C,EAEErB,EAAA,IAAI,cAAc,OACrBiY,EAAU,KAAK,CACd,GAAI,YACJ,KAAMjY,EAAA,IAAI,cAAc,MACxB,MAAOqB,EAAE,WAAY,qBAAqB,EAC1C,EAEErB,EAAA,IAAI,cAAc,WACrBiY,EAAU,KAAK,CACd,GAAI,gBACJ,KAAMjY,EAAA,IAAI,cAAc,UACxB,MAAOqB,EAAE,WAAY,yBAAyB,EAC9C,GAGI4W,CACR,CAAC,EAEKC,EAAgBzS,EAAS,IACvB,CAACzF,EAAA,IAAI,QAAQ,EAAE,OACpB,IAAKuI,GAAOxC,EAAM,gBAAgBwC,CAAE,GAAG,aAAeA,CAAE,EACxD,KAAK,IAAI,CACX,EAEK4P,EAAsB1S,EAAS,IAC7BzF,EAAA,IAAI,QAAU,CAACkF,GAAiBlF,EAAA,GAAG,CAC1C,EAOD,SAAS8X,EAAWM,EAAiB,CACpC,OAAIA,EAAQ,QAAQ,EAEZA,EAAQ,QAAQ,EAGjBA,CACR,mBAIC1S,EAuFkBC,EAAAxE,EAAA,GAtFjB,GAAG,UACF,KAAMwE,EAAAtE,CAAA,EAAC,sBACP,MAAO,IACG,OACV,IAA8C,CAA9C0F,EAA8CpB,EAAAqB,CAAA,GAA3B,KAAMrB,EAAA0S,EAAA,GAAiB,6BAE3C,IA+EM,CA/ENxK,EA+EM,MA/ENhO,GA+EM,CA7ELgO,EAIM,OAJA,MAAK3H,EAAEC,SAAO,0BAA0B,IAC7CY,EAAoCuR,GAAA,CAApB,MAAOtY,EAAA,IAAI,yBACLA,EAAA,IAAI,SAAWA,EAAA,IAAI,YAAzC0F,EAAwE6S,GAAA,OAAtB,OAAQvY,EAAA,IAAI,qCAC9D+G,EAAsByR,GAAA,CAAN,IAAAxY,EAAA,KAAG,qBAGDA,EAAA,IAAI,cAAgBA,EAAA,IAAI,qBAAuBA,EAAA,IAAI,oBAAoB,YAA1F0F,EAOaC,EAAA8S,EAAA,SAPqF,KAAK,oBACtG,IAAyG,CAAtG5S,EAAAC,EAAAH,EAAAtE,CAAA,oGAAsG,IACzG,GAAAwM,EAIK,MAJA,aAAYlI,EAAAtE,CAAA,EAAC,mCAAuC,MAAK6E,EAAEC,SAAO,uCAAuC,KAC7GC,EAAA,IAAAH,EAEKI,SAFsBrG,EAAA,IAAI,oBAAmB,CAAtC0Y,EAAKjC,KAAjBrQ,EAAA,EAAAH,EAEK,MAFgD,IAAKwQ,CAAA,IACtDiC,CAAG,uCAKSP,EAAA,WAAlBzS,EAEaC,EAAA8S,EAAA,SAF0B,KAAK,mBAC3C,IAAqJ,KAAlJ9S,EAAAtE,CAAA,EAAC,mKAGMsE,EAAA0R,CAAA,EAAqB,YAAhCpR,EAYM,aAZmC,MAAKC,EAAEC,SAAO,2BAA2B,IACjF0H,EAEK,MAFA,GAAIlI,EAAA6R,CAAA,KACL7R,EAAAtE,CAAA,EAAC,mCAAAsX,EAAA,EAEL9K,EAOK,MAPA,kBAAiBlI,EAAA6R,CAAA,EAAoB,MAAKtR,EAAEC,SAAO,kCAAkC,WACzFF,EAKKI,EAAA,KAAAC,EAJYX,EAAA0R,CAAA,EAATJ,QADRhR,EAKK,MAHH,IAAKgR,EAAM,GACX,MAAOA,EAAM,IACXnR,EAAAmR,EAAM,WAAW,IAAA2B,EAAA,gCAKZlB,EAAA,OAAY,CAAK1X,EAAA,IAAI,aAAhCiG,EAKM,aALoC,MAAKC,EAAEC,SAAO,2BAA2B,IAClF0H,EAEK,YADDlI,EAAAtE,CAAA,EAAC,iCAEL0F,EAA2FpB,EAAAkT,EAAA,GAA9E,MAAK3S,EAAEC,SAAO,kCAAkC,EAAG,UAAWuR,EAAA,mDAG5E7J,EAOM,OAPA,MAAK3H,EAAEC,SAAO,2BAA2B,IAC9C0H,EAEK,YADDlI,EAAAtE,CAAA,EAAC,yBAELwM,EAEI,KAFA,MAAK3H,EAAEC,SAAO,kCAAkC,KAChD0R,EAAA,KAAU,SAIfhK,EAOM,OAPA,MAAK3H,EAAEC,SAAO,2BAA2B,IAC9C0H,EAEK,YADDlI,EAAAtE,CAAA,EAAC,6BAELwM,EAEI,KAFA,MAAK3H,EAAEC,SAAO,kCAAkC,KAChD+R,EAAA,KAAa,SAIPF,EAAA,MAAkB,OAAM,OAAnC/R,EAkBM,aAlBoC,MAAKC,EAAEC,SAAO,2BAA2B,IAClF0H,EAAyC,YAAlClI,EAAAtE,CAAA,EAAC,4BACRwM,EAeK,MAdH,MAAK3H,EAAEC,SAAO,6BAA6B,EAC3C,aAAYR,EAAAtE,CAAA,EAAC,+CACd4E,EAWKI,EAAA,KAAAC,EAVe0R,EAAA,MAAZc,QADR7S,EAWK,MATH,IAAK6S,EAAS,GACd,MAAK5S,EAAEC,SAAO,iCAAiC,IAChD0H,EAMI,KALF,MAAK3H,EAAEC,SAAO,iCAAiC,EAC/C,KAAM2S,EAAS,KAChB,OAAO,SACP,IAAI,yBACDA,EAAS,KAAK,EAAG,MACrB,GAAAC,EAAA,4pBC5LN,MAAMzT,EAAQtF,EAERgZ,EAAWvT,EAAS,KAAOH,EAAM,IAAI,UAAY,IACrD,OAAQqS,GAAY,CACpB,MAAMsB,EAAS,OAAO,OAAOtB,EAAQ,cAAgB,EAAE,EACvD,OAAOsB,EAAO,OAAS,GAAKA,EAAO,KAAK,CAAC,CAAE,UAAAC,CAAA,IAAgB,CAAC,CAACA,CAAS,CACvE,CAAC,CAAC,EAOH,SAASC,EAA2BxB,EAA8B,CAEjE,OADuBA,EAAQ,aAAayB,GAAA,CAAa,GAClC,WAAazB,EAAQ,aAAa,IAAI,WAAa,EAC3E,cAKQqB,EAAA,MAAS,OAAM,OADtBtT,EAiBkBC,EAAAxE,EAAA,SAfjB,GAAG,YACF,KAAMwE,EAAAtE,CAAA,EAAC,wBACP,MAAO,IACG,OACV,IAAoD,CAApD0F,EAAoDpB,EAAAqB,CAAA,GAAjC,KAAMrB,EAAA0T,EAAA,EAAe,KAAM,iCAE1C,IAA2B,QAAhCpT,EAQMI,EAAA,KAAAC,EARiB0S,EAAA,MAAXrB,QAAZ1R,EAQM,OAR4B,IAAK0R,EAAQ,QAAU,MAAKzR,EAAEC,SAAO,cAAc,IACpF0H,EAEK,MAFA,MAAK3H,EAAEC,SAAO,uBAAuB,GACtCL,EAAA6R,EAAQ,OAAO,KAEnB5Q,EAG+C8O,GAAA,CAF7C,MAAK3P,EAAEC,SAAO,oBAAoB,EAClC,gBAAiB,EACjB,KAAMgT,EAA2BxB,CAAO,uPCrChC2B,GAA2B,CACvC,GAAI,UACJ,KAAM5X,GACN,MAAO,GACP,QAASqD,GACT,MAAO,IAAM1D,EAAE,WAAY,SAAS,EACpC,MAAM,SAASmD,EAAoC,CAElD,MADcgF,EAAA,EACF,WAAWhF,EAAI,EAAE,CAC9B,CACD,ECVa+U,GAA0B,CACtC,GAAI,SACJ,KAAM9X,GACN,MAAO,EACP,QAAS,UACT,QAAQ+C,EAAoC,CAC3C,MAAO,CAACD,GAAWC,CAAG,GAAKE,GAAUF,CAAG,CACzC,EACA,MAAO,IAAMnD,EAAE,WAAY,QAAQ,EACnC,MAAM,SAASmD,EAAoC,CAElD,MADcgF,EAAA,EACF,UAAUhF,EAAI,EAAE,CAC7B,CACD,ECbagV,GAA+B,CAC3C,GAAI,eACJ,KAAMC,GACN,MAAO,EACP,OAAQ,GACR,QAAS,UACT,MAAO,IAAMpY,EAAE,WAAY,cAAc,EACzC,QAAQmD,EAAoC,CAC3C,MAAO,CAACD,GAAWC,CAAG,GAAKK,GAAeL,CAAG,GAAKM,GAAgBN,CAAG,CACtE,EACA,MAAM,SAASA,EAAoC,CAElD,MADcgF,EAAA,EACF,UAAUhF,EAAI,GAAI,EAAI,CACnC,CACD,ECdakV,GAA2B,CACvC,GAAI,UACJ,KAAM5X,GACN,MAAO,EACP,QAAQ0C,EAAK,CACZ,OAAOD,GAAWC,CAAG,GAAK,CAACM,GAAgBN,CAAG,CAC/C,EACA,MAAQA,GACHA,EAAI,QACAnD,EAAE,WAAY,mBAAmB,EAErCmD,EAAI,cACAnD,EAAE,WAAY,qBAAqB,EAEpCA,EAAE,WAAY,oBAAoB,EAE1C,MAAM,SAASmD,EAAoC,CAElD,MADcgF,EAAA,EACF,UAAUhF,EAAI,EAAE,CAC7B,CACD,ECpBamV,GAAiC,CAC7C,GAAI,iBACJ,KAAM7X,GACN,MAAO,EACP,OAAQ,GACR,QAAQ0C,EAAK,CACZ,OAAOD,GAAWC,CAAG,GAAKM,GAAgBN,CAAG,CAC9C,EACA,MAAQA,GACHA,EAAI,QACAnD,EAAE,WAAY,yBAAyB,EAE3CmD,EAAI,cACAnD,EAAE,WAAY,2BAA2B,EAE1CA,EAAE,WAAY,0BAA0B,EAEhD,MAAM,SAASmD,EAAoC,CAElD,MADcgF,EAAA,EACF,UAAUhF,EAAI,GAAI,EAAI,CACnC,CACD,ECvBaoV,GAA+B,CAC3C,CACC,GAAI,OACJ,KAAMjD,GACN,MAAO,GACP,OAAQ,GACR,MAAO,IAAMtV,EAAE,WAAY,cAAc,EACzC,QAAQmD,EAAoC,CAC3C,MAAO,CAACA,EAAI,OACb,EACA,KAAKA,EAAoC,CACxC,MAAO,mCAAmC,mBAAmBA,EAAI,EAAE,CAAC,WACrE,GAED,CACC,GAAI,aACJ,KAAMqV,GACN,MAAO,GACP,OAAQ,GACR,MAAO,IAAMxY,EAAE,WAAY,cAAc,EACzC,QAAQmD,EAAoC,CAC3C,MAAO,CAAC,CAACA,EAAI,IACd,EACA,KAAKA,EAAoC,CACxC,OAAOA,EAAI,IACZ,GAED,CACC,GAAI,aACJ,KAAMsV,GACN,MAAO,GACP,OAAQ,GACR,MAAO,IAAMzY,EAAE,WAAY,kCAAkC,EAC7D,QAAQmD,EAAoC,CAC3C,MAAO,CAAC,CAACA,EAAI,UACd,EACA,KAAKA,EAAoC,CACxC,OAAOA,EAAI,UACZ,GAED,CACC,GAAI,UACJ,KAAMuV,GACN,MAAO,GACP,OAAQ,GACR,MAAO,IAAM1Y,EAAE,WAAY,mBAAmB,EAC9C,QAAQmD,EAAoC,CAC3C,MAAO,CAAC,CAACA,EAAI,OACd,EACA,KAAKA,EAAoC,CACxC,OAAOA,EAAI,OACZ,EAEF,EClDMwV,GAAqBC,GAAqB,IAAAC,GAAA,IAAM,2BAAAC,EAAA,EAA6C,uBAAC,EAEvFC,GAAgC,CAC5C,GAAI,iBACJ,KAAMC,GACN,MAAO,GACP,OAAQ,GACR,MAAO,IAAMhZ,EAAE,WAAY,iBAAiB,EAC5C,QAAS6D,GACT,MAAM,SAASV,EAAoC,CAClD,MAAMiE,GAAYuR,GAAoB,CAAE,IAAAxV,EAAK,CAC9C,CACD,ECba8V,GAA0B,CACtC,GAAI,SACJ,MAAO,GACP,KAAMC,GACN,QAAS,QACT,OAAQ,GACR,QAAS9V,GACT,MAAO,IAAMpD,EAAE,WAAY,QAAQ,EACnC,MAAM,SAASmD,EAAoC,CAElD,MADcgF,EAAA,EACF,aAAahF,EAAI,EAAE,CAChC,CACD,ECXagW,GAA0B,CACtC,GAAI,SACJ,KAAMC,GACN,QAAS,UACT,MAAO,EACP,QAAQjW,EAAK,CACZ,OAAKQ,GAAUR,CAAG,EAGdA,EAAI,QACHA,EAAI,QAAUA,EAAI,QAAQ,oBAAsB,iBAC5C,GAEYwB,GAAA,EACD,iBAEb,GATC,EAUT,EACA,MAAQxB,GAAuCnD,EAAE,WAAY,sBAAuB,CAAE,QAASmD,EAAI,OAAS,EAC5G,MAAM,SAASA,EAAoC,CAElD,MADcuG,GAAA,EACF,UAAUvG,EAAI,EAAE,CAC7B,CACD,ECMakW,GAAU,CACtBF,GACAjB,GACAD,GACAE,GACAE,GACAC,GACAW,GACAF,GACA,GAAGR,EACJ,EAAE,KAAK,CAAChH,EAAGnI,IAAMmI,EAAE,MAAQnI,EAAE,KAAK,ECrC3B,SAASkQ,GAAWnW,EAA6D,CACvF,OAAOiB,EAAS,IAAM2P,GAAQ5Q,CAAG,EAAIkW,GAAQ,OAAQrN,GAAWA,EAAO,QAAQ+H,GAAQ5Q,CAAG,CAAE,CAAC,EAAI,EAAE,CACpG,CCCO,SAASoW,GAAWpW,EAAgD,CAC1E,MAAMqW,EAAU9S,EAAmB,IAAI,EAKjC+S,EAAerV,EAAS,IAAM,CACnC,IAAIsV,EACJ,OAAIvW,EAAI,OAAO,QAEduW,EAAO9Y,GAEP8Y,EAAO,CAACvW,EAAI,OAAO,UAAY,EAAE,EAAE,OACjC,IAAKwW,GAAS1Z,EAAwB0Z,CAAI,CAAC,EAC3C,OAAQC,GAAS,CAAC,CAACA,CAAI,EACvB,GAAG,CAAC,IACAzW,EAAI,OAAO,QAAmBvC,GAATiZ,IAErBH,EAAO,wEAAwEA,CAAI,aAAe,IAC1G,CAAC,EAED,OAAAI,GAAY,SAAY,CAEvB,GAAI,CAAC3W,EAAI,OAAO,KACfqW,EAAQ,MAAQC,EAAa,UACvB,CACND,EAAQ,MAAQ,KAEhB,GAAI,CAGH,MAAMO,EAAS,MADF,MADI,MAAM,OAAO,MAAM5W,EAAI,MAAM,IAAI,GACtB,QACF,OAC1BqW,EAAQ,MAAQO,EAAO,WAAW,yCAA0C,qBAAqB,CAClG,OAASrS,EAAO,CACf8R,EAAQ,MAAQC,EAAa,MAC7B1V,EAAO,MAAM,0BAA2B,CAAE,MAAA2D,CAAA,CAAO,CAClD,CACD,CACD,CAAC,EAEM,CACN,QAAA8R,CAAA,CAEF,+CCxCA,MAAM3O,EAAQT,GAAA,EACRU,EAAST,GAAA,EACT3F,EAAQyD,EAAA,EACRwC,EAAed,GAAA,EAEf1H,EAAQiC,EAAiB,IAAM,CAACyG,EAAM,OAAO,EAAE,EAAE,OAAO,CAAC,CAAE,EAC3D1H,EAAMiB,EAAS,IAAMM,EAAM,WAAWvC,EAAM,KAAK,GAAK,IAAI,EAC1D,CAAE,QAAAqX,CAAA,EAAYD,GAAWpW,CAAG,EAK5B6W,EAAc5V,EAAS,IACvBjB,EAAI,MAILA,EAAI,MAAM,QACNnD,EAAE,WAAY,wCAAyC,CAAE,QAASmD,EAAI,MAAM,QAAS,QAAS,OAAOA,EAAI,MAAM,OAAO,EAAE,cAAe,EAExInD,EAAE,WAAY,oBAAqB,CAAE,QAASmD,EAAI,MAAM,QAAS,EANhE,EAOR,EAEK8W,EAAYvT,EAAI,SAAS,EAC/ByE,GAAM,CAAChI,CAAG,EAAG,IAAM,CAClB8W,EAAU,MAAQ,SACnB,CAAC,EAKD,SAASC,GAAiB,CACzBpP,EAAO,QAAQ,CACd,KAAMD,EAAM,KACZ,OAAQ,CACP,GAAGA,EAAM,OACT,GAAI,QAEL,MAAOF,EAAa,UAAS,CAC7B,CACF,CAKA,MAAMwP,EAAmBzT,EAAI,EAAK,EAC5B0T,EAAgBhW,EAAS,IAAMjB,EAAI,OAAO,YAAcgX,EAAiB,KAAK,EAIpF,SAASE,GAAiB,CACzB,GAAIlX,EAAI,OAAO,UAAYA,EAAI,OAAO,WAAY,CACjD,MAAMmX,EAAQ,IAAI,MAClBA,EAAM,OAAS,IAAM,CACpBH,EAAiB,MAAQ,EAC1B,EACAG,EAAM,IAAMnX,EAAI,MAAM,UACvB,CACD,CAEAgI,GAAM,CAAChI,CAAG,EAAGkX,CAAc,EAC3BE,GAAUF,CAAc,EAExB,MAAMhB,EAAUC,GAAW,IAAMnW,EAAI,KAAK,oBAKzCkB,EAkCeC,EAAAkW,EAAA,GAjCN,OAAQP,EAAA,uCAAAA,EAAS,MAAA7U,GACxB,MAAKP,EAAA,CAAGC,SAAO,kBAAoBA,SAAO,8BAA8B,EAAGsV,EAAA,MAAa,GACxF,WAAYA,EAAA,MAAgBjX,QAAK,WAAa,OAC9C,SAAUiX,EAAA,MACV,KAAMjX,EAAA,OAAK,MAAQhB,EAAA,MACnB,MAAOgB,EAAA,OAAK,MAAQhB,EAAA,MACpB,QAAS6X,EAAA,MACT,SAAUA,EAAA,MACV,QAAOE,CAAA,gBAkBR,IAAiD,CAA1B/W,EAAA,WACvByB,EAKWI,EAAA,SAJVU,EAA0B+U,GAAA,CAAN,IAAAtX,EAAA,OAAG,gBACvBuC,EAAuBgV,GAAA,CAAN,IAAAvX,EAAA,OAAG,gBACpBuC,EAAsBiV,GAAA,CAAN,IAAAxX,EAAA,OAAG,gBACOA,EAAA,MAAI,aAA9BkB,EAA8CuW,GAAA,OAAN,IAAAzX,EAAA,4CALzCkB,EAAiDC,EAAAmB,EAAA,SAArB,KAAK,yBAhBhB2U,EAAA,mBAAgB,cAChC,IAGc,CAHd1U,EAGcpB,EAAAqB,CAAA,GAFZ,MAAKd,EAAEC,SAAO,6BAA6B,EAC3C,IAAKR,EAAAkV,CAAA,GAAO,GACZ,KAAM,uCAGOrW,EAAA,YAAM,mBACrB,IAIyB,CAJzBuC,EAIyBmV,GAAA,CAHvB,IAAA1X,EAAA,MACA,QAAAmB,EAAA+U,CAAA,EACD,YACC,iBAAkB,4XCjGvB,MAAMxO,EAAQT,GAAA,EACR1F,EAAQyD,EAAA,EAER2S,EAAkB1W,EAAS,IAC5ByG,EAAM,OAAO,SACT,CAACA,EAAM,OAAO,QAAQ,EAAE,OAAO,CAAC,EAEpCA,EAAM,OAAS,eACX,UACGA,EAAM,OAAS,cAClB,SAED,UACP,EAEKkQ,EAAU3W,EAAS,IACpB0W,EAAgB,SAAS/a,EACrBA,EAAwB+a,EAAgB,KAAK,EAE9CpW,EAAM,gBAAgBoW,EAAgB,KAAK,GAAG,aAAeA,EAAgB,KACpF,EACKE,EAAY5W,EAAS,IAAM,GAAG2W,EAAQ,KAAK,MAAM/a,EAAE,WAAY,WAAW,CAAC,EAAE,EAE7Eib,EAAc7W,EAAS,IAAM,CAAC,CAACyG,EAAM,OAAO,EAAE,qDAInDxG,EAYYC,EAAA4W,EAAA,GAZD,QAAQ,YAAU,WAC5B,IAAsB,CAAtBxV,EAAsByV,EAAA,EACtBzV,EAQepB,EAAA8W,EAAA,GAPb,MAAKvW,EAAEC,SAAO,oBAAoB,EAClC,YAAaR,EAAAtE,CAAA,EAAC,wBACd,UAAAgb,EAAA,kBACD,IAEK,CAFKD,EAAA,WAAVnW,EAEK,YAFe,MAAKC,EAAEC,SAAO,oBAAoB,KAClDiW,EAAA,KAAO,eAEXrV,EAAe2V,CAAA,gDAEOJ,EAAA,WAAvB5W,EAAsCiX,GAAA,wMC7ClC7Q,GAAkBjE,GAAmB,WAAY,kBAAmB,EAAI,EAGxE+U,GAAmB,IAAA1C,GAAA,IAAM,OAAO,uCAA+B,0PAC/D2C,GAAiB,IAAA3C,GAAA,IAAM,OAAO,sCAA6B,OAAA9L,KAAA,mPAC3D0O,GAAkB,IAAA5C,GAAA,IAAM,+BAAqC,wBAC7D6C,GAAiB,IAAA7C,GAAA,IAAM,OAAO,qCAA6B,iQAC3D8C,GAAiB,IAAA9C,GAAA,IAAM,OAAO,sCAA6B,OAAA9L,KAAA,mPAE3D6O,GAA2B,CAChC,CACC,KAAM,oCACN,KAAM,OACN,SAAUnR,GACP,CACA,KAAM,iBAEN,CACA,KAAM,cACN,OAAQ,CAAE,SAAU,YAAY,EAEnC,SAAU,CACT,CACC,KAAM,gBACN,KAAM,gBACN,UAAW8Q,EAAA,EAEZ,CACC,KAAM,eACN,KAAM,eACN,UAAWE,EAAA,EAEZ,CACC,KAAM,qDACN,KAAM,cACN,UAAWD,EAAA,EAEZ,CACC,KAAM,iBACN,KAAM,gBACN,UAAWE,EAAA,EAEZ,CACC,KAAM,cACN,KAAM,cACN,UAAWC,EAAA,CACZ,CACD,CAEF,ECjDM7Q,GAAS+Q,GAAa,CAC3B,QAASC,GAAiBvW,EAAY,EAAE,CAAC,EACzC,gBAAiB,SACjB,OAAAqW,EACD,CAAC,ECDKG,GAAQC,GAAA,EACR7Y,GAAM8Y,GAAUC,EAAW,EACjC/Y,GAAI,OAAO,SAAW,WACtBA,GAAI,IAAI4Y,EAAK,EACb5Y,GAAI,IAAI2H,EAAM,EACd3H,GAAI,MAAM,UAAU,2FCEpB,MAAMF,EAAOiB,EAEPQ,EAAQyD,EAAA,EACR4N,EAAcR,GAAA,EAEd4G,EAAUzV,EAAI,EAAK,EACnBrE,EAASqE,EAA0B,EAAE,EAC3CyE,GAAM,IAAMxM,EAAA,IAAK,IAAM,CACtB0D,EAAO,OAAS1D,EAAA,IAAI,QAAU,IAC5B,IAAKwU,GAAM,CACX,MAAMyC,EAAQG,EAAY,aAAa5C,CAAC,EACxC,OAAKyC,GACJG,EAAY,aAAa5C,CAAC,EAEpByC,GAAS,CAAE,GAAIzC,EAAG,YAAaA,EAAG,SAAU,GACpD,CAAC,CACH,EAAG,CAAE,UAAW,GAAM,EAEtB,MAAMiJ,EAAkBhY,EAAS,IAAM2R,EAAY,OAAO,OAAQH,GAAU,CAACvT,EAAO,MAAM,SAASuT,CAAK,CAAC,CAAC,EACpGyG,EAAWC,GAAcvG,EAAY,aAAc,GAAG,EAK5D,eAAewG,GAAS,CACvB,GAAI,CACHJ,EAAQ,MAAQ,GAChB,MAAMzX,EAAM,iBAAiB/F,EAAA,IAAI,GAAI0D,EAAO,MAAM,IAAK8Q,GAAMA,EAAE,EAAE,CAAC,EAClElQ,EAAK,OAAO,CACb,SACCkZ,EAAQ,MAAQ,EACjB,CACD,CAKA,eAAeK,GAAU,CACxB,GAAI,CACHL,EAAQ,MAAQ,GAChB,MAAMzX,EAAM,iBAAiB/F,MAAI,GAAI,EAAE,EACvCsE,EAAK,OAAO,CACb,SACCkZ,EAAQ,MAAQ,EACjB,CACD,mBAIC9X,EA2BWC,EAAAkB,EAAA,GA1BV,UACC,KAAMlB,EAAAtE,CAAA,EAAC,8BACP,SAAQuc,EACR,QAAAC,CAAA,GAWU,UACV,IAEW,CAFX9W,EAEWpB,EAAAuB,EAAA,GAFA,SAAUsW,EAAA,MAAS,KAAK,oBAClC,IAAuC,KAApC7X,EAAAtE,CAAA,EAAC,0DAEL0F,EAMWpB,EAAAuB,EAAA,GANA,SAAUsW,EAAA,MAAS,KAAK,SAAS,QAAQ,yBAGxC,IAEX,CAFW3X,EAAA,MAERF,EAAAtE,CAAA,EAAC,+BAJYmc,EAAA,YAAU,YACzB,IAAiB,CAAjBzW,EAAiBpB,EAAAwH,EAAA,sDAhBpB,IAAgH,CAAhHU,EAAgH,SAAA/H,EAA1GH,EAAAtE,CAAA,EAAC,kFAAuFrB,EAAA,IAAI,KAAI,MACtG+G,EAOsBpB,EAAAmY,EAAA,cANZpa,EAAA,2CAAAA,EAAM,MAAA+C,GACd,MAAKP,EAAEC,SAAO,yBAAyB,EACxC,YACA,gBACA,YACC,QAASsX,EAAA,MACT,SAAQ9X,EAAA+X,CAAA,saC/DZ,MAAMK,EAAQtY,EAAS,IAAMzF,EAAA,IAAI,MAAM,SAAS,MAAM,CAAC,EACjDge,EAAUjW,EAAY,EAAE,EAC9B,OAAAyE,GAAM,IAAMxM,EAAA,IAAI,KAAM,SAAY,CAEjC,GADAge,EAAQ,MAAQ,GACZhe,EAAA,IAAI,MAAM,SAAS,MAAM,EAAG,CAC/B,MAAMie,EAAW,MAAM,MAAMje,EAAA,IAAI,IAAI,EACjCie,EAAS,KACZD,EAAQ,MAAQ,MAAMC,EAAS,OAC/BD,EAAQ,MAAQA,EAAQ,MACtB,WAAW,iDAAkD,EAAE,EAC/D,WAAW,wBAAyB,EAAE,EACtC,WAAW,yBAA0B,EAAE,EAE3C,CACD,EAAG,CAAE,UAAW,GAAM,cAIrB/X,EAgBO,QAhBA,MAAKC,EAAEC,SAAO,OAAO,IAEpB6X,EAAA,WADPtY,EAGkBC,EAAAqB,CAAA,SADhB,KAAAhH,EAAA,KACA,IAAKge,EAAA,+BAEKhe,EAAA,IAAI,MAAI,CAAK+d,EAAA,WADzB9X,EAMe,aAJb,MAAKC,EAAEC,SAAO,cAAc,EAC7B,IAAI,GACH,IAAKnG,EAAA,IAAI,KACT,OAAQA,EAAA,KACR,MAAOA,EAAA,mBAEIA,EAAA,yBADb0F,EAGSC,EAAAqB,CAAA,SADP,KAAMrB,EAAA1D,EAAA,EACN,KAAAjC,EAAA,8YCtBJ,MAAMkM,EAAQT,GAAA,EACRyS,EAAezY,EAAS,KAAO,CACpC,GAAGyG,EACH,OAAQ,CACP,GAAGA,EAAM,OACT,GAAIlM,EAAA,IAAI,IAET,MAAO,CACN,GAAGkM,EAAM,MACV,EACC,EAEIiS,EAAgB1Y,EAAoB,KAAO,CAChD,GAAI,UACJ,MAAO,GACP,QAAS,IAAM,GACf,MAAO,IAAMpE,EAAE,WAAY,cAAc,EACzC,KAAM+c,GACN,GAAI,IAAMF,EAAa,MACvB,OAAQ,IACP,EAEI7G,EAAuBF,GAAiB,IAAMnX,EAAA,GAAG,EACjDqe,EAAa1D,GAAW,IAAM3a,EAAA,GAAG,EACjC0a,EAAUjV,EAAS,IAAM,CAC9B,GAAG4Y,EAAW,MACdF,EAAc,MACd,oBAIAlY,EAkDK,MAlDA,MAAKC,EAAEC,SAAO,WAAW,IAC7B0H,EAeK,MAfA,MAAK3H,EAAEC,SAAO,qBAAqB,IACvCY,EAaWpB,EAAAuB,EAAA,GAZV,UAAU,QACT,MAAOvB,EAAAtE,CAAA,EAAC,2BACR,GAAI6c,EAAA,MACL,QAAQ,yBACR,UACW,OACV,IAA+C,CAA1Ble,EAAA,IAAI,aAAzB0F,EAA+CC,EAAAwH,EAAA,SAAZ,KAAM,WACzCzH,EAAkC4Y,GAAA,OAAjB,IAAAte,EAAA,IAAK,KAAM,iCAClB,IACX,CADW6F,EAAA,IACXC,EAAG9F,EAAA,IAAI,IAAI,EAAG,IACd,GAAYA,EAAA,IAAI,SAAhBoG,EAAA,EAAAH,EAA4F,OAA5FpG,GAAiD,IAACiG,EAAGH,EAAAtE,CAAA,6BAA+B,IAAC,aACrFwM,EAA0E,OAA1ErN,GAA8B,IAACsF,EAAGH,EAAAtE,CAAA,8BAAgC,IAAC,gCAGrEwM,EAEK,WADJA,EAAuE,QAAhE,MAAK3H,EAAEC,SAAO,wBAAwB,GAAKL,EAAA9F,EAAA,IAAI,OAAO,OAEnDA,EAAA,uBAAXiG,EAKK,KAAA0S,GAAA,CAJJ9K,EAGM,OAHA,MAAK3H,EAAEC,SAAO,sBAAsB,IACpBnG,EAAA,IAAI,WAAzB0F,EAAqD4S,GAAA,OAApB,MAAOtY,EAAA,IAAI,8CACVA,EAAA,KAAOA,EAAA,IAAI,YAA7C0F,EAA4E6S,GAAA,OAAtB,OAAQvY,EAAA,IAAI,4CAG1DA,EAAA,YAAViG,EAcK,KAAAsY,GAAA,CAZG5Y,EAAA0R,CAAA,EAAqB,OAAM,OADlCpR,EAYK,YAVH,MAAKC,EAAEC,SAAO,uBAAuB,EACrC,MAAOR,EAAA0R,CAAA,EAAqB,IAAKJ,GAAUA,EAAM,WAAW,EAAE,KAAI,SACnE7Q,EAAA,IAAAH,EAOWI,EAAA,KAAAC,EAPsBX,EAAA0R,CAAA,EAAoB,CAApCJ,EAAOR,cAAqC,IAAAQ,EAAM,KACxDR,IAAK,OAAfxQ,EAEK,KAFLuY,GAA0C,KAE1C,YACA3Q,EAEK,MAFA,2BAA4B4I,EAAK,MACrC1P,EAA4CpB,EAAA8Y,EAAA,GAAnC,KAAMxH,EAAM,YAAa,4EAKtCpJ,EAQK,WAPJA,EAMM,OANA,MAAK3H,EAAEC,SAAO,wBAAwB,IAC3CY,EAIwBmV,GAAA,CAHtB,MAAKhW,EAAEC,SAAO,+BAA+B,EAC7C,IAAAnG,EAAA,IACA,QAAA0a,EAAA,MACA,SAAU1a,EAAA,ipBC1FhB,MAAM0e,EAAerS,GAAe,OAAO,EACrC,CAAE,MAAOsS,GAAeC,GAAeF,CAAY,EAEnDG,EAAWpZ,EAAS,IAAMkZ,EAAW,MAAQ,GAAG,EAChDG,EAASrZ,EAAS,IAAMkZ,EAAW,OAAS,IAAI,oBAIrD1Y,EAkCQ,SAjCP,IAAI,QACH,MAAKC,EAAA,CAAGC,SAAO,SAAQ,EAAQA,SAAO,eAAe,EAAG0Y,EAAA,OAAc1Y,SAAO,aAAa,EAAG2Y,EAAA,WAI9FjR,EAMW,iBALVA,EAAuC,OAAjC,MAAK3H,EAAEC,SAAO,iBAAiB,WACrC0H,EAA0C,OAApC,MAAK3H,EAAEC,SAAO,oBAAoB,WAC5B0Y,EAAA,oBAAZ5Y,EAA2D,aAApC,MAAKC,EAAEC,SAAO,oBAAoB,YAC9C2Y,EAAA,WAAX7Y,EAAuD,aAAnC,MAAKC,EAAEC,SAAO,mBAAmB,qBACrD0H,EAA0C,OAApC,MAAK3H,EAAEC,SAAO,oBAAoB,aAEzC0H,EAYQ,QAZRhO,GAYQ,CAXPgO,EAUK,WATJA,EAAwC,YAAjClI,EAAAtE,CAAA,EAAC,2BACRwM,EAAuC,YAAhClI,EAAAtE,CAAA,EAAC,0BACGwd,EAAA,gBAAXzY,EAAA,EAAAH,EAEK,UADDN,EAAAtE,CAAA,EAAC,iCAEKyd,EAAA,OAAV1Y,EAAA,EAAAH,EAEK,UADDN,EAAAtE,CAAA,EAAC,mCAELwM,EAAuC,YAAhClI,EAAAtE,CAAA,EAAC,8BAGVwM,EAOQ,qBANP5H,EAKWI,EAAA,KAAAC,EAJItG,EAAA,KAAPwE,QADRkB,EAKWqZ,GAAA,CAHT,IAAKva,EAAI,GACT,IAAAA,EACA,SAAAqa,EAAA,MACA,OAAAC,EAAA,wcCtCL,MAAM/Y,EAAQyD,EAAA,EAERwV,EAAavZ,EAAS,IAAMM,EAAM,QAAQ,IAAKyE,IAAY,CAChE,GAAGA,EACH,KAAMA,EAAO,eACX,IAAKjC,GAAOxC,EAAM,KAAK,KAAMvB,GAAQA,EAAI,KAAO+D,CAAE,CAAC,EACnD,OAAO,OAAO,EAChB,WAAY,IACX,CAAC,EAOH,SAAS0W,EAAgBzU,EAA6B,CACrD,OAAOA,EAAO,eAAe,MAAOjC,GAAO,CAC1C,MAAM/D,EAAMuB,EAAM,KAAK,KAAMvB,GAAQA,EAAI,KAAO+D,CAAE,EAClD,OAAO/D,IAAQA,EAAI,QAAUE,GAAUF,CAAG,EAC3C,CAAC,CACF,CAOA,SAAS0a,EAAgB1U,EAA6B,CACrD,OAAOA,EAAO,eAAe,MAAOjC,GAAO,CAC1C,MAAM/D,EAAMuB,EAAM,KAAK,KAAMvB,GAAQA,EAAI,KAAO+D,CAAE,EAClD,OAAO/D,GAAOA,EAAI,MACnB,CAAC,CACF,CAOA,eAAe2a,EAAU3U,EAAyC,CACjEA,EAAO,WAAa,GACpB,MAAMzE,EAAM,aAAayE,EAAO,EAAE,EAClCA,EAAO,WAAa,EACrB,cAMQ7E,EAAAI,CAAA,EAAM,mBADbL,EAMiBC,EAAAmB,EAAA,SAJf,KAAMnB,EAAAtE,CAAA,EAAC,iCACG,OACV,IAA4B,CAA5B0F,EAA4BpB,EAAAwH,EAAA,GAAZ,KAAM,GAAE,6BAKzBlH,EAkBUI,EAAA,QAAAC,EAlBgB0Y,EAAA,MAAVxU,QAAhBvE,EAkBU,WAlB6B,IAAKuE,EAAO,KAClDqD,EAYM,OAZA,MAAK3H,EAAEC,SAAO,uBAAuB,IAC1C0H,EAA0B,UAAA/H,EAAnB0E,EAAO,IAAI,KAEV0U,EAAgB1U,CAAM,gBAD9B9E,EASWC,EAAAuB,EAAA,SAPT,SAAQ,CAAG+X,EAAgBzU,CAAM,EAClC,QAAQ,UACP,QAAK/D,GAAE0Y,EAAU3U,CAAM,IACb,OACV,IAAgD,CAAhDzD,EAAgDpB,EAAAqB,CAAA,GAA7B,KAAMrB,EAAAyZ,EAAA,GAAmB,6BAClC,IACX,CADWvZ,EAAA,MACRF,EAAAtE,CAAA,EAAC,gFAIN0F,EAEuBsY,GAAA,CADrB,MAAKnZ,EAAEC,SAAO,yBAAyB,EACvC,KAAMqE,EAAO","names":["_hoisted_1","_sfc_main","defineComponent","__props","_ctx","_cache","openBlock","createElementBlock","NcAppNavigationSpacer","_export_sfc","event","_hoisted_2","_sfc_render","$props","$setup","$data","$options","normalizeClass","args","createElementVNode","toDisplayString","renderSlot","NcAppSidebarTab","APPSTORE_CATEGORY_NAMES","t","APPSTORE_CATEGORY_ICONS","mdiStarCircleOutline","mdiAccountOutline","mdiCheck","mdiClose","mdiArchiveOutline","mdiStarShootingOutline","mdiStar","mdiDownload","mdiCreationOutline","mdiKeyOutline","mdiCogOutline","mdiViewColumnOutline","mdiFolder","mdiControllerClassicOutline","mdiOpenInApp","mdiMonitorEye","mdiMultimedia","mdiFileDocumentEdit","mdiOfficeBuildingOutline","mdiMagnify","mdiSecurity","mdiAccountMultipleOutline","mdiTools","mdiClipboardFlowOutline","APP_DISCOVER_KNOWN_TYPES","addPasswordConfirmationInterceptors","axios","BASE_URL","generateOcsUrl","Url","queue","PQueue","enableApp","appId","force","groups","PwdConfirmationMode","disableApp","updateApp","uninstallApp","getApps","data","getCategories","category","enableBundle","bundleId","rebuildNavigation","emit","canInstall","app","canUninstall","canEnable","isInitializing","isDeploying","canForceEnable","needForceEnable","canDisable","canUpdate","restrictedTypes","canLimitToGroups","type","logger","getLoggerBuilder","props","__emit","itemTitle","computed","_createBlock","_unref","NcListItem","_createTextVNode","_toDisplayString","store","useExAppsStore","_createElementBlock","_normalizeClass","$style","_openBlock","_Fragment","_renderList","daemon","DaemonSelectionDialogListEntry","$event","$emit","appApiAdminPage","generateUrl","NcDialog","NcEmptyContent","_createVNode","NcIconSvgWrapper","mdiFormatListBulleted","NcButton","DaemonSelectionDialogList","fetchApps","fetchAppStatus","enableExApp","deployOptions","confirmPassword","forceEnableExApp","disableExApp","defineStore","isEnabled","loadState","apps","ref","updateCount","statusUpdater","daemonAccessible","defaultDaemon","dockerDaemons","initializingOrDeployingApps","getById","id","exAppApi.enableExApp","spawnDialog","DaemonSelectionDialog","forceEnableApp","exAppApi.forceEnableExApp","initialize","exAppApi.disableExApp","error","showError","fetchDockerDaemons","fetchAllApps","exAppApi.fetchApps","status","exAppApi.fetchAppStatus","e","updateAppsStatus","useAppsStore","exApps","appstoreApps","categories","bundles","readonly","isLoadingApps","isLoadingCategories","getCategoryById","categoryId","getAppById","getAppsByCategory","api.enableApp","api.disableApp","api.uninstallApp","limitAppToGroups","bundle","b","api.enableBundle","loadCategories","api.getCategories","loadApps","api.getApps","useUpdatesStore","internalUpdateCount","api.updateApp","useUserSettingsStore","defaultGridSize","isGridView","showIncompatible","gridSizePx","getQuery","gridMode","useRoute","useRouter","to","updateFromQuery","query","appstoreEnabled","updateStore","userSettings","categoriesLoading","route","router","searchElement","useTemplateRef","useHotKey","search","watch","newQuery","watchDebounced","newValue","oldValue","isSubscribed","level","NcAppNavigation","NcAppNavigationSearch","NcAppNavigationItem","NcCounterBubble","NcLoadingIcon","inlineActions","action","menuActions","NcActions","NcActionButton","NcActionLink","NcActionRouter","gpuSupport","mdiFileChart","_createElementVNode","M","O","G","u","_","k","n","r","i","s","m","be","Re","Oe","Te","C","we","Q","se","ie","ye","j","Pe","F","Se","$e","v","U","_e","oe","Le","K","ne","Me","ze","Ee","Ie","ae","Ae","z","H","W","Ce","le","Be","De","qe","ue","ve","He","pe","Ze","Ge","Ne","Qe","je","Fe","Ue","Ke","We","Xe","q","Je","ce","he","Ve","re","X","Ye","N","et","B","E","tt","ke","T","J","V","a","o","l","I","de","ge","fe","nt","w","p","c","h","R","f","S","ee","te","me","xe","Z","A","d","x","y","$","P","D","L","g","useMarkdown","text","options","renderer","marked","markedBlockquote","markedLink","markedImage","minHeading","getMarkedHeading","markdown","toValue","dompurify","href","title","url","out","depth","renderMarkdown","mdiTextShort","MarkdownPreview","isSupported","isFeatured","badgeIcon","badgeText","badgeTitle","isShown","score","appScore","fullStars","emptyStars","hasHalfStar","index","mdiStarHalfFull","mdiStarOutline","useGroupsStore","fetchGroupById","groupId","internalFetchGroupById","searchGroups","group","getGroupById","useLimitedGroups","groupsStore","groupsAppIsLimitedTo","promises","results","idLimitedToGroups","useId","lastModified","release","date","appAuthors","authorName","appstoreUrl","externalResources","resources","appCategories","cannotLimitToGroups","xmlNode","mdiTextBoxOutline","BadgeAppLevel","BadgeAppDaemon","BadgeAppScore","NcNoteCard","dep","_hoisted_3","_hoisted_5","NcDateTime","resource","_hoisted_7","releases","values","changelog","createChangelogFromRelease","getLanguage","mdiClockFast","actionDisable","actionEnable","actionForceEnable","mdiAlertCircleCheckOutline","actionInstall","actionInstallForced","actionsInteract","mdiBugOutline","mdiForumOutline","mdiWeb","LimitToGroupDialog","defineAsyncComponent","__vitePreload","LimitToGroupDialog$1","actionLimitToGroup","mdiAccountGroup","actionRemove","mdiTrashCanOutline","actionUpdate","mdiUpdate","actions","useActions","useAppIcon","appIcon","categoryIcon","path","name","icon","mdiCog","watchEffect","rawSvg","licenseText","activeTab","hideAppDetails","screenshotLoaded","hasScreenshot","loadScreenshot","image","onMounted","NcAppSidebar","AppDescriptionTab","AppReleasesTab","AppDetailsTab","AppDeployDaemonTab","AppActions","currentCategory","heading","pageTitle","showSidebar","NcContent","AppstoreNavigation","NcAppContent","_component_router_view","AppstoreSidebar","AppstoreDiscover","AppstoreManage","AppstoreBundles","AppstoreBrowse","AppstoreSearch","routes","createRouter","createWebHistory","pinia","createPinia","createApp","AppstoreApp","loading","availableGroups","onSearch","useDebounceFn","onSave","onReset","NcSelectUsers","isSvg","svgIcon","response","detailsRoute","detailsAction","mdiInformationOutline","rawActions","AppIcon","_hoisted_4","_hoisted_6","NcChip","tableElement","tableWidth","useElementSize","isNarrow","isWide","AppTableRow","appBundles","canEnableBundle","isBundleEnabled","enableAll","mdiDownloadMultiple","AppTable"],"ignoreList":[0,1,18],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSpacer-CIRC4ZEj.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebarTab-DOSDDbGA.mjs","../build/frontend/apps/appstore/src/constants.ts","../build/frontend/apps/appstore/src/service/api.ts","../build/frontend/apps/appstore/src/service/rebuild-navigation.ts","../build/frontend/apps/appstore/src/utils/appStatus.ts","../build/frontend/apps/appstore/src/utils/logger.ts","../build/frontend/apps/appstore/src/components/DaemonSelectionDialog/DaemonSelectionDialogListEntry.vue","../build/frontend/apps/appstore/src/components/DaemonSelectionDialog/DaemonSelectionDialogList.vue","../build/frontend/apps/appstore/src/components/DaemonSelectionDialog/DaemonSelectionDialog.vue","../build/frontend/apps/appstore/src/service/exAppApi.ts","../build/frontend/apps/appstore/src/store/exApps.ts","../build/frontend/apps/appstore/src/store/apps.ts","../build/frontend/apps/appstore/src/store/updates.ts","../build/frontend/apps/appstore/src/store/userSettings.ts","../build/frontend/apps/appstore/src/views/AppstoreNavigation.vue","../build/frontend/apps/appstore/src/components/AppActions.vue","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppDeployDaemonTab.vue","../node_modules/marked/lib/marked.esm.js","../build/frontend/apps/appstore/src/composables/useMarkdown.ts","../build/frontend/apps/appstore/src/components/MarkdownPreview.vue","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppDescriptionTab.vue","../build/frontend/apps/appstore/src/components/BadgeAppDaemon.vue","../build/frontend/apps/appstore/src/components/BadgeAppLevel.vue","../build/frontend/apps/appstore/src/components/BadgeAppScore.vue","../build/frontend/apps/appstore/src/store/groups.ts","../build/frontend/apps/appstore/src/composables/useLimitedGroups.ts","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppDetailsTab.vue","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppReleasesTab.vue","../build/frontend/apps/appstore/src/actions/actionDisable.ts","../build/frontend/apps/appstore/src/actions/actionEnable.ts","../build/frontend/apps/appstore/src/actions/actionForceEnable.ts","../build/frontend/apps/appstore/src/actions/actionInstall.ts","../build/frontend/apps/appstore/src/actions/actionInstallForced.ts","../build/frontend/apps/appstore/src/actions/actionInteract.ts","../build/frontend/apps/appstore/src/actions/actionLimitToGroup.ts","../build/frontend/apps/appstore/src/actions/actionRemove.ts","../build/frontend/apps/appstore/src/actions/actionUpdate.ts","../build/frontend/apps/appstore/src/actions/index.ts","../build/frontend/apps/appstore/src/composables/useActions.ts","../build/frontend/apps/appstore/src/composables/useAppIcon.ts","../build/frontend/apps/appstore/src/views/AppstoreSidebar.vue","../build/frontend/apps/appstore/src/AppstoreApp.vue","../build/frontend/apps/appstore/src/router/routes.ts","../build/frontend/apps/appstore/src/router/index.ts","../build/frontend/apps/appstore/src/main.ts","../build/frontend/apps/appstore/src/components/LimitToGroupDialog.vue","../build/frontend/apps/appstore/src/components/AppIcon.vue","../build/frontend/apps/appstore/src/components/AppTable/AppTableRow.vue","../build/frontend/apps/appstore/src/components/AppTable/AppTable.vue","../build/frontend/apps/appstore/src/views/AppstoreBundles.vue"],"sourcesContent":["import '../assets/NcAppNavigationSpacer-LST5uYYS.css';\nimport { defineComponent, openBlock, createElementBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = { class: \"app-navigation-spacer\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationSpacer\",\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"li\", _hoisted_1);\n };\n }\n});\nconst NcAppNavigationSpacer = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-277fa710\"]]);\nexport {\n NcAppNavigationSpacer as N\n};\n//# sourceMappingURL=NcAppNavigationSpacer-CIRC4ZEj.mjs.map\n","import '../assets/NcAppSidebarTab-Xd3HTDbw.css';\nimport { openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, renderSlot } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcAppSidebarTab\",\n inject: [\"registerTab\", \"unregisterTab\", \"getActiveTab\", \"isTablistShown\"],\n props: {\n /**\n * Unique id of the sidebar tab\n */\n id: {\n type: String,\n required: true\n },\n /**\n * Tab name in navigation\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Tab icon's html class in navigation. Used if #icon slot is not provided\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Tab order in navigation. If not provided, name is used.\n */\n order: {\n type: Number,\n default: 0\n }\n },\n emits: [\n \"bottomReached\",\n \"scroll\"\n ],\n expose: [\"id\", \"name\", \"icon\", \"order\", \"renderIcon\"],\n computed: {\n /**\n * Is the current tab an active tab, that should be shown?\n *\n * @return {boolean}\n */\n isActive() {\n return this.getActiveTab() === this.id;\n }\n },\n created() {\n this.registerTab(this);\n },\n beforeUnmount() {\n this.unregisterTab(this.id);\n },\n methods: {\n onScroll(event) {\n if (this.$el.scrollHeight - this.$el.scrollTop === this.$el.clientHeight) {\n this.$emit(\"bottomReached\", event);\n }\n this.$emit(\"scroll\", event);\n },\n /**\n * Render tab's icon slot if any\n *\n * @return {import('vue').VNode[]}\n */\n renderIcon() {\n return this.$slots.icon?.();\n }\n }\n};\nconst _hoisted_1 = [\"id\", \"aria-hidden\", \"aria-label\", \"aria-labelledby\", \"role\", \"tabindex\"];\nconst _hoisted_2 = { class: \"hidden-visually\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"section\", {\n id: `tab-${$props.id}`,\n \"aria-hidden\": !$options.isActive,\n \"aria-label\": $options.isTablistShown() ? void 0 : $props.name,\n \"aria-labelledby\": $options.isTablistShown() ? `tab-button-${$props.id}` : void 0,\n class: normalizeClass([\"app-sidebar__tab\", { \"app-sidebar__tab--active\": $options.isActive }]),\n role: $options.isTablistShown() ? \"tabpanel\" : void 0,\n tabindex: $options.isTablistShown() ? 0 : -1,\n onScroll: _cache[0] || (_cache[0] = (...args) => $options.onScroll && $options.onScroll(...args))\n }, [\n createElementVNode(\"h3\", _hoisted_2, toDisplayString($props.name), 1),\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 42, _hoisted_1);\n}\nconst NcAppSidebarTab = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-dba10798\"]]);\nexport {\n NcAppSidebarTab as N\n};\n//# sourceMappingURL=NcAppSidebarTab-DOSDDbGA.mjs.map\n","/**\n * SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tmdiAccountMultipleOutline,\n\tmdiAccountOutline,\n\tmdiArchiveOutline,\n\tmdiCheck,\n\tmdiClipboardFlowOutline,\n\tmdiClose,\n\tmdiCogOutline,\n\tmdiControllerClassicOutline,\n\tmdiCreationOutline,\n\tmdiDownload,\n\tmdiFileDocumentEdit,\n\tmdiFolder,\n\tmdiKeyOutline,\n\tmdiMagnify,\n\tmdiMonitorEye,\n\tmdiMultimedia,\n\tmdiOfficeBuildingOutline,\n\tmdiOpenInApp,\n\tmdiSecurity,\n\tmdiStar,\n\tmdiStarCircleOutline,\n\tmdiStarShootingOutline,\n\tmdiTools,\n\tmdiViewColumnOutline,\n} from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\n\n/**\n * The names of the special appstore sections\n */\nexport const APPSTORE_CATEGORY_NAMES = Object.freeze({\n\tdiscover: t('appstore', 'Discover'),\n\tinstalled: t('appstore', 'Your apps'),\n\tenabled: t('appstore', 'Active apps'),\n\tdisabled: t('appstore', 'Disabled apps'),\n\tupdates: t('appstore', 'Updates'),\n\tbundles: t('appstore', 'App bundles'),\n\tfeatured: t('appstore', 'Featured apps'),\n\tsupported: t('appstore', 'Supported apps'), // From subscription\n\tsearch: t('appstore', 'Search results'),\n})\n\n/**\n * SVG paths used for appstore category icons\n */\nexport const APPSTORE_CATEGORY_ICONS = Object.freeze({\n\t// system special categories\n\tdiscover: mdiStarCircleOutline,\n\tinstalled: mdiAccountOutline,\n\tenabled: mdiCheck,\n\tdisabled: mdiClose,\n\tbundles: mdiArchiveOutline,\n\tsupported: mdiStarShootingOutline,\n\tfeatured: mdiStar,\n\tupdates: mdiDownload,\n\n\t// generic category\n\tai: mdiCreationOutline,\n\tauth: mdiKeyOutline,\n\tcustomization: mdiCogOutline,\n\tdashboard: mdiViewColumnOutline,\n\tfiles: mdiFolder,\n\tgames: mdiControllerClassicOutline,\n\tintegration: mdiOpenInApp,\n\tmonitoring: mdiMonitorEye,\n\tmultimedia: mdiMultimedia,\n\toffice: mdiFileDocumentEdit,\n\torganization: mdiOfficeBuildingOutline,\n\tsearch: mdiMagnify,\n\tsecurity: mdiSecurity,\n\tsocial: mdiAccountMultipleOutline,\n\ttools: mdiTools,\n\tworkflow: mdiClipboardFlowOutline,\n})\n\n/**\n * Currently known types of app discover section elements\n */\nexport const APP_DISCOVER_KNOWN_TYPES = ['post', 'showcase', 'carousel'] as const\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\nimport type { IAppstoreApp, IAppstoreCategory } from '../apps.d.ts'\n\nimport axios from '@nextcloud/axios'\nimport { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport PQueue from 'p-queue'\nimport { APPSTORE_CATEGORY_ICONS } from '../constants.ts'\n\naddPasswordConfirmationInterceptors(axios)\n\nconst BASE_URL = generateOcsUrl('apps/appstore/api/v1')\nconst Url = Object.freeze({\n\tapps: `${BASE_URL}/apps`,\n\tcategories: `${BASE_URL}/apps/categories`,\n\tenable: `${BASE_URL}/apps/enable`,\n\tdisable: `${BASE_URL}/apps/disable`,\n\tuninstall: `${BASE_URL}/apps/uninstall`,\n\tupdate: `${BASE_URL}/apps/update`,\n\tbundleEnable: `${BASE_URL}/bundles/enable`,\n})\n\nconst queue = new PQueue({ concurrency: 1 })\n\n/**\n * Enable an app by its app id\n *\n * @param appId - The app to enable\n * @param force - Whether to force enable the app\n * @param groups - The groups to enable the app for\n */\nexport async function enableApp(appId: string, force = false, groups?: string[]) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.enable, { appId, groups, force: force || undefined }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n\n/**\n * Disable app by its app id\n *\n * @param appId - The app to disable\n */\nexport async function disableApp(appId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.disable, { appId }, { confirmPassword: PwdConfirmationMode.Lax })\n\t})\n}\n\n/**\n * Update an app by its app id\n *\n * @param appId - The app id to update\n */\nexport async function updateApp(appId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.update, { appId }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n\n/**\n * Uninstall an app by its app id\n *\n * @param appId - The app to uninstall\n */\nexport async function uninstallApp(appId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.uninstall, { appId }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n\n/**\n * Get all apps from the appstore\n */\nexport async function getApps() {\n\tconst { data } = await axios.get>(Url.apps)\n\treturn data.ocs.data\n}\n\n/**\n * Get app categories\n */\nexport async function getCategories() {\n\tconst { data } = await axios.get>(Url.categories)\n\tfor (const category of data.ocs.data) {\n\t\tcategory.icon = APPSTORE_CATEGORY_ICONS[category.id] ?? ''\n\t}\n\treturn data.ocs.data\n}\n\n/**\n * Enable an app bundle by its id\n *\n * @param bundleId - The id of the bundle to enable\n */\nexport async function enableBundle(bundleId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.bundleEnable, { bundleId }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios from '@nextcloud/axios'\nimport { emit } from '@nextcloud/event-bus'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Rebuilds the app navigation menu\n */\nexport async function rebuildNavigation() {\n\tconst { data } = await axios.get(generateOcsUrl('core/navigation/apps?format=json'))\n\tif (data.ocs.meta.statuscode !== 200) {\n\t\treturn\n\t}\n\n\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\twindow.dispatchEvent(new Event('resize'))\n}\n","/*!\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\n/**\n * Check if an app can be installed.\n *\n * @param app - The app to check if installable\n */\nexport function canInstall(app: IAppstoreApp | IAppstoreExApp) {\n\tif (app.installed || app.internal) {\n\t\treturn false\n\t}\n\n\tif (app.missingDependencies === undefined || app.missingDependencies.length === 0) {\n\t\treturn true\n\t}\n\n\tif (!app.isCompatible && app.missingDependencies.length === 1) {\n\t\t// incompatible so can be installed but has to be force-enabled\n\t\treturn true\n\t}\n\n\treturn false\n}\n\n/**\n * Check if an app can be uninstalled.\n *\n * @param app - The app to check if uninstallable\n */\nexport function canUninstall(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.installed && app.removable && !app.active\n}\n\n/**\n * Check if app can be enabled.\n *\n * @param app - The app to check\n */\nexport function canEnable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !isInitializing(app) && !isDeploying(app) && canForceEnable(app) && app.isCompatible\n}\n\n/**\n * Check if an app can be force-enabled\n *\n * @param app - The app to check\n */\nexport function canForceEnable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !app.active && (app.installed || canInstall(app))\n}\n\n/**\n * Check if an app needs to be force-enabled\n *\n * @param app - The app to check\n */\nexport function needForceEnable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !app.active && !app.isCompatible\n}\n\n/**\n * Check if an app can be disabled.\n *\n * @param app - The app to check\n */\nexport function canDisable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !isInitializing(app) && !isDeploying(app) && app.active && !app.internal\n}\n\n/**\n * Check if an app can be updated.\n *\n * @param app - The app to check if update-able\n */\nexport function canUpdate(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.update !== undefined\n}\n\nconst restrictedTypes = ['filesystem', 'prelogin', 'authentication', 'logging', 'prevent_group_restriction']\n\n/**\n * Check if an app can be limited to groups\n *\n * @param app - The app to check if can be limited to groups\n */\nexport function canLimitToGroups(app: IAppstoreApp | IAppstoreExApp) {\n\tif (!app.active && !app.installed) {\n\t\treturn false\n\t}\n\n\tif (!app.active && needForceEnable(app)) {\n\t\treturn false\n\t}\n\n\tif (!app.types) {\n\t\treturn true\n\t}\n\n\treturn app.types.every((type) => !restrictedTypes.includes(type))\n}\n\n/**\n * Check if an app is currently being initialized.\n *\n * @param app - The app to check\n */\nfunction isInitializing(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.app_api\n\t\t&& (app.status.action === 'init' || app.status.action === 'healthcheck')\n}\n\n/**\n * Check if an app is currently being deployed.\n *\n * @param app - The app to check\n */\nfunction isDeploying(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.app_api\n\t\t&& app.status.action === 'deploy'\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('appstore')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","/*!\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { IAppstoreExApp, IDeployDaemon, IDeployOptions, IExAppStatus } from '../apps.d.ts'\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * Fetch all external (app_api) apps from the server.\n */\nexport async function fetchApps() {\n\tconst { data } = await axios.get(generateUrl('/apps/app_api/apps/list'))\n\treturn data.apps as IAppstoreExApp[]\n}\n\n/**\n * Get the status of an external app.\n *\n * @param appId - The app to fetch\n */\nexport async function fetchAppStatus(appId: string) {\n\tconst { data } = await axios.get(generateUrl(`/apps/app_api/apps/status/${appId}`))\n\treturn data\n}\n\n/**\n * Enable an external app.\n *\n * @param app - The app to enable\n * @param daemon - The daemon to use for deployment\n * @param deployOptions - Additional options for deployment\n */\nexport async function enableExApp(app: IAppstoreExApp, daemon: IDeployDaemon, deployOptions?: IDeployOptions) {\n\tawait confirmPassword()\n\tawait axios.post(generateUrl(`/apps/app_api/apps/enable/${app.id}/${daemon.name}`), { deployOptions })\n}\n\n/**\n * Force enable an external app\n *\n * @param appId - The app to force-enable\n */\nexport async function forceEnableExApp(appId: string) {\n\tawait confirmPassword()\n\tawait axios.post(generateUrl('/apps/app_api/apps/force'), { appId })\n}\n\n/**\n * Disable an external app.\n *\n * @param appId - The app to disable\n */\nexport async function disableExApp(appId: string) {\n\tawait confirmPassword()\n\tawait axios.get(generateUrl(`apps/app_api/apps/disable/${appId}`))\n}\n\n/**\n * Remove an external app.\n *\n * @param appId - The app to uninstall\n * @param removeData - If all data should be removed\n */\nexport async function uninstallExApp(appId: string, removeData = false) {\n\tawait confirmPassword()\n\tawait axios.get(generateUrl(`/apps/app_api/apps/uninstall/${appId}?removeData=${removeData}`))\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreExApp, IDeployDaemon, IExAppStatus } from '../apps.d.ts'\n\nimport axios from '@nextcloud/axios'\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport { spawnDialog } from '@nextcloud/vue'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport DaemonSelectionDialog from '../components/DaemonSelectionDialog/DaemonSelectionDialog.vue'\nimport * as exAppApi from '../service/exAppApi.ts'\nimport logger from '../utils/logger.ts'\n\nexport const useExAppsStore = defineStore('external-apps', () => {\n\t/**\n\t * Is the App API enabled\n\t */\n\tconst isEnabled = loadState('appstore', 'appApiEnabled', false)\n\n\t/**\n\t * All external apps available\n\t */\n\tconst apps = ref([])\n\n\t/**\n\t * Number of external apps with available updates, used to show the update badge in the UI\n\t */\n\tconst updateCount = ref(loadState('appstore', 'appstoreExAppUpdateCount', 0))\n\n\t/**\n\t * The interval ID for the status updater\n\t */\n\tlet statusUpdater: number | null = null\n\n\t/**\n\t * Whether at least one of the configured daemons is accessible.\n\t */\n\tconst daemonAccessible = ref(loadState('appstore', 'defaultDaemonConfigAccessible', false))\n\n\t/**\n\t * The default daemon, used for apps that don't specify a daemon or have a daemon that is not accessible.\n\t */\n\tconst defaultDaemon = ref(loadState('appstore', 'defaultDaemonConfig', null))\n\n\t/**\n\t * The list of daemons that support docker-based deployment, used to show the daemon selection when enabling an app.\n\t */\n\tconst dockerDaemons = ref([])\n\n\tconst initializingOrDeployingApps = computed(() => apps.value\n\t\t.filter((app) => app?.status?.action\n\t\t\t&& app.status.type !== ''\n\t\t\t&& (app?.status?.action === 'deploy' || app.status.action === 'init' || app.status.action === 'healthcheck')))\n\n\t/**\n\t * Get an external app by its ID\n\t *\n\t * @param appId - The app ID\n\t */\n\tfunction getById(appId: string): IAppstoreExApp | null {\n\t\treturn apps.value.find(({ id }) => id === appId) ?? null\n\t}\n\n\t/**\n\t * Enable an exApp.\n\t *\n\t * @param appId - The app ID\n\t */\n\tasync function enableApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (dockerDaemons.value.length === 1 && app.needsDownload) {\n\t\t\t\texAppApi.enableExApp(app, dockerDaemons[0])\n\t\t\t\tapp.daemon = dockerDaemons[0]\n\t\t\t} else if (app.needsDownload) {\n\t\t\t\tconst daemon = await spawnDialog(DaemonSelectionDialog, { app })\n\t\t\t\tif (!daemon) {\n\t\t\t\t\tthrow new Error('No daemon selected')\n\t\t\t\t}\n\t\t\t\tawait exAppApi.enableExApp(app, daemon)\n\t\t\t\tapp.daemon = daemon\n\t\t\t} else {\n\t\t\t\tawait exAppApi.enableExApp(app, app.daemon!)\n\t\t\t}\n\n\t\t\tif (!app.installed) {\n\t\t\t\tapp.needsDownload = false\n\t\t\t\tapp.status = {\n\t\t\t\t\ttype: 'install',\n\t\t\t\t\taction: 'deploy',\n\t\t\t\t\tinit: 0,\n\t\t\t\t\tdeploy: 0,\n\t\t\t\t} as IExAppStatus\n\t\t\t}\n\t\t\tapp.removable = true\n\t\t\tdelete app.error\n\n\t\t\tawait fetchAppStatus(appId)\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Force enable an exApp by ignoring its dependencies.\n\t *\n\t * @param appId - The app to force-enable\n\t */\n\tasync function forceEnableApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait exAppApi.forceEnableExApp(appId)\n\t\t\tawait initialize(true)\n\t\t\tapp.active = false\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * @param appId - The app to disable\n\t */\n\tasync function disableApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait exAppApi.disableExApp(appId)\n\t\t\tapp.active = false\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Uninstall an app by its id\n\t *\n\t * @param appId - The app to uninstall\n\t */\n\tasync function uninstallApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait exAppApi.disableExApp(appId)\n\t\t\tapp.active = false\n\t\t\tapp.needsDownload = true\n\t\t\tapp.installed = false\n\t\t\tapp.daemon = null\n\t\t\tapp.status = {}\n\t\t\tif (app.update !== null) {\n\t\t\t\tupdateCount.value--\n\t\t\t}\n\t\t\tdelete app.update\n\t\t\tdelete app.error\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Update an external app\n\t *\n\t * @param appId - The app ID\n\t */\n\tasync function updateApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait axios.get(generateUrl(`/apps/app_api/apps/update/${appId}`))\n\t\t\tapp.version = app.update || app.version\n\t\t\tapp.status = {\n\t\t\t\ttype: 'update',\n\t\t\t\taction: 'deploy',\n\t\t\t\tinit: 0,\n\t\t\t\tdeploy: 0,\n\t\t\t} satisfies IExAppStatus\n\t\t\tdelete app.update\n\t\t\tdelete app.error\n\t\t\tupdateCount.value--\n\n\t\t\tawait fetchAppStatus(appId)\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to update ex app', { appId, error })\n\t\t\tshowError(t('appstore', 'Could not update the app. Please try again later.'))\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Initialize the store.\n\t * This only needs to be called when an app management operation is performed.\n\t *\n\t * @param force - If the initialization should be forced (to run again)\n\t */\n\tasync function initialize(force = false) {\n\t\tif (force || (!defaultDaemon.value || !dockerDaemons.value.length)) {\n\t\t\tawait fetchDockerDaemons()\n\t\t}\n\t\tif (force || apps.value.length === 0) {\n\t\t\tawait fetchAllApps()\n\t\t}\n\t}\n\n\treturn {\n\t\tisEnabled,\n\n\t\tapps,\n\t\tupdateCount,\n\t\tdefaultDaemon,\n\t\tdockerDaemons,\n\t\tdaemonAccessible,\n\n\t\tgetById,\n\t\tdisableApp,\n\t\tenableApp,\n\t\tforceEnableApp,\n\t\tupdateApp,\n\t\tuninstallApp,\n\t\tinitialize,\n\t}\n\n\t/**\n\t * Fetch the configured docker daemons from the backend.\n\t */\n\tasync function fetchDockerDaemons() {\n\t\ttry {\n\t\t\tconst { data } = await axios.get(generateUrl('/apps/app_api/daemons'))\n\t\t\tdefaultDaemon.value = data.daemons.find((daemon: IDeployDaemon) => daemon.name === data.default_daemon_config)\n\t\t\tdockerDaemons.value = data.daemons.filter((daemon: IDeployDaemon) => daemon.accepts_deploy_id === 'docker-install')\n\t\t} catch (error) {\n\t\t\tlogger.error('[app-api-store] Failed to fetch Docker daemons', { error })\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t}\n\n\t/**\n\t * Fetch the list of external apps from the backend.\n\t */\n\tasync function fetchAllApps() {\n\t\ttry {\n\t\t\tapps.value = await exAppApi.fetchApps()\n\t\t} catch (error) {\n\t\t\tlogger.error('An error occurred while fetching apps', { error })\n\t\t\tshowError(t('appstore', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t}\n\n\t/**\n\t * Get the status of an external app.\n\t *\n\t * @param appId - The app ID to fetch the status for\n\t */\n\tasync function fetchAppStatus(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tlogger.error('[app-api-store] app not found while fetching status', { appId })\n\t\t\treturn\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tconst status = await exAppApi.fetchAppStatus(appId)\n\t\t\tapp.status = status\n\t\t\tlogger.debug('[app-api-store] initializingOrDeployingApps after setAppStatus', { initializingOrDeployingApps })\n\t\t\tif (initializingOrDeployingApps.value.length === 0) {\n\t\t\t\tlogger.debug('[app-api-store] Clearing interval')\n\t\t\t\tclearInterval(statusUpdater as number)\n\t\t\t\tstatusUpdater = null\n\t\t\t}\n\t\t\tif (app.status.error && initializingOrDeployingApps.value.length === 1) {\n\t\t\t\tclearInterval(statusUpdater as number)\n\t\t\t\tstatusUpdater = null\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tupdateAppsStatus()\n\t\t\tthrow e\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Update the status of all apps that are currently initializing or deploying\n\t */\n\tfunction updateAppsStatus() {\n\t\tclearInterval(statusUpdater as number)\n\t\tif (initializingOrDeployingApps.value.length === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tstatusUpdater = window.setInterval(() => {\n\t\t\tlogger.debug('[app-api-store] initializingOrDeployingApps', { initializingOrDeployingApps })\n\t\t\tfor (const app of initializingOrDeployingApps.value) {\n\t\t\t\tfetchAppStatus(app.id)\n\t\t\t}\n\t\t}, 2000)\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppBundle, IAppstoreApp, IAppstoreCategory, IAppstoreExApp } from '../apps.d.ts'\n\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { defineStore } from 'pinia'\nimport { computed, readonly, ref } from 'vue'\nimport * as api from '../service/api.ts'\nimport { rebuildNavigation } from '../service/rebuild-navigation.ts'\nimport { canDisable, canInstall, canLimitToGroups, canUninstall, needForceEnable } from '../utils/appStatus.ts'\nimport logger from '../utils/logger.ts'\nimport { useExAppsStore } from './exApps.ts'\n\nexport const useAppsStore = defineStore('apps', () => {\n\tconst exApps = useExAppsStore()\n\n\t/**\n\t * All apps available in the appstore\n\t */\n\tconst appstoreApps = ref([])\n\t/**\n\t * All app categories available in the appstore\n\t */\n\tconst categories = ref([])\n\t/**\n\t * All app bundles available in the appstore\n\t */\n\tconst bundles = readonly(loadState('appstore', 'appstoreBundles'))\n\n\t/**\n\t * Loading state of the store\n\t */\n\tconst isLoadingApps = ref(false)\n\tconst isLoadingCategories = ref(false)\n\n\t/**\n\t * All apps available\n\t */\n\tconst apps = computed(() => [...appstoreApps.value, ...(exApps.isEnabled ? exApps.apps : [])])\n\n\t/**\n\t * Get a category by its id\n\t *\n\t * @param categoryId - The id of the category\n\t */\n\tfunction getCategoryById(categoryId: string) {\n\t\treturn categories.value.find(({ id }) => id === categoryId) ?? null\n\t}\n\n\t/**\n\t * Get an app by its id\n\t *\n\t * @param appId - The id of the app\n\t */\n\tfunction getAppById(appId: string): IAppstoreApp | IAppstoreExApp | null {\n\t\treturn apps.value.find(({ id }) => id === appId) ?? null\n\t}\n\n\t/**\n\t * Get all apps of a category\n\t *\n\t * @param categoryId - The id of the category\n\t */\n\tfunction getAppsByCategory(categoryId: string): (IAppstoreApp | IAppstoreExApp)[] {\n\t\treturn apps.value.filter((app) => [app.category].flat().includes(categoryId))\n\t}\n\n\t/**\n\t * Enable an app by its id\n\t *\n\t * @param appId - The app to enable\n\t * @param force - Whether to force enable the app\n\t */\n\tasync function enableApp(appId: string, force = false) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (app.active || (!app.installed && !canInstall(app))) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be enabled`)\n\t\t}\n\n\t\tif (!force && needForceEnable(app)) {\n\t\t\tthrow new Error(`App with id ${appId} requires force enable`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (app.app_api) {\n\t\t\t\tawait exApps.enableApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.enableApp(appId, force)\n\t\t\t}\n\t\t\tif (force) {\n\t\t\t\tapp.isCompatible = true\n\t\t\t}\n\t\t\tapp.active = true\n\t\t\tapp.installed = true\n\t\t\tapp.removable = true\n\t\t\tawait rebuildNavigation()\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Disable an app by its id\n\t *\n\t * @param appId - The app to disable\n\t */\n\tasync function disableApp(appId: string) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (!canDisable(app)) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be disabled`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (app.app_api) {\n\t\t\t\tawait exApps.disableApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.disableApp(appId)\n\t\t\t}\n\t\t\tapp.active = false\n\t\t\t// revert \"force enable\"\n\t\t\tapp.isCompatible = app.missingDependencies === undefined || app.missingDependencies.length === 0\n\t\t\tawait rebuildNavigation()\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Uninstall an app by its id\n\t *\n\t * @param appId - The app to uninstall\n\t */\n\tasync function uninstallApp(appId: string) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (!canUninstall(app)) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be uninstalled`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (app.app_api) {\n\t\t\t\tawait exApps.uninstallApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.uninstallApp(appId)\n\t\t\t}\n\t\t\tapp.active = false\n\t\t\tapp.installed = false\n\t\t\tawait rebuildNavigation()\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Limit access to an app to specific groups\n\t *\n\t * @param appId - The app to limit access to\n\t * @param groups - The groups which should have access\n\t */\n\tasync function limitAppToGroups(appId: string, groups: string[]) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (!canLimitToGroups(app)) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be limited to groups`)\n\t\t}\n\n\t\tif (app.app_api) {\n\t\t\treturn\n\t\t}\n\n\t\ttry {\n\t\t\tapp.loading = true\n\t\t\tawait api.enableApp(appId, false, groups)\n\t\t\tapp.groups = groups\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Enable a whole bundle of apps by its id\n\t *\n\t * @param bundleId - The id of the bundle to enable\n\t */\n\tasync function enableBundle(bundleId: string) {\n\t\tconst bundle = bundles.find((b) => b.id === bundleId)\n\t\tif (!bundle) {\n\t\t\tthrow new Error(`Bundle with id ${bundleId} not found`)\n\t\t}\n\n\t\ttry {\n\t\t\tfor (const appId of bundle.appIdentifiers) {\n\t\t\t\tconst app = getAppById(appId)!\n\t\t\t\tapp.loading = true\n\t\t\t}\n\t\t\tawait api.enableBundle(bundle.id)\n\t\t\tfor (const appId of bundle.appIdentifiers) {\n\t\t\t\tconst app = getAppById(appId)!\n\t\t\t\tapp.active = true\n\t\t\t\tapp.installed = true\n\t\t\t\tapp.removable = true\n\t\t\t\tawait rebuildNavigation()\n\t\t\t}\n\t\t} finally {\n\t\t\tfor (const appId of bundle.appIdentifiers) {\n\t\t\t\tconst app = getAppById(appId)!\n\t\t\t\tapp.loading = false\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Load the app categories from the backend\n\t */\n\tasync function loadCategories() {\n\t\ttry {\n\t\t\tisLoadingCategories.value = true\n\t\t\tcategories.value = await api.getCategories()\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to load app categories', { error })\n\t\t\tshowError(t('appstore', 'Could not load app categories. Please try again later.'))\n\t\t} finally {\n\t\t\tisLoadingCategories.value = false\n\t\t}\n\t}\n\n\t/**\n\t * Load the apps from the backend\n\t */\n\tasync function loadApps() {\n\t\ttry {\n\t\t\tisLoadingApps.value = true\n\t\t\tappstoreApps.value = await api.getApps()\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to load apps list', { error })\n\t\t\tshowError(t('appstore', 'Could not load apps list. Please try again later.'))\n\t\t} finally {\n\t\t\tisLoadingApps.value = false\n\t\t}\n\t}\n\n\t// initialize store\n\tloadApps()\n\tloadCategories()\n\n\treturn {\n\t\tapps,\n\t\tbundles,\n\t\tcategories,\n\t\tisLoadingApps,\n\t\tisLoadingCategories,\n\n\t\tdisableApp,\n\t\tenableApp,\n\t\tuninstallApp,\n\t\tenableBundle,\n\n\t\tgetAppById,\n\t\tgetAppsByCategory,\n\t\tgetCategoryById,\n\t\tlimitAppToGroups,\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport * as api from '../service/api.ts'\nimport { rebuildNavigation } from '../service/rebuild-navigation.ts'\nimport logger from '../utils/logger.ts'\nimport { useAppsStore } from './apps.ts'\nimport { useExAppsStore } from './exApps.ts'\n\nexport const useUpdatesStore = defineStore('updates', () => {\n\tconst exApps = useExAppsStore()\n\n\t/**\n\t * Number of apps with available updates\n\t */\n\tconst internalUpdateCount = ref(loadState('appstore', 'appstoreUpdateCount', 0))\n\n\t/**\n\t * Total number of apps with available updates\n\t */\n\tconst updateCount = computed(() => internalUpdateCount.value + exApps.updateCount)\n\n\t/**\n\t * Update the given app\n\t *\n\t * @param appId - The app id to update\n\t * @throws {Error} if the app is not found\n\t */\n\tasync function updateApp(appId: string) {\n\t\tconst store = useAppsStore()\n\n\t\tconst app = store.getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\ttry {\n\t\t\tif ('app_api' in app && app.app_api) {\n\t\t\t\tawait exApps.updateApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.updateApp(appId)\n\t\t\t\tinternalUpdateCount.value = Math.max(internalUpdateCount.value - 1, 0)\n\t\t\t}\n\n\t\t\tapp.update = undefined\n\t\t\trebuildNavigation()\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to update app', { appId, error })\n\t\t\tshowError(t('appstore', 'Could not update the app. Please try again later.'))\n\t\t}\n\t}\n\n\treturn {\n\t\tupdateCount,\n\t\tupdateApp,\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { LocationQuery } from 'vue-router'\n\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\nexport const useUserSettingsStore = defineStore('userSettings', () => {\n\tconst defaultGridSize = ref('')\n\n\tconst isGridView = ref(false)\n\tconst showIncompatible = ref(true)\n\n\tconst gridSizePx = computed(() => {\n\t\tif (defaultGridSize.value === 'm') {\n\t\t\treturn '468px'\n\t\t} else if (defaultGridSize.value === 'l') {\n\t\t\treturn '512px'\n\t\t}\n\t\treturn '320px'\n\t})\n\n\t/**\n\t * Get the query parameters for the current settings\n\t *\n\t * @param gridMode Optional override for the grid mode, if not provided it will use the current setting\n\t */\n\tfunction getQuery(gridMode?: boolean) {\n\t\tconst route = useRoute() ?? {}\n\t\treturn {\n\t\t\t...route.query,\n\t\t\tgrid: (gridMode ?? isGridView.value) ? (defaultGridSize.value || null) : undefined,\n\t\t\tcompatible: showIncompatible.value ? undefined : null,\n\t\t}\n\t}\n\n\tconst router = useRouter()\n\trouter.afterEach((to) => {\n\t\tupdateFromQuery(to.query)\n\t})\n\n\treturn {\n\t\tdefaultGridSize,\n\t\tgridSizePx,\n\n\t\tisGridView,\n\t\tshowIncompatible,\n\n\t\tgetQuery,\n\t}\n\n\t/**\n\t * Initializes the store with the current query parameters\n\t *\n\t * @param query The query parameters to initialize the store with\n\t */\n\tfunction updateFromQuery(query: LocationQuery) {\n\t\tisGridView.value = 'grid' in query\n\t\tdefaultGridSize.value = [query.grid ?? ''].flat()[0]!.toLowerCase()\n\t\tshowIncompatible.value = !('compatible' in query)\n\t}\n})\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/**\n * marked v17.0.6 - a markdown parser\n * Copyright (c) 2018-2026, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction M(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var O=M();function G(u){O=u}var _={exec:()=>null};function k(u,e=\"\"){let t=typeof u==\"string\"?u:u.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var be=(()=>{try{return!!new RegExp(\"(?<=1)(?/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] +\\S/,listReplaceTask:/^\\[[ xX]\\] +/,listTaskCheckbox:/\\[[ xX]\\]/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^
    /i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:u=>new RegExp(`^( {0,3}${u})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}#`),htmlBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}<(?:[a-z].*>|!--)`,\"i\"),blockquoteBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}>`)},Re=/^(?:[ \\t]*(?:\\n|$))+/,Oe=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Te=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,C=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,we=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,Q=/ {0,3}(?:[*+-]|\\d{1,9}[.)])/,se=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,ie=k(se).replace(/bull/g,Q).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),ye=k(se).replace(/bull/g,Q).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),j=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,Pe=/^[^\\n]+/,F=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,Se=k(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",F).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),$e=k(/^(bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,Q).getRegex(),v=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",U=/|$))/,_e=k(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|\\\\n*|$)|\\\\n*|$)|)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",U).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),oe=k(j).replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]\").replace(\"html\",\")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Le=k(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",oe).getRegex(),K={blockquote:Le,code:Oe,def:Se,fences:Te,heading:we,hr:C,html:_e,lheading:ie,list:$e,newline:Re,paragraph:oe,table:_,text:Pe},ne=k(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]\").replace(\"html\",\")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Me={...K,lheading:ye,table:ne,paragraph:k(j).replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",ne).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]\").replace(\"html\",\")|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},ze={...K,html:k(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",U).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:_,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:k(j).replace(\"hr\",C).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",ie).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Ee=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,Ie=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,ae=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`+)[^`]+\\k(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",be?\"(?`+)[^`]+\\k(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ue=/^(?:\\*+(?:((?!\\*)punct)|([^\\s*]))?)|^_+(?:((?!_)punct)|([^\\s_]))?/,ve=k(ue,\"u\").replace(/punct/g,z).getRegex(),He=k(ue,\"u\").replace(/punct/g,le).getRegex(),pe=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",Ze=k(pe,\"gu\").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Ge=k(pe,\"gu\").replace(/notPunctSpace/g,De).replace(/punctSpace/g,Be).replace(/punct/g,le).getRegex(),Ne=k(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Qe=k(/^~~?(?:((?!~)punct)|[^\\s~])/,\"u\").replace(/punct/g,z).getRegex(),je=\"^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)\",Fe=k(je,\"gu\").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Ue=k(/\\\\(punct)/,\"gu\").replace(/punct/g,z).getRegex(),Ke=k(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),We=k(U).replace(\"(?:-->|$)\",\"-->\").getRegex(),Xe=k(\"^comment|^|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^|^\").replace(\"comment\",We).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\])|[^\\[\\]\\\\`])*?/,Je=k(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]+(?:\\n[ \\t]*)?|\\n[ \\t]*)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),ce=k(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",F).getRegex(),he=k(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",F).getRegex(),Ve=k(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",ce).replace(\"nolink\",he).getRegex(),re=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,X={_backpedal:_,anyPunctuation:Ue,autolink:Ke,blockSkip:qe,br:ae,code:Ie,del:_,delLDelim:_,delRDelim:_,emStrongLDelim:ve,emStrongRDelimAst:Ze,emStrongRDelimUnd:Ne,escape:Ee,link:Je,nolink:he,punctuation:Ce,reflink:ce,reflinkSearch:Ve,tag:Xe,text:Ae,url:_},Ye={...X,link:k(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:k(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},N={...X,emStrongRDelimAst:Ge,emStrongLDelim:He,delLDelim:Qe,delRDelim:Fe,url:k(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",re).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:k(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\\":\">\",'\"':\""\",\"'\":\"'\"},ke=u=>tt[u];function T(u,e){if(e){if(m.escapeTest.test(u))return u.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(u))return u.replace(m.escapeReplaceNoEncode,ke);return u}function J(u){try{u=encodeURI(u).replace(m.percentDecode,\"%\")}catch{return null}return u}function V(u,e){let t=u.replace(m.findPipe,(i,s,a)=>{let o=!1,l=s;for(;--l>=0&&a[l]===\"\\\\\";)o=!o;return o?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length0?-2:-1}function ge(u,e=0){let t=e,n=\"\";for(let r of u)if(r===\"\t\"){let i=4-t%4;n+=\" \".repeat(i),t+=i}else n+=r,t++;return n}function fe(u,e,t,n,r){let i=e.href,s=e.title||null,a=u[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let o={type:u[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function nt(u,e,t){let n=u.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`\n`)}var w=class{options;rules;lexer;constructor(e){this.options=e||O}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:I(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=nt(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=I(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:I(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=I(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let a=!1,o=[],l;for(l=0;l1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let l=!1,p=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let d=ge(t[2].split(`\n`,1)[0],t[1].length),h=e.split(`\n`,1)[0],R=!d.trim(),f=0;if(this.options.pedantic?(f=2,c=d.trimStart()):R?f=t[1].length+1:(f=d.search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=d.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(p+=h+`\n`,e=e.substring(h.length+1),l=!0),!l){let S=this.rules.other.nextBulletRegex(f),Y=this.rules.other.hrRegex(f),ee=this.rules.other.fencesBeginRegex(f),te=this.rules.other.headingBeginRegex(f),me=this.rules.other.htmlBeginRegex(f),xe=this.rules.other.blockquoteBeginRegex(f);for(;e;){let Z=e.split(`\n`,1)[0],A;if(h=Z,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting,\" \"),A=h):A=h.replace(this.rules.other.tabCharGlobal,\" \"),ee.test(h)||te.test(h)||me.test(h)||xe.test(h)||S.test(h)||Y.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`\n`+A.slice(f);else{if(R||d.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||ee.test(d)||te.test(d)||Y.test(d))break;c+=`\n`+h}R=!h.trim(),p+=Z+`\n`,e=e.substring(Z.length+1),d=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(a=!0)),i.items.push({type:\"list_item\",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),i.raw+=p}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l of i.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0]?.type===\"text\"||l.tokens[0]?.type===\"paragraph\"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,\"\");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,\"\");break}}let p=this.rules.other.listTaskCheckbox.exec(l.raw);if(p){let c={type:\"checkbox\",raw:p[0]+\" \",checked:p[0]!==\"[ ]\"};l.checked=c.checked,i.loose?l.tokens[0]&&[\"paragraph\",\"text\"].includes(l.tokens[0].type)&&\"tokens\"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=c.raw+l.tokens[0].raw,l.tokens[0].text=c.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(c)):l.tokens.unshift({type:\"paragraph\",raw:c.raw,text:c.raw,tokens:[c]}):l.tokens.unshift(c)}}if(!i.loose){let p=l.tokens.filter(d=>d.type===\"space\"),c=p.length>0&&p.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=c}}if(i.loose)for(let l of i.items){l.loose=!0;for(let p of l.tokens)p.type===\"text\"&&(p.type=\"paragraph\")}return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(a)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(a)?s.align.push(\"left\"):s.align.push(null);for(let a=0;a({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[l]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=I(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=de(t[2],\"()\");if(s===-2)return;if(s>-1){let o=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),fe(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return fe(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[3]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){l+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){p+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l+p);let d=[...r[0]][0].length,h=e.slice(0,s+r.index+d+o);if(Math.min(s,o)%2){let f=h.slice(1,-1);return{type:\"em\",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:\"strong\",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e,t,n=\"\"){let r=this.rules.inline.delLDelim.exec(e);if(!r)return;if(!(r[1]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=this.rules.inline.delRDelim;for(p.lastIndex=0,t=t.slice(-1*e.length+s);(r=p.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a||(o=[...a].length,o!==s))continue;if(r[3]||r[4]){l+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l);let c=[...r[0]][0].length,d=e.slice(0,s+r.index+c+o),h=d.slice(s,-s);return{type:\"del\",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var x=class u{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||O,this.options.tokenizer=this.options.tokenizer||new w,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:B.normal,inline:E.normal};this.options.pedantic?(t.block=B.pedantic,t.inline=E.pedantic):this.options.gfm&&(t.block=B.gfm,this.options.breaks?t.inline=E.breaks:t.inline=E.gfm),this.tokenizer.rules=t}static get rules(){return{block:B,inline:E}}static lex(e,t){return new u(t).lex(e)}static lexInline(e,t){return new u(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,a=e.slice(1),o;this.options.extensions.startBlock.forEach(l=>{o=l.call({lexer:this},a),typeof o==\"number\"&&o>=0&&(s=Math.min(s,o))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+\"[\"+\"a\".repeat(r[0].length-i-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a=\"\";for(;e;){s||(a=\"\"),s=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=t.at(-1);o.type===\"text\"&&p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let l=e;if(this.options.extensions?.startInline){let p=1/0,c=e.slice(1),d;this.options.extensions.startInline.forEach(h=>{d=h.call({lexer:this},c),typeof d==\"number\"&&d>=0&&(p=Math.min(p,d))}),p<1/0&&p>=0&&(l=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(l)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(a=o.raw.slice(-1)),s=!0;let p=t.at(-1);p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(e){let p=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return t}};var y=class{options;parser;constructor(e){this.options=e||O}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'
    '+(n?i:T(i,!0))+`
    \n`:\"
    \"+(n?i:T(i,!0))+`
    \n`}blockquote({tokens:e}){return`
    \n${this.parser.parse(e)}
    \n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)}\n`}hr(e){return`
    \n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let a=0;a\n`+r+\"\n`}listitem(e){return`
  • ${this.parser.parse(e.tokens)}
  • \n`}checkbox({checked:e}){return\" '}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    \n`}table(e){let t=\"\",n=\"\";for(let i=0;i${r}`),`\n\n`+t+`\n`+r+`
    \n`}tablerow({text:e}){return`\n${e}\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`\n`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${T(e,!0)}`}br(e){return\"
    \"}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='
    \"+r+\"\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return T(n);e=i;let s=`\"${T(n)}\"`;return\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:T(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}checkbox({raw:e}){return e}};var b=class u{options;renderer;textRenderer;constructor(e){this.options=e||O,this.options.renderer=this.options.renderer||new y,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new u(t).parse(e)}static parseInline(e,t){return new u(t).parseInline(e)}parse(e){this.renderer.parser=this;let t=\"\";for(let n=0;n{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new y(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let a=s,o=n.renderer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new w(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let a=s,o=n.tokenizer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new P;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let a=s,o=n.hooks[a],l=i[a];P.passThroughHooks.has(s)?i[a]=p=>{if(this.defaults.async&&P.passThroughHooksRespectAsync.has(s))return(async()=>{let d=await o.call(i,p);return l.call(i,d)})();let c=o.call(i,p);return l.call(i,c)}:i[a]=(...p)=>{if(this.defaults.async)return(async()=>{let d=await o.apply(i,p);return d===!1&&(d=await l.apply(i,p)),d})();let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return a(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return a(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,p=await(s.hooks?await s.hooks.provideLexer(e):e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(p):p;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser(e):e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let l=(s.hooks?s.hooks.provideLexer(e):e?x.lex:x.lexInline)(n,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let c=(s.hooks?s.hooks.provideParser(e):e?b.parse:b.parseInline)(l,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"

    An error occurred:

    \"+T(n.message+\"\",!0)+\"
    \";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var L=new D;function g(u,e){return L.parse(u,e)}g.options=g.setOptions=function(u){return L.setOptions(u),g.defaults=L.defaults,G(g.defaults),g};g.getDefaults=M;g.defaults=O;g.use=function(...u){return L.use(...u),g.defaults=L.defaults,G(g.defaults),g};g.walkTokens=function(u,e){return L.walkTokens(u,e)};g.parseInline=L.parseInline;g.Parser=b;g.parser=b.parse;g.Renderer=y;g.TextRenderer=$;g.Lexer=x;g.lexer=x.lex;g.Tokenizer=w;g.Hooks=P;g.parse=g;var Qt=g.options,jt=g.setOptions,Ft=g.use,Ut=g.walkTokens,Kt=g.parseInline,Wt=g,Xt=b.parse,Jt=x.lex;export{P as Hooks,x as Lexer,D as Marked,b as Parser,y as Renderer,$ as TextRenderer,w as Tokenizer,O as defaults,M as getDefaults,Jt as lexer,g as marked,Qt as options,Wt as parse,Kt as parseInline,Xt as parser,jt as setOptions,Ft as use,Ut as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Tokens } from 'marked'\nimport type { MaybeRefOrGetter } from 'vue'\n\nimport dompurify from 'dompurify'\nimport { marked } from 'marked'\nimport { computed, toValue } from 'vue'\n\nexport interface MarkdownOptions {\n\tminHeadingLevel?: number\n}\n\n/**\n * Render Markdown to HTML\n *\n * @param text - The Markdown source\n * @param options - Markdown options\n */\nexport function useMarkdown(text: MaybeRefOrGetter, options?: MarkdownOptions) {\n\tconst renderer = new marked.Renderer()\n\trenderer.blockquote = markedBlockquote\n\trenderer.link = markedLink\n\trenderer.image = markedImage\n\n\treturn computed(() => {\n\t\tconst minHeading = options?.minHeadingLevel ?? 1\n\t\trenderer.heading = getMarkedHeading(minHeading)\n\t\tconst markdown = toValue(text).trim()\n\n\t\treturn dompurify.sanitize(\n\t\t\tmarked(markdown, {\n\t\t\t\tasync: false,\n\t\t\t\trenderer,\n\t\t\t\tgfm: false,\n\t\t\t\tbreaks: false,\n\t\t\t\tpedantic: false,\n\t\t\t}),\n\t\t\t{\n\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t'h1',\n\t\t\t\t\t'h2',\n\t\t\t\t\t'h3',\n\t\t\t\t\t'h4',\n\t\t\t\t\t'h5',\n\t\t\t\t\t'h6',\n\t\t\t\t\t'strong',\n\t\t\t\t\t'p',\n\t\t\t\t\t'a',\n\t\t\t\t\t'ul',\n\t\t\t\t\t'ol',\n\t\t\t\t\t'li',\n\t\t\t\t\t'em',\n\t\t\t\t\t'del',\n\t\t\t\t\t'blockquote',\n\t\t\t\t],\n\t\t\t},\n\t\t)\n\t})\n}\n\n/**\n * Custom link renderer that only allows http and https links\n *\n * @param ctx - The render context\n * @param ctx.href - The link href\n * @param ctx.title - The link title\n * @param ctx.text - The link text\n */\nfunction markedLink({ href, title, text }: Tokens.Link) {\n\tlet url: URL\n\ttry {\n\t\turl = new URL(href)\n\t} catch {\n\t\treturn ''\n\t}\n\n\tif (url.protocol !== 'http:' && url.protocol !== 'https:') {\n\t\treturn ''\n\t}\n\n\tlet out = ''\n\treturn out\n}\n\n/**\n * Only render image alt text or title\n *\n * @param ctx - The render context\n * @param ctx.title - The image title\n * @param ctx.text - The image alt text\n */\nfunction markedImage({ title, text }: Tokens.Image): string {\n\tif (text) {\n\t\treturn text\n\t}\n\treturn title ?? ''\n}\n\n/**\n * Render block quotes without any special styling\n *\n * @param ctx - The render context\n * @param ctx.text - The blockquote text\n */\nfunction markedBlockquote({ text }: Tokens.Blockquote): string {\n\treturn `
    ${text}
    `\n}\n\n/**\n * Get a custom heading renderer that clamps heading levels\n *\n * @param minHeading - The heading to clamp to\n */\nfunction getMarkedHeading(minHeading: number) {\n\t/**\n\t * Custom heading renderer that adjusts heading levels\n\t *\n\t * @param ctx - The render context\n\t * @param ctx.text - The heading text\n\t * @param ctx.depth - The heading depth\n\t */\n\treturn ({ text, depth }: Tokens.Heading): string => {\n\t\tdepth = Math.min(6, depth + (minHeading - 1))\n\t\treturn `${text}`\n\t}\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/**\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\nimport type { NcSelectUsersModel } from '@nextcloud/vue/components/NcSelectUsers'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport PQueue from 'p-queue'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport logger from '../utils/logger.ts'\n\nconst queue = new PQueue({ concurrency: 3 })\n\nexport const useGroupsStore = defineStore('groups', () => {\n\tconst groups = ref(new Map())\n\n\t/**\n\t * Get group details by id\n\t *\n\t * @param groupId - The id of the group to fetch\n\t */\n\tasync function fetchGroupById(groupId: string) {\n\t\treturn await queue.add(() => internalFetchGroupById(groupId))\n\t}\n\n\t/**\n\t * Search the API for groups matching the query\n\t *\n\t * @param query - Query to search\n\t */\n\tasync function searchGroups(query: string) {\n\t\tconst url = generateOcsUrl('/cloud/groups/details')\n\t\ttry {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst { data } = await axios.get>(url, {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch: query.trim(),\n\t\t\t\t\tlimit: 10,\n\t\t\t\t},\n\t\t\t})\n\t\t\tfor (const group of data.ocs.data.groups) {\n\t\t\t\tif (groups.value.has(group.id)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tgroups.value.set(group.id, {\n\t\t\t\t\tid: group.id,\n\t\t\t\t\tdisplayName: group.displayname,\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to search groups', { error })\n\t\t}\n\t}\n\n\t/**\n\t * Get a group by its id\n\t *\n\t * @param groupId - The id of the group to retrieve\n\t */\n\tfunction getGroupById(groupId: string) {\n\t\treturn groups.value.get(groupId)\n\t}\n\n\treturn {\n\t\tgroups: computed(() => Array.from(groups.value.values())),\n\t\tsearchGroups,\n\t\tgetGroupById,\n\t\tfetchGroupById,\n\t}\n\n\t/**\n\t * Handle fetching group details by id\n\t *\n\t * @param groupId - The id of the group to fetch\n\t */\n\tasync function internalFetchGroupById(groupId: string) {\n\t\tif (!groups.value.has(groupId)) {\n\t\t\tawait searchGroups(groupId)\n\t\t}\n\t\treturn groups.value.get(groupId)\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { readonly, ref, toValue, watch } from 'vue'\nimport { useGroupsStore } from '../store/groups.ts'\n\n/**\n * Get the groups an app is limited to and keep it up to date\n *\n * @param app - The app to get the groups\n */\nexport function useLimitedGroups(app: MaybeRefOrGetter) {\n\tconst groupsStore = useGroupsStore()\n\tconst groupsAppIsLimitedTo = ref<{ id: string, displayName: string }[]>([])\n\twatch(() => toValue(app).groups, async () => {\n\t\tconst groups = toValue(app).groups\n\t\tif (groups === undefined) {\n\t\t\tgroupsAppIsLimitedTo.value = []\n\t\t\treturn\n\t\t}\n\n\t\tconst promises = groups.map((group) => groupsStore.fetchGroupById(group))\n\t\tconst results = await Promise.all(promises)\n\t\tgroupsAppIsLimitedTo.value = results.filter(Boolean) as { id: string, displayName: string }[]\n\t}, { immediate: true })\n\n\treturn readonly(groupsAppIsLimitedTo)\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiClose } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canDisable } from '../utils/appStatus.ts'\n\nexport const actionDisable: AppAction = {\n\tid: 'disable',\n\ticon: mdiClose,\n\torder: 10,\n\tenabled: canDisable,\n\tlabel: () => t('appstore', 'Disable'),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.disableApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiCheck } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canEnable, canInstall } from '../utils/appStatus.ts'\n\nexport const actionEnable: AppAction = {\n\tid: 'enable',\n\ticon: mdiCheck,\n\torder: 1,\n\tvariant: 'primary',\n\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\treturn !canInstall(app) && canEnable(app)\n\t},\n\tlabel: () => t('appstore', 'Enable'),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiAlertCircleCheckOutline } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canForceEnable, canInstall, needForceEnable } from '../utils/appStatus.ts'\n\nexport const actionForceEnable: AppAction = {\n\tid: 'force-enable',\n\ticon: mdiAlertCircleCheckOutline,\n\torder: 3,\n\tinline: false,\n\tvariant: 'warning',\n\tlabel: () => t('appstore', 'Force enable'),\n\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\treturn !canInstall(app) && canForceEnable(app) && needForceEnable(app)\n\t},\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id, true)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiDownload } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canInstall, needForceEnable } from '../utils/appStatus.ts'\n\nexport const actionInstall: AppAction = {\n\tid: 'install',\n\ticon: mdiDownload,\n\torder: 5,\n\tenabled(app) {\n\t\treturn canInstall(app) && !needForceEnable(app)\n\t},\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => {\n\t\tif (app.app_api) {\n\t\t\treturn t('appstore', 'Deploy and enable')\n\t\t}\n\t\tif (app.needsDownload) {\n\t\t\treturn t('appstore', 'Download and enable')\n\t\t}\n\t\treturn t('appstore', 'Install and enable')\n\t},\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiDownload } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canInstall, needForceEnable } from '../utils/appStatus.ts'\n\nexport const actionInstallForced: AppAction = {\n\tid: 'install-forced',\n\ticon: mdiDownload,\n\torder: 5,\n\tinline: false,\n\tenabled(app) {\n\t\treturn canInstall(app) && needForceEnable(app)\n\t},\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => {\n\t\tif (app.app_api) {\n\t\t\treturn t('appstore', 'Deploy and force enable')\n\t\t}\n\t\tif (app.needsDownload) {\n\t\t\treturn t('appstore', 'Download and force enable')\n\t\t}\n\t\treturn t('appstore', 'Install and force enable')\n\t},\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id, true)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiBugOutline, mdiForumOutline, mdiStarOutline, mdiWeb } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\n\nexport const actionsInteract: AppAction[] = [\n\t{\n\t\tid: 'rate',\n\t\ticon: mdiStarOutline,\n\t\torder: 30,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Rate the app'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !app.shipped\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn `https://apps.nextcloud.com/apps/${encodeURIComponent(app.id)}#comments`\n\t\t},\n\t},\n\t{\n\t\tid: 'report-bug',\n\t\ticon: mdiBugOutline,\n\t\torder: 32,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Report a bug'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !!app.bugs\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn app.bugs!\n\t\t},\n\t},\n\t{\n\t\tid: 'discussion',\n\t\ticon: mdiForumOutline,\n\t\torder: 35,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Ask questions or discuss the app'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !!app.discussion\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn app.discussion!\n\t\t},\n\t},\n\t{\n\t\tid: 'website',\n\t\ticon: mdiWeb,\n\t\torder: 38,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Visit the website'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !!app.website\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn app.website!\n\t\t},\n\t},\n]\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiAccountGroup } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { spawnDialog } from '@nextcloud/vue'\nimport { defineAsyncComponent } from 'vue'\nimport { canLimitToGroups } from '../utils/appStatus.ts'\n\nconst LimitToGroupDialog = defineAsyncComponent(() => import('../components/LimitToGroupDialog.vue'))\n\nexport const actionLimitToGroup: AppAction = {\n\tid: 'limit-to-group',\n\ticon: mdiAccountGroup,\n\torder: 16,\n\tinline: false,\n\tlabel: () => t('appstore', 'Limit to groups'),\n\tenabled: canLimitToGroups,\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tawait spawnDialog(LimitToGroupDialog, { app })\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiTrashCanOutline } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canUninstall } from '../utils/appStatus.ts'\n\nexport const actionRemove: AppAction = {\n\tid: 'remove',\n\torder: 20,\n\ticon: mdiTrashCanOutline,\n\tvariant: 'error',\n\tinline: false,\n\tenabled: canUninstall,\n\tlabel: () => t('appstore', 'Remove'),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.uninstallApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiUpdate } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useExAppsStore } from '../store/exApps.ts'\nimport { useUpdatesStore } from '../store/updates.ts'\nimport { canUpdate } from '../utils/appStatus.ts'\n\nexport const actionUpdate: AppAction = {\n\tid: 'update',\n\ticon: mdiUpdate,\n\tvariant: 'primary',\n\torder: 0,\n\tenabled(app) {\n\t\tif (!canUpdate(app)) {\n\t\t\treturn false\n\t\t}\n\t\tif (app.app_api) {\n\t\t\tif (app.daemon && app.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst exAppsStore = useExAppsStore()\n\t\t\treturn exAppsStore.daemonAccessible\n\t\t}\n\t\treturn true\n\t},\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => t('appstore', 'Update to {version}', { version: app.update! }),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useUpdatesStore()\n\t\tawait store.updateApp(app.id)\n\t},\n}\n","/*\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { RouteLocationRaw } from 'vue-router'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { actionDisable } from './actionDisable.ts'\nimport { actionEnable } from './actionEnable.ts'\nimport { actionForceEnable } from './actionForceEnable.ts'\nimport { actionInstall } from './actionInstall.ts'\nimport { actionInstallForced } from './actionInstallForced.ts'\nimport { actionsInteract } from './actionInteract.ts'\nimport { actionLimitToGroup } from './actionLimitToGroup.ts'\nimport { actionRemove } from './actionRemove.ts'\nimport { actionUpdate } from './actionUpdate.ts'\n\ninterface AppActionBase {\n\tenabled: (app: IAppstoreApp | IAppstoreExApp) => boolean\n\n\tid: string\n\ticon: string\n\torder: number\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => string\n\tvariant?: 'primary' | 'error' | 'warning'\n\tinline?: boolean\n}\n\ninterface AppActionWithCallback extends AppActionBase {\n\tcallback: (app: IAppstoreApp | IAppstoreExApp) => Promise\n}\n\ninterface AppActionWithHref extends AppActionBase {\n\thref: (app: IAppstoreApp | IAppstoreExApp) => string\n}\n\ninterface AppActionWithRoute extends AppActionBase {\n\tto: (app: IAppstoreApp | IAppstoreExApp) => RouteLocationRaw\n}\n\nexport type AppAction = AppActionWithCallback | AppActionWithHref | AppActionWithRoute\n\nexport const actions = [\n\tactionUpdate,\n\tactionEnable,\n\tactionDisable,\n\tactionForceEnable,\n\tactionInstall,\n\tactionInstallForced,\n\tactionRemove,\n\tactionLimitToGroup,\n\t...actionsInteract,\n].sort((a, b) => a.order - b.order)\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { computed, toValue } from 'vue'\nimport { actions } from '../actions/index.ts'\n\n/**\n * Get the available actions for an app\n *\n * @param app - The app to get the actions for\n */\nexport function useActions(app: MaybeRefOrGetter) {\n\treturn computed(() => toValue(app) ? actions.filter((action) => action.enabled(toValue(app)!)) : [])\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Ref } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { mdiCog, mdiCogOutline } from '@mdi/js'\nimport { computed, ref, watchEffect } from 'vue'\nimport { APPSTORE_CATEGORY_ICONS } from '../constants.ts'\nimport logger from '../utils/logger.ts'\n\n/**\n * Get the app icon raw SVG for use with `NcIconSvgWrapper` (do never use without sanitizing)\n * It has a fallback to the categroy icon.\n *\n * @param app The app to get the icon for\n */\nexport function useAppIcon(app: Ref) {\n\tconst appIcon = ref(null)\n\n\t/**\n\t * Fallback value if no app icon available\n\t */\n\tconst categoryIcon = computed(() => {\n\t\tlet path: string\n\t\tif (app.value?.app_api) {\n\t\t\t// Use different default icon for ExApps (AppAPI)\n\t\t\tpath = mdiCogOutline\n\t\t} else {\n\t\t\tpath = [app.value?.category ?? []].flat()\n\t\t\t\t.map((name) => APPSTORE_CATEGORY_ICONS[name])\n\t\t\t\t.filter((icon) => !!icon)\n\t\t\t\t.at(0)\n\t\t\t\t?? (!app.value?.app_api ? mdiCog : mdiCogOutline)\n\t\t}\n\t\treturn path ? `` : null\n\t})\n\n\twatchEffect(async () => {\n\t\t// Note: Only variables until the first `await` will be watched!\n\t\tif (!app.value?.icon) {\n\t\t\tappIcon.value = categoryIcon.value\n\t\t} else {\n\t\t\tappIcon.value = null\n\t\t\t// Now try to load the real app icon\n\t\t\ttry {\n\t\t\t\tconst response = await window.fetch(app.value.icon)\n\t\t\t\tconst blob = await response.blob()\n\t\t\t\tconst rawSvg = await blob.text()\n\t\t\t\tappIcon.value = rawSvg.replaceAll(/fill=\"#(fff|ffffff)([a-z0-9]{1,2})?\"/ig, 'fill=\"currentColor\"')\n\t\t\t} catch (error) {\n\t\t\t\tappIcon.value = categoryIcon.value\n\t\t\t\tlogger.error('Could not load app icon', { error })\n\t\t\t}\n\t\t}\n\t})\n\n\treturn {\n\t\tappIcon,\n\t}\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { RouteRecordRaw } from 'vue-router'\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst appstoreEnabled = loadState('appstore', 'appstoreEnabled', true)\n\n// Dynamic loading\nconst AppstoreDiscover = () => import('../views/AppstoreDiscover.vue')\nconst AppstoreManage = () => import('../views/AppstoreManage.vue')\nconst AppstoreBundles = () => import('../views/AppstoreBundles.vue')\nconst AppstoreBrowse = () => import('../views/AppstoreBrowse.vue')\nconst AppstoreSearch = () => import('../views/AppstoreSearch.vue')\n\nconst routes: RouteRecordRaw[] = [\n\t{\n\t\tpath: '/:index(index.php/)?settings/apps',\n\t\tname: 'apps',\n\t\tredirect: appstoreEnabled\n\t\t\t? {\n\t\t\t\t\tname: 'apps-discover',\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tname: 'apps-manage',\n\t\t\t\t\tparams: { category: 'installed' },\n\t\t\t\t},\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tpath: 'discover/:id?',\n\t\t\t\tname: 'apps-discover',\n\t\t\t\tcomponent: AppstoreDiscover,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'bundles/:id?',\n\t\t\t\tname: 'apps-bundles',\n\t\t\t\tcomponent: AppstoreBundles,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: ':category(installed|enabled|disabled|updates)/:id?',\n\t\t\t\tname: 'apps-manage',\n\t\t\t\tcomponent: AppstoreManage,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: ':category/:id?',\n\t\t\t\tname: 'apps-category',\n\t\t\t\tcomponent: AppstoreBrowse,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'search/:id?',\n\t\t\t\tname: 'apps-search',\n\t\t\t\tcomponent: AppstoreSearch,\n\t\t\t},\n\t\t],\n\t},\n]\n\nexport default routes\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport { createRouter, createWebHistory } from 'vue-router'\nimport routes from './routes.ts'\n\nconst router = createRouter({\n\thistory: createWebHistory(generateUrl('')),\n\tlinkActiveClass: 'active',\n\troutes,\n})\n\nexport default router\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createPinia } from 'pinia'\nimport { createApp } from 'vue'\nimport AppstoreApp from './AppstoreApp.vue'\nimport router from './router/index.ts'\n\nimport 'vite/modulepreload-polyfill'\n\nconst pinia = createPinia()\nconst app = createApp(AppstoreApp)\napp.config.idPrefix = 'appstore'\napp.use(pinia)\napp.use(router)\napp.mount('#content')\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n"],"file":"appstore-main.mjs"} \ No newline at end of file diff --git a/dist/comments-comments-app.mjs b/dist/comments-comments-app.mjs index 2506fe334b5ef..b1a5fa5737da5 100644 --- a/dist/comments-comments-app.mjs +++ b/dist/comments-comments-app.mjs @@ -1,2 +1,2 @@ -import{l as o}from"./activity-BZ6xFlZg.chunk.mjs";import{a as m,t as s}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as r}from"./pinia-BsumPXOW.chunk.mjs";import{e as n}from"./Web-DYqXJUev.chunk.mjs";import{C as a}from"./FilesSidebarTab-DTUO021l.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./public-C1mLBHT3.chunk.mjs";import"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./CommentView-BOeY59Ia.chunk.mjs";/* empty css */import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./GetComments-2IL7C9Us.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";class e{app;instance;constructor(t="files",i={}){const p=r();this.app=n(a,{...i.propsData??{},...i.props??{},resourceType:t}),this.app.mixin({data(){return{logger:o}},methods:{t:s,n:m}}),this.app.use(p),i.el&&(this.instance=this.app.mount(i.el))}$mount(t){this.instance&&this.app.unmount(),this.instance=this.app.mount(t)}$unmount(){this.app.unmount(),this.instance=void 0}update(t){this.instance&&this.instance.update(t)}}window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:e}),o.debug("OCA.Comments.View initialized"); +import{l as o}from"./activity-BZ6xFlZg.chunk.mjs";import{a as m,t as s}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as r}from"./pinia-BsumPXOW.chunk.mjs";import{e as n}from"./Web-DYqXJUev.chunk.mjs";import{C as a}from"./FilesSidebarTab-Bv3AwXFc.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./public-C1mLBHT3.chunk.mjs";import"./index-mH69OG7L.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./CommentView-Dwuq398x.chunk.mjs";/* empty css */import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./GetComments-2IL7C9Us.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";class e{app;instance;constructor(t="files",i={}){const p=r();this.app=n(a,{...i.propsData??{},...i.props??{},resourceType:t}),this.app.mixin({data(){return{logger:o}},methods:{t:s,n:m}}),this.app.use(p),i.el&&(this.instance=this.app.mount(i.el))}$mount(t){this.instance&&this.app.unmount(),this.instance=this.app.mount(t)}$unmount(){this.app.unmount(),this.instance=void 0}update(t){this.instance&&this.instance.update(t)}}window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:e}),o.debug("OCA.Comments.View initialized"); //# sourceMappingURL=comments-comments-app.mjs.map diff --git a/dist/comments-comments-app.mjs.map b/dist/comments-comments-app.mjs.map index 8185b17f49e60..5257032927613 100644 --- a/dist/comments-comments-app.mjs.map +++ b/dist/comments-comments-app.mjs.map @@ -1 +1 @@ -{"version":3,"file":"comments-comments-app.mjs","sources":["../build/frontend/apps/comments/src/services/CommentsInstance.ts","../build/frontend/apps/comments/src/comments-app.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { App, ComponentPublicInstance } from 'vue'\n\nimport { n, t } from '@nextcloud/l10n'\nimport { createPinia } from 'pinia'\nimport { createApp } from 'vue'\nimport CommentsApp from '../views/CommentsApp.vue'\nimport logger from '../logger.ts'\n\nexport interface CommentsInstanceOptions {\n\tel?: HTMLElement\n\n\tprops?: Record\n\n\t/** @deprecated use `props` instead */\n\tpropsData?: Record\n}\n\nexport default class CommentInstance {\n\tprivate app: App\n\tprivate instance: ComponentPublicInstance | undefined\n\n\t/**\n\t * Initialize a new Comments instance for the desired type\n\t *\n\t * @param resourceType - The comments endpoint type\n\t * @param options - The vue options (props, parent, el...)\n\t */\n\tconstructor(resourceType = 'files', options: CommentsInstanceOptions = {}) {\n\t\tconst pinia = createPinia()\n\n\t\tthis.app = createApp(\n\t\t\tCommentsApp,\n\t\t\t{\n\t\t\t\t...(options.propsData ?? {}),\n\t\t\t\t...(options.props ?? {}),\n\t\t\t\tresourceType,\n\t\t\t},\n\t\t)\n\n\t\t// Add translates functions\n\t\tthis.app.mixin({\n\t\t\tdata() {\n\t\t\t\treturn {\n\t\t\t\t\tlogger,\n\t\t\t\t}\n\t\t\t},\n\t\t\tmethods: {\n\t\t\t\tt,\n\t\t\t\tn,\n\t\t\t},\n\t\t})\n\n\t\tthis.app.use(pinia)\n\t\tif (options.el) {\n\t\t\tthis.instance = this.app.mount(options.el)\n\t\t}\n\t}\n\n\t/**\n\t * Mount the Comments instance to a new element.\n\t *\n\t * @param el - The element to mount the instance on\n\t */\n\t$mount(el: HTMLElement | string) {\n\t\tif (this.instance) {\n\t\t\tthis.app.unmount()\n\t\t}\n\t\tthis.instance = this.app.mount(el)\n\t}\n\n\t/**\n\t * Unmount the Comments instance from the DOM and destroy it.\n\t */\n\t$unmount() {\n\t\tthis.app.unmount()\n\t\tthis.instance = undefined\n\t}\n\n\t/**\n\t * Update the current resource id.\n\t *\n\t * @param id - The new resource id to load the comments for\n\t */\n\tupdate(id: string | number) {\n\t\tif (this.instance) {\n\t\t\tthis.instance.update(id)\n\t\t}\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from './logger.ts'\nimport CommentsInstance from './services/CommentsInstance.ts'\n\n// Init Comments\nif (window.OCA && !window.OCA.Comments) {\n\tObject.assign(window.OCA, { Comments: {} })\n}\n\n// Init Comments App view\nObject.assign(window.OCA.Comments, { View: CommentsInstance })\nlogger.debug('OCA.Comments.View initialized')\n"],"names":["CommentInstance","resourceType","options","pinia","createPinia","createApp","CommentsApp","logger","t","n","el","id","CommentsInstance"],"mappings":"sxCAsBA,MAAqBA,CAAgB,CAC5B,IACA,SAQR,YAAYC,EAAe,QAASC,EAAmC,CAAA,EAAI,CAC1E,MAAMC,EAAQC,EAAA,EAEd,KAAK,IAAMC,EACVC,EACA,CACC,GAAIJ,EAAQ,WAAa,CAAA,EACzB,GAAIA,EAAQ,OAAS,CAAA,EACrB,aAAAD,CAAA,CACD,EAID,KAAK,IAAI,MAAM,CACd,MAAO,CACN,MAAO,CACN,OAAAM,CAAA,CAEF,EACA,QAAS,CAAA,EACRC,EAAA,EACAC,CAAA,CACD,CACA,EAED,KAAK,IAAI,IAAIN,CAAK,EACdD,EAAQ,KACX,KAAK,SAAW,KAAK,IAAI,MAAMA,EAAQ,EAAE,EAE3C,CAOA,OAAOQ,EAA0B,CAC5B,KAAK,UACR,KAAK,IAAI,QAAA,EAEV,KAAK,SAAW,KAAK,IAAI,MAAMA,CAAE,CAClC,CAKA,UAAW,CACV,KAAK,IAAI,QAAA,EACT,KAAK,SAAW,MACjB,CAOA,OAAOC,EAAqB,CACvB,KAAK,UACR,KAAK,SAAS,OAAOA,CAAE,CAEzB,CACD,CCpFI,OAAO,KAAO,CAAC,OAAO,IAAI,UAC7B,OAAO,OAAO,OAAO,IAAK,CAAE,SAAU,CAAA,EAAI,EAI3C,OAAO,OAAO,OAAO,IAAI,SAAU,CAAE,KAAMC,EAAkB,EAC7DL,EAAO,MAAM,+BAA+B"} \ No newline at end of file +{"version":3,"file":"comments-comments-app.mjs","sources":["../build/frontend/apps/comments/src/services/CommentsInstance.ts","../build/frontend/apps/comments/src/comments-app.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { App, ComponentPublicInstance } from 'vue'\n\nimport { n, t } from '@nextcloud/l10n'\nimport { createPinia } from 'pinia'\nimport { createApp } from 'vue'\nimport CommentsApp from '../views/CommentsApp.vue'\nimport logger from '../logger.ts'\n\nexport interface CommentsInstanceOptions {\n\tel?: HTMLElement\n\n\tprops?: Record\n\n\t/** @deprecated use `props` instead */\n\tpropsData?: Record\n}\n\nexport default class CommentInstance {\n\tprivate app: App\n\tprivate instance: ComponentPublicInstance | undefined\n\n\t/**\n\t * Initialize a new Comments instance for the desired type\n\t *\n\t * @param resourceType - The comments endpoint type\n\t * @param options - The vue options (props, parent, el...)\n\t */\n\tconstructor(resourceType = 'files', options: CommentsInstanceOptions = {}) {\n\t\tconst pinia = createPinia()\n\n\t\tthis.app = createApp(\n\t\t\tCommentsApp,\n\t\t\t{\n\t\t\t\t...(options.propsData ?? {}),\n\t\t\t\t...(options.props ?? {}),\n\t\t\t\tresourceType,\n\t\t\t},\n\t\t)\n\n\t\t// Add translates functions\n\t\tthis.app.mixin({\n\t\t\tdata() {\n\t\t\t\treturn {\n\t\t\t\t\tlogger,\n\t\t\t\t}\n\t\t\t},\n\t\t\tmethods: {\n\t\t\t\tt,\n\t\t\t\tn,\n\t\t\t},\n\t\t})\n\n\t\tthis.app.use(pinia)\n\t\tif (options.el) {\n\t\t\tthis.instance = this.app.mount(options.el)\n\t\t}\n\t}\n\n\t/**\n\t * Mount the Comments instance to a new element.\n\t *\n\t * @param el - The element to mount the instance on\n\t */\n\t$mount(el: HTMLElement | string) {\n\t\tif (this.instance) {\n\t\t\tthis.app.unmount()\n\t\t}\n\t\tthis.instance = this.app.mount(el)\n\t}\n\n\t/**\n\t * Unmount the Comments instance from the DOM and destroy it.\n\t */\n\t$unmount() {\n\t\tthis.app.unmount()\n\t\tthis.instance = undefined\n\t}\n\n\t/**\n\t * Update the current resource id.\n\t *\n\t * @param id - The new resource id to load the comments for\n\t */\n\tupdate(id: string | number) {\n\t\tif (this.instance) {\n\t\t\tthis.instance.update(id)\n\t\t}\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from './logger.ts'\nimport CommentsInstance from './services/CommentsInstance.ts'\n\n// Init Comments\nif (window.OCA && !window.OCA.Comments) {\n\tObject.assign(window.OCA, { Comments: {} })\n}\n\n// Init Comments App view\nObject.assign(window.OCA.Comments, { View: CommentsInstance })\nlogger.debug('OCA.Comments.View initialized')\n"],"names":["CommentInstance","resourceType","options","pinia","createPinia","createApp","CommentsApp","logger","t","n","el","id","CommentsInstance"],"mappings":"6wCAsBA,MAAqBA,CAAgB,CAC5B,IACA,SAQR,YAAYC,EAAe,QAASC,EAAmC,CAAA,EAAI,CAC1E,MAAMC,EAAQC,EAAA,EAEd,KAAK,IAAMC,EACVC,EACA,CACC,GAAIJ,EAAQ,WAAa,CAAA,EACzB,GAAIA,EAAQ,OAAS,CAAA,EACrB,aAAAD,CAAA,CACD,EAID,KAAK,IAAI,MAAM,CACd,MAAO,CACN,MAAO,CACN,OAAAM,CAAA,CAEF,EACA,QAAS,CAAA,EACRC,EAAA,EACAC,CAAA,CACD,CACA,EAED,KAAK,IAAI,IAAIN,CAAK,EACdD,EAAQ,KACX,KAAK,SAAW,KAAK,IAAI,MAAMA,EAAQ,EAAE,EAE3C,CAOA,OAAOQ,EAA0B,CAC5B,KAAK,UACR,KAAK,IAAI,QAAA,EAEV,KAAK,SAAW,KAAK,IAAI,MAAMA,CAAE,CAClC,CAKA,UAAW,CACV,KAAK,IAAI,QAAA,EACT,KAAK,SAAW,MACjB,CAOA,OAAOC,EAAqB,CACvB,KAAK,UACR,KAAK,SAAS,OAAOA,CAAE,CAEzB,CACD,CCpFI,OAAO,KAAO,CAAC,OAAO,IAAI,UAC7B,OAAO,OAAO,OAAO,IAAK,CAAE,SAAU,CAAA,EAAI,EAI3C,OAAO,OAAO,OAAO,IAAI,SAAU,CAAE,KAAMC,EAAkB,EAC7DL,EAAO,MAAM,+BAA+B"} \ No newline at end of file diff --git a/dist/comments-comments-tab.mjs b/dist/comments-comments-tab.mjs index 29b8ede76eec7..b83f766158e6d 100644 --- a/dist/comments-comments-tab.mjs +++ b/dist/comments-comments-tab.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/ActivityCommentAction-BsOsgIBJ.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/CommentView-BOeY59Ia.chunk.mjs'),window.OC.filePath('', '', 'dist/pinia-BsumPXOW.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-CSlQTlWs.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserBubble-BXR7vT0V-f2DD9EAL.chunk.css'),window.OC.filePath('', '', 'dist/activity-BZ6xFlZg.chunk.mjs'),window.OC.filePath('', '', 'dist/GetComments-2IL7C9Us.chunk.mjs'),window.OC.filePath('', '', 'dist/index-D5zm-WFT.chunk.mjs'),window.OC.filePath('', '', 'dist/common-CommentView-D9eoYnuL.chunk.css'),window.OC.filePath('', '', 'dist/common-NcActionSeparator-Ct2RnclR-pXJ_-D_I.chunk.css'),window.OC.filePath('', '', 'dist/comments-ActivityCommentAction-D5Q48MrJ.chunk.css'),window.OC.filePath('', '', 'dist/ActivityCommentEntry-flkhlwTc.chunk.mjs'),window.OC.filePath('', '', 'dist/comments-ActivityCommentEntry-CVfnMLz5.chunk.css'),window.OC.filePath('', '', 'dist/FilesSidebarTab-DTUO021l.chunk.mjs'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/common-FilesSidebarTab-D1FhhmK6.chunk.css')])))=>i.map(i=>d[i]); -import{_ as m,e as c,d as w}from"./Web-DYqXJUev.chunk.mjs";import{r as _}from"./index-BGv_Bbjs.chunk.mjs";import{t as g}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as l}from"./pinia-BsumPXOW.chunk.mjs";import{l as r,i as A}from"./activity-BZ6xFlZg.chunk.mjs";import{g as v}from"./GetComments-2IL7C9Us.chunk.mjs";import"./public-C1mLBHT3.chunk.mjs";import"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const y='';function V(){let o;window.OCA.Activity.registerSidebarAction({mount:async(t,{node:e,reload:i})=>{const a=l();if(!o){const{default:s}=await m(async()=>{const{default:n}=await import("./ActivityCommentAction-BsOsgIBJ.chunk.mjs");return{default:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),import.meta.url);o=c(s,{reloadCallback:i,resourceId:e.fileid})}o.use(a),o.mount(t),r.info("Comments plugin mounted in Activity sidebar action",{node:e})},unmount:()=>{o?.unmount()}}),window.OCA.Activity.registerSidebarEntries(async({node:t,limit:e,offset:i})=>{const{data:a}=await v({resourceType:"files",resourceId:t.fileid},{limit:e,offset:i??0});r.debug("Loaded comments",{node:t,comments:a});const{default:s}=await m(async()=>{const{default:n}=await import("./ActivityCommentEntry-flkhlwTc.chunk.mjs");return{default:n}},__vite__mapDeps([41,8,9,18,2,3,19,20,6,7,10,11,5,12,21,22,23,24,25,26,27,28,29,30,31,13,14,32,33,34,1,4,15,16,17,35,36,37,38,39,42]),import.meta.url);return a.map(n=>({_CommentsViewInstance:void 0,timestamp:Date.parse(n.props?.creationDateTime??""),mount(f,{reload:p}){const d=c(s,{comment:n,resourceId:t.fileid,reloadCallback:p});d.mount(f),this._CommentsViewInstance=d},unmount(){this._CommentsViewInstance?.unmount()}}))}),window.OCA.Activity.registerSidebarFilter(t=>t.type!=="comments"),r.info("Comments plugin registered for Activity sidebar action")}const u="comments_files-sidebar-tab";A()?window.addEventListener("DOMContentLoaded",function(){V()}):_({id:"comments",displayName:g("comments","Comments"),iconSvgInline:y,order:50,tagName:u,async onInit(){const{default:o}=await m(async()=>{const{default:e}=await import("./FilesSidebarTab-DTUO021l.chunk.mjs").then(i=>i.F);return{default:e}},__vite__mapDeps([43,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,22,23,24,25,26,27,28,29,20,21,30,31,32,44,45,18,19,33,34,35,36,37,38,39,46]),import.meta.url),t=w(o,{configureApp(e){const i=l();e.use(i)},shadowRoot:!1});window.customElements.define(u,t)}}); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/ActivityCommentAction-DZTkL5C8.chunk.mjs'),window.OC.filePath('', '', 'dist/index-mH69OG7L.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/CommentView-Dwuq398x.chunk.mjs'),window.OC.filePath('', '', 'dist/pinia-BsumPXOW.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-CSlQTlWs.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserBubble-BXR7vT0V-f2DD9EAL.chunk.css'),window.OC.filePath('', '', 'dist/activity-BZ6xFlZg.chunk.mjs'),window.OC.filePath('', '', 'dist/GetComments-2IL7C9Us.chunk.mjs'),window.OC.filePath('', '', 'dist/index-D5zm-WFT.chunk.mjs'),window.OC.filePath('', '', 'dist/common-CommentView-D9eoYnuL.chunk.css'),window.OC.filePath('', '', 'dist/common-NcActionSeparator-Ct2RnclR-pXJ_-D_I.chunk.css'),window.OC.filePath('', '', 'dist/comments-ActivityCommentAction-D5Q48MrJ.chunk.css'),window.OC.filePath('', '', 'dist/ActivityCommentEntry-B6Tpqj9O.chunk.mjs'),window.OC.filePath('', '', 'dist/comments-ActivityCommentEntry-CVfnMLz5.chunk.css'),window.OC.filePath('', '', 'dist/FilesSidebarTab-Bv3AwXFc.chunk.mjs'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/common-FilesSidebarTab-D1FhhmK6.chunk.css')])))=>i.map(i=>d[i]); +import{_ as m,e as c,d as w}from"./Web-DYqXJUev.chunk.mjs";import{r as _}from"./index-BGv_Bbjs.chunk.mjs";import{t as g}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as l}from"./pinia-BsumPXOW.chunk.mjs";import{l as r,i as A}from"./activity-BZ6xFlZg.chunk.mjs";import{g as v}from"./GetComments-2IL7C9Us.chunk.mjs";import"./public-C1mLBHT3.chunk.mjs";import"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";const y='';function V(){let o;window.OCA.Activity.registerSidebarAction({mount:async(t,{node:e,reload:i})=>{const a=l();if(!o){const{default:s}=await m(async()=>{const{default:n}=await import("./ActivityCommentAction-DZTkL5C8.chunk.mjs");return{default:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),import.meta.url);o=c(s,{reloadCallback:i,resourceId:e.fileid})}o.use(a),o.mount(t),r.info("Comments plugin mounted in Activity sidebar action",{node:e})},unmount:()=>{o?.unmount()}}),window.OCA.Activity.registerSidebarEntries(async({node:t,limit:e,offset:i})=>{const{data:a}=await v({resourceType:"files",resourceId:t.fileid},{limit:e,offset:i??0});r.debug("Loaded comments",{node:t,comments:a});const{default:s}=await m(async()=>{const{default:n}=await import("./ActivityCommentEntry-B6Tpqj9O.chunk.mjs");return{default:n}},__vite__mapDeps([41,8,9,18,2,3,19,20,6,7,10,11,5,12,21,22,23,24,25,26,27,28,29,30,31,13,14,32,33,34,1,4,15,16,17,35,36,37,38,39,42]),import.meta.url);return a.map(n=>({_CommentsViewInstance:void 0,timestamp:Date.parse(n.props?.creationDateTime??""),mount(f,{reload:p}){const d=c(s,{comment:n,resourceId:t.fileid,reloadCallback:p});d.mount(f),this._CommentsViewInstance=d},unmount(){this._CommentsViewInstance?.unmount()}}))}),window.OCA.Activity.registerSidebarFilter(t=>t.type!=="comments"),r.info("Comments plugin registered for Activity sidebar action")}const u="comments_files-sidebar-tab";A()?window.addEventListener("DOMContentLoaded",function(){V()}):_({id:"comments",displayName:g("comments","Comments"),iconSvgInline:y,order:50,tagName:u,async onInit(){const{default:o}=await m(async()=>{const{default:e}=await import("./FilesSidebarTab-Bv3AwXFc.chunk.mjs").then(i=>i.F);return{default:e}},__vite__mapDeps([43,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,22,23,24,25,26,27,28,29,20,21,30,31,32,44,45,18,19,33,34,35,36,37,38,39,46]),import.meta.url),t=w(o,{configureApp(e){const i=l();e.use(i)},shadowRoot:!1});window.customElements.define(u,t)}}); //# sourceMappingURL=comments-comments-tab.mjs.map diff --git a/dist/dav-settings-admin-example-content.mjs b/dist/dav-settings-admin-example-content.mjs index c71fd3606acbc..3faf63828e485 100644 --- a/dist/dav-settings-admin-example-content.mjs +++ b/dist/dav-settings-admin-example-content.mjs @@ -1,2 +1,2 @@ -import{o as l,f as d,g as u,t as m,h as C,m as M,b as U,c as V,u as k,w as i,i as B,k as n,r as p,j as f,e as Z}from"./Web-DYqXJUev.chunk.mjs";import{t as c}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as S}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{b as g}from"./index-Cp0kcsps.chunk.mjs";import{N as H}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import{D as T,s as j}from"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import{N as L}from"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import{c as x}from"./index-CkGt55pS.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import{N as q}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{d as I,a as y}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{_ as w,l as D}from"./public-C1mLBHT3.chunk.mjs";import{l as _}from"./logger-DOK4E6xT.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const G='',J={name:"AccountIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},K=["aria-hidden","aria-label"],P=["fill","width","height"],Q={d:"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"},W={key:0};function X(a,e,t,s,o,r){return l(),d("span",M(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon account-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",Q,[t.title?(l(),d("title",W,m(t.title),1)):C("",!0)])],8,P))],16,K)}const Y=w(J,[["render",X]]),ee={name:"RestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},te=["aria-hidden","aria-label"],ae=["fill","width","height"],oe={d:"M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z"},ie={key:0};function le(a,e,t,s,o,r){return l(),d("span",M(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon restore-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",oe,[t.title?(l(),d("title",ie,m(t.title),1)):C("",!0)])],8,ae))],16,te)}const R=w(ee,[["render",le]]),ne={name:"TrayArrowUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},se=["aria-hidden","aria-label"],re=["fill","width","height"],ce={d:"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 2L6.46 7.46L7.88 8.88L11 5.75V15H13V5.75L16.13 8.88L17.55 7.45L12 2Z"},de={key:0};function pe(a,e,t,s,o,r){return l(),d("span",M(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon tray-arrow-up-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",ce,[t.title?(l(),d("title",de,m(t.title),1)):C("",!0)])],8,re))],16,se)}const $=w(ne,[["render",pe]]),me={class:"download-button"},ue={class:"download-button__label"},ve=U({__name:"ExampleContentDownloadButton",props:{href:{}},setup(a){return(e,t)=>(l(),V(k(S),{variant:"tertiary",href:a.href},{icon:i(()=>[B(e.$slots,"icon",{},void 0,!0)]),default:i(()=>[u("div",me,[u("span",ue,[B(e.$slots,"default",{},void 0,!0)]),n(T,{class:"download-button__icon",size:20})])]),_:3},8,["href"]))}}),O=w(ve,[["__scopeId","data-v-be40807a"]]),he=D("dav","enableDefaultContact",!1),fe=D("dav","hasCustomDefaultContact",!1),ge={name:"ExampleContactSettings",components:{NcDialog:L,NcButton:S,NcCheckboxRadioSwitch:H,IconUpload:$,IconRestore:R,IconAccount:Y,ExampleContentDownloadButton:O},setup(){return{t:c}},data(){return{enableDefaultContact:he,hasCustomDefaultContact:fe,isModalOpen:!1,loading:!1,buttons:[{label:c("dav","Cancel"),icon:G,callback:()=>{this.isModalOpen=!1}},{label:c("dav","Import"),icon:j,variant:"primary",callback:()=>{this.clickImportInput()}}]}},computed:{downloadUrl(){return g("/apps/dav/api/defaultcontact/contact")}},methods:{updateEnableDefaultContact(){x.put(g("apps/dav/api/defaultcontact/config"),{allow:!this.enableDefaultContact}).then(()=>{this.enableDefaultContact=!this.enableDefaultContact}).catch(()=>{y(c("dav","Error while saving settings"))})},toggleModal(){this.isModalOpen=!this.isModalOpen},clickImportInput(){this.$refs.exampleContactImportInput.click()},resetContact(){this.loading=!0,x.put(g("/apps/dav/api/defaultcontact/contact")).then(()=>{this.hasCustomDefaultContact=!1,I(c("dav","Contact reset successfully"))}).catch(a=>{_.error("Error importing contact:",{error:a}),y(c("dav","Error while resetting contact"))}).finally(()=>{this.loading=!1})},processFile(a){this.loading=!0;const e=a.target.files[0],t=new FileReader;t.onload=async()=>{this.isModalOpen=!1;try{await x.put(g("/apps/dav/api/defaultcontact/contact"),{contactData:t.result}),this.hasCustomDefaultContact=!0,I(c("dav","Contact imported successfully"))}catch(s){_.error("Error importing contact:",{error:s}),y(c("dav","Error while importing contact"))}finally{this.loading=!1,a.target.value=""}},t.readAsText(e)}}},Ce={class:"example-contact-settings"},we={key:0,class:"example-contact-settings__buttons"},be=["disabled"];function xe(a,e,t,s,o,r){const v=p("NcCheckboxRadioSwitch"),N=p("IconAccount"),A=p("ExampleContentDownloadButton"),E=p("IconUpload"),b=p("NcButton"),z=p("IconRestore"),F=p("NcDialog");return l(),d("div",Ce,[n(v,{modelValue:o.enableDefaultContact,type:"switch","onUpdate:modelValue":r.updateEnableDefaultContact},{default:i(()=>[f(m(s.t("dav","Add example contact to user's address book when they first log in")),1)]),_:1},8,["modelValue","onUpdate:modelValue"]),o.enableDefaultContact?(l(),d("div",we,[n(A,{href:r.downloadUrl},{icon:i(()=>[n(N,{size:20})]),default:i(()=>[e[2]||(e[2]=f(" example_contact.vcf ",-1))]),_:1},8,["href"]),n(b,{variant:"secondary",onClick:r.toggleModal},{icon:i(()=>[n(E,{size:20})]),default:i(()=>[f(" "+m(s.t("dav","Import contact")),1)]),_:1},8,["onClick"]),o.hasCustomDefaultContact?(l(),V(b,{key:0,variant:"tertiary",onClick:r.resetContact},{icon:i(()=>[n(z,{size:20})]),default:i(()=>[f(" "+m(s.t("dav","Reset to default")),1)]),_:1},8,["onClick"])):C("",!0)])):C("",!0),n(F,{open:o.isModalOpen,"onUpdate:open":e[0]||(e[0]=h=>o.isModalOpen=h),name:s.t("dav","Import contacts"),buttons:o.buttons},{default:i(()=>[u("div",null,[u("p",null,m(s.t("dav","Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?")),1)])]),_:1},8,["open","name","buttons"]),u("input",{id:"example-contact-import",ref:"exampleContactImportInput",disabled:o.loading,type:"file",accept:".vcf",class:"hidden-visually",onChange:e[1]||(e[1]=(...h)=>r.processFile&&r.processFile(...h))},null,40,be)])}const ye=w(ge,[["render",xe],["__scopeId","data-v-db8b0002"]]),_e={name:"CalendarBlankIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ee=["aria-hidden","aria-label"],ke=["fill","width","height"],Ie={d:"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1"},De={key:0};function Me(a,e,t,s,o,r){return l(),d("span",M(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon calendar-blank-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",Ie,[t.title?(l(),d("title",De,m(t.title),1)):C("",!0)])],8,ke))],16,Ee)}const Ve=w(_e,[["render",Me]]);async function Ne(a){const e=g("/apps/dav/api/exampleEvent/enable");await x.post(e,{enable:a})}async function Ae(a){const e=g("/apps/dav/api/exampleEvent/event");await x.post(e,{ics:a})}async function ze(){const a=g("/apps/dav/api/exampleEvent/event");await x.delete(a)}const Fe={name:"ExampleEventSettings",components:{NcButton:S,NcCheckboxRadioSwitch:H,NcDialog:L,IconCalendarBlank:Ve,IconUpload:$,IconRestore:R,ExampleContentDownloadButton:O},setup(){return{t:c}},data(){return{createExampleEvent:D("dav","create_example_event",!1),hasCustomEvent:D("dav","has_custom_example_event",!1),showImportModal:!1,uploading:!1,deleting:!1,savingConfig:!1,selectedFile:void 0}},computed:{downloadUrl(){return g("/apps/dav/api/exampleEvent/event")}},methods:{selectFile(){this.selectedFile=this.$refs["event-file"]?.files[0]},async updateCreateExampleEvent(){this.savingConfig=!0;const a=!this.createExampleEvent;try{await Ne(a)}catch(e){y(c("dav","Failed to save example event creation setting")),_.error("Failed to save example event creation setting",{error:e,enable:a})}finally{this.savingConfig=!1}this.createExampleEvent=a},uploadCustomEvent(){if(!this.selectedFile)return;this.uploading=!0;const a=new FileReader;a.addEventListener("load",async()=>{const e=a.result;try{await Ae(e)}catch(t){y(c("dav","Failed to upload the example event")),_.error("Failed to upload example ICS",{error:t,ics:e});return}finally{this.uploading=!1}I(c("dav","Custom example event was saved successfully")),this.showImportModal=!1,this.hasCustomEvent=!0}),a.readAsText(this.selectedFile)},async deleteCustomEvent(){this.deleting=!0;try{await ze()}catch(a){y(c("dav","Failed to delete the custom example event")),_.error("Failed to delete the custom example event",{error:a});return}finally{this.deleting=!1}I(c("dav","Custom example event was deleted successfully")),this.hasCustomEvent=!1}}},Se={class:"example-event-settings"},Be={key:0,class:"example-event-settings__buttons"},Ue={class:"import-event-modal"},He=["disabled"],Le={class:"import-event-modal__buttons"};function Re(a,e,t,s,o,r){const v=p("NcCheckboxRadioSwitch"),N=p("IconCalendarBlank"),A=p("ExampleContentDownloadButton"),E=p("IconUpload"),b=p("NcButton"),z=p("IconRestore"),F=p("NcDialog");return l(),d("div",Se,[n(v,{modelValue:o.createExampleEvent,disabled:o.savingConfig,type:"switch","onUpdate:modelValue":r.updateCreateExampleEvent},{default:i(()=>[f(m(s.t("dav","Add example event to user's calendar when they first log in")),1)]),_:1},8,["modelValue","disabled","onUpdate:modelValue"]),o.createExampleEvent?(l(),d("div",Be,[n(A,{href:r.downloadUrl},{icon:i(()=>[n(N,{size:20})]),default:i(()=>[e[4]||(e[4]=f(" example_event.ics ",-1))]),_:1},8,["href"]),n(b,{variant:"secondary",onClick:e[0]||(e[0]=h=>o.showImportModal=!0)},{icon:i(()=>[n(E,{size:20})]),default:i(()=>[f(" "+m(s.t("dav","Import calendar event")),1)]),_:1}),o.hasCustomEvent?(l(),V(b,{key:0,variant:"tertiary",disabled:o.deleting,onClick:r.deleteCustomEvent},{icon:i(()=>[n(z,{size:20})]),default:i(()=>[f(" "+m(s.t("dav","Reset to default")),1)]),_:1},8,["disabled","onClick"])):C("",!0)])):C("",!0),n(F,{open:o.showImportModal,"onUpdate:open":e[3]||(e[3]=h=>o.showImportModal=h),name:s.t("dav","Import calendar event")},{default:i(()=>[u("div",Ue,[u("p",null,m(s.t("dav","Uploading a new event will overwrite the existing one.")),1),u("input",{ref:"event-file",disabled:o.uploading,type:"file",accept:".ics,text/calendar",class:"import-event-modal__file-picker",onChange:e[1]||(e[1]=(...h)=>r.selectFile&&r.selectFile(...h))},null,40,He),u("div",Le,[n(b,{disabled:o.uploading||!o.selectedFile,variant:"primary",onClick:e[2]||(e[2]=h=>r.uploadCustomEvent())},{icon:i(()=>[n(E,{size:20})]),default:i(()=>[f(" "+m(s.t("dav","Upload event")),1)]),_:1},8,["disabled"])])])]),_:1},8,["open","name"])])}const $e=w(Fe,[["render",Re],["__scopeId","data-v-88fee128"]]),Oe=U({__name:"ExampleContentSettingsSection",setup(a){return(e,t)=>(l(),V(k(q),{id:"example-content",name:k(c)("dav","Example content"),description:k(c)("dav","Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content.")},{default:i(()=>[n(ye),n($e)]),_:1},8,["name","description"]))}}),Ze=Z(Oe);Ze.mount("#settings-example-content"); +import{o as l,f as d,g as u,t as m,h as C,m as M,b as U,c as V,u as k,w as i,i as B,k as n,r as p,j as f,e as Z}from"./Web-DYqXJUev.chunk.mjs";import{t as c}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as S}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{b as g}from"./index-Cp0kcsps.chunk.mjs";import{N as H}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import{D as T,s as j}from"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import{N as L}from"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import{c as x}from"./index-CkGt55pS.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import{N as q}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{d as I,a as y}from"./index-mH69OG7L.chunk.mjs";import{_ as w,l as D}from"./public-C1mLBHT3.chunk.mjs";import{l as _}from"./logger-DOK4E6xT.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const G='',J={name:"AccountIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},K=["aria-hidden","aria-label"],P=["fill","width","height"],Q={d:"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"},W={key:0};function X(a,e,t,s,o,r){return l(),d("span",M(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon account-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",Q,[t.title?(l(),d("title",W,m(t.title),1)):C("",!0)])],8,P))],16,K)}const Y=w(J,[["render",X]]),ee={name:"RestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},te=["aria-hidden","aria-label"],ae=["fill","width","height"],oe={d:"M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z"},ie={key:0};function le(a,e,t,s,o,r){return l(),d("span",M(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon restore-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",oe,[t.title?(l(),d("title",ie,m(t.title),1)):C("",!0)])],8,ae))],16,te)}const R=w(ee,[["render",le]]),ne={name:"TrayArrowUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},se=["aria-hidden","aria-label"],re=["fill","width","height"],ce={d:"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 2L6.46 7.46L7.88 8.88L11 5.75V15H13V5.75L16.13 8.88L17.55 7.45L12 2Z"},de={key:0};function pe(a,e,t,s,o,r){return l(),d("span",M(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon tray-arrow-up-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",ce,[t.title?(l(),d("title",de,m(t.title),1)):C("",!0)])],8,re))],16,se)}const $=w(ne,[["render",pe]]),me={class:"download-button"},ue={class:"download-button__label"},ve=U({__name:"ExampleContentDownloadButton",props:{href:{}},setup(a){return(e,t)=>(l(),V(k(S),{variant:"tertiary",href:a.href},{icon:i(()=>[B(e.$slots,"icon",{},void 0,!0)]),default:i(()=>[u("div",me,[u("span",ue,[B(e.$slots,"default",{},void 0,!0)]),n(T,{class:"download-button__icon",size:20})])]),_:3},8,["href"]))}}),O=w(ve,[["__scopeId","data-v-be40807a"]]),he=D("dav","enableDefaultContact",!1),fe=D("dav","hasCustomDefaultContact",!1),ge={name:"ExampleContactSettings",components:{NcDialog:L,NcButton:S,NcCheckboxRadioSwitch:H,IconUpload:$,IconRestore:R,IconAccount:Y,ExampleContentDownloadButton:O},setup(){return{t:c}},data(){return{enableDefaultContact:he,hasCustomDefaultContact:fe,isModalOpen:!1,loading:!1,buttons:[{label:c("dav","Cancel"),icon:G,callback:()=>{this.isModalOpen=!1}},{label:c("dav","Import"),icon:j,variant:"primary",callback:()=>{this.clickImportInput()}}]}},computed:{downloadUrl(){return g("/apps/dav/api/defaultcontact/contact")}},methods:{updateEnableDefaultContact(){x.put(g("apps/dav/api/defaultcontact/config"),{allow:!this.enableDefaultContact}).then(()=>{this.enableDefaultContact=!this.enableDefaultContact}).catch(()=>{y(c("dav","Error while saving settings"))})},toggleModal(){this.isModalOpen=!this.isModalOpen},clickImportInput(){this.$refs.exampleContactImportInput.click()},resetContact(){this.loading=!0,x.put(g("/apps/dav/api/defaultcontact/contact")).then(()=>{this.hasCustomDefaultContact=!1,I(c("dav","Contact reset successfully"))}).catch(a=>{_.error("Error importing contact:",{error:a}),y(c("dav","Error while resetting contact"))}).finally(()=>{this.loading=!1})},processFile(a){this.loading=!0;const e=a.target.files[0],t=new FileReader;t.onload=async()=>{this.isModalOpen=!1;try{await x.put(g("/apps/dav/api/defaultcontact/contact"),{contactData:t.result}),this.hasCustomDefaultContact=!0,I(c("dav","Contact imported successfully"))}catch(s){_.error("Error importing contact:",{error:s}),y(c("dav","Error while importing contact"))}finally{this.loading=!1,a.target.value=""}},t.readAsText(e)}}},Ce={class:"example-contact-settings"},we={key:0,class:"example-contact-settings__buttons"},be=["disabled"];function xe(a,e,t,s,o,r){const v=p("NcCheckboxRadioSwitch"),N=p("IconAccount"),A=p("ExampleContentDownloadButton"),E=p("IconUpload"),b=p("NcButton"),z=p("IconRestore"),F=p("NcDialog");return l(),d("div",Ce,[n(v,{modelValue:o.enableDefaultContact,type:"switch","onUpdate:modelValue":r.updateEnableDefaultContact},{default:i(()=>[f(m(s.t("dav","Add example contact to user's address book when they first log in")),1)]),_:1},8,["modelValue","onUpdate:modelValue"]),o.enableDefaultContact?(l(),d("div",we,[n(A,{href:r.downloadUrl},{icon:i(()=>[n(N,{size:20})]),default:i(()=>[e[2]||(e[2]=f(" example_contact.vcf ",-1))]),_:1},8,["href"]),n(b,{variant:"secondary",onClick:r.toggleModal},{icon:i(()=>[n(E,{size:20})]),default:i(()=>[f(" "+m(s.t("dav","Import contact")),1)]),_:1},8,["onClick"]),o.hasCustomDefaultContact?(l(),V(b,{key:0,variant:"tertiary",onClick:r.resetContact},{icon:i(()=>[n(z,{size:20})]),default:i(()=>[f(" "+m(s.t("dav","Reset to default")),1)]),_:1},8,["onClick"])):C("",!0)])):C("",!0),n(F,{open:o.isModalOpen,"onUpdate:open":e[0]||(e[0]=h=>o.isModalOpen=h),name:s.t("dav","Import contacts"),buttons:o.buttons},{default:i(()=>[u("div",null,[u("p",null,m(s.t("dav","Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?")),1)])]),_:1},8,["open","name","buttons"]),u("input",{id:"example-contact-import",ref:"exampleContactImportInput",disabled:o.loading,type:"file",accept:".vcf",class:"hidden-visually",onChange:e[1]||(e[1]=(...h)=>r.processFile&&r.processFile(...h))},null,40,be)])}const ye=w(ge,[["render",xe],["__scopeId","data-v-db8b0002"]]),_e={name:"CalendarBlankIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ee=["aria-hidden","aria-label"],ke=["fill","width","height"],Ie={d:"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1"},De={key:0};function Me(a,e,t,s,o,r){return l(),d("span",M(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon calendar-blank-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",Ie,[t.title?(l(),d("title",De,m(t.title),1)):C("",!0)])],8,ke))],16,Ee)}const Ve=w(_e,[["render",Me]]);async function Ne(a){const e=g("/apps/dav/api/exampleEvent/enable");await x.post(e,{enable:a})}async function Ae(a){const e=g("/apps/dav/api/exampleEvent/event");await x.post(e,{ics:a})}async function ze(){const a=g("/apps/dav/api/exampleEvent/event");await x.delete(a)}const Fe={name:"ExampleEventSettings",components:{NcButton:S,NcCheckboxRadioSwitch:H,NcDialog:L,IconCalendarBlank:Ve,IconUpload:$,IconRestore:R,ExampleContentDownloadButton:O},setup(){return{t:c}},data(){return{createExampleEvent:D("dav","create_example_event",!1),hasCustomEvent:D("dav","has_custom_example_event",!1),showImportModal:!1,uploading:!1,deleting:!1,savingConfig:!1,selectedFile:void 0}},computed:{downloadUrl(){return g("/apps/dav/api/exampleEvent/event")}},methods:{selectFile(){this.selectedFile=this.$refs["event-file"]?.files[0]},async updateCreateExampleEvent(){this.savingConfig=!0;const a=!this.createExampleEvent;try{await Ne(a)}catch(e){y(c("dav","Failed to save example event creation setting")),_.error("Failed to save example event creation setting",{error:e,enable:a})}finally{this.savingConfig=!1}this.createExampleEvent=a},uploadCustomEvent(){if(!this.selectedFile)return;this.uploading=!0;const a=new FileReader;a.addEventListener("load",async()=>{const e=a.result;try{await Ae(e)}catch(t){y(c("dav","Failed to upload the example event")),_.error("Failed to upload example ICS",{error:t,ics:e});return}finally{this.uploading=!1}I(c("dav","Custom example event was saved successfully")),this.showImportModal=!1,this.hasCustomEvent=!0}),a.readAsText(this.selectedFile)},async deleteCustomEvent(){this.deleting=!0;try{await ze()}catch(a){y(c("dav","Failed to delete the custom example event")),_.error("Failed to delete the custom example event",{error:a});return}finally{this.deleting=!1}I(c("dav","Custom example event was deleted successfully")),this.hasCustomEvent=!1}}},Se={class:"example-event-settings"},Be={key:0,class:"example-event-settings__buttons"},Ue={class:"import-event-modal"},He=["disabled"],Le={class:"import-event-modal__buttons"};function Re(a,e,t,s,o,r){const v=p("NcCheckboxRadioSwitch"),N=p("IconCalendarBlank"),A=p("ExampleContentDownloadButton"),E=p("IconUpload"),b=p("NcButton"),z=p("IconRestore"),F=p("NcDialog");return l(),d("div",Se,[n(v,{modelValue:o.createExampleEvent,disabled:o.savingConfig,type:"switch","onUpdate:modelValue":r.updateCreateExampleEvent},{default:i(()=>[f(m(s.t("dav","Add example event to user's calendar when they first log in")),1)]),_:1},8,["modelValue","disabled","onUpdate:modelValue"]),o.createExampleEvent?(l(),d("div",Be,[n(A,{href:r.downloadUrl},{icon:i(()=>[n(N,{size:20})]),default:i(()=>[e[4]||(e[4]=f(" example_event.ics ",-1))]),_:1},8,["href"]),n(b,{variant:"secondary",onClick:e[0]||(e[0]=h=>o.showImportModal=!0)},{icon:i(()=>[n(E,{size:20})]),default:i(()=>[f(" "+m(s.t("dav","Import calendar event")),1)]),_:1}),o.hasCustomEvent?(l(),V(b,{key:0,variant:"tertiary",disabled:o.deleting,onClick:r.deleteCustomEvent},{icon:i(()=>[n(z,{size:20})]),default:i(()=>[f(" "+m(s.t("dav","Reset to default")),1)]),_:1},8,["disabled","onClick"])):C("",!0)])):C("",!0),n(F,{open:o.showImportModal,"onUpdate:open":e[3]||(e[3]=h=>o.showImportModal=h),name:s.t("dav","Import calendar event")},{default:i(()=>[u("div",Ue,[u("p",null,m(s.t("dav","Uploading a new event will overwrite the existing one.")),1),u("input",{ref:"event-file",disabled:o.uploading,type:"file",accept:".ics,text/calendar",class:"import-event-modal__file-picker",onChange:e[1]||(e[1]=(...h)=>r.selectFile&&r.selectFile(...h))},null,40,He),u("div",Le,[n(b,{disabled:o.uploading||!o.selectedFile,variant:"primary",onClick:e[2]||(e[2]=h=>r.uploadCustomEvent())},{icon:i(()=>[n(E,{size:20})]),default:i(()=>[f(" "+m(s.t("dav","Upload event")),1)]),_:1},8,["disabled"])])])]),_:1},8,["open","name"])])}const $e=w(Fe,[["render",Re],["__scopeId","data-v-88fee128"]]),Oe=U({__name:"ExampleContentSettingsSection",setup(a){return(e,t)=>(l(),V(k(q),{id:"example-content",name:k(c)("dav","Example content"),description:k(c)("dav","Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content.")},{default:i(()=>[n(ye),n($e)]),_:1},8,["name","description"]))}}),Ze=Z(Oe);Ze.mount("#settings-example-content"); //# sourceMappingURL=dav-settings-admin-example-content.mjs.map diff --git a/dist/dav-settings-admin-example-content.mjs.map b/dist/dav-settings-admin-example-content.mjs.map index 7e7034632f15b..3c36170666163 100644 --- a/dist/dav-settings-admin-example-content.mjs.map +++ b/dist/dav-settings-admin-example-content.mjs.map @@ -1 +1 @@ -{"version":3,"file":"dav-settings-admin-example-content.mjs","sources":["../node_modules/@mdi/svg/svg/cancel.svg?raw","../node_modules/vue-material-design-icons/Account.vue","../node_modules/vue-material-design-icons/Restore.vue","../node_modules/vue-material-design-icons/TrayArrowUp.vue","../build/frontend/apps/dav/src/components/ExampleContentDownloadButton.vue","../build/frontend/apps/dav/src/components/ExampleContactSettings.vue","../node_modules/vue-material-design-icons/CalendarBlank.vue","../build/frontend/apps/dav/src/service/ExampleEventService.ts","../build/frontend/apps/dav/src/components/ExampleEventSettings.vue","../build/frontend/apps/dav/src/views/ExampleContentSettingsSection.vue","../build/frontend/apps/dav/src/settings-admin-example-content.ts"],"sourcesContent":["export default \"\"","\n\n","\n\n","\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * Configure the creation of example events on a user's first login.\n *\n * @param enable - Whether to enable or disable the feature.\n */\nexport async function setCreateExampleEvent(enable: boolean): Promise {\n\tconst url = generateUrl('/apps/dav/api/exampleEvent/enable')\n\tawait axios.post(url, {\n\t\tenable,\n\t})\n}\n\n/**\n * Upload a custom example event.\n *\n * @param ics - The ICS data of the event.\n */\nexport async function uploadExampleEvent(ics: string): Promise {\n\tconst url = generateUrl('/apps/dav/api/exampleEvent/event')\n\tawait axios.post(url, {\n\t\tics,\n\t})\n}\n\n/**\n * Delete a previously uploaded custom example event.\n */\nexport async function deleteExampleEvent(): Promise {\n\tconst url = generateUrl('/apps/dav/api/exampleEvent/event')\n\tawait axios.delete(url)\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport ExampleContentSettingsSection from './views/ExampleContentSettingsSection.vue'\n\nconst app = createApp(ExampleContentSettingsSection)\napp.mount('#settings-example-content')\n"],"names":["IconCancel","_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","_createBlock","_unref","NcButton","__props","_renderSlot","_hoisted_1","_hoisted_2","_createVNode","IconDownload","enableDefaultContact","loadState","hasCustomDefaultContact","NcDialog","NcCheckboxRadioSwitch","IconUpload","IconRestore","IconAccount","ExampleContentDownloadButton","t","IconCheck","generateUrl","axios","showError","showSuccess","error","logger","event","file","reader","_component_NcCheckboxRadioSwitch","$data","$options","$setup","_component_ExampleContentDownloadButton","_component_IconAccount","_component_NcButton","_component_IconUpload","_createTextVNode","_component_IconRestore","_component_NcDialog","args","setCreateExampleEvent","enable","url","uploadExampleEvent","ics","deleteExampleEvent","IconCalendarBlank","ExampleEventService.setCreateExampleEvent","ExampleEventService.uploadExampleEvent","ExampleEventService.deleteExampleEvent","_hoisted_5","_component_IconCalendarBlank","NcSettingsSection","ExampleContactSettings","ExampleEventSettings","app","createApp","ExampleContentSettingsSection"],"mappings":"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","x_google_ignoreList":[0,1,2,3,6]} \ No newline at end of file +{"version":3,"file":"dav-settings-admin-example-content.mjs","sources":["../node_modules/@mdi/svg/svg/cancel.svg?raw","../node_modules/vue-material-design-icons/Account.vue","../node_modules/vue-material-design-icons/Restore.vue","../node_modules/vue-material-design-icons/TrayArrowUp.vue","../build/frontend/apps/dav/src/components/ExampleContentDownloadButton.vue","../build/frontend/apps/dav/src/components/ExampleContactSettings.vue","../node_modules/vue-material-design-icons/CalendarBlank.vue","../build/frontend/apps/dav/src/service/ExampleEventService.ts","../build/frontend/apps/dav/src/components/ExampleEventSettings.vue","../build/frontend/apps/dav/src/views/ExampleContentSettingsSection.vue","../build/frontend/apps/dav/src/settings-admin-example-content.ts"],"sourcesContent":["export default \"\"","\n\n","\n\n","\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * Configure the creation of example events on a user's first login.\n *\n * @param enable - Whether to enable or disable the feature.\n */\nexport async function setCreateExampleEvent(enable: boolean): Promise {\n\tconst url = generateUrl('/apps/dav/api/exampleEvent/enable')\n\tawait axios.post(url, {\n\t\tenable,\n\t})\n}\n\n/**\n * Upload a custom example event.\n *\n * @param ics - The ICS data of the event.\n */\nexport async function uploadExampleEvent(ics: string): Promise {\n\tconst url = generateUrl('/apps/dav/api/exampleEvent/event')\n\tawait axios.post(url, {\n\t\tics,\n\t})\n}\n\n/**\n * Delete a previously uploaded custom example event.\n */\nexport async function deleteExampleEvent(): Promise {\n\tconst url = generateUrl('/apps/dav/api/exampleEvent/event')\n\tawait axios.delete(url)\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport ExampleContentSettingsSection from './views/ExampleContentSettingsSection.vue'\n\nconst app = createApp(ExampleContentSettingsSection)\napp.mount('#settings-example-content')\n"],"names":["IconCancel","_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","_createBlock","_unref","NcButton","__props","_renderSlot","_hoisted_1","_hoisted_2","_createVNode","IconDownload","enableDefaultContact","loadState","hasCustomDefaultContact","NcDialog","NcCheckboxRadioSwitch","IconUpload","IconRestore","IconAccount","ExampleContentDownloadButton","t","IconCheck","generateUrl","axios","showError","showSuccess","error","logger","event","file","reader","_component_NcCheckboxRadioSwitch","$data","$options","$setup","_component_ExampleContentDownloadButton","_component_IconAccount","_component_NcButton","_component_IconUpload","_createTextVNode","_component_IconRestore","_component_NcDialog","args","setCreateExampleEvent","enable","url","uploadExampleEvent","ics","deleteExampleEvent","IconCalendarBlank","ExampleEventService.setCreateExampleEvent","ExampleEventService.uploadExampleEvent","ExampleEventService.deleteExampleEvent","_hoisted_5","_component_IconCalendarBlank","NcSettingsSection","ExampleContactSettings","ExampleEventSettings","app","createApp","ExampleContentSettingsSection"],"mappings":"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","x_google_ignoreList":[0,1,2,3,6]} \ No newline at end of file diff --git a/dist/dav-settings-personal-availability.mjs b/dist/dav-settings-personal-availability.mjs index 8a46fe2dec3c9..1eddf67d5d0dd 100644 --- a/dist/dav-settings-personal-availability.mjs +++ b/dist/dav-settings-personal-availability.mjs @@ -1,4 +1,4 @@ -import{r as G,o as B,f as H,g as Q,k as v,y as dt,t as et,w as st,j as vt,L as Ae,F as Ft,B as Gt,c as Pt,h as de,b as ce,l as St,S as ge,u as _,e as De}from"./Web-DYqXJUev.chunk.mjs";import{_ as he,l as jt,g as _e}from"./public-C1mLBHT3.chunk.mjs";import{t as D}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as Kt}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{d as Ee,c as mt,a as Lt,g as be,h as Ue,o as Ce,e as Ye}from"./index-Cp0kcsps.chunk.mjs";import{c as ft}from"./index-CkGt55pS.chunk.mjs";import{d as zt,a as Ot}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{S as ve}from"./ShareType-suoNfd7y.chunk.mjs";import{N as Ht}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as me}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import{N as Oe,a as we}from"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import{_ as Me}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{l as W}from"./logger-DOK4E6xT.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{n as Ne}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{D as xe}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as Ie}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{P as ke}from"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{z as Be,_ as Pe}from"./index-D5zm-WFT.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";function qt(r){const t=r.getFullYear(),e=(r.getMonth()+1).toString().padStart(2,"0"),s=r.getDate().toString().padStart(2,"0");return`${t}-${e}-${s}`}const Le="_absenceForm_1i2bj_2",ze="_absenceForm__pickerContainer_1i2bj_8",Ve="_absenceForm__picker_1i2bj_8",je="_absenceForm__longMessage_1i2bj_22",He="_absenceForm__longMessageContainer_1i2bj_26",Re="_absenceForm__actions_1i2bj_33",We={absenceForm:Le,absenceForm__pickerContainer:ze,absenceForm__picker:Ve,absenceForm__longMessage:je,absenceForm__longMessageContainer:He,absenceForm__actions:Re};function Zt(r){const t=r.getTimezoneOffset()*60*1e3;return new Date(r.getTime()+t)}const Fe={name:"AbsenceForm",components:{NcButton:Ht,NcTextField:Me,NcTextArea:we,NcDateTimePickerNative:me,NcSelectUsers:Oe},setup(){return{t:D}},data(){const{firstDay:r,lastDay:t,status:e,message:s,replacementUserId:a,replacementUserDisplayName:i}=jt("dav","absence",{}),o=r?new Date(r):new Date,n=Zt(o),l=t?Zt(new Date(t)):null;return{loading:!1,status:e??"",message:s??"",firstDay:n,lastDay:l,replacementUserId:a,replacementUser:a?{user:a,displayName:i}:null,searchLoading:!1,options:[]}},computed:{valid(){const r=new Date(this.firstDay?.getTime()),t=new Date(this.lastDay?.getTime());return r?.setHours(0,0,0,0),t?.setHours(0,0,0,0),!!this.firstDay&&!!this.lastDay&&!!this.status&&!!this.message&&t>=r}},methods:{resetForm(){this.status="",this.message="",this.firstDay=new Date,this.lastDay=null},formatForMultiselect(r){return{user:r.uuid||r.value.shareWith,displayName:r.name||r.label,subtitle:r.dsc|""}},async asyncFind(r){this.searchLoading=!0,await this.debounceGetSuggestions(r.trim())},async getSuggestions(r){const t=[ve.User];let e;try{e=await ft.get(mt("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"file",search:r,shareType:t}})}catch(d){W.error("Error fetching suggestions",{error:d});return}const s=e.data.ocs.data,a=e.data.ocs.data.exact;s.exact=[];const i=a.users,o=s.users;W.info("AbsenceForm raw suggestions",{rawExactSuggestions:i,rawSuggestions:o});const n=i.map(d=>this.formatForMultiselect(d)),l=o.map(d=>this.formatForMultiselect(d)),u=n.concat(l),c=u.reduce((d,m)=>(m.displayName&&(d[m.displayName]||(d[m.displayName]=0),d[m.displayName]++),d),{});this.options=u.map(d=>c[d.displayName]>1&&!d.desc?{...d,desc:d.shareWithDisplayNameUnique}:d),this.searchLoading=!1,W.info("AbsenseForm suggestions",{options:this.options})},debounceGetSuggestions:Ee(function(...r){this.getSuggestions(...r)},300),async saveForm(){if(this.valid){this.loading=!0;try{await ft.post(mt("/apps/dav/api/v1/outOfOffice/{userId}",{userId:Lt().uid}),{firstDay:qt(this.firstDay),lastDay:qt(this.lastDay),status:this.status,message:this.message,replacementUserId:this.replacementUser?.user??null}),zt(D("dav","Absence saved"))}catch(r){Ot(D("dav","Failed to save your absence settings")),W.error("Could not save absence",{error:r})}finally{this.loading=!1}}},async clearAbsence(){this.loading=!0;try{await ft.delete(mt("/apps/dav/api/v1/outOfOffice/{userId}",{userId:Lt().uid})),this.resetForm(),zt(D("dav","Absence cleared"))}catch(r){Ot(D("dav","Failed to clear your absence settings")),W.error("Could not clear absence",{error:r})}finally{this.loading=!1}}}},Ge={for:"replacement-search-input"};function Ke(r,t,e,s,a,i){const o=G("NcDateTimePickerNative"),n=G("NcSelectUsers"),l=G("NcTextField"),u=G("NcTextArea"),c=G("NcButton");return B(),H("form",{class:dt(r.$style.absenceForm),onSubmit:t[5]||(t[5]=Ae((...d)=>i.saveForm&&i.saveForm(...d),["prevent"]))},[Q("div",{class:dt(r.$style.absenceForm__pickerContainer)},[v(o,{id:"absence-first-day",modelValue:a.firstDay,"onUpdate:modelValue":t[0]||(t[0]=d=>a.firstDay=d),class:dt(r.$style.absenceForm__picker),label:s.t("dav","First day"),required:""},null,8,["modelValue","class","label"]),v(o,{id:"absence-last-day",modelValue:a.lastDay,"onUpdate:modelValue":t[1]||(t[1]=d=>a.lastDay=d),class:dt(r.$style.absenceForm__picker),label:s.t("dav","Last day (inclusive)"),required:""},null,8,["modelValue","class","label"])],2),Q("label",Ge,et(s.t("dav","Out of office replacement (optional)")),1),v(n,{modelValue:a.replacementUser,"onUpdate:modelValue":t[2]||(t[2]=d=>a.replacementUser=d),inputId:"replacement-search-input",loading:a.searchLoading,placeholder:s.t("dav","Name of the replacement"),options:a.options,onSearch:i.asyncFind},null,8,["modelValue","loading","placeholder","options","onSearch"]),v(l,{modelValue:a.status,"onUpdate:modelValue":t[3]||(t[3]=d=>a.status=d),label:s.t("dav","Short absence status"),required:!0},null,8,["modelValue","label"]),Q("div",{class:dt(r.$style.absenceForm__longMessageContainer)},[v(u,{modelValue:a.message,"onUpdate:modelValue":t[4]||(t[4]=d=>a.message=d),inputClass:r.$style.absenceForm__longMessage,label:s.t("dav","Long absence Message"),required:"",resize:"none",rows:"6"},null,8,["modelValue","inputClass","label"])],2),Q("div",{class:dt(r.$style.absenceForm__actions)},[v(c,{disabled:a.loading||!i.valid,variant:"primary",type:"submit"},{default:st(()=>[vt(et(s.t("dav","Save")),1)]),_:1},8,["disabled"]),v(c,{disabled:a.loading||!i.valid,variant:"error",onClick:i.clearAbsence},{default:st(()=>[vt(et(s.t("dav","Disable absence")),1)]),_:1},8,["disabled","onClick"])],2)],34)}const qe={$style:We},Ze=he(Fe,[["render",Ke],["__cssModules",qe]]);var at={},ct={},Jt;function Je(){return Jt||(Jt=1,Object.defineProperty(ct,"__esModule",{value:!0}),ct.zonesMap=ct.defaultStart=void 0,ct.defaultStart="19700101T000000",ct.zonesMap=new Map([["Africa/Abidjan",{s:{f:"+0000",n:"GMT"}}],["Africa/Accra",{s:{f:"+0000",n:"GMT"}}],["Africa/Addis_Ababa",{s:{f:"+0300",n:"EAT"}}],["Africa/Algiers",{s:{f:"+0100",n:"CET"}}],["Africa/Asmara",{s:{f:"+0300",n:"EAT"}}],["Africa/Bamako",{s:{f:"+0000",n:"GMT"}}],["Africa/Bangui",{s:{f:"+0100",n:"WAT"}}],["Africa/Banjul",{s:{f:"+0000",n:"GMT"}}],["Africa/Bissau",{s:{f:"+0000",n:"GMT"}}],["Africa/Blantyre",{s:{f:"+0200",n:"CAT"}}],["Africa/Brazzaville",{s:{f:"+0100",n:"WAT"}}],["Africa/Bujumbura",{s:{f:"+0200",n:"CAT"}}],["Africa/Cairo",{s:{f:"+0200",n:"EET"}}],["Africa/Casablanca",{s:{f:"+0100",n:"+01"}}],["Africa/Ceuta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Africa/Conakry",{s:{f:"+0000",n:"GMT"}}],["Africa/Dakar",{s:{f:"+0000",n:"GMT"}}],["Africa/Dar_es_Salaam",{s:{f:"+0300",n:"EAT"}}],["Africa/Djibouti",{s:{f:"+0300",n:"EAT"}}],["Africa/Douala",{s:{f:"+0100",n:"WAT"}}],["Africa/El_Aaiun",{s:{f:"+0100",n:"+01"}}],["Africa/Freetown",{s:{f:"+0000",n:"GMT"}}],["Africa/Gaborone",{s:{f:"+0200",n:"CAT"}}],["Africa/Harare",{s:{f:"+0200",n:"CAT"}}],["Africa/Johannesburg",{s:{f:"+0200",n:"SAST"}}],["Africa/Juba",{s:{f:"+0300",n:"EAT"}}],["Africa/Kampala",{s:{f:"+0300",n:"EAT"}}],["Africa/Khartoum",{s:{f:"+0200",n:"CAT"}}],["Africa/Kigali",{s:{f:"+0200",n:"CAT"}}],["Africa/Kinshasa",{s:{f:"+0100",n:"WAT"}}],["Africa/Lagos",{s:{f:"+0100",n:"WAT"}}],["Africa/Libreville",{s:{f:"+0100",n:"WAT"}}],["Africa/Lome",{s:{f:"+0000",n:"GMT"}}],["Africa/Luanda",{s:{f:"+0100",n:"WAT"}}],["Africa/Lubumbashi",{s:{f:"+0200",n:"CAT"}}],["Africa/Lusaka",{s:{f:"+0200",n:"CAT"}}],["Africa/Malabo",{s:{f:"+0100",n:"WAT"}}],["Africa/Maputo",{s:{f:"+0200",n:"CAT"}}],["Africa/Maseru",{s:{f:"+0200",n:"SAST"}}],["Africa/Mbabane",{s:{f:"+0200",n:"SAST"}}],["Africa/Mogadishu",{s:{f:"+0300",n:"EAT"}}],["Africa/Monrovia",{s:{f:"+0000",n:"GMT"}}],["Africa/Nairobi",{s:{f:"+0300",n:"EAT"}}],["Africa/Ndjamena",{s:{f:"+0100",n:"WAT"}}],["Africa/Niamey",{s:{f:"+0100",n:"WAT"}}],["Africa/Nouakchott",{s:{f:"+0000",n:"GMT"}}],["Africa/Ouagadougou",{s:{f:"+0000",n:"GMT"}}],["Africa/Porto-Novo",{s:{f:"+0100",n:"WAT"}}],["Africa/Sao_Tome",{s:{f:"+0100",n:"WAT"}}],["Africa/Tripoli",{s:{f:"+0200",n:"EET"}}],["Africa/Tunis",{s:{f:"+0100",n:"CET"}}],["Africa/Windhoek",{s:{f:"+0200",n:"CAT"}}],["America/Adak",{s:{f:"-0900",t:"-1000",n:"HST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-1000",t:"-0900",n:"HDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anchorage",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anguilla",{s:{f:"-0400",n:"AST"}}],["America/Antigua",{s:{f:"-0400",n:"AST"}}],["America/Araguaina",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Buenos_Aires",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Catamarca",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Cordoba",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Jujuy",{s:{f:"-0300",n:"-03"}}],["America/Argentina/La_Rioja",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Mendoza",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Rio_Gallegos",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Salta",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Juan",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Luis",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Tucuman",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Ushuaia",{s:{f:"-0300",n:"-03"}}],["America/Aruba",{s:{f:"-0400",n:"AST"}}],["America/Asuncion",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700322T000000",r:{m:3,d:"4SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701004T000000",r:{m:10,d:"1SU"}}}],["America/Atikokan",{s:{f:"-0500",n:"EST"}}],["America/Bahia_Banderas",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Bahia",{s:{f:"-0300",n:"-03"}}],["America/Barbados",{s:{f:"-0400",n:"AST"}}],["America/Belem",{s:{f:"-0300",n:"-03"}}],["America/Belize",{s:{f:"-0600",n:"CST"}}],["America/Blanc-Sablon",{s:{f:"-0400",n:"AST"}}],["America/Boa_Vista",{s:{f:"-0400",n:"-04"}}],["America/Bogota",{s:{f:"-0500",n:"-05"}}],["America/Boise",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Cambridge_Bay",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Campo_Grande",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Cancun",{s:{f:"-0500",n:"EST"}}],["America/Caracas",{s:{f:"-0400",n:"-04"}}],["America/Cayenne",{s:{f:"-0300",n:"-03"}}],["America/Cayman",{s:{f:"-0500",n:"EST"}}],["America/Chicago",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Chihuahua",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Costa_Rica",{s:{f:"-0600",n:"CST"}}],["America/Creston",{s:{f:"-0700",n:"MST"}}],["America/Cuiaba",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Curacao",{s:{f:"-0400",n:"AST"}}],["America/Danmarkshavn",{s:{f:"+0000",n:"GMT"}}],["America/Dawson_Creek",{s:{f:"-0700",n:"MST"}}],["America/Dawson",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Denver",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Detroit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Dominica",{s:{f:"-0400",n:"AST"}}],["America/Edmonton",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Eirunepe",{s:{f:"-0500",n:"-05"}}],["America/El_Salvador",{s:{f:"-0600",n:"CST"}}],["America/Fort_Nelson",{s:{f:"-0700",n:"MST"}}],["America/Fortaleza",{s:{f:"-0300",n:"-03"}}],["America/Glace_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Godthab",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701024T230000",r:{m:10,d:"-1SA"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700328T220000",r:{m:3,d:"-1SA"}}}],["America/Goose_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grand_Turk",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grenada",{s:{f:"-0400",n:"AST"}}],["America/Guadeloupe",{s:{f:"-0400",n:"AST"}}],["America/Guatemala",{s:{f:"-0600",n:"CST"}}],["America/Guayaquil",{s:{f:"-0500",n:"-05"}}],["America/Guyana",{s:{f:"-0400",n:"-04"}}],["America/Halifax",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Havana",{s:{f:"-0400",t:"-0500",n:"CST",s:"19701101T010000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"CDT",s:"19700308T000000",r:{m:3,d:"2SU"}}}],["America/Hermosillo",{s:{f:"-0700",n:"MST"}}],["America/Indiana/Indianapolis",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Knox",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Marengo",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Petersburg",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Tell_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vevay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vincennes",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Winamac",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Inuvik",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Iqaluit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Jamaica",{s:{f:"-0500",n:"EST"}}],["America/Juneau",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Louisville",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Monticello",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kralendijk",{s:{f:"-0400",n:"AST"}}],["America/La_Paz",{s:{f:"-0400",n:"-04"}}],["America/Lima",{s:{f:"-0500",n:"-05"}}],["America/Los_Angeles",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Lower_Princes",{s:{f:"-0400",n:"AST"}}],["America/Maceio",{s:{f:"-0300",n:"-03"}}],["America/Managua",{s:{f:"-0600",n:"CST"}}],["America/Manaus",{s:{f:"-0400",n:"-04"}}],["America/Marigot",{s:{f:"-0400",n:"AST"}}],["America/Martinique",{s:{f:"-0400",n:"AST"}}],["America/Matamoros",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mazatlan",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Menominee",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Merida",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Metlakatla",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mexico_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Miquelon",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Moncton",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Monterrey",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Montevideo",{s:{f:"-0300",n:"-03"}}],["America/Montserrat",{s:{f:"-0400",n:"AST"}}],["America/Nassau",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/New_York",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nipigon",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nome",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Noronha",{s:{f:"-0200",n:"-02"}}],["America/North_Dakota/Beulah",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/Center",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/New_Salem",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Ojinaga",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Panama",{s:{f:"-0500",n:"EST"}}],["America/Pangnirtung",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Paramaribo",{s:{f:"-0300",n:"-03"}}],["America/Phoenix",{s:{f:"-0700",n:"MST"}}],["America/Port_of_Spain",{s:{f:"-0400",n:"AST"}}],["America/Port-au-Prince",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Porto_Velho",{s:{f:"-0400",n:"-04"}}],["America/Puerto_Rico",{s:{f:"-0400",n:"AST"}}],["America/Punta_Arenas",{s:{f:"-0300",n:"-03"}}],["America/Rainy_River",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rankin_Inlet",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Recife",{s:{f:"-0300",n:"-03"}}],["America/Regina",{s:{f:"-0600",n:"CST"}}],["America/Resolute",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rio_Branco",{s:{f:"-0500",n:"-05"}}],["America/Santarem",{s:{f:"-0300",n:"-03"}}],["America/Santiago",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700405T000000",r:{m:4,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19700906T000000",r:{m:9,d:"1SU"}}}],["America/Santo_Domingo",{s:{f:"-0400",n:"AST"}}],["America/Sao_Paulo",{s:{f:"-0300",n:"-03",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Scoresbysund",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["America/Sitka",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Barthelemy",{s:{f:"-0400",n:"AST"}}],["America/St_Johns",{s:{f:"-0230",t:"-0330",n:"NST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0330",t:"-0230",n:"NDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Kitts",{s:{f:"-0400",n:"AST"}}],["America/St_Lucia",{s:{f:"-0400",n:"AST"}}],["America/St_Thomas",{s:{f:"-0400",n:"AST"}}],["America/St_Vincent",{s:{f:"-0400",n:"AST"}}],["America/Swift_Current",{s:{f:"-0600",n:"CST"}}],["America/Tegucigalpa",{s:{f:"-0600",n:"CST"}}],["America/Thule",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Thunder_Bay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tijuana",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Toronto",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tortola",{s:{f:"-0400",n:"AST"}}],["America/Vancouver",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Whitehorse",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Winnipeg",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yakutat",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yellowknife",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Antarctica/Casey",{s:{f:"+0800",n:"+08"}}],["Antarctica/Davis",{s:{f:"+0700",n:"+07"}}],["Antarctica/DumontDUrville",{s:{f:"+1000",n:"+10"}}],["Antarctica/Macquarie",{s:{f:"+1100",n:"+11"}}],["Antarctica/Mawson",{s:{f:"+0500",n:"+05"}}],["Antarctica/McMurdo",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Antarctica/Palmer",{s:{f:"-0300",n:"-03"}}],["Antarctica/Rothera",{s:{f:"-0300",n:"-03"}}],["Antarctica/Syowa",{s:{f:"+0300",n:"+03"}}],["Antarctica/Troll",{s:{f:"+0200",t:"+0000",n:"+00",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0200",n:"+02",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Antarctica/Vostok",{s:{f:"+0600",n:"+06"}}],["Arctic/Longyearbyen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Asia/Aden",{s:{f:"+0300",n:"+03"}}],["Asia/Almaty",{s:{f:"+0600",n:"+06"}}],["Asia/Amman",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T010000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700326T235959",r:{m:3,d:"-1TH"}}}],["Asia/Anadyr",{s:{f:"+1200",n:"+12"}}],["Asia/Aqtau",{s:{f:"+0500",n:"+05"}}],["Asia/Aqtobe",{s:{f:"+0500",n:"+05"}}],["Asia/Ashgabat",{s:{f:"+0500",n:"+05"}}],["Asia/Atyrau",{s:{f:"+0500",n:"+05"}}],["Asia/Baghdad",{s:{f:"+0300",n:"+03"}}],["Asia/Bahrain",{s:{f:"+0300",n:"+03"}}],["Asia/Baku",{s:{f:"+0400",n:"+04"}}],["Asia/Bangkok",{s:{f:"+0700",n:"+07"}}],["Asia/Barnaul",{s:{f:"+0700",n:"+07"}}],["Asia/Beirut",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T000000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Asia/Bishkek",{s:{f:"+0600",n:"+06"}}],["Asia/Brunei",{s:{f:"+0800",n:"+08"}}],["Asia/Chita",{s:{f:"+0900",n:"+09"}}],["Asia/Choibalsan",{s:{f:"+0800",n:"+08"}}],["Asia/Colombo",{s:{f:"+0530",n:"+0530"}}],["Asia/Damascus",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T000000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700327T000000",r:{m:3,d:"-1FR"}}}],["Asia/Dhaka",{s:{f:"+0600",n:"+06"}}],["Asia/Dili",{s:{f:"+0900",n:"+09"}}],["Asia/Dubai",{s:{f:"+0400",n:"+04"}}],["Asia/Dushanbe",{s:{f:"+0500",n:"+05"}}],["Asia/Famagusta",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Gaza",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Hebron",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Ho_Chi_Minh",{s:{f:"+0700",n:"+07"}}],["Asia/Hong_Kong",{s:{f:"+0800",n:"HKT"}}],["Asia/Hovd",{s:{f:"+0700",n:"+07"}}],["Asia/Irkutsk",{s:{f:"+0800",n:"+08"}}],["Asia/Istanbul",{s:{f:"+0300",n:"+03"}}],["Asia/Jakarta",{s:{f:"+0700",n:"WIB"}}],["Asia/Jayapura",{s:{f:"+0900",n:"WIT"}}],["Asia/Jerusalem",{s:{f:"+0300",t:"+0200",n:"IST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"IDT",s:"19700327T020000",r:{m:3,d:"-1FR"}}}],["Asia/Kabul",{s:{f:"+0430",n:"+0430"}}],["Asia/Kamchatka",{s:{f:"+1200",n:"+12"}}],["Asia/Karachi",{s:{f:"+0500",n:"PKT"}}],["Asia/Kathmandu",{s:{f:"+0545",n:"+0545"}}],["Asia/Khandyga",{s:{f:"+0900",n:"+09"}}],["Asia/Kolkata",{s:{f:"+0530",n:"IST"}}],["Asia/Krasnoyarsk",{s:{f:"+0700",n:"+07"}}],["Asia/Kuala_Lumpur",{s:{f:"+0800",n:"+08"}}],["Asia/Kuching",{s:{f:"+0800",n:"+08"}}],["Asia/Kuwait",{s:{f:"+0300",n:"+03"}}],["Asia/Macau",{s:{f:"+0800",n:"CST"}}],["Asia/Magadan",{s:{f:"+1100",n:"+11"}}],["Asia/Makassar",{s:{f:"+0800",n:"WITA"}}],["Asia/Manila",{s:{f:"+0800",n:"PST"}}],["Asia/Muscat",{s:{f:"+0400",n:"+04"}}],["Asia/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Novokuznetsk",{s:{f:"+0700",n:"+07"}}],["Asia/Novosibirsk",{s:{f:"+0700",n:"+07"}}],["Asia/Omsk",{s:{f:"+0600",n:"+06"}}],["Asia/Oral",{s:{f:"+0500",n:"+05"}}],["Asia/Phnom_Penh",{s:{f:"+0700",n:"+07"}}],["Asia/Pontianak",{s:{f:"+0700",n:"WIB"}}],["Asia/Pyongyang",{s:{f:"+0900",n:"KST"}}],["Asia/Qatar",{s:{f:"+0300",n:"+03"}}],["Asia/Qyzylorda",{s:{f:"+0600",n:"+06"}}],["Asia/Riyadh",{s:{f:"+0300",n:"+03"}}],["Asia/Sakhalin",{s:{f:"+1100",n:"+11"}}],["Asia/Samarkand",{s:{f:"+0500",n:"+05"}}],["Asia/Seoul",{s:{f:"+0900",n:"KST"}}],["Asia/Shanghai",{s:{f:"+0800",n:"CST"}}],["Asia/Singapore",{s:{f:"+0800",n:"+08"}}],["Asia/Srednekolymsk",{s:{f:"+1100",n:"+11"}}],["Asia/Taipei",{s:{f:"+0800",n:"CST"}}],["Asia/Tashkent",{s:{f:"+0500",n:"+05"}}],["Asia/Tbilisi",{s:{f:"+0400",n:"+04"}}],["Asia/Tehran",{s:{f:"+0430",t:"+0330",n:"+0330",s:"19700921T000000",r:{m:9,d:"3SU"}},d:{f:"+0330",t:"+0430",n:"+0430",s:"19700321T000000",r:{m:3,d:"3SU"}}}],["Asia/Thimphu",{s:{f:"+0600",n:"+06"}}],["Asia/Tokyo",{s:{f:"+0900",n:"JST"}}],["Asia/Tomsk",{s:{f:"+0700",n:"+07"}}],["Asia/Ulaanbaatar",{s:{f:"+0800",n:"+08"}}],["Asia/Urumqi",{s:{f:"+0600",n:"+06"}}],["Asia/Ust-Nera",{s:{f:"+1000",n:"+10"}}],["Asia/Vientiane",{s:{f:"+0700",n:"+07"}}],["Asia/Vladivostok",{s:{f:"+1000",n:"+10"}}],["Asia/Yakutsk",{s:{f:"+0900",n:"+09"}}],["Asia/Yangon",{s:{f:"+0630",n:"+0630"}}],["Asia/Yekaterinburg",{s:{f:"+0500",n:"+05"}}],["Asia/Yerevan",{s:{f:"+0400",n:"+04"}}],["Atlantic/Azores",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Atlantic/Bermuda",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Atlantic/Canary",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Cape_Verde",{s:{f:"-0100",n:"-01"}}],["Atlantic/Faroe",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Madeira",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Reykjavik",{s:{f:"+0000",n:"GMT"}}],["Atlantic/South_Georgia",{s:{f:"-0200",n:"-02"}}],["Atlantic/St_Helena",{s:{f:"+0000",n:"GMT"}}],["Atlantic/Stanley",{s:{f:"-0300",n:"-03"}}],["Australia/Adelaide",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Brisbane",{s:{f:"+1000",n:"AEST"}}],["Australia/Broken_Hill",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Currie",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Darwin",{s:{f:"+0930",n:"ACST"}}],["Australia/Eucla",{s:{f:"+0845",n:"+0845"}}],["Australia/Hobart",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Lindeman",{s:{f:"+1000",n:"AEST"}}],["Australia/Lord_Howe",{s:{f:"+1100",t:"+1030",n:"+1030",s:"19700405T020000",r:{m:4,d:"1SU"}},d:{f:"+1030",t:"+1100",n:"+11",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Melbourne",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Perth",{s:{f:"+0800",n:"AWST"}}],["Australia/Sydney",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Etc/GMT-0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT-1",{s:{f:"-0100",n:"-01"}}],["Etc/GMT-10",{s:{f:"-1000",n:"-10"}}],["Etc/GMT-11",{s:{f:"-1100",n:"-11"}}],["Etc/GMT-12",{s:{f:"-1200",n:"-12"}}],["Etc/GMT-2",{s:{f:"-0200",n:"-02"}}],["Etc/GMT-3",{s:{f:"-0300",n:"-03"}}],["Etc/GMT-4",{s:{f:"-0400",n:"-04"}}],["Etc/GMT-5",{s:{f:"-0500",n:"-05"}}],["Etc/GMT-6",{s:{f:"-0600",n:"-06"}}],["Etc/GMT-7",{s:{f:"-0700",n:"-07"}}],["Etc/GMT-8",{s:{f:"-0800",n:"-08"}}],["Etc/GMT-9",{s:{f:"-0900",n:"-09"}}],["Etc/GMT",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+1",{s:{f:"+0100",n:"+01"}}],["Etc/GMT+10",{s:{f:"+1000",n:"+10"}}],["Etc/GMT+11",{s:{f:"+1100",n:"+11"}}],["Etc/GMT+12",{s:{f:"+1200",n:"+12"}}],["Etc/GMT+13",{s:{f:"+1300",n:"+13"}}],["Etc/GMT+14",{s:{f:"+1400",n:"+14"}}],["Etc/GMT+2",{s:{f:"+0200",n:"+02"}}],["Etc/GMT+3",{s:{f:"+0300",n:"+03"}}],["Etc/GMT+4",{s:{f:"+0400",n:"+04"}}],["Etc/GMT+5",{s:{f:"+0500",n:"+05"}}],["Etc/GMT+6",{s:{f:"+0600",n:"+06"}}],["Etc/GMT+7",{s:{f:"+0700",n:"+07"}}],["Etc/GMT+8",{s:{f:"+0800",n:"+08"}}],["Etc/GMT+9",{s:{f:"+0900",n:"+09"}}],["Etc/GMT0",{s:{f:"+0000",n:"GMT"}}],["Etc/Greenwich",{s:{f:"+0000",n:"GMT"}}],["Etc/UCT",{s:{f:"+0000",n:"UCT"}}],["Etc/Universal",{s:{f:"+0000",n:"UTC"}}],["Etc/UTC",{s:{f:"+0000",n:"UTC"}}],["Etc/Zulu",{s:{f:"+0000",n:"UTC"}}],["Europe/Amsterdam",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Andorra",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Astrakhan",{s:{f:"+0400",n:"+04"}}],["Europe/Athens",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Belgrade",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Berlin",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bratislava",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Brussels",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bucharest",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Budapest",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Busingen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Chisinau",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Copenhagen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Dublin",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"IST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Gibraltar",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Guernsey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Helsinki",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Isle_of_Man",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Istanbul",{s:{f:"+0300",n:"+03"}}],["Europe/Jersey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Kaliningrad",{s:{f:"+0200",n:"EET"}}],["Europe/Kiev",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Kirov",{s:{f:"+0300",n:"+03"}}],["Europe/Lisbon",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Ljubljana",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/London",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Luxembourg",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Madrid",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Malta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Mariehamn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Minsk",{s:{f:"+0300",n:"+03"}}],["Europe/Monaco",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Moscow",{s:{f:"+0300",n:"MSK"}}],["Europe/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Oslo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Paris",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Podgorica",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Prague",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Riga",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Rome",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Samara",{s:{f:"+0400",n:"+04"}}],["Europe/San_Marino",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sarajevo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Saratov",{s:{f:"+0400",n:"+04"}}],["Europe/Simferopol",{s:{f:"+0300",n:"MSK"}}],["Europe/Skopje",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sofia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Stockholm",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Tallinn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Tirane",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Ulyanovsk",{s:{f:"+0400",n:"+04"}}],["Europe/Uzhgorod",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Vaduz",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vatican",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vienna",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vilnius",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Volgograd",{s:{f:"+0400",n:"+04"}}],["Europe/Warsaw",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zagreb",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zaporozhye",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Zurich",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Indian/Antananarivo",{s:{f:"+0300",n:"EAT"}}],["Indian/Chagos",{s:{f:"+0600",n:"+06"}}],["Indian/Christmas",{s:{f:"+0700",n:"+07"}}],["Indian/Cocos",{s:{f:"+0630",n:"+0630"}}],["Indian/Comoro",{s:{f:"+0300",n:"EAT"}}],["Indian/Kerguelen",{s:{f:"+0500",n:"+05"}}],["Indian/Mahe",{s:{f:"+0400",n:"+04"}}],["Indian/Maldives",{s:{f:"+0500",n:"+05"}}],["Indian/Mauritius",{s:{f:"+0400",n:"+04"}}],["Indian/Mayotte",{s:{f:"+0300",n:"EAT"}}],["Indian/Reunion",{s:{f:"+0400",n:"+04"}}],["Pacific/Apia",{s:{f:"+1400",t:"+1300",n:"+13",s:"19700405T040000",r:{m:4,d:"1SU"}},d:{f:"+1300",t:"+1400",n:"+14",s:"19700927T030000",r:{m:9,d:"-1SU"}}}],["Pacific/Auckland",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Pacific/Bougainville",{s:{f:"+1100",n:"+11"}}],["Pacific/Chatham",{s:{f:"+1345",t:"+1245",n:"+1245",s:"19700405T034500",r:{m:4,d:"1SU"}},d:{f:"+1245",t:"+1345",n:"+1345",s:"19700927T024500",r:{m:9,d:"-1SU"}}}],["Pacific/Chuuk",{s:{f:"+1000",n:"+10"}}],["Pacific/Easter",{s:{f:"-0500",t:"-0600",n:"-06",s:"19700404T220000",r:{m:4,d:"1SA"}},d:{f:"-0600",t:"-0500",n:"-05",s:"19700905T220000",r:{m:9,d:"1SA"}}}],["Pacific/Efate",{s:{f:"+1100",n:"+11"}}],["Pacific/Enderbury",{s:{f:"+1300",n:"+13"}}],["Pacific/Fakaofo",{s:{f:"+1300",n:"+13"}}],["Pacific/Fiji",{s:{f:"+1300",t:"+1200",n:"+12",s:"19700118T030000",r:{m:1,d:"-2SU"}},d:{f:"+1200",t:"+1300",n:"+13",s:"19701101T020000",r:{m:11,d:"1SU"}}}],["Pacific/Funafuti",{s:{f:"+1200",n:"+12"}}],["Pacific/Galapagos",{s:{f:"-0600",n:"-06"}}],["Pacific/Gambier",{s:{f:"-0900",n:"-09"}}],["Pacific/Guadalcanal",{s:{f:"+1100",n:"+11"}}],["Pacific/Guam",{s:{f:"+1000",n:"ChST"}}],["Pacific/Honolulu",{s:{f:"-1000",n:"HST"}}],["Pacific/Kiritimati",{s:{f:"+1400",n:"+14"}}],["Pacific/Kosrae",{s:{f:"+1100",n:"+11"}}],["Pacific/Kwajalein",{s:{f:"+1200",n:"+12"}}],["Pacific/Majuro",{s:{f:"+1200",n:"+12"}}],["Pacific/Marquesas",{s:{f:"-0930",n:"-0930"}}],["Pacific/Midway",{s:{f:"-1100",n:"SST"}}],["Pacific/Nauru",{s:{f:"+1200",n:"+12"}}],["Pacific/Niue",{s:{f:"-1100",n:"-11"}}],["Pacific/Norfolk",{s:{f:"+1100",n:"+11"}}],["Pacific/Noumea",{s:{f:"+1100",n:"+11"}}],["Pacific/Pago_Pago",{s:{f:"-1100",n:"SST"}}],["Pacific/Palau",{s:{f:"+0900",n:"+09"}}],["Pacific/Pitcairn",{s:{f:"-0800",n:"-08"}}],["Pacific/Pohnpei",{s:{f:"+1100",n:"+11"}}],["Pacific/Port_Moresby",{s:{f:"+1000",n:"+10"}}],["Pacific/Rarotonga",{s:{f:"-1000",n:"-10"}}],["Pacific/Saipan",{s:{f:"+1000",n:"ChST"}}],["Pacific/Tahiti",{s:{f:"-1000",n:"-10"}}],["Pacific/Tarawa",{s:{f:"+1200",n:"+12"}}],["Pacific/Tongatapu",{s:{f:"+1300",n:"+13"}}],["Pacific/Wake",{s:{f:"+1200",n:"+12"}}],["Pacific/Wallis",{s:{f:"+1200",n:"+12"}}]])),ct}var $t;function $e(){if($t)return at;$t=1,Object.defineProperty(at,"__esModule",{value:!0}),at.getZoneString=at.getZoneLines=void 0;const r=Je();function t(a){const{n:i,f:o,t:n,r:l,s:u}=a;return[`TZNAME:${i}`,`TZOFFSETFROM:${o}`,`TZOFFSETTO:${n||o}`,`DTSTART:${u||r.defaultStart}`,...l?[`RRULE:FREQ=${l.f||"YEARLY"};BYMONTH=${l.m};BYDAY=${l.d}`]:[]]}function e(a,i=!0){const o=r.zonesMap.get(a);if(o){const{s:n,d:l}=o;return[...i?["BEGIN:VTIMEZONE"]:[],`TZID:${a}`,"BEGIN:STANDARD",...t(n),"END:STANDARD",...l?["BEGIN:DAYLIGHT",...t(l),"END:DAYLIGHT"]:[],...i?["END:VTIMEZONE"]:[]]}}at.getZoneLines=e;function s(a,i=!0){return e(a,i)?.join(`\r +import{r as G,o as B,f as H,g as Q,k as v,y as dt,t as et,w as st,j as vt,L as Ae,F as Ft,B as Gt,c as Pt,h as de,b as ce,l as St,S as ge,u as _,e as De}from"./Web-DYqXJUev.chunk.mjs";import{_ as he,l as jt,g as _e}from"./public-C1mLBHT3.chunk.mjs";import{t as D}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as Kt}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{d as Ee,c as mt,a as Lt,g as be,h as Ue,o as Ce,e as Ye}from"./index-Cp0kcsps.chunk.mjs";import{c as ft}from"./index-CkGt55pS.chunk.mjs";import{d as zt,a as Ot}from"./index-mH69OG7L.chunk.mjs";import{S as ve}from"./ShareType-suoNfd7y.chunk.mjs";import{N as Ht}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as me}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import{N as Oe,a as we}from"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import{_ as Me}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{l as W}from"./logger-DOK4E6xT.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{n as Ne}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{D as xe}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as Ie}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{P as ke}from"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{z as Be,_ as Pe}from"./index-D5zm-WFT.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";function qt(r){const t=r.getFullYear(),e=(r.getMonth()+1).toString().padStart(2,"0"),s=r.getDate().toString().padStart(2,"0");return`${t}-${e}-${s}`}const Le="_absenceForm_1i2bj_2",ze="_absenceForm__pickerContainer_1i2bj_8",Ve="_absenceForm__picker_1i2bj_8",je="_absenceForm__longMessage_1i2bj_22",He="_absenceForm__longMessageContainer_1i2bj_26",Re="_absenceForm__actions_1i2bj_33",We={absenceForm:Le,absenceForm__pickerContainer:ze,absenceForm__picker:Ve,absenceForm__longMessage:je,absenceForm__longMessageContainer:He,absenceForm__actions:Re};function Zt(r){const t=r.getTimezoneOffset()*60*1e3;return new Date(r.getTime()+t)}const Fe={name:"AbsenceForm",components:{NcButton:Ht,NcTextField:Me,NcTextArea:we,NcDateTimePickerNative:me,NcSelectUsers:Oe},setup(){return{t:D}},data(){const{firstDay:r,lastDay:t,status:e,message:s,replacementUserId:a,replacementUserDisplayName:i}=jt("dav","absence",{}),o=r?new Date(r):new Date,n=Zt(o),l=t?Zt(new Date(t)):null;return{loading:!1,status:e??"",message:s??"",firstDay:n,lastDay:l,replacementUserId:a,replacementUser:a?{user:a,displayName:i}:null,searchLoading:!1,options:[]}},computed:{valid(){const r=new Date(this.firstDay?.getTime()),t=new Date(this.lastDay?.getTime());return r?.setHours(0,0,0,0),t?.setHours(0,0,0,0),!!this.firstDay&&!!this.lastDay&&!!this.status&&!!this.message&&t>=r}},methods:{resetForm(){this.status="",this.message="",this.firstDay=new Date,this.lastDay=null},formatForMultiselect(r){return{user:r.uuid||r.value.shareWith,displayName:r.name||r.label,subtitle:r.dsc|""}},async asyncFind(r){this.searchLoading=!0,await this.debounceGetSuggestions(r.trim())},async getSuggestions(r){const t=[ve.User];let e;try{e=await ft.get(mt("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"file",search:r,shareType:t}})}catch(d){W.error("Error fetching suggestions",{error:d});return}const s=e.data.ocs.data,a=e.data.ocs.data.exact;s.exact=[];const i=a.users,o=s.users;W.info("AbsenceForm raw suggestions",{rawExactSuggestions:i,rawSuggestions:o});const n=i.map(d=>this.formatForMultiselect(d)),l=o.map(d=>this.formatForMultiselect(d)),u=n.concat(l),c=u.reduce((d,m)=>(m.displayName&&(d[m.displayName]||(d[m.displayName]=0),d[m.displayName]++),d),{});this.options=u.map(d=>c[d.displayName]>1&&!d.desc?{...d,desc:d.shareWithDisplayNameUnique}:d),this.searchLoading=!1,W.info("AbsenseForm suggestions",{options:this.options})},debounceGetSuggestions:Ee(function(...r){this.getSuggestions(...r)},300),async saveForm(){if(this.valid){this.loading=!0;try{await ft.post(mt("/apps/dav/api/v1/outOfOffice/{userId}",{userId:Lt().uid}),{firstDay:qt(this.firstDay),lastDay:qt(this.lastDay),status:this.status,message:this.message,replacementUserId:this.replacementUser?.user??null}),zt(D("dav","Absence saved"))}catch(r){Ot(D("dav","Failed to save your absence settings")),W.error("Could not save absence",{error:r})}finally{this.loading=!1}}},async clearAbsence(){this.loading=!0;try{await ft.delete(mt("/apps/dav/api/v1/outOfOffice/{userId}",{userId:Lt().uid})),this.resetForm(),zt(D("dav","Absence cleared"))}catch(r){Ot(D("dav","Failed to clear your absence settings")),W.error("Could not clear absence",{error:r})}finally{this.loading=!1}}}},Ge={for:"replacement-search-input"};function Ke(r,t,e,s,a,i){const o=G("NcDateTimePickerNative"),n=G("NcSelectUsers"),l=G("NcTextField"),u=G("NcTextArea"),c=G("NcButton");return B(),H("form",{class:dt(r.$style.absenceForm),onSubmit:t[5]||(t[5]=Ae((...d)=>i.saveForm&&i.saveForm(...d),["prevent"]))},[Q("div",{class:dt(r.$style.absenceForm__pickerContainer)},[v(o,{id:"absence-first-day",modelValue:a.firstDay,"onUpdate:modelValue":t[0]||(t[0]=d=>a.firstDay=d),class:dt(r.$style.absenceForm__picker),label:s.t("dav","First day"),required:""},null,8,["modelValue","class","label"]),v(o,{id:"absence-last-day",modelValue:a.lastDay,"onUpdate:modelValue":t[1]||(t[1]=d=>a.lastDay=d),class:dt(r.$style.absenceForm__picker),label:s.t("dav","Last day (inclusive)"),required:""},null,8,["modelValue","class","label"])],2),Q("label",Ge,et(s.t("dav","Out of office replacement (optional)")),1),v(n,{modelValue:a.replacementUser,"onUpdate:modelValue":t[2]||(t[2]=d=>a.replacementUser=d),inputId:"replacement-search-input",loading:a.searchLoading,placeholder:s.t("dav","Name of the replacement"),options:a.options,onSearch:i.asyncFind},null,8,["modelValue","loading","placeholder","options","onSearch"]),v(l,{modelValue:a.status,"onUpdate:modelValue":t[3]||(t[3]=d=>a.status=d),label:s.t("dav","Short absence status"),required:!0},null,8,["modelValue","label"]),Q("div",{class:dt(r.$style.absenceForm__longMessageContainer)},[v(u,{modelValue:a.message,"onUpdate:modelValue":t[4]||(t[4]=d=>a.message=d),inputClass:r.$style.absenceForm__longMessage,label:s.t("dav","Long absence Message"),required:"",resize:"none",rows:"6"},null,8,["modelValue","inputClass","label"])],2),Q("div",{class:dt(r.$style.absenceForm__actions)},[v(c,{disabled:a.loading||!i.valid,variant:"primary",type:"submit"},{default:st(()=>[vt(et(s.t("dav","Save")),1)]),_:1},8,["disabled"]),v(c,{disabled:a.loading||!i.valid,variant:"error",onClick:i.clearAbsence},{default:st(()=>[vt(et(s.t("dav","Disable absence")),1)]),_:1},8,["disabled","onClick"])],2)],34)}const qe={$style:We},Ze=he(Fe,[["render",Ke],["__cssModules",qe]]);var at={},ct={},Jt;function Je(){return Jt||(Jt=1,Object.defineProperty(ct,"__esModule",{value:!0}),ct.zonesMap=ct.defaultStart=void 0,ct.defaultStart="19700101T000000",ct.zonesMap=new Map([["Africa/Abidjan",{s:{f:"+0000",n:"GMT"}}],["Africa/Accra",{s:{f:"+0000",n:"GMT"}}],["Africa/Addis_Ababa",{s:{f:"+0300",n:"EAT"}}],["Africa/Algiers",{s:{f:"+0100",n:"CET"}}],["Africa/Asmara",{s:{f:"+0300",n:"EAT"}}],["Africa/Bamako",{s:{f:"+0000",n:"GMT"}}],["Africa/Bangui",{s:{f:"+0100",n:"WAT"}}],["Africa/Banjul",{s:{f:"+0000",n:"GMT"}}],["Africa/Bissau",{s:{f:"+0000",n:"GMT"}}],["Africa/Blantyre",{s:{f:"+0200",n:"CAT"}}],["Africa/Brazzaville",{s:{f:"+0100",n:"WAT"}}],["Africa/Bujumbura",{s:{f:"+0200",n:"CAT"}}],["Africa/Cairo",{s:{f:"+0200",n:"EET"}}],["Africa/Casablanca",{s:{f:"+0100",n:"+01"}}],["Africa/Ceuta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Africa/Conakry",{s:{f:"+0000",n:"GMT"}}],["Africa/Dakar",{s:{f:"+0000",n:"GMT"}}],["Africa/Dar_es_Salaam",{s:{f:"+0300",n:"EAT"}}],["Africa/Djibouti",{s:{f:"+0300",n:"EAT"}}],["Africa/Douala",{s:{f:"+0100",n:"WAT"}}],["Africa/El_Aaiun",{s:{f:"+0100",n:"+01"}}],["Africa/Freetown",{s:{f:"+0000",n:"GMT"}}],["Africa/Gaborone",{s:{f:"+0200",n:"CAT"}}],["Africa/Harare",{s:{f:"+0200",n:"CAT"}}],["Africa/Johannesburg",{s:{f:"+0200",n:"SAST"}}],["Africa/Juba",{s:{f:"+0300",n:"EAT"}}],["Africa/Kampala",{s:{f:"+0300",n:"EAT"}}],["Africa/Khartoum",{s:{f:"+0200",n:"CAT"}}],["Africa/Kigali",{s:{f:"+0200",n:"CAT"}}],["Africa/Kinshasa",{s:{f:"+0100",n:"WAT"}}],["Africa/Lagos",{s:{f:"+0100",n:"WAT"}}],["Africa/Libreville",{s:{f:"+0100",n:"WAT"}}],["Africa/Lome",{s:{f:"+0000",n:"GMT"}}],["Africa/Luanda",{s:{f:"+0100",n:"WAT"}}],["Africa/Lubumbashi",{s:{f:"+0200",n:"CAT"}}],["Africa/Lusaka",{s:{f:"+0200",n:"CAT"}}],["Africa/Malabo",{s:{f:"+0100",n:"WAT"}}],["Africa/Maputo",{s:{f:"+0200",n:"CAT"}}],["Africa/Maseru",{s:{f:"+0200",n:"SAST"}}],["Africa/Mbabane",{s:{f:"+0200",n:"SAST"}}],["Africa/Mogadishu",{s:{f:"+0300",n:"EAT"}}],["Africa/Monrovia",{s:{f:"+0000",n:"GMT"}}],["Africa/Nairobi",{s:{f:"+0300",n:"EAT"}}],["Africa/Ndjamena",{s:{f:"+0100",n:"WAT"}}],["Africa/Niamey",{s:{f:"+0100",n:"WAT"}}],["Africa/Nouakchott",{s:{f:"+0000",n:"GMT"}}],["Africa/Ouagadougou",{s:{f:"+0000",n:"GMT"}}],["Africa/Porto-Novo",{s:{f:"+0100",n:"WAT"}}],["Africa/Sao_Tome",{s:{f:"+0100",n:"WAT"}}],["Africa/Tripoli",{s:{f:"+0200",n:"EET"}}],["Africa/Tunis",{s:{f:"+0100",n:"CET"}}],["Africa/Windhoek",{s:{f:"+0200",n:"CAT"}}],["America/Adak",{s:{f:"-0900",t:"-1000",n:"HST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-1000",t:"-0900",n:"HDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anchorage",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anguilla",{s:{f:"-0400",n:"AST"}}],["America/Antigua",{s:{f:"-0400",n:"AST"}}],["America/Araguaina",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Buenos_Aires",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Catamarca",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Cordoba",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Jujuy",{s:{f:"-0300",n:"-03"}}],["America/Argentina/La_Rioja",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Mendoza",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Rio_Gallegos",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Salta",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Juan",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Luis",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Tucuman",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Ushuaia",{s:{f:"-0300",n:"-03"}}],["America/Aruba",{s:{f:"-0400",n:"AST"}}],["America/Asuncion",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700322T000000",r:{m:3,d:"4SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701004T000000",r:{m:10,d:"1SU"}}}],["America/Atikokan",{s:{f:"-0500",n:"EST"}}],["America/Bahia_Banderas",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Bahia",{s:{f:"-0300",n:"-03"}}],["America/Barbados",{s:{f:"-0400",n:"AST"}}],["America/Belem",{s:{f:"-0300",n:"-03"}}],["America/Belize",{s:{f:"-0600",n:"CST"}}],["America/Blanc-Sablon",{s:{f:"-0400",n:"AST"}}],["America/Boa_Vista",{s:{f:"-0400",n:"-04"}}],["America/Bogota",{s:{f:"-0500",n:"-05"}}],["America/Boise",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Cambridge_Bay",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Campo_Grande",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Cancun",{s:{f:"-0500",n:"EST"}}],["America/Caracas",{s:{f:"-0400",n:"-04"}}],["America/Cayenne",{s:{f:"-0300",n:"-03"}}],["America/Cayman",{s:{f:"-0500",n:"EST"}}],["America/Chicago",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Chihuahua",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Costa_Rica",{s:{f:"-0600",n:"CST"}}],["America/Creston",{s:{f:"-0700",n:"MST"}}],["America/Cuiaba",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Curacao",{s:{f:"-0400",n:"AST"}}],["America/Danmarkshavn",{s:{f:"+0000",n:"GMT"}}],["America/Dawson_Creek",{s:{f:"-0700",n:"MST"}}],["America/Dawson",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Denver",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Detroit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Dominica",{s:{f:"-0400",n:"AST"}}],["America/Edmonton",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Eirunepe",{s:{f:"-0500",n:"-05"}}],["America/El_Salvador",{s:{f:"-0600",n:"CST"}}],["America/Fort_Nelson",{s:{f:"-0700",n:"MST"}}],["America/Fortaleza",{s:{f:"-0300",n:"-03"}}],["America/Glace_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Godthab",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701024T230000",r:{m:10,d:"-1SA"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700328T220000",r:{m:3,d:"-1SA"}}}],["America/Goose_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grand_Turk",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grenada",{s:{f:"-0400",n:"AST"}}],["America/Guadeloupe",{s:{f:"-0400",n:"AST"}}],["America/Guatemala",{s:{f:"-0600",n:"CST"}}],["America/Guayaquil",{s:{f:"-0500",n:"-05"}}],["America/Guyana",{s:{f:"-0400",n:"-04"}}],["America/Halifax",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Havana",{s:{f:"-0400",t:"-0500",n:"CST",s:"19701101T010000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"CDT",s:"19700308T000000",r:{m:3,d:"2SU"}}}],["America/Hermosillo",{s:{f:"-0700",n:"MST"}}],["America/Indiana/Indianapolis",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Knox",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Marengo",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Petersburg",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Tell_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vevay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vincennes",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Winamac",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Inuvik",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Iqaluit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Jamaica",{s:{f:"-0500",n:"EST"}}],["America/Juneau",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Louisville",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Monticello",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kralendijk",{s:{f:"-0400",n:"AST"}}],["America/La_Paz",{s:{f:"-0400",n:"-04"}}],["America/Lima",{s:{f:"-0500",n:"-05"}}],["America/Los_Angeles",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Lower_Princes",{s:{f:"-0400",n:"AST"}}],["America/Maceio",{s:{f:"-0300",n:"-03"}}],["America/Managua",{s:{f:"-0600",n:"CST"}}],["America/Manaus",{s:{f:"-0400",n:"-04"}}],["America/Marigot",{s:{f:"-0400",n:"AST"}}],["America/Martinique",{s:{f:"-0400",n:"AST"}}],["America/Matamoros",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mazatlan",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Menominee",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Merida",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Metlakatla",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mexico_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Miquelon",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Moncton",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Monterrey",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Montevideo",{s:{f:"-0300",n:"-03"}}],["America/Montserrat",{s:{f:"-0400",n:"AST"}}],["America/Nassau",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/New_York",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nipigon",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nome",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Noronha",{s:{f:"-0200",n:"-02"}}],["America/North_Dakota/Beulah",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/Center",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/New_Salem",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Ojinaga",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Panama",{s:{f:"-0500",n:"EST"}}],["America/Pangnirtung",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Paramaribo",{s:{f:"-0300",n:"-03"}}],["America/Phoenix",{s:{f:"-0700",n:"MST"}}],["America/Port_of_Spain",{s:{f:"-0400",n:"AST"}}],["America/Port-au-Prince",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Porto_Velho",{s:{f:"-0400",n:"-04"}}],["America/Puerto_Rico",{s:{f:"-0400",n:"AST"}}],["America/Punta_Arenas",{s:{f:"-0300",n:"-03"}}],["America/Rainy_River",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rankin_Inlet",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Recife",{s:{f:"-0300",n:"-03"}}],["America/Regina",{s:{f:"-0600",n:"CST"}}],["America/Resolute",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rio_Branco",{s:{f:"-0500",n:"-05"}}],["America/Santarem",{s:{f:"-0300",n:"-03"}}],["America/Santiago",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700405T000000",r:{m:4,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19700906T000000",r:{m:9,d:"1SU"}}}],["America/Santo_Domingo",{s:{f:"-0400",n:"AST"}}],["America/Sao_Paulo",{s:{f:"-0300",n:"-03",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Scoresbysund",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["America/Sitka",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Barthelemy",{s:{f:"-0400",n:"AST"}}],["America/St_Johns",{s:{f:"-0230",t:"-0330",n:"NST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0330",t:"-0230",n:"NDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Kitts",{s:{f:"-0400",n:"AST"}}],["America/St_Lucia",{s:{f:"-0400",n:"AST"}}],["America/St_Thomas",{s:{f:"-0400",n:"AST"}}],["America/St_Vincent",{s:{f:"-0400",n:"AST"}}],["America/Swift_Current",{s:{f:"-0600",n:"CST"}}],["America/Tegucigalpa",{s:{f:"-0600",n:"CST"}}],["America/Thule",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Thunder_Bay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tijuana",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Toronto",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tortola",{s:{f:"-0400",n:"AST"}}],["America/Vancouver",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Whitehorse",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Winnipeg",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yakutat",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yellowknife",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Antarctica/Casey",{s:{f:"+0800",n:"+08"}}],["Antarctica/Davis",{s:{f:"+0700",n:"+07"}}],["Antarctica/DumontDUrville",{s:{f:"+1000",n:"+10"}}],["Antarctica/Macquarie",{s:{f:"+1100",n:"+11"}}],["Antarctica/Mawson",{s:{f:"+0500",n:"+05"}}],["Antarctica/McMurdo",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Antarctica/Palmer",{s:{f:"-0300",n:"-03"}}],["Antarctica/Rothera",{s:{f:"-0300",n:"-03"}}],["Antarctica/Syowa",{s:{f:"+0300",n:"+03"}}],["Antarctica/Troll",{s:{f:"+0200",t:"+0000",n:"+00",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0200",n:"+02",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Antarctica/Vostok",{s:{f:"+0600",n:"+06"}}],["Arctic/Longyearbyen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Asia/Aden",{s:{f:"+0300",n:"+03"}}],["Asia/Almaty",{s:{f:"+0600",n:"+06"}}],["Asia/Amman",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T010000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700326T235959",r:{m:3,d:"-1TH"}}}],["Asia/Anadyr",{s:{f:"+1200",n:"+12"}}],["Asia/Aqtau",{s:{f:"+0500",n:"+05"}}],["Asia/Aqtobe",{s:{f:"+0500",n:"+05"}}],["Asia/Ashgabat",{s:{f:"+0500",n:"+05"}}],["Asia/Atyrau",{s:{f:"+0500",n:"+05"}}],["Asia/Baghdad",{s:{f:"+0300",n:"+03"}}],["Asia/Bahrain",{s:{f:"+0300",n:"+03"}}],["Asia/Baku",{s:{f:"+0400",n:"+04"}}],["Asia/Bangkok",{s:{f:"+0700",n:"+07"}}],["Asia/Barnaul",{s:{f:"+0700",n:"+07"}}],["Asia/Beirut",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T000000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Asia/Bishkek",{s:{f:"+0600",n:"+06"}}],["Asia/Brunei",{s:{f:"+0800",n:"+08"}}],["Asia/Chita",{s:{f:"+0900",n:"+09"}}],["Asia/Choibalsan",{s:{f:"+0800",n:"+08"}}],["Asia/Colombo",{s:{f:"+0530",n:"+0530"}}],["Asia/Damascus",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T000000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700327T000000",r:{m:3,d:"-1FR"}}}],["Asia/Dhaka",{s:{f:"+0600",n:"+06"}}],["Asia/Dili",{s:{f:"+0900",n:"+09"}}],["Asia/Dubai",{s:{f:"+0400",n:"+04"}}],["Asia/Dushanbe",{s:{f:"+0500",n:"+05"}}],["Asia/Famagusta",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Gaza",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Hebron",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Ho_Chi_Minh",{s:{f:"+0700",n:"+07"}}],["Asia/Hong_Kong",{s:{f:"+0800",n:"HKT"}}],["Asia/Hovd",{s:{f:"+0700",n:"+07"}}],["Asia/Irkutsk",{s:{f:"+0800",n:"+08"}}],["Asia/Istanbul",{s:{f:"+0300",n:"+03"}}],["Asia/Jakarta",{s:{f:"+0700",n:"WIB"}}],["Asia/Jayapura",{s:{f:"+0900",n:"WIT"}}],["Asia/Jerusalem",{s:{f:"+0300",t:"+0200",n:"IST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"IDT",s:"19700327T020000",r:{m:3,d:"-1FR"}}}],["Asia/Kabul",{s:{f:"+0430",n:"+0430"}}],["Asia/Kamchatka",{s:{f:"+1200",n:"+12"}}],["Asia/Karachi",{s:{f:"+0500",n:"PKT"}}],["Asia/Kathmandu",{s:{f:"+0545",n:"+0545"}}],["Asia/Khandyga",{s:{f:"+0900",n:"+09"}}],["Asia/Kolkata",{s:{f:"+0530",n:"IST"}}],["Asia/Krasnoyarsk",{s:{f:"+0700",n:"+07"}}],["Asia/Kuala_Lumpur",{s:{f:"+0800",n:"+08"}}],["Asia/Kuching",{s:{f:"+0800",n:"+08"}}],["Asia/Kuwait",{s:{f:"+0300",n:"+03"}}],["Asia/Macau",{s:{f:"+0800",n:"CST"}}],["Asia/Magadan",{s:{f:"+1100",n:"+11"}}],["Asia/Makassar",{s:{f:"+0800",n:"WITA"}}],["Asia/Manila",{s:{f:"+0800",n:"PST"}}],["Asia/Muscat",{s:{f:"+0400",n:"+04"}}],["Asia/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Novokuznetsk",{s:{f:"+0700",n:"+07"}}],["Asia/Novosibirsk",{s:{f:"+0700",n:"+07"}}],["Asia/Omsk",{s:{f:"+0600",n:"+06"}}],["Asia/Oral",{s:{f:"+0500",n:"+05"}}],["Asia/Phnom_Penh",{s:{f:"+0700",n:"+07"}}],["Asia/Pontianak",{s:{f:"+0700",n:"WIB"}}],["Asia/Pyongyang",{s:{f:"+0900",n:"KST"}}],["Asia/Qatar",{s:{f:"+0300",n:"+03"}}],["Asia/Qyzylorda",{s:{f:"+0600",n:"+06"}}],["Asia/Riyadh",{s:{f:"+0300",n:"+03"}}],["Asia/Sakhalin",{s:{f:"+1100",n:"+11"}}],["Asia/Samarkand",{s:{f:"+0500",n:"+05"}}],["Asia/Seoul",{s:{f:"+0900",n:"KST"}}],["Asia/Shanghai",{s:{f:"+0800",n:"CST"}}],["Asia/Singapore",{s:{f:"+0800",n:"+08"}}],["Asia/Srednekolymsk",{s:{f:"+1100",n:"+11"}}],["Asia/Taipei",{s:{f:"+0800",n:"CST"}}],["Asia/Tashkent",{s:{f:"+0500",n:"+05"}}],["Asia/Tbilisi",{s:{f:"+0400",n:"+04"}}],["Asia/Tehran",{s:{f:"+0430",t:"+0330",n:"+0330",s:"19700921T000000",r:{m:9,d:"3SU"}},d:{f:"+0330",t:"+0430",n:"+0430",s:"19700321T000000",r:{m:3,d:"3SU"}}}],["Asia/Thimphu",{s:{f:"+0600",n:"+06"}}],["Asia/Tokyo",{s:{f:"+0900",n:"JST"}}],["Asia/Tomsk",{s:{f:"+0700",n:"+07"}}],["Asia/Ulaanbaatar",{s:{f:"+0800",n:"+08"}}],["Asia/Urumqi",{s:{f:"+0600",n:"+06"}}],["Asia/Ust-Nera",{s:{f:"+1000",n:"+10"}}],["Asia/Vientiane",{s:{f:"+0700",n:"+07"}}],["Asia/Vladivostok",{s:{f:"+1000",n:"+10"}}],["Asia/Yakutsk",{s:{f:"+0900",n:"+09"}}],["Asia/Yangon",{s:{f:"+0630",n:"+0630"}}],["Asia/Yekaterinburg",{s:{f:"+0500",n:"+05"}}],["Asia/Yerevan",{s:{f:"+0400",n:"+04"}}],["Atlantic/Azores",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Atlantic/Bermuda",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Atlantic/Canary",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Cape_Verde",{s:{f:"-0100",n:"-01"}}],["Atlantic/Faroe",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Madeira",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Reykjavik",{s:{f:"+0000",n:"GMT"}}],["Atlantic/South_Georgia",{s:{f:"-0200",n:"-02"}}],["Atlantic/St_Helena",{s:{f:"+0000",n:"GMT"}}],["Atlantic/Stanley",{s:{f:"-0300",n:"-03"}}],["Australia/Adelaide",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Brisbane",{s:{f:"+1000",n:"AEST"}}],["Australia/Broken_Hill",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Currie",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Darwin",{s:{f:"+0930",n:"ACST"}}],["Australia/Eucla",{s:{f:"+0845",n:"+0845"}}],["Australia/Hobart",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Lindeman",{s:{f:"+1000",n:"AEST"}}],["Australia/Lord_Howe",{s:{f:"+1100",t:"+1030",n:"+1030",s:"19700405T020000",r:{m:4,d:"1SU"}},d:{f:"+1030",t:"+1100",n:"+11",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Melbourne",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Perth",{s:{f:"+0800",n:"AWST"}}],["Australia/Sydney",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Etc/GMT-0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT-1",{s:{f:"-0100",n:"-01"}}],["Etc/GMT-10",{s:{f:"-1000",n:"-10"}}],["Etc/GMT-11",{s:{f:"-1100",n:"-11"}}],["Etc/GMT-12",{s:{f:"-1200",n:"-12"}}],["Etc/GMT-2",{s:{f:"-0200",n:"-02"}}],["Etc/GMT-3",{s:{f:"-0300",n:"-03"}}],["Etc/GMT-4",{s:{f:"-0400",n:"-04"}}],["Etc/GMT-5",{s:{f:"-0500",n:"-05"}}],["Etc/GMT-6",{s:{f:"-0600",n:"-06"}}],["Etc/GMT-7",{s:{f:"-0700",n:"-07"}}],["Etc/GMT-8",{s:{f:"-0800",n:"-08"}}],["Etc/GMT-9",{s:{f:"-0900",n:"-09"}}],["Etc/GMT",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+1",{s:{f:"+0100",n:"+01"}}],["Etc/GMT+10",{s:{f:"+1000",n:"+10"}}],["Etc/GMT+11",{s:{f:"+1100",n:"+11"}}],["Etc/GMT+12",{s:{f:"+1200",n:"+12"}}],["Etc/GMT+13",{s:{f:"+1300",n:"+13"}}],["Etc/GMT+14",{s:{f:"+1400",n:"+14"}}],["Etc/GMT+2",{s:{f:"+0200",n:"+02"}}],["Etc/GMT+3",{s:{f:"+0300",n:"+03"}}],["Etc/GMT+4",{s:{f:"+0400",n:"+04"}}],["Etc/GMT+5",{s:{f:"+0500",n:"+05"}}],["Etc/GMT+6",{s:{f:"+0600",n:"+06"}}],["Etc/GMT+7",{s:{f:"+0700",n:"+07"}}],["Etc/GMT+8",{s:{f:"+0800",n:"+08"}}],["Etc/GMT+9",{s:{f:"+0900",n:"+09"}}],["Etc/GMT0",{s:{f:"+0000",n:"GMT"}}],["Etc/Greenwich",{s:{f:"+0000",n:"GMT"}}],["Etc/UCT",{s:{f:"+0000",n:"UCT"}}],["Etc/Universal",{s:{f:"+0000",n:"UTC"}}],["Etc/UTC",{s:{f:"+0000",n:"UTC"}}],["Etc/Zulu",{s:{f:"+0000",n:"UTC"}}],["Europe/Amsterdam",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Andorra",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Astrakhan",{s:{f:"+0400",n:"+04"}}],["Europe/Athens",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Belgrade",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Berlin",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bratislava",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Brussels",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bucharest",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Budapest",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Busingen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Chisinau",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Copenhagen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Dublin",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"IST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Gibraltar",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Guernsey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Helsinki",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Isle_of_Man",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Istanbul",{s:{f:"+0300",n:"+03"}}],["Europe/Jersey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Kaliningrad",{s:{f:"+0200",n:"EET"}}],["Europe/Kiev",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Kirov",{s:{f:"+0300",n:"+03"}}],["Europe/Lisbon",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Ljubljana",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/London",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Luxembourg",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Madrid",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Malta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Mariehamn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Minsk",{s:{f:"+0300",n:"+03"}}],["Europe/Monaco",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Moscow",{s:{f:"+0300",n:"MSK"}}],["Europe/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Oslo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Paris",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Podgorica",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Prague",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Riga",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Rome",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Samara",{s:{f:"+0400",n:"+04"}}],["Europe/San_Marino",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sarajevo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Saratov",{s:{f:"+0400",n:"+04"}}],["Europe/Simferopol",{s:{f:"+0300",n:"MSK"}}],["Europe/Skopje",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sofia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Stockholm",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Tallinn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Tirane",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Ulyanovsk",{s:{f:"+0400",n:"+04"}}],["Europe/Uzhgorod",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Vaduz",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vatican",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vienna",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vilnius",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Volgograd",{s:{f:"+0400",n:"+04"}}],["Europe/Warsaw",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zagreb",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zaporozhye",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Zurich",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Indian/Antananarivo",{s:{f:"+0300",n:"EAT"}}],["Indian/Chagos",{s:{f:"+0600",n:"+06"}}],["Indian/Christmas",{s:{f:"+0700",n:"+07"}}],["Indian/Cocos",{s:{f:"+0630",n:"+0630"}}],["Indian/Comoro",{s:{f:"+0300",n:"EAT"}}],["Indian/Kerguelen",{s:{f:"+0500",n:"+05"}}],["Indian/Mahe",{s:{f:"+0400",n:"+04"}}],["Indian/Maldives",{s:{f:"+0500",n:"+05"}}],["Indian/Mauritius",{s:{f:"+0400",n:"+04"}}],["Indian/Mayotte",{s:{f:"+0300",n:"EAT"}}],["Indian/Reunion",{s:{f:"+0400",n:"+04"}}],["Pacific/Apia",{s:{f:"+1400",t:"+1300",n:"+13",s:"19700405T040000",r:{m:4,d:"1SU"}},d:{f:"+1300",t:"+1400",n:"+14",s:"19700927T030000",r:{m:9,d:"-1SU"}}}],["Pacific/Auckland",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Pacific/Bougainville",{s:{f:"+1100",n:"+11"}}],["Pacific/Chatham",{s:{f:"+1345",t:"+1245",n:"+1245",s:"19700405T034500",r:{m:4,d:"1SU"}},d:{f:"+1245",t:"+1345",n:"+1345",s:"19700927T024500",r:{m:9,d:"-1SU"}}}],["Pacific/Chuuk",{s:{f:"+1000",n:"+10"}}],["Pacific/Easter",{s:{f:"-0500",t:"-0600",n:"-06",s:"19700404T220000",r:{m:4,d:"1SA"}},d:{f:"-0600",t:"-0500",n:"-05",s:"19700905T220000",r:{m:9,d:"1SA"}}}],["Pacific/Efate",{s:{f:"+1100",n:"+11"}}],["Pacific/Enderbury",{s:{f:"+1300",n:"+13"}}],["Pacific/Fakaofo",{s:{f:"+1300",n:"+13"}}],["Pacific/Fiji",{s:{f:"+1300",t:"+1200",n:"+12",s:"19700118T030000",r:{m:1,d:"-2SU"}},d:{f:"+1200",t:"+1300",n:"+13",s:"19701101T020000",r:{m:11,d:"1SU"}}}],["Pacific/Funafuti",{s:{f:"+1200",n:"+12"}}],["Pacific/Galapagos",{s:{f:"-0600",n:"-06"}}],["Pacific/Gambier",{s:{f:"-0900",n:"-09"}}],["Pacific/Guadalcanal",{s:{f:"+1100",n:"+11"}}],["Pacific/Guam",{s:{f:"+1000",n:"ChST"}}],["Pacific/Honolulu",{s:{f:"-1000",n:"HST"}}],["Pacific/Kiritimati",{s:{f:"+1400",n:"+14"}}],["Pacific/Kosrae",{s:{f:"+1100",n:"+11"}}],["Pacific/Kwajalein",{s:{f:"+1200",n:"+12"}}],["Pacific/Majuro",{s:{f:"+1200",n:"+12"}}],["Pacific/Marquesas",{s:{f:"-0930",n:"-0930"}}],["Pacific/Midway",{s:{f:"-1100",n:"SST"}}],["Pacific/Nauru",{s:{f:"+1200",n:"+12"}}],["Pacific/Niue",{s:{f:"-1100",n:"-11"}}],["Pacific/Norfolk",{s:{f:"+1100",n:"+11"}}],["Pacific/Noumea",{s:{f:"+1100",n:"+11"}}],["Pacific/Pago_Pago",{s:{f:"-1100",n:"SST"}}],["Pacific/Palau",{s:{f:"+0900",n:"+09"}}],["Pacific/Pitcairn",{s:{f:"-0800",n:"-08"}}],["Pacific/Pohnpei",{s:{f:"+1100",n:"+11"}}],["Pacific/Port_Moresby",{s:{f:"+1000",n:"+10"}}],["Pacific/Rarotonga",{s:{f:"-1000",n:"-10"}}],["Pacific/Saipan",{s:{f:"+1000",n:"ChST"}}],["Pacific/Tahiti",{s:{f:"-1000",n:"-10"}}],["Pacific/Tarawa",{s:{f:"+1200",n:"+12"}}],["Pacific/Tongatapu",{s:{f:"+1300",n:"+13"}}],["Pacific/Wake",{s:{f:"+1200",n:"+12"}}],["Pacific/Wallis",{s:{f:"+1200",n:"+12"}}]])),ct}var $t;function $e(){if($t)return at;$t=1,Object.defineProperty(at,"__esModule",{value:!0}),at.getZoneString=at.getZoneLines=void 0;const r=Je();function t(a){const{n:i,f:o,t:n,r:l,s:u}=a;return[`TZNAME:${i}`,`TZOFFSETFROM:${o}`,`TZOFFSETTO:${n||o}`,`DTSTART:${u||r.defaultStart}`,...l?[`RRULE:FREQ=${l.f||"YEARLY"};BYMONTH=${l.m};BYDAY=${l.d}`]:[]]}function e(a,i=!0){const o=r.zonesMap.get(a);if(o){const{s:n,d:l}=o;return[...i?["BEGIN:VTIMEZONE"]:[],`TZID:${a}`,"BEGIN:STANDARD",...t(n),"END:STANDARD",...l?["BEGIN:DAYLIGHT",...t(l),"END:DAYLIGHT"]:[],...i?["END:VTIMEZONE"]:[]]}}at.getZoneLines=e;function s(a,i=!0){return e(a,i)?.join(`\r `)}return at.getZoneString=s,at}var Xe=$e();class Nt{static fromString(t){return new Nt(t)}constructor(t){this.value=t}icaltype="binary";decodeValue(){return this._b64_decode(this.value)}setEncodedValue(t){this.value=this._b64_encode(t)}_b64_encode(t){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",s,a,i,o,n,l,u,c,d=0,m=0,p="",y=[];if(!t)return t;do s=t.charCodeAt(d++),a=t.charCodeAt(d++),i=t.charCodeAt(d++),c=s<<16|a<<8|i,o=c>>18&63,n=c>>12&63,l=c>>6&63,u=c&63,y[m++]=e.charAt(o)+e.charAt(n)+e.charAt(l)+e.charAt(u);while(d>16&255,a=c>>8&255,i=c&255,l==64?y[m++]=String.fromCharCode(s):u==64?y[m++]=String.fromCharCode(s,a):y[m++]=String.fromCharCode(s,a,i);while(ds)-(e0?-1:0}toString(){return this.start+"/"+(this.end||this.duration)}toJSON(){return[this.start.toString(),(this.end||this.duration).toString()]}toICALString(){return this.start.toICALString()+"/"+(this.end||this.duration).toICALString()}}class h{static _dowCache={};static _wnCache={};static daysInMonth(t,e){let s=[0,31,28,31,30,31,30,31,31,30,31,30,31],a=30;return t<1||t>12||(a=s[t],t==2&&(a+=h.isLeapYear(e))),a}static isLeapYear(t){return t<=1752?t%4==0:t%4==0&&t%100!=0||t%400==0}static fromDayOfYear(t,e){let s=e,a=t,i=new h;i.auto_normalize=!1;let o=h.isLeapYear(s)?1:0;if(a<1)return s--,o=h.isLeapYear(s)?1:0,a+=h.daysInYearPassedMonth[o][12],h.fromDayOfYear(a,s);if(a>h.daysInYearPassedMonth[o][12])return o=h.isLeapYear(s)?1:0,a-=h.daysInYearPassedMonth[o][12],s++,h.fromDayOfYear(a,s);i.year=s,i.isDate=!0;for(let n=11;n>=0;n--)if(a>h.daysInYearPassedMonth[o][n]){i.month=n+1,i.day=a-h.daysInYearPassedMonth[o][n];break}return i.auto_normalize=!0,i}static fromStringv2(t){return new h({year:parseInt(t.slice(0,4),10),month:parseInt(t.slice(5,7),10),day:parseInt(t.slice(8,10),10),isDate:!0})}static fromDateString(t){return new h({year:O(t.slice(0,4)),month:O(t.slice(5,7)),day:O(t.slice(8,10)),isDate:!0})}static fromDateTimeString(t,e){if(t.length<19)throw new Error('invalid date-time value: "'+t+'"');let s,a;t.slice(-1)==="Z"?s=T.utcTimezone:e&&(a=e.getParameter("tzid"),e.parent&&(e.parent.name==="standard"||e.parent.name==="daylight"?s=T.localTimezone:a&&(s=e.parent.getTimeZoneByID(a))));const i={year:O(t.slice(0,4)),month:O(t.slice(5,7)),day:O(t.slice(8,10)),hour:O(t.slice(11,13)),minute:O(t.slice(14,16)),second:O(t.slice(17,19))};return a&&!s&&(i.timezone=a),new h(i,s)}static fromString(t,e){return t.length>10?h.fromDateTimeString(t,e):h.fromDateString(t)}static fromJSDate(t,e){return new h().fromJSDate(t,e)}static fromData=function(t,e){return new h().fromData(t,e)};static now(){return h.fromJSDate(new Date,!1)}static weekOneStarts(t,e){let s=h.fromData({year:t,month:1,day:1,isDate:!0}),a=s.dayOfWeek(),i=e||h.DEFAULT_WEEK_START;return a>h.THURSDAY&&(s.day+=7),i>h.THURSDAY&&(s.day-=7),s.day-=a-i,s}static getDominicalLetter(t){let e="GFEDCBA",s=(t+(t/4|0)+(t/400|0)-(t/100|0)-1)%7;return h.isLeapYear(t)?e[(s+6)%7]+e[s]:e[s]}static#t=null;static get epochTime(){return this.#t||(this.#t=h.fromData({year:1970,month:1,day:1,hour:0,minute:0,second:0,isDate:!1,timezone:"Z"})),this.#t}static _cmp_attr(t,e,s){return t[s]>e[s]?1:t[s]=0){n.day=1,i!=0&&i--,o=n.day;let l=n.dayOfWeek(),u=t-l;u<0&&(u+=7),o+=u,o-=t,a=t}else{n.day=s;let l=n.dayOfWeek();i++,a=l-t,a<0&&(a+=7),a=s-a}return a+=i*7,o+a}isNthWeekDay(t,e){let s=this.dayOfWeek();return e===0&&s===t||this.nthWeekDay(t,e)===this.day}weekNumber(t){let e=(this.year<<12)+(this.month<<8)+(this.day<<3)+t;if(e in h._wnCache)return h._wnCache[e];let s,a=this.clone();a.isDate=!0;let i=this.year;a.month==12&&a.day>25?(s=h.weekOneStarts(i+1,t),a.compare(s)<0?s=h.weekOneStarts(i,t):i++):(s=h.weekOneStarts(i,t),a.compare(s)<0&&(s=h.weekOneStarts(--i,t)));let o=a.subtractDate(s).toSeconds()/86400,n=C(o/7)+1;return h._wnCache[e]=n,n}addDuration(t){let e=t.isNegative?-1:1,s=this.second,a=this.minute,i=this.hour,o=this.day;s+=e*t.seconds,a+=e*t.minutes,i+=e*t.hours,o+=e*t.days,o+=e*7*t.weeks,this.second=s,this.minute=a,this.hour=i,this.day=o,this._cachedUnixTime=null}subtractDate(t){let e=this.toUnixTime()+this.utcOffset(),s=t.toUnixTime()+t.utcOffset();return M.fromSeconds(e-s)}subtractDateTz(t){let e=this.toUnixTime(),s=t.toUnixTime();return M.fromSeconds(e-s)}compare(t){if(t instanceof K)return-1*t.compare(this);{let e=this.toUnixTime(),s=t.toUnixTime();return e>s?1:s>e?-1:0}}compareDateOnlyTz(t,e){let s=this.convertToZone(e),a=t.convertToZone(e),i=0;return(i=h._cmp_attr(s,a,"year"))!=0||(i=h._cmp_attr(s,a,"month"))!=0||(i=h._cmp_attr(s,a,"day"))!=0,i}convertToZone(t){let e=this.clone(),s=this.zone.tzid==t.tzid;return!this.isDate&&!s&&T.convert_time(e,this.zone,t),e.zone=t,e}utcOffset(){return this.zone==T.localTimezone||this.zone==T.utcTimezone?0:this.zone.utcOffset(this)}toICALString(){let t=this.toString();return t.length>10?b.icalendar.value["date-time"].toICAL(t):b.icalendar.value.date.toICAL(t)}toString(){let t=this.year+"-"+k(this.month)+"-"+k(this.day);return this.isDate||(t+="T"+k(this.hour)+":"+k(this.minute)+":"+k(this.second),this.zone===T.utcTimezone&&(t+="Z")),t}toJSDate(){return this.zone==T.localTimezone?this.isDate?new Date(this.year,this.month-1,this.day):new Date(this.year,this.month-1,this.day,this.hour,this.minute,this.second,0):new Date(this.toUnixTime()*1e3)}_normalize(){return this._time.isDate&&(this._time.hour=0,this._time.minute=0,this._time.second=0),this.adjust(0,0,0,0),this}adjust(t,e,s,a,i){let o,n,l=0,u=0,c,d,m,p,y,f=i||this._time;if(f.isDate||(c=f.second+a,f.second=c%60,o=C(c/60),f.second<0&&(f.second+=60,o--),d=f.minute+s+o,f.minute=d%60,n=C(d/60),f.minute<0&&(f.minute+=60,n--),m=f.hour+e+n,f.hour=m%24,l=C(m/24),f.hour<0&&(f.hour+=24,l--)),f.month>12?u=C((f.month-1)/12):f.month<1&&(u=C(f.month/12)-1),f.year+=u,f.month-=12*u,p=f.day+t+l,p>0)for(;y=h.daysInMonth(f.month,f.year),!(p<=y);)f.month++,f.month>12&&(f.year++,f.month=1),p-=y;else for(;p<=0;)f.month==1?(f.year--,f.month=12):f.month--,p+=h.daysInMonth(f.month,f.year);return f.day=p,this._cachedUnixTime=null,this}fromUnixTime(t){this.zone=T.utcTimezone;let e=new Date(t*1e3);this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this._time.isDate?(this.hour=0,this.minute=0,this.second=0):(this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()),this._cachedUnixTime=null}toUnixTime(){if(this._cachedUnixTime!==null)return this._cachedUnixTime;let t=this.utcOffset(),e=Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second-t);return this._cachedUnixTime=e/1e3,this._cachedUnixTime}toJSON(){let t=["year","month","day","hour","minute","second","isDate"],e=Object.create(null),s=0,a=t.length,i;for(;s1)throw new it("invalid ical body. component began but did not end");return t=null,e.length==1?e[0]:e}g.property=function(r,t){let e={component:[[],[]],designSet:t||b.defaultSet};return g._handleContentLine(r,e),e.component[1][0]},g.component=function(r){return g(r)};class it extends Error{name=this.constructor.name}g.ParserError=it,g._handleContentLine=function(r,t){let e=r.indexOf(At),s=r.indexOf(xt),a,i,o,n,l={};s!==-1&&e!==-1&&s>e&&(s=-1);let u;if(s!==-1){if(o=r.slice(0,Math.max(0,s)).toLowerCase(),u=g._parseParameters(r.slice(Math.max(0,s)),0,t.designSet),u[2]==-1)throw new it("Invalid parameters in '"+r+"'");l=u[0];let U;if(typeof u[1]=="string"?U=u[1].length:U=u[1].reduce((ht,rt)=>ht+rt.length,0),a=U+u[2]+s,(i=r.slice(Math.max(0,a)).indexOf(At))!==-1)n=r.slice(Math.max(0,a+i+1));else throw new it("Missing parameter value in '"+r+"'")}else if(e!==-1){if(o=r.slice(0,Math.max(0,e)).toLowerCase(),n=r.slice(Math.max(0,e+1)),o==="begin"){let U=[n.toLowerCase(),[],[]];t.stack.length===1?t.component.push(U):t.component[2].push(U),t.stack.push(t.component),t.component=U,t.designSet||(t.designSet=b.getDesignSet(t.component[0]));return}else if(o==="end"){t.component=t.stack.pop();return}}else throw new it('invalid line (no token ";" or ":") "'+r+'"');let c,d=!1,m=!1,p,y,f;t.designSet.propertyGroups&&o.indexOf(".")!==-1?(y=o.split("."),l.group=y[0],f=y[1]):f=o,f in t.designSet.property&&(p=t.designSet.property[f],"multiValue"in p&&(d=p.multiValue),"structuredValue"in p&&(m=p.structuredValue),n&&"detectType"in p&&(c=p.detectType(n))),c||("value"in l?c=l.value.toLowerCase():p?c=p.defaultType:c=a0),delete l.value;let A;d&&m?(n=g._parseMultiValue(n,m,c,[],d,t.designSet,m),A=[f,l,c,n]):d?(A=[f,l,c],g._parseMultiValue(n,d,c,A,null,t.designSet,!1)):m?(n=g._parseMultiValue(n,m,c,[],null,t.designSet,m),A=[f,l,c,n]):(n=g._parseValue(n,c,t.designSet,!1),A=[f,l,c,n]),t.component[0]==="vcard"&&t.component[1].length===0&&!(o==="version"&&n==="4.0")&&(t.designSet=b.getDesignSet("vcard3")),t.component[1].push(A)},g._parseValue=function(r,t,e,s){return t in e.value&&"fromICAL"in e.value[t]?e.value[t].fromICAL(r,s):r},g._parseParameters=function(r,t,e){let s=t,a=0,i=r0,o={},n,l,u,c=-1,d,m,p;for(;a!==!1&&(a=r.indexOf(i,a+1))!==-1;){if(n=r.slice(s+1,a),n.length==0)throw new it("Empty parameter name in '"+r+"'");if(l=n.toLowerCase(),p=!1,m=!1,l in e.param&&e.param[l].valueType?d=e.param[l].valueType:d=i0,l in e.param&&(m=e.param[l].multiValue,e.param[l].multiValueSeparateDQuote&&(p=g._rfc6868Escape('"'+m+'"'))),r[a+1]==='"'){if(c=a+2,a=r.indexOf('"',c),m&&a!=-1){let A=!0;for(;A;)r[a+1]==m&&r[a+2]=='"'?a=r.indexOf('"',a+3):A=!1}if(a===-1)throw new it('invalid line (no matching double quote) "'+r+'"');u=r.slice(c,a),s=r.indexOf(xt,a);let f=r.indexOf(At,a);(s===-1||f!==-1&&s>f)&&(a=!1)}else{c=a+1;let f=r.indexOf(xt,c),A=r.indexOf(At,c);A!==-1&&f>A?(f=A,a=!1):f===-1?(A===-1?f=r.length:f=A,a=!1):(s=f,a=f),u=r.slice(c,f)}const y=u.length;if(u=g._rfc6868Escape(u),c+=y-u.length,m){let f=p||m;u=g._parseMultiValue(u,f,d,[],null,e)}else u=g._parseValue(u,d,e);m&&l in o?Array.isArray(o[l])?o[l].push(u):o[l]=[o[l],u]:o[l]=u}return[o,u,c]},g._rfc6868Escape=function(r){return r.replace(/\^['n^]/g,function(t){return n0[t]})},g._parseMultiValue=function(r,t,e,s,a,i,o){let n=0,l=0,u;if(t.length===0)return r;for(;(n=fe(r,t,l))!==-1;)u=r.slice(l,n),a?u=g._parseMultiValue(u,a,e,[],null,i,o):u=g._parseValue(u,e,i,o),s.push(u),l=n+t.length;return u=r.slice(l),a?u=g._parseMultiValue(u,a,e,[],null,i,o):u=g._parseValue(u,e,i,o),s.push(u),s.length==1?s[0]:s},g._eachLine=function(r,t){let e=r.length,s=r.search(s0),a=s,i,o,n;do a=r.indexOf(` `,s)+1,a>1&&r[a-2]==="\r"?n=2:n=1,a===0&&(a=e,n=0),o=r[s],o===" "||o===" "?i+=r.slice(s+1,a-n):(i&&t(null,i),i=r.slice(s,a-n)),s=a;while(a!==e);i=i.trim(),i.length&&t(null,i)};const o0=["tzid","location","tznames","latitude","longitude"];class T{static _compare_change_fn(t,e){return t.yeare.year?1:t.monthe.month?1:t.daye.day?1:t.houre.hour?1:t.minutee.minute?1:t.seconde.second?1:0}static convert_time(t,e,s){if(t.isDate||e.tzid==s.tzid||e==T.localTimezone||s==T.localTimezone)return t.zone=s,t;let a=e.utcOffset(t);return t.adjust(0,0,0,-a),a=s.utcOffset(t),t.adjust(0,0,0,a),null}static fromData(t){return new T().fromData(t)}static#t=null;static get utcTimezone(){return this.#t||(this.#t=T.fromData({tzid:"UTC"})),this.#t}static#e=null;static get localTimezone(){return this.#e||(this.#e=T.fromData({tzid:"floating"})),this.#e}static adjust_change(t,e,s,a,i){return h.prototype.adjust.call(t,e,s,a,i,t)}static _minimumExpansionYear=-1;static EXTRA_COVERAGE=5;constructor(t){this.wrappedJSObject=this,this.fromData(t)}tzid="";location="";tznames="";latitude=0;longitude=0;component=null;expandedUntilYear=0;icalclass="icaltimezone";fromData(t){if(this.expandedUntilYear=0,this.changes=[],t instanceof z)this.component=t;else{if(t&&"component"in t)if(typeof t.component=="string"){let e=g(t.component);this.component=new z(e)}else t.component instanceof z?this.component=t.component:this.component=null;for(let e of o0)t&&e in t&&(this[e]=t[e])}return this.component instanceof z&&!this.tzid&&(this.tzid=this.component.getFirstPropertyValue("tzid")),this}utcOffset(t){if(this==T.utcTimezone||this==T.localTimezone||(this._ensureCoverage(t.year),!this.changes.length))return 0;let e={year:t.year,month:t.month,day:t.day,hour:t.hour,minute:t.minute,second:t.second},s=this._findNearbyChange(e),a=-1,i=1;for(;;){let n=lt(this.changes[s],!0);if(n.utcOffset=0?a=s:i=-1,i==-1&&a!=-1)break;if(s+=i,s<0)return 0;if(s>=this.changes.length)break}let o=this.changes[a];if(o.utcOffset-o.prevUtcOffset<0&&a>0){let n=lt(o,!0);if(T.adjust_change(n,0,0,0,n.prevUtcOffset),T._compare_change_fn(e,n)<0){let l=this.changes[a-1],u=!1;o.is_daylight!=u&&l.is_daylight==u&&(o=l)}}return o.utcOffset}_findNearbyChange(t){let e=nt(this.changes,t,T._compare_change_fn);return e>=this.changes.length?this.changes.length-1:e}_ensureCoverage(t){if(T._minimumExpansionYear==-1){let s=h.now();T._minimumExpansionYear=s.year}let e=t;if(ee||!d));)i.year=d.year,i.month=d.month,i.day=d.day,i.hour=d.hour,i.minute=d.minute,i.second=d.second,i.isDate=d.isDate,T.adjust_change(i,0,0,0,-i.prevUtcOffset),s.push(i)}}return s}toString(){return this.tznames?this.tznames:this.tzid}}let N=null;const wt={get count(){return N===null?0:Object.keys(N).length},reset:function(){N=Object.create(null);let r=T.utcTimezone;N.Z=r,N.UTC=r,N.GMT=r},_hard_reset:function(){N=null},has:function(r){return N===null?!1:!!N[r]},get:function(r){return N===null&&this.reset(),N[r]},register:function(r,t){if(N===null&&this.reset(),typeof r=="string"&&t instanceof T&&([r,t]=[t,r]),t||(r instanceof T?t=r.tzid:r.name==="vtimezone"&&(r=new T(r),t=r.tzid)),!t)throw new TypeError("Neither a timezone nor a name was passed");if(r instanceof T)N[t]=r;else throw new TypeError("timezone must be ICAL.Timezone or ICAL.Component")},remove:function(r){return N===null?null:delete N[r]}};function l0(r){let t,e,s,a,i;if(!r||r.name!=="vcalendar")return r;for(t=r.getAllSubcomponents(),e=[],s={},i=0;i"u"))return r instanceof t?r:new t(r)}function fe(r,t,e){for(;(e=r.indexOf(t,e))!==-1;)if(e>0&&r[e-1]==="\\")e+=1;else return e;return-1}function nt(r,t,e){if(!r.length)return 0;let s=0,a=r.length-1,i,o;for(;s<=a;)if(i=s+Math.floor((a-s)/2),o=e(t,r[i]),o<0)a=i-1;else if(o>0)s=i+1;else break;return o<0?i:o>0?i+1:i}function lt(r,t){if(!r||typeof r!="object")return r;if(r instanceof Date)return new Date(r.getTime());if("clone"in r)return r.clone();if(Array.isArray(r)){let e=[];for(let s=0;s65535?2:1:(t+=L.newLineChar+" "+e.slice(0,Math.max(0,s)),e=e.slice(Math.max(0,s)),s=a=0)}return t.slice(L.newLineChar.length+1)}function k(r){switch(typeof r!="string"&&(typeof r=="number"&&(r=parseInt(r)),r=String(r)),r.length){case 0:return"00";case 1:return"0"+r;default:return r}}function C(r){return r<0?Math.ceil(r):Math.floor(r)}function ut(r,t){for(let e in r){let s=Object.getOwnPropertyDescriptor(r,e);s&&!Object.getOwnPropertyDescriptor(t,e)&&Object.defineProperty(t,e,s)}return t}var u0=Object.freeze({__proto__:null,binsearchInsert:nt,clone:lt,extend:ut,foldline:pe,formatClassType:q,isStrictlyNaN:pt,pad2:k,strictParseInt:O,trunc:C,unescapedIndexOf:fe,updateTimezones:l0});class V{static fromString(t){let e={};return e.factor=t[0]==="+"?1:-1,e.hours=O(t.slice(1,3)),e.minutes=O(t.slice(4,6)),new V(e)}static fromSeconds(t){let e=new V;return e.fromSeconds(t),e}constructor(t){this.fromData(t)}hours=0;minutes=0;factor=1;icaltype="utc-offset";clone(){return V.fromSeconds(this.toSeconds())}fromData(t){if(t)for(let[e,s]of Object.entries(t))this[e]=s;this._normalize()}fromSeconds(t){let e=Math.abs(t);return this.factor=t<0?-1:1,this.hours=C(e/3600),e-=this.hours*3600,this.minutes=C(e/60),this}toSeconds(){return this.factor*(60*this.minutes+3600*this.hours)}compare(t){let e=this.toSeconds(),s=t.toSeconds();return(e>s)-(s>e)}_normalize(){let t=this.toSeconds(),e=this.factor;for(;t<-43200;)t+=97200;for(;t>50400;)t-=97200;this.fromSeconds(t),t==0&&(this.factor=e)}toICALString(){return b.icalendar.value["utc-offset"].toICAL(this.toString())}toString(){return(this.factor==1?"+":"-")+k(this.hours)+":"+k(this.minutes)}}class tt extends h{static fromDateAndOrTimeString(t,e){function s(f,A,U){return f?O(f.slice(A,A+U)):null}let a=t.split("T"),i=a[0],o=a[1],n=o?b.vcard.value.time._splitZone(o):[],l=n[0],u=n[1],c=i?i.length:0,d=u?u.length:0,m=i&&i[0]=="-"&&i[1]=="-",p=u&&u[0]=="-",y={year:m?null:s(i,0,4),month:m&&(c==4||c==7)?s(i,2,2):c==7||c==10?s(i,5,2):null,day:c==5?s(i,3,2):c==7&&m?s(i,5,2):c==10?s(i,8,2):null,hour:p?null:s(u,0,2),minute:p&&d==3?s(u,1,2):d>4?p?s(u,1,2):s(u,3,2):null,second:d==4?s(u,2,2):d==6?s(u,4,2):d==8?s(u,6,2):null};return l=="Z"?l=T.utcTimezone:l&&l[3]==":"?l=V.fromString(l):l=null,new tt(y,l,e)}constructor(t,e,s){super(t,e),this.icaltype=s||"date-and-or-time"}icalclass="vcardtime";icaltype="date-and-or-time";clone(){return new tt(this._time,this.zone,this.icaltype)}_normalize(){return this}utcOffset(){return this.zone instanceof V?this.zone.toSeconds():h.prototype.utcOffset.apply(this,arguments)}toICALString(){return b.vcard.value[this.icaltype].toICAL(this.toString())}toString(){let t=this.year,e=this.month,s=this.day,a=this.hour,i=this.minute,o=this.second,n=t!==null,l=e!==null,u=s!==null,c=a!==null,d=i!==null,m=o!==null,p=(n?k(t)+(l||u?"-":""):l||u?"--":"")+(l?k(e):"")+(u?"-"+k(s):""),y=(c?k(a):"-")+(c&&d?":":"")+(d?k(i):"")+(!c&&!d?"-":"")+(d&&m?":":"")+(m?k(o):""),f;switch(this.zone===T.utcTimezone?f="Z":this.zone instanceof V?f=this.zone.toString():this.zone===T.localTimezone?f="":this.zone instanceof T?f=V.fromSeconds(this.zone.utcOffset(this)).toString():f="",this.icaltype){case"time":return y+f;case"date-and-or-time":case"date-time":return p+(y=="--"?"":"T"+y+f);case"date":return p}return null}}class R{static _indexMap={BYSECOND:0,BYMINUTE:1,BYHOUR:2,BYDAY:3,BYMONTHDAY:4,BYYEARDAY:5,BYWEEKNO:6,BYMONTH:7,BYSETPOS:8};static _expandMap={SECONDLY:[1,1,1,1,1,1,1,1],MINUTELY:[2,1,1,1,1,1,1,1],HOURLY:[2,2,1,1,1,1,1,1],DAILY:[2,2,2,1,1,1,1,1],WEEKLY:[2,2,2,2,3,3,1,1],MONTHLY:[2,2,2,2,2,3,3,1],YEARLY:[2,2,2,2,2,2,2,2]};static UNKNOWN=0;static CONTRACT=1;static EXPAND=2;static ILLEGAL=3;constructor(t){this.fromData(t)}completed=!1;rule=null;dtstart=null;last=null;occurrence_number=0;by_indices=null;initialized=!1;by_data=null;days=null;days_index=0;fromData(t){if(this.rule=q(t.rule,w),!this.rule)throw new Error("iterator requires a (ICAL.Recur) rule");if(this.dtstart=q(t.dtstart,h),!this.dtstart)throw new Error("iterator requires a (ICAL.Time) dtstart");if(t.by_data?this.by_data=t.by_data:this.by_data=lt(this.rule.parts,!0),t.occurrence_number&&(this.occurrence_number=t.occurrence_number),this.days=t.days||[],t.last&&(this.last=q(t.last,h)),this.by_indices=t.by_indices,this.by_indices||(this.by_indices={BYSECOND:0,BYMINUTE:0,BYHOUR:0,BYDAY:0,BYMONTH:0,BYWEEKNO:0,BYMONTHDAY:0}),this.initialized=t.initialized||!1,!this.initialized)try{this.init()}catch(e){if(e instanceof gt)this.completed=!0;else throw e}}init(){this.initialized=!0,this.last=this.dtstart.clone();let t=this.by_data;if("BYDAY"in t&&this.sort_byday_rules(t.BYDAY),"BYYEARDAY"in t&&("BYMONTH"in t||"BYWEEKNO"in t||"BYMONTHDAY"in t))throw new Error("Invalid BYYEARDAY rule");if("BYWEEKNO"in t&&"BYMONTHDAY"in t)throw new Error("BYWEEKNO does not fit to BYMONTHDAY");if(this.rule.freq=="MONTHLY"&&("BYYEARDAY"in t||"BYWEEKNO"in t))throw new Error("For MONTHLY recurrences neither BYYEARDAY nor BYWEEKNO may appear");if(this.rule.freq=="WEEKLY"&&("BYYEARDAY"in t||"BYMONTHDAY"in t))throw new Error("For WEEKLY recurrences neither BYMONTHDAY nor BYYEARDAY may appear");if(this.rule.freq!="YEARLY"&&"BYYEARDAY"in t)throw new Error("BYYEARDAY may only appear in YEARLY rules");if(this.last.second=this.setup_defaults("BYSECOND","SECONDLY",this.dtstart.second),this.last.minute=this.setup_defaults("BYMINUTE","MINUTELY",this.dtstart.minute),this.last.hour=this.setup_defaults("BYHOUR","HOURLY",this.dtstart.hour),this.last.day=this.setup_defaults("BYMONTHDAY","DAILY",this.dtstart.day),this.last.month=this.setup_defaults("BYMONTH","MONTHLY",this.dtstart.month),this.rule.freq=="WEEKLY")if("BYDAY"in t){let[,e]=this.ruleDayOfWeek(t.BYDAY[0],this.rule.wkst),s=e-this.last.dayOfWeek(this.rule.wkst);(this.last.dayOfWeek(this.rule.wkst)=0||s<0)&&(this.last.day+=s)}else{let e=w.numericDayToIcalDay(this.dtstart.dayOfWeek());t.BYDAY=[e]}if(this.rule.freq=="YEARLY"){const e=this.rule.until?this.rule.until.year:2e4;for(;this.last.year<=e&&(this.expand_year_days(this.last.year),!(this.days.length>0));)this.increment_year(this.rule.interval);if(this.days.length==0)throw new gt;if(!this._nextByYearDay()&&!this.next_year()&&!this.next_year()&&!this.next_year())throw new gt}if(this.rule.freq=="MONTHLY"){if(this.has_by_data("BYDAY")){let e=null,s=this.last.clone(),a=h.daysInMonth(this.last.month,this.last.year);for(let i of this.by_data.BYDAY){this.last=s.clone();let[o,n]=this.ruleDayOfWeek(i),l=this.last.nthWeekDay(n,o);if(o>=6||o<=-6)throw new Error("Malformed values in BYDAY part");if(l>a||l<=0){if(e&&e.month==s.month)continue;for(;l>a||l<=0;)this.increment_month(),a=h.daysInMonth(this.last.month,this.last.year),l=this.last.nthWeekDay(n,o)}this.last.day=l,(!e||this.last.compare(e)<0)&&(e=this.last.clone())}if(this.last=e.clone(),this.has_by_data("BYMONTHDAY")&&this._byDayAndMonthDay(!0),this.last.day>a||this.last.day==0)throw new Error("Malformed values in BYDAY part")}else if(this.has_by_data("BYMONTHDAY")){this.last.day=1;let e=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY).filter(s=>s>=this.last.day);if(e.length)this.last.day=e[0],this.by_data.BYMONTHDAY=e;else if(!this.next_month()&&!this.next_month()&&!this.next_month())throw new gt}}}next(t=!1){let e=this.last?this.last.clone():null;if((this.rule.count&&this.occurrence_number>=this.rule.count||this.rule.until&&this.last.compare(this.rule.until)>0)&&(this.completed=!0),this.completed)return null;if(this.occurrence_number==0&&this.last.compare(this.dtstart)>=0)return this.occurrence_number++,this.last;let s,a=0;do switch(s=1,this.rule.freq){case"SECONDLY":this.next_second();break;case"MINUTELY":this.next_minute();break;case"HOURLY":this.next_hour();break;case"DAILY":this.next_day();break;case"WEEKLY":this.next_week();break;case"MONTHLY":if(s=this.next_month(),s)a=0;else if(++a==336)return this.completed=!0,null;break;case"YEARLY":if(s=this.next_year(),s)a=0;else if(++a==28)return this.completed=!0,null;break;default:return null}while(!this.check_contracting_rules()||this.last.compare(this.dtstart)<0||!s);if(this.last.compare(e)==0){if(t)throw new Error("Same occurrence found twice, protecting you from death by recursion");this.next(!0)}return this.rule.until&&this.last.compare(this.rule.until)>0?(this.completed=!0,null):(this.occurrence_number++,this.last)}next_second(){return this.next_generic("BYSECOND","SECONDLY","second","minute")}increment_second(t){return this.increment_generic(t,"second",60,"minute")}next_minute(){return this.next_generic("BYMINUTE","MINUTELY","minute","hour","next_second")}increment_minute(t){return this.increment_generic(t,"minute",60,"hour")}next_hour(){return this.next_generic("BYHOUR","HOURLY","hour","monthday","next_minute")}increment_hour(t){this.increment_generic(t,"hour",24,"monthday")}next_day(){let t=this.rule.freq=="DAILY";return this.next_hour()==0||(t?this.increment_monthday(this.rule.interval):this.increment_monthday(1)),0}next_week(){let t=0;if(this.next_weekday_by_week()==0)return t;if(this.has_by_data("BYWEEKNO")){this.by_indices.BYWEEKNO++,this.by_indices.BYWEEKNO==this.by_data.BYWEEKNO.length&&(this.by_indices.BYWEEKNO=0,t=1),this.last.month=1,this.last.day=1;let e=this.by_data.BYWEEKNO[this.by_indices.BYWEEKNO];this.last.day+=7*e,t&&this.increment_year(1)}else this.increment_monthday(7*this.rule.interval);return t}normalizeByMonthDayRules(t,e,s){let a=h.daysInMonth(e,t),i=[],o=0,n=s.length,l;for(;oa)){if(l<0)l=a+(l+1);else if(l===0)continue;i.indexOf(l)===-1&&i.push(l)}}return i.sort(function(u,c){return u-c})}_byDayAndMonthDay(t){let e,s=this.by_data.BYDAY,a,i=0,o,n=s.length,l=0,u,c=this,d=this.last.day;function m(){for(u=h.daysInMonth(c.last.month,c.last.year),e=c.normalizeByMonthDayRules(c.last.year,c.last.month,c.by_data.BYMONTHDAY),o=e.length;e[i]<=d&&!(t&&e[i]==d)&&iu){p();continue}let f=e[i++];if(f>=a)d=f;else{p();continue}for(let A=0;Ae&&(this.last.day=1,this.increment_month(),this.is_day_in_byday(this.last)?(!this.has_by_data("BYSETPOS")||this.check_set_position(1))&&(t=1):t=0)}else if(this.has_by_data("BYMONTHDAY")){if(this.by_indices.BYMONTHDAY++,this.by_indices.BYMONTHDAY>=this.by_data.BYMONTHDAY.length&&(this.by_indices.BYMONTHDAY=0,this.increment_month(),this.by_indices.BYMONTHDAY>=this.by_data.BYMONTHDAY.length))return 0;let e=h.daysInMonth(this.last.month,this.last.year),s=this.by_data.BYMONTHDAY[this.by_indices.BYMONTHDAY];s<0&&(s=e+s+1),s>e?(this.last.day=1,t=this.is_day_in_byday(this.last)):this.last.day=s}else{this.increment_month();let e=h.daysInMonth(this.last.month,this.last.year);this.by_data.BYMONTHDAY[0]>e?t=0:this.last.day=this.by_data.BYMONTHDAY[0]}return t}next_weekday_by_week(){let t=0;if(this.next_hour()==0)return t;if(!this.has_by_data("BYDAY"))return 1;for(;;){let e=new h;this.by_indices.BYDAY++,this.by_indices.BYDAY==Object.keys(this.by_data.BYDAY).length&&(this.by_indices.BYDAY=0,t=1);let s=this.by_data.BYDAY[this.by_indices.BYDAY],a=this.ruleDayOfWeek(s)[1];a-=this.rule.wkst,a<0&&(a+=7),e.year=this.last.year,e.month=this.last.month,e.day=this.last.day;let i=e.startDoyWeek(this.rule.wkst);if(a+i<1&&!t)continue;let o=h.fromDayOfYear(i+a,this.last.year);return this.last.year=o.year,this.last.month=o.month,this.last.day=o.day,t}}next_year(){return this.next_hour()==0||(this.days.length==0||++this.days_index==this.days.length)&&(this.days_index=0,this.increment_year(this.rule.interval),this.has_by_data("BYMONTHDAY")&&(this.by_data.BYMONTHDAY=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY)),this.expand_year_days(this.last.year),this.days.length==0)?0:this._nextByYearDay()}_nextByYearDay(){let t=this.days[this.days_index],e=this.last.year;if(Math.abs(t)==366&&!h.isLeapYear(this.last.year))return 0;t<1&&(t+=1,e+=1);let s=h.fromDayOfYear(t,e);return this.last.day=s.day,this.last.month=s.month,1}ruleDayOfWeek(t,e){let s=t.match(/([+-]?[0-9])?(MO|TU|WE|TH|FR|SA|SU)/);if(s){let a=parseInt(s[1]||0,10);return t=w.icalDayToNumericDay(s[2],e),[a,t]}else return[0,0]}next_generic(t,e,s,a,i){let o=t in this.by_data,n=this.rule.freq==e,l=0;if(i&&this[i]()==0)return l;if(o){this.by_indices[t]++;let u=this.by_data[t];this.by_indices[t]==u.length&&(this.by_indices[t]=0,l=1),this.last[s]=u[this.by_indices[t]]}else n&&this["increment_"+s](this.rule.interval);return o&&l&&n&&this["increment_"+a](1),l}increment_monthday(t){for(let e=0;es&&(this.last.day-=s,this.increment_month())}}increment_month(){if(this.last.day=1,this.has_by_data("BYMONTH"))this.by_indices.BYMONTH++,this.by_indices.BYMONTH==this.by_data.BYMONTH.length&&(this.by_indices.BYMONTH=0,this.increment_year(1)),this.last.month=this.by_data.BYMONTH[this.by_indices.BYMONTH];else{this.rule.freq=="MONTHLY"?this.last.month+=this.rule.interval:this.last.month++,this.last.month--;let t=C(this.last.month/12);this.last.month%=12,this.last.month++,t!=0&&this.increment_year(t)}this.has_by_data("BYMONTHDAY")&&(this.by_data.BYMONTHDAY=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY))}increment_year(t){this.last.day=1,this.last.year+=t}increment_generic(t,e,s,a){this.last[e]+=t;let i=C(this.last[e]/s);this.last[e]%=s,i!=0&&this["increment_"+a](i)}has_by_data(t){return t in this.rule.parts}expand_year_days(t){let e=new h;this.days=[];let s={},a=["BYDAY","BYWEEKNO","BYMONTHDAY","BYMONTH","BYYEARDAY"];for(let n of a)n in this.rule.parts&&(s[n]=this.rule.parts[n]);if("BYMONTH"in s&&"BYWEEKNO"in s){let n=1,l={};e.year=t,e.isDate=!0;for(let u=0;u0?(A=U+(y-1)*7,A<=l&&this.days.push(c+A)):(A=ht+(y+1)*7,A>0&&this.days.push(c+A))}}this.days.sort(function(n,l){return n-l})}else if(i==2&&"BYDAY"in s&&"BYMONTHDAY"in s){let n=this.expand_by_day(t);for(let l of n){let u=h.fromDayOfYear(l,t);this.by_data.BYMONTHDAY.indexOf(u.day)>=0&&this.days.push(l)}}else if(i==3&&"BYDAY"in s&&"BYMONTHDAY"in s&&"BYMONTH"in s){let n=this.expand_by_day(t);for(let l of n){let u=h.fromDayOfYear(l,t);this.by_data.BYMONTH.indexOf(u.month)>=0&&this.by_data.BYMONTHDAY.indexOf(u.day)>=0&&this.days.push(l)}}else if(i==2&&"BYDAY"in s&&"BYWEEKNO"in s){let n=this.expand_by_day(t);for(let l of n){let u=h.fromDayOfYear(l,t).weekNumber(this.rule.wkst);this.by_data.BYWEEKNO.indexOf(u)&&this.days.push(l)}}else if(!(i==3&&"BYDAY"in s&&"BYWEEKNO"in s&&"BYMONTHDAY"in s))if(i==1&&"BYYEARDAY"in s)this.days=this.days.concat(this.by_data.BYYEARDAY);else if(i==2&&"BYYEARDAY"in s&&"BYDAY"in s){let n=h.isLeapYear(t)?366:365,l=new Set(this.expand_by_day(t));for(let u of this.by_data.BYYEARDAY)u<0&&(u+=n+1),l.has(u)&&this.days.push(u)}else this.days=[]}let o=h.isLeapYear(t)?366:365;return this.days.sort((n,l)=>(n<0&&(n+=o+1),l<0&&(l+=o+1),n-l)),0}expand_by_day(t){let e=[],s=this.last.clone();s.year=t,s.month=1,s.day=1,s.isDate=!0;let a=s.dayOfWeek();s.month=12,s.day=31,s.isDate=!0;let i=s.dayOfWeek(),o=s.dayOfYear();for(let n of this.by_data.BYDAY){let l=this.ruleDayOfWeek(n),u=l[0],c=l[1];if(u==0){let d=(c+7-a)%7+1;for(let m=d;m<=o;m+=7)e.push(m)}else if(u>0){let d;c>=a?d=c-a+1:d=c-a+8,e.push(d+(u-1)*7)}else{let d;u=-u,c<=i?d=o-i+c:d=o-i+c-7,e.push(d-(u-1)*7)}}return e}is_day_in_byday(t){if(this.by_data.BYDAY)for(let e of this.by_data.BYDAY){let s=this.ruleDayOfWeek(e),a=s[0],i=s[1],o=t.dayOfWeek();if(a==0&&i==o||t.nthWeekDay(i,a)==t.day)return 1}return 0}check_set_position(t){return this.has_by_data("BYSETPOS")?this.by_data.BYSETPOS.indexOf(t)!==-1:!1}sort_byday_rules(t){for(let e=0;ei){let o=t[e];t[e]=t[s],t[s]=o}}}check_contract_restriction(t,e){let s=R._indexMap[t],a=R._expandMap[this.rule.freq][s],i=!1;if(t in this.by_data&&a==R.CONTRACT){let o=this.by_data[t];for(let n of o)if(n==e){i=!0;break}}else i=!0;return i}check_contracting_rules(){let t=this.last.dayOfWeek(),e=this.last.weekNumber(this.rule.wkst),s=this.last.dayOfYear();return this.check_contract_restriction("BYSECOND",this.last.second)&&this.check_contract_restriction("BYMINUTE",this.last.minute)&&this.check_contract_restriction("BYHOUR",this.last.hour)&&this.check_contract_restriction("BYDAY",w.numericDayToIcalDay(t))&&this.check_contract_restriction("BYWEEKNO",e)&&this.check_contract_restriction("BYMONTHDAY",this.last.day)&&this.check_contract_restriction("BYMONTH",this.last.month)&&this.check_contract_restriction("BYYEARDAY",s)}setup_defaults(t,e,s){let a=R._indexMap[t];return R._expandMap[this.rule.freq][a]!=R.CONTRACT&&(t in this.by_data||(this.by_data[t]=[s]),this.rule.freq!=e)?this.by_data[t][0]:s}toJSON(){let t=Object.create(null);return t.initialized=this.initialized,t.rule=this.rule.toJSON(),t.dtstart=this.dtstart.toJSON(),t.by_data=this.by_data,t.days=this.days,t.last=this.last.toJSON(),t.by_indices=this.by_indices,t.occurrence_number=this.occurrence_number,t}}class gt extends Error{constructor(){super("Recurrence rule has no valid occurrences")}}const d0=/^(SU|MO|TU|WE|TH|FR|SA)$/,c0=/^([+-])?(5[0-3]|[1-4][0-9]|[1-9])?(SU|MO|TU|WE|TH|FR|SA)$/,Te={SU:h.SUNDAY,MO:h.MONDAY,TU:h.TUESDAY,WE:h.WEDNESDAY,TH:h.THURSDAY,FR:h.FRIDAY,SA:h.SATURDAY},h0=Object.fromEntries(Object.entries(Te).map(r=>r.reverse())),Xt=["SECONDLY","MINUTELY","HOURLY","DAILY","WEEKLY","MONTHLY","YEARLY"];class w{static fromString(t){let e=this._stringToData(t,!1);return new w(e)}static fromData(t){return new w(t)}static _stringToData(t,e){let s=Object.create(null),a=t.split(";"),i=a.length;for(let o=0;o7&&(a-=7),h0[a]}constructor(t){this.wrappedJSObject=this,this.parts={},t&&typeof t=="object"&&this.fromData(t)}parts=null;interval=1;wkst=h.MONDAY;until=null;count=null;freq=null;icalclass="icalrecur";icaltype="recur";iterator(t){return new R({rule:this,dtstart:t})}clone(){return new w(this.toJSON())}isFinite(){return!!(this.count||this.until)}isByCount(){return!!(this.count&&!this.until)}addComponent(t,e){let s=t.toUpperCase();s in this.parts?this.parts[s].push(e):this.parts[s]=[e]}setComponent(t,e){this.parts[t.toUpperCase()]=e.slice()}getComponent(t){let e=t.toUpperCase();return e in this.parts?this.parts[e].slice():[]}getNextOccurrence(t,e){let s=this.iterator(t),a;do a=s.next();while(a&&a.compare(e)<=0);return a&&e.zone&&(a.zone=e.zone),a}fromData(t){for(let e in t){let s=e.toUpperCase();s in kt?Array.isArray(t[e])?this.parts[s]=t[e]:this.parts[s]=[t[e]]:this[e]=t[e]}this.interval&&typeof this.interval!="number"&&It.INTERVAL(this.interval,this),this.wkst&&typeof this.wkst!="number"&&(this.wkst=w.icalDayToNumericDay(this.wkst)),this.until&&!(this.until instanceof h)&&(this.until=h.fromString(this.until))}toJSON(){let t=Object.create(null);t.freq=this.freq,this.count&&(t.count=this.count),this.interval>1&&(t.interval=this.interval);for(let[e,s]of Object.entries(this.parts))Array.isArray(s)&&s.length==1?t[e.toLowerCase()]=s[0]:t[e.toLowerCase()]=lt(s);return this.until&&(t.until=this.until.toString()),"wkst"in this&&this.wkst!==h.DEFAULT_WEEK_START&&(t.wkst=w.numericDayToIcalDay(this.wkst)),t}toString(){let t="FREQ="+this.freq;this.count&&(t+=";COUNT="+this.count),this.interval>1&&(t+=";INTERVAL="+this.interval);for(let[e,s]of Object.entries(this.parts))t+=";"+e+"="+s;return this.until&&(t+=";UNTIL="+this.until.toICALString()),"wkst"in this&&this.wkst!==h.DEFAULT_WEEK_START&&(t+=";WKST="+w.numericDayToIcalDay(this.wkst)),t}}function Z(r,t,e,s){let a=s;if(s[0]==="+"&&(a=s.slice(1)),a=O(a),t!==void 0&&s '+t);if(e!==void 0&&s>e)throw new Error(r+': invalid value "'+s+'" must be < '+t);return a}const It={FREQ:function(r,t,e){if(Xt.indexOf(r)!==-1)t.freq=r;else throw new Error('invalid frequency "'+r+'" expected: "'+Xt.join(", ")+'"')},COUNT:function(r,t,e){t.count=O(r)},INTERVAL:function(r,t,e){t.interval=O(r),t.interval<1&&(t.interval=1)},UNTIL:function(r,t,e){r.length>10?t.until=b.icalendar.value["date-time"].fromICAL(r):t.until=b.icalendar.value.date.fromICAL(r),e||(t.until=h.fromString(t.until))},WKST:function(r,t,e){if(d0.test(r))t.wkst=w.icalDayToNumericDay(r);else throw new Error('invalid WKST value "'+r+'"')}},kt={BYSECOND:Z.bind(void 0,"BYSECOND",0,60),BYMINUTE:Z.bind(void 0,"BYMINUTE",0,59),BYHOUR:Z.bind(void 0,"BYHOUR",0,23),BYDAY:function(r){if(c0.test(r))return r;throw new Error('invalid BYDAY value "'+r+'"')},BYMONTHDAY:Z.bind(void 0,"BYMONTHDAY",-31,31),BYYEARDAY:Z.bind(void 0,"BYYEARDAY",-366,366),BYWEEKNO:Z.bind(void 0,"BYWEEKNO",-53,53),BYMONTH:Z.bind(void 0,"BYMONTH",1,12),BYSETPOS:Z.bind(void 0,"BYSETPOS",-366,366)},m0=/\\\\|\\;|\\,|\\[Nn]/g,f0=/\\|;|,|\n/g,Qt=/\\\\|\\,|\\[Nn]/g,te=/\\|,|\n/g;function Vt(r,t){return{matches:/.*/,fromICAL:function(e,s){return T0(e,r,s)},toICAL:function(e,s){let a=t;return s&&(a=new RegExp(a.source+"|"+s,a.flags)),e.replace(a,function(i){switch(i){case"\\":return"\\\\";case";":return"\\;";case",":return"\\,";case` diff --git a/dist/dav-settings-personal-availability.mjs.map b/dist/dav-settings-personal-availability.mjs.map index 2e05ce01f6482..e8139afa0da24 100644 --- a/dist/dav-settings-personal-availability.mjs.map +++ b/dist/dav-settings-personal-availability.mjs.map @@ -1 +1 @@ -{"version":3,"file":"dav-settings-personal-availability.mjs","sources":["../build/frontend/apps/dav/src/utils/date.ts","../build/frontend/apps/dav/src/components/AbsenceForm.vue","../node_modules/icalzone/dist/zones.js","../node_modules/icalzone/dist/index.js","../node_modules/ical.js/dist/ical.js","../node_modules/uuid/dist-browser/stringify.js","../node_modules/uuid/dist-browser/rng.js","../node_modules/uuid/dist-browser/native.js","../node_modules/uuid/dist-browser/v4.js","../node_modules/@nextcloud/calendar-availability-vue/dist/index.mjs","../build/frontend/apps/dav/src/dav/client.ts","../build/frontend/apps/dav/src/service/CalendarService.ts","../build/frontend/apps/dav/src/service/PreferenceService.ts","../build/frontend/apps/dav/src/components/AvailabilityForm.vue","../build/frontend/apps/dav/src/views/UserAvailability.vue","../build/frontend/apps/dav/src/settings-personal-availability.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Format a date as 'YYYY-MM-DD'.\n *\n * @param date - A date instance to format.\n */\nexport function formatDateAsYMD(date: Date): `${number}-${number}-${number}` {\n\tconst year = date.getFullYear()\n\tconst month = (date.getMonth() + 1).toString().padStart(2, '0') as `${number}`\n\tconst day = date.getDate().toString().padStart(2, '0') as `${number}`\n\treturn `${year}-${month}-${day}`\n}\n","\n\n\n\n\n\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zonesMap = exports.defaultStart = void 0;\nexports.defaultStart = \"19700101T000000\";\nexports.zonesMap = new Map([\n [\n \"Africa/Abidjan\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Accra\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Addis_Ababa\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Algiers\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"CET\"\n }\n }\n ],\n [\n \"Africa/Asmara\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Bamako\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Bangui\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Banjul\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Bissau\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Blantyre\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Brazzaville\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Bujumbura\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Cairo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Africa/Casablanca\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Africa/Ceuta\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Africa/Conakry\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Dakar\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Dar_es_Salaam\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Djibouti\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Douala\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/El_Aaiun\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Africa/Freetown\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Gaborone\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Harare\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Johannesburg\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Juba\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Kampala\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Khartoum\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Kigali\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Kinshasa\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lagos\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Libreville\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lome\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Luanda\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lubumbashi\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Lusaka\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Malabo\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Maputo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Maseru\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Mbabane\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Mogadishu\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Monrovia\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Nairobi\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Ndjamena\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Niamey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Nouakchott\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Ouagadougou\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Porto-Novo\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Sao_Tome\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Tripoli\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Africa/Tunis\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"CET\"\n }\n }\n ],\n [\n \"Africa/Windhoek\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"America/Adak\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"t\": \"-1000\",\n \"n\": \"HST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-1000\",\n \"t\": \"-0900\",\n \"n\": \"HDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Anchorage\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Anguilla\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Antigua\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Araguaina\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Buenos_Aires\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Catamarca\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Cordoba\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Jujuy\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/La_Rioja\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Mendoza\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Rio_Gallegos\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Salta\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/San_Juan\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/San_Luis\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Tucuman\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Ushuaia\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Aruba\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Asuncion\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700322T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701004T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Atikokan\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Bahia_Banderas\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Bahia\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Barbados\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Belem\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Belize\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Blanc-Sablon\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Boa_Vista\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Bogota\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Boise\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Cambridge_Bay\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Campo_Grande\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Cancun\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Caracas\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Cayenne\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Cayman\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Chicago\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Chihuahua\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Costa_Rica\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Creston\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Cuiaba\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Curacao\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Danmarkshavn\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"America/Dawson_Creek\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Dawson\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Denver\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Detroit\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Dominica\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Edmonton\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Eirunepe\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/El_Salvador\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Fort_Nelson\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Fortaleza\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Glace_Bay\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Godthab\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701024T230000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19700328T220000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SA\"\n }\n }\n }\n ],\n [\n \"America/Goose_Bay\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Grand_Turk\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Grenada\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Guadeloupe\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Guatemala\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Guayaquil\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Guyana\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Halifax\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Havana\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"CST\",\n \"s\": \"19701101T010000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"CDT\",\n \"s\": \"19700308T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Hermosillo\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Indiana/Indianapolis\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Knox\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Marengo\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Petersburg\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Tell_City\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Vevay\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Vincennes\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Winamac\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Inuvik\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Iqaluit\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Jamaica\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Juneau\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kentucky/Louisville\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kentucky/Monticello\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kralendijk\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/La_Paz\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Lima\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Los_Angeles\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Lower_Princes\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Maceio\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Managua\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Manaus\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Marigot\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Martinique\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Matamoros\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Mazatlan\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Menominee\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Merida\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Metlakatla\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Mexico_City\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Miquelon\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Moncton\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Monterrey\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Montevideo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Montserrat\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Nassau\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/New_York\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Nipigon\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Nome\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Noronha\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"America/North_Dakota/Beulah\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/North_Dakota/Center\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/North_Dakota/New_Salem\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Ojinaga\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Panama\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Pangnirtung\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Paramaribo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Phoenix\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Port_of_Spain\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Port-au-Prince\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Porto_Velho\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Puerto_Rico\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Punta_Arenas\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Rainy_River\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Rankin_Inlet\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Recife\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Regina\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Resolute\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Rio_Branco\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Santarem\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Santiago\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700405T000000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19700906T000000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Santo_Domingo\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Sao_Paulo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Scoresbysund\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"t\": \"-0100\",\n \"n\": \"-01\",\n \"s\": \"19701025T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0100\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"America/Sitka\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/St_Barthelemy\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Johns\",\n {\n \"s\": {\n \"f\": \"-0230\",\n \"t\": \"-0330\",\n \"n\": \"NST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0330\",\n \"t\": \"-0230\",\n \"n\": \"NDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/St_Kitts\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Lucia\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Thomas\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Vincent\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Swift_Current\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Tegucigalpa\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Thule\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Thunder_Bay\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Tijuana\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Toronto\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Tortola\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Vancouver\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Whitehorse\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Winnipeg\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Yakutat\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Yellowknife\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Casey\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Antarctica/Davis\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Antarctica/DumontDUrville\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Antarctica/Macquarie\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Antarctica/Mawson\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Antarctica/McMurdo\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"NZST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"NZDT\",\n \"s\": \"19700927T020000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Palmer\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Antarctica/Rothera\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Antarctica/Syowa\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Antarctica/Troll\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0200\",\n \"n\": \"+02\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Vostok\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Arctic/Longyearbyen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Aden\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Almaty\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Amman\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701030T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1FR\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700326T235959\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1TH\"\n }\n }\n }\n ],\n [\n \"Asia/Anadyr\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Asia/Aqtau\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Aqtobe\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Ashgabat\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Atyrau\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Baghdad\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Bahrain\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Baku\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Bangkok\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Barnaul\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Beirut\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Bishkek\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Brunei\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Chita\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Choibalsan\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Colombo\",\n {\n \"s\": {\n \"f\": \"+0530\",\n \"n\": \"+0530\"\n }\n }\n ],\n [\n \"Asia/Damascus\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701030T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1FR\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700327T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1FR\"\n }\n }\n }\n ],\n [\n \"Asia/Dhaka\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Dili\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Dubai\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Dushanbe\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Famagusta\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Gaza\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701031T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700328T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SA\"\n }\n }\n }\n ],\n [\n \"Asia/Hebron\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701031T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700328T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SA\"\n }\n }\n }\n ],\n [\n \"Asia/Ho_Chi_Minh\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Hong_Kong\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"HKT\"\n }\n }\n ],\n [\n \"Asia/Hovd\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Irkutsk\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Istanbul\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Jakarta\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"WIB\"\n }\n }\n ],\n [\n \"Asia/Jayapura\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"WIT\"\n }\n }\n ],\n [\n \"Asia/Jerusalem\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"IST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"IDT\",\n \"s\": \"19700327T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1FR\"\n }\n }\n }\n ],\n [\n \"Asia/Kabul\",\n {\n \"s\": {\n \"f\": \"+0430\",\n \"n\": \"+0430\"\n }\n }\n ],\n [\n \"Asia/Kamchatka\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Asia/Karachi\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"PKT\"\n }\n }\n ],\n [\n \"Asia/Kathmandu\",\n {\n \"s\": {\n \"f\": \"+0545\",\n \"n\": \"+0545\"\n }\n }\n ],\n [\n \"Asia/Khandyga\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Kolkata\",\n {\n \"s\": {\n \"f\": \"+0530\",\n \"n\": \"IST\"\n }\n }\n ],\n [\n \"Asia/Krasnoyarsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Kuala_Lumpur\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Kuching\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Kuwait\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Macau\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Magadan\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Makassar\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"WITA\"\n }\n }\n ],\n [\n \"Asia/Manila\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"PST\"\n }\n }\n ],\n [\n \"Asia/Muscat\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Nicosia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Novokuznetsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Novosibirsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Omsk\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Oral\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Phnom_Penh\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Pontianak\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"WIB\"\n }\n }\n ],\n [\n \"Asia/Pyongyang\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"KST\"\n }\n }\n ],\n [\n \"Asia/Qatar\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Qyzylorda\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Riyadh\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Sakhalin\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Samarkand\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Seoul\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"KST\"\n }\n }\n ],\n [\n \"Asia/Shanghai\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Singapore\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Srednekolymsk\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Taipei\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Tashkent\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Tbilisi\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Tehran\",\n {\n \"s\": {\n \"f\": \"+0430\",\n \"t\": \"+0330\",\n \"n\": \"+0330\",\n \"s\": \"19700921T000000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"+0330\",\n \"t\": \"+0430\",\n \"n\": \"+0430\",\n \"s\": \"19700321T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"3SU\"\n }\n }\n }\n ],\n [\n \"Asia/Thimphu\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Tokyo\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"JST\"\n }\n }\n ],\n [\n \"Asia/Tomsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Ulaanbaatar\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Urumqi\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Ust-Nera\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Asia/Vientiane\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Vladivostok\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Asia/Yakutsk\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Yangon\",\n {\n \"s\": {\n \"f\": \"+0630\",\n \"n\": \"+0630\"\n }\n }\n ],\n [\n \"Asia/Yekaterinburg\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Yerevan\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Atlantic/Azores\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"t\": \"-0100\",\n \"n\": \"-01\",\n \"s\": \"19701025T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0100\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Bermuda\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Canary\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Cape_Verde\",\n {\n \"s\": {\n \"f\": \"-0100\",\n \"n\": \"-01\"\n }\n }\n ],\n [\n \"Atlantic/Faroe\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Madeira\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Reykjavik\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Atlantic/South_Georgia\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"Atlantic/St_Helena\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Atlantic/Stanley\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Australia/Adelaide\",\n {\n \"s\": {\n \"f\": \"+1030\",\n \"t\": \"+0930\",\n \"n\": \"ACST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0930\",\n \"t\": \"+1030\",\n \"n\": \"ACDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Brisbane\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"AEST\"\n }\n }\n ],\n [\n \"Australia/Broken_Hill\",\n {\n \"s\": {\n \"f\": \"+1030\",\n \"t\": \"+0930\",\n \"n\": \"ACST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0930\",\n \"t\": \"+1030\",\n \"n\": \"ACDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Currie\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Darwin\",\n {\n \"s\": {\n \"f\": \"+0930\",\n \"n\": \"ACST\"\n }\n }\n ],\n [\n \"Australia/Eucla\",\n {\n \"s\": {\n \"f\": \"+0845\",\n \"n\": \"+0845\"\n }\n }\n ],\n [\n \"Australia/Hobart\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Lindeman\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"AEST\"\n }\n }\n ],\n [\n \"Australia/Lord_Howe\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1030\",\n \"n\": \"+1030\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1030\",\n \"t\": \"+1100\",\n \"n\": \"+11\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Melbourne\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Perth\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"AWST\"\n }\n }\n ],\n [\n \"Australia/Sydney\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Etc/GMT-0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT-1\",\n {\n \"s\": {\n \"f\": \"-0100\",\n \"n\": \"-01\"\n }\n }\n ],\n [\n \"Etc/GMT-10\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Etc/GMT-11\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"-11\"\n }\n }\n ],\n [\n \"Etc/GMT-12\",\n {\n \"s\": {\n \"f\": \"-1200\",\n \"n\": \"-12\"\n }\n }\n ],\n [\n \"Etc/GMT-2\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"Etc/GMT-3\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Etc/GMT-4\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"Etc/GMT-5\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"Etc/GMT-6\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"-06\"\n }\n }\n ],\n [\n \"Etc/GMT-7\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"-07\"\n }\n }\n ],\n [\n \"Etc/GMT-8\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"n\": \"-08\"\n }\n }\n ],\n [\n \"Etc/GMT-9\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"n\": \"-09\"\n }\n }\n ],\n [\n \"Etc/GMT\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT+0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT+1\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Etc/GMT+10\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Etc/GMT+11\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Etc/GMT+12\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Etc/GMT+13\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Etc/GMT+14\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"n\": \"+14\"\n }\n }\n ],\n [\n \"Etc/GMT+2\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"+02\"\n }\n }\n ],\n [\n \"Etc/GMT+3\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Etc/GMT+4\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Etc/GMT+5\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Etc/GMT+6\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Etc/GMT+7\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Etc/GMT+8\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Etc/GMT+9\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Etc/GMT0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/Greenwich\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/UCT\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UCT\"\n }\n }\n ],\n [\n \"Etc/Universal\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Etc/UTC\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Etc/Zulu\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Europe/Amsterdam\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Andorra\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Astrakhan\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Athens\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Belgrade\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Berlin\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Bratislava\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Brussels\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Bucharest\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Budapest\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Busingen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Chisinau\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Copenhagen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Dublin\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"IST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Gibraltar\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Guernsey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Helsinki\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Isle_of_Man\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Istanbul\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Jersey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Kaliningrad\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Europe/Kiev\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Kirov\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Lisbon\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Ljubljana\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/London\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Luxembourg\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Madrid\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Malta\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Mariehamn\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Minsk\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Monaco\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Moscow\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"MSK\"\n }\n }\n ],\n [\n \"Europe/Nicosia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Oslo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Paris\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Podgorica\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Prague\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Riga\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Rome\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Samara\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/San_Marino\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Sarajevo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Saratov\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Simferopol\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"MSK\"\n }\n }\n ],\n [\n \"Europe/Skopje\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Sofia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Stockholm\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Tallinn\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Tirane\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Ulyanovsk\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Uzhgorod\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vaduz\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vatican\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vienna\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vilnius\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Volgograd\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Warsaw\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zagreb\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zaporozhye\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zurich\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Indian/Antananarivo\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Chagos\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Indian/Christmas\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Indian/Cocos\",\n {\n \"s\": {\n \"f\": \"+0630\",\n \"n\": \"+0630\"\n }\n }\n ],\n [\n \"Indian/Comoro\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Kerguelen\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Indian/Mahe\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Indian/Maldives\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Indian/Mauritius\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Indian/Mayotte\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Reunion\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Pacific/Apia\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"t\": \"+1300\",\n \"n\": \"+13\",\n \"s\": \"19700405T040000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1300\",\n \"t\": \"+1400\",\n \"n\": \"+14\",\n \"s\": \"19700927T030000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Auckland\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"NZST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"NZDT\",\n \"s\": \"19700927T020000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Bougainville\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Chatham\",\n {\n \"s\": {\n \"f\": \"+1345\",\n \"t\": \"+1245\",\n \"n\": \"+1245\",\n \"s\": \"19700405T034500\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1245\",\n \"t\": \"+1345\",\n \"n\": \"+1345\",\n \"s\": \"19700927T024500\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Chuuk\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Pacific/Easter\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"-06\",\n \"s\": \"19700404T220000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SA\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"-05\",\n \"s\": \"19700905T220000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"1SA\"\n }\n }\n }\n ],\n [\n \"Pacific/Efate\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Enderbury\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Fakaofo\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Fiji\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"+12\",\n \"s\": \"19700118T030000\",\n \"r\": {\n \"m\": 1,\n \"d\": \"-2SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"+13\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Funafuti\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Galapagos\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"-06\"\n }\n }\n ],\n [\n \"Pacific/Gambier\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"n\": \"-09\"\n }\n }\n ],\n [\n \"Pacific/Guadalcanal\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Guam\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"ChST\"\n }\n }\n ],\n [\n \"Pacific/Honolulu\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"HST\"\n }\n }\n ],\n [\n \"Pacific/Kiritimati\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"n\": \"+14\"\n }\n }\n ],\n [\n \"Pacific/Kosrae\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Kwajalein\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Majuro\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Marquesas\",\n {\n \"s\": {\n \"f\": \"-0930\",\n \"n\": \"-0930\"\n }\n }\n ],\n [\n \"Pacific/Midway\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"SST\"\n }\n }\n ],\n [\n \"Pacific/Nauru\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Niue\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"-11\"\n }\n }\n ],\n [\n \"Pacific/Norfolk\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Noumea\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Pago_Pago\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"SST\"\n }\n }\n ],\n [\n \"Pacific/Palau\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Pacific/Pitcairn\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"n\": \"-08\"\n }\n }\n ],\n [\n \"Pacific/Pohnpei\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Port_Moresby\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Pacific/Rarotonga\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Pacific/Saipan\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"ChST\"\n }\n }\n ],\n [\n \"Pacific/Tahiti\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Pacific/Tarawa\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Tongatapu\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Wake\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Wallis\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ]\n]);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getZoneString = exports.getZoneLines = void 0;\nconst zones_1 = require(\"./zones\"); // This module must be generated with `yarn run build-zones`.\nfunction renderZoneSub(data) {\n const { n, f, t, r, s } = data;\n return [\n `TZNAME:${n}`,\n `TZOFFSETFROM:${f}`,\n `TZOFFSETTO:${t || f}`,\n `DTSTART:${s || zones_1.defaultStart}`,\n ...(r ? [`RRULE:FREQ=${r.f || 'YEARLY'};BYMONTH=${r.m};BYDAY=${r.d}`] : []),\n ];\n}\n/**\n * Tries to resolve a given time zone to iCalendar time zone component\n * (`VTIMEZONE`) as string array (usually for further processing).\n * @param zoneName Time zone name (e.g. `America/Los_Angeles`)\n * @param includeWrapper Set to `false` to avoid including lines for\n * `BEGIN:VTIMEZONE` and `END:VTIMEZONE`.\n * @returns Lines of the iCalendar time zone component (`VTIMEZONE`), each line\n * individually as an array of strings.\n */\nfunction getZoneLines(zoneName, includeWrapper = true) {\n const zoneData = zones_1.zonesMap.get(zoneName);\n if (zoneData) {\n const { s, d } = zoneData;\n const lines = [\n ...(includeWrapper ? ['BEGIN:VTIMEZONE'] : []),\n `TZID:${zoneName}`,\n // `X-LIC-LOCATION:${zoneName}`, // Who uses this?\n 'BEGIN:STANDARD',\n ...renderZoneSub(s),\n 'END:STANDARD',\n ...(d ? [\n 'BEGIN:DAYLIGHT',\n ...renderZoneSub(d),\n 'END:DAYLIGHT',\n ] : []),\n ...(includeWrapper ? ['END:VTIMEZONE'] : []),\n ];\n return lines;\n }\n}\nexports.getZoneLines = getZoneLines;\n/**\n * Tries to resolve a given time zone to iCalendar time zone component\n * (`VTIMEZONE`) as string.\n * @param zoneName Time zone name (e.g. `America/Los_Angeles`)\n * @param includeWrapper Set to `false` to avoid including lines for\n * `BEGIN:VTIMEZONE` and `END:VTIMEZONE`.\n * @returns The iCalendar time zone component (`VTIMEZONE`) as string\n * with `\\r\\n` line breaks.\n */\nfunction getZoneString(zoneName, includeWrapper = true) {\n const lines = getZoneLines(zoneName, includeWrapper);\n return lines === null || lines === void 0 ? void 0 : lines.join('\\r\\n');\n}\nexports.getZoneString = getZoneString;\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n/**\n * Represents the BINARY value type, which contains extra methods for encoding and decoding.\n *\n * @memberof ICAL\n */\nclass Binary {\n /**\n * Creates a binary value from the given string.\n *\n * @param {String} aString The binary value string\n * @return {Binary} The binary value instance\n */\n static fromString(aString) {\n return new Binary(aString);\n }\n\n /**\n * Creates a new ICAL.Binary instance\n *\n * @param {String} aValue The binary data for this value\n */\n constructor(aValue) {\n this.value = aValue;\n }\n\n /**\n * The type name, to be used in the jCal object.\n * @default \"binary\"\n * @constant\n */\n icaltype = \"binary\";\n\n /**\n * Base64 decode the current value\n *\n * @return {String} The base64-decoded value\n */\n decodeValue() {\n return this._b64_decode(this.value);\n }\n\n /**\n * Encodes the passed parameter with base64 and sets the internal\n * value to the result.\n *\n * @param {String} aValue The raw binary value to encode\n */\n setEncodedValue(aValue) {\n this.value = this._b64_encode(aValue);\n }\n\n _b64_encode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Bayron Guevara\n // + improved by: Thunder.m\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + improved by: Rafał Kukawski (http://kukawski.pl)\n // * example 1: base64_encode('Kevin van Zonneveld');\n // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n //if (typeof this.window['atob'] == 'function') {\n // return atob(data);\n //}\n let b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\" +\n \"abcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = \"\",\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n let r = data.length % 3;\n\n return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);\n\n }\n\n _b64_decode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Thunder.m\n // + input by: Aman Gupta\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Onno Marsman\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + input by: Brett Zamir (http://brett-zamir.me)\n // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');\n // * returns 1: 'Kevin van Zonneveld'\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n //if (typeof this.window['btoa'] == 'function') {\n // return btoa(data);\n //}\n let b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\" +\n \"abcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n dec = \"\",\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data += '';\n\n do { // unpack four hexets into three octets using index points in b64\n h1 = b64.indexOf(data.charAt(i++));\n h2 = b64.indexOf(data.charAt(i++));\n h3 = b64.indexOf(data.charAt(i++));\n h4 = b64.indexOf(data.charAt(i++));\n\n bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n\n o1 = bits >> 16 & 0xff;\n o2 = bits >> 8 & 0xff;\n o3 = bits & 0xff;\n\n if (h3 == 64) {\n tmp_arr[ac++] = String.fromCharCode(o1);\n } else if (h4 == 64) {\n tmp_arr[ac++] = String.fromCharCode(o1, o2);\n } else {\n tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);\n }\n } while (i < data.length);\n\n dec = tmp_arr.join('');\n\n return dec;\n }\n\n /**\n * The string representation of this value\n * @return {String}\n */\n toString() {\n return this.value;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nconst DURATION_LETTERS = /([PDWHMTS]{1,1})/;\nconst DATA_PROPS_TO_COPY = [\"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"isNegative\"];\n\n/**\n * This class represents the \"duration\" value type, with various calculation\n * and manipulation methods.\n *\n * @memberof ICAL\n */\nclass Duration {\n /**\n * Returns a new ICAL.Duration instance from the passed seconds value.\n *\n * @param {Number} aSeconds The seconds to create the instance from\n * @return {Duration} The newly created duration instance\n */\n static fromSeconds(aSeconds) {\n return (new Duration()).fromSeconds(aSeconds);\n }\n\n /**\n * Checks if the given string is an iCalendar duration value.\n *\n * @param {String} value The raw ical value\n * @return {Boolean} True, if the given value is of the\n * duration ical type\n */\n static isValueString(string) {\n return (string[0] === 'P' || string[1] === 'P');\n }\n\n /**\n * Creates a new {@link ICAL.Duration} instance from the passed string.\n *\n * @param {String} aStr The string to parse\n * @return {Duration} The created duration instance\n */\n static fromString(aStr) {\n let pos = 0;\n let dict = Object.create(null);\n let chunks = 0;\n\n while ((pos = aStr.search(DURATION_LETTERS)) !== -1) {\n let type = aStr[pos];\n let numeric = aStr.slice(0, Math.max(0, pos));\n aStr = aStr.slice(pos + 1);\n\n chunks += parseDurationChunk(type, numeric, dict);\n }\n\n if (chunks < 2) {\n // There must be at least a chunk with \"P\" and some unit chunk\n throw new Error(\n 'invalid duration value: Not enough duration components in \"' + aStr + '\"'\n );\n }\n\n return new Duration(dict);\n }\n\n /**\n * Creates a new ICAL.Duration instance from the given data object.\n *\n * @param {Object} aData An object with members of the duration\n * @param {Number=} aData.weeks Duration in weeks\n * @param {Number=} aData.days Duration in days\n * @param {Number=} aData.hours Duration in hours\n * @param {Number=} aData.minutes Duration in minutes\n * @param {Number=} aData.seconds Duration in seconds\n * @param {Boolean=} aData.isNegative If true, the duration is negative\n * @return {Duration} The createad duration instance\n */\n static fromData(aData) {\n return new Duration(aData);\n }\n\n /**\n * Creates a new ICAL.Duration instance.\n *\n * @param {Object} data An object with members of the duration\n * @param {Number=} data.weeks Duration in weeks\n * @param {Number=} data.days Duration in days\n * @param {Number=} data.hours Duration in hours\n * @param {Number=} data.minutes Duration in minutes\n * @param {Number=} data.seconds Duration in seconds\n * @param {Boolean=} data.isNegative If true, the duration is negative\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.fromData(data);\n }\n\n /**\n * The weeks in this duration\n * @type {Number}\n * @default 0\n */\n weeks = 0;\n\n /**\n * The days in this duration\n * @type {Number}\n * @default 0\n */\n days = 0;\n\n /**\n * The days in this duration\n * @type {Number}\n * @default 0\n */\n hours = 0;\n\n /**\n * The minutes in this duration\n * @type {Number}\n * @default 0\n */\n minutes = 0;\n\n /**\n * The seconds in this duration\n * @type {Number}\n * @default 0\n */\n seconds = 0;\n\n /**\n * The seconds in this duration\n * @type {Boolean}\n * @default false\n */\n isNegative = false;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalduration\"\n */\n icalclass = \"icalduration\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"duration\"\n */\n icaltype = \"duration\";\n\n /**\n * Returns a clone of the duration object.\n *\n * @return {Duration} The cloned object\n */\n clone() {\n return Duration.fromData(this);\n }\n\n /**\n * The duration value expressed as a number of seconds.\n *\n * @return {Number} The duration value in seconds\n */\n toSeconds() {\n let seconds = this.seconds + 60 * this.minutes + 3600 * this.hours +\n 86400 * this.days + 7 * 86400 * this.weeks;\n return (this.isNegative ? -seconds : seconds);\n }\n\n /**\n * Reads the passed seconds value into this duration object. Afterwards,\n * members like {@link ICAL.Duration#days days} and {@link ICAL.Duration#weeks weeks} will be set up\n * accordingly.\n *\n * @param {Number} aSeconds The duration value in seconds\n * @return {Duration} Returns this instance\n */\n fromSeconds(aSeconds) {\n let secs = Math.abs(aSeconds);\n\n this.isNegative = (aSeconds < 0);\n this.days = trunc(secs / 86400);\n\n // If we have a flat number of weeks, use them.\n if (this.days % 7 == 0) {\n this.weeks = this.days / 7;\n this.days = 0;\n } else {\n this.weeks = 0;\n }\n\n secs -= (this.days + 7 * this.weeks) * 86400;\n\n this.hours = trunc(secs / 3600);\n secs -= this.hours * 3600;\n\n this.minutes = trunc(secs / 60);\n secs -= this.minutes * 60;\n\n this.seconds = secs;\n return this;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} aData An object with members of the duration\n * @param {Number=} aData.weeks Duration in weeks\n * @param {Number=} aData.days Duration in days\n * @param {Number=} aData.hours Duration in hours\n * @param {Number=} aData.minutes Duration in minutes\n * @param {Number=} aData.seconds Duration in seconds\n * @param {Boolean=} aData.isNegative If true, the duration is negative\n */\n fromData(aData) {\n for (let prop of DATA_PROPS_TO_COPY) {\n if (aData && prop in aData) {\n this[prop] = aData[prop];\n } else {\n this[prop] = 0;\n }\n }\n }\n\n /**\n * Resets the duration instance to the default values, i.e. PT0S\n */\n reset() {\n this.isNegative = false;\n this.weeks = 0;\n this.days = 0;\n this.hours = 0;\n this.minutes = 0;\n this.seconds = 0;\n }\n\n /**\n * Compares the duration instance with another one.\n *\n * @param {Duration} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(aOther) {\n let thisSeconds = this.toSeconds();\n let otherSeconds = aOther.toSeconds();\n return (thisSeconds > otherSeconds) - (thisSeconds < otherSeconds);\n }\n\n /**\n * Normalizes the duration instance. For example, a duration with a value\n * of 61 seconds will be normalized to 1 minute and 1 second.\n */\n normalize() {\n this.fromSeconds(this.toSeconds());\n }\n\n /**\n * The string representation of this duration.\n * @return {String}\n */\n toString() {\n if (this.toSeconds() == 0) {\n return \"PT0S\";\n } else {\n let str = \"\";\n if (this.isNegative) str += \"-\";\n str += \"P\";\n let hasWeeks = false;\n if (this.weeks) {\n if (this.days || this.hours || this.minutes || this.seconds) {\n str += (this.weeks * 7 + this.days) + \"D\";\n } else {\n str += (this.weeks + \"W\");\n hasWeeks = true;\n }\n } else if (this.days) {\n str += (this.days + \"D\");\n }\n\n if (!hasWeeks) {\n if (this.hours || this.minutes || this.seconds) {\n str += \"T\";\n if (this.hours) {\n str += this.hours + \"H\";\n }\n\n if (this.minutes) {\n str += this.minutes + \"M\";\n }\n\n if (this.seconds) {\n str += this.seconds + \"S\";\n }\n }\n }\n\n return str;\n }\n }\n\n /**\n * The iCalendar string representation of this duration.\n * @return {String}\n */\n toICALString() {\n return this.toString();\n }\n}\n\n/**\n * Internal helper function to handle a chunk of a duration.\n *\n * @private\n * @param {String} letter type of duration chunk\n * @param {String} number numeric value or -/+\n * @param {Object} dict target to assign values to\n */\nfunction parseDurationChunk(letter, number, object) {\n let type;\n switch (letter) {\n case 'P':\n if (number && number === '-') {\n object.isNegative = true;\n } else {\n object.isNegative = false;\n }\n // period\n break;\n case 'D':\n type = 'days';\n break;\n case 'W':\n type = 'weeks';\n break;\n case 'H':\n type = 'hours';\n break;\n case 'M':\n type = 'minutes';\n break;\n case 'S':\n type = 'seconds';\n break;\n default:\n // Not a valid chunk\n return 0;\n }\n\n if (type) {\n if (!number && number !== 0) {\n throw new Error(\n 'invalid duration value: Missing number before \"' + letter + '\"'\n );\n }\n let num = parseInt(number, 10);\n if (isStrictlyNaN(num)) {\n throw new Error(\n 'invalid duration value: Invalid number \"' + number + '\" before \"' + letter + '\"'\n );\n }\n object[type] = num;\n }\n\n return 1;\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").jCalComponent} jCalComponent\n * Imports the 'occurrenceDetails' type from the \"types.js\" module\n */\n\n/**\n * This class represents the \"period\" value type, with various calculation and manipulation methods.\n *\n * @memberof ICAL\n */\nclass Period {\n /**\n * Creates a new {@link ICAL.Period} instance from the passed string.\n *\n * @param {String} str The string to parse\n * @param {Property} prop The property this period will be on\n * @return {Period} The created period instance\n */\n static fromString(str, prop) {\n let parts = str.split('/');\n\n if (parts.length !== 2) {\n throw new Error(\n 'Invalid string value: \"' + str + '\" must contain a \"/\" char.'\n );\n }\n\n let options = {\n start: Time.fromDateTimeString(parts[0], prop)\n };\n\n let end = parts[1];\n\n if (Duration.isValueString(end)) {\n options.duration = Duration.fromString(end);\n } else {\n options.end = Time.fromDateTimeString(end, prop);\n }\n\n return new Period(options);\n }\n\n /**\n * Creates a new {@link ICAL.Period} instance from the given data object.\n * The passed data object cannot contain both and end date and a duration.\n *\n * @param {Object} aData An object with members of the period\n * @param {Time=} aData.start The start of the period\n * @param {Time=} aData.end The end of the period\n * @param {Duration=} aData.duration The duration of the period\n * @return {Period} The period instance\n */\n static fromData(aData) {\n return new Period(aData);\n }\n\n /**\n * Returns a new period instance from the given jCal data array. The first\n * member is always the start date string, the second member is either a\n * duration or end date string.\n *\n * @param {jCalComponent} aData The jCal data array\n * @param {Property} aProp The property this jCal data is on\n * @param {Boolean} aLenient If true, data value can be both date and date-time\n * @return {Period} The period instance\n */\n static fromJSON(aData, aProp, aLenient) {\n function fromDateOrDateTimeString(aValue, dateProp) {\n if (aLenient) {\n return Time.fromString(aValue, dateProp);\n } else {\n return Time.fromDateTimeString(aValue, dateProp);\n }\n }\n\n if (Duration.isValueString(aData[1])) {\n return Period.fromData({\n start: fromDateOrDateTimeString(aData[0], aProp),\n duration: Duration.fromString(aData[1])\n });\n } else {\n return Period.fromData({\n start: fromDateOrDateTimeString(aData[0], aProp),\n end: fromDateOrDateTimeString(aData[1], aProp)\n });\n }\n }\n\n /**\n * Creates a new ICAL.Period instance. The passed data object cannot contain both and end date and\n * a duration.\n *\n * @param {Object} aData An object with members of the period\n * @param {Time=} aData.start The start of the period\n * @param {Time=} aData.end The end of the period\n * @param {Duration=} aData.duration The duration of the period\n */\n constructor(aData) {\n this.wrappedJSObject = this;\n\n if (aData && 'start' in aData) {\n if (aData.start && !(aData.start instanceof Time)) {\n throw new TypeError('.start must be an instance of ICAL.Time');\n }\n this.start = aData.start;\n }\n\n if (aData && aData.end && aData.duration) {\n throw new Error('cannot accept both end and duration');\n }\n\n if (aData && 'end' in aData) {\n if (aData.end && !(aData.end instanceof Time)) {\n throw new TypeError('.end must be an instance of ICAL.Time');\n }\n this.end = aData.end;\n }\n\n if (aData && 'duration' in aData) {\n if (aData.duration && !(aData.duration instanceof Duration)) {\n throw new TypeError('.duration must be an instance of ICAL.Duration');\n }\n this.duration = aData.duration;\n }\n }\n\n\n /**\n * The start of the period\n * @type {Time}\n */\n start = null;\n\n /**\n * The end of the period\n * @type {Time}\n */\n end = null;\n\n /**\n * The duration of the period\n * @type {Duration}\n */\n duration = null;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalperiod\"\n */\n icalclass = \"icalperiod\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"period\"\n */\n icaltype = \"period\";\n\n /**\n * Returns a clone of the duration object.\n *\n * @return {Period} The cloned object\n */\n clone() {\n return Period.fromData({\n start: this.start ? this.start.clone() : null,\n end: this.end ? this.end.clone() : null,\n duration: this.duration ? this.duration.clone() : null\n });\n }\n\n /**\n * Calculates the duration of the period, either directly or by subtracting\n * start from end date.\n *\n * @return {Duration} The calculated duration\n */\n getDuration() {\n if (this.duration) {\n return this.duration;\n } else {\n return this.end.subtractDate(this.start);\n }\n }\n\n /**\n * Calculates the end date of the period, either directly or by adding\n * duration to start date.\n *\n * @return {Time} The calculated end date\n */\n getEnd() {\n if (this.end) {\n return this.end;\n } else {\n let end = this.start.clone();\n end.addDuration(this.duration);\n return end;\n }\n }\n\n /**\n * Compare this period with a date or other period. To maintain the logic where a.compare(b)\n * returns 1 when a > b, this function will return 1 when the period is after the date, 0 when the\n * date is within the period, and -1 when the period is before the date. When comparing two\n * periods, as soon as they overlap in any way this will return 0.\n *\n * @param {Time|Period} dt The date or other period to compare with\n */\n compare(dt) {\n if (dt.compare(this.start) < 0) {\n return 1;\n } else if (dt.compare(this.getEnd()) > 0) {\n return -1;\n } else {\n return 0;\n }\n }\n\n /**\n * The string representation of this period.\n * @return {String}\n */\n toString() {\n return this.start + \"/\" + (this.end || this.duration);\n }\n\n /**\n * The jCal representation of this period type.\n * @return {Object}\n */\n toJSON() {\n return [this.start.toString(), (this.end || this.duration).toString()];\n }\n\n /**\n * The iCalendar string representation of this period.\n * @return {String}\n */\n toICALString() {\n return this.start.toICALString() + \"/\" +\n (this.end || this.duration).toICALString();\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n *\n * @ignore\n * @typedef {import(\"./types.js\").timeInit} timeInit\n * Imports the 'timeInit' type from the \"types.js\" module\n */\n\n/**\n * @classdesc\n * iCalendar Time representation (similar to JS Date object). Fully\n * independent of system (OS) timezone / time. Unlike JS Date, the month\n * January is 1, not zero.\n *\n * @example\n * var time = new ICAL.Time({\n * year: 2012,\n * month: 10,\n * day: 11\n * minute: 0,\n * second: 0,\n * isDate: false\n * });\n *\n *\n * @memberof ICAL\n*/\nclass Time {\n static _dowCache = {};\n static _wnCache = {};\n\n /**\n * Returns the days in the given month\n *\n * @param {Number} month The month to check\n * @param {Number} year The year to check\n * @return {Number} The number of days in the month\n */\n static daysInMonth(month, year) {\n let _daysInMonth = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n let days = 30;\n\n if (month < 1 || month > 12) return days;\n\n days = _daysInMonth[month];\n\n if (month == 2) {\n days += Time.isLeapYear(year);\n }\n\n return days;\n }\n\n /**\n * Checks if the year is a leap year\n *\n * @param {Number} year The year to check\n * @return {Boolean} True, if the year is a leap year\n */\n static isLeapYear(year) {\n if (year <= 1752) {\n return ((year % 4) == 0);\n } else {\n return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));\n }\n }\n\n /**\n * Create a new ICAL.Time from the day of year and year. The date is returned\n * in floating timezone.\n *\n * @param {Number} aDayOfYear The day of year\n * @param {Number} aYear The year to create the instance in\n * @return {Time} The created instance with the calculated date\n */\n static fromDayOfYear(aDayOfYear, aYear) {\n let year = aYear;\n let doy = aDayOfYear;\n let tt = new Time();\n tt.auto_normalize = false;\n let is_leap = (Time.isLeapYear(year) ? 1 : 0);\n\n if (doy < 1) {\n year--;\n is_leap = (Time.isLeapYear(year) ? 1 : 0);\n doy += Time.daysInYearPassedMonth[is_leap][12];\n return Time.fromDayOfYear(doy, year);\n } else if (doy > Time.daysInYearPassedMonth[is_leap][12]) {\n is_leap = (Time.isLeapYear(year) ? 1 : 0);\n doy -= Time.daysInYearPassedMonth[is_leap][12];\n year++;\n return Time.fromDayOfYear(doy, year);\n }\n\n tt.year = year;\n tt.isDate = true;\n\n for (let month = 11; month >= 0; month--) {\n if (doy > Time.daysInYearPassedMonth[is_leap][month]) {\n tt.month = month + 1;\n tt.day = doy - Time.daysInYearPassedMonth[is_leap][month];\n break;\n }\n }\n\n tt.auto_normalize = true;\n return tt;\n }\n\n /**\n * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.\n *\n * @deprecated Use {@link ICAL.Time.fromDateString} instead\n * @param {String} str The string to create from\n * @return {Time} The date/time instance\n */\n static fromStringv2(str) {\n return new Time({\n year: parseInt(str.slice(0, 4), 10),\n month: parseInt(str.slice(5, 7), 10),\n day: parseInt(str.slice(8, 10), 10),\n isDate: true\n });\n }\n\n /**\n * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.\n *\n * @param {String} aValue The string to create from\n * @return {Time} The date/time instance\n */\n static fromDateString(aValue) {\n // Dates should have no timezone.\n // Google likes to sometimes specify Z on dates\n // we specifically ignore that to avoid issues.\n\n // YYYY-MM-DD\n // 2012-10-10\n return new Time({\n year: strictParseInt(aValue.slice(0, 4)),\n month: strictParseInt(aValue.slice(5, 7)),\n day: strictParseInt(aValue.slice(8, 10)),\n isDate: true\n });\n }\n\n /**\n * Returns a new ICAL.Time instance from a date-time string, e.g\n * 2015-01-02T03:04:05. If a property is specified, the timezone is set up\n * from the property's TZID parameter.\n *\n * @param {String} aValue The string to create from\n * @param {Property=} prop The property the date belongs to\n * @return {Time} The date/time instance\n */\n static fromDateTimeString(aValue, prop) {\n if (aValue.length < 19) {\n throw new Error(\n 'invalid date-time value: \"' + aValue + '\"'\n );\n }\n\n let zone;\n let zoneId;\n\n if (aValue.slice(-1) === 'Z') {\n zone = Timezone.utcTimezone;\n } else if (prop) {\n zoneId = prop.getParameter('tzid');\n\n if (prop.parent) {\n if (prop.parent.name === 'standard' || prop.parent.name === 'daylight') {\n // Per RFC 5545 3.8.2.4 and 3.8.2.2, start/end date-times within\n // these components MUST be specified in local time.\n zone = Timezone.localTimezone;\n } else if (zoneId) {\n // If the desired time zone is defined within the component tree,\n // fetch its definition and prefer that.\n zone = prop.parent.getTimeZoneByID(zoneId);\n }\n }\n }\n\n const timeData = {\n year: strictParseInt(aValue.slice(0, 4)),\n month: strictParseInt(aValue.slice(5, 7)),\n day: strictParseInt(aValue.slice(8, 10)),\n hour: strictParseInt(aValue.slice(11, 13)),\n minute: strictParseInt(aValue.slice(14, 16)),\n second: strictParseInt(aValue.slice(17, 19)),\n };\n\n // Although RFC 5545 requires that all TZIDs used within a file have a\n // corresponding time zone definition, we may not be parsing the full file\n // or we may be dealing with a non-compliant file; in either case, we can\n // check our own time zone service for the TZID in a last-ditch effort.\n if (zoneId && !zone) {\n timeData.timezone = zoneId;\n }\n\n // 2012-10-10T10:10:10(Z)?\n return new Time(timeData, zone);\n }\n\n /**\n * Returns a new ICAL.Time instance from a date or date-time string,\n *\n * @param {String} aValue The string to create from\n * @param {Property=} prop The property the date belongs to\n * @return {Time} The date/time instance\n */\n static fromString(aValue, aProperty) {\n if (aValue.length > 10) {\n return Time.fromDateTimeString(aValue, aProperty);\n } else {\n return Time.fromDateString(aValue);\n }\n }\n\n /**\n * Creates a new ICAL.Time instance from the given Javascript Date.\n *\n * @param {?Date} aDate The Javascript Date to read, or null to reset\n * @param {Boolean} [useUTC=false] If true, the UTC values of the date will be used\n */\n static fromJSDate(aDate, useUTC) {\n let tt = new Time();\n return tt.fromJSDate(aDate, useUTC);\n }\n\n /**\n * Creates a new ICAL.Time instance from the the passed data object.\n *\n * @param {timeInit} aData Time initialization\n * @param {Timezone=} aZone Timezone this position occurs in\n */\n static fromData = function fromData(aData, aZone) {\n let t = new Time();\n return t.fromData(aData, aZone);\n };\n\n /**\n * Creates a new ICAL.Time instance from the current moment.\n * The instance is “floating” - has no timezone relation.\n * To create an instance considering the time zone, call\n * ICAL.Time.fromJSDate(new Date(), true)\n * @return {Time}\n */\n static now() {\n return Time.fromJSDate(new Date(), false);\n }\n\n /**\n * Returns the date on which ISO week number 1 starts.\n *\n * @see Time#weekNumber\n * @param {Number} aYear The year to search in\n * @param {weekDay=} aWeekStart The week start weekday, used for calculation.\n * @return {Time} The date on which week number 1 starts\n */\n static weekOneStarts(aYear, aWeekStart) {\n let t = Time.fromData({\n year: aYear,\n month: 1,\n day: 1,\n isDate: true\n });\n\n let dow = t.dayOfWeek();\n let wkst = aWeekStart || Time.DEFAULT_WEEK_START;\n if (dow > Time.THURSDAY) {\n t.day += 7;\n }\n if (wkst > Time.THURSDAY) {\n t.day -= 7;\n }\n\n t.day -= dow - wkst;\n\n return t;\n }\n\n /**\n * Get the dominical letter for the given year. Letters range from A - G for\n * common years, and AG to GF for leap years.\n *\n * @param {Number} yr The year to retrieve the letter for\n * @return {String} The dominical letter.\n */\n static getDominicalLetter(yr) {\n let LTRS = \"GFEDCBA\";\n let dom = (yr + (yr / 4 | 0) + (yr / 400 | 0) - (yr / 100 | 0) - 1) % 7;\n let isLeap = Time.isLeapYear(yr);\n if (isLeap) {\n return LTRS[(dom + 6) % 7] + LTRS[dom];\n } else {\n return LTRS[dom];\n }\n }\n\n static #epochTime = null;\n /**\n * January 1st, 1970 as an ICAL.Time.\n * @type {Time}\n * @constant\n * @instance\n */\n static get epochTime() {\n if (!this.#epochTime) {\n this.#epochTime = Time.fromData({\n year: 1970,\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n isDate: false,\n timezone: \"Z\"\n });\n }\n return this.#epochTime;\n }\n\n static _cmp_attr(a, b, attr) {\n if (a[attr] > b[attr]) return 1;\n if (a[attr] < b[attr]) return -1;\n return 0;\n }\n\n /**\n * The days that have passed in the year after a given month. The array has\n * two members, one being an array of passed days for non-leap years, the\n * other analog for leap years.\n * @example\n * var isLeapYear = ICAL.Time.isLeapYear(year);\n * var passedDays = ICAL.Time.daysInYearPassedMonth[isLeapYear][month];\n * @type {Array.>}\n */\n static daysInYearPassedMonth = [\n [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365],\n [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]\n ];\n\n static SUNDAY = 1;\n static MONDAY = 2;\n static TUESDAY = 3;\n static WEDNESDAY = 4;\n static THURSDAY = 5;\n static FRIDAY = 6;\n static SATURDAY = 7;\n\n /**\n * The default weekday for the WKST part.\n * @constant\n * @default ICAL.Time.MONDAY\n */\n static DEFAULT_WEEK_START = 2; // MONDAY\n\n /**\n * Creates a new ICAL.Time instance.\n *\n * @param {timeInit} data Time initialization\n * @param {Timezone} zone timezone this position occurs in\n */\n constructor(data, zone) {\n this.wrappedJSObject = this;\n\n /**\n * @type {timeInit}\n * @private\n */\n this._time = Object.create(null);\n\n /* time defaults */\n this._time.year = 0;\n this._time.month = 1;\n this._time.day = 1;\n this._time.hour = 0;\n this._time.minute = 0;\n this._time.second = 0;\n this._time.isDate = false;\n\n this.fromData(data, zone);\n }\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icaltime\"\n */\n icalclass = \"icaltime\";\n _cachedUnixTime = null;\n\n /**\n * The type name, to be used in the jCal object. This value may change and\n * is strictly defined by the {@link ICAL.Time#isDate isDate} member.\n * @type {String}\n * @default \"date-time\"\n */\n get icaltype() {\n return this.isDate ? 'date' : 'date-time';\n }\n\n /**\n * The timezone for this time.\n * @type {Timezone}\n */\n zone = null;\n\n /**\n * Internal uses to indicate that a change has been made and the next read\n * operation must attempt to normalize the value (for example changing the\n * day to 33).\n *\n * @type {Boolean}\n * @private\n */\n _pendingNormalization = false;\n\n /**\n * The year of this date.\n * @type {Number}\n */\n get year() {\n return this._getTimeAttr('year');\n }\n\n set year(val) {\n this._setTimeAttr('year', val);\n }\n\n /**\n * The month of this date.\n * @type {Number}\n */\n get month() {\n return this._getTimeAttr('month');\n }\n\n set month(val) {\n this._setTimeAttr('month', val);\n }\n\n /**\n * The day of this date.\n * @type {Number}\n */\n get day() {\n return this._getTimeAttr('day');\n }\n\n set day(val) {\n this._setTimeAttr('day', val);\n }\n\n /**\n * The hour of this date-time.\n * @type {Number}\n */\n get hour() {\n return this._getTimeAttr('hour');\n }\n\n set hour(val) {\n this._setTimeAttr('hour', val);\n }\n\n /**\n * The minute of this date-time.\n * @type {Number}\n */\n get minute() {\n return this._getTimeAttr('minute');\n }\n\n set minute(val) {\n this._setTimeAttr('minute', val);\n }\n\n /**\n * The second of this date-time.\n * @type {Number}\n */\n get second() {\n return this._getTimeAttr('second');\n }\n\n set second(val) {\n this._setTimeAttr('second', val);\n }\n\n /**\n * If true, the instance represents a date (as opposed to a date-time)\n * @type {Boolean}\n */\n get isDate() {\n return this._getTimeAttr('isDate');\n }\n\n set isDate(val) {\n this._setTimeAttr('isDate', val);\n }\n\n /**\n * @private\n * @param {String} attr Attribute to get (one of: year, month,\n * day, hour, minute, second, isDate)\n * @return {Number|Boolean} Current value for the attribute\n */\n _getTimeAttr(attr) {\n if (this._pendingNormalization) {\n this._normalize();\n this._pendingNormalization = false;\n }\n\n return this._time[attr];\n }\n\n /**\n * @private\n * @param {String} attr Attribute to set (one of: year, month,\n * day, hour, minute, second, isDate)\n * @param {Number|Boolean} val New value for the attribute\n */\n _setTimeAttr(attr, val) {\n // Check if isDate will be set and if was not set to normalize date.\n // This avoids losing days when seconds, minutes and hours are zeroed\n // what normalize will do when time is a date.\n if (attr === \"isDate\" && val && !this._time.isDate) {\n this.adjust(0, 0, 0, 0);\n }\n this._cachedUnixTime = null;\n this._pendingNormalization = true;\n this._time[attr] = val;\n }\n\n /**\n * Returns a clone of the time object.\n *\n * @return {Time} The cloned object\n */\n clone() {\n return new Time(this._time, this.zone);\n }\n\n /**\n * Reset the time instance to epoch time\n */\n reset() {\n this.fromData(Time.epochTime);\n this.zone = Timezone.utcTimezone;\n }\n\n /**\n * Reset the time instance to the given date/time values.\n *\n * @param {Number} year The year to set\n * @param {Number} month The month to set\n * @param {Number} day The day to set\n * @param {Number} hour The hour to set\n * @param {Number} minute The minute to set\n * @param {Number} second The second to set\n * @param {Timezone} timezone The timezone to set\n */\n resetTo(year, month, day, hour, minute, second, timezone) {\n this.fromData({\n year: year,\n month: month,\n day: day,\n hour: hour,\n minute: minute,\n second: second,\n zone: timezone\n });\n }\n\n /**\n * Set up the current instance from the Javascript date value.\n *\n * @param {?Date} aDate The Javascript Date to read, or null to reset\n * @param {Boolean} [useUTC=false] If true, the UTC values of the date will be used\n */\n fromJSDate(aDate, useUTC) {\n if (!aDate) {\n this.reset();\n } else {\n if (useUTC) {\n this.zone = Timezone.utcTimezone;\n this.year = aDate.getUTCFullYear();\n this.month = aDate.getUTCMonth() + 1;\n this.day = aDate.getUTCDate();\n this.hour = aDate.getUTCHours();\n this.minute = aDate.getUTCMinutes();\n this.second = aDate.getUTCSeconds();\n } else {\n this.zone = Timezone.localTimezone;\n this.year = aDate.getFullYear();\n this.month = aDate.getMonth() + 1;\n this.day = aDate.getDate();\n this.hour = aDate.getHours();\n this.minute = aDate.getMinutes();\n this.second = aDate.getSeconds();\n }\n }\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {timeInit} aData Time initialization\n * @param {Timezone=} aZone Timezone this position occurs in\n */\n fromData(aData, aZone) {\n if (aData) {\n for (let [key, value] of Object.entries(aData)) {\n // ical type cannot be set\n if (key === 'icaltype') continue;\n this[key] = value;\n }\n }\n\n if (aZone) {\n this.zone = aZone;\n }\n\n if (aData && !(\"isDate\" in aData)) {\n this.isDate = !(\"hour\" in aData);\n } else if (aData && (\"isDate\" in aData)) {\n this.isDate = aData.isDate;\n }\n\n if (aData && \"timezone\" in aData) {\n let zone = TimezoneService.get(\n aData.timezone\n );\n\n this.zone = zone || Timezone.localTimezone;\n }\n\n if (aData && \"zone\" in aData) {\n this.zone = aData.zone;\n }\n\n if (!this.zone) {\n this.zone = Timezone.localTimezone;\n }\n\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Calculate the day of week.\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {weekDay}\n */\n dayOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let dowCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + firstDow;\n if (dowCacheKey in Time._dowCache) {\n return Time._dowCache[dowCacheKey];\n }\n\n // Using Zeller's algorithm\n let q = this.day;\n let m = this.month + (this.month < 3 ? 12 : 0);\n let Y = this.year - (this.month < 3 ? 1 : 0);\n\n let h = (q + Y + trunc(((m + 1) * 26) / 10) + trunc(Y / 4));\n { // eslint-disable-line no-constant-condition\n h += trunc(Y / 100) * 6 + trunc(Y / 400);\n }\n\n // Normalize to 1 = wkst\n h = ((h + 7 - firstDow) % 7) + 1;\n Time._dowCache[dowCacheKey] = h;\n return h;\n }\n\n /**\n * Calculate the day of year.\n * @return {Number}\n */\n dayOfYear() {\n let is_leap = (Time.isLeapYear(this.year) ? 1 : 0);\n let diypm = Time.daysInYearPassedMonth;\n return diypm[is_leap][this.month - 1] + this.day;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * week. The resulting ICAL.Time instance is of icaltype date, even if this\n * is a date-time.\n *\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Time} The start of the week (cloned)\n */\n startOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let result = this.clone();\n result.day -= ((this.dayOfWeek() + 7 - firstDow) % 7);\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the week.\n * The resulting ICAL.Time instance is of icaltype date, even if this is a\n * date-time.\n *\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Time} The end of the week (cloned)\n */\n endOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let result = this.clone();\n result.day += (7 - this.dayOfWeek() + firstDow - Time.SUNDAY) % 7;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * month. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The start of the month (cloned)\n */\n startOfMonth() {\n let result = this.clone();\n result.day = 1;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the\n * month. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The end of the month (cloned)\n */\n endOfMonth() {\n let result = this.clone();\n result.day = Time.daysInMonth(result.month, result.year);\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * year. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The start of the year (cloned)\n */\n startOfYear() {\n let result = this.clone();\n result.day = 1;\n result.month = 1;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the\n * year. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The end of the year (cloned)\n */\n endOfYear() {\n let result = this.clone();\n result.day = 31;\n result.month = 12;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * First calculates the start of the week, then returns the day of year for\n * this date. If the day falls into the previous year, the day is zero or negative.\n *\n * @param {weekDay=} aFirstDayOfWeek\n * The week start weekday, defaults to SUNDAY\n * @return {Number} The calculated day of year\n */\n startDoyWeek(aFirstDayOfWeek) {\n let firstDow = aFirstDayOfWeek || Time.SUNDAY;\n let delta = this.dayOfWeek() - firstDow;\n if (delta < 0) delta += 7;\n return this.dayOfYear() - delta;\n }\n\n /**\n * Get the dominical letter for the current year. Letters range from A - G\n * for common years, and AG to GF for leap years.\n *\n * @param {Number} yr The year to retrieve the letter for\n * @return {String} The dominical letter.\n */\n getDominicalLetter() {\n return Time.getDominicalLetter(this.year);\n }\n\n /**\n * Finds the nthWeekDay relative to the current month (not day). The\n * returned value is a day relative the month that this month belongs to so\n * 1 would indicate the first of the month and 40 would indicate a day in\n * the following month.\n *\n * @param {Number} aDayOfWeek Day of the week see the day name constants\n * @param {Number} aPos Nth occurrence of a given week day values\n * of 1 and 0 both indicate the first weekday of that type. aPos may\n * be either positive or negative\n *\n * @return {Number} numeric value indicating a day relative\n * to the current month of this time object\n */\n nthWeekDay(aDayOfWeek, aPos) {\n let daysInMonth = Time.daysInMonth(this.month, this.year);\n let weekday;\n let pos = aPos;\n\n let start = 0;\n\n let otherDay = this.clone();\n\n if (pos >= 0) {\n otherDay.day = 1;\n\n // because 0 means no position has been given\n // 1 and 0 indicate the same day.\n if (pos != 0) {\n // remove the extra numeric value\n pos--;\n }\n\n // set current start offset to current day.\n start = otherDay.day;\n\n // find the current day of week\n let startDow = otherDay.dayOfWeek();\n\n // calculate the difference between current\n // day of the week and desired day of the week\n let offset = aDayOfWeek - startDow;\n\n\n // if the offset goes into the past\n // week we add 7 so it goes into the next\n // week. We only want to go forward in time here.\n if (offset < 0)\n // this is really important otherwise we would\n // end up with dates from in the past.\n offset += 7;\n\n // add offset to start so start is the same\n // day of the week as the desired day of week.\n start += offset;\n\n // because we are going to add (and multiply)\n // the numeric value of the day we subtract it\n // from the start position so not to add it twice.\n start -= aDayOfWeek;\n\n // set week day\n weekday = aDayOfWeek;\n } else {\n\n // then we set it to the last day in the current month\n otherDay.day = daysInMonth;\n\n // find the ends weekday\n let endDow = otherDay.dayOfWeek();\n\n pos++;\n\n weekday = (endDow - aDayOfWeek);\n\n if (weekday < 0) {\n weekday += 7;\n }\n\n weekday = daysInMonth - weekday;\n }\n\n weekday += pos * 7;\n\n return start + weekday;\n }\n\n /**\n * Checks if current time is the nth weekday, relative to the current\n * month. Will always return false when rule resolves outside of current\n * month.\n *\n * @param {weekDay} aDayOfWeek Day of week to check\n * @param {Number} aPos Relative position\n * @return {Boolean} True, if it is the nth weekday\n */\n isNthWeekDay(aDayOfWeek, aPos) {\n let dow = this.dayOfWeek();\n\n if (aPos === 0 && dow === aDayOfWeek) {\n return true;\n }\n\n // get pos\n let day = this.nthWeekDay(aDayOfWeek, aPos);\n\n if (day === this.day) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Calculates the ISO 8601 week number. The first week of a year is the\n * week that contains the first Thursday. The year can have 53 weeks, if\n * January 1st is a Friday.\n *\n * Note there are regions where the first week of the year is the one that\n * starts on January 1st, which may offset the week number. Also, if a\n * different week start is specified, this will also affect the week\n * number.\n *\n * @see Time.weekOneStarts\n * @param {weekDay} aWeekStart The weekday the week starts with\n * @return {Number} The ISO week number\n */\n weekNumber(aWeekStart) {\n let wnCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + aWeekStart;\n if (wnCacheKey in Time._wnCache) {\n return Time._wnCache[wnCacheKey];\n }\n // This function courtesty of Julian Bucknall, published under the MIT license\n // http://www.boyet.com/articles/publishedarticles/calculatingtheisoweeknumb.html\n // plus some fixes to be able to use different week starts.\n let week1;\n\n let dt = this.clone();\n dt.isDate = true;\n let isoyear = this.year;\n\n if (dt.month == 12 && dt.day > 25) {\n week1 = Time.weekOneStarts(isoyear + 1, aWeekStart);\n if (dt.compare(week1) < 0) {\n week1 = Time.weekOneStarts(isoyear, aWeekStart);\n } else {\n isoyear++;\n }\n } else {\n week1 = Time.weekOneStarts(isoyear, aWeekStart);\n if (dt.compare(week1) < 0) {\n week1 = Time.weekOneStarts(--isoyear, aWeekStart);\n }\n }\n\n let daysBetween = (dt.subtractDate(week1).toSeconds() / 86400);\n let answer = trunc(daysBetween / 7) + 1;\n Time._wnCache[wnCacheKey] = answer;\n return answer;\n }\n\n /**\n * Adds the duration to the current time. The instance is modified in\n * place.\n *\n * @param {Duration} aDuration The duration to add\n */\n addDuration(aDuration) {\n let mult = (aDuration.isNegative ? -1 : 1);\n\n // because of the duration optimizations it is much\n // more efficient to grab all the values up front\n // then set them directly (which will avoid a normalization call).\n // So we don't actually normalize until we need it.\n let second = this.second;\n let minute = this.minute;\n let hour = this.hour;\n let day = this.day;\n\n second += mult * aDuration.seconds;\n minute += mult * aDuration.minutes;\n hour += mult * aDuration.hours;\n day += mult * aDuration.days;\n day += mult * 7 * aDuration.weeks;\n\n this.second = second;\n this.minute = minute;\n this.hour = hour;\n this.day = day;\n\n this._cachedUnixTime = null;\n }\n\n /**\n * Subtract the date details (_excluding_ timezone). Useful for finding\n * the relative difference between two time objects excluding their\n * timezone differences.\n *\n * @param {Time} aDate The date to subtract\n * @return {Duration} The difference as a duration\n */\n subtractDate(aDate) {\n let unixTime = this.toUnixTime() + this.utcOffset();\n let other = aDate.toUnixTime() + aDate.utcOffset();\n return Duration.fromSeconds(unixTime - other);\n }\n\n /**\n * Subtract the date details, taking timezones into account.\n *\n * @param {Time} aDate The date to subtract\n * @return {Duration} The difference in duration\n */\n subtractDateTz(aDate) {\n let unixTime = this.toUnixTime();\n let other = aDate.toUnixTime();\n return Duration.fromSeconds(unixTime - other);\n }\n\n /**\n * Compares the ICAL.Time instance with another one, or a period.\n *\n * @param {Time|Period} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\n if (other instanceof Period) {\n return -1 * other.compare(this);\n } else {\n let a = this.toUnixTime();\n let b = other.toUnixTime();\n\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n }\n }\n\n /**\n * Compares only the date part of this instance with another one.\n *\n * @param {Time} other The instance to compare with\n * @param {Timezone} tz The timezone to compare in\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compareDateOnlyTz(other, tz) {\n let a = this.convertToZone(tz);\n let b = other.convertToZone(tz);\n let rc = 0;\n\n if ((rc = Time._cmp_attr(a, b, \"year\")) != 0) return rc;\n if ((rc = Time._cmp_attr(a, b, \"month\")) != 0) return rc;\n if ((rc = Time._cmp_attr(a, b, \"day\")) != 0) return rc;\n\n return rc;\n }\n\n /**\n * Convert the instance into another timezone. The returned ICAL.Time\n * instance is always a copy.\n *\n * @param {Timezone} zone The zone to convert to\n * @return {Time} The copy, converted to the zone\n */\n convertToZone(zone) {\n let copy = this.clone();\n let zone_equals = (this.zone.tzid == zone.tzid);\n\n if (!this.isDate && !zone_equals) {\n Timezone.convert_time(copy, this.zone, zone);\n }\n\n copy.zone = zone;\n return copy;\n }\n\n /**\n * Calculates the UTC offset of the current date/time in the timezone it is\n * in.\n *\n * @return {Number} UTC offset in seconds\n */\n utcOffset() {\n if (this.zone == Timezone.localTimezone ||\n this.zone == Timezone.utcTimezone) {\n return 0;\n } else {\n return this.zone.utcOffset(this);\n }\n }\n\n /**\n * Returns an RFC 5545 compliant ical representation of this object.\n *\n * @return {String} ical date/date-time\n */\n toICALString() {\n let string = this.toString();\n\n if (string.length > 10) {\n return design.icalendar.value['date-time'].toICAL(string);\n } else {\n return design.icalendar.value.date.toICAL(string);\n }\n }\n\n /**\n * The string representation of this date/time, in jCal form\n * (including : and - separators).\n * @return {String}\n */\n toString() {\n let result = this.year + '-' +\n pad2(this.month) + '-' +\n pad2(this.day);\n\n if (!this.isDate) {\n result += 'T' + pad2(this.hour) + ':' +\n pad2(this.minute) + ':' +\n pad2(this.second);\n\n if (this.zone === Timezone.utcTimezone) {\n result += 'Z';\n }\n }\n\n return result;\n }\n\n /**\n * Converts the current instance to a Javascript date\n * @return {Date}\n */\n toJSDate() {\n if (this.zone == Timezone.localTimezone) {\n if (this.isDate) {\n return new Date(this.year, this.month - 1, this.day);\n } else {\n return new Date(this.year, this.month - 1, this.day,\n this.hour, this.minute, this.second, 0);\n }\n } else {\n return new Date(this.toUnixTime() * 1000);\n }\n }\n\n _normalize() {\n if (this._time.isDate) {\n this._time.hour = 0;\n this._time.minute = 0;\n this._time.second = 0;\n }\n this.adjust(0, 0, 0, 0);\n\n return this;\n }\n\n /**\n * Adjust the date/time by the given offset\n *\n * @param {Number} aExtraDays The extra amount of days\n * @param {Number} aExtraHours The extra amount of hours\n * @param {Number} aExtraMinutes The extra amount of minutes\n * @param {Number} aExtraSeconds The extra amount of seconds\n * @param {Number=} aTime The time to adjust, defaults to the\n * current instance.\n */\n adjust(aExtraDays, aExtraHours, aExtraMinutes, aExtraSeconds, aTime) {\n\n let minutesOverflow, hoursOverflow,\n daysOverflow = 0, yearsOverflow = 0;\n\n let second, minute, hour, day;\n let daysInMonth;\n\n let time = aTime || this._time;\n\n if (!time.isDate) {\n second = time.second + aExtraSeconds;\n time.second = second % 60;\n minutesOverflow = trunc(second / 60);\n if (time.second < 0) {\n time.second += 60;\n minutesOverflow--;\n }\n\n minute = time.minute + aExtraMinutes + minutesOverflow;\n time.minute = minute % 60;\n hoursOverflow = trunc(minute / 60);\n if (time.minute < 0) {\n time.minute += 60;\n hoursOverflow--;\n }\n\n hour = time.hour + aExtraHours + hoursOverflow;\n\n time.hour = hour % 24;\n daysOverflow = trunc(hour / 24);\n if (time.hour < 0) {\n time.hour += 24;\n daysOverflow--;\n }\n }\n\n\n // Adjust month and year first, because we need to know what month the day\n // is in before adjusting it.\n if (time.month > 12) {\n yearsOverflow = trunc((time.month - 1) / 12);\n } else if (time.month < 1) {\n yearsOverflow = trunc(time.month / 12) - 1;\n }\n\n time.year += yearsOverflow;\n time.month -= 12 * yearsOverflow;\n\n // Now take care of the days (and adjust month if needed)\n day = time.day + aExtraDays + daysOverflow;\n\n if (day > 0) {\n for (;;) {\n daysInMonth = Time.daysInMonth(time.month, time.year);\n if (day <= daysInMonth) {\n break;\n }\n\n time.month++;\n if (time.month > 12) {\n time.year++;\n time.month = 1;\n }\n\n day -= daysInMonth;\n }\n } else {\n while (day <= 0) {\n if (time.month == 1) {\n time.year--;\n time.month = 12;\n } else {\n time.month--;\n }\n\n day += Time.daysInMonth(time.month, time.year);\n }\n }\n\n time.day = day;\n\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Sets up the current instance from unix time, the number of seconds since\n * January 1st, 1970.\n *\n * @param {Number} seconds The seconds to set up with\n */\n fromUnixTime(seconds) {\n this.zone = Timezone.utcTimezone;\n // We could use `fromJSDate` here, but this is about twice as fast.\n // We could also clone `epochTime` and use `adjust` for a more\n // ical.js-centric approach, but this is about 100 times as fast.\n let date = new Date(seconds * 1000);\n this.year = date.getUTCFullYear();\n this.month = date.getUTCMonth() + 1;\n this.day = date.getUTCDate();\n if (this._time.isDate) {\n this.hour = 0;\n this.minute = 0;\n this.second = 0;\n } else {\n this.hour = date.getUTCHours();\n this.minute = date.getUTCMinutes();\n this.second = date.getUTCSeconds();\n }\n\n this._cachedUnixTime = null;\n }\n\n /**\n * Converts the current instance to seconds since January 1st 1970.\n *\n * @return {Number} Seconds since 1970\n */\n toUnixTime() {\n if (this._cachedUnixTime !== null) {\n return this._cachedUnixTime;\n }\n let offset = this.utcOffset();\n\n // we use the offset trick to ensure\n // that we are getting the actual UTC time\n let ms = Date.UTC(\n this.year,\n this.month - 1,\n this.day,\n this.hour,\n this.minute,\n this.second - offset\n );\n\n // seconds\n this._cachedUnixTime = ms / 1000;\n return this._cachedUnixTime;\n }\n\n /**\n * Converts time to into Object which can be serialized then re-created\n * using the constructor.\n *\n * @example\n * // toJSON will automatically be called\n * var json = JSON.stringify(mytime);\n *\n * var deserialized = JSON.parse(json);\n *\n * var time = new ICAL.Time(deserialized);\n *\n * @return {Object}\n */\n toJSON() {\n let copy = [\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'isDate'\n ];\n\n let result = Object.create(null);\n\n let i = 0;\n let len = copy.length;\n let prop;\n\n for (; i < len; i++) {\n prop = copy[i];\n result[prop] = this[prop];\n }\n\n if (this.zone) {\n result.timezone = this.zone.tzid;\n }\n\n return result;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").parserState} parserState\n * Imports the 'parserState' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\nconst CHAR = /[^ \\t]/;\nconst VALUE_DELIMITER = ':';\nconst PARAM_DELIMITER = ';';\nconst PARAM_NAME_DELIMITER = '=';\nconst DEFAULT_VALUE_TYPE$1 = 'unknown';\nconst DEFAULT_PARAM_TYPE = 'text';\nconst RFC6868_REPLACE_MAP$1 = { \"^'\": '\"', \"^n\": \"\\n\", \"^^\": \"^\" };\n\n/**\n * Parses iCalendar or vCard data into a raw jCal object. Consult\n * documentation on the {@tutorial layers|layers of parsing} for more\n * details.\n *\n * @function ICAL.parse\n * @memberof ICAL\n * @variation function\n * @todo Fix the API to be more clear on the return type\n * @param {String} input The string data to parse\n * @return {Object|Object[]} A single jCal object, or an array thereof\n */\nfunction parse(input) {\n let state = {};\n let root = state.component = [];\n\n state.stack = [root];\n\n parse._eachLine(input, function(err, line) {\n parse._handleContentLine(line, state);\n });\n\n\n // when there are still items on the stack\n // throw a fatal error, a component was not closed\n // correctly in that case.\n if (state.stack.length > 1) {\n throw new ParserError(\n 'invalid ical body. component began but did not end'\n );\n }\n\n state = null;\n\n return (root.length == 1 ? root[0] : root);\n}\n\n/**\n * Parse an iCalendar property value into the jCal for a single property\n *\n * @function ICAL.parse.property\n * @param {String} str\n * The iCalendar property string to parse\n * @param {designSet=} designSet\n * The design data to use for this property\n * @return {Object}\n * The jCal Object containing the property\n */\nparse.property = function(str, designSet) {\n let state = {\n component: [[], []],\n designSet: designSet || design.defaultSet\n };\n parse._handleContentLine(str, state);\n return state.component[1][0];\n};\n\n/**\n * Convenience method to parse a component. You can use ICAL.parse() directly\n * instead.\n *\n * @function ICAL.parse.component\n * @see ICAL.parse(function)\n * @param {String} str The iCalendar component string to parse\n * @return {Object} The jCal Object containing the component\n */\nparse.component = function(str) {\n return parse(str);\n};\n\n\n/**\n * An error that occurred during parsing.\n *\n * @param {String} message The error message\n * @memberof ICAL.parse\n * @extends {Error}\n */\nclass ParserError extends Error {\n name = this.constructor.name;\n}\n\n// classes & constants\nparse.ParserError = ParserError;\n\n\n/**\n * Handles a single line of iCalendar/vCard, updating the state.\n *\n * @private\n * @function ICAL.parse._handleContentLine\n * @param {String} line The content line to process\n * @param {parserState} state The current state of the line parsing\n */\nparse._handleContentLine = function(line, state) {\n // break up the parts of the line\n let valuePos = line.indexOf(VALUE_DELIMITER);\n let paramPos = line.indexOf(PARAM_DELIMITER);\n\n let lastParamIndex;\n let lastValuePos;\n\n // name of property or begin/end\n let name;\n let value;\n // params is only overridden if paramPos !== -1.\n // we can't do params = params || {} later on\n // because it sacrifices ops.\n let params = {};\n\n /**\n * Different property cases\n *\n *\n * 1. RRULE:FREQ=foo\n * // FREQ= is not a param but the value\n *\n * 2. ATTENDEE;ROLE=REQ-PARTICIPANT;\n * // ROLE= is a param because : has not happened yet\n */\n // when the parameter delimiter is after the\n // value delimiter then it is not a parameter.\n\n if ((paramPos !== -1 && valuePos !== -1)) {\n // when the parameter delimiter is after the\n // value delimiter then it is not a parameter.\n if (paramPos > valuePos) {\n paramPos = -1;\n }\n }\n\n let parsedParams;\n if (paramPos !== -1) {\n name = line.slice(0, Math.max(0, paramPos)).toLowerCase();\n parsedParams = parse._parseParameters(line.slice(Math.max(0, paramPos)), 0, state.designSet);\n if (parsedParams[2] == -1) {\n throw new ParserError(\"Invalid parameters in '\" + line + \"'\");\n }\n params = parsedParams[0];\n // Handle parameter values with multiple entries\n let parsedParamLength;\n if (typeof parsedParams[1] === 'string') {\n parsedParamLength = parsedParams[1].length;\n } else {\n parsedParamLength = parsedParams[1].reduce((accumulator, currentValue) => {\n return accumulator + currentValue.length;\n }, 0);\n }\n lastParamIndex = parsedParamLength + parsedParams[2] + paramPos;\n if ((lastValuePos =\n line.slice(Math.max(0, lastParamIndex)).indexOf(VALUE_DELIMITER)) !== -1) {\n value = line.slice(Math.max(0, lastParamIndex + lastValuePos + 1));\n } else {\n throw new ParserError(\"Missing parameter value in '\" + line + \"'\");\n }\n } else if (valuePos !== -1) {\n // without parmeters (BEGIN:VCAENDAR, CLASS:PUBLIC)\n name = line.slice(0, Math.max(0, valuePos)).toLowerCase();\n value = line.slice(Math.max(0, valuePos + 1));\n\n if (name === 'begin') {\n let newComponent = [value.toLowerCase(), [], []];\n if (state.stack.length === 1) {\n state.component.push(newComponent);\n } else {\n state.component[2].push(newComponent);\n }\n state.stack.push(state.component);\n state.component = newComponent;\n if (!state.designSet) {\n state.designSet = design.getDesignSet(state.component[0]);\n }\n return;\n } else if (name === 'end') {\n state.component = state.stack.pop();\n return;\n }\n // If it is not begin/end, then this is a property with an empty value,\n // which should be considered valid.\n } else {\n /**\n * Invalid line.\n * The rational to throw an error is we will\n * never be certain that the rest of the file\n * is sane and it is unlikely that we can serialize\n * the result correctly either.\n */\n throw new ParserError(\n 'invalid line (no token \";\" or \":\") \"' + line + '\"'\n );\n }\n\n let valueType;\n let multiValue = false;\n let structuredValue = false;\n let propertyDetails;\n let splitName;\n let ungroupedName;\n\n // fetch the ungrouped part of the name\n if (state.designSet.propertyGroups && name.indexOf('.') !== -1) {\n splitName = name.split('.');\n params.group = splitName[0];\n ungroupedName = splitName[1];\n } else {\n ungroupedName = name;\n }\n\n if (ungroupedName in state.designSet.property) {\n propertyDetails = state.designSet.property[ungroupedName];\n\n if ('multiValue' in propertyDetails) {\n multiValue = propertyDetails.multiValue;\n }\n\n if ('structuredValue' in propertyDetails) {\n structuredValue = propertyDetails.structuredValue;\n }\n\n if (value && 'detectType' in propertyDetails) {\n valueType = propertyDetails.detectType(value);\n }\n }\n\n // attempt to determine value\n if (!valueType) {\n if (!('value' in params)) {\n if (propertyDetails) {\n valueType = propertyDetails.defaultType;\n } else {\n valueType = DEFAULT_VALUE_TYPE$1;\n }\n } else {\n // possible to avoid this?\n valueType = params.value.toLowerCase();\n }\n }\n\n delete params.value;\n\n /**\n * Note on `var result` juggling:\n *\n * I observed that building the array in pieces has adverse\n * effects on performance, so where possible we inline the creation.\n * It is a little ugly but resulted in ~2000 additional ops/sec.\n */\n\n let result;\n if (multiValue && structuredValue) {\n value = parse._parseMultiValue(value, structuredValue, valueType, [], multiValue, state.designSet, structuredValue);\n result = [ungroupedName, params, valueType, value];\n } else if (multiValue) {\n result = [ungroupedName, params, valueType];\n parse._parseMultiValue(value, multiValue, valueType, result, null, state.designSet, false);\n } else if (structuredValue) {\n value = parse._parseMultiValue(value, structuredValue, valueType, [], null, state.designSet, structuredValue);\n result = [ungroupedName, params, valueType, value];\n } else {\n value = parse._parseValue(value, valueType, state.designSet, false);\n result = [ungroupedName, params, valueType, value];\n }\n // rfc6350 requires that in vCard 4.0 the first component is the VERSION\n // component with as value 4.0, note that 3.0 does not have this requirement.\n if (state.component[0] === 'vcard' && state.component[1].length === 0 &&\n !(name === 'version' && value === '4.0')) {\n state.designSet = design.getDesignSet(\"vcard3\");\n }\n state.component[1].push(result);\n};\n\n/**\n * Parse a value from the raw value into the jCard/jCal value.\n *\n * @private\n * @function ICAL.parse._parseValue\n * @param {String} value Original value\n * @param {String} type Type of value\n * @param {Object} designSet The design data to use for this value\n * @return {Object} varies on type\n */\nparse._parseValue = function(value, type, designSet, structuredValue) {\n if (type in designSet.value && 'fromICAL' in designSet.value[type]) {\n return designSet.value[type].fromICAL(value, structuredValue);\n }\n return value;\n};\n\n/**\n * Parse parameters from a string to object.\n *\n * @function ICAL.parse._parseParameters\n * @private\n * @param {String} line A single unfolded line\n * @param {Number} start Position to start looking for properties\n * @param {Object} designSet The design data to use for this property\n * @return {Array} Array containing key/valye pairs of parsed parameters, the\n * parsed value, and the position of the last parameter found\n */\nparse._parseParameters = function(line, start, designSet) {\n let lastParam = start;\n let pos = 0;\n let delim = PARAM_NAME_DELIMITER;\n let result = {};\n let name, lcname;\n let value, valuePos = -1;\n let type, multiValue, mvdelim;\n\n // find the next '=' sign\n // use lastParam and pos to find name\n // check if \" is used if so get value from \"->\"\n // then increment pos to find next ;\n\n while ((pos !== false) &&\n (pos = line.indexOf(delim, pos + 1)) !== -1) {\n\n name = line.slice(lastParam + 1, pos);\n if (name.length == 0) {\n throw new ParserError(\"Empty parameter name in '\" + line + \"'\");\n }\n lcname = name.toLowerCase();\n mvdelim = false;\n multiValue = false;\n\n if (lcname in designSet.param && designSet.param[lcname].valueType) {\n type = designSet.param[lcname].valueType;\n } else {\n type = DEFAULT_PARAM_TYPE;\n }\n\n if (lcname in designSet.param) {\n multiValue = designSet.param[lcname].multiValue;\n if (designSet.param[lcname].multiValueSeparateDQuote) {\n mvdelim = parse._rfc6868Escape('\"' + multiValue + '\"');\n }\n }\n\n let nextChar = line[pos + 1];\n if (nextChar === '\"') {\n valuePos = pos + 2;\n pos = line.indexOf('\"', valuePos);\n if (multiValue && pos != -1) {\n let extendedValue = true;\n while (extendedValue) {\n if (line[pos + 1] == multiValue && line[pos + 2] == '\"') {\n pos = line.indexOf('\"', pos + 3);\n } else {\n extendedValue = false;\n }\n }\n }\n if (pos === -1) {\n throw new ParserError(\n 'invalid line (no matching double quote) \"' + line + '\"'\n );\n }\n value = line.slice(valuePos, pos);\n lastParam = line.indexOf(PARAM_DELIMITER, pos);\n let propValuePos = line.indexOf(VALUE_DELIMITER, pos);\n // if either no next parameter or delimeter in property value, let's stop here\n if (lastParam === -1 || (propValuePos !== -1 && lastParam > propValuePos)) {\n pos = false;\n }\n } else {\n valuePos = pos + 1;\n\n // move to next \";\"\n let nextPos = line.indexOf(PARAM_DELIMITER, valuePos);\n let propValuePos = line.indexOf(VALUE_DELIMITER, valuePos);\n if (propValuePos !== -1 && nextPos > propValuePos) {\n // this is a delimiter in the property value, let's stop here\n nextPos = propValuePos;\n pos = false;\n } else if (nextPos === -1) {\n // no \";\"\n if (propValuePos === -1) {\n nextPos = line.length;\n } else {\n nextPos = propValuePos;\n }\n pos = false;\n } else {\n lastParam = nextPos;\n pos = nextPos;\n }\n\n value = line.slice(valuePos, nextPos);\n }\n\n const length_before = value.length;\n value = parse._rfc6868Escape(value);\n valuePos += length_before - value.length;\n if (multiValue) {\n let delimiter = mvdelim || multiValue;\n value = parse._parseMultiValue(value, delimiter, type, [], null, designSet);\n } else {\n value = parse._parseValue(value, type, designSet);\n }\n\n if (multiValue && (lcname in result)) {\n if (Array.isArray(result[lcname])) {\n result[lcname].push(value);\n } else {\n result[lcname] = [\n result[lcname],\n value\n ];\n }\n } else {\n result[lcname] = value;\n }\n }\n return [result, value, valuePos];\n};\n\n/**\n * Internal helper for rfc6868. Exposing this on ICAL.parse so that\n * hackers can disable the rfc6868 parsing if the really need to.\n *\n * @function ICAL.parse._rfc6868Escape\n * @param {String} val The value to escape\n * @return {String} The escaped value\n */\nparse._rfc6868Escape = function(val) {\n return val.replace(/\\^['n^]/g, function(x) {\n return RFC6868_REPLACE_MAP$1[x];\n });\n};\n\n/**\n * Parse a multi value string. This function is used either for parsing\n * actual multi-value property's values, or for handling parameter values. It\n * can be used for both multi-value properties and structured value properties.\n *\n * @private\n * @function ICAL.parse._parseMultiValue\n * @param {String} buffer The buffer containing the full value\n * @param {String} delim The multi-value delimiter\n * @param {String} type The value type to be parsed\n * @param {Array.} result The array to append results to, varies on value type\n * @param {String} innerMulti The inner delimiter to split each value with\n * @param {designSet} designSet The design data for this value\n * @return {?|Array.} Either an array of results, or the first result\n */\nparse._parseMultiValue = function(buffer, delim, type, result, innerMulti, designSet, structuredValue) {\n let pos = 0;\n let lastPos = 0;\n let value;\n if (delim.length === 0) {\n return buffer;\n }\n\n // split each piece\n while ((pos = unescapedIndexOf(buffer, delim, lastPos)) !== -1) {\n value = buffer.slice(lastPos, pos);\n if (innerMulti) {\n value = parse._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue);\n } else {\n value = parse._parseValue(value, type, designSet, structuredValue);\n }\n result.push(value);\n lastPos = pos + delim.length;\n }\n\n // on the last piece take the rest of string\n value = buffer.slice(lastPos);\n if (innerMulti) {\n value = parse._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue);\n } else {\n value = parse._parseValue(value, type, designSet, structuredValue);\n }\n result.push(value);\n\n return result.length == 1 ? result[0] : result;\n};\n\n/**\n * Process a complete buffer of iCalendar/vCard data line by line, correctly\n * unfolding content. Each line will be processed with the given callback\n *\n * @private\n * @function ICAL.parse._eachLine\n * @param {String} buffer The buffer to process\n * @param {function(?String, String)} callback The callback for each line\n */\nparse._eachLine = function(buffer, callback) {\n let len = buffer.length;\n let lastPos = buffer.search(CHAR);\n let pos = lastPos;\n let line;\n let firstChar;\n\n let newlineOffset;\n\n do {\n pos = buffer.indexOf('\\n', lastPos) + 1;\n\n if (pos > 1 && buffer[pos - 2] === '\\r') {\n newlineOffset = 2;\n } else {\n newlineOffset = 1;\n }\n\n if (pos === 0) {\n pos = len;\n newlineOffset = 0;\n }\n\n firstChar = buffer[lastPos];\n\n if (firstChar === ' ' || firstChar === '\\t') {\n // add to line\n line += buffer.slice(lastPos + 1, pos - newlineOffset);\n } else {\n if (line)\n callback(null, line);\n // push line\n line = buffer.slice(lastPos, pos - newlineOffset);\n }\n\n lastPos = pos;\n } while (pos !== len);\n\n // extra ending line\n line = line.trim();\n\n if (line.length)\n callback(null, line);\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nconst OPTIONS = [\"tzid\", \"location\", \"tznames\", \"latitude\", \"longitude\"];\n\n/**\n * Timezone representation.\n *\n * @example\n * var vcalendar;\n * var timezoneComp = vcalendar.getFirstSubcomponent('vtimezone');\n * var tzid = timezoneComp.getFirstPropertyValue('tzid');\n *\n * var timezone = new ICAL.Timezone({\n * component: timezoneComp,\n * tzid\n * });\n *\n * @memberof ICAL\n */\nclass Timezone {\n static _compare_change_fn(a, b) {\n if (a.year < b.year) return -1;\n else if (a.year > b.year) return 1;\n\n if (a.month < b.month) return -1;\n else if (a.month > b.month) return 1;\n\n if (a.day < b.day) return -1;\n else if (a.day > b.day) return 1;\n\n if (a.hour < b.hour) return -1;\n else if (a.hour > b.hour) return 1;\n\n if (a.minute < b.minute) return -1;\n else if (a.minute > b.minute) return 1;\n\n if (a.second < b.second) return -1;\n else if (a.second > b.second) return 1;\n\n return 0;\n }\n\n /**\n * Convert the date/time from one zone to the next.\n *\n * @param {Time} tt The time to convert\n * @param {Timezone} from_zone The source zone to convert from\n * @param {Timezone} to_zone The target zone to convert to\n * @return {Time} The converted date/time object\n */\n static convert_time(tt, from_zone, to_zone) {\n if (tt.isDate ||\n from_zone.tzid == to_zone.tzid ||\n from_zone == Timezone.localTimezone ||\n to_zone == Timezone.localTimezone) {\n tt.zone = to_zone;\n return tt;\n }\n\n let utcOffset = from_zone.utcOffset(tt);\n tt.adjust(0, 0, 0, - utcOffset);\n\n utcOffset = to_zone.utcOffset(tt);\n tt.adjust(0, 0, 0, utcOffset);\n\n return null;\n }\n\n /**\n * Creates a new ICAL.Timezone instance from the passed data object.\n *\n * @param {Component|Object} aData options for class\n * @param {String|Component} aData.component\n * If aData is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} aData.tzid The timezone identifier\n * @param {String} aData.location The timezone locationw\n * @param {String} aData.tznames An alternative string representation of the\n * timezone\n * @param {Number} aData.latitude The latitude of the timezone\n * @param {Number} aData.longitude The longitude of the timezone\n */\n static fromData(aData) {\n let tt = new Timezone();\n return tt.fromData(aData);\n }\n\n /**\n * The instance describing the UTC timezone\n * @type {Timezone}\n * @constant\n * @instance\n */\n static #utcTimezone = null;\n static get utcTimezone() {\n if (!this.#utcTimezone) {\n this.#utcTimezone = Timezone.fromData({\n tzid: \"UTC\"\n });\n }\n return this.#utcTimezone;\n }\n\n /**\n * The instance describing the local timezone\n * @type {Timezone}\n * @constant\n * @instance\n */\n static #localTimezone = null;\n static get localTimezone() {\n if (!this.#localTimezone) {\n this.#localTimezone = Timezone.fromData({\n tzid: \"floating\"\n });\n }\n return this.#localTimezone;\n }\n\n /**\n * Adjust a timezone change object.\n * @private\n * @param {Object} change The timezone change object\n * @param {Number} days The extra amount of days\n * @param {Number} hours The extra amount of hours\n * @param {Number} minutes The extra amount of minutes\n * @param {Number} seconds The extra amount of seconds\n */\n static adjust_change(change, days, hours, minutes, seconds) {\n return Time.prototype.adjust.call(\n change,\n days,\n hours,\n minutes,\n seconds,\n change\n );\n }\n\n static _minimumExpansionYear = -1;\n static EXTRA_COVERAGE = 5;\n\n /**\n * Creates a new ICAL.Timezone instance, by passing in a tzid and component.\n *\n * @param {Component|Object} data options for class\n * @param {String|Component} data.component\n * If data is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} data.tzid The timezone identifier\n * @param {String} data.location The timezone locationw\n * @param {String} data.tznames An alternative string representation of the\n * timezone\n * @param {Number} data.latitude The latitude of the timezone\n * @param {Number} data.longitude The longitude of the timezone\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.fromData(data);\n }\n\n\n /**\n * Timezone identifier\n * @type {String}\n */\n tzid = \"\";\n\n /**\n * Timezone location\n * @type {String}\n */\n location = \"\";\n\n /**\n * Alternative timezone name, for the string representation\n * @type {String}\n */\n tznames = \"\";\n\n /**\n * The primary latitude for the timezone.\n * @type {Number}\n */\n latitude = 0.0;\n\n /**\n * The primary longitude for the timezone.\n * @type {Number}\n */\n longitude = 0.0;\n\n /**\n * The vtimezone component for this timezone.\n * @type {Component}\n */\n component = null;\n\n /**\n * The year this timezone has been expanded to. All timezone transition\n * dates until this year are known and can be used for calculation\n *\n * @private\n * @type {Number}\n */\n expandedUntilYear = 0;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icaltimezone\"\n */\n icalclass = \"icaltimezone\";\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Component|Object} aData options for class\n * @param {String|Component} aData.component\n * If aData is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} aData.tzid The timezone identifier\n * @param {String} aData.location The timezone locationw\n * @param {String} aData.tznames An alternative string representation of the\n * timezone\n * @param {Number} aData.latitude The latitude of the timezone\n * @param {Number} aData.longitude The longitude of the timezone\n */\n fromData(aData) {\n this.expandedUntilYear = 0;\n this.changes = [];\n\n if (aData instanceof Component) {\n // Either a component is passed directly\n this.component = aData;\n } else {\n // Otherwise the component may be in the data object\n if (aData && \"component\" in aData) {\n if (typeof aData.component == \"string\") {\n // If a string was passed, parse it as a component\n let jCal = parse(aData.component);\n this.component = new Component(jCal);\n } else if (aData.component instanceof Component) {\n // If it was a component already, then just set it\n this.component = aData.component;\n } else {\n // Otherwise just null out the component\n this.component = null;\n }\n }\n\n // Copy remaining passed properties\n for (let prop of OPTIONS) {\n if (aData && prop in aData) {\n this[prop] = aData[prop];\n }\n }\n }\n\n // If we have a component but no TZID, attempt to get it from the\n // component's properties.\n if (this.component instanceof Component && !this.tzid) {\n this.tzid = this.component.getFirstPropertyValue('tzid');\n }\n\n return this;\n }\n\n /**\n * Finds the utcOffset the given time would occur in this timezone.\n *\n * @param {Time} tt The time to check for\n * @return {Number} utc offset in seconds\n */\n utcOffset(tt) {\n if (this == Timezone.utcTimezone || this == Timezone.localTimezone) {\n return 0;\n }\n\n this._ensureCoverage(tt.year);\n\n if (!this.changes.length) {\n return 0;\n }\n\n let tt_change = {\n year: tt.year,\n month: tt.month,\n day: tt.day,\n hour: tt.hour,\n minute: tt.minute,\n second: tt.second\n };\n\n let change_num = this._findNearbyChange(tt_change);\n let change_num_to_use = -1;\n let step = 1;\n\n // TODO: replace with bin search?\n for (;;) {\n let change = clone(this.changes[change_num], true);\n if (change.utcOffset < change.prevUtcOffset) {\n Timezone.adjust_change(change, 0, 0, 0, change.utcOffset);\n } else {\n Timezone.adjust_change(change, 0, 0, 0,\n change.prevUtcOffset);\n }\n\n let cmp = Timezone._compare_change_fn(tt_change, change);\n\n if (cmp >= 0) {\n change_num_to_use = change_num;\n } else {\n step = -1;\n }\n\n if (step == -1 && change_num_to_use != -1) {\n break;\n }\n\n change_num += step;\n\n if (change_num < 0) {\n return 0;\n }\n\n if (change_num >= this.changes.length) {\n break;\n }\n }\n\n let zone_change = this.changes[change_num_to_use];\n let utcOffset_change = zone_change.utcOffset - zone_change.prevUtcOffset;\n\n if (utcOffset_change < 0 && change_num_to_use > 0) {\n let tmp_change = clone(zone_change, true);\n Timezone.adjust_change(tmp_change, 0, 0, 0, tmp_change.prevUtcOffset);\n\n if (Timezone._compare_change_fn(tt_change, tmp_change) < 0) {\n let prev_zone_change = this.changes[change_num_to_use - 1];\n\n let want_daylight = false; // TODO\n\n if (zone_change.is_daylight != want_daylight &&\n prev_zone_change.is_daylight == want_daylight) {\n zone_change = prev_zone_change;\n }\n }\n }\n\n // TODO return is_daylight?\n return zone_change.utcOffset;\n }\n\n _findNearbyChange(change) {\n // find the closest match\n let idx = binsearchInsert(\n this.changes,\n change,\n Timezone._compare_change_fn\n );\n\n if (idx >= this.changes.length) {\n return this.changes.length - 1;\n }\n\n return idx;\n }\n\n _ensureCoverage(aYear) {\n if (Timezone._minimumExpansionYear == -1) {\n let today = Time.now();\n Timezone._minimumExpansionYear = today.year;\n }\n\n let changesEndYear = aYear;\n if (changesEndYear < Timezone._minimumExpansionYear) {\n changesEndYear = Timezone._minimumExpansionYear;\n }\n\n changesEndYear += Timezone.EXTRA_COVERAGE;\n\n if (!this.changes.length || this.expandedUntilYear < aYear) {\n let subcomps = this.component.getAllSubcomponents();\n let compLen = subcomps.length;\n let compIdx = 0;\n\n for (; compIdx < compLen; compIdx++) {\n this._expandComponent(\n subcomps[compIdx], changesEndYear, this.changes\n );\n }\n\n this.changes.sort(Timezone._compare_change_fn);\n this.expandedUntilYear = changesEndYear;\n }\n }\n\n _expandComponent(aComponent, aYear, changes) {\n if (!aComponent.hasProperty(\"dtstart\") ||\n !aComponent.hasProperty(\"tzoffsetto\") ||\n !aComponent.hasProperty(\"tzoffsetfrom\")) {\n return null;\n }\n\n let dtstart = aComponent.getFirstProperty(\"dtstart\").getFirstValue();\n let change;\n\n function convert_tzoffset(offset) {\n return offset.factor * (offset.hours * 3600 + offset.minutes * 60);\n }\n\n function init_changes() {\n let changebase = {};\n changebase.is_daylight = (aComponent.name == \"daylight\");\n changebase.utcOffset = convert_tzoffset(\n aComponent.getFirstProperty(\"tzoffsetto\").getFirstValue()\n );\n\n changebase.prevUtcOffset = convert_tzoffset(\n aComponent.getFirstProperty(\"tzoffsetfrom\").getFirstValue()\n );\n\n return changebase;\n }\n\n if (!aComponent.hasProperty(\"rrule\") && !aComponent.hasProperty(\"rdate\")) {\n change = init_changes();\n change.year = dtstart.year;\n change.month = dtstart.month;\n change.day = dtstart.day;\n change.hour = dtstart.hour;\n change.minute = dtstart.minute;\n change.second = dtstart.second;\n\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n changes.push(change);\n } else {\n let props = aComponent.getAllProperties(\"rdate\");\n for (let rdate of props) {\n let time = rdate.getFirstValue();\n change = init_changes();\n\n change.year = time.year;\n change.month = time.month;\n change.day = time.day;\n\n if (time.isDate) {\n change.hour = dtstart.hour;\n change.minute = dtstart.minute;\n change.second = dtstart.second;\n\n if (dtstart.zone != Timezone.utcTimezone) {\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n }\n } else {\n change.hour = time.hour;\n change.minute = time.minute;\n change.second = time.second;\n\n if (time.zone != Timezone.utcTimezone) {\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n }\n }\n\n changes.push(change);\n }\n\n let rrule = aComponent.getFirstProperty(\"rrule\");\n\n if (rrule) {\n rrule = rrule.getFirstValue();\n change = init_changes();\n\n if (rrule.until && rrule.until.zone == Timezone.utcTimezone) {\n rrule.until.adjust(0, 0, 0, change.prevUtcOffset);\n rrule.until.zone = Timezone.localTimezone;\n }\n\n let iterator = rrule.iterator(dtstart);\n\n let occ;\n while ((occ = iterator.next())) {\n change = init_changes();\n if (occ.year > aYear || !occ) {\n break;\n }\n\n change.year = occ.year;\n change.month = occ.month;\n change.day = occ.day;\n change.hour = occ.hour;\n change.minute = occ.minute;\n change.second = occ.second;\n change.isDate = occ.isDate;\n\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n changes.push(change);\n }\n }\n }\n\n return changes;\n }\n\n /**\n * The string representation of this timezone.\n * @return {String}\n */\n toString() {\n return (this.tznames ? this.tznames : this.tzid);\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nlet zones = null;\n\n/**\n * @classdesc\n * Singleton class to contain timezones. Right now it is all manual registry in\n * the future we may use this class to download timezone information or handle\n * loading pre-expanded timezones.\n *\n * @exports module:ICAL.TimezoneService\n * @memberof ICAL\n */\nconst TimezoneService = {\n get count() {\n if (zones === null) {\n return 0;\n }\n\n return Object.keys(zones).length;\n },\n\n reset: function() {\n zones = Object.create(null);\n let utc = Timezone.utcTimezone;\n\n zones.Z = utc;\n zones.UTC = utc;\n zones.GMT = utc;\n },\n _hard_reset: function() {\n zones = null;\n },\n\n /**\n * Checks if timezone id has been registered.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {Boolean} False, when not present\n */\n has: function(tzid) {\n if (zones === null) {\n return false;\n }\n\n return !!zones[tzid];\n },\n\n /**\n * Returns a timezone by its tzid if present.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {Timezone | undefined} The timezone, or undefined if not found\n */\n get: function(tzid) {\n if (zones === null) {\n this.reset();\n }\n\n return zones[tzid];\n },\n\n /**\n * Registers a timezone object or component.\n *\n * @param {Component|Timezone} timezone\n * The initialized zone or vtimezone.\n *\n * @param {String=} name\n * The name of the timezone. Defaults to the component's TZID if not\n * passed.\n */\n register: function(timezone, name) {\n if (zones === null) {\n this.reset();\n }\n\n // This avoids a breaking change by the change of argument order\n // TODO remove in v3\n if (typeof timezone === \"string\" && name instanceof Timezone) {\n [timezone, name] = [name, timezone];\n }\n\n if (!name) {\n if (timezone instanceof Timezone) {\n name = timezone.tzid;\n } else {\n if (timezone.name === 'vtimezone') {\n timezone = new Timezone(timezone);\n name = timezone.tzid;\n }\n }\n }\n\n if (!name) {\n throw new TypeError(\"Neither a timezone nor a name was passed\");\n }\n\n if (timezone instanceof Timezone) {\n zones[name] = timezone;\n } else {\n throw new TypeError('timezone must be ICAL.Timezone or ICAL.Component');\n }\n },\n\n /**\n * Removes a timezone by its tzid from the list.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {?Timezone} The removed timezone, or null if not registered\n */\n remove: function(tzid) {\n if (zones === null) {\n return null;\n }\n\n return (delete zones[tzid]);\n }\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Helper functions used in various places within ical.js\n * @module ICAL.helpers\n */\n\n/**\n * Compiles a list of all referenced TZIDs in all subcomponents and\n * removes any extra VTIMEZONE subcomponents. In addition, if any TZIDs\n * are referenced by a component, but a VTIMEZONE does not exist,\n * an attempt will be made to generate a VTIMEZONE using ICAL.TimezoneService.\n *\n * @param {Component} vcal The top-level VCALENDAR component.\n * @return {Component} The ICAL.Component that was passed in.\n */\nfunction updateTimezones(vcal) {\n let allsubs, properties, vtimezones, reqTzid, i;\n\n if (!vcal || vcal.name !== \"vcalendar\") {\n //not a top-level vcalendar component\n return vcal;\n }\n\n //Store vtimezone subcomponents in an object reference by tzid.\n //Store properties from everything else in another array\n allsubs = vcal.getAllSubcomponents();\n properties = [];\n vtimezones = {};\n for (i = 0; i < allsubs.length; i++) {\n if (allsubs[i].name === \"vtimezone\") {\n let tzid = allsubs[i].getFirstProperty(\"tzid\").getFirstValue();\n vtimezones[tzid] = allsubs[i];\n } else {\n properties = properties.concat(allsubs[i].getAllProperties());\n }\n }\n\n //create an object with one entry for each required tz\n reqTzid = {};\n for (i = 0; i < properties.length; i++) {\n let tzid = properties[i].getParameter(\"tzid\");\n if (tzid) {\n reqTzid[tzid] = true;\n }\n }\n\n //delete any vtimezones that are not on the reqTzid list.\n for (let [tzid, comp] of Object.entries(vtimezones)) {\n if (!reqTzid[tzid]) {\n vcal.removeSubcomponent(comp);\n }\n }\n\n //create any missing, but registered timezones\n for (let tzid of Object.keys(reqTzid)) {\n if (!vtimezones[tzid] && TimezoneService.has(tzid)) {\n vcal.addSubcomponent(TimezoneService.get(tzid).component);\n }\n }\n\n return vcal;\n}\n\n/**\n * Checks if the given type is of the number type and also NaN.\n *\n * @param {Number} number The number to check\n * @return {Boolean} True, if the number is strictly NaN\n */\nfunction isStrictlyNaN(number) {\n return typeof(number) === 'number' && isNaN(number);\n}\n\n/**\n * Parses a string value that is expected to be an integer, when the valid is\n * not an integer throws a decoration error.\n *\n * @param {String} string Raw string input\n * @return {Number} Parsed integer\n */\nfunction strictParseInt(string) {\n let result = parseInt(string, 10);\n\n if (isStrictlyNaN(result)) {\n throw new Error(\n 'Could not extract integer from \"' + string + '\"'\n );\n }\n\n return result;\n}\n\n/**\n * Creates or returns a class instance of a given type with the initialization\n * data if the data is not already an instance of the given type.\n *\n * @example\n * var time = new ICAL.Time(...);\n * var result = ICAL.helpers.formatClassType(time, ICAL.Time);\n *\n * (result instanceof ICAL.Time)\n * // => true\n *\n * result = ICAL.helpers.formatClassType({}, ICAL.Time);\n * (result isntanceof ICAL.Time)\n * // => true\n *\n *\n * @param {Object} data object initialization data\n * @param {Object} type object type (like ICAL.Time)\n * @return {?} An instance of the found type.\n */\nfunction formatClassType(data, type) {\n if (typeof(data) === 'undefined') {\n return undefined;\n }\n\n if (data instanceof type) {\n return data;\n }\n return new type(data);\n}\n\n/**\n * Identical to indexOf but will only match values when they are not preceded\n * by a backslash character.\n *\n * @param {String} buffer String to search\n * @param {String} search Value to look for\n * @param {Number} pos Start position\n * @return {Number} The position, or -1 if not found\n */\nfunction unescapedIndexOf(buffer, search, pos) {\n while ((pos = buffer.indexOf(search, pos)) !== -1) {\n if (pos > 0 && buffer[pos - 1] === '\\\\') {\n pos += 1;\n } else {\n return pos;\n }\n }\n return -1;\n}\n\n/**\n * Find the index for insertion using binary search.\n *\n * @param {Array} list The list to search\n * @param {?} seekVal The value to insert\n * @param {function(?,?)} cmpfunc The comparison func, that can\n * compare two seekVals\n * @return {Number} The insert position\n */\nfunction binsearchInsert(list, seekVal, cmpfunc) {\n if (!list.length)\n return 0;\n\n let low = 0, high = list.length - 1,\n mid, cmpval;\n\n while (low <= high) {\n mid = low + Math.floor((high - low) / 2);\n cmpval = cmpfunc(seekVal, list[mid]);\n\n if (cmpval < 0)\n high = mid - 1;\n else if (cmpval > 0)\n low = mid + 1;\n else\n break;\n }\n\n if (cmpval < 0)\n return mid; // insertion is displacing, so use mid outright.\n else if (cmpval > 0)\n return mid + 1;\n else\n return mid;\n}\n\n/**\n * Clone the passed object or primitive. By default a shallow clone will be\n * executed.\n *\n * @param {*} aSrc The thing to clone\n * @param {Boolean=} aDeep If true, a deep clone will be performed\n * @return {*} The copy of the thing\n */\nfunction clone(aSrc, aDeep) {\n if (!aSrc || typeof aSrc != \"object\") {\n return aSrc;\n } else if (aSrc instanceof Date) {\n return new Date(aSrc.getTime());\n } else if (\"clone\" in aSrc) {\n return aSrc.clone();\n } else if (Array.isArray(aSrc)) {\n let arr = [];\n for (let i = 0; i < aSrc.length; i++) {\n arr.push(aDeep ? clone(aSrc[i], true) : aSrc[i]);\n }\n return arr;\n } else {\n let obj = {};\n for (let [name, value] of Object.entries(aSrc)) {\n if (aDeep) {\n obj[name] = clone(value, true);\n } else {\n obj[name] = value;\n }\n }\n return obj;\n }\n}\n\n/**\n * Performs iCalendar line folding. A line ending character is inserted and\n * the next line begins with a whitespace.\n *\n * @example\n * SUMMARY:This line will be fold\n * ed right in the middle of a word.\n *\n * @param {String} aLine The line to fold\n * @return {String} The folded line\n */\nfunction foldline(aLine) {\n let result = \"\";\n let line = aLine || \"\", pos = 0, line_length = 0;\n //pos counts position in line for the UTF-16 presentation\n //line_length counts the bytes for the UTF-8 presentation\n while (line.length) {\n let cp = line.codePointAt(pos);\n if (cp < 128) ++line_length;\n else if (cp < 2048) line_length += 2;//needs 2 UTF-8 bytes\n else if (cp < 65536) line_length += 3;\n else line_length += 4; //cp is less than 1114112\n if (line_length < ICALmodule.foldLength + 1)\n pos += cp > 65535 ? 2 : 1;\n else {\n result += ICALmodule.newLineChar + \" \" + line.slice(0, Math.max(0, pos));\n line = line.slice(Math.max(0, pos));\n pos = line_length = 0;\n }\n }\n return result.slice(ICALmodule.newLineChar.length + 1);\n}\n\n/**\n * Pads the given string or number with zeros so it will have at least two\n * characters.\n *\n * @param {String|Number} data The string or number to pad\n * @return {String} The number padded as a string\n */\nfunction pad2(data) {\n if (typeof(data) !== 'string') {\n // handle fractions.\n if (typeof(data) === 'number') {\n data = parseInt(data);\n }\n data = String(data);\n }\n\n let len = data.length;\n\n switch (len) {\n case 0:\n return '00';\n case 1:\n return '0' + data;\n default:\n return data;\n }\n}\n\n/**\n * Truncates the given number, correctly handling negative numbers.\n *\n * @param {Number} number The number to truncate\n * @return {Number} The truncated number\n */\nfunction trunc(number) {\n return (number < 0 ? Math.ceil(number) : Math.floor(number));\n}\n\n/**\n * Poor-man's cross-browser object extension. Doesn't support all the\n * features, but enough for our usage. Note that the target's properties are\n * not overwritten with the source properties.\n *\n * @example\n * var child = ICAL.helpers.extend(parent, {\n * \"bar\": 123\n * });\n *\n * @param {Object} source The object to extend\n * @param {Object} target The object to extend with\n * @return {Object} Returns the target.\n */\nfunction extend(source, target) {\n for (let key in source) {\n let descr = Object.getOwnPropertyDescriptor(source, key);\n if (descr && !Object.getOwnPropertyDescriptor(target, key)) {\n Object.defineProperty(target, key, descr);\n }\n }\n return target;\n}\n\nvar helpers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n binsearchInsert: binsearchInsert,\n clone: clone,\n extend: extend,\n foldline: foldline,\n formatClassType: formatClassType,\n isStrictlyNaN: isStrictlyNaN,\n pad2: pad2,\n strictParseInt: strictParseInt,\n trunc: trunc,\n unescapedIndexOf: unescapedIndexOf,\n updateTimezones: updateTimezones\n});\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This class represents the \"utc-offset\" value type, with various calculation and manipulation\n * methods.\n *\n * @memberof ICAL\n */\nclass UtcOffset {\n /**\n * Creates a new {@link ICAL.UtcOffset} instance from the passed string.\n *\n * @param {String} aString The string to parse\n * @return {Duration} The created utc-offset instance\n */\n static fromString(aString) {\n // -05:00\n let options = {};\n //TODO: support seconds per rfc5545 ?\n options.factor = (aString[0] === '+') ? 1 : -1;\n options.hours = strictParseInt(aString.slice(1, 3));\n options.minutes = strictParseInt(aString.slice(4, 6));\n\n return new UtcOffset(options);\n }\n\n /**\n * Creates a new {@link ICAL.UtcOffset} instance from the passed seconds\n * value.\n *\n * @param {Number} aSeconds The number of seconds to convert\n */\n static fromSeconds(aSeconds) {\n let instance = new UtcOffset();\n instance.fromSeconds(aSeconds);\n return instance;\n }\n\n /**\n * Creates a new ICAL.UtcOffset instance.\n *\n * @param {Object} aData An object with members of the utc offset\n * @param {Number=} aData.hours The hours for the utc offset\n * @param {Number=} aData.minutes The minutes in the utc offset\n * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1\n */\n constructor(aData) {\n this.fromData(aData);\n }\n\n /**\n * The hours in the utc-offset\n * @type {Number}\n */\n hours = 0;\n\n /**\n * The minutes in the utc-offset\n * @type {Number}\n */\n minutes = 0;\n\n /**\n * The sign of the utc offset, 1 for positive offset, -1 for negative\n * offsets.\n * @type {Number}\n */\n factor = 1;\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"utc-offset\"\n */\n icaltype = \"utc-offset\";\n\n /**\n * Returns a clone of the utc offset object.\n *\n * @return {UtcOffset} The cloned object\n */\n clone() {\n return UtcOffset.fromSeconds(this.toSeconds());\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} aData An object with members of the utc offset\n * @param {Number=} aData.hours The hours for the utc offset\n * @param {Number=} aData.minutes The minutes in the utc offset\n * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1\n */\n fromData(aData) {\n if (aData) {\n for (let [key, value] of Object.entries(aData)) {\n this[key] = value;\n }\n }\n this._normalize();\n }\n\n /**\n * Sets up the current instance from the given seconds value. The seconds\n * value is truncated to the minute. Offsets are wrapped when the world\n * ends, the hour after UTC+14:00 is UTC-12:00.\n *\n * @param {Number} aSeconds The seconds to convert into an offset\n */\n fromSeconds(aSeconds) {\n let secs = Math.abs(aSeconds);\n\n this.factor = aSeconds < 0 ? -1 : 1;\n this.hours = trunc(secs / 3600);\n\n secs -= (this.hours * 3600);\n this.minutes = trunc(secs / 60);\n return this;\n }\n\n /**\n * Convert the current offset to a value in seconds\n *\n * @return {Number} The offset in seconds\n */\n toSeconds() {\n return this.factor * (60 * this.minutes + 3600 * this.hours);\n }\n\n /**\n * Compare this utc offset with another one.\n *\n * @param {UtcOffset} other The other offset to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\n let a = this.toSeconds();\n let b = other.toSeconds();\n return (a > b) - (b > a);\n }\n\n _normalize() {\n // Range: 97200 seconds (with 1 hour inbetween)\n let secs = this.toSeconds();\n let factor = this.factor;\n while (secs < -43200) { // = UTC-12:00\n secs += 97200;\n }\n while (secs > 50400) { // = UTC+14:00\n secs -= 97200;\n }\n\n this.fromSeconds(secs);\n\n // Avoid changing the factor when on zero seconds\n if (secs == 0) {\n this.factor = factor;\n }\n }\n\n /**\n * The iCalendar string representation of this utc-offset.\n * @return {String}\n */\n toICALString() {\n return design.icalendar.value['utc-offset'].toICAL(this.toString());\n }\n\n /**\n * The string representation of this utc-offset.\n * @return {String}\n */\n toString() {\n return (this.factor == 1 ? \"+\" : \"-\") + pad2(this.hours) + ':' + pad2(this.minutes);\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Describes a vCard time, which has slight differences to the ICAL.Time.\n * Properties can be null if not specified, for example for dates with\n * reduced accuracy or truncation.\n *\n * Note that currently not all methods are correctly re-implemented for\n * VCardTime. For example, comparison will have undefined results when some\n * members are null.\n *\n * Also, normalization is not yet implemented for this class!\n *\n * @memberof ICAL\n * @extends {Time}\n */\nclass VCardTime extends Time {\n /**\n * Returns a new ICAL.VCardTime instance from a date and/or time string.\n *\n * @param {String} aValue The string to create from\n * @param {String} aIcalType The type for this instance, e.g. date-and-or-time\n * @return {VCardTime} The date/time instance\n */\n static fromDateAndOrTimeString(aValue, aIcalType) {\n function part(v, s, e) {\n return v ? strictParseInt(v.slice(s, s + e)) : null;\n }\n let parts = aValue.split('T');\n let dt = parts[0], tmz = parts[1];\n let splitzone = tmz ? design.vcard.value.time._splitZone(tmz) : [];\n let zone = splitzone[0], tm = splitzone[1];\n\n let dtlen = dt ? dt.length : 0;\n let tmlen = tm ? tm.length : 0;\n\n let hasDashDate = dt && dt[0] == '-' && dt[1] == '-';\n let hasDashTime = tm && tm[0] == '-';\n\n let o = {\n year: hasDashDate ? null : part(dt, 0, 4),\n month: hasDashDate && (dtlen == 4 || dtlen == 7) ? part(dt, 2, 2) : dtlen == 7 ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 5, 2) : null,\n day: dtlen == 5 ? part(dt, 3, 2) : dtlen == 7 && hasDashDate ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 8, 2) : null,\n\n hour: hasDashTime ? null : part(tm, 0, 2),\n minute: hasDashTime && tmlen == 3 ? part(tm, 1, 2) : tmlen > 4 ? hasDashTime ? part(tm, 1, 2) : part(tm, 3, 2) : null,\n second: tmlen == 4 ? part(tm, 2, 2) : tmlen == 6 ? part(tm, 4, 2) : tmlen == 8 ? part(tm, 6, 2) : null\n };\n\n if (zone == 'Z') {\n zone = Timezone.utcTimezone;\n } else if (zone && zone[3] == ':') {\n zone = UtcOffset.fromString(zone);\n } else {\n zone = null;\n }\n\n return new VCardTime(o, zone, aIcalType);\n }\n\n\n /**\n * Creates a new ICAL.VCardTime instance.\n *\n * @param {Object} data The data for the time instance\n * @param {Number=} data.year The year for this date\n * @param {Number=} data.month The month for this date\n * @param {Number=} data.day The day for this date\n * @param {Number=} data.hour The hour for this date\n * @param {Number=} data.minute The minute for this date\n * @param {Number=} data.second The second for this date\n * @param {Timezone|UtcOffset} zone The timezone to use\n * @param {String} icaltype The type for this date/time object\n */\n constructor(data, zone, icaltype) {\n super(data, zone);\n this.icaltype = icaltype || \"date-and-or-time\";\n }\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"vcardtime\"\n */\n icalclass = \"vcardtime\";\n\n /**\n * The type name, to be used in the jCal object.\n * @type {String}\n * @default \"date-and-or-time\"\n */\n icaltype = \"date-and-or-time\";\n\n /**\n * Returns a clone of the vcard date/time object.\n *\n * @return {VCardTime} The cloned object\n */\n clone() {\n return new VCardTime(this._time, this.zone, this.icaltype);\n }\n\n _normalize() {\n return this;\n }\n\n /**\n * @inheritdoc\n */\n utcOffset() {\n if (this.zone instanceof UtcOffset) {\n return this.zone.toSeconds();\n } else {\n return Time.prototype.utcOffset.apply(this, arguments);\n }\n }\n\n /**\n * Returns an RFC 6350 compliant representation of this object.\n *\n * @return {String} vcard date/time string\n */\n toICALString() {\n return design.vcard.value[this.icaltype].toICAL(this.toString());\n }\n\n /**\n * The string representation of this date/time, in jCard form\n * (including : and - separators).\n * @return {String}\n */\n toString() {\n let y = this.year, m = this.month, d = this.day;\n let h = this.hour, mm = this.minute, s = this.second;\n\n let hasYear = y !== null, hasMonth = m !== null, hasDay = d !== null;\n let hasHour = h !== null, hasMinute = mm !== null, hasSecond = s !== null;\n\n let datepart = (hasYear ? pad2(y) + (hasMonth || hasDay ? '-' : '') : (hasMonth || hasDay ? '--' : '')) +\n (hasMonth ? pad2(m) : '') +\n (hasDay ? '-' + pad2(d) : '');\n let timepart = (hasHour ? pad2(h) : '-') + (hasHour && hasMinute ? ':' : '') +\n (hasMinute ? pad2(mm) : '') + (!hasHour && !hasMinute ? '-' : '') +\n (hasMinute && hasSecond ? ':' : '') +\n (hasSecond ? pad2(s) : '');\n\n let zone;\n if (this.zone === Timezone.utcTimezone) {\n zone = 'Z';\n } else if (this.zone instanceof UtcOffset) {\n zone = this.zone.toString();\n } else if (this.zone === Timezone.localTimezone) {\n zone = '';\n } else if (this.zone instanceof Timezone) {\n let offset = UtcOffset.fromSeconds(this.zone.utcOffset(this));\n zone = offset.toString();\n } else {\n zone = '';\n }\n\n switch (this.icaltype) {\n case \"time\":\n return timepart + zone;\n case \"date-and-or-time\":\n case \"date-time\":\n return datepart + (timepart == '--' ? '' : 'T' + timepart + zone);\n case \"date\":\n return datepart;\n }\n return null;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n */\n\n/**\n * An iterator for a single recurrence rule. This class usually doesn't have to be instanciated\n * directly, the convenience method {@link ICAL.Recur#iterator} can be used.\n *\n * @memberof ICAL\n */\nclass RecurIterator {\n static _indexMap = {\n \"BYSECOND\": 0,\n \"BYMINUTE\": 1,\n \"BYHOUR\": 2,\n \"BYDAY\": 3,\n \"BYMONTHDAY\": 4,\n \"BYYEARDAY\": 5,\n \"BYWEEKNO\": 6,\n \"BYMONTH\": 7,\n \"BYSETPOS\": 8\n };\n\n static _expandMap = {\n \"SECONDLY\": [1, 1, 1, 1, 1, 1, 1, 1],\n \"MINUTELY\": [2, 1, 1, 1, 1, 1, 1, 1],\n \"HOURLY\": [2, 2, 1, 1, 1, 1, 1, 1],\n \"DAILY\": [2, 2, 2, 1, 1, 1, 1, 1],\n \"WEEKLY\": [2, 2, 2, 2, 3, 3, 1, 1],\n \"MONTHLY\": [2, 2, 2, 2, 2, 3, 3, 1],\n \"YEARLY\": [2, 2, 2, 2, 2, 2, 2, 2]\n };\n\n static UNKNOWN = 0;\n static CONTRACT = 1;\n static EXPAND = 2;\n static ILLEGAL = 3;\n\n /**\n * Creates a new ICAL.RecurIterator instance. The options object may contain additional members\n * when resuming iteration from a previous run.\n *\n * @param {Object} options The iterator options\n * @param {Recur} options.rule The rule to iterate.\n * @param {Time} options.dtstart The start date of the event.\n * @param {Boolean=} options.initialized When true, assume that options are\n * from a previously constructed iterator. Initialization will not be\n * repeated.\n */\n constructor(options) {\n this.fromData(options);\n }\n\n /**\n * True when iteration is finished.\n * @type {Boolean}\n */\n completed = false;\n\n /**\n * The rule that is being iterated\n * @type {Recur}\n */\n rule = null;\n\n /**\n * The start date of the event being iterated.\n * @type {Time}\n */\n dtstart = null;\n\n /**\n * The last occurrence that was returned from the\n * {@link RecurIterator#next} method.\n * @type {Time}\n */\n last = null;\n\n /**\n * The sequence number from the occurrence\n * @type {Number}\n */\n occurrence_number = 0;\n\n /**\n * The indices used for the {@link ICAL.RecurIterator#by_data} object.\n * @type {Object}\n * @private\n */\n by_indices = null;\n\n /**\n * If true, the iterator has already been initialized\n * @type {Boolean}\n * @private\n */\n initialized = false;\n\n /**\n * The initializd by-data.\n * @type {Object}\n * @private\n */\n by_data = null;\n\n /**\n * The expanded yeardays\n * @type {Array}\n * @private\n */\n days = null;\n\n /**\n * The index in the {@link ICAL.RecurIterator#days} array.\n * @type {Number}\n * @private\n */\n days_index = 0;\n\n /**\n * Initialize the recurrence iterator from the passed data object. This\n * method is usually not called directly, you can initialize the iterator\n * through the constructor.\n *\n * @param {Object} options The iterator options\n * @param {Recur} options.rule The rule to iterate.\n * @param {Time} options.dtstart The start date of the event.\n * @param {Boolean=} options.initialized When true, assume that options are\n * from a previously constructed iterator. Initialization will not be\n * repeated.\n */\n fromData(options) {\n this.rule = formatClassType(options.rule, Recur);\n\n if (!this.rule) {\n throw new Error('iterator requires a (ICAL.Recur) rule');\n }\n\n this.dtstart = formatClassType(options.dtstart, Time);\n\n if (!this.dtstart) {\n throw new Error('iterator requires a (ICAL.Time) dtstart');\n }\n\n if (options.by_data) {\n this.by_data = options.by_data;\n } else {\n this.by_data = clone(this.rule.parts, true);\n }\n\n if (options.occurrence_number)\n this.occurrence_number = options.occurrence_number;\n\n this.days = options.days || [];\n if (options.last) {\n this.last = formatClassType(options.last, Time);\n }\n\n this.by_indices = options.by_indices;\n\n if (!this.by_indices) {\n this.by_indices = {\n \"BYSECOND\": 0,\n \"BYMINUTE\": 0,\n \"BYHOUR\": 0,\n \"BYDAY\": 0,\n \"BYMONTH\": 0,\n \"BYWEEKNO\": 0,\n \"BYMONTHDAY\": 0\n };\n }\n\n this.initialized = options.initialized || false;\n\n if (!this.initialized) {\n try {\n this.init();\n } catch (e) {\n if (e instanceof InvalidRecurrenceRuleError) {\n // Init may error if there are no possible recurrence instances from\n // the rule, but we don't want to bubble this error up. Instead, we\n // create an empty iterator.\n this.completed = true;\n } else {\n // Propagate other errors to consumers.\n throw e;\n }\n }\n }\n }\n\n /**\n * Initialize the iterator\n * @private\n */\n init() {\n this.initialized = true;\n this.last = this.dtstart.clone();\n let parts = this.by_data;\n\n if (\"BYDAY\" in parts) {\n // libical does this earlier when the rule is loaded, but we postpone to\n // now so we can preserve the original order.\n this.sort_byday_rules(parts.BYDAY);\n }\n\n // The BYYEARDAY may only appear with BYDAY\n if (\"BYYEARDAY\" in parts) {\n if (\"BYMONTH\" in parts || \"BYWEEKNO\" in parts ||\n \"BYMONTHDAY\" in parts) {\n throw new Error(\"Invalid BYYEARDAY rule\");\n }\n }\n\n // BYWEEKNO and BYMONTHDAY rule parts may not both appear\n if (\"BYWEEKNO\" in parts && \"BYMONTHDAY\" in parts) {\n throw new Error(\"BYWEEKNO does not fit to BYMONTHDAY\");\n }\n\n // For MONTHLY recurrences (FREQ=MONTHLY) neither BYYEARDAY nor\n // BYWEEKNO may appear.\n if (this.rule.freq == \"MONTHLY\" &&\n (\"BYYEARDAY\" in parts || \"BYWEEKNO\" in parts)) {\n throw new Error(\"For MONTHLY recurrences neither BYYEARDAY nor BYWEEKNO may appear\");\n }\n\n // For WEEKLY recurrences (FREQ=WEEKLY) neither BYMONTHDAY nor\n // BYYEARDAY may appear.\n if (this.rule.freq == \"WEEKLY\" &&\n (\"BYYEARDAY\" in parts || \"BYMONTHDAY\" in parts)) {\n throw new Error(\"For WEEKLY recurrences neither BYMONTHDAY nor BYYEARDAY may appear\");\n }\n\n // BYYEARDAY may only appear in YEARLY rules\n if (this.rule.freq != \"YEARLY\" && \"BYYEARDAY\" in parts) {\n throw new Error(\"BYYEARDAY may only appear in YEARLY rules\");\n }\n\n this.last.second = this.setup_defaults(\"BYSECOND\", \"SECONDLY\", this.dtstart.second);\n this.last.minute = this.setup_defaults(\"BYMINUTE\", \"MINUTELY\", this.dtstart.minute);\n this.last.hour = this.setup_defaults(\"BYHOUR\", \"HOURLY\", this.dtstart.hour);\n this.last.day = this.setup_defaults(\"BYMONTHDAY\", \"DAILY\", this.dtstart.day);\n this.last.month = this.setup_defaults(\"BYMONTH\", \"MONTHLY\", this.dtstart.month);\n\n if (this.rule.freq == \"WEEKLY\") {\n if (\"BYDAY\" in parts) {\n let [, dow] = this.ruleDayOfWeek(parts.BYDAY[0], this.rule.wkst);\n let wkdy = dow - this.last.dayOfWeek(this.rule.wkst);\n if ((this.last.dayOfWeek(this.rule.wkst) < dow && wkdy >= 0) || wkdy < 0) {\n // Initial time is after first day of BYDAY data\n this.last.day += wkdy;\n }\n } else {\n let dayName = Recur.numericDayToIcalDay(this.dtstart.dayOfWeek());\n parts.BYDAY = [dayName];\n }\n }\n\n if (this.rule.freq == \"YEARLY\") {\n // Some yearly recurrence rules may be specific enough to not actually\n // occur on a yearly basis, e.g. the 29th day of February or the fifth\n // Monday of a given month. The standard isn't clear on the intended\n // behavior in these cases, but `libical` at least will iterate until it\n // finds a matching year.\n // CAREFUL: Some rules may specify an occurrence that can never happen,\n // e.g. the first Monday of April so long as it falls on the 15th\n // through the 21st. Detecting these is non-trivial, so ensure that we\n // stop iterating at some point.\n const untilYear = this.rule.until ? this.rule.until.year : 20000;\n while (this.last.year <= untilYear) {\n this.expand_year_days(this.last.year);\n if (this.days.length > 0) {\n break;\n }\n this.increment_year(this.rule.interval);\n }\n\n if (this.days.length == 0) {\n throw new InvalidRecurrenceRuleError();\n }\n\n // If there's no occurrence in this year, try the following years. This\n // would only happen looking for day 366 or -366.\n if (!this._nextByYearDay() && !this.next_year() && !this.next_year() && !this.next_year()) {\n // This should not be possible, but just in case it is, stop.\n throw new InvalidRecurrenceRuleError();\n }\n }\n\n if (this.rule.freq == \"MONTHLY\") {\n if (this.has_by_data(\"BYDAY\")) {\n let tempLast = null;\n let initLast = this.last.clone();\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n\n // Check every weekday in BYDAY with relative dow and pos.\n for (let bydow of this.by_data.BYDAY) {\n this.last = initLast.clone();\n let [pos, dow] = this.ruleDayOfWeek(bydow);\n let dayOfMonth = this.last.nthWeekDay(dow, pos);\n\n // If |pos| >= 6, the byday is invalid for a monthly rule.\n if (pos >= 6 || pos <= -6) {\n throw new Error(\"Malformed values in BYDAY part\");\n }\n\n // If a Byday with pos=+/-5 is not in the current month it\n // must be searched in the next months.\n if (dayOfMonth > daysInMonth || dayOfMonth <= 0) {\n // Skip if we have already found a \"last\" in this month.\n if (tempLast && tempLast.month == initLast.month) {\n continue;\n }\n while (dayOfMonth > daysInMonth || dayOfMonth <= 0) {\n this.increment_month();\n daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n dayOfMonth = this.last.nthWeekDay(dow, pos);\n }\n }\n\n this.last.day = dayOfMonth;\n if (!tempLast || this.last.compare(tempLast) < 0) {\n tempLast = this.last.clone();\n }\n }\n this.last = tempLast.clone();\n\n //XXX: This feels like a hack, but we need to initialize\n // the BYMONTHDAY case correctly and byDayAndMonthDay handles\n // this case. It accepts a special flag which will avoid incrementing\n // the initial value without the flag days that match the start time\n // would be missed.\n if (this.has_by_data('BYMONTHDAY')) {\n this._byDayAndMonthDay(true);\n }\n\n if (this.last.day > daysInMonth || this.last.day == 0) {\n throw new Error(\"Malformed values in BYDAY part\");\n }\n } else if (this.has_by_data(\"BYMONTHDAY\")) {\n // Change the day value so that normalisation won't change the month.\n this.last.day = 1;\n\n // Get a sorted list of days in the starting month that match the rule.\n let normalized = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n ).filter(d => d >= this.last.day);\n\n if (normalized.length) {\n // There's at least one valid day, use it.\n this.last.day = normalized[0];\n this.by_data.BYMONTHDAY = normalized;\n } else {\n // There's no occurrence in this month, find the next valid month.\n // The longest possible sequence of skipped months is February-April-June,\n // so we might need to call next_month up to three times.\n if (!this.next_month() && !this.next_month() && !this.next_month()) {\n throw new InvalidRecurrenceRuleError();\n }\n }\n }\n }\n }\n\n /**\n * Retrieve the next occurrence from the iterator.\n * @return {Time}\n */\n next(again = false) {\n let before = (this.last ? this.last.clone() : null);\n\n if ((this.rule.count && this.occurrence_number >= this.rule.count) ||\n (this.rule.until && this.last.compare(this.rule.until) > 0)) {\n this.completed = true;\n }\n\n if (this.completed) {\n return null;\n }\n\n if (this.occurrence_number == 0 && this.last.compare(this.dtstart) >= 0) {\n // First of all, give the instance that was initialized\n this.occurrence_number++;\n return this.last;\n }\n\n let valid;\n let invalid_count = 0;\n do {\n valid = 1;\n\n switch (this.rule.freq) {\n case \"SECONDLY\":\n this.next_second();\n break;\n case \"MINUTELY\":\n this.next_minute();\n break;\n case \"HOURLY\":\n this.next_hour();\n break;\n case \"DAILY\":\n this.next_day();\n break;\n case \"WEEKLY\":\n this.next_week();\n break;\n case \"MONTHLY\":\n valid = this.next_month();\n if (valid) {\n invalid_count = 0;\n } else if (++invalid_count == 336) {\n // We've been through all 91 month variations and not found a recurrence. Stop.\n // (12 months and 29-day February × 7 starting days.)\n this.completed = true;\n return null;\n }\n break;\n case \"YEARLY\":\n valid = this.next_year();\n if (valid) {\n invalid_count = 0;\n } else if (++invalid_count == 28) {\n // We've been through all 14 year variations and not found a recurrence. Stop.\n // (365-day and 366-day years × 7 starting days.)\n this.completed = true;\n return null;\n }\n break;\n\n default:\n return null;\n }\n } while (!this.check_contracting_rules() ||\n this.last.compare(this.dtstart) < 0 ||\n !valid);\n\n if (this.last.compare(before) == 0) {\n if (again) {\n throw new Error(\"Same occurrence found twice, protecting you from death by recursion\");\n }\n this.next(true);\n }\n\n if (this.rule.until && this.last.compare(this.rule.until) > 0) {\n this.completed = true;\n return null;\n } else {\n this.occurrence_number++;\n return this.last;\n }\n }\n\n next_second() {\n return this.next_generic(\"BYSECOND\", \"SECONDLY\", \"second\", \"minute\");\n }\n\n increment_second(inc) {\n return this.increment_generic(inc, \"second\", 60, \"minute\");\n }\n\n next_minute() {\n return this.next_generic(\"BYMINUTE\", \"MINUTELY\",\n \"minute\", \"hour\", \"next_second\");\n }\n\n increment_minute(inc) {\n return this.increment_generic(inc, \"minute\", 60, \"hour\");\n }\n\n next_hour() {\n return this.next_generic(\"BYHOUR\", \"HOURLY\", \"hour\",\n \"monthday\", \"next_minute\");\n }\n\n increment_hour(inc) {\n this.increment_generic(inc, \"hour\", 24, \"monthday\");\n }\n\n next_day() {\n let this_freq = (this.rule.freq == \"DAILY\");\n\n if (this.next_hour() == 0) {\n return 0;\n }\n\n if (this_freq) {\n this.increment_monthday(this.rule.interval);\n } else {\n this.increment_monthday(1);\n }\n\n return 0;\n }\n\n next_week() {\n let end_of_data = 0;\n\n if (this.next_weekday_by_week() == 0) {\n return end_of_data;\n }\n\n if (this.has_by_data(\"BYWEEKNO\")) {\n this.by_indices.BYWEEKNO++;\n\n if (this.by_indices.BYWEEKNO == this.by_data.BYWEEKNO.length) {\n this.by_indices.BYWEEKNO = 0;\n end_of_data = 1;\n }\n\n // HACK should be first month of the year\n this.last.month = 1;\n this.last.day = 1;\n\n let week_no = this.by_data.BYWEEKNO[this.by_indices.BYWEEKNO];\n\n this.last.day += 7 * week_no;\n\n if (end_of_data) {\n this.increment_year(1);\n }\n } else {\n // Jump to the next week\n this.increment_monthday(7 * this.rule.interval);\n }\n\n return end_of_data;\n }\n\n /**\n * Normalize each by day rule for a given year/month.\n * Takes into account ordering and negative rules\n *\n * @private\n * @param {Number} year Current year.\n * @param {Number} month Current month.\n * @param {Array} rules Array of rules.\n *\n * @return {Array} sorted and normalized rules.\n * Negative rules will be expanded to their\n * correct positive values for easier processing.\n */\n normalizeByMonthDayRules(year, month, rules) {\n let daysInMonth = Time.daysInMonth(month, year);\n\n // XXX: This is probably bad for performance to allocate\n // a new array for each month we scan, if possible\n // we should try to optimize this...\n let newRules = [];\n\n let ruleIdx = 0;\n let len = rules.length;\n let rule;\n\n for (; ruleIdx < len; ruleIdx++) {\n rule = parseInt(rules[ruleIdx], 10);\n if (isNaN(rule)) {\n throw new Error('Invalid BYMONTHDAY value');\n }\n\n // if this rule falls outside of given\n // month discard it.\n if (Math.abs(rule) > daysInMonth) {\n continue;\n }\n\n // negative case\n if (rule < 0) {\n // we add (not subtract it is a negative number)\n // one from the rule because 1 === last day of month\n rule = daysInMonth + (rule + 1);\n } else if (rule === 0) {\n // skip zero: it is invalid.\n continue;\n }\n\n // only add unique items...\n if (newRules.indexOf(rule) === -1) {\n newRules.push(rule);\n }\n\n }\n\n // unique and sort\n return newRules.sort(function(a, b) { return a - b; });\n }\n\n /**\n * NOTES:\n * We are given a list of dates in the month (BYMONTHDAY) (23, etc..)\n * Also we are given a list of days (BYDAY) (MO, 2SU, etc..) when\n * both conditions match a given date (this.last.day) iteration stops.\n *\n * @private\n * @param {Boolean=} isInit When given true will not increment the\n * current day (this.last).\n */\n _byDayAndMonthDay(isInit) {\n let byMonthDay; // setup in initMonth\n let byDay = this.by_data.BYDAY;\n\n let date;\n let dateIdx = 0;\n let dateLen; // setup in initMonth\n let dayLen = byDay.length;\n\n // we are not valid by default\n let dataIsValid = 0;\n\n let daysInMonth;\n let self = this;\n // we need a copy of this, because a DateTime gets normalized\n // automatically if the day is out of range. At some points we\n // set the last day to 0 to start counting.\n let lastDay = this.last.day;\n\n function initMonth() {\n daysInMonth = Time.daysInMonth(\n self.last.month, self.last.year\n );\n\n byMonthDay = self.normalizeByMonthDayRules(\n self.last.year,\n self.last.month,\n self.by_data.BYMONTHDAY\n );\n\n dateLen = byMonthDay.length;\n\n // For the case of more than one occurrence in one month\n // we have to be sure to start searching after the last\n // found date or at the last BYMONTHDAY, unless we are\n // initializing the iterator because in this case we have\n // to consider the last found date too.\n while (byMonthDay[dateIdx] <= lastDay &&\n !(isInit && byMonthDay[dateIdx] == lastDay) &&\n dateIdx < dateLen - 1) {\n dateIdx++;\n }\n }\n\n function nextMonth() {\n // since the day is incremented at the start\n // of the loop below, we need to start at 0\n lastDay = 0;\n self.increment_month();\n dateIdx = 0;\n initMonth();\n }\n\n initMonth();\n\n // should come after initMonth\n if (isInit) {\n lastDay -= 1;\n }\n\n // Use a counter to avoid an infinite loop with malformed rules.\n // Stop checking after 4 years so we consider also a leap year.\n let monthsCounter = 48;\n\n while (!dataIsValid && monthsCounter) {\n monthsCounter--;\n // increment the current date. This is really\n // important otherwise we may fall into the infinite\n // loop trap. The initial date takes care of the case\n // where the current date is the date we are looking\n // for.\n date = lastDay + 1;\n\n if (date > daysInMonth) {\n nextMonth();\n continue;\n }\n\n // find next date\n let next = byMonthDay[dateIdx++];\n\n // this logic is dependent on the BYMONTHDAYS\n // being in order (which is done by #normalizeByMonthDayRules)\n if (next >= date) {\n // if the next month day is in the future jump to it.\n lastDay = next;\n } else {\n // in this case the 'next' monthday has past\n // we must move to the month.\n nextMonth();\n continue;\n }\n\n // Now we can loop through the day rules to see\n // if one matches the current month date.\n for (let dayIdx = 0; dayIdx < dayLen; dayIdx++) {\n let parts = this.ruleDayOfWeek(byDay[dayIdx]);\n let pos = parts[0];\n let dow = parts[1];\n\n this.last.day = lastDay;\n if (this.last.isNthWeekDay(dow, pos)) {\n // when we find the valid one we can mark\n // the conditions as met and break the loop.\n // (Because we have this condition above\n // it will also break the parent loop).\n dataIsValid = 1;\n break;\n }\n }\n\n // It is completely possible that the combination\n // cannot be matched in the current month.\n // When we reach the end of possible combinations\n // in the current month we iterate to the next one.\n // since dateIdx is incremented right after getting\n // \"next\", we don't need dateLen -1 here.\n if (!dataIsValid && dateIdx === dateLen) {\n nextMonth();\n continue;\n }\n }\n\n if (monthsCounter <= 0) {\n // Checked 4 years without finding a Byday that matches\n // a Bymonthday. Maybe the rule is not correct.\n throw new Error(\"Malformed values in BYDAY combined with BYMONTHDAY parts\");\n }\n\n\n return dataIsValid;\n }\n\n next_month() {\n let data_valid = 1;\n\n if (this.next_hour() == 0) {\n return data_valid;\n }\n\n if (this.has_by_data(\"BYDAY\") && this.has_by_data(\"BYMONTHDAY\")) {\n data_valid = this._byDayAndMonthDay();\n } else if (this.has_by_data(\"BYDAY\")) {\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n let setpos = 0;\n let setpos_total = 0;\n\n if (this.has_by_data(\"BYSETPOS\")) {\n let last_day = this.last.day;\n for (let day = 1; day <= daysInMonth; day++) {\n this.last.day = day;\n if (this.is_day_in_byday(this.last)) {\n setpos_total++;\n if (day <= last_day) {\n setpos++;\n }\n }\n }\n this.last.day = last_day;\n }\n\n data_valid = 0;\n let day;\n for (day = this.last.day + 1; day <= daysInMonth; day++) {\n this.last.day = day;\n\n if (this.is_day_in_byday(this.last)) {\n if (!this.has_by_data(\"BYSETPOS\") ||\n this.check_set_position(++setpos) ||\n this.check_set_position(setpos - setpos_total - 1)) {\n\n data_valid = 1;\n break;\n }\n }\n }\n\n if (day > daysInMonth) {\n this.last.day = 1;\n this.increment_month();\n\n if (this.is_day_in_byday(this.last)) {\n if (!this.has_by_data(\"BYSETPOS\") || this.check_set_position(1)) {\n data_valid = 1;\n }\n } else {\n data_valid = 0;\n }\n }\n } else if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_indices.BYMONTHDAY++;\n\n if (this.by_indices.BYMONTHDAY >= this.by_data.BYMONTHDAY.length) {\n this.by_indices.BYMONTHDAY = 0;\n this.increment_month();\n if (this.by_indices.BYMONTHDAY >= this.by_data.BYMONTHDAY.length) {\n return 0;\n }\n }\n\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n let day = this.by_data.BYMONTHDAY[this.by_indices.BYMONTHDAY];\n\n if (day < 0) {\n day = daysInMonth + day + 1;\n }\n\n if (day > daysInMonth) {\n this.last.day = 1;\n data_valid = this.is_day_in_byday(this.last);\n } else {\n this.last.day = day;\n }\n } else {\n this.increment_month();\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n if (this.by_data.BYMONTHDAY[0] > daysInMonth) {\n data_valid = 0;\n } else {\n this.last.day = this.by_data.BYMONTHDAY[0];\n }\n }\n\n return data_valid;\n }\n\n next_weekday_by_week() {\n let end_of_data = 0;\n\n if (this.next_hour() == 0) {\n return end_of_data;\n }\n\n if (!this.has_by_data(\"BYDAY\")) {\n return 1;\n }\n\n for (;;) {\n let tt = new Time();\n this.by_indices.BYDAY++;\n\n if (this.by_indices.BYDAY == Object.keys(this.by_data.BYDAY).length) {\n this.by_indices.BYDAY = 0;\n end_of_data = 1;\n }\n\n let coded_day = this.by_data.BYDAY[this.by_indices.BYDAY];\n let parts = this.ruleDayOfWeek(coded_day);\n let dow = parts[1];\n\n dow -= this.rule.wkst;\n\n if (dow < 0) {\n dow += 7;\n }\n\n tt.year = this.last.year;\n tt.month = this.last.month;\n tt.day = this.last.day;\n\n let startOfWeek = tt.startDoyWeek(this.rule.wkst);\n\n if (dow + startOfWeek < 1) {\n // The selected date is in the previous year\n if (!end_of_data) {\n continue;\n }\n }\n\n let next = Time.fromDayOfYear(startOfWeek + dow, this.last.year);\n\n /**\n * The normalization horrors below are due to\n * the fact that when the year/month/day changes\n * it can effect the other operations that come after.\n */\n this.last.year = next.year;\n this.last.month = next.month;\n this.last.day = next.day;\n\n return end_of_data;\n }\n }\n\n next_year() {\n if (this.next_hour() == 0) {\n return 0;\n }\n\n if (this.days.length == 0 || ++this.days_index == this.days.length) {\n this.days_index = 0;\n this.increment_year(this.rule.interval);\n if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_data.BYMONTHDAY = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n );\n }\n this.expand_year_days(this.last.year);\n if (this.days.length == 0) {\n return 0;\n }\n }\n\n return this._nextByYearDay();\n }\n\n _nextByYearDay() {\n let doy = this.days[this.days_index];\n let year = this.last.year;\n\n if (Math.abs(doy) == 366 && !Time.isLeapYear(this.last.year)) {\n return 0;\n }\n\n if (doy < 1) {\n // Time.fromDayOfYear(doy, year) indexes relative to the\n // start of the given year. That is different from the\n // semantics of BYYEARDAY where negative indexes are an\n // offset from the end of the given year.\n doy += 1;\n year += 1;\n }\n let next = Time.fromDayOfYear(doy, year);\n this.last.day = next.day;\n this.last.month = next.month;\n\n return 1;\n }\n\n /**\n * @param dow (eg: '1TU', '-1MO')\n * @param {weekDay=} aWeekStart The week start weekday\n * @return [pos, numericDow] (eg: [1, 3]) numericDow is relative to aWeekStart\n */\n ruleDayOfWeek(dow, aWeekStart) {\n let matches = dow.match(/([+-]?[0-9])?(MO|TU|WE|TH|FR|SA|SU)/);\n if (matches) {\n let pos = parseInt(matches[1] || 0, 10);\n dow = Recur.icalDayToNumericDay(matches[2], aWeekStart);\n return [pos, dow];\n } else {\n return [0, 0];\n }\n }\n\n next_generic(aRuleType, aInterval, aDateAttr, aFollowingAttr, aPreviousIncr) {\n let has_by_rule = (aRuleType in this.by_data);\n let this_freq = (this.rule.freq == aInterval);\n let end_of_data = 0;\n\n if (aPreviousIncr && this[aPreviousIncr]() == 0) {\n return end_of_data;\n }\n\n if (has_by_rule) {\n this.by_indices[aRuleType]++;\n let dta = this.by_data[aRuleType];\n\n if (this.by_indices[aRuleType] == dta.length) {\n this.by_indices[aRuleType] = 0;\n end_of_data = 1;\n }\n this.last[aDateAttr] = dta[this.by_indices[aRuleType]];\n } else if (this_freq) {\n this[\"increment_\" + aDateAttr](this.rule.interval);\n }\n\n if (has_by_rule && end_of_data && this_freq) {\n this[\"increment_\" + aFollowingAttr](1);\n }\n\n return end_of_data;\n }\n\n increment_monthday(inc) {\n for (let i = 0; i < inc; i++) {\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n this.last.day++;\n\n if (this.last.day > daysInMonth) {\n this.last.day -= daysInMonth;\n this.increment_month();\n }\n }\n }\n\n increment_month() {\n this.last.day = 1;\n if (this.has_by_data(\"BYMONTH\")) {\n this.by_indices.BYMONTH++;\n\n if (this.by_indices.BYMONTH == this.by_data.BYMONTH.length) {\n this.by_indices.BYMONTH = 0;\n this.increment_year(1);\n }\n\n this.last.month = this.by_data.BYMONTH[this.by_indices.BYMONTH];\n } else {\n if (this.rule.freq == \"MONTHLY\") {\n this.last.month += this.rule.interval;\n } else {\n this.last.month++;\n }\n\n this.last.month--;\n let years = trunc(this.last.month / 12);\n this.last.month %= 12;\n this.last.month++;\n\n if (years != 0) {\n this.increment_year(years);\n }\n }\n\n if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_data.BYMONTHDAY = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n );\n }\n }\n\n increment_year(inc) {\n // Don't jump into the next month if this.last is Feb 29.\n this.last.day = 1;\n this.last.year += inc;\n }\n\n increment_generic(inc, aDateAttr, aFactor, aNextIncrement) {\n this.last[aDateAttr] += inc;\n let nextunit = trunc(this.last[aDateAttr] / aFactor);\n this.last[aDateAttr] %= aFactor;\n if (nextunit != 0) {\n this[\"increment_\" + aNextIncrement](nextunit);\n }\n }\n\n has_by_data(aRuleType) {\n return (aRuleType in this.rule.parts);\n }\n\n expand_year_days(aYear) {\n let t = new Time();\n this.days = [];\n\n // We need our own copy with a few keys set\n let parts = {};\n let rules = [\"BYDAY\", \"BYWEEKNO\", \"BYMONTHDAY\", \"BYMONTH\", \"BYYEARDAY\"];\n for (let part of rules) {\n if (part in this.rule.parts) {\n parts[part] = this.rule.parts[part];\n }\n }\n\n if (\"BYMONTH\" in parts && \"BYWEEKNO\" in parts) {\n let valid = 1;\n let validWeeks = {};\n t.year = aYear;\n t.isDate = true;\n\n for (let monthIdx = 0; monthIdx < this.by_data.BYMONTH.length; monthIdx++) {\n let month = this.by_data.BYMONTH[monthIdx];\n t.month = month;\n t.day = 1;\n let first_week = t.weekNumber(this.rule.wkst);\n t.day = Time.daysInMonth(month, aYear);\n let last_week = t.weekNumber(this.rule.wkst);\n for (monthIdx = first_week; monthIdx < last_week; monthIdx++) {\n validWeeks[monthIdx] = 1;\n }\n }\n\n for (let weekIdx = 0; weekIdx < this.by_data.BYWEEKNO.length && valid; weekIdx++) {\n let weekno = this.by_data.BYWEEKNO[weekIdx];\n if (weekno < 52) {\n valid &= validWeeks[weekIdx];\n } else {\n valid = 0;\n }\n }\n\n if (valid) {\n delete parts.BYMONTH;\n } else {\n delete parts.BYWEEKNO;\n }\n }\n\n let partCount = Object.keys(parts).length;\n\n if (partCount == 0) {\n let t1 = this.dtstart.clone();\n t1.year = this.last.year;\n this.days.push(t1.dayOfYear());\n } else if (partCount == 1 && \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let t2 = this.dtstart.clone();\n t2.year = aYear;\n t2.month = month;\n t2.isDate = true;\n this.days.push(t2.dayOfYear());\n }\n } else if (partCount == 1 && \"BYMONTHDAY\" in parts) {\n for (let monthday of this.by_data.BYMONTHDAY) {\n let t3 = this.dtstart.clone();\n if (monthday < 0) {\n let daysInMonth = Time.daysInMonth(t3.month, aYear);\n monthday = monthday + daysInMonth + 1;\n }\n t3.day = monthday;\n t3.year = aYear;\n t3.isDate = true;\n this.days.push(t3.dayOfYear());\n }\n } else if (partCount == 2 &&\n \"BYMONTHDAY\" in parts &&\n \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let daysInMonth = Time.daysInMonth(month, aYear);\n for (let monthday of this.by_data.BYMONTHDAY) {\n if (monthday < 0) {\n monthday = monthday + daysInMonth + 1;\n }\n t.day = monthday;\n t.month = month;\n t.year = aYear;\n t.isDate = true;\n\n this.days.push(t.dayOfYear());\n }\n }\n } else if (partCount == 1 && \"BYWEEKNO\" in parts) ; else if (partCount == 2 &&\n \"BYWEEKNO\" in parts &&\n \"BYMONTHDAY\" in parts) ; else if (partCount == 1 && \"BYDAY\" in parts) {\n this.days = this.days.concat(this.expand_by_day(aYear));\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let daysInMonth = Time.daysInMonth(month, aYear);\n\n t.year = aYear;\n t.month = month;\n t.day = 1;\n t.isDate = true;\n\n let first_dow = t.dayOfWeek();\n let doy_offset = t.dayOfYear() - 1;\n\n t.day = daysInMonth;\n let last_dow = t.dayOfWeek();\n\n if (this.has_by_data(\"BYSETPOS\")) {\n let by_month_day = [];\n for (let day = 1; day <= daysInMonth; day++) {\n t.day = day;\n if (this.is_day_in_byday(t)) {\n by_month_day.push(day);\n }\n }\n\n for (let spIndex = 0; spIndex < by_month_day.length; spIndex++) {\n if (this.check_set_position(spIndex + 1) ||\n this.check_set_position(spIndex - by_month_day.length)) {\n this.days.push(doy_offset + by_month_day[spIndex]);\n }\n }\n } else {\n for (let coded_day of this.by_data.BYDAY) {\n let bydayParts = this.ruleDayOfWeek(coded_day);\n let pos = bydayParts[0];\n let dow = bydayParts[1];\n let month_day;\n\n let first_matching_day = ((dow + 7 - first_dow) % 7) + 1;\n let last_matching_day = daysInMonth - ((last_dow + 7 - dow) % 7);\n\n if (pos == 0) {\n for (let day = first_matching_day; day <= daysInMonth; day += 7) {\n this.days.push(doy_offset + day);\n }\n } else if (pos > 0) {\n month_day = first_matching_day + (pos - 1) * 7;\n\n if (month_day <= daysInMonth) {\n this.days.push(doy_offset + month_day);\n }\n } else {\n month_day = last_matching_day + (pos + 1) * 7;\n\n if (month_day > 0) {\n this.days.push(doy_offset + month_day);\n }\n }\n }\n }\n }\n // Return dates in order of occurrence (1,2,3,...) instead\n // of by groups of weekdays (1,8,15,...,2,9,16,...).\n this.days.sort(function(a, b) { return a - b; }); // Comparator function allows to sort numbers.\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYMONTHDAY\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n if (this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) {\n this.days.push(day);\n }\n }\n } else if (partCount == 3 &&\n \"BYDAY\" in parts &&\n \"BYMONTHDAY\" in parts &&\n \"BYMONTH\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n\n if (this.by_data.BYMONTH.indexOf(tt.month) >= 0 &&\n this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) {\n this.days.push(day);\n }\n }\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYWEEKNO\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n let weekno = tt.weekNumber(this.rule.wkst);\n\n if (this.by_data.BYWEEKNO.indexOf(weekno)) {\n this.days.push(day);\n }\n }\n } else if (partCount == 3 &&\n \"BYDAY\" in parts &&\n \"BYWEEKNO\" in parts &&\n \"BYMONTHDAY\" in parts) ; else if (partCount == 1 && \"BYYEARDAY\" in parts) {\n this.days = this.days.concat(this.by_data.BYYEARDAY);\n } else if (partCount == 2 && \"BYYEARDAY\" in parts && \"BYDAY\" in parts) {\n let daysInYear = Time.isLeapYear(aYear) ? 366 : 365;\n let expandedDays = new Set(this.expand_by_day(aYear));\n\n for (let doy of this.by_data.BYYEARDAY) {\n if (doy < 0) {\n doy += daysInYear + 1;\n }\n\n if (expandedDays.has(doy)) {\n this.days.push(doy);\n }\n }\n } else {\n this.days = [];\n }\n\n let daysInYear = Time.isLeapYear(aYear) ? 366 : 365;\n this.days.sort((a, b) => {\n if (a < 0) a += daysInYear + 1;\n if (b < 0) b += daysInYear + 1;\n return a - b;\n });\n\n return 0;\n }\n\n expand_by_day(aYear) {\n\n let days_list = [];\n let tmp = this.last.clone();\n\n tmp.year = aYear;\n tmp.month = 1;\n tmp.day = 1;\n tmp.isDate = true;\n\n let start_dow = tmp.dayOfWeek();\n\n tmp.month = 12;\n tmp.day = 31;\n tmp.isDate = true;\n\n let end_dow = tmp.dayOfWeek();\n let end_year_day = tmp.dayOfYear();\n\n for (let day of this.by_data.BYDAY) {\n let parts = this.ruleDayOfWeek(day);\n let pos = parts[0];\n let dow = parts[1];\n\n if (pos == 0) {\n let tmp_start_doy = ((dow + 7 - start_dow) % 7) + 1;\n\n for (let doy = tmp_start_doy; doy <= end_year_day; doy += 7) {\n days_list.push(doy);\n }\n\n } else if (pos > 0) {\n let first;\n if (dow >= start_dow) {\n first = dow - start_dow + 1;\n } else {\n first = dow - start_dow + 8;\n }\n\n days_list.push(first + (pos - 1) * 7);\n } else {\n let last;\n pos = -pos;\n\n if (dow <= end_dow) {\n last = end_year_day - end_dow + dow;\n } else {\n last = end_year_day - end_dow + dow - 7;\n }\n\n days_list.push(last - (pos - 1) * 7);\n }\n }\n return days_list;\n }\n\n is_day_in_byday(tt) {\n if (this.by_data.BYDAY) {\n for (let day of this.by_data.BYDAY) {\n let parts = this.ruleDayOfWeek(day);\n let pos = parts[0];\n let dow = parts[1];\n let this_dow = tt.dayOfWeek();\n\n if ((pos == 0 && dow == this_dow) ||\n (tt.nthWeekDay(dow, pos) == tt.day)) {\n return 1;\n }\n }\n }\n\n return 0;\n }\n\n /**\n * Checks if given value is in BYSETPOS.\n *\n * @private\n * @param {Numeric} aPos position to check for.\n * @return {Boolean} false unless BYSETPOS rules exist\n * and the given value is present in rules.\n */\n check_set_position(aPos) {\n if (this.has_by_data('BYSETPOS')) {\n let idx = this.by_data.BYSETPOS.indexOf(aPos);\n // negative numbers are not false-y\n return idx !== -1;\n }\n return false;\n }\n\n sort_byday_rules(aRules) {\n for (let i = 0; i < aRules.length; i++) {\n for (let j = 0; j < i; j++) {\n let one = this.ruleDayOfWeek(aRules[j], this.rule.wkst)[1];\n let two = this.ruleDayOfWeek(aRules[i], this.rule.wkst)[1];\n\n if (one > two) {\n let tmp = aRules[i];\n aRules[i] = aRules[j];\n aRules[j] = tmp;\n }\n }\n }\n }\n\n check_contract_restriction(aRuleType, v) {\n let indexMapValue = RecurIterator._indexMap[aRuleType];\n let ruleMapValue = RecurIterator._expandMap[this.rule.freq][indexMapValue];\n let pass = false;\n\n if (aRuleType in this.by_data &&\n ruleMapValue == RecurIterator.CONTRACT) {\n\n let ruleType = this.by_data[aRuleType];\n\n for (let bydata of ruleType) {\n if (bydata == v) {\n pass = true;\n break;\n }\n }\n } else {\n // Not a contracting byrule or has no data, test passes\n pass = true;\n }\n return pass;\n }\n\n check_contracting_rules() {\n let dow = this.last.dayOfWeek();\n let weekNo = this.last.weekNumber(this.rule.wkst);\n let doy = this.last.dayOfYear();\n\n return (this.check_contract_restriction(\"BYSECOND\", this.last.second) &&\n this.check_contract_restriction(\"BYMINUTE\", this.last.minute) &&\n this.check_contract_restriction(\"BYHOUR\", this.last.hour) &&\n this.check_contract_restriction(\"BYDAY\", Recur.numericDayToIcalDay(dow)) &&\n this.check_contract_restriction(\"BYWEEKNO\", weekNo) &&\n this.check_contract_restriction(\"BYMONTHDAY\", this.last.day) &&\n this.check_contract_restriction(\"BYMONTH\", this.last.month) &&\n this.check_contract_restriction(\"BYYEARDAY\", doy));\n }\n\n setup_defaults(aRuleType, req, deftime) {\n let indexMapValue = RecurIterator._indexMap[aRuleType];\n let ruleMapValue = RecurIterator._expandMap[this.rule.freq][indexMapValue];\n\n if (ruleMapValue != RecurIterator.CONTRACT) {\n if (!(aRuleType in this.by_data)) {\n this.by_data[aRuleType] = [deftime];\n }\n if (this.rule.freq != req) {\n return this.by_data[aRuleType][0];\n }\n }\n return deftime;\n }\n\n /**\n * Convert iterator into a serialize-able object. Will preserve current\n * iteration sequence to ensure the seamless continuation of the recurrence\n * rule.\n * @return {Object}\n */\n toJSON() {\n let result = Object.create(null);\n\n result.initialized = this.initialized;\n result.rule = this.rule.toJSON();\n result.dtstart = this.dtstart.toJSON();\n result.by_data = this.by_data;\n result.days = this.days;\n result.last = this.last.toJSON();\n result.by_indices = this.by_indices;\n result.occurrence_number = this.occurrence_number;\n\n return result;\n }\n}\n\n/**\n * An error indicating that a recurrence rule is invalid and produces no\n * occurrences.\n *\n * @extends {Error}\n * @class\n */\nclass InvalidRecurrenceRuleError extends Error {\n constructor() {\n super(\"Recurrence rule has no valid occurrences\");\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").frequencyValues} frequencyValues\n * Imports the 'frequencyValues' type from the \"types.js\" module\n */\n\nconst VALID_DAY_NAMES = /^(SU|MO|TU|WE|TH|FR|SA)$/;\nconst VALID_BYDAY_PART = /^([+-])?(5[0-3]|[1-4][0-9]|[1-9])?(SU|MO|TU|WE|TH|FR|SA)$/;\nconst DOW_MAP = {\n SU: Time.SUNDAY,\n MO: Time.MONDAY,\n TU: Time.TUESDAY,\n WE: Time.WEDNESDAY,\n TH: Time.THURSDAY,\n FR: Time.FRIDAY,\n SA: Time.SATURDAY\n};\n\nconst REVERSE_DOW_MAP = Object.fromEntries(Object.entries(DOW_MAP).map(entry => entry.reverse()));\n\nconst ALLOWED_FREQ = ['SECONDLY', 'MINUTELY', 'HOURLY',\n 'DAILY', 'WEEKLY', 'MONTHLY', 'YEARLY'];\n\n/**\n * This class represents the \"recur\" value type, used for example by RRULE. It provides methods to\n * calculate occurrences among others.\n *\n * @memberof ICAL\n */\nclass Recur {\n /**\n * Creates a new {@link ICAL.Recur} instance from the passed string.\n *\n * @param {String} string The string to parse\n * @return {Recur} The created recurrence instance\n */\n static fromString(string) {\n let data = this._stringToData(string, false);\n return new Recur(data);\n }\n\n /**\n * Creates a new {@link ICAL.Recur} instance using members from the passed\n * data object.\n *\n * @param {Object} aData An object with members of the recurrence\n * @param {frequencyValues=} aData.freq The frequency value\n * @param {Number=} aData.interval The INTERVAL value\n * @param {weekDay=} aData.wkst The week start value\n * @param {Time=} aData.until The end of the recurrence set\n * @param {Number=} aData.count The number of occurrences\n * @param {Array.=} aData.bysecond The seconds for the BYSECOND part\n * @param {Array.=} aData.byminute The minutes for the BYMINUTE part\n * @param {Array.=} aData.byhour The hours for the BYHOUR part\n * @param {Array.=} aData.byday The BYDAY values\n * @param {Array.=} aData.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} aData.byyearday The days for the BYYEARDAY part\n * @param {Array.=} aData.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} aData.bymonth The month for the BYMONTH part\n * @param {Array.=} aData.bysetpos The positionals for the BYSETPOS part\n */\n static fromData(aData) {\n return new Recur(aData);\n }\n\n /**\n * Converts a recurrence string to a data object, suitable for the fromData\n * method.\n *\n * @private\n * @param {String} string The string to parse\n * @param {Boolean} fmtIcal If true, the string is considered to be an\n * iCalendar string\n * @return {Recur} The recurrence instance\n */\n static _stringToData(string, fmtIcal) {\n let dict = Object.create(null);\n\n // split is slower in FF but fast enough.\n // v8 however this is faster then manual split?\n let values = string.split(';');\n let len = values.length;\n\n for (let i = 0; i < len; i++) {\n let parts = values[i].split('=');\n let ucname = parts[0].toUpperCase();\n let lcname = parts[0].toLowerCase();\n let name = (fmtIcal ? lcname : ucname);\n let value = parts[1];\n\n if (ucname in partDesign) {\n let partArr = value.split(',');\n let partSet = new Set();\n\n for (let part of partArr) {\n partSet.add(partDesign[ucname](part));\n }\n partArr = [...partSet];\n\n dict[name] = (partArr.length == 1 ? partArr[0] : partArr);\n } else if (ucname in optionDesign) {\n optionDesign[ucname](value, dict, fmtIcal);\n } else {\n // Don't swallow unknown values. Just set them as they are.\n dict[lcname] = value;\n }\n }\n\n return dict;\n }\n\n /**\n * Convert an ical representation of a day (SU, MO, etc..)\n * into a numeric value of that day.\n *\n * @param {String} string The iCalendar day name\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Number} Numeric value of given day\n */\n static icalDayToNumericDay(string, aWeekStart) {\n //XXX: this is here so we can deal\n // with possibly invalid string values.\n let firstDow = aWeekStart || Time.SUNDAY;\n return ((DOW_MAP[string] - firstDow + 7) % 7) + 1;\n }\n\n /**\n * Convert a numeric day value into its ical representation (SU, MO, etc..)\n *\n * @param {Number} num Numeric value of given day\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {String} The ICAL day value, e.g SU,MO,...\n */\n static numericDayToIcalDay(num, aWeekStart) {\n //XXX: this is here so we can deal with possibly invalid number values.\n // Also, this allows consistent mapping between day numbers and day\n // names for external users.\n let firstDow = aWeekStart || Time.SUNDAY;\n let dow = (num + firstDow - Time.SUNDAY);\n if (dow > 7) {\n dow -= 7;\n }\n return REVERSE_DOW_MAP[dow];\n }\n\n /**\n * Create a new instance of the Recur class.\n *\n * @param {Object} data An object with members of the recurrence\n * @param {frequencyValues=} data.freq The frequency value\n * @param {Number=} data.interval The INTERVAL value\n * @param {weekDay=} data.wkst The week start value\n * @param {Time=} data.until The end of the recurrence set\n * @param {Number=} data.count The number of occurrences\n * @param {Array.=} data.bysecond The seconds for the BYSECOND part\n * @param {Array.=} data.byminute The minutes for the BYMINUTE part\n * @param {Array.=} data.byhour The hours for the BYHOUR part\n * @param {Array.=} data.byday The BYDAY values\n * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} data.byyearday The days for the BYYEARDAY part\n * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} data.bymonth The month for the BYMONTH part\n * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.parts = {};\n\n if (data && typeof(data) === 'object') {\n this.fromData(data);\n }\n }\n\n /**\n * An object holding the BY-parts of the recurrence rule\n * @memberof ICAL.Recur\n * @typedef {Object} byParts\n * @property {Array.=} BYSECOND The seconds for the BYSECOND part\n * @property {Array.=} BYMINUTE The minutes for the BYMINUTE part\n * @property {Array.=} BYHOUR The hours for the BYHOUR part\n * @property {Array.=} BYDAY The BYDAY values\n * @property {Array.=} BYMONTHDAY The days for the BYMONTHDAY part\n * @property {Array.=} BYYEARDAY The days for the BYYEARDAY part\n * @property {Array.=} BYWEEKNO The weeks for the BYWEEKNO part\n * @property {Array.=} BYMONTH The month for the BYMONTH part\n * @property {Array.=} BYSETPOS The positionals for the BYSETPOS part\n */\n\n /**\n * An object holding the BY-parts of the recurrence rule\n * @type {byParts}\n */\n parts = null;\n\n /**\n * The interval value for the recurrence rule.\n * @type {Number}\n */\n interval = 1;\n\n /**\n * The week start day\n *\n * @type {weekDay}\n * @default ICAL.Time.MONDAY\n */\n wkst = Time.MONDAY;\n\n /**\n * The end of the recurrence\n * @type {?Time}\n */\n until = null;\n\n /**\n * The maximum number of occurrences\n * @type {?Number}\n */\n count = null;\n\n /**\n * The frequency value.\n * @type {frequencyValues}\n */\n freq = null;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalrecur\"\n */\n icalclass = \"icalrecur\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"recur\"\n */\n icaltype = \"recur\";\n\n /**\n * Create a new iterator for this recurrence rule. The passed start date\n * must be the start date of the event, not the start of the range to\n * search in.\n *\n * @example\n * let recur = comp.getFirstPropertyValue('rrule');\n * let dtstart = comp.getFirstPropertyValue('dtstart');\n * let iter = recur.iterator(dtstart);\n * for (let next = iter.next(); next; next = iter.next()) {\n * if (next.compare(rangeStart) < 0) {\n * continue;\n * }\n * console.log(next.toString());\n * }\n *\n * @param {Time} aStart The item's start date\n * @return {RecurIterator} The recurrence iterator\n */\n iterator(aStart) {\n return new RecurIterator({\n rule: this,\n dtstart: aStart\n });\n }\n\n /**\n * Returns a clone of the recurrence object.\n *\n * @return {Recur} The cloned object\n */\n clone() {\n return new Recur(this.toJSON());\n }\n\n /**\n * Checks if the current rule is finite, i.e. has a count or until part.\n *\n * @return {Boolean} True, if the rule is finite\n */\n isFinite() {\n return !!(this.count || this.until);\n }\n\n /**\n * Checks if the current rule has a count part, and not limited by an until\n * part.\n *\n * @return {Boolean} True, if the rule is by count\n */\n isByCount() {\n return !!(this.count && !this.until);\n }\n\n /**\n * Adds a component (part) to the recurrence rule. This is not a component\n * in the sense of {@link ICAL.Component}, but a part of the recurrence\n * rule, i.e. BYMONTH.\n *\n * @param {String} aType The name of the component part\n * @param {Array|String} aValue The component value\n */\n addComponent(aType, aValue) {\n let ucname = aType.toUpperCase();\n if (ucname in this.parts) {\n this.parts[ucname].push(aValue);\n } else {\n this.parts[ucname] = [aValue];\n }\n }\n\n /**\n * Sets the component value for the given by-part.\n *\n * @param {String} aType The component part name\n * @param {Array} aValues The component values\n */\n setComponent(aType, aValues) {\n this.parts[aType.toUpperCase()] = aValues.slice();\n }\n\n /**\n * Gets (a copy) of the requested component value.\n *\n * @param {String} aType The component part name\n * @return {Array} The component part value\n */\n getComponent(aType) {\n let ucname = aType.toUpperCase();\n return (ucname in this.parts ? this.parts[ucname].slice() : []);\n }\n\n /**\n * Retrieves the next occurrence after the given recurrence id. See the\n * guide on {@tutorial terminology} for more details.\n *\n * NOTE: Currently, this method iterates all occurrences from the start\n * date. It should not be called in a loop for performance reasons. If you\n * would like to get more than one occurrence, you can iterate the\n * occurrences manually, see the example on the\n * {@link ICAL.Recur#iterator iterator} method.\n *\n * @param {Time} aStartTime The start of the event series\n * @param {Time} aRecurrenceId The date of the last occurrence\n * @return {Time} The next occurrence after\n */\n getNextOccurrence(aStartTime, aRecurrenceId) {\n let iter = this.iterator(aStartTime);\n let next;\n\n do {\n next = iter.next();\n } while (next && next.compare(aRecurrenceId) <= 0);\n\n if (next && aRecurrenceId.zone) {\n next.zone = aRecurrenceId.zone;\n }\n\n return next;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} data An object with members of the recurrence\n * @param {frequencyValues=} data.freq The frequency value\n * @param {Number=} data.interval The INTERVAL value\n * @param {weekDay=} data.wkst The week start value\n * @param {Time=} data.until The end of the recurrence set\n * @param {Number=} data.count The number of occurrences\n * @param {Array.=} data.bysecond The seconds for the BYSECOND part\n * @param {Array.=} data.byminute The minutes for the BYMINUTE part\n * @param {Array.=} data.byhour The hours for the BYHOUR part\n * @param {Array.=} data.byday The BYDAY values\n * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} data.byyearday The days for the BYYEARDAY part\n * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} data.bymonth The month for the BYMONTH part\n * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part\n */\n fromData(data) {\n for (let key in data) {\n let uckey = key.toUpperCase();\n\n if (uckey in partDesign) {\n if (Array.isArray(data[key])) {\n this.parts[uckey] = data[key];\n } else {\n this.parts[uckey] = [data[key]];\n }\n } else {\n this[key] = data[key];\n }\n }\n\n if (this.interval && typeof this.interval != \"number\") {\n optionDesign.INTERVAL(this.interval, this);\n }\n\n if (this.wkst && typeof this.wkst != \"number\") {\n this.wkst = Recur.icalDayToNumericDay(this.wkst);\n }\n\n if (this.until && !(this.until instanceof Time)) {\n this.until = Time.fromString(this.until);\n }\n }\n\n /**\n * The jCal representation of this recurrence type.\n * @return {Object}\n */\n toJSON() {\n let res = Object.create(null);\n res.freq = this.freq;\n\n if (this.count) {\n res.count = this.count;\n }\n\n if (this.interval > 1) {\n res.interval = this.interval;\n }\n\n for (let [k, kparts] of Object.entries(this.parts)) {\n if (Array.isArray(kparts) && kparts.length == 1) {\n res[k.toLowerCase()] = kparts[0];\n } else {\n res[k.toLowerCase()] = clone(kparts);\n }\n }\n\n if (this.until) {\n res.until = this.until.toString();\n }\n if ('wkst' in this && this.wkst !== Time.DEFAULT_WEEK_START) {\n res.wkst = Recur.numericDayToIcalDay(this.wkst);\n }\n return res;\n }\n\n /**\n * The string representation of this recurrence rule.\n * @return {String}\n */\n toString() {\n // TODO retain order\n let str = \"FREQ=\" + this.freq;\n if (this.count) {\n str += \";COUNT=\" + this.count;\n }\n if (this.interval > 1) {\n str += \";INTERVAL=\" + this.interval;\n }\n for (let [k, v] of Object.entries(this.parts)) {\n str += \";\" + k + \"=\" + v;\n }\n if (this.until) {\n str += ';UNTIL=' + this.until.toICALString();\n }\n if ('wkst' in this && this.wkst !== Time.DEFAULT_WEEK_START) {\n str += ';WKST=' + Recur.numericDayToIcalDay(this.wkst);\n }\n return str;\n }\n}\n\nfunction parseNumericValue(type, min, max, value) {\n let result = value;\n\n if (value[0] === '+') {\n result = value.slice(1);\n }\n\n result = strictParseInt(result);\n\n if (min !== undefined && value < min) {\n throw new Error(\n type + ': invalid value \"' + value + '\" must be > ' + min\n );\n }\n\n if (max !== undefined && value > max) {\n throw new Error(\n type + ': invalid value \"' + value + '\" must be < ' + min\n );\n }\n\n return result;\n}\n\nconst optionDesign = {\n FREQ: function(value, dict, fmtIcal) {\n // yes this is actually equal or faster then regex.\n // upside here is we can enumerate the valid values.\n if (ALLOWED_FREQ.indexOf(value) !== -1) {\n dict.freq = value;\n } else {\n throw new Error(\n 'invalid frequency \"' + value + '\" expected: \"' +\n ALLOWED_FREQ.join(', ') + '\"'\n );\n }\n },\n\n COUNT: function(value, dict, fmtIcal) {\n dict.count = strictParseInt(value);\n },\n\n INTERVAL: function(value, dict, fmtIcal) {\n dict.interval = strictParseInt(value);\n if (dict.interval < 1) {\n // 0 or negative values are not allowed, some engines seem to generate\n // it though. Assume 1 instead.\n dict.interval = 1;\n }\n },\n\n UNTIL: function(value, dict, fmtIcal) {\n if (value.length > 10) {\n dict.until = design.icalendar.value['date-time'].fromICAL(value);\n } else {\n dict.until = design.icalendar.value.date.fromICAL(value);\n }\n if (!fmtIcal) {\n dict.until = Time.fromString(dict.until);\n }\n },\n\n WKST: function(value, dict, fmtIcal) {\n if (VALID_DAY_NAMES.test(value)) {\n dict.wkst = Recur.icalDayToNumericDay(value);\n } else {\n throw new Error('invalid WKST value \"' + value + '\"');\n }\n }\n};\n\nconst partDesign = {\n BYSECOND: parseNumericValue.bind(undefined, 'BYSECOND', 0, 60),\n BYMINUTE: parseNumericValue.bind(undefined, 'BYMINUTE', 0, 59),\n BYHOUR: parseNumericValue.bind(undefined, 'BYHOUR', 0, 23),\n BYDAY: function(value) {\n if (VALID_BYDAY_PART.test(value)) {\n return value;\n } else {\n throw new Error('invalid BYDAY value \"' + value + '\"');\n }\n },\n BYMONTHDAY: parseNumericValue.bind(undefined, 'BYMONTHDAY', -31, 31),\n BYYEARDAY: parseNumericValue.bind(undefined, 'BYYEARDAY', -366, 366),\n BYWEEKNO: parseNumericValue.bind(undefined, 'BYWEEKNO', -53, 53),\n BYMONTH: parseNumericValue.bind(undefined, 'BYMONTH', 1, 12),\n BYSETPOS: parseNumericValue.bind(undefined, 'BYSETPOS', -366, 366)\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\n/** @module ICAL.design */\n\nconst FROM_ICAL_NEWLINE = /\\\\\\\\|\\\\;|\\\\,|\\\\[Nn]/g;\nconst TO_ICAL_NEWLINE = /\\\\|;|,|\\n/g;\nconst FROM_VCARD_NEWLINE = /\\\\\\\\|\\\\,|\\\\[Nn]/g;\nconst TO_VCARD_NEWLINE = /\\\\|,|\\n/g;\n\nfunction createTextType(fromNewline, toNewline) {\n let result = {\n matches: /.*/,\n\n fromICAL: function(aValue, structuredEscape) {\n return replaceNewline(aValue, fromNewline, structuredEscape);\n },\n\n toICAL: function(aValue, structuredEscape) {\n let regEx = toNewline;\n if (structuredEscape)\n regEx = new RegExp(regEx.source + '|' + structuredEscape, regEx.flags);\n return aValue.replace(regEx, function(str) {\n switch (str) {\n case \"\\\\\":\n return \"\\\\\\\\\";\n case \";\":\n return \"\\\\;\";\n case \",\":\n return \"\\\\,\";\n case \"\\n\":\n return \"\\\\n\";\n /* c8 ignore next 2 */\n default:\n return str;\n }\n });\n }\n };\n return result;\n}\n\n// default types used multiple times\nconst DEFAULT_TYPE_TEXT = { defaultType: \"text\" };\nconst DEFAULT_TYPE_TEXT_MULTI = { defaultType: \"text\", multiValue: \",\" };\nconst DEFAULT_TYPE_TEXT_STRUCTURED = { defaultType: \"text\", structuredValue: \";\" };\nconst DEFAULT_TYPE_INTEGER = { defaultType: \"integer\" };\nconst DEFAULT_TYPE_DATETIME_DATE = { defaultType: \"date-time\", allowedTypes: [\"date-time\", \"date\"] };\nconst DEFAULT_TYPE_DATETIME = { defaultType: \"date-time\" };\nconst DEFAULT_TYPE_URI = { defaultType: \"uri\" };\nconst DEFAULT_TYPE_UTCOFFSET = { defaultType: \"utc-offset\" };\nconst DEFAULT_TYPE_RECUR = { defaultType: \"recur\" };\nconst DEFAULT_TYPE_DATE_ANDOR_TIME = { defaultType: \"date-and-or-time\", allowedTypes: [\"date-time\", \"date\", \"text\"] };\n\nfunction replaceNewlineReplace(string) {\n switch (string) {\n case \"\\\\\\\\\":\n return \"\\\\\";\n case \"\\\\;\":\n return \";\";\n case \"\\\\,\":\n return \",\";\n case \"\\\\n\":\n case \"\\\\N\":\n return \"\\n\";\n /* c8 ignore next 2 */\n default:\n return string;\n }\n}\n\nfunction replaceNewline(value, newline, structuredEscape) {\n // avoid regex when possible.\n if (value.indexOf('\\\\') === -1) {\n return value;\n }\n if (structuredEscape)\n newline = new RegExp(newline.source + '|\\\\\\\\' + structuredEscape, newline.flags);\n return value.replace(newline, replaceNewlineReplace);\n}\n\nlet commonProperties = {\n \"categories\": DEFAULT_TYPE_TEXT_MULTI,\n \"url\": DEFAULT_TYPE_URI,\n \"version\": DEFAULT_TYPE_TEXT,\n \"uid\": DEFAULT_TYPE_TEXT\n};\n\nlet commonValues = {\n \"boolean\": {\n values: [\"TRUE\", \"FALSE\"],\n\n fromICAL: function(aValue) {\n switch (aValue) {\n case 'TRUE':\n return true;\n case 'FALSE':\n return false;\n default:\n //TODO: parser warning\n return false;\n }\n },\n\n toICAL: function(aValue) {\n if (aValue) {\n return 'TRUE';\n }\n return 'FALSE';\n }\n\n },\n float: {\n matches: /^[+-]?\\d+\\.\\d+$/,\n\n fromICAL: function(aValue) {\n let parsed = parseFloat(aValue);\n if (isStrictlyNaN(parsed)) {\n // TODO: parser warning\n return 0.0;\n }\n return parsed;\n },\n\n toICAL: function(aValue) {\n return String(aValue);\n }\n },\n integer: {\n fromICAL: function(aValue) {\n let parsed = parseInt(aValue);\n if (isStrictlyNaN(parsed)) {\n return 0;\n }\n return parsed;\n },\n\n toICAL: function(aValue) {\n return String(aValue);\n }\n },\n \"utc-offset\": {\n toICAL: function(aValue) {\n if (aValue.length < 7) {\n // no seconds\n // -0500\n return aValue.slice(0, 3) +\n aValue.slice(4, 6);\n } else {\n // seconds\n // -050000\n return aValue.slice(0, 3) +\n aValue.slice(4, 6) +\n aValue.slice(7, 9);\n }\n },\n\n fromICAL: function(aValue) {\n if (aValue.length < 6) {\n // no seconds\n // -05:00\n return aValue.slice(0, 3) + ':' +\n aValue.slice(3, 5);\n } else {\n // seconds\n // -05:00:00\n return aValue.slice(0, 3) + ':' +\n aValue.slice(3, 5) + ':' +\n aValue.slice(5, 7);\n }\n },\n\n decorate: function(aValue) {\n return UtcOffset.fromString(aValue);\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n }\n};\n\nlet icalParams = {\n // Although the syntax is DQUOTE uri DQUOTE, I don't think we should\n // enforce anything aside from it being a valid content line.\n //\n // At least some params require - if multi values are used - DQUOTEs\n // for each of its values - e.g. delegated-from=\"uri1\",\"uri2\"\n // To indicate this, I introduced the new k/v pair\n // multiValueSeparateDQuote: true\n //\n // \"ALTREP\": { ... },\n\n // CN just wants a param-value\n // \"CN\": { ... }\n\n \"cutype\": {\n values: [\"INDIVIDUAL\", \"GROUP\", \"RESOURCE\", \"ROOM\", \"UNKNOWN\"],\n allowXName: true,\n allowIanaToken: true\n },\n\n \"delegated-from\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n \"delegated-to\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n // \"DIR\": { ... }, // See ALTREP\n \"encoding\": {\n values: [\"8BIT\", \"BASE64\"]\n },\n // \"FMTTYPE\": { ... }, // See ALTREP\n \"fbtype\": {\n values: [\"FREE\", \"BUSY\", \"BUSY-UNAVAILABLE\", \"BUSY-TENTATIVE\"],\n allowXName: true,\n allowIanaToken: true\n },\n // \"LANGUAGE\": { ... }, // See ALTREP\n \"member\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n \"partstat\": {\n // TODO These values are actually different per-component\n values: [\"NEEDS-ACTION\", \"ACCEPTED\", \"DECLINED\", \"TENTATIVE\",\n \"DELEGATED\", \"COMPLETED\", \"IN-PROCESS\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"range\": {\n values: [\"THISANDFUTURE\"]\n },\n \"related\": {\n values: [\"START\", \"END\"]\n },\n \"reltype\": {\n values: [\"PARENT\", \"CHILD\", \"SIBLING\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"role\": {\n values: [\"REQ-PARTICIPANT\", \"CHAIR\",\n \"OPT-PARTICIPANT\", \"NON-PARTICIPANT\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"rsvp\": {\n values: [\"TRUE\", \"FALSE\"]\n },\n \"sent-by\": {\n valueType: \"cal-address\"\n },\n \"tzid\": {\n matches: /^\\//\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"binary\", \"boolean\", \"cal-address\", \"date\", \"date-time\",\n \"duration\", \"float\", \"integer\", \"period\", \"recur\", \"text\",\n \"time\", \"uri\", \"utc-offset\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\n// When adding a value here, be sure to add it to the parameter types!\nconst icalValues = extend(commonValues, {\n text: createTextType(FROM_ICAL_NEWLINE, TO_ICAL_NEWLINE),\n\n uri: {\n // TODO\n /* ... */\n },\n\n \"binary\": {\n decorate: function(aString) {\n return Binary.fromString(aString);\n },\n\n undecorate: function(aBinary) {\n return aBinary.toString();\n }\n },\n \"cal-address\": {\n // needs to be an uri\n },\n \"date\": {\n decorate: function(aValue, aProp) {\n if (design.strict) {\n return Time.fromDateString(aValue, aProp);\n } else {\n return Time.fromString(aValue, aProp);\n }\n },\n\n /**\n * undecorates a time object.\n */\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n // from: 20120901\n // to: 2012-09-01\n if (!design.strict && aValue.length >= 15) {\n // This is probably a date-time, e.g. 20120901T130000Z\n return icalValues[\"date-time\"].fromICAL(aValue);\n } else {\n return aValue.slice(0, 4) + '-' +\n aValue.slice(4, 6) + '-' +\n aValue.slice(6, 8);\n }\n },\n\n toICAL: function(aValue) {\n // from: 2012-09-01\n // to: 20120901\n let len = aValue.length;\n\n if (len == 10) {\n return aValue.slice(0, 4) +\n aValue.slice(5, 7) +\n aValue.slice(8, 10);\n } else if (len >= 19) {\n return icalValues[\"date-time\"].toICAL(aValue);\n } else {\n //TODO: serialize warning?\n return aValue;\n }\n\n }\n },\n \"date-time\": {\n fromICAL: function(aValue) {\n // from: 20120901T130000\n // to: 2012-09-01T13:00:00\n if (!design.strict && aValue.length == 8) {\n // This is probably a date, e.g. 20120901\n return icalValues.date.fromICAL(aValue);\n } else {\n let result = aValue.slice(0, 4) + '-' +\n aValue.slice(4, 6) + '-' +\n aValue.slice(6, 8) + 'T' +\n aValue.slice(9, 11) + ':' +\n aValue.slice(11, 13) + ':' +\n aValue.slice(13, 15);\n\n if (aValue[15] && aValue[15] === 'Z') {\n result += 'Z';\n }\n\n return result;\n }\n },\n\n toICAL: function(aValue) {\n // from: 2012-09-01T13:00:00\n // to: 20120901T130000\n let len = aValue.length;\n\n if (len == 10 && !design.strict) {\n return icalValues.date.toICAL(aValue);\n } else if (len >= 19) {\n let result = aValue.slice(0, 4) +\n aValue.slice(5, 7) +\n // grab the (DDTHH) segment\n aValue.slice(8, 13) +\n // MM\n aValue.slice(14, 16) +\n // SS\n aValue.slice(17, 19);\n\n if (aValue[19] && aValue[19] === 'Z') {\n result += 'Z';\n }\n return result;\n } else {\n // TODO: error\n return aValue;\n }\n },\n\n decorate: function(aValue, aProp) {\n if (design.strict) {\n return Time.fromDateTimeString(aValue, aProp);\n } else {\n return Time.fromString(aValue, aProp);\n }\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n },\n duration: {\n decorate: function(aValue) {\n return Duration.fromString(aValue);\n },\n undecorate: function(aValue) {\n return aValue.toString();\n }\n },\n period: {\n fromICAL: function(string) {\n let parts = string.split('/');\n parts[0] = icalValues['date-time'].fromICAL(parts[0]);\n\n if (!Duration.isValueString(parts[1])) {\n parts[1] = icalValues['date-time'].fromICAL(parts[1]);\n }\n\n return parts;\n },\n\n toICAL: function(parts) {\n parts = parts.slice();\n if (!design.strict && parts[0].length == 10) {\n parts[0] = icalValues.date.toICAL(parts[0]);\n } else {\n parts[0] = icalValues['date-time'].toICAL(parts[0]);\n }\n\n if (!Duration.isValueString(parts[1])) {\n if (!design.strict && parts[1].length == 10) {\n parts[1] = icalValues.date.toICAL(parts[1]);\n } else {\n parts[1] = icalValues['date-time'].toICAL(parts[1]);\n }\n }\n\n return parts.join(\"/\");\n },\n\n decorate: function(aValue, aProp) {\n return Period.fromJSON(aValue, aProp, !design.strict);\n },\n\n undecorate: function(aValue) {\n return aValue.toJSON();\n }\n },\n recur: {\n fromICAL: function(string) {\n return Recur._stringToData(string, true);\n },\n\n toICAL: function(data) {\n let str = \"\";\n for (let [k, val] of Object.entries(data)) {\n if (k == \"until\") {\n if (val.length > 10) {\n val = icalValues['date-time'].toICAL(val);\n } else {\n val = icalValues.date.toICAL(val);\n }\n } else if (k == \"wkst\") {\n if (typeof val === 'number') {\n val = Recur.numericDayToIcalDay(val);\n }\n } else if (Array.isArray(val)) {\n val = val.join(\",\");\n }\n str += k.toUpperCase() + \"=\" + val + \";\";\n }\n return str.slice(0, Math.max(0, str.length - 1));\n },\n\n decorate: function decorate(aValue) {\n return Recur.fromData(aValue);\n },\n\n undecorate: function(aRecur) {\n return aRecur.toJSON();\n }\n },\n\n time: {\n fromICAL: function(aValue) {\n // from: MMHHSS(Z)?\n // to: HH:MM:SS(Z)?\n if (aValue.length < 6) {\n // TODO: parser exception?\n return aValue;\n }\n\n // HH::MM::SSZ?\n let result = aValue.slice(0, 2) + ':' +\n aValue.slice(2, 4) + ':' +\n aValue.slice(4, 6);\n\n if (aValue[6] === 'Z') {\n result += 'Z';\n }\n\n return result;\n },\n\n toICAL: function(aValue) {\n // from: HH:MM:SS(Z)?\n // to: MMHHSS(Z)?\n if (aValue.length < 8) {\n //TODO: error\n return aValue;\n }\n\n let result = aValue.slice(0, 2) +\n aValue.slice(3, 5) +\n aValue.slice(6, 8);\n\n if (aValue[8] === 'Z') {\n result += 'Z';\n }\n\n return result;\n }\n }\n});\n\nlet icalProperties = extend(commonProperties, {\n\n \"action\": DEFAULT_TYPE_TEXT,\n \"attach\": { defaultType: \"uri\" },\n \"attendee\": { defaultType: \"cal-address\" },\n \"calscale\": DEFAULT_TYPE_TEXT,\n \"class\": DEFAULT_TYPE_TEXT,\n \"comment\": DEFAULT_TYPE_TEXT,\n \"completed\": DEFAULT_TYPE_DATETIME,\n \"contact\": DEFAULT_TYPE_TEXT,\n \"created\": DEFAULT_TYPE_DATETIME,\n \"description\": DEFAULT_TYPE_TEXT,\n \"dtend\": DEFAULT_TYPE_DATETIME_DATE,\n \"dtstamp\": DEFAULT_TYPE_DATETIME,\n \"dtstart\": DEFAULT_TYPE_DATETIME_DATE,\n \"due\": DEFAULT_TYPE_DATETIME_DATE,\n \"duration\": { defaultType: \"duration\" },\n \"exdate\": {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n multiValue: ','\n },\n \"exrule\": DEFAULT_TYPE_RECUR,\n \"freebusy\": { defaultType: \"period\", multiValue: \",\" },\n \"geo\": { defaultType: \"float\", structuredValue: \";\" },\n \"last-modified\": DEFAULT_TYPE_DATETIME,\n \"location\": DEFAULT_TYPE_TEXT,\n \"method\": DEFAULT_TYPE_TEXT,\n \"organizer\": { defaultType: \"cal-address\" },\n \"percent-complete\": DEFAULT_TYPE_INTEGER,\n \"priority\": DEFAULT_TYPE_INTEGER,\n \"prodid\": DEFAULT_TYPE_TEXT,\n \"related-to\": DEFAULT_TYPE_TEXT,\n \"repeat\": DEFAULT_TYPE_INTEGER,\n \"rdate\": {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\", \"period\"],\n multiValue: ',',\n detectType: function(string) {\n if (string.indexOf('/') !== -1) {\n return 'period';\n }\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n \"recurrence-id\": DEFAULT_TYPE_DATETIME_DATE,\n \"resources\": DEFAULT_TYPE_TEXT_MULTI,\n \"request-status\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"rrule\": DEFAULT_TYPE_RECUR,\n \"sequence\": DEFAULT_TYPE_INTEGER,\n \"status\": DEFAULT_TYPE_TEXT,\n \"summary\": DEFAULT_TYPE_TEXT,\n \"transp\": DEFAULT_TYPE_TEXT,\n \"trigger\": { defaultType: \"duration\", allowedTypes: [\"duration\", \"date-time\"] },\n \"tzoffsetfrom\": DEFAULT_TYPE_UTCOFFSET,\n \"tzoffsetto\": DEFAULT_TYPE_UTCOFFSET,\n \"tzurl\": DEFAULT_TYPE_URI,\n \"tzid\": DEFAULT_TYPE_TEXT,\n \"tzname\": DEFAULT_TYPE_TEXT\n});\n\n// When adding a value here, be sure to add it to the parameter types!\nconst vcardValues = extend(commonValues, {\n text: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE),\n uri: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE),\n\n date: {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date\");\n },\n undecorate: function(aValue) {\n return aValue.toString();\n },\n fromICAL: function(aValue) {\n if (aValue.length == 8) {\n return icalValues.date.fromICAL(aValue);\n } else if (aValue[0] == '-' && aValue.length == 6) {\n return aValue.slice(0, 4) + '-' + aValue.slice(4);\n } else {\n return aValue;\n }\n },\n toICAL: function(aValue) {\n if (aValue.length == 10) {\n return icalValues.date.toICAL(aValue);\n } else if (aValue[0] == '-' && aValue.length == 7) {\n return aValue.slice(0, 4) + aValue.slice(5);\n } else {\n return aValue;\n }\n }\n },\n\n time: {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(\"T\" + aValue, \"time\");\n },\n undecorate: function(aValue) {\n return aValue.toString();\n },\n fromICAL: function(aValue) {\n let splitzone = vcardValues.time._splitZone(aValue, true);\n let zone = splitzone[0], value = splitzone[1];\n\n //console.log(\"SPLIT: \",splitzone);\n\n if (value.length == 6) {\n value = value.slice(0, 2) + ':' +\n value.slice(2, 4) + ':' +\n value.slice(4, 6);\n } else if (value.length == 4 && value[0] != '-') {\n value = value.slice(0, 2) + ':' + value.slice(2, 4);\n } else if (value.length == 5) {\n value = value.slice(0, 3) + ':' + value.slice(3, 5);\n }\n\n if (zone.length == 5 && (zone[0] == '-' || zone[0] == '+')) {\n zone = zone.slice(0, 3) + ':' + zone.slice(3);\n }\n\n return value + zone;\n },\n\n toICAL: function(aValue) {\n let splitzone = vcardValues.time._splitZone(aValue);\n let zone = splitzone[0], value = splitzone[1];\n\n if (value.length == 8) {\n value = value.slice(0, 2) +\n value.slice(3, 5) +\n value.slice(6, 8);\n } else if (value.length == 5 && value[0] != '-') {\n value = value.slice(0, 2) + value.slice(3, 5);\n } else if (value.length == 6) {\n value = value.slice(0, 3) + value.slice(4, 6);\n }\n\n if (zone.length == 6 && (zone[0] == '-' || zone[0] == '+')) {\n zone = zone.slice(0, 3) + zone.slice(4);\n }\n\n return value + zone;\n },\n\n _splitZone: function(aValue, isFromIcal) {\n let lastChar = aValue.length - 1;\n let signChar = aValue.length - (isFromIcal ? 5 : 6);\n let sign = aValue[signChar];\n let zone, value;\n\n if (aValue[lastChar] == 'Z') {\n zone = aValue[lastChar];\n value = aValue.slice(0, Math.max(0, lastChar));\n } else if (aValue.length > 6 && (sign == '-' || sign == '+')) {\n zone = aValue.slice(signChar);\n value = aValue.slice(0, Math.max(0, signChar));\n } else {\n zone = \"\";\n value = aValue;\n }\n\n return [zone, value];\n }\n },\n\n \"date-time\": {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date-time\");\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n return vcardValues['date-and-or-time'].fromICAL(aValue);\n },\n\n toICAL: function(aValue) {\n return vcardValues['date-and-or-time'].toICAL(aValue);\n }\n },\n\n \"date-and-or-time\": {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date-and-or-time\");\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n let parts = aValue.split('T');\n return (parts[0] ? vcardValues.date.fromICAL(parts[0]) : '') +\n (parts[1] ? 'T' + vcardValues.time.fromICAL(parts[1]) : '');\n },\n\n toICAL: function(aValue) {\n let parts = aValue.split('T');\n return vcardValues.date.toICAL(parts[0]) +\n (parts[1] ? 'T' + vcardValues.time.toICAL(parts[1]) : '');\n\n }\n },\n timestamp: icalValues['date-time'],\n \"language-tag\": {\n matches: /^[a-zA-Z0-9-]+$/ // Could go with a more strict regex here\n },\n \"phone-number\": {\n fromICAL: function(aValue) {\n return Array.from(aValue).filter(function(c) {\n return c === '\\\\' ? undefined : c;\n }).join('');\n },\n toICAL: function(aValue) {\n return Array.from(aValue).map(function(c) {\n return c === ',' || c === \";\" ? '\\\\' + c : c;\n }).join('');\n }\n }\n});\n\nlet vcardParams = {\n \"type\": {\n valueType: \"text\",\n multiValue: \",\"\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"text\", \"uri\", \"date\", \"time\", \"date-time\", \"date-and-or-time\",\n \"timestamp\", \"boolean\", \"integer\", \"float\", \"utc-offset\",\n \"language-tag\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\nlet vcardProperties = extend(commonProperties, {\n \"adr\": { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n \"anniversary\": DEFAULT_TYPE_DATE_ANDOR_TIME,\n \"bday\": DEFAULT_TYPE_DATE_ANDOR_TIME,\n \"caladruri\": DEFAULT_TYPE_URI,\n \"caluri\": DEFAULT_TYPE_URI,\n \"clientpidmap\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"email\": DEFAULT_TYPE_TEXT,\n \"fburl\": DEFAULT_TYPE_URI,\n \"fn\": DEFAULT_TYPE_TEXT,\n \"gender\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"geo\": DEFAULT_TYPE_URI,\n \"impp\": DEFAULT_TYPE_URI,\n \"key\": DEFAULT_TYPE_URI,\n \"kind\": DEFAULT_TYPE_TEXT,\n \"lang\": { defaultType: \"language-tag\" },\n \"logo\": DEFAULT_TYPE_URI,\n \"member\": DEFAULT_TYPE_URI,\n \"n\": { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n \"nickname\": DEFAULT_TYPE_TEXT_MULTI,\n \"note\": DEFAULT_TYPE_TEXT,\n \"org\": { defaultType: \"text\", structuredValue: \";\" },\n \"photo\": DEFAULT_TYPE_URI,\n \"related\": DEFAULT_TYPE_URI,\n \"rev\": { defaultType: \"timestamp\" },\n \"role\": DEFAULT_TYPE_TEXT,\n \"sound\": DEFAULT_TYPE_URI,\n \"source\": DEFAULT_TYPE_URI,\n \"tel\": { defaultType: \"uri\", allowedTypes: [\"uri\", \"text\"] },\n \"title\": DEFAULT_TYPE_TEXT,\n \"tz\": { defaultType: \"text\", allowedTypes: [\"text\", \"utc-offset\", \"uri\"] },\n \"xml\": DEFAULT_TYPE_TEXT\n});\n\nlet vcard3Values = extend(commonValues, {\n binary: icalValues.binary,\n date: vcardValues.date,\n \"date-time\": vcardValues[\"date-time\"],\n \"phone-number\": vcardValues[\"phone-number\"],\n uri: icalValues.uri,\n text: vcardValues.text,\n time: icalValues.time,\n vcard: icalValues.text,\n \"utc-offset\": {\n toICAL: function(aValue) {\n return aValue.slice(0, 7);\n },\n\n fromICAL: function(aValue) {\n return aValue.slice(0, 7);\n },\n\n decorate: function(aValue) {\n return UtcOffset.fromString(aValue);\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n }\n});\n\nlet vcard3Params = {\n \"type\": {\n valueType: \"text\",\n multiValue: \",\"\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"text\", \"uri\", \"date\", \"date-time\", \"phone-number\", \"time\",\n \"boolean\", \"integer\", \"float\", \"utc-offset\", \"vcard\", \"binary\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\nlet vcard3Properties = extend(commonProperties, {\n fn: DEFAULT_TYPE_TEXT,\n n: { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n nickname: DEFAULT_TYPE_TEXT_MULTI,\n photo: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n bday: {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n detectType: function(string) {\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n\n adr: { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n label: DEFAULT_TYPE_TEXT,\n\n tel: { defaultType: \"phone-number\" },\n email: DEFAULT_TYPE_TEXT,\n mailer: DEFAULT_TYPE_TEXT,\n\n tz: { defaultType: \"utc-offset\", allowedTypes: [\"utc-offset\", \"text\"] },\n geo: { defaultType: \"float\", structuredValue: \";\" },\n\n title: DEFAULT_TYPE_TEXT,\n role: DEFAULT_TYPE_TEXT,\n logo: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n agent: { defaultType: \"vcard\", allowedTypes: [\"vcard\", \"text\", \"uri\"] },\n org: DEFAULT_TYPE_TEXT_STRUCTURED,\n\n note: DEFAULT_TYPE_TEXT_MULTI,\n prodid: DEFAULT_TYPE_TEXT,\n rev: {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n detectType: function(string) {\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n \"sort-string\": DEFAULT_TYPE_TEXT,\n sound: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n\n class: DEFAULT_TYPE_TEXT,\n key: { defaultType: \"binary\", allowedTypes: [\"binary\", \"text\"] }\n});\n\n/**\n * iCalendar design set\n * @type {designSet}\n */\nlet icalSet = {\n name: \"ical\",\n value: icalValues,\n param: icalParams,\n property: icalProperties,\n propertyGroups: false\n};\n\n/**\n * vCard 4.0 design set\n * @type {designSet}\n */\nlet vcardSet = {\n name: \"vcard4\",\n value: vcardValues,\n param: vcardParams,\n property: vcardProperties,\n propertyGroups: true\n};\n\n/**\n * vCard 3.0 design set\n * @type {designSet}\n */\nlet vcard3Set = {\n name: \"vcard3\",\n value: vcard3Values,\n param: vcard3Params,\n property: vcard3Properties,\n propertyGroups: true\n};\n\n/**\n * The design data, used by the parser to determine types for properties and\n * other metadata needed to produce correct jCard/jCal data.\n *\n * @alias ICAL.design\n * @exports module:ICAL.design\n */\nconst design = {\n /**\n * Can be set to false to make the parser more lenient.\n */\n strict: true,\n\n /**\n * The default set for new properties and components if none is specified.\n * @type {designSet}\n */\n defaultSet: icalSet,\n\n /**\n * The default type for unknown properties\n * @type {String}\n */\n defaultType: 'unknown',\n\n /**\n * Holds the design set for known top-level components\n *\n * @type {Object}\n * @property {designSet} vcard vCard VCARD\n * @property {designSet} vevent iCalendar VEVENT\n * @property {designSet} vtodo iCalendar VTODO\n * @property {designSet} vjournal iCalendar VJOURNAL\n * @property {designSet} valarm iCalendar VALARM\n * @property {designSet} vtimezone iCalendar VTIMEZONE\n * @property {designSet} daylight iCalendar DAYLIGHT\n * @property {designSet} standard iCalendar STANDARD\n *\n * @example\n * let propertyName = 'fn';\n * let componentDesign = ICAL.design.components.vcard;\n * let propertyDetails = componentDesign.property[propertyName];\n * if (propertyDetails.defaultType == 'text') {\n * // Yep, sure is...\n * }\n */\n components: {\n vcard: vcardSet,\n vcard3: vcard3Set,\n vevent: icalSet,\n vtodo: icalSet,\n vjournal: icalSet,\n valarm: icalSet,\n vtimezone: icalSet,\n daylight: icalSet,\n standard: icalSet\n },\n\n\n /**\n * The design set for iCalendar (rfc5545/rfc7265) components.\n * @type {designSet}\n */\n icalendar: icalSet,\n\n /**\n * The design set for vCard (rfc6350/rfc7095) components.\n * @type {designSet}\n */\n vcard: vcardSet,\n\n /**\n * The design set for vCard (rfc2425/rfc2426/rfc7095) components.\n * @type {designSet}\n */\n vcard3: vcard3Set,\n\n /**\n * Gets the design set for the given component name.\n *\n * @param {String} componentName The name of the component\n * @return {designSet} The design set for the component\n */\n getDesignSet: function(componentName) {\n let isInDesign = componentName && componentName in design.components;\n return isInDesign ? design.components[componentName] : design.defaultSet;\n }\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\nconst LINE_ENDING = '\\r\\n';\nconst DEFAULT_VALUE_TYPE = 'unknown';\nconst RFC6868_REPLACE_MAP = { '\"': \"^'\", \"\\n\": \"^n\", \"^\": \"^^\" };\n\n/**\n * Convert a full jCal/jCard array into a iCalendar/vCard string.\n *\n * @function ICAL.stringify\n * @variation function\n * @param {Array} jCal The jCal/jCard document\n * @return {String} The stringified iCalendar/vCard document\n */\nfunction stringify(jCal) {\n if (typeof jCal[0] == \"string\") {\n // This is a single component\n jCal = [jCal];\n }\n\n let i = 0;\n let len = jCal.length;\n let result = '';\n\n for (; i < len; i++) {\n result += stringify.component(jCal[i]) + LINE_ENDING;\n }\n\n return result;\n}\n\n/**\n * Converts an jCal component array into a ICAL string.\n * Recursive will resolve sub-components.\n *\n * Exact component/property order is not saved all\n * properties will come before subcomponents.\n *\n * @function ICAL.stringify.component\n * @param {Array} component\n * jCal/jCard fragment of a component\n * @param {designSet} designSet\n * The design data to use for this component\n * @return {String} The iCalendar/vCard string\n */\nstringify.component = function(component, designSet) {\n let name = component[0].toUpperCase();\n let result = 'BEGIN:' + name + LINE_ENDING;\n\n let props = component[1];\n let propIdx = 0;\n let propLen = props.length;\n\n let designSetName = component[0];\n // rfc6350 requires that in vCard 4.0 the first component is the VERSION\n // component with as value 4.0, note that 3.0 does not have this requirement.\n if (designSetName === 'vcard' && component[1].length > 0 &&\n !(component[1][0][0] === \"version\" && component[1][0][3] === \"4.0\")) {\n designSetName = \"vcard3\";\n }\n designSet = designSet || design.getDesignSet(designSetName);\n\n for (; propIdx < propLen; propIdx++) {\n result += stringify.property(props[propIdx], designSet) + LINE_ENDING;\n }\n\n // Ignore subcomponents if none exist, e.g. in vCard.\n let comps = component[2] || [];\n let compIdx = 0;\n let compLen = comps.length;\n\n for (; compIdx < compLen; compIdx++) {\n result += stringify.component(comps[compIdx], designSet) + LINE_ENDING;\n }\n\n result += 'END:' + name;\n return result;\n};\n\n/**\n * Converts a single jCal/jCard property to a iCalendar/vCard string.\n *\n * @function ICAL.stringify.property\n * @param {Array} property\n * jCal/jCard property array\n * @param {designSet} designSet\n * The design data to use for this property\n * @param {Boolean} noFold\n * If true, the line is not folded\n * @return {String} The iCalendar/vCard string\n */\nstringify.property = function(property, designSet, noFold) {\n let name = property[0].toUpperCase();\n let jsName = property[0];\n let params = property[1];\n\n if (!designSet) {\n designSet = design.defaultSet;\n }\n\n let groupName = params.group;\n let line;\n if (designSet.propertyGroups && groupName) {\n line = groupName.toUpperCase() + \".\" + name;\n } else {\n line = name;\n }\n\n for (let [paramName, value] of Object.entries(params)) {\n if (designSet.propertyGroups && paramName == 'group') {\n continue;\n }\n\n let paramDesign = designSet.param[paramName];\n let multiValue = paramDesign && paramDesign.multiValue;\n if (multiValue && Array.isArray(value)) {\n value = value.map(function(val) {\n val = stringify._rfc6868Unescape(val);\n val = stringify.paramPropertyValue(val, paramDesign.multiValueSeparateDQuote);\n return val;\n });\n value = stringify.multiValue(value, multiValue, \"unknown\", null, designSet);\n } else {\n value = stringify._rfc6868Unescape(value);\n value = stringify.paramPropertyValue(value);\n }\n\n line += ';' + paramName.toUpperCase() + '=' + value;\n }\n\n if (property.length === 3) {\n // If there are no values, we must assume a blank value\n return line + ':';\n }\n\n let valueType = property[2];\n\n let propDetails;\n let multiValue = false;\n let structuredValue = false;\n let isDefault = false;\n\n if (jsName in designSet.property) {\n propDetails = designSet.property[jsName];\n\n if ('multiValue' in propDetails) {\n multiValue = propDetails.multiValue;\n }\n\n if (('structuredValue' in propDetails) && Array.isArray(property[3])) {\n structuredValue = propDetails.structuredValue;\n }\n\n if ('defaultType' in propDetails) {\n if (valueType === propDetails.defaultType) {\n isDefault = true;\n }\n } else {\n if (valueType === DEFAULT_VALUE_TYPE) {\n isDefault = true;\n }\n }\n } else {\n if (valueType === DEFAULT_VALUE_TYPE) {\n isDefault = true;\n }\n }\n\n // push the VALUE property if type is not the default\n // for the current property.\n if (!isDefault) {\n // value will never contain ;/:/, so we don't escape it here.\n line += ';VALUE=' + valueType.toUpperCase();\n }\n\n line += ':';\n\n if (multiValue && structuredValue) {\n line += stringify.multiValue(\n property[3], structuredValue, valueType, multiValue, designSet, structuredValue\n );\n } else if (multiValue) {\n line += stringify.multiValue(\n property.slice(3), multiValue, valueType, null, designSet, false\n );\n } else if (structuredValue) {\n line += stringify.multiValue(\n property[3], structuredValue, valueType, null, designSet, structuredValue\n );\n } else {\n line += stringify.value(property[3], valueType, designSet, false);\n }\n\n return noFold ? line : foldline(line);\n};\n\n/**\n * Handles escaping of property values that may contain:\n *\n * COLON (:), SEMICOLON (;), or COMMA (,)\n *\n * If any of the above are present the result is wrapped\n * in double quotes.\n *\n * @function ICAL.stringify.paramPropertyValue\n * @param {String} value Raw property value\n * @param {boolean} force If value should be escaped even when unnecessary\n * @return {String} Given or escaped value when needed\n */\nstringify.paramPropertyValue = function(value, force) {\n if (!force &&\n (value.indexOf(',') === -1) &&\n (value.indexOf(':') === -1) &&\n (value.indexOf(';') === -1)) {\n\n return value;\n }\n\n return '\"' + value + '\"';\n};\n\n/**\n * Converts an array of ical values into a single\n * string based on a type and a delimiter value (like \",\").\n *\n * @function ICAL.stringify.multiValue\n * @param {Array} values List of values to convert\n * @param {String} delim Used to join the values (\",\", \";\", \":\")\n * @param {String} type Lowecase ical value type\n * (like boolean, date-time, etc..)\n * @param {?String} innerMulti If set, each value will again be processed\n * Used for structured values\n * @param {designSet} designSet\n * The design data to use for this property\n *\n * @return {String} iCalendar/vCard string for value\n */\nstringify.multiValue = function(values, delim, type, innerMulti, designSet, structuredValue) {\n let result = '';\n let len = values.length;\n let i = 0;\n\n for (; i < len; i++) {\n if (innerMulti && Array.isArray(values[i])) {\n result += stringify.multiValue(values[i], innerMulti, type, null, designSet, structuredValue);\n } else {\n result += stringify.value(values[i], type, designSet, structuredValue);\n }\n\n if (i !== (len - 1)) {\n result += delim;\n }\n }\n\n return result;\n};\n\n/**\n * Processes a single ical value runs the associated \"toICAL\" method from the\n * design value type if available to convert the value.\n *\n * @function ICAL.stringify.value\n * @param {String|Number} value A formatted value\n * @param {String} type Lowercase iCalendar/vCard value type\n * (like boolean, date-time, etc..)\n * @return {String} iCalendar/vCard value for single value\n */\nstringify.value = function(value, type, designSet, structuredValue) {\n if (type in designSet.value && 'toICAL' in designSet.value[type]) {\n return designSet.value[type].toICAL(value, structuredValue);\n }\n return value;\n};\n\n/**\n * Internal helper for rfc6868. Exposing this on ICAL.stringify so that\n * hackers can disable the rfc6868 parsing if the really need to.\n *\n * @param {String} val The value to unescape\n * @return {String} The escaped value\n */\nstringify._rfc6868Unescape = function(val) {\n return val.replace(/[\\n^\"]/g, function(x) {\n return RFC6868_REPLACE_MAP[x];\n });\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\nconst NAME_INDEX$1 = 0;\nconst PROP_INDEX = 1;\nconst TYPE_INDEX = 2;\nconst VALUE_INDEX = 3;\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").Geo} Geo\n * Imports the 'Geo' type from the \"types.js\" module\n */\n\n/**\n * Provides a layer on top of the raw jCal object for manipulating a single property, with its\n * parameters and value.\n *\n * @memberof ICAL\n */\nclass Property {\n /**\n * Create an {@link ICAL.Property} by parsing the passed iCalendar string.\n *\n * @param {String} str The iCalendar string to parse\n * @param {designSet=} designSet The design data to use for this property\n * @return {Property} The created iCalendar property\n */\n static fromString(str, designSet) {\n return new Property(parse.property(str, designSet));\n }\n\n /**\n * Creates a new ICAL.Property instance.\n *\n * It is important to note that mutations done in the wrapper directly mutate the jCal object used\n * to initialize.\n *\n * Can also be used to create new properties by passing the name of the property (as a String).\n *\n * @param {Array|String} jCal Raw jCal representation OR the new name of the property\n * @param {Component=} parent Parent component\n */\n constructor(jCal, parent) {\n this._parent = parent || null;\n\n if (typeof(jCal) === 'string') {\n // We are creating the property by name and need to detect the type\n this.jCal = [jCal, {}, design.defaultType];\n this.jCal[TYPE_INDEX] = this.getDefaultType();\n } else {\n this.jCal = jCal;\n }\n this._updateType();\n }\n\n /**\n * The value type for this property\n * @type {String}\n */\n get type() {\n return this.jCal[TYPE_INDEX];\n }\n\n /**\n * The name of this property, in lowercase.\n * @type {String}\n */\n get name() {\n return this.jCal[NAME_INDEX$1];\n }\n\n /**\n * The parent component for this property.\n * @type {Component}\n */\n get parent() {\n return this._parent;\n }\n\n set parent(p) {\n // Before setting the parent, check if the design set has changed. If it\n // has, we later need to update the type if it was unknown before.\n let designSetChanged = !this._parent || (p && p._designSet != this._parent._designSet);\n\n this._parent = p;\n\n if (this.type == design.defaultType && designSetChanged) {\n this.jCal[TYPE_INDEX] = this.getDefaultType();\n this._updateType();\n }\n }\n\n /**\n * The design set for this property, e.g. icalendar vs vcard\n *\n * @type {designSet}\n * @private\n */\n get _designSet() {\n return this.parent ? this.parent._designSet : design.defaultSet;\n }\n\n /**\n * Updates the type metadata from the current jCal type and design set.\n *\n * @private\n */\n _updateType() {\n let designSet = this._designSet;\n\n if (this.type in designSet.value) {\n if ('decorate' in designSet.value[this.type]) {\n this.isDecorated = true;\n } else {\n this.isDecorated = false;\n }\n\n if (this.name in designSet.property) {\n this.isMultiValue = ('multiValue' in designSet.property[this.name]);\n this.isStructuredValue = ('structuredValue' in designSet.property[this.name]);\n }\n }\n }\n\n /**\n * Hydrate a single value. The act of hydrating means turning the raw jCal\n * value into a potentially wrapped object, for example {@link ICAL.Time}.\n *\n * @private\n * @param {Number} index The index of the value to hydrate\n * @return {?Object} The decorated value.\n */\n _hydrateValue(index) {\n if (this._values && this._values[index]) {\n return this._values[index];\n }\n\n // for the case where there is no value.\n if (this.jCal.length <= (VALUE_INDEX + index)) {\n return null;\n }\n\n if (this.isDecorated) {\n if (!this._values) {\n this._values = [];\n }\n return (this._values[index] = this._decorate(\n this.jCal[VALUE_INDEX + index]\n ));\n } else {\n return this.jCal[VALUE_INDEX + index];\n }\n }\n\n /**\n * Decorate a single value, returning its wrapped object. This is used by\n * the hydrate function to actually wrap the value.\n *\n * @private\n * @param {?} value The value to decorate\n * @return {Object} The decorated value\n */\n _decorate(value) {\n return this._designSet.value[this.type].decorate(value, this);\n }\n\n /**\n * Undecorate a single value, returning its raw jCal data.\n *\n * @private\n * @param {Object} value The value to undecorate\n * @return {?} The undecorated value\n */\n _undecorate(value) {\n return this._designSet.value[this.type].undecorate(value, this);\n }\n\n /**\n * Sets the value at the given index while also hydrating it. The passed\n * value can either be a decorated or undecorated value.\n *\n * @private\n * @param {?} value The value to set\n * @param {Number} index The index to set it at\n */\n _setDecoratedValue(value, index) {\n if (!this._values) {\n this._values = [];\n }\n\n if (typeof(value) === 'object' && 'icaltype' in value) {\n // decorated value\n this.jCal[VALUE_INDEX + index] = this._undecorate(value);\n this._values[index] = value;\n } else {\n // undecorated value\n this.jCal[VALUE_INDEX + index] = value;\n this._values[index] = this._decorate(value);\n }\n }\n\n /**\n * Gets a parameter on the property.\n *\n * @param {String} name Parameter name (lowercase)\n * @return {Array|String} Parameter value\n */\n getParameter(name) {\n if (name in this.jCal[PROP_INDEX]) {\n return this.jCal[PROP_INDEX][name];\n } else {\n return undefined;\n }\n }\n\n /**\n * Gets first parameter on the property.\n *\n * @param {String} name Parameter name (lowercase)\n * @return {String} Parameter value\n */\n getFirstParameter(name) {\n let parameters = this.getParameter(name);\n\n if (Array.isArray(parameters)) {\n return parameters[0];\n }\n\n return parameters;\n }\n\n /**\n * Sets a parameter on the property.\n *\n * @param {String} name The parameter name\n * @param {Array|String} value The parameter value\n */\n setParameter(name, value) {\n let lcname = name.toLowerCase();\n if (typeof value === \"string\" &&\n lcname in this._designSet.param &&\n 'multiValue' in this._designSet.param[lcname]) {\n value = [value];\n }\n this.jCal[PROP_INDEX][name] = value;\n }\n\n /**\n * Removes a parameter\n *\n * @param {String} name The parameter name\n */\n removeParameter(name) {\n delete this.jCal[PROP_INDEX][name];\n }\n\n /**\n * Get the default type based on this property's name.\n *\n * @return {String} The default type for this property\n */\n getDefaultType() {\n let name = this.jCal[NAME_INDEX$1];\n let designSet = this._designSet;\n\n if (name in designSet.property) {\n let details = designSet.property[name];\n if ('defaultType' in details) {\n return details.defaultType;\n }\n }\n return design.defaultType;\n }\n\n /**\n * Sets type of property and clears out any existing values of the current\n * type.\n *\n * @param {String} type New iCAL type (see design.*.values)\n */\n resetType(type) {\n this.removeAllValues();\n this.jCal[TYPE_INDEX] = type;\n this._updateType();\n }\n\n /**\n * Finds the first property value.\n *\n * @return {Binary | Duration | Period |\n * Recur | Time | UtcOffset | Geo | string | null} First property value\n */\n getFirstValue() {\n return this._hydrateValue(0);\n }\n\n /**\n * Gets all values on the property.\n *\n * NOTE: this creates an array during each call.\n *\n * @return {Array} List of values\n */\n getValues() {\n let len = this.jCal.length - VALUE_INDEX;\n\n if (len < 1) {\n // it is possible for a property to have no value.\n return [];\n }\n\n let i = 0;\n let result = [];\n\n for (; i < len; i++) {\n result[i] = this._hydrateValue(i);\n }\n\n return result;\n }\n\n /**\n * Removes all values from this property\n */\n removeAllValues() {\n if (this._values) {\n this._values.length = 0;\n }\n this.jCal.length = 3;\n }\n\n /**\n * Sets the values of the property. Will overwrite the existing values.\n * This can only be used for multi-value properties.\n *\n * @param {Array} values An array of values\n */\n setValues(values) {\n if (!this.isMultiValue) {\n throw new Error(\n this.name + ': does not not support mulitValue.\\n' +\n 'override isMultiValue'\n );\n }\n\n let len = values.length;\n let i = 0;\n this.removeAllValues();\n\n if (len > 0 &&\n typeof(values[0]) === 'object' &&\n 'icaltype' in values[0]) {\n this.resetType(values[0].icaltype);\n }\n\n if (this.isDecorated) {\n for (; i < len; i++) {\n this._setDecoratedValue(values[i], i);\n }\n } else {\n for (; i < len; i++) {\n this.jCal[VALUE_INDEX + i] = values[i];\n }\n }\n }\n\n /**\n * Sets the current value of the property. If this is a multi-value\n * property, all other values will be removed.\n *\n * @param {String|Object} value New property value.\n */\n setValue(value) {\n this.removeAllValues();\n if (typeof(value) === 'object' && 'icaltype' in value) {\n this.resetType(value.icaltype);\n }\n\n if (this.isDecorated) {\n this._setDecoratedValue(value, 0);\n } else {\n this.jCal[VALUE_INDEX] = value;\n }\n }\n\n /**\n * Returns the Object representation of this component. The returned object\n * is a live jCal object and should be cloned if modified.\n * @return {Object}\n */\n toJSON() {\n return this.jCal;\n }\n\n /**\n * The string representation of this component.\n * @return {String}\n */\n toICALString() {\n return stringify.property(\n this.jCal, this._designSet, true\n );\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").Geo} Geo\n * Imports the 'Geo' type from the \"types.js\" module\n */\n\nconst NAME_INDEX = 0;\nconst PROPERTY_INDEX = 1;\nconst COMPONENT_INDEX = 2;\n\nconst PROPERTY_NAME_INDEX = 0;\nconst PROPERTY_VALUE_INDEX = 3;\n\n/**\n * Wraps a jCal component, adding convenience methods to add, remove and update subcomponents and\n * properties.\n *\n * @memberof ICAL\n */\nclass Component {\n /**\n * Create an {@link ICAL.Component} by parsing the passed iCalendar string.\n *\n * @param {String} str The iCalendar string to parse\n */\n static fromString(str) {\n return new Component(parse.component(str));\n }\n\n /**\n * Creates a new Component instance.\n *\n * @param {Array|String} jCal Raw jCal component data OR name of new\n * component\n * @param {Component=} parent Parent component to associate\n */\n constructor(jCal, parent) {\n if (typeof(jCal) === 'string') {\n // jCal spec (name, properties, components)\n jCal = [jCal, [], []];\n }\n\n // mostly for legacy reasons.\n this.jCal = jCal;\n\n this.parent = parent || null;\n\n if (!this.parent && this.name === 'vcalendar') {\n this._timezoneCache = new Map();\n }\n }\n\n /**\n * Hydrated properties are inserted into the _properties array at the same\n * position as in the jCal array, so it is possible that the array contains\n * undefined values for unhydrdated properties. To avoid iterating the\n * array when checking if all properties have been hydrated, we save the\n * count here.\n *\n * @type {Number}\n * @private\n */\n _hydratedPropertyCount = 0;\n\n /**\n * The same count as for _hydratedPropertyCount, but for subcomponents\n *\n * @type {Number}\n * @private\n */\n _hydratedComponentCount = 0;\n\n /**\n * A cache of hydrated time zone objects which may be used by consumers, keyed\n * by time zone ID.\n *\n * @type {Map}\n * @private\n */\n _timezoneCache = null;\n\n /**\n * @private\n */\n _components = null;\n\n /**\n * @private\n */\n _properties = null;\n\n /**\n * The name of this component\n *\n * @type {String}\n */\n get name() {\n return this.jCal[NAME_INDEX];\n }\n\n /**\n * The design set for this component, e.g. icalendar vs vcard\n *\n * @type {designSet}\n * @private\n */\n get _designSet() {\n let parentDesign = this.parent && this.parent._designSet;\n if (!parentDesign && this.name == \"vcard\") {\n // We can't decide on vcard3 vs vcard4 just based on the component name, the version number is\n // in the version property. We also can't use hydrated properties here because it would lead\n // to recursion, but the spec says that the version property needs to be the very first one.\n let versionProp = this.jCal[PROPERTY_INDEX]?.[0];\n\n if (versionProp && versionProp[PROPERTY_NAME_INDEX] == \"version\" && versionProp[PROPERTY_VALUE_INDEX] == \"3.0\") {\n return design.getDesignSet(\"vcard3\");\n }\n }\n\n return parentDesign || design.getDesignSet(this.name);\n }\n\n /**\n * @private\n */\n _hydrateComponent(index) {\n if (!this._components) {\n this._components = [];\n this._hydratedComponentCount = 0;\n }\n\n if (this._components[index]) {\n return this._components[index];\n }\n\n let comp = new Component(\n this.jCal[COMPONENT_INDEX][index],\n this\n );\n\n this._hydratedComponentCount++;\n return (this._components[index] = comp);\n }\n\n /**\n * @private\n */\n _hydrateProperty(index) {\n if (!this._properties) {\n this._properties = [];\n this._hydratedPropertyCount = 0;\n }\n\n if (this._properties[index]) {\n return this._properties[index];\n }\n\n let prop = new Property(\n this.jCal[PROPERTY_INDEX][index],\n this\n );\n\n this._hydratedPropertyCount++;\n return (this._properties[index] = prop);\n }\n\n /**\n * Finds first sub component, optionally filtered by name.\n *\n * @param {String=} name Optional name to filter by\n * @return {?Component} The found subcomponent\n */\n getFirstSubcomponent(name) {\n if (name) {\n let i = 0;\n let comps = this.jCal[COMPONENT_INDEX];\n let len = comps.length;\n\n for (; i < len; i++) {\n if (comps[i][NAME_INDEX] === name) {\n let result = this._hydrateComponent(i);\n return result;\n }\n }\n } else {\n if (this.jCal[COMPONENT_INDEX].length) {\n return this._hydrateComponent(0);\n }\n }\n\n // ensure we return a value (strict mode)\n return null;\n }\n\n /**\n * Finds all sub components, optionally filtering by name.\n *\n * @param {String=} name Optional name to filter by\n * @return {Component[]} The found sub components\n */\n getAllSubcomponents(name) {\n let jCalLen = this.jCal[COMPONENT_INDEX].length;\n let i = 0;\n\n if (name) {\n let comps = this.jCal[COMPONENT_INDEX];\n let result = [];\n\n for (; i < jCalLen; i++) {\n if (name === comps[i][NAME_INDEX]) {\n result.push(\n this._hydrateComponent(i)\n );\n }\n }\n return result;\n } else {\n if (!this._components ||\n (this._hydratedComponentCount !== jCalLen)) {\n for (; i < jCalLen; i++) {\n this._hydrateComponent(i);\n }\n }\n\n return this._components || [];\n }\n }\n\n /**\n * Returns true when a named property exists.\n *\n * @param {String} name The property name\n * @return {Boolean} True, when property is found\n */\n hasProperty(name) {\n let props = this.jCal[PROPERTY_INDEX];\n let len = props.length;\n\n let i = 0;\n for (; i < len; i++) {\n // 0 is property name\n if (props[i][NAME_INDEX] === name) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds the first property, optionally with the given name.\n *\n * @param {String=} name Lowercase property name\n * @return {?Property} The found property\n */\n getFirstProperty(name) {\n if (name) {\n let i = 0;\n let props = this.jCal[PROPERTY_INDEX];\n let len = props.length;\n\n for (; i < len; i++) {\n if (props[i][NAME_INDEX] === name) {\n let result = this._hydrateProperty(i);\n return result;\n }\n }\n } else {\n if (this.jCal[PROPERTY_INDEX].length) {\n return this._hydrateProperty(0);\n }\n }\n\n return null;\n }\n\n /**\n * Returns first property's value, if available.\n *\n * @param {String=} name Lowercase property name\n * @return {Binary | Duration | Period |\n * Recur | Time | UtcOffset | Geo | string | null} The found property value.\n */\n getFirstPropertyValue(name) {\n let prop = this.getFirstProperty(name);\n if (prop) {\n return prop.getFirstValue();\n }\n\n return null;\n }\n\n /**\n * Get all properties in the component, optionally filtered by name.\n *\n * @param {String=} name Lowercase property name\n * @return {Property[]} List of properties\n */\n getAllProperties(name) {\n let jCalLen = this.jCal[PROPERTY_INDEX].length;\n let i = 0;\n\n if (name) {\n let props = this.jCal[PROPERTY_INDEX];\n let result = [];\n\n for (; i < jCalLen; i++) {\n if (name === props[i][NAME_INDEX]) {\n result.push(\n this._hydrateProperty(i)\n );\n }\n }\n return result;\n } else {\n if (!this._properties ||\n (this._hydratedPropertyCount !== jCalLen)) {\n for (; i < jCalLen; i++) {\n this._hydrateProperty(i);\n }\n }\n\n return this._properties || [];\n }\n }\n\n /**\n * @private\n */\n _removeObjectByIndex(jCalIndex, cache, index) {\n cache = cache || [];\n // remove cached version\n if (cache[index]) {\n let obj = cache[index];\n if (\"parent\" in obj) {\n obj.parent = null;\n }\n }\n\n cache.splice(index, 1);\n\n // remove it from the jCal\n this.jCal[jCalIndex].splice(index, 1);\n }\n\n /**\n * @private\n */\n _removeObject(jCalIndex, cache, nameOrObject) {\n let i = 0;\n let objects = this.jCal[jCalIndex];\n let len = objects.length;\n let cached = this[cache];\n\n if (typeof(nameOrObject) === 'string') {\n for (; i < len; i++) {\n if (objects[i][NAME_INDEX] === nameOrObject) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n return true;\n }\n }\n } else if (cached) {\n for (; i < len; i++) {\n if (cached[i] && cached[i] === nameOrObject) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * @private\n */\n _removeAllObjects(jCalIndex, cache, name) {\n let cached = this[cache];\n\n // Unfortunately we have to run through all children to reset their\n // parent property.\n let objects = this.jCal[jCalIndex];\n let i = objects.length - 1;\n\n // descending search required because splice\n // is used and will effect the indices.\n for (; i >= 0; i--) {\n if (!name || objects[i][NAME_INDEX] === name) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n }\n }\n }\n\n /**\n * Adds a single sub component.\n *\n * @param {Component} component The component to add\n * @return {Component} The passed in component\n */\n addSubcomponent(component) {\n if (!this._components) {\n this._components = [];\n this._hydratedComponentCount = 0;\n }\n\n if (component.parent) {\n component.parent.removeSubcomponent(component);\n }\n\n let idx = this.jCal[COMPONENT_INDEX].push(component.jCal);\n this._components[idx - 1] = component;\n this._hydratedComponentCount++;\n component.parent = this;\n return component;\n }\n\n /**\n * Removes a single component by name or the instance of a specific\n * component.\n *\n * @param {Component|String} nameOrComp Name of component, or component\n * @return {Boolean} True when comp is removed\n */\n removeSubcomponent(nameOrComp) {\n let removed = this._removeObject(COMPONENT_INDEX, '_components', nameOrComp);\n if (removed) {\n this._hydratedComponentCount--;\n }\n return removed;\n }\n\n /**\n * Removes all components or (if given) all components by a particular\n * name.\n *\n * @param {String=} name Lowercase component name\n */\n removeAllSubcomponents(name) {\n let removed = this._removeAllObjects(COMPONENT_INDEX, '_components', name);\n this._hydratedComponentCount = 0;\n return removed;\n }\n\n /**\n * Adds an {@link ICAL.Property} to the component.\n *\n * @param {Property} property The property to add\n * @return {Property} The passed in property\n */\n addProperty(property) {\n if (!(property instanceof Property)) {\n throw new TypeError('must be instance of ICAL.Property');\n }\n\n if (!this._properties) {\n this._properties = [];\n this._hydratedPropertyCount = 0;\n }\n\n if (property.parent) {\n property.parent.removeProperty(property);\n }\n\n let idx = this.jCal[PROPERTY_INDEX].push(property.jCal);\n this._properties[idx - 1] = property;\n this._hydratedPropertyCount++;\n property.parent = this;\n return property;\n }\n\n /**\n * Helper method to add a property with a value to the component.\n *\n * @param {String} name Property name to add\n * @param {String|Number|Object} value Property value\n * @return {Property} The created property\n */\n addPropertyWithValue(name, value) {\n let prop = new Property(name);\n prop.setValue(value);\n\n this.addProperty(prop);\n\n return prop;\n }\n\n /**\n * Helper method that will update or create a property of the given name\n * and sets its value. If multiple properties with the given name exist,\n * only the first is updated.\n *\n * @param {String} name Property name to update\n * @param {String|Number|Object} value Property value\n * @return {Property} The created property\n */\n updatePropertyWithValue(name, value) {\n let prop = this.getFirstProperty(name);\n\n if (prop) {\n prop.setValue(value);\n } else {\n prop = this.addPropertyWithValue(name, value);\n }\n\n return prop;\n }\n\n /**\n * Removes a single property by name or the instance of the specific\n * property.\n *\n * @param {String|Property} nameOrProp Property name or instance to remove\n * @return {Boolean} True, when deleted\n */\n removeProperty(nameOrProp) {\n let removed = this._removeObject(PROPERTY_INDEX, '_properties', nameOrProp);\n if (removed) {\n this._hydratedPropertyCount--;\n }\n return removed;\n }\n\n /**\n * Removes all properties associated with this component, optionally\n * filtered by name.\n *\n * @param {String=} name Lowercase property name\n * @return {Boolean} True, when deleted\n */\n removeAllProperties(name) {\n let removed = this._removeAllObjects(PROPERTY_INDEX, '_properties', name);\n this._hydratedPropertyCount = 0;\n return removed;\n }\n\n /**\n * Returns the Object representation of this component. The returned object\n * is a live jCal object and should be cloned if modified.\n * @return {Object}\n */\n toJSON() {\n return this.jCal;\n }\n\n /**\n * The string representation of this component.\n * @return {String}\n */\n toString() {\n return stringify.component(\n this.jCal, this._designSet\n );\n }\n\n /**\n * Retrieve a time zone definition from the component tree, if any is present.\n * If the tree contains no time zone definitions or the TZID cannot be\n * matched, returns null.\n *\n * @param {String} tzid The ID of the time zone to retrieve\n * @return {Timezone} The time zone corresponding to the ID, or null\n */\n getTimeZoneByID(tzid) {\n // VTIMEZONE components can only appear as a child of the VCALENDAR\n // component; walk the tree if we're not the root.\n if (this.parent) {\n return this.parent.getTimeZoneByID(tzid);\n }\n\n // If there is no time zone cache, we are probably parsing an incomplete\n // file and will have no time zone definitions.\n if (!this._timezoneCache) {\n return null;\n }\n\n if (this._timezoneCache.has(tzid)) {\n return this._timezoneCache.get(tzid);\n }\n\n // If the time zone is not already cached, hydrate it from the\n // subcomponents.\n const zones = this.getAllSubcomponents('vtimezone');\n for (const zone of zones) {\n if (zone.getFirstProperty('tzid').getFirstValue() === tzid) {\n const hydratedZone = new Timezone({\n component: zone,\n tzid: tzid,\n });\n\n this._timezoneCache.set(tzid, hydratedZone);\n\n return hydratedZone;\n }\n }\n\n // Per the standard, we should always have a time zone defined in a file\n // for any referenced TZID, but don't blow up if the file is invalid.\n return null;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Primary class for expanding recurring rules. Can take multiple rrules, rdates, exdate(s) and\n * iterate (in order) over each next occurrence.\n *\n * Once initialized this class can also be serialized saved and continue iteration from the last\n * point.\n *\n * NOTE: it is intended that this class is to be used with {@link ICAL.Event} which handles recurrence\n * exceptions.\n *\n * @example\n * // assuming event is a parsed ical component\n * var event;\n *\n * var expand = new ICAL.RecurExpansion({\n * component: event,\n * dtstart: event.getFirstPropertyValue('dtstart')\n * });\n *\n * // remember there are infinite rules so it is a good idea to limit the scope of the iterations\n * // then resume later on.\n *\n * // next is always an ICAL.Time or null\n * var next;\n *\n * while (someCondition && (next = expand.next())) {\n * // do something with next\n * }\n *\n * // save instance for later\n * var json = JSON.stringify(expand);\n *\n * //...\n *\n * // NOTE: if the component's properties have changed you will need to rebuild the class and start\n * // over. This only works when the component's recurrence info is the same.\n * var expand = new ICAL.RecurExpansion(JSON.parse(json));\n *\n * @memberof ICAL\n */\nclass RecurExpansion {\n /**\n * Creates a new ICAL.RecurExpansion instance.\n *\n * The options object can be filled with the specified initial values. It can also contain\n * additional members, as a result of serializing a previous expansion state, as shown in the\n * example.\n *\n * @param {Object} options\n * Recurrence expansion options\n * @param {Time} options.dtstart\n * Start time of the event\n * @param {Component=} options.component\n * Component for expansion, required if not resuming.\n */\n constructor(options) {\n this.ruleDates = [];\n this.exDates = [];\n this.fromData(options);\n }\n\n /**\n * True when iteration is fully completed.\n * @type {Boolean}\n */\n complete = false;\n\n /**\n * Array of rrule iterators.\n *\n * @type {RecurIterator[]}\n * @private\n */\n ruleIterators = null;\n\n /**\n * Array of rdate instances.\n *\n * @type {Time[]}\n * @private\n */\n ruleDates = null;\n\n /**\n * Array of exdate instances.\n *\n * @type {Time[]}\n * @private\n */\n exDates = null;\n\n /**\n * Current position in ruleDates array.\n * @type {Number}\n * @private\n */\n ruleDateInc = 0;\n\n /**\n * Current position in exDates array\n * @type {Number}\n * @private\n */\n exDateInc = 0;\n\n /**\n * Current negative date.\n *\n * @type {Time}\n * @private\n */\n exDate = null;\n\n /**\n * Current additional date.\n *\n * @type {Time}\n * @private\n */\n ruleDate = null;\n\n /**\n * Start date of recurring rules.\n *\n * @type {Time}\n */\n dtstart = null;\n\n /**\n * Last expanded time\n *\n * @type {Time}\n */\n last = null;\n\n /**\n * Initialize the recurrence expansion from the data object. The options\n * object may also contain additional members, see the\n * {@link ICAL.RecurExpansion constructor} for more details.\n *\n * @param {Object} options\n * Recurrence expansion options\n * @param {Time} options.dtstart\n * Start time of the event\n * @param {Component=} options.component\n * Component for expansion, required if not resuming.\n */\n fromData(options) {\n let start = formatClassType(options.dtstart, Time);\n\n if (!start) {\n throw new Error('.dtstart (ICAL.Time) must be given');\n } else {\n this.dtstart = start;\n }\n\n if (options.component) {\n this._init(options.component);\n } else {\n this.last = formatClassType(options.last, Time) || start.clone();\n\n if (!options.ruleIterators) {\n throw new Error('.ruleIterators or .component must be given');\n }\n\n this.ruleIterators = options.ruleIterators.map(function(item) {\n return formatClassType(item, RecurIterator);\n });\n\n this.ruleDateInc = options.ruleDateInc;\n this.exDateInc = options.exDateInc;\n\n if (options.ruleDates) {\n this.ruleDates = options.ruleDates.map(item => formatClassType(item, Time));\n this.ruleDate = this.ruleDates[this.ruleDateInc];\n }\n\n if (options.exDates) {\n this.exDates = options.exDates.map(item => formatClassType(item, Time));\n this.exDate = this.exDates[this.exDateInc];\n }\n\n if (typeof(options.complete) !== 'undefined') {\n this.complete = options.complete;\n }\n }\n }\n\n /**\n * Compare two ICAL.Time objects. When the second parameter is a DATE and the first parameter is\n * DATE-TIME, strip the time and compare only the days.\n *\n * @private\n * @param {Time} a The one object to compare\n * @param {Time} b The other object to compare\n */\n _compare_special(a, b) {\n if (!a.isDate && b.isDate)\n return new Time({ year: a.year, month: a.month, day: a.day }).compare(b);\n return a.compare(b);\n }\n\n /**\n * Retrieve the next occurrence in the series.\n * @return {Time}\n */\n next() {\n let iter;\n let next;\n let compare;\n\n let maxTries = 500;\n let currentTry = 0;\n\n while (true) {\n if (currentTry++ > maxTries) {\n throw new Error(\n 'max tries have occurred, rule may be impossible to fulfill.'\n );\n }\n\n next = this.ruleDate;\n iter = this._nextRecurrenceIter(this.last);\n\n // no more matches\n // because we increment the rule day or rule\n // _after_ we choose a value this should be\n // the only spot where we need to worry about the\n // end of events.\n if (!next && !iter) {\n // there are no more iterators or rdates\n this.complete = true;\n break;\n }\n\n // no next rule day or recurrence rule is first.\n if (!next || (iter && next.compare(iter.last) > 0)) {\n // must be cloned, recur will reuse the time element.\n next = iter.last.clone();\n // move to next so we can continue\n iter.next();\n }\n\n // if the ruleDate is still next increment it.\n if (this.ruleDate === next) {\n this._nextRuleDay();\n }\n\n this.last = next;\n\n // check the negative rules\n if (this.exDate) {\n // EXDATE can be in DATE format, but DTSTART is in DATE-TIME format\n compare = this._compare_special(this.last, this.exDate);\n\n if (compare > 0) {\n this._nextExDay();\n }\n\n // if the current rule is excluded skip it.\n if (compare === 0) {\n this._nextExDay();\n continue;\n }\n }\n\n //XXX: The spec states that after we resolve the final\n // list of dates we execute exdate this seems somewhat counter\n // intuitive to what I have seen most servers do so for now\n // I exclude based on the original date not the one that may\n // have been modified by the exception.\n return this.last;\n }\n }\n\n /**\n * Converts object into a serialize-able format. This format can be passed\n * back into the expansion to resume iteration.\n * @return {Object}\n */\n toJSON() {\n function toJSON(item) {\n return item.toJSON();\n }\n\n let result = Object.create(null);\n result.ruleIterators = this.ruleIterators.map(toJSON);\n\n if (this.ruleDates) {\n result.ruleDates = this.ruleDates.map(toJSON);\n }\n\n if (this.exDates) {\n result.exDates = this.exDates.map(toJSON);\n }\n\n result.ruleDateInc = this.ruleDateInc;\n result.exDateInc = this.exDateInc;\n result.last = this.last.toJSON();\n result.dtstart = this.dtstart.toJSON();\n result.complete = this.complete;\n\n return result;\n }\n\n /**\n * Extract all dates from the properties in the given component. The\n * properties will be filtered by the property name.\n *\n * @private\n * @param {Component} component The component to search in\n * @param {String} propertyName The property name to search for\n * @return {Time[]} The extracted dates.\n */\n _extractDates(component, propertyName) {\n let result = [];\n let props = component.getAllProperties(propertyName);\n\n for (let i = 0, len = props.length; i < len; i++) {\n for (let prop of props[i].getValues()) {\n let idx = binsearchInsert(\n result,\n prop,\n (a, b) => a.compare(b)\n );\n\n // ordered insert\n result.splice(idx, 0, prop);\n }\n }\n\n return result;\n }\n\n /**\n * Initialize the recurrence expansion.\n *\n * @private\n * @param {Component} component The component to initialize from.\n */\n _init(component) {\n this.ruleIterators = [];\n\n this.last = this.dtstart.clone();\n\n // to provide api consistency non-recurring\n // events can also use the iterator though it will\n // only return a single time.\n if (!component.hasProperty('rdate') &&\n !component.hasProperty('rrule') &&\n !component.hasProperty('recurrence-id')) {\n this.ruleDate = this.last.clone();\n this.complete = true;\n return;\n }\n\n if (component.hasProperty('rdate')) {\n this.ruleDates = this._extractDates(component, 'rdate');\n\n // special hack for cases where first rdate is prior\n // to the start date. We only check for the first rdate.\n // This is mostly for google's crazy recurring date logic\n // (contacts birthdays).\n if ((this.ruleDates[0]) &&\n (this.ruleDates[0].compare(this.dtstart) < 0)) {\n\n this.ruleDateInc = 0;\n this.last = this.ruleDates[0].clone();\n } else {\n this.ruleDateInc = binsearchInsert(\n this.ruleDates,\n this.last,\n (a, b) => a.compare(b)\n );\n }\n\n this.ruleDate = this.ruleDates[this.ruleDateInc];\n }\n\n if (component.hasProperty('rrule')) {\n let rules = component.getAllProperties('rrule');\n let i = 0;\n let len = rules.length;\n\n let rule;\n let iter;\n\n for (; i < len; i++) {\n rule = rules[i].getFirstValue();\n iter = rule.iterator(this.dtstart);\n this.ruleIterators.push(iter);\n\n // increment to the next occurrence so future\n // calls to next return times beyond the initial iteration.\n // XXX: I find this suspicious might be a bug?\n iter.next();\n }\n }\n\n if (component.hasProperty('exdate')) {\n this.exDates = this._extractDates(component, 'exdate');\n // if we have a .last day we increment the index to beyond it.\n // When DTSTART is in DATE-TIME format, EXDATE is in DATE format and EXDATE is\n // the date of DTSTART, _compare_special finds this out and compareTime fails.\n this.exDateInc = binsearchInsert(\n this.exDates,\n this.last,\n this._compare_special\n );\n\n this.exDate = this.exDates[this.exDateInc];\n }\n }\n\n /**\n * Advance to the next exdate\n * @private\n */\n _nextExDay() {\n this.exDate = this.exDates[++this.exDateInc];\n }\n\n /**\n * Advance to the next rule date\n * @private\n */\n _nextRuleDay() {\n this.ruleDate = this.ruleDates[++this.ruleDateInc];\n }\n\n /**\n * Find and return the recurrence rule with the most recent event and\n * return it.\n *\n * @private\n * @return {?RecurIterator} Found iterator.\n */\n _nextRecurrenceIter() {\n let iters = this.ruleIterators;\n\n if (iters.length === 0) {\n return null;\n }\n\n let len = iters.length;\n let iter;\n let iterTime;\n let iterIdx = 0;\n let chosenIter;\n\n // loop through each iterator\n for (; iterIdx < len; iterIdx++) {\n iter = iters[iterIdx];\n iterTime = iter.last;\n\n // if iteration is complete\n // then we must exclude it from\n // the search and remove it.\n if (iter.completed) {\n len--;\n if (iterIdx !== 0) {\n iterIdx--;\n }\n iters.splice(iterIdx, 1);\n continue;\n }\n\n // find the most recent possible choice\n if (!chosenIter || chosenIter.last.compare(iterTime) > 0) {\n // that iterator is saved\n chosenIter = iter;\n }\n }\n\n // the chosen iterator is returned but not mutated\n // this iterator contains the most recent event.\n return chosenIter;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").frequencyValues} frequencyValues\n * Imports the 'frequencyValues' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").occurrenceDetails} occurrenceDetails\n * Imports the 'occurrenceDetails' type from the \"types.js\" module\n */\n\n/**\n * ICAL.js is organized into multiple layers. The bottom layer is a raw jCal\n * object, followed by the component/property layer. The highest level is the\n * event representation, which this class is part of. See the\n * {@tutorial layers} guide for more details.\n *\n * @memberof ICAL\n */\nclass Event {\n /**\n * Creates a new ICAL.Event instance.\n *\n * @param {Component=} component The ICAL.Component to base this event on\n * @param {Object} [options] Options for this event\n * @param {Boolean=} options.strictExceptions When true, will verify exceptions are related by\n * their UUID\n * @param {Array=} options.exceptions\n * Exceptions to this event, either as components or events. If not\n * specified exceptions will automatically be set in relation of\n * component's parent\n */\n constructor(component, options) {\n if (!(component instanceof Component)) {\n options = component;\n component = null;\n }\n\n if (component) {\n this.component = component;\n } else {\n this.component = new Component('vevent');\n }\n\n this._rangeExceptionCache = Object.create(null);\n this.exceptions = Object.create(null);\n this.rangeExceptions = [];\n\n if (options && options.strictExceptions) {\n this.strictExceptions = options.strictExceptions;\n }\n\n if (options && options.exceptions) {\n options.exceptions.forEach(this.relateException, this);\n } else if (this.component.parent && !this.isRecurrenceException()) {\n this.component.parent.getAllSubcomponents('vevent').forEach(function(event) {\n if (event.hasProperty('recurrence-id')) {\n this.relateException(event);\n }\n }, this);\n }\n }\n\n\n static THISANDFUTURE = 'THISANDFUTURE';\n\n /**\n * List of related event exceptions.\n *\n * @type {Event[]}\n */\n exceptions = null;\n\n /**\n * When true, will verify exceptions are related by their UUID.\n *\n * @type {Boolean}\n */\n strictExceptions = false;\n\n /**\n * Relates a given event exception to this object. If the given component\n * does not share the UID of this event it cannot be related and will throw\n * an exception.\n *\n * If this component is an exception it cannot have other exceptions\n * related to it.\n *\n * @param {Component|Event} obj Component or event\n */\n relateException(obj) {\n if (this.isRecurrenceException()) {\n throw new Error('cannot relate exception to exceptions');\n }\n\n if (obj instanceof Component) {\n obj = new Event(obj);\n }\n\n if (this.strictExceptions && obj.uid !== this.uid) {\n throw new Error('attempted to relate unrelated exception');\n }\n\n let id = obj.recurrenceId.toString();\n\n // we don't sort or manage exceptions directly\n // here the recurrence expander handles that.\n this.exceptions[id] = obj;\n\n // index RANGE=THISANDFUTURE exceptions so we can\n // look them up later in getOccurrenceDetails.\n if (obj.modifiesFuture()) {\n let item = [\n obj.recurrenceId.toUnixTime(), id\n ];\n\n // we keep them sorted so we can find the nearest\n // value later on...\n let idx = binsearchInsert(\n this.rangeExceptions,\n item,\n compareRangeException\n );\n\n this.rangeExceptions.splice(idx, 0, item);\n }\n }\n\n /**\n * Checks if this record is an exception and has the RANGE=THISANDFUTURE\n * value.\n *\n * @return {Boolean} True, when exception is within range\n */\n modifiesFuture() {\n if (!this.component.hasProperty('recurrence-id')) {\n return false;\n }\n\n let range = this.component.getFirstProperty('recurrence-id').getParameter('range');\n return range === Event.THISANDFUTURE;\n }\n\n /**\n * Finds the range exception nearest to the given date.\n *\n * @param {Time} time usually an occurrence time of an event\n * @return {?Event} the related event/exception or null\n */\n findRangeException(time) {\n if (!this.rangeExceptions.length) {\n return null;\n }\n\n let utc = time.toUnixTime();\n let idx = binsearchInsert(\n this.rangeExceptions,\n [utc],\n compareRangeException\n );\n\n idx -= 1;\n\n // occurs before\n if (idx < 0) {\n return null;\n }\n\n let rangeItem = this.rangeExceptions[idx];\n\n /* c8 ignore next 4 */\n if (utc < rangeItem[0]) {\n // sanity check only\n return null;\n }\n\n return rangeItem[1];\n }\n\n /**\n * Returns the occurrence details based on its start time. If the\n * occurrence has an exception will return the details for that exception.\n *\n * NOTE: this method is intend to be used in conjunction\n * with the {@link ICAL.Event#iterator iterator} method.\n *\n * @param {Time} occurrence time occurrence\n * @return {occurrenceDetails} Information about the occurrence\n */\n getOccurrenceDetails(occurrence) {\n let id = occurrence.toString();\n let utcId = occurrence.convertToZone(Timezone.utcTimezone).toString();\n let item;\n let result = {\n //XXX: Clone?\n recurrenceId: occurrence\n };\n\n if (id in this.exceptions) {\n item = result.item = this.exceptions[id];\n result.startDate = item.startDate;\n result.endDate = item.endDate;\n result.item = item;\n } else if (utcId in this.exceptions) {\n item = this.exceptions[utcId];\n result.startDate = item.startDate;\n result.endDate = item.endDate;\n result.item = item;\n } else {\n // range exceptions (RANGE=THISANDFUTURE) have a\n // lower priority then direct exceptions but\n // must be accounted for first. Their item is\n // always the first exception with the range prop.\n let rangeExceptionId = this.findRangeException(\n occurrence\n );\n let end;\n\n if (rangeExceptionId) {\n let exception = this.exceptions[rangeExceptionId];\n\n // range exception must modify standard time\n // by the difference (if any) in start/end times.\n result.item = exception;\n\n let startDiff = this._rangeExceptionCache[rangeExceptionId];\n\n if (!startDiff) {\n let original = exception.recurrenceId.clone();\n let newStart = exception.startDate.clone();\n\n // zones must be same otherwise subtract may be incorrect.\n original.zone = newStart.zone;\n startDiff = newStart.subtractDate(original);\n\n this._rangeExceptionCache[rangeExceptionId] = startDiff;\n }\n\n let start = occurrence.clone();\n start.zone = exception.startDate.zone;\n start.addDuration(startDiff);\n\n end = start.clone();\n end.addDuration(exception.duration);\n\n result.startDate = start;\n result.endDate = end;\n } else {\n // no range exception standard expansion\n end = occurrence.clone();\n end.addDuration(this.duration);\n\n result.endDate = end;\n result.startDate = occurrence;\n result.item = this;\n }\n }\n\n return result;\n }\n\n /**\n * Builds a recur expansion instance for a specific point in time (defaults\n * to startDate).\n *\n * @param {Time=} startTime Starting point for expansion\n * @return {RecurExpansion} Expansion object\n */\n iterator(startTime) {\n return new RecurExpansion({\n component: this.component,\n dtstart: startTime || this.startDate\n });\n }\n\n /**\n * Checks if the event is recurring\n *\n * @return {Boolean} True, if event is recurring\n */\n isRecurring() {\n let comp = this.component;\n return comp.hasProperty('rrule') || comp.hasProperty('rdate');\n }\n\n /**\n * Checks if the event describes a recurrence exception. See\n * {@tutorial terminology} for details.\n *\n * @return {Boolean} True, if the event describes a recurrence exception\n */\n isRecurrenceException() {\n return this.component.hasProperty('recurrence-id');\n }\n\n /**\n * Returns the types of recurrences this event may have.\n *\n * Returned as an object with the following possible keys:\n *\n * - YEARLY\n * - MONTHLY\n * - WEEKLY\n * - DAILY\n * - MINUTELY\n * - SECONDLY\n *\n * @return {Object.}\n * Object of recurrence flags\n */\n getRecurrenceTypes() {\n let rules = this.component.getAllProperties('rrule');\n let i = 0;\n let len = rules.length;\n let result = Object.create(null);\n\n for (; i < len; i++) {\n let value = rules[i].getFirstValue();\n result[value.freq] = true;\n }\n\n return result;\n }\n\n /**\n * The uid of this event\n * @type {String}\n */\n get uid() {\n return this._firstProp('uid');\n }\n\n set uid(value) {\n this._setProp('uid', value);\n }\n\n /**\n * The start date\n * @type {Time}\n */\n get startDate() {\n return this._firstProp('dtstart');\n }\n\n set startDate(value) {\n this._setTime('dtstart', value);\n }\n\n /**\n * The end date. This can be the result directly from the property, or the\n * end date calculated from start date and duration. Setting the property\n * will remove any duration properties.\n * @type {Time}\n */\n get endDate() {\n let endDate = this._firstProp('dtend');\n if (!endDate) {\n let duration = this._firstProp('duration');\n endDate = this.startDate.clone();\n if (duration) {\n endDate.addDuration(duration);\n } else if (endDate.isDate) {\n endDate.day += 1;\n }\n }\n return endDate;\n }\n\n set endDate(value) {\n if (this.component.hasProperty('duration')) {\n this.component.removeProperty('duration');\n }\n this._setTime('dtend', value);\n }\n\n /**\n * The duration. This can be the result directly from the property, or the\n * duration calculated from start date and end date. Setting the property\n * will remove any `dtend` properties.\n * @type {Duration}\n */\n get duration() {\n let duration = this._firstProp('duration');\n if (!duration) {\n return this.endDate.subtractDateTz(this.startDate);\n }\n return duration;\n }\n\n set duration(value) {\n if (this.component.hasProperty('dtend')) {\n this.component.removeProperty('dtend');\n }\n\n this._setProp('duration', value);\n }\n\n /**\n * The location of the event.\n * @type {String}\n */\n get location() {\n return this._firstProp('location');\n }\n\n set location(value) {\n this._setProp('location', value);\n }\n\n /**\n * The attendees in the event\n * @type {Property[]}\n */\n get attendees() {\n //XXX: This is way lame we should have a better\n // data structure for this later.\n return this.component.getAllProperties('attendee');\n }\n\n /**\n * The event summary\n * @type {String}\n */\n get summary() {\n return this._firstProp('summary');\n }\n\n set summary(value) {\n this._setProp('summary', value);\n }\n\n /**\n * The event description.\n * @type {String}\n */\n get description() {\n return this._firstProp('description');\n }\n\n set description(value) {\n this._setProp('description', value);\n }\n\n /**\n * The event color from [rfc7986](https://datatracker.ietf.org/doc/html/rfc7986)\n * @type {String}\n */\n get color() {\n return this._firstProp('color');\n }\n\n set color(value) {\n this._setProp('color', value);\n }\n\n /**\n * The organizer value as an uri. In most cases this is a mailto: uri, but\n * it can also be something else, like urn:uuid:...\n * @type {String}\n */\n get organizer() {\n return this._firstProp('organizer');\n }\n\n set organizer(value) {\n this._setProp('organizer', value);\n }\n\n /**\n * The sequence value for this event. Used for scheduling\n * see {@tutorial terminology}.\n * @type {Number}\n */\n get sequence() {\n return this._firstProp('sequence');\n }\n\n set sequence(value) {\n this._setProp('sequence', value);\n }\n\n /**\n * The recurrence id for this event. See {@tutorial terminology} for details.\n * @type {Time}\n */\n get recurrenceId() {\n return this._firstProp('recurrence-id');\n }\n\n set recurrenceId(value) {\n this._setTime('recurrence-id', value);\n }\n\n /**\n * Set/update a time property's value.\n * This will also update the TZID of the property.\n *\n * TODO: this method handles the case where we are switching\n * from a known timezone to an implied timezone (one without TZID).\n * This does _not_ handle the case of moving between a known\n * (by TimezoneService) timezone to an unknown timezone...\n *\n * We will not add/remove/update the VTIMEZONE subcomponents\n * leading to invalid ICAL data...\n * @private\n * @param {String} propName The property name\n * @param {Time} time The time to set\n */\n _setTime(propName, time) {\n let prop = this.component.getFirstProperty(propName);\n\n if (!prop) {\n prop = new Property(propName);\n this.component.addProperty(prop);\n }\n\n // utc and local don't get a tzid\n if (\n time.zone === Timezone.localTimezone ||\n time.zone === Timezone.utcTimezone\n ) {\n // remove the tzid\n prop.removeParameter('tzid');\n } else {\n prop.setParameter('tzid', time.zone.tzid);\n }\n\n prop.setValue(time);\n }\n\n _setProp(name, value) {\n this.component.updatePropertyWithValue(name, value);\n }\n\n _firstProp(name) {\n return this.component.getFirstPropertyValue(name);\n }\n\n /**\n * The string representation of this event.\n * @return {String}\n */\n toString() {\n return this.component.toString();\n }\n}\n\nfunction compareRangeException(a, b) {\n if (a[0] > b[0]) return 1;\n if (b[0] > a[0]) return -1;\n return 0;\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * The ComponentParser is used to process a String or jCal Object,\n * firing callbacks for various found components, as well as completion.\n *\n * @example\n * var options = {\n * // when false no events will be emitted for type\n * parseEvent: true,\n * parseTimezone: true\n * };\n *\n * var parser = new ICAL.ComponentParser(options);\n *\n * parser.onevent(eventComponent) {\n * //...\n * }\n *\n * // ontimezone, etc...\n *\n * parser.oncomplete = function() {\n *\n * };\n *\n * parser.process(stringOrComponent);\n *\n * @memberof ICAL\n */\nclass ComponentParser {\n /**\n * Creates a new ICAL.ComponentParser instance.\n *\n * @param {Object=} options Component parser options\n * @param {Boolean} options.parseEvent Whether events should be parsed\n * @param {Boolean} options.parseTimezeone Whether timezones should be parsed\n */\n constructor(options) {\n if (typeof(options) === 'undefined') {\n options = {};\n }\n\n for (let [key, value] of Object.entries(options)) {\n this[key] = value;\n }\n }\n\n /**\n * When true, parse events\n *\n * @type {Boolean}\n */\n parseEvent = true;\n\n /**\n * When true, parse timezones\n *\n * @type {Boolean}\n */\n parseTimezone = true;\n\n\n /* SAX like events here for reference */\n\n /**\n * Fired when parsing is complete\n * @callback\n */\n oncomplete = /* c8 ignore next */ function() {};\n\n /**\n * Fired if an error occurs during parsing.\n *\n * @callback\n * @param {Error} err details of error\n */\n onerror = /* c8 ignore next */ function(err) {};\n\n /**\n * Fired when a top level component (VTIMEZONE) is found\n *\n * @callback\n * @param {Timezone} component Timezone object\n */\n ontimezone = /* c8 ignore next */ function(component) {};\n\n /**\n * Fired when a top level component (VEVENT) is found.\n *\n * @callback\n * @param {Event} component Top level component\n */\n onevent = /* c8 ignore next */ function(component) {};\n\n /**\n * Process a string or parse ical object. This function itself will return\n * nothing but will start the parsing process.\n *\n * Events must be registered prior to calling this method.\n *\n * @param {Component|String|Object} ical The component to process,\n * either in its final form, as a jCal Object, or string representation\n */\n process(ical) {\n //TODO: this is sync now in the future we will have a incremental parser.\n if (typeof(ical) === 'string') {\n ical = parse(ical);\n }\n\n if (!(ical instanceof Component)) {\n ical = new Component(ical);\n }\n\n let components = ical.getAllSubcomponents();\n let i = 0;\n let len = components.length;\n let component;\n\n for (; i < len; i++) {\n component = components[i];\n\n switch (component.name) {\n case 'vtimezone':\n if (this.parseTimezone) {\n let tzid = component.getFirstPropertyValue('tzid');\n if (tzid) {\n this.ontimezone(new Timezone({\n tzid: tzid,\n component: component\n }));\n }\n }\n break;\n case 'vevent':\n if (this.parseEvent) {\n this.onevent(new Event(component));\n }\n break;\n default:\n continue;\n }\n }\n\n //XXX: ideally we should do a \"nextTick\" here\n // so in all cases this is actually async.\n this.oncomplete();\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * The main ICAL module. Provides access to everything else.\n *\n * @alias ICAL\n * @namespace ICAL\n * @property {ICAL.design} design\n * @property {ICAL.helpers} helpers\n */\nvar ICALmodule = {\n /**\n * The number of characters before iCalendar line folding should occur\n * @type {Number}\n * @default 75\n */\n foldLength: 75,\n\n debug: false,\n\n /**\n * The character(s) to be used for a newline. The default value is provided by\n * rfc5545.\n * @type {String}\n * @default \"\\r\\n\"\n */\n newLineChar: '\\r\\n',\n\n Binary,\n Component,\n ComponentParser,\n Duration,\n Event,\n Period,\n Property,\n Recur,\n RecurExpansion,\n RecurIterator,\n Time,\n Timezone,\n TimezoneService,\n UtcOffset,\n VCardTime,\n\n parse,\n stringify,\n\n design,\n helpers\n};\n\nexport { ICALmodule as default };\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","import './assets/index-CkcnNJJ0.css';\nimport { NcButton, NcDateTimePickerNative } from \"@nextcloud/vue\";\nimport IconDelete from \"vue-material-design-icons/TrashCanOutline.vue\";\nimport IconAdd from \"vue-material-design-icons/Plus.vue\";\nimport { getFirstDay } from \"@nextcloud/l10n\";\nimport { resolveComponent, createElementBlock, openBlock, Fragment, renderList, createElementVNode, createBlock, toDisplayString, createCommentVNode, createVNode, withCtx } from \"vue\";\nimport { getZoneString } from \"icalzone\";\nimport ICAL from \"ical.js\";\nimport { v4 } from \"uuid\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nconst _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nconst _sfc_main = {\n name: \"CalendarAvailability\",\n components: {\n NcDateTimePickerNative,\n NcButton,\n IconAdd,\n IconDelete\n },\n props: {\n slots: {\n type: Object,\n required: true\n },\n loading: {\n type: Boolean,\n default: false\n },\n l10nTo: {\n type: String,\n required: true\n },\n l10nDeleteSlot: {\n type: String,\n required: true\n },\n l10nEmptyDay: {\n type: String,\n required: true\n },\n l10nAddSlot: {\n type: String,\n required: true\n },\n l10nWeekDayListLabel: {\n type: String,\n default: \"Weekdays\"\n },\n l10nMonday: {\n type: String,\n required: true\n },\n l10nTuesday: {\n type: String,\n required: true\n },\n l10nWednesday: {\n type: String,\n required: true\n },\n l10nThursday: {\n type: String,\n required: true\n },\n l10nFriday: {\n type: String,\n required: true\n },\n l10nSaturday: {\n type: String,\n required: true\n },\n l10nSunday: {\n type: String,\n required: true\n },\n l10nStartPickerLabel: {\n type: Function,\n default: (dayName) => `Pick a start time for ${dayName}`\n },\n l10nEndPickerLabel: {\n type: Function,\n default: (dayName) => `Pick a end time for ${dayName}`\n }\n },\n data() {\n return {\n internalSlots: this.slotsToInternalData(this.slots)\n };\n },\n watch: {\n slots() {\n this.internalSlots = this.slotsToInternalData(this.slots);\n }\n },\n methods: {\n timeStampSlotsToDateObjectSlots(slots) {\n return slots.map((slot) => ({\n start: new Date(slot.start * 1e3),\n end: new Date(slot.end * 1e3)\n }));\n },\n slotsToInternalData() {\n const moToSa = [\n {\n id: \"MO\",\n displayName: this.l10nMonday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.MO)\n },\n {\n id: \"TU\",\n displayName: this.l10nTuesday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.TU)\n },\n {\n id: \"WE\",\n displayName: this.l10nWednesday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.WE)\n },\n {\n id: \"TH\",\n displayName: this.l10nThursday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.TH)\n },\n {\n id: \"FR\",\n displayName: this.l10nFriday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.FR)\n },\n {\n id: \"SA\",\n displayName: this.l10nSaturday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.SA)\n }\n ];\n const sunday = {\n id: \"SU\",\n displayName: this.l10nSunday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.SU)\n };\n return getFirstDay() === 1 ? [...moToSa, sunday] : [sunday, ...moToSa];\n },\n internalDataToSlots() {\n const converted = {};\n this.internalSlots.forEach(({ id, slots }) => {\n converted[id] = slots.map((slot) => ({\n start: Math.round(slot.start.getTime() / 1e3),\n end: Math.round(slot.end.getTime() / 1e3)\n }));\n });\n return converted;\n },\n addSlot(day) {\n const start = /* @__PURE__ */ new Date();\n start.setHours(9, 0, 0, 0);\n const end = /* @__PURE__ */ new Date();\n end.setHours(17, 0, 0, 0);\n day.slots.push({\n start,\n end\n });\n this.onChangeSlots();\n },\n removeSlot(day, idx) {\n day.slots.splice(idx, 1);\n this.onChangeSlots();\n },\n onChangeSlots() {\n this.$emit(\"update:slots\", this.internalDataToSlots());\n }\n }\n};\nconst _hoisted_1 = [\"aria-label\"];\nconst _hoisted_2 = { class: \"label-weekday\" };\nconst _hoisted_3 = [\"id\"];\nconst _hoisted_4 = { class: \"availability-slot-group\" };\nconst _hoisted_5 = { class: \"to-text\" };\nconst _hoisted_6 = {\n key: 0,\n class: \"empty-content\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcDateTimePickerNative = resolveComponent(\"NcDateTimePickerNative\");\n const _component_IconDelete = resolveComponent(\"IconDelete\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_IconAdd = resolveComponent(\"IconAdd\");\n return openBlock(), createElementBlock(\"ul\", {\n class: \"week-day-container\",\n \"aria-label\": $props.l10nWeekDayListLabel\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.internalSlots, (day) => {\n return openBlock(), createElementBlock(\"li\", {\n key: `day-label-${day.id}`,\n class: \"day-container\"\n }, [\n createElementVNode(\"div\", _hoisted_2, [\n createElementVNode(\"span\", {\n id: day.displayName + \"-label\"\n }, toDisplayString(day.displayName), 9, _hoisted_3)\n ]),\n (openBlock(), createElementBlock(\"div\", {\n key: `day-slots-${day.id}`,\n class: \"availability-slots\"\n }, [\n createElementVNode(\"div\", _hoisted_4, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(day.slots, (slot, idx) => {\n return openBlock(), createElementBlock(\"div\", {\n key: `slot-${day.id}-${idx}`,\n class: \"availability-slot\"\n }, [\n createVNode(_component_NcDateTimePickerNative, {\n id: `start-${day.id}-${idx}`,\n modelValue: slot.start,\n \"onUpdate:modelValue\": ($event) => slot.start = $event,\n type: \"time\",\n label: $props.l10nStartPickerLabel?.(day.displayName),\n \"hide-label\": true,\n class: \"start-date\",\n onChange: $options.onChangeSlots\n }, null, 8, [\"id\", \"modelValue\", \"onUpdate:modelValue\", \"label\", \"onChange\"]),\n createElementVNode(\"span\", _hoisted_5, toDisplayString($props.l10nTo), 1),\n createVNode(_component_NcDateTimePickerNative, {\n id: `end-${day.id}-${idx}`,\n modelValue: slot.end,\n \"onUpdate:modelValue\": ($event) => slot.end = $event,\n type: \"time\",\n label: $props.l10nEndPickerLabel?.(day.displayName),\n \"hide-label\": true,\n class: \"end-date\",\n onChange: $options.onChangeSlots\n }, null, 8, [\"id\", \"modelValue\", \"onUpdate:modelValue\", \"label\", \"onChange\"]),\n (openBlock(), createBlock(_component_NcButton, {\n key: `slot-${day.id}-${idx}-btn`,\n type: \"tertiary\",\n class: \"button\",\n \"aria-label\": $props.l10nDeleteSlot,\n title: $props.l10nDeleteSlot,\n onClick: ($event) => $options.removeSlot(day, idx)\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconDelete, { size: 20 })\n ]),\n _: 2\n }, 1032, [\"aria-label\", \"title\", \"onClick\"]))\n ]);\n }), 128))\n ]),\n day.slots.length === 0 ? (openBlock(), createElementBlock(\"span\", _hoisted_6, toDisplayString($props.l10nEmptyDay), 1)) : createCommentVNode(\"\", true)\n ])),\n (openBlock(), createBlock(_component_NcButton, {\n key: `add-slot-${day.id}`,\n disabled: $props.loading,\n class: \"add-another button\",\n title: $props.l10nAddSlot,\n \"aria-label\": $props.l10nAddSlot,\n onClick: ($event) => $options.addSlot(day)\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconAdd, { size: 20 })\n ]),\n _: 2\n }, 1032, [\"disabled\", \"title\", \"aria-label\", \"onClick\"]))\n ]);\n }), 128))\n ], 8, _hoisted_1);\n}\nconst CalendarAvailability = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-3ef03e87\"]]);\nconst logger = getLoggerBuilder().detectUser().setApp(\"@nextcloud/calendar-availability-vue\").build();\nfunction getEmptySlots() {\n return {\n MO: [],\n TU: [],\n WE: [],\n TH: [],\n FR: [],\n SA: [],\n SU: []\n };\n}\nfunction vavailabilityToSlots(vavailability) {\n const parsedIcal = ICAL.parse(vavailability);\n const vcalendarComp = new ICAL.Component(parsedIcal);\n const vavailabilityComp = vcalendarComp.getFirstSubcomponent(\"vavailability\");\n let timezoneId;\n const timezoneComp = vcalendarComp.getFirstSubcomponent(\"vtimezone\");\n if (timezoneComp) {\n timezoneId = timezoneComp.getFirstProperty(\"tzid\").getFirstValue();\n }\n const availableComps = vavailabilityComp.getAllSubcomponents(\"available\");\n const slots = getEmptySlots();\n availableComps.forEach((availableComp) => {\n const startIcalDate = availableComp.getFirstProperty(\"dtstart\").getFirstValue();\n const endIcalDate = availableComp.getFirstProperty(\"dtend\").getFirstValue();\n const rrule = availableComp.getFirstProperty(\"rrule\");\n const start = /* @__PURE__ */ new Date();\n start.setHours(startIcalDate.hour, startIcalDate.minute, 0, 0);\n const end = /* @__PURE__ */ new Date();\n end.setHours(endIcalDate.hour, endIcalDate.minute, 0, 0);\n if (rrule.getFirstValue().freq !== \"WEEKLY\") {\n logger.warn(\"rrule not supported\", {\n rrule: rrule.toICALString()\n });\n return;\n }\n rrule.getFirstValue().getComponent(\"BYDAY\").forEach((day) => {\n slots[day].push({\n start: start.getTime() / 1e3,\n end: end.getTime() / 1e3\n });\n });\n });\n return {\n slots,\n timezoneId\n };\n}\nfunction slotsToVavailability(slots, timezoneId) {\n const vcalendarComp = new ICAL.Component(\"vcalendar\");\n vcalendarComp.addPropertyWithValue(\"prodid\", \"Nextcloud DAV app\");\n const predefinedTimezoneIcal = getZoneString(timezoneId);\n if (predefinedTimezoneIcal) {\n const timezoneComp = new ICAL.Component(ICAL.parse(predefinedTimezoneIcal));\n vcalendarComp.addSubcomponent(timezoneComp);\n } else {\n const timezoneComp = new ICAL.Component(\"vtimezone\");\n timezoneComp.addPropertyWithValue(\"tzid\", timezoneId);\n vcalendarComp.addSubcomponent(timezoneComp);\n }\n const vavailabilityComp = new ICAL.Component(\"vavailability\");\n const deduplicated = slots.reduce((acc, slot) => {\n const start = new Date(slot.start * 1e3);\n const end = new Date(slot.end * 1e3);\n const key = [\n start.getHours(),\n start.getMinutes(),\n end.getHours(),\n end.getMinutes()\n ].join(\"-\");\n return {\n ...acc,\n [key]: [...acc[key] ?? [], slot]\n };\n }, {});\n Object.keys(deduplicated).map((key) => {\n const slots2 = deduplicated[key];\n const start = slots2[0].start;\n const end = slots2[0].end;\n const days = slots2.map((slot) => slot.day).filter((day, index, self) => self.indexOf(day) === index);\n const availableComp = new ICAL.Component(\"available\");\n const startTimeProp = availableComp.addPropertyWithValue(\"dtstart\", ICAL.Time.fromJSDate(new Date(start * 1e3), false));\n startTimeProp.setParameter(\"tzid\", timezoneId);\n const endTimeProp = availableComp.addPropertyWithValue(\"dtend\", ICAL.Time.fromJSDate(new Date(end * 1e3), false));\n endTimeProp.setParameter(\"tzid\", timezoneId);\n availableComp.addPropertyWithValue(\"uid\", v4());\n availableComp.addPropertyWithValue(\"rrule\", {\n freq: \"WEEKLY\",\n byday: days\n });\n return availableComp;\n }).map(vavailabilityComp.addSubcomponent.bind(vavailabilityComp));\n vcalendarComp.addSubcomponent(vavailabilityComp);\n return vcalendarComp.toString();\n}\nexport {\n CalendarAvailability,\n getEmptySlots,\n slotsToVavailability,\n vavailabilityToSlots\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { WebDAVClient } from 'webdav'\n\nimport { getCurrentUser, getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { createClient } from 'webdav'\n\nlet client: WebDAVClient | undefined = undefined\n\n/**\n * Get the WebDAV client for the current user on the calendars endpoint.\n */\nexport function getClient(): WebDAVClient {\n\tif (!client) {\n\t\t// init webdav client\n\t\tconst remote = generateRemoteUrl(`dav/calendars/${getCurrentUser()!.uid}`)\n\t\tclient = createClient(remote)\n\n\t\t// set CSRF token header\n\t\tconst setHeaders = (token) => {\n\t\t\tclient!.setHeaders({\n\t\t\t\t// Add this so the server knows it is an request from the browser\n\t\t\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t\t\t// Inject user auth\n\t\t\t\trequesttoken: token ?? '',\n\t\t\t})\n\t\t}\n\n\t\t// refresh headers when request token changes\n\t\tonRequestTokenUpdate(setHeaders)\n\t\tsetHeaders(getRequestToken())\n\t}\n\n\treturn client\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tslotsToVavailability,\n\tvavailabilityToSlots,\n} from '@nextcloud/calendar-availability-vue'\nimport { parseXML } from 'webdav'\nimport { getClient } from '../dav/client.ts'\nimport { logger } from './logger.ts'\n\n/**\n * Get an object representing empty time slots for each day of the week.\n */\nexport function getEmptySlots() {\n\treturn {\n\t\tMO: [],\n\t\tTU: [],\n\t\tWE: [],\n\t\tTH: [],\n\t\tFR: [],\n\t\tSA: [],\n\t\tSU: [],\n\t}\n}\n\n/**\n * Find the availability of the schedule inbox.\n */\nexport async function findScheduleInboxAvailability() {\n\tconst response = await getClient().customRequest('inbox', {\n\t\tmethod: 'PROPFIND',\n\t\tdata: `\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t \n\t\t\t`,\n\t})\n\n\tconst xml = await parseXML(await response.text())\n\n\tif (!xml) {\n\t\treturn undefined\n\t}\n\n\tconst availability = xml?.multistatus?.response[0]?.propstat?.prop['calendar-availability']\n\tif (!availability) {\n\t\treturn undefined\n\t}\n\n\treturn vavailabilityToSlots(availability)\n}\n\n/**\n * Save the availability of the schedule inbox.\n *\n * @param slots - The availability slots to save.\n * @param timezoneId - The timezone identifier.\n */\nexport async function saveScheduleInboxAvailability(slots, timezoneId) {\n\tconst all = [...Object.keys(slots).flatMap((dayId) => slots[dayId].map((slot) => ({\n\t\t...slot,\n\t\tday: dayId,\n\t})))]\n\n\tconst vavailability = slotsToVavailability(all, timezoneId)\n\n\tlogger.debug('New availability ical created', {\n\t\tvavailability,\n\t})\n\n\tawait getClient().customRequest('inbox', {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t\t ${vavailability}\n\t\t\t\t\n\t\t\t \n\t\t\t`,\n\t})\n}\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Enable user status automation based on availability\n */\nexport async function enableUserStatusAutomation(): Promise {\n\tawait axios.post(\n\t\tgenerateOcsUrl('/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\tappId: 'dav',\n\t\t\tconfigKey: 'user_status_automation',\n\t\t}),\n\t\t{\n\t\t\tconfigValue: 'yes',\n\t\t},\n\t)\n}\n\n/**\n * Disable user status automation based on availability\n */\nexport async function disableUserStatusAutomation(): Promise {\n\tawait axios.delete(generateOcsUrl('/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\tappId: 'dav',\n\t\tconfigKey: 'user_status_automation',\n\t}))\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport UserAvailability from './views/UserAvailability.vue'\n\nconst app = createApp(UserAvailability)\napp.mount('#settings-personal-availability')\n"],"names":["formatDateAsYMD","date","year","month","day","inputAdjustDate","timezoneOffsetMilliseconds","_sfc_main","NcButton","NcTextField","NcTextArea","NcDateTimePickerNative","NcSelectUsers","t","firstDay","lastDay","status","message","replacementUserId","replacementUserDisplayName","loadState","firstDayDate","firstDayInputAdjusted","lastDayInputAdjusted","result","query","search","shareType","ShareType","request","axios","generateOcsUrl","error","logger","data","exact","rawExactSuggestions","rawSuggestions","exactSuggestions","share","suggestions","allSuggestions","nameCounts","item","debounce","args","getCurrentUser","showSuccess","showError","_hoisted_1","_createElementBlock","_normalizeClass","_ctx","$options","_createElementVNode","_createVNode","_component_NcDateTimePickerNative","$data","$event","$setup","_toDisplayString","_component_NcSelectUsers","_component_NcTextField","_component_NcTextArea","_component_NcButton","zones","dist","zones_1","require$$0","renderZoneSub","n","f","r","s","getZoneLines","zoneName","includeWrapper","zoneData","d","getZoneString","Binary","aString","aValue","b64","o1","o2","o3","h1","h2","h3","h4","bits","i","ac","enc","tmp_arr","dec","DURATION_LETTERS","DATA_PROPS_TO_COPY","Duration","aSeconds","string","aStr","pos","dict","chunks","type","numeric","parseDurationChunk","aData","seconds","secs","trunc","prop","aOther","thisSeconds","otherSeconds","str","hasWeeks","letter","number","object","num","isStrictlyNaN","Period","parts","options","Time","end","aProp","aLenient","fromDateOrDateTimeString","dateProp","dt","_daysInMonth","days","aDayOfYear","aYear","doy","tt","is_leap","strictParseInt","zone","zoneId","Timezone","timeData","aProperty","aDate","useUTC","aZone","aWeekStart","dow","wkst","yr","LTRS","dom","#epochTime","a","b","attr","val","hour","minute","second","timezone","key","value","TimezoneService","firstDow","dowCacheKey","q","m","Y","h","aFirstDayOfWeek","delta","aDayOfWeek","aPos","daysInMonth","weekday","start","otherDay","startDow","offset","endDow","wnCacheKey","week1","isoyear","daysBetween","answer","aDuration","mult","unixTime","other","tz","rc","copy","zone_equals","design","pad2","aExtraDays","aExtraHours","aExtraMinutes","aExtraSeconds","aTime","minutesOverflow","hoursOverflow","daysOverflow","yearsOverflow","time","ms","len","CHAR","VALUE_DELIMITER","PARAM_DELIMITER","PARAM_NAME_DELIMITER","DEFAULT_VALUE_TYPE$1","DEFAULT_PARAM_TYPE","RFC6868_REPLACE_MAP$1","parse","input","state","root","err","line","ParserError","designSet","valuePos","paramPos","lastParamIndex","lastValuePos","name","params","parsedParams","parsedParamLength","accumulator","currentValue","newComponent","valueType","multiValue","structuredValue","propertyDetails","splitName","ungroupedName","lastParam","delim","lcname","mvdelim","extendedValue","propValuePos","nextPos","length_before","delimiter","x","buffer","innerMulti","lastPos","unescapedIndexOf","callback","firstChar","newlineOffset","OPTIONS","from_zone","to_zone","utcOffset","#utcTimezone","#localTimezone","change","hours","minutes","Component","jCal","tt_change","change_num","change_num_to_use","step","clone","zone_change","tmp_change","prev_zone_change","want_daylight","idx","binsearchInsert","today","changesEndYear","subcomps","compLen","compIdx","aComponent","changes","dtstart","convert_tzoffset","init_changes","changebase","props","rdate","rrule","iterator","occ","utc","tzid","updateTimezones","vcal","allsubs","properties","vtimezones","reqTzid","comp","formatClassType","list","seekVal","cmpfunc","low","high","mid","cmpval","aSrc","aDeep","arr","obj","foldline","aLine","line_length","cp","ICALmodule","extend","source","target","descr","helpers","UtcOffset","instance","factor","VCardTime","aIcalType","part","v","e","tmz","splitzone","tm","dtlen","tmlen","hasDashDate","hasDashTime","o","icaltype","y","mm","hasYear","hasMonth","hasDay","hasHour","hasMinute","hasSecond","datepart","timepart","RecurIterator","Recur","InvalidRecurrenceRuleError","wkdy","dayName","untilYear","tempLast","initLast","bydow","dayOfMonth","normalized","again","before","valid","invalid_count","inc","this_freq","end_of_data","week_no","rules","newRules","ruleIdx","rule","isInit","byMonthDay","byDay","dateIdx","dateLen","dayLen","dataIsValid","self","initMonth","nextMonth","monthsCounter","next","dayIdx","data_valid","setpos","setpos_total","last_day","coded_day","startOfWeek","matches","aRuleType","aInterval","aDateAttr","aFollowingAttr","aPreviousIncr","has_by_rule","dta","years","aFactor","aNextIncrement","nextunit","validWeeks","monthIdx","first_week","last_week","weekIdx","partCount","t1","t2","monthday","t3","first_dow","doy_offset","last_dow","by_month_day","spIndex","bydayParts","month_day","first_matching_day","last_matching_day","expandedDays","weekno","daysInYear","days_list","tmp","start_dow","end_dow","end_year_day","tmp_start_doy","first","last","this_dow","aRules","j","one","two","indexMapValue","ruleMapValue","pass","ruleType","bydata","weekNo","req","deftime","VALID_DAY_NAMES","VALID_BYDAY_PART","DOW_MAP","REVERSE_DOW_MAP","entry","ALLOWED_FREQ","fmtIcal","values","ucname","partDesign","partArr","partSet","optionDesign","aStart","aType","aValues","aStartTime","aRecurrenceId","iter","uckey","res","k","kparts","parseNumericValue","min","max","FROM_ICAL_NEWLINE","TO_ICAL_NEWLINE","FROM_VCARD_NEWLINE","TO_VCARD_NEWLINE","createTextType","fromNewline","toNewline","structuredEscape","replaceNewline","regEx","DEFAULT_TYPE_TEXT","DEFAULT_TYPE_TEXT_MULTI","DEFAULT_TYPE_TEXT_STRUCTURED","DEFAULT_TYPE_INTEGER","DEFAULT_TYPE_DATETIME_DATE","DEFAULT_TYPE_DATETIME","DEFAULT_TYPE_URI","DEFAULT_TYPE_UTCOFFSET","DEFAULT_TYPE_RECUR","DEFAULT_TYPE_DATE_ANDOR_TIME","replaceNewlineReplace","newline","commonProperties","commonValues","parsed","icalParams","icalValues","aBinary","aRecur","icalProperties","vcardValues","isFromIcal","lastChar","signChar","sign","c","vcardParams","vcardProperties","vcard3Values","vcard3Params","vcard3Properties","icalSet","vcardSet","vcard3Set","componentName","LINE_ENDING","DEFAULT_VALUE_TYPE","RFC6868_REPLACE_MAP","stringify","component","propIdx","propLen","designSetName","comps","property","noFold","jsName","groupName","paramName","paramDesign","propDetails","isDefault","force","NAME_INDEX$1","PROP_INDEX","TYPE_INDEX","VALUE_INDEX","Property","parent","p","designSetChanged","index","parameters","details","NAME_INDEX","PROPERTY_INDEX","COMPONENT_INDEX","PROPERTY_NAME_INDEX","PROPERTY_VALUE_INDEX","parentDesign","versionProp","jCalLen","jCalIndex","cache","nameOrObject","objects","cached","nameOrComp","removed","nameOrProp","hydratedZone","RecurExpansion","compare","maxTries","currentTry","toJSON","propertyName","iters","iterTime","iterIdx","chosenIter","Event","event","id","compareRangeException","rangeItem","occurrence","utcId","rangeExceptionId","exception","startDiff","original","newStart","startTime","endDate","duration","propName","ComponentParser","ical","components","byteToHex","unsafeStringify","getRandomValues","rnds8","rng","randomUUID","native","_v4","buf","rnds","v4","_export_sfc","sfc","IconAdd","IconDelete","slots","slot","moToSa","sunday","getFirstDay","converted","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_sfc_render","_cache","$props","resolveComponent","_component_IconDelete","_component_IconAdd","openBlock","createElementBlock","Fragment","renderList","createElementVNode","toDisplayString","createVNode","createBlock","withCtx","createCommentVNode","CalendarAvailability","getLoggerBuilder","getEmptySlots","vavailabilityToSlots","vavailability","parsedIcal","ICAL","vcalendarComp","vavailabilityComp","timezoneId","timezoneComp","availableComps","availableComp","startIcalDate","endIcalDate","slotsToVavailability","predefinedTimezoneIcal","deduplicated","acc","slots2","client","getClient","remote","generateRemoteUrl","createClient","setHeaders","token","onRequestTokenUpdate","getRequestToken","findScheduleInboxAvailability","response","xml","parseXML","availability","saveScheduleInboxAvailability","all","dayId","enableUserStatusAutomation","disableUserStatusAutomation","getCapabilities","loading","ref","saving","automated","onMounted","slotData","save","_unref","NcCheckboxRadioSwitch","hideAbsenceSettings","NcSettingsSection","AvailabilityForm","_createBlock","AbsenceForm","app","createApp","UserAvailability"],"mappings":"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AAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iCACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,8BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,0BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,6BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iCACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,0BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,6BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,6BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,yBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,+BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,0BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,6BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,0BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,8BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,8BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,8BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,8BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iCACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,yBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,QACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,QACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,yBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,QACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,UACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,WACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,UACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,UACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,WACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,QACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,QACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,E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","x_google_ignoreList":[2,3,4,5,6,7,8,9]} \ No newline at end of file +{"version":3,"file":"dav-settings-personal-availability.mjs","sources":["../build/frontend/apps/dav/src/utils/date.ts","../build/frontend/apps/dav/src/components/AbsenceForm.vue","../node_modules/icalzone/dist/zones.js","../node_modules/icalzone/dist/index.js","../node_modules/ical.js/dist/ical.js","../node_modules/uuid/dist-browser/stringify.js","../node_modules/uuid/dist-browser/rng.js","../node_modules/uuid/dist-browser/native.js","../node_modules/uuid/dist-browser/v4.js","../node_modules/@nextcloud/calendar-availability-vue/dist/index.mjs","../build/frontend/apps/dav/src/dav/client.ts","../build/frontend/apps/dav/src/service/CalendarService.ts","../build/frontend/apps/dav/src/service/PreferenceService.ts","../build/frontend/apps/dav/src/components/AvailabilityForm.vue","../build/frontend/apps/dav/src/views/UserAvailability.vue","../build/frontend/apps/dav/src/settings-personal-availability.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Format a date as 'YYYY-MM-DD'.\n *\n * @param date - A date instance to format.\n */\nexport function formatDateAsYMD(date: Date): `${number}-${number}-${number}` {\n\tconst year = date.getFullYear()\n\tconst month = (date.getMonth() + 1).toString().padStart(2, '0') as `${number}`\n\tconst day = date.getDate().toString().padStart(2, '0') as `${number}`\n\treturn `${year}-${month}-${day}`\n}\n","\n\n\n\n\n\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.zonesMap = exports.defaultStart = void 0;\nexports.defaultStart = \"19700101T000000\";\nexports.zonesMap = new Map([\n [\n \"Africa/Abidjan\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Accra\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Addis_Ababa\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Algiers\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"CET\"\n }\n }\n ],\n [\n \"Africa/Asmara\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Bamako\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Bangui\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Banjul\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Bissau\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Blantyre\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Brazzaville\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Bujumbura\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Cairo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Africa/Casablanca\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Africa/Ceuta\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Africa/Conakry\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Dakar\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Dar_es_Salaam\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Djibouti\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Douala\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/El_Aaiun\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Africa/Freetown\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Gaborone\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Harare\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Johannesburg\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Juba\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Kampala\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Khartoum\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Kigali\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Kinshasa\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lagos\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Libreville\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lome\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Luanda\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Lubumbashi\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Lusaka\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Malabo\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Maputo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"Africa/Maseru\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Mbabane\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"SAST\"\n }\n }\n ],\n [\n \"Africa/Mogadishu\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Monrovia\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Nairobi\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Africa/Ndjamena\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Niamey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Nouakchott\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Ouagadougou\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Africa/Porto-Novo\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Sao_Tome\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"WAT\"\n }\n }\n ],\n [\n \"Africa/Tripoli\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Africa/Tunis\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"CET\"\n }\n }\n ],\n [\n \"Africa/Windhoek\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"CAT\"\n }\n }\n ],\n [\n \"America/Adak\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"t\": \"-1000\",\n \"n\": \"HST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-1000\",\n \"t\": \"-0900\",\n \"n\": \"HDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Anchorage\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Anguilla\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Antigua\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Araguaina\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Buenos_Aires\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Catamarca\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Cordoba\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Jujuy\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/La_Rioja\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Mendoza\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Rio_Gallegos\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Salta\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/San_Juan\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/San_Luis\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Tucuman\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Argentina/Ushuaia\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Aruba\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Asuncion\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700322T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701004T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Atikokan\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Bahia_Banderas\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Bahia\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Barbados\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Belem\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Belize\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Blanc-Sablon\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Boa_Vista\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Bogota\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Boise\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Cambridge_Bay\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Campo_Grande\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Cancun\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Caracas\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Cayenne\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Cayman\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Chicago\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Chihuahua\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Costa_Rica\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Creston\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Cuiaba\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Curacao\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Danmarkshavn\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"America/Dawson_Creek\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Dawson\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Denver\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Detroit\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Dominica\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Edmonton\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Eirunepe\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/El_Salvador\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Fort_Nelson\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Fortaleza\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Glace_Bay\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Godthab\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701024T230000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19700328T220000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SA\"\n }\n }\n }\n ],\n [\n \"America/Goose_Bay\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Grand_Turk\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Grenada\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Guadeloupe\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Guatemala\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Guayaquil\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Guyana\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Halifax\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Havana\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"CST\",\n \"s\": \"19701101T010000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"CDT\",\n \"s\": \"19700308T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Hermosillo\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Indiana/Indianapolis\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Knox\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Marengo\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Petersburg\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Tell_City\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Vevay\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Vincennes\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Indiana/Winamac\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Inuvik\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Iqaluit\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Jamaica\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Juneau\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kentucky/Louisville\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kentucky/Monticello\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Kralendijk\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/La_Paz\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Lima\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Los_Angeles\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Lower_Princes\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Maceio\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Managua\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Manaus\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Marigot\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Martinique\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Matamoros\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Mazatlan\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Menominee\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Merida\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Metlakatla\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Mexico_City\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Miquelon\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Moncton\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Monterrey\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Montevideo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Montserrat\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Nassau\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/New_York\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Nipigon\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Nome\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Noronha\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"America/North_Dakota/Beulah\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/North_Dakota/Center\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/North_Dakota/New_Salem\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Ojinaga\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Panama\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"EST\"\n }\n }\n ],\n [\n \"America/Pangnirtung\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Paramaribo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Phoenix\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"MST\"\n }\n }\n ],\n [\n \"America/Port_of_Spain\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Port-au-Prince\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Porto_Velho\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"America/Puerto_Rico\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Punta_Arenas\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Rainy_River\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Rankin_Inlet\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Recife\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Regina\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Resolute\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Rio_Branco\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"America/Santarem\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"America/Santiago\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"-04\",\n \"s\": \"19700405T000000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19700906T000000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Santo_Domingo\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Sao_Paulo\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\",\n \"s\": \"19700215T000000\",\n \"r\": {\n \"m\": 2,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"-0300\",\n \"t\": \"-0200\",\n \"n\": \"-02\",\n \"s\": \"19701101T000000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"America/Scoresbysund\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"t\": \"-0100\",\n \"n\": \"-01\",\n \"s\": \"19701025T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0100\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"America/Sitka\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/St_Barthelemy\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Johns\",\n {\n \"s\": {\n \"f\": \"-0230\",\n \"t\": \"-0330\",\n \"n\": \"NST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0330\",\n \"t\": \"-0230\",\n \"n\": \"NDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/St_Kitts\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Lucia\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Thomas\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/St_Vincent\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Swift_Current\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Tegucigalpa\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"America/Thule\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Thunder_Bay\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Tijuana\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Toronto\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"t\": \"-0500\",\n \"n\": \"EST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0500\",\n \"t\": \"-0400\",\n \"n\": \"EDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Tortola\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"AST\"\n }\n }\n ],\n [\n \"America/Vancouver\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Whitehorse\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"t\": \"-0800\",\n \"n\": \"PST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0800\",\n \"t\": \"-0700\",\n \"n\": \"PDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Winnipeg\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"CST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"CDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Yakutat\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"t\": \"-0900\",\n \"n\": \"AKST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0900\",\n \"t\": \"-0800\",\n \"n\": \"AKDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"America/Yellowknife\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"t\": \"-0700\",\n \"n\": \"MST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0700\",\n \"t\": \"-0600\",\n \"n\": \"MDT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Casey\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Antarctica/Davis\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Antarctica/DumontDUrville\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Antarctica/Macquarie\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Antarctica/Mawson\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Antarctica/McMurdo\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"NZST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"NZDT\",\n \"s\": \"19700927T020000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Palmer\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Antarctica/Rothera\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Antarctica/Syowa\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Antarctica/Troll\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0200\",\n \"n\": \"+02\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Antarctica/Vostok\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Arctic/Longyearbyen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Aden\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Almaty\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Amman\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701030T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1FR\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700326T235959\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1TH\"\n }\n }\n }\n ],\n [\n \"Asia/Anadyr\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Asia/Aqtau\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Aqtobe\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Ashgabat\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Atyrau\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Baghdad\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Bahrain\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Baku\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Bangkok\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Barnaul\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Beirut\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Bishkek\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Brunei\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Chita\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Choibalsan\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Colombo\",\n {\n \"s\": {\n \"f\": \"+0530\",\n \"n\": \"+0530\"\n }\n }\n ],\n [\n \"Asia/Damascus\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701030T000000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1FR\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700327T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1FR\"\n }\n }\n }\n ],\n [\n \"Asia/Dhaka\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Dili\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Dubai\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Dushanbe\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Famagusta\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Gaza\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701031T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700328T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SA\"\n }\n }\n }\n ],\n [\n \"Asia/Hebron\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701031T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SA\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700328T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"4SA\"\n }\n }\n }\n ],\n [\n \"Asia/Ho_Chi_Minh\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Hong_Kong\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"HKT\"\n }\n }\n ],\n [\n \"Asia/Hovd\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Irkutsk\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Istanbul\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Jakarta\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"WIB\"\n }\n }\n ],\n [\n \"Asia/Jayapura\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"WIT\"\n }\n }\n ],\n [\n \"Asia/Jerusalem\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"IST\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"IDT\",\n \"s\": \"19700327T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1FR\"\n }\n }\n }\n ],\n [\n \"Asia/Kabul\",\n {\n \"s\": {\n \"f\": \"+0430\",\n \"n\": \"+0430\"\n }\n }\n ],\n [\n \"Asia/Kamchatka\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Asia/Karachi\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"PKT\"\n }\n }\n ],\n [\n \"Asia/Kathmandu\",\n {\n \"s\": {\n \"f\": \"+0545\",\n \"n\": \"+0545\"\n }\n }\n ],\n [\n \"Asia/Khandyga\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Kolkata\",\n {\n \"s\": {\n \"f\": \"+0530\",\n \"n\": \"IST\"\n }\n }\n ],\n [\n \"Asia/Krasnoyarsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Kuala_Lumpur\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Kuching\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Kuwait\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Macau\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Magadan\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Makassar\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"WITA\"\n }\n }\n ],\n [\n \"Asia/Manila\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"PST\"\n }\n }\n ],\n [\n \"Asia/Muscat\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Nicosia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Asia/Novokuznetsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Novosibirsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Omsk\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Oral\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Phnom_Penh\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Pontianak\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"WIB\"\n }\n }\n ],\n [\n \"Asia/Pyongyang\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"KST\"\n }\n }\n ],\n [\n \"Asia/Qatar\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Qyzylorda\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Riyadh\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Asia/Sakhalin\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Samarkand\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Seoul\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"KST\"\n }\n }\n ],\n [\n \"Asia/Shanghai\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Singapore\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Srednekolymsk\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Asia/Taipei\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"CST\"\n }\n }\n ],\n [\n \"Asia/Tashkent\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Tbilisi\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Asia/Tehran\",\n {\n \"s\": {\n \"f\": \"+0430\",\n \"t\": \"+0330\",\n \"n\": \"+0330\",\n \"s\": \"19700921T000000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"3SU\"\n }\n },\n \"d\": {\n \"f\": \"+0330\",\n \"t\": \"+0430\",\n \"n\": \"+0430\",\n \"s\": \"19700321T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"3SU\"\n }\n }\n }\n ],\n [\n \"Asia/Thimphu\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Tokyo\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"JST\"\n }\n }\n ],\n [\n \"Asia/Tomsk\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Ulaanbaatar\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Asia/Urumqi\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Asia/Ust-Nera\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Asia/Vientiane\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Asia/Vladivostok\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Asia/Yakutsk\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Asia/Yangon\",\n {\n \"s\": {\n \"f\": \"+0630\",\n \"n\": \"+0630\"\n }\n }\n ],\n [\n \"Asia/Yekaterinburg\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Asia/Yerevan\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Atlantic/Azores\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"t\": \"-0100\",\n \"n\": \"-01\",\n \"s\": \"19701025T010000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0100\",\n \"t\": \"+0000\",\n \"n\": \"+00\",\n \"s\": \"19700329T000000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Bermuda\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"t\": \"-0400\",\n \"n\": \"AST\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"-0400\",\n \"t\": \"-0300\",\n \"n\": \"ADT\",\n \"s\": \"19700308T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"2SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Canary\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Cape_Verde\",\n {\n \"s\": {\n \"f\": \"-0100\",\n \"n\": \"-01\"\n }\n }\n ],\n [\n \"Atlantic/Faroe\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Madeira\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Atlantic/Reykjavik\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Atlantic/South_Georgia\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"Atlantic/St_Helena\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Atlantic/Stanley\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Australia/Adelaide\",\n {\n \"s\": {\n \"f\": \"+1030\",\n \"t\": \"+0930\",\n \"n\": \"ACST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0930\",\n \"t\": \"+1030\",\n \"n\": \"ACDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Brisbane\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"AEST\"\n }\n }\n ],\n [\n \"Australia/Broken_Hill\",\n {\n \"s\": {\n \"f\": \"+1030\",\n \"t\": \"+0930\",\n \"n\": \"ACST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0930\",\n \"t\": \"+1030\",\n \"n\": \"ACDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Currie\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Darwin\",\n {\n \"s\": {\n \"f\": \"+0930\",\n \"n\": \"ACST\"\n }\n }\n ],\n [\n \"Australia/Eucla\",\n {\n \"s\": {\n \"f\": \"+0845\",\n \"n\": \"+0845\"\n }\n }\n ],\n [\n \"Australia/Hobart\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Lindeman\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"AEST\"\n }\n }\n ],\n [\n \"Australia/Lord_Howe\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1030\",\n \"n\": \"+1030\",\n \"s\": \"19700405T020000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1030\",\n \"t\": \"+1100\",\n \"n\": \"+11\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Melbourne\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Australia/Perth\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"AWST\"\n }\n }\n ],\n [\n \"Australia/Sydney\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"t\": \"+1000\",\n \"n\": \"AEST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1000\",\n \"t\": \"+1100\",\n \"n\": \"AEDT\",\n \"s\": \"19701004T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Etc/GMT-0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT-1\",\n {\n \"s\": {\n \"f\": \"-0100\",\n \"n\": \"-01\"\n }\n }\n ],\n [\n \"Etc/GMT-10\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Etc/GMT-11\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"-11\"\n }\n }\n ],\n [\n \"Etc/GMT-12\",\n {\n \"s\": {\n \"f\": \"-1200\",\n \"n\": \"-12\"\n }\n }\n ],\n [\n \"Etc/GMT-2\",\n {\n \"s\": {\n \"f\": \"-0200\",\n \"n\": \"-02\"\n }\n }\n ],\n [\n \"Etc/GMT-3\",\n {\n \"s\": {\n \"f\": \"-0300\",\n \"n\": \"-03\"\n }\n }\n ],\n [\n \"Etc/GMT-4\",\n {\n \"s\": {\n \"f\": \"-0400\",\n \"n\": \"-04\"\n }\n }\n ],\n [\n \"Etc/GMT-5\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"n\": \"-05\"\n }\n }\n ],\n [\n \"Etc/GMT-6\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"-06\"\n }\n }\n ],\n [\n \"Etc/GMT-7\",\n {\n \"s\": {\n \"f\": \"-0700\",\n \"n\": \"-07\"\n }\n }\n ],\n [\n \"Etc/GMT-8\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"n\": \"-08\"\n }\n }\n ],\n [\n \"Etc/GMT-9\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"n\": \"-09\"\n }\n }\n ],\n [\n \"Etc/GMT\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT+0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/GMT+1\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"n\": \"+01\"\n }\n }\n ],\n [\n \"Etc/GMT+10\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Etc/GMT+11\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Etc/GMT+12\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Etc/GMT+13\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Etc/GMT+14\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"n\": \"+14\"\n }\n }\n ],\n [\n \"Etc/GMT+2\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"+02\"\n }\n }\n ],\n [\n \"Etc/GMT+3\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Etc/GMT+4\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Etc/GMT+5\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Etc/GMT+6\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Etc/GMT+7\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Etc/GMT+8\",\n {\n \"s\": {\n \"f\": \"+0800\",\n \"n\": \"+08\"\n }\n }\n ],\n [\n \"Etc/GMT+9\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Etc/GMT0\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/Greenwich\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"GMT\"\n }\n }\n ],\n [\n \"Etc/UCT\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UCT\"\n }\n }\n ],\n [\n \"Etc/Universal\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Etc/UTC\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Etc/Zulu\",\n {\n \"s\": {\n \"f\": \"+0000\",\n \"n\": \"UTC\"\n }\n }\n ],\n [\n \"Europe/Amsterdam\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Andorra\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Astrakhan\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Athens\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Belgrade\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Berlin\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Bratislava\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Brussels\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Bucharest\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Budapest\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Busingen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Chisinau\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Copenhagen\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Dublin\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"IST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Gibraltar\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Guernsey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Helsinki\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Isle_of_Man\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Istanbul\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Jersey\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Kaliningrad\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"n\": \"EET\"\n }\n }\n ],\n [\n \"Europe/Kiev\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Kirov\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Lisbon\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"WET\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"WEST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Ljubljana\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/London\",\n {\n \"s\": {\n \"f\": \"+0100\",\n \"t\": \"+0000\",\n \"n\": \"GMT\",\n \"s\": \"19701025T020000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0000\",\n \"t\": \"+0100\",\n \"n\": \"BST\",\n \"s\": \"19700329T010000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Luxembourg\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Madrid\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Malta\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Mariehamn\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Minsk\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"+03\"\n }\n }\n ],\n [\n \"Europe/Monaco\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Moscow\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"MSK\"\n }\n }\n ],\n [\n \"Europe/Nicosia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Oslo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Paris\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Podgorica\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Prague\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Riga\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Rome\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Samara\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/San_Marino\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Sarajevo\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Saratov\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Simferopol\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"MSK\"\n }\n }\n ],\n [\n \"Europe/Skopje\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Sofia\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Stockholm\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Tallinn\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Tirane\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Ulyanovsk\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Uzhgorod\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vaduz\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vatican\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vienna\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Vilnius\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Volgograd\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Europe/Warsaw\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zagreb\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zaporozhye\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"t\": \"+0200\",\n \"n\": \"EET\",\n \"s\": \"19701025T040000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0200\",\n \"t\": \"+0300\",\n \"n\": \"EEST\",\n \"s\": \"19700329T030000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Europe/Zurich\",\n {\n \"s\": {\n \"f\": \"+0200\",\n \"t\": \"+0100\",\n \"n\": \"CET\",\n \"s\": \"19701025T030000\",\n \"r\": {\n \"m\": 10,\n \"d\": \"-1SU\"\n }\n },\n \"d\": {\n \"f\": \"+0100\",\n \"t\": \"+0200\",\n \"n\": \"CEST\",\n \"s\": \"19700329T020000\",\n \"r\": {\n \"m\": 3,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Indian/Antananarivo\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Chagos\",\n {\n \"s\": {\n \"f\": \"+0600\",\n \"n\": \"+06\"\n }\n }\n ],\n [\n \"Indian/Christmas\",\n {\n \"s\": {\n \"f\": \"+0700\",\n \"n\": \"+07\"\n }\n }\n ],\n [\n \"Indian/Cocos\",\n {\n \"s\": {\n \"f\": \"+0630\",\n \"n\": \"+0630\"\n }\n }\n ],\n [\n \"Indian/Comoro\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Kerguelen\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Indian/Mahe\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Indian/Maldives\",\n {\n \"s\": {\n \"f\": \"+0500\",\n \"n\": \"+05\"\n }\n }\n ],\n [\n \"Indian/Mauritius\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Indian/Mayotte\",\n {\n \"s\": {\n \"f\": \"+0300\",\n \"n\": \"EAT\"\n }\n }\n ],\n [\n \"Indian/Reunion\",\n {\n \"s\": {\n \"f\": \"+0400\",\n \"n\": \"+04\"\n }\n }\n ],\n [\n \"Pacific/Apia\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"t\": \"+1300\",\n \"n\": \"+13\",\n \"s\": \"19700405T040000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1300\",\n \"t\": \"+1400\",\n \"n\": \"+14\",\n \"s\": \"19700927T030000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Auckland\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"NZST\",\n \"s\": \"19700405T030000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"NZDT\",\n \"s\": \"19700927T020000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Bougainville\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Chatham\",\n {\n \"s\": {\n \"f\": \"+1345\",\n \"t\": \"+1245\",\n \"n\": \"+1245\",\n \"s\": \"19700405T034500\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SU\"\n }\n },\n \"d\": {\n \"f\": \"+1245\",\n \"t\": \"+1345\",\n \"n\": \"+1345\",\n \"s\": \"19700927T024500\",\n \"r\": {\n \"m\": 9,\n \"d\": \"-1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Chuuk\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Pacific/Easter\",\n {\n \"s\": {\n \"f\": \"-0500\",\n \"t\": \"-0600\",\n \"n\": \"-06\",\n \"s\": \"19700404T220000\",\n \"r\": {\n \"m\": 4,\n \"d\": \"1SA\"\n }\n },\n \"d\": {\n \"f\": \"-0600\",\n \"t\": \"-0500\",\n \"n\": \"-05\",\n \"s\": \"19700905T220000\",\n \"r\": {\n \"m\": 9,\n \"d\": \"1SA\"\n }\n }\n }\n ],\n [\n \"Pacific/Efate\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Enderbury\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Fakaofo\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Fiji\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"t\": \"+1200\",\n \"n\": \"+12\",\n \"s\": \"19700118T030000\",\n \"r\": {\n \"m\": 1,\n \"d\": \"-2SU\"\n }\n },\n \"d\": {\n \"f\": \"+1200\",\n \"t\": \"+1300\",\n \"n\": \"+13\",\n \"s\": \"19701101T020000\",\n \"r\": {\n \"m\": 11,\n \"d\": \"1SU\"\n }\n }\n }\n ],\n [\n \"Pacific/Funafuti\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Galapagos\",\n {\n \"s\": {\n \"f\": \"-0600\",\n \"n\": \"-06\"\n }\n }\n ],\n [\n \"Pacific/Gambier\",\n {\n \"s\": {\n \"f\": \"-0900\",\n \"n\": \"-09\"\n }\n }\n ],\n [\n \"Pacific/Guadalcanal\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Guam\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"ChST\"\n }\n }\n ],\n [\n \"Pacific/Honolulu\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"HST\"\n }\n }\n ],\n [\n \"Pacific/Kiritimati\",\n {\n \"s\": {\n \"f\": \"+1400\",\n \"n\": \"+14\"\n }\n }\n ],\n [\n \"Pacific/Kosrae\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Kwajalein\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Majuro\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Marquesas\",\n {\n \"s\": {\n \"f\": \"-0930\",\n \"n\": \"-0930\"\n }\n }\n ],\n [\n \"Pacific/Midway\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"SST\"\n }\n }\n ],\n [\n \"Pacific/Nauru\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Niue\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"-11\"\n }\n }\n ],\n [\n \"Pacific/Norfolk\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Noumea\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Pago_Pago\",\n {\n \"s\": {\n \"f\": \"-1100\",\n \"n\": \"SST\"\n }\n }\n ],\n [\n \"Pacific/Palau\",\n {\n \"s\": {\n \"f\": \"+0900\",\n \"n\": \"+09\"\n }\n }\n ],\n [\n \"Pacific/Pitcairn\",\n {\n \"s\": {\n \"f\": \"-0800\",\n \"n\": \"-08\"\n }\n }\n ],\n [\n \"Pacific/Pohnpei\",\n {\n \"s\": {\n \"f\": \"+1100\",\n \"n\": \"+11\"\n }\n }\n ],\n [\n \"Pacific/Port_Moresby\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"+10\"\n }\n }\n ],\n [\n \"Pacific/Rarotonga\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Pacific/Saipan\",\n {\n \"s\": {\n \"f\": \"+1000\",\n \"n\": \"ChST\"\n }\n }\n ],\n [\n \"Pacific/Tahiti\",\n {\n \"s\": {\n \"f\": \"-1000\",\n \"n\": \"-10\"\n }\n }\n ],\n [\n \"Pacific/Tarawa\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Tongatapu\",\n {\n \"s\": {\n \"f\": \"+1300\",\n \"n\": \"+13\"\n }\n }\n ],\n [\n \"Pacific/Wake\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ],\n [\n \"Pacific/Wallis\",\n {\n \"s\": {\n \"f\": \"+1200\",\n \"n\": \"+12\"\n }\n }\n ]\n]);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getZoneString = exports.getZoneLines = void 0;\nconst zones_1 = require(\"./zones\"); // This module must be generated with `yarn run build-zones`.\nfunction renderZoneSub(data) {\n const { n, f, t, r, s } = data;\n return [\n `TZNAME:${n}`,\n `TZOFFSETFROM:${f}`,\n `TZOFFSETTO:${t || f}`,\n `DTSTART:${s || zones_1.defaultStart}`,\n ...(r ? [`RRULE:FREQ=${r.f || 'YEARLY'};BYMONTH=${r.m};BYDAY=${r.d}`] : []),\n ];\n}\n/**\n * Tries to resolve a given time zone to iCalendar time zone component\n * (`VTIMEZONE`) as string array (usually for further processing).\n * @param zoneName Time zone name (e.g. `America/Los_Angeles`)\n * @param includeWrapper Set to `false` to avoid including lines for\n * `BEGIN:VTIMEZONE` and `END:VTIMEZONE`.\n * @returns Lines of the iCalendar time zone component (`VTIMEZONE`), each line\n * individually as an array of strings.\n */\nfunction getZoneLines(zoneName, includeWrapper = true) {\n const zoneData = zones_1.zonesMap.get(zoneName);\n if (zoneData) {\n const { s, d } = zoneData;\n const lines = [\n ...(includeWrapper ? ['BEGIN:VTIMEZONE'] : []),\n `TZID:${zoneName}`,\n // `X-LIC-LOCATION:${zoneName}`, // Who uses this?\n 'BEGIN:STANDARD',\n ...renderZoneSub(s),\n 'END:STANDARD',\n ...(d ? [\n 'BEGIN:DAYLIGHT',\n ...renderZoneSub(d),\n 'END:DAYLIGHT',\n ] : []),\n ...(includeWrapper ? ['END:VTIMEZONE'] : []),\n ];\n return lines;\n }\n}\nexports.getZoneLines = getZoneLines;\n/**\n * Tries to resolve a given time zone to iCalendar time zone component\n * (`VTIMEZONE`) as string.\n * @param zoneName Time zone name (e.g. `America/Los_Angeles`)\n * @param includeWrapper Set to `false` to avoid including lines for\n * `BEGIN:VTIMEZONE` and `END:VTIMEZONE`.\n * @returns The iCalendar time zone component (`VTIMEZONE`) as string\n * with `\\r\\n` line breaks.\n */\nfunction getZoneString(zoneName, includeWrapper = true) {\n const lines = getZoneLines(zoneName, includeWrapper);\n return lines === null || lines === void 0 ? void 0 : lines.join('\\r\\n');\n}\nexports.getZoneString = getZoneString;\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n/**\n * Represents the BINARY value type, which contains extra methods for encoding and decoding.\n *\n * @memberof ICAL\n */\nclass Binary {\n /**\n * Creates a binary value from the given string.\n *\n * @param {String} aString The binary value string\n * @return {Binary} The binary value instance\n */\n static fromString(aString) {\n return new Binary(aString);\n }\n\n /**\n * Creates a new ICAL.Binary instance\n *\n * @param {String} aValue The binary data for this value\n */\n constructor(aValue) {\n this.value = aValue;\n }\n\n /**\n * The type name, to be used in the jCal object.\n * @default \"binary\"\n * @constant\n */\n icaltype = \"binary\";\n\n /**\n * Base64 decode the current value\n *\n * @return {String} The base64-decoded value\n */\n decodeValue() {\n return this._b64_decode(this.value);\n }\n\n /**\n * Encodes the passed parameter with base64 and sets the internal\n * value to the result.\n *\n * @param {String} aValue The raw binary value to encode\n */\n setEncodedValue(aValue) {\n this.value = this._b64_encode(aValue);\n }\n\n _b64_encode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Bayron Guevara\n // + improved by: Thunder.m\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + improved by: Rafał Kukawski (http://kukawski.pl)\n // * example 1: base64_encode('Kevin van Zonneveld');\n // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n //if (typeof this.window['atob'] == 'function') {\n // return atob(data);\n //}\n let b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\" +\n \"abcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n enc = \"\",\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1 << 16 | o2 << 8 | o3;\n\n h1 = bits >> 18 & 0x3f;\n h2 = bits >> 12 & 0x3f;\n h3 = bits >> 6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n let r = data.length % 3;\n\n return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);\n\n }\n\n _b64_decode(data) {\n // http://kevin.vanzonneveld.net\n // + original by: Tyler Akins (http://rumkin.com)\n // + improved by: Thunder.m\n // + input by: Aman Gupta\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfixed by: Onno Marsman\n // + bugfixed by: Pellentesque Malesuada\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + input by: Brett Zamir (http://brett-zamir.me)\n // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');\n // * returns 1: 'Kevin van Zonneveld'\n // mozilla has this native\n // - but breaks in 2.0.0.12!\n //if (typeof this.window['btoa'] == 'function') {\n // return btoa(data);\n //}\n let b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\" +\n \"abcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let o1, o2, o3, h1, h2, h3, h4, bits, i = 0,\n ac = 0,\n dec = \"\",\n tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n data += '';\n\n do { // unpack four hexets into three octets using index points in b64\n h1 = b64.indexOf(data.charAt(i++));\n h2 = b64.indexOf(data.charAt(i++));\n h3 = b64.indexOf(data.charAt(i++));\n h4 = b64.indexOf(data.charAt(i++));\n\n bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n\n o1 = bits >> 16 & 0xff;\n o2 = bits >> 8 & 0xff;\n o3 = bits & 0xff;\n\n if (h3 == 64) {\n tmp_arr[ac++] = String.fromCharCode(o1);\n } else if (h4 == 64) {\n tmp_arr[ac++] = String.fromCharCode(o1, o2);\n } else {\n tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);\n }\n } while (i < data.length);\n\n dec = tmp_arr.join('');\n\n return dec;\n }\n\n /**\n * The string representation of this value\n * @return {String}\n */\n toString() {\n return this.value;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nconst DURATION_LETTERS = /([PDWHMTS]{1,1})/;\nconst DATA_PROPS_TO_COPY = [\"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"isNegative\"];\n\n/**\n * This class represents the \"duration\" value type, with various calculation\n * and manipulation methods.\n *\n * @memberof ICAL\n */\nclass Duration {\n /**\n * Returns a new ICAL.Duration instance from the passed seconds value.\n *\n * @param {Number} aSeconds The seconds to create the instance from\n * @return {Duration} The newly created duration instance\n */\n static fromSeconds(aSeconds) {\n return (new Duration()).fromSeconds(aSeconds);\n }\n\n /**\n * Checks if the given string is an iCalendar duration value.\n *\n * @param {String} value The raw ical value\n * @return {Boolean} True, if the given value is of the\n * duration ical type\n */\n static isValueString(string) {\n return (string[0] === 'P' || string[1] === 'P');\n }\n\n /**\n * Creates a new {@link ICAL.Duration} instance from the passed string.\n *\n * @param {String} aStr The string to parse\n * @return {Duration} The created duration instance\n */\n static fromString(aStr) {\n let pos = 0;\n let dict = Object.create(null);\n let chunks = 0;\n\n while ((pos = aStr.search(DURATION_LETTERS)) !== -1) {\n let type = aStr[pos];\n let numeric = aStr.slice(0, Math.max(0, pos));\n aStr = aStr.slice(pos + 1);\n\n chunks += parseDurationChunk(type, numeric, dict);\n }\n\n if (chunks < 2) {\n // There must be at least a chunk with \"P\" and some unit chunk\n throw new Error(\n 'invalid duration value: Not enough duration components in \"' + aStr + '\"'\n );\n }\n\n return new Duration(dict);\n }\n\n /**\n * Creates a new ICAL.Duration instance from the given data object.\n *\n * @param {Object} aData An object with members of the duration\n * @param {Number=} aData.weeks Duration in weeks\n * @param {Number=} aData.days Duration in days\n * @param {Number=} aData.hours Duration in hours\n * @param {Number=} aData.minutes Duration in minutes\n * @param {Number=} aData.seconds Duration in seconds\n * @param {Boolean=} aData.isNegative If true, the duration is negative\n * @return {Duration} The createad duration instance\n */\n static fromData(aData) {\n return new Duration(aData);\n }\n\n /**\n * Creates a new ICAL.Duration instance.\n *\n * @param {Object} data An object with members of the duration\n * @param {Number=} data.weeks Duration in weeks\n * @param {Number=} data.days Duration in days\n * @param {Number=} data.hours Duration in hours\n * @param {Number=} data.minutes Duration in minutes\n * @param {Number=} data.seconds Duration in seconds\n * @param {Boolean=} data.isNegative If true, the duration is negative\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.fromData(data);\n }\n\n /**\n * The weeks in this duration\n * @type {Number}\n * @default 0\n */\n weeks = 0;\n\n /**\n * The days in this duration\n * @type {Number}\n * @default 0\n */\n days = 0;\n\n /**\n * The days in this duration\n * @type {Number}\n * @default 0\n */\n hours = 0;\n\n /**\n * The minutes in this duration\n * @type {Number}\n * @default 0\n */\n minutes = 0;\n\n /**\n * The seconds in this duration\n * @type {Number}\n * @default 0\n */\n seconds = 0;\n\n /**\n * The seconds in this duration\n * @type {Boolean}\n * @default false\n */\n isNegative = false;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalduration\"\n */\n icalclass = \"icalduration\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"duration\"\n */\n icaltype = \"duration\";\n\n /**\n * Returns a clone of the duration object.\n *\n * @return {Duration} The cloned object\n */\n clone() {\n return Duration.fromData(this);\n }\n\n /**\n * The duration value expressed as a number of seconds.\n *\n * @return {Number} The duration value in seconds\n */\n toSeconds() {\n let seconds = this.seconds + 60 * this.minutes + 3600 * this.hours +\n 86400 * this.days + 7 * 86400 * this.weeks;\n return (this.isNegative ? -seconds : seconds);\n }\n\n /**\n * Reads the passed seconds value into this duration object. Afterwards,\n * members like {@link ICAL.Duration#days days} and {@link ICAL.Duration#weeks weeks} will be set up\n * accordingly.\n *\n * @param {Number} aSeconds The duration value in seconds\n * @return {Duration} Returns this instance\n */\n fromSeconds(aSeconds) {\n let secs = Math.abs(aSeconds);\n\n this.isNegative = (aSeconds < 0);\n this.days = trunc(secs / 86400);\n\n // If we have a flat number of weeks, use them.\n if (this.days % 7 == 0) {\n this.weeks = this.days / 7;\n this.days = 0;\n } else {\n this.weeks = 0;\n }\n\n secs -= (this.days + 7 * this.weeks) * 86400;\n\n this.hours = trunc(secs / 3600);\n secs -= this.hours * 3600;\n\n this.minutes = trunc(secs / 60);\n secs -= this.minutes * 60;\n\n this.seconds = secs;\n return this;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} aData An object with members of the duration\n * @param {Number=} aData.weeks Duration in weeks\n * @param {Number=} aData.days Duration in days\n * @param {Number=} aData.hours Duration in hours\n * @param {Number=} aData.minutes Duration in minutes\n * @param {Number=} aData.seconds Duration in seconds\n * @param {Boolean=} aData.isNegative If true, the duration is negative\n */\n fromData(aData) {\n for (let prop of DATA_PROPS_TO_COPY) {\n if (aData && prop in aData) {\n this[prop] = aData[prop];\n } else {\n this[prop] = 0;\n }\n }\n }\n\n /**\n * Resets the duration instance to the default values, i.e. PT0S\n */\n reset() {\n this.isNegative = false;\n this.weeks = 0;\n this.days = 0;\n this.hours = 0;\n this.minutes = 0;\n this.seconds = 0;\n }\n\n /**\n * Compares the duration instance with another one.\n *\n * @param {Duration} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(aOther) {\n let thisSeconds = this.toSeconds();\n let otherSeconds = aOther.toSeconds();\n return (thisSeconds > otherSeconds) - (thisSeconds < otherSeconds);\n }\n\n /**\n * Normalizes the duration instance. For example, a duration with a value\n * of 61 seconds will be normalized to 1 minute and 1 second.\n */\n normalize() {\n this.fromSeconds(this.toSeconds());\n }\n\n /**\n * The string representation of this duration.\n * @return {String}\n */\n toString() {\n if (this.toSeconds() == 0) {\n return \"PT0S\";\n } else {\n let str = \"\";\n if (this.isNegative) str += \"-\";\n str += \"P\";\n let hasWeeks = false;\n if (this.weeks) {\n if (this.days || this.hours || this.minutes || this.seconds) {\n str += (this.weeks * 7 + this.days) + \"D\";\n } else {\n str += (this.weeks + \"W\");\n hasWeeks = true;\n }\n } else if (this.days) {\n str += (this.days + \"D\");\n }\n\n if (!hasWeeks) {\n if (this.hours || this.minutes || this.seconds) {\n str += \"T\";\n if (this.hours) {\n str += this.hours + \"H\";\n }\n\n if (this.minutes) {\n str += this.minutes + \"M\";\n }\n\n if (this.seconds) {\n str += this.seconds + \"S\";\n }\n }\n }\n\n return str;\n }\n }\n\n /**\n * The iCalendar string representation of this duration.\n * @return {String}\n */\n toICALString() {\n return this.toString();\n }\n}\n\n/**\n * Internal helper function to handle a chunk of a duration.\n *\n * @private\n * @param {String} letter type of duration chunk\n * @param {String} number numeric value or -/+\n * @param {Object} dict target to assign values to\n */\nfunction parseDurationChunk(letter, number, object) {\n let type;\n switch (letter) {\n case 'P':\n if (number && number === '-') {\n object.isNegative = true;\n } else {\n object.isNegative = false;\n }\n // period\n break;\n case 'D':\n type = 'days';\n break;\n case 'W':\n type = 'weeks';\n break;\n case 'H':\n type = 'hours';\n break;\n case 'M':\n type = 'minutes';\n break;\n case 'S':\n type = 'seconds';\n break;\n default:\n // Not a valid chunk\n return 0;\n }\n\n if (type) {\n if (!number && number !== 0) {\n throw new Error(\n 'invalid duration value: Missing number before \"' + letter + '\"'\n );\n }\n let num = parseInt(number, 10);\n if (isStrictlyNaN(num)) {\n throw new Error(\n 'invalid duration value: Invalid number \"' + number + '\" before \"' + letter + '\"'\n );\n }\n object[type] = num;\n }\n\n return 1;\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").jCalComponent} jCalComponent\n * Imports the 'occurrenceDetails' type from the \"types.js\" module\n */\n\n/**\n * This class represents the \"period\" value type, with various calculation and manipulation methods.\n *\n * @memberof ICAL\n */\nclass Period {\n /**\n * Creates a new {@link ICAL.Period} instance from the passed string.\n *\n * @param {String} str The string to parse\n * @param {Property} prop The property this period will be on\n * @return {Period} The created period instance\n */\n static fromString(str, prop) {\n let parts = str.split('/');\n\n if (parts.length !== 2) {\n throw new Error(\n 'Invalid string value: \"' + str + '\" must contain a \"/\" char.'\n );\n }\n\n let options = {\n start: Time.fromDateTimeString(parts[0], prop)\n };\n\n let end = parts[1];\n\n if (Duration.isValueString(end)) {\n options.duration = Duration.fromString(end);\n } else {\n options.end = Time.fromDateTimeString(end, prop);\n }\n\n return new Period(options);\n }\n\n /**\n * Creates a new {@link ICAL.Period} instance from the given data object.\n * The passed data object cannot contain both and end date and a duration.\n *\n * @param {Object} aData An object with members of the period\n * @param {Time=} aData.start The start of the period\n * @param {Time=} aData.end The end of the period\n * @param {Duration=} aData.duration The duration of the period\n * @return {Period} The period instance\n */\n static fromData(aData) {\n return new Period(aData);\n }\n\n /**\n * Returns a new period instance from the given jCal data array. The first\n * member is always the start date string, the second member is either a\n * duration or end date string.\n *\n * @param {jCalComponent} aData The jCal data array\n * @param {Property} aProp The property this jCal data is on\n * @param {Boolean} aLenient If true, data value can be both date and date-time\n * @return {Period} The period instance\n */\n static fromJSON(aData, aProp, aLenient) {\n function fromDateOrDateTimeString(aValue, dateProp) {\n if (aLenient) {\n return Time.fromString(aValue, dateProp);\n } else {\n return Time.fromDateTimeString(aValue, dateProp);\n }\n }\n\n if (Duration.isValueString(aData[1])) {\n return Period.fromData({\n start: fromDateOrDateTimeString(aData[0], aProp),\n duration: Duration.fromString(aData[1])\n });\n } else {\n return Period.fromData({\n start: fromDateOrDateTimeString(aData[0], aProp),\n end: fromDateOrDateTimeString(aData[1], aProp)\n });\n }\n }\n\n /**\n * Creates a new ICAL.Period instance. The passed data object cannot contain both and end date and\n * a duration.\n *\n * @param {Object} aData An object with members of the period\n * @param {Time=} aData.start The start of the period\n * @param {Time=} aData.end The end of the period\n * @param {Duration=} aData.duration The duration of the period\n */\n constructor(aData) {\n this.wrappedJSObject = this;\n\n if (aData && 'start' in aData) {\n if (aData.start && !(aData.start instanceof Time)) {\n throw new TypeError('.start must be an instance of ICAL.Time');\n }\n this.start = aData.start;\n }\n\n if (aData && aData.end && aData.duration) {\n throw new Error('cannot accept both end and duration');\n }\n\n if (aData && 'end' in aData) {\n if (aData.end && !(aData.end instanceof Time)) {\n throw new TypeError('.end must be an instance of ICAL.Time');\n }\n this.end = aData.end;\n }\n\n if (aData && 'duration' in aData) {\n if (aData.duration && !(aData.duration instanceof Duration)) {\n throw new TypeError('.duration must be an instance of ICAL.Duration');\n }\n this.duration = aData.duration;\n }\n }\n\n\n /**\n * The start of the period\n * @type {Time}\n */\n start = null;\n\n /**\n * The end of the period\n * @type {Time}\n */\n end = null;\n\n /**\n * The duration of the period\n * @type {Duration}\n */\n duration = null;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalperiod\"\n */\n icalclass = \"icalperiod\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"period\"\n */\n icaltype = \"period\";\n\n /**\n * Returns a clone of the duration object.\n *\n * @return {Period} The cloned object\n */\n clone() {\n return Period.fromData({\n start: this.start ? this.start.clone() : null,\n end: this.end ? this.end.clone() : null,\n duration: this.duration ? this.duration.clone() : null\n });\n }\n\n /**\n * Calculates the duration of the period, either directly or by subtracting\n * start from end date.\n *\n * @return {Duration} The calculated duration\n */\n getDuration() {\n if (this.duration) {\n return this.duration;\n } else {\n return this.end.subtractDate(this.start);\n }\n }\n\n /**\n * Calculates the end date of the period, either directly or by adding\n * duration to start date.\n *\n * @return {Time} The calculated end date\n */\n getEnd() {\n if (this.end) {\n return this.end;\n } else {\n let end = this.start.clone();\n end.addDuration(this.duration);\n return end;\n }\n }\n\n /**\n * Compare this period with a date or other period. To maintain the logic where a.compare(b)\n * returns 1 when a > b, this function will return 1 when the period is after the date, 0 when the\n * date is within the period, and -1 when the period is before the date. When comparing two\n * periods, as soon as they overlap in any way this will return 0.\n *\n * @param {Time|Period} dt The date or other period to compare with\n */\n compare(dt) {\n if (dt.compare(this.start) < 0) {\n return 1;\n } else if (dt.compare(this.getEnd()) > 0) {\n return -1;\n } else {\n return 0;\n }\n }\n\n /**\n * The string representation of this period.\n * @return {String}\n */\n toString() {\n return this.start + \"/\" + (this.end || this.duration);\n }\n\n /**\n * The jCal representation of this period type.\n * @return {Object}\n */\n toJSON() {\n return [this.start.toString(), (this.end || this.duration).toString()];\n }\n\n /**\n * The iCalendar string representation of this period.\n * @return {String}\n */\n toICALString() {\n return this.start.toICALString() + \"/\" +\n (this.end || this.duration).toICALString();\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n *\n * @ignore\n * @typedef {import(\"./types.js\").timeInit} timeInit\n * Imports the 'timeInit' type from the \"types.js\" module\n */\n\n/**\n * @classdesc\n * iCalendar Time representation (similar to JS Date object). Fully\n * independent of system (OS) timezone / time. Unlike JS Date, the month\n * January is 1, not zero.\n *\n * @example\n * var time = new ICAL.Time({\n * year: 2012,\n * month: 10,\n * day: 11\n * minute: 0,\n * second: 0,\n * isDate: false\n * });\n *\n *\n * @memberof ICAL\n*/\nclass Time {\n static _dowCache = {};\n static _wnCache = {};\n\n /**\n * Returns the days in the given month\n *\n * @param {Number} month The month to check\n * @param {Number} year The year to check\n * @return {Number} The number of days in the month\n */\n static daysInMonth(month, year) {\n let _daysInMonth = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n let days = 30;\n\n if (month < 1 || month > 12) return days;\n\n days = _daysInMonth[month];\n\n if (month == 2) {\n days += Time.isLeapYear(year);\n }\n\n return days;\n }\n\n /**\n * Checks if the year is a leap year\n *\n * @param {Number} year The year to check\n * @return {Boolean} True, if the year is a leap year\n */\n static isLeapYear(year) {\n if (year <= 1752) {\n return ((year % 4) == 0);\n } else {\n return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));\n }\n }\n\n /**\n * Create a new ICAL.Time from the day of year and year. The date is returned\n * in floating timezone.\n *\n * @param {Number} aDayOfYear The day of year\n * @param {Number} aYear The year to create the instance in\n * @return {Time} The created instance with the calculated date\n */\n static fromDayOfYear(aDayOfYear, aYear) {\n let year = aYear;\n let doy = aDayOfYear;\n let tt = new Time();\n tt.auto_normalize = false;\n let is_leap = (Time.isLeapYear(year) ? 1 : 0);\n\n if (doy < 1) {\n year--;\n is_leap = (Time.isLeapYear(year) ? 1 : 0);\n doy += Time.daysInYearPassedMonth[is_leap][12];\n return Time.fromDayOfYear(doy, year);\n } else if (doy > Time.daysInYearPassedMonth[is_leap][12]) {\n is_leap = (Time.isLeapYear(year) ? 1 : 0);\n doy -= Time.daysInYearPassedMonth[is_leap][12];\n year++;\n return Time.fromDayOfYear(doy, year);\n }\n\n tt.year = year;\n tt.isDate = true;\n\n for (let month = 11; month >= 0; month--) {\n if (doy > Time.daysInYearPassedMonth[is_leap][month]) {\n tt.month = month + 1;\n tt.day = doy - Time.daysInYearPassedMonth[is_leap][month];\n break;\n }\n }\n\n tt.auto_normalize = true;\n return tt;\n }\n\n /**\n * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.\n *\n * @deprecated Use {@link ICAL.Time.fromDateString} instead\n * @param {String} str The string to create from\n * @return {Time} The date/time instance\n */\n static fromStringv2(str) {\n return new Time({\n year: parseInt(str.slice(0, 4), 10),\n month: parseInt(str.slice(5, 7), 10),\n day: parseInt(str.slice(8, 10), 10),\n isDate: true\n });\n }\n\n /**\n * Returns a new ICAL.Time instance from a date string, e.g 2015-01-02.\n *\n * @param {String} aValue The string to create from\n * @return {Time} The date/time instance\n */\n static fromDateString(aValue) {\n // Dates should have no timezone.\n // Google likes to sometimes specify Z on dates\n // we specifically ignore that to avoid issues.\n\n // YYYY-MM-DD\n // 2012-10-10\n return new Time({\n year: strictParseInt(aValue.slice(0, 4)),\n month: strictParseInt(aValue.slice(5, 7)),\n day: strictParseInt(aValue.slice(8, 10)),\n isDate: true\n });\n }\n\n /**\n * Returns a new ICAL.Time instance from a date-time string, e.g\n * 2015-01-02T03:04:05. If a property is specified, the timezone is set up\n * from the property's TZID parameter.\n *\n * @param {String} aValue The string to create from\n * @param {Property=} prop The property the date belongs to\n * @return {Time} The date/time instance\n */\n static fromDateTimeString(aValue, prop) {\n if (aValue.length < 19) {\n throw new Error(\n 'invalid date-time value: \"' + aValue + '\"'\n );\n }\n\n let zone;\n let zoneId;\n\n if (aValue.slice(-1) === 'Z') {\n zone = Timezone.utcTimezone;\n } else if (prop) {\n zoneId = prop.getParameter('tzid');\n\n if (prop.parent) {\n if (prop.parent.name === 'standard' || prop.parent.name === 'daylight') {\n // Per RFC 5545 3.8.2.4 and 3.8.2.2, start/end date-times within\n // these components MUST be specified in local time.\n zone = Timezone.localTimezone;\n } else if (zoneId) {\n // If the desired time zone is defined within the component tree,\n // fetch its definition and prefer that.\n zone = prop.parent.getTimeZoneByID(zoneId);\n }\n }\n }\n\n const timeData = {\n year: strictParseInt(aValue.slice(0, 4)),\n month: strictParseInt(aValue.slice(5, 7)),\n day: strictParseInt(aValue.slice(8, 10)),\n hour: strictParseInt(aValue.slice(11, 13)),\n minute: strictParseInt(aValue.slice(14, 16)),\n second: strictParseInt(aValue.slice(17, 19)),\n };\n\n // Although RFC 5545 requires that all TZIDs used within a file have a\n // corresponding time zone definition, we may not be parsing the full file\n // or we may be dealing with a non-compliant file; in either case, we can\n // check our own time zone service for the TZID in a last-ditch effort.\n if (zoneId && !zone) {\n timeData.timezone = zoneId;\n }\n\n // 2012-10-10T10:10:10(Z)?\n return new Time(timeData, zone);\n }\n\n /**\n * Returns a new ICAL.Time instance from a date or date-time string,\n *\n * @param {String} aValue The string to create from\n * @param {Property=} prop The property the date belongs to\n * @return {Time} The date/time instance\n */\n static fromString(aValue, aProperty) {\n if (aValue.length > 10) {\n return Time.fromDateTimeString(aValue, aProperty);\n } else {\n return Time.fromDateString(aValue);\n }\n }\n\n /**\n * Creates a new ICAL.Time instance from the given Javascript Date.\n *\n * @param {?Date} aDate The Javascript Date to read, or null to reset\n * @param {Boolean} [useUTC=false] If true, the UTC values of the date will be used\n */\n static fromJSDate(aDate, useUTC) {\n let tt = new Time();\n return tt.fromJSDate(aDate, useUTC);\n }\n\n /**\n * Creates a new ICAL.Time instance from the the passed data object.\n *\n * @param {timeInit} aData Time initialization\n * @param {Timezone=} aZone Timezone this position occurs in\n */\n static fromData = function fromData(aData, aZone) {\n let t = new Time();\n return t.fromData(aData, aZone);\n };\n\n /**\n * Creates a new ICAL.Time instance from the current moment.\n * The instance is “floating” - has no timezone relation.\n * To create an instance considering the time zone, call\n * ICAL.Time.fromJSDate(new Date(), true)\n * @return {Time}\n */\n static now() {\n return Time.fromJSDate(new Date(), false);\n }\n\n /**\n * Returns the date on which ISO week number 1 starts.\n *\n * @see Time#weekNumber\n * @param {Number} aYear The year to search in\n * @param {weekDay=} aWeekStart The week start weekday, used for calculation.\n * @return {Time} The date on which week number 1 starts\n */\n static weekOneStarts(aYear, aWeekStart) {\n let t = Time.fromData({\n year: aYear,\n month: 1,\n day: 1,\n isDate: true\n });\n\n let dow = t.dayOfWeek();\n let wkst = aWeekStart || Time.DEFAULT_WEEK_START;\n if (dow > Time.THURSDAY) {\n t.day += 7;\n }\n if (wkst > Time.THURSDAY) {\n t.day -= 7;\n }\n\n t.day -= dow - wkst;\n\n return t;\n }\n\n /**\n * Get the dominical letter for the given year. Letters range from A - G for\n * common years, and AG to GF for leap years.\n *\n * @param {Number} yr The year to retrieve the letter for\n * @return {String} The dominical letter.\n */\n static getDominicalLetter(yr) {\n let LTRS = \"GFEDCBA\";\n let dom = (yr + (yr / 4 | 0) + (yr / 400 | 0) - (yr / 100 | 0) - 1) % 7;\n let isLeap = Time.isLeapYear(yr);\n if (isLeap) {\n return LTRS[(dom + 6) % 7] + LTRS[dom];\n } else {\n return LTRS[dom];\n }\n }\n\n static #epochTime = null;\n /**\n * January 1st, 1970 as an ICAL.Time.\n * @type {Time}\n * @constant\n * @instance\n */\n static get epochTime() {\n if (!this.#epochTime) {\n this.#epochTime = Time.fromData({\n year: 1970,\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n isDate: false,\n timezone: \"Z\"\n });\n }\n return this.#epochTime;\n }\n\n static _cmp_attr(a, b, attr) {\n if (a[attr] > b[attr]) return 1;\n if (a[attr] < b[attr]) return -1;\n return 0;\n }\n\n /**\n * The days that have passed in the year after a given month. The array has\n * two members, one being an array of passed days for non-leap years, the\n * other analog for leap years.\n * @example\n * var isLeapYear = ICAL.Time.isLeapYear(year);\n * var passedDays = ICAL.Time.daysInYearPassedMonth[isLeapYear][month];\n * @type {Array.>}\n */\n static daysInYearPassedMonth = [\n [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365],\n [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]\n ];\n\n static SUNDAY = 1;\n static MONDAY = 2;\n static TUESDAY = 3;\n static WEDNESDAY = 4;\n static THURSDAY = 5;\n static FRIDAY = 6;\n static SATURDAY = 7;\n\n /**\n * The default weekday for the WKST part.\n * @constant\n * @default ICAL.Time.MONDAY\n */\n static DEFAULT_WEEK_START = 2; // MONDAY\n\n /**\n * Creates a new ICAL.Time instance.\n *\n * @param {timeInit} data Time initialization\n * @param {Timezone} zone timezone this position occurs in\n */\n constructor(data, zone) {\n this.wrappedJSObject = this;\n\n /**\n * @type {timeInit}\n * @private\n */\n this._time = Object.create(null);\n\n /* time defaults */\n this._time.year = 0;\n this._time.month = 1;\n this._time.day = 1;\n this._time.hour = 0;\n this._time.minute = 0;\n this._time.second = 0;\n this._time.isDate = false;\n\n this.fromData(data, zone);\n }\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icaltime\"\n */\n icalclass = \"icaltime\";\n _cachedUnixTime = null;\n\n /**\n * The type name, to be used in the jCal object. This value may change and\n * is strictly defined by the {@link ICAL.Time#isDate isDate} member.\n * @type {String}\n * @default \"date-time\"\n */\n get icaltype() {\n return this.isDate ? 'date' : 'date-time';\n }\n\n /**\n * The timezone for this time.\n * @type {Timezone}\n */\n zone = null;\n\n /**\n * Internal uses to indicate that a change has been made and the next read\n * operation must attempt to normalize the value (for example changing the\n * day to 33).\n *\n * @type {Boolean}\n * @private\n */\n _pendingNormalization = false;\n\n /**\n * The year of this date.\n * @type {Number}\n */\n get year() {\n return this._getTimeAttr('year');\n }\n\n set year(val) {\n this._setTimeAttr('year', val);\n }\n\n /**\n * The month of this date.\n * @type {Number}\n */\n get month() {\n return this._getTimeAttr('month');\n }\n\n set month(val) {\n this._setTimeAttr('month', val);\n }\n\n /**\n * The day of this date.\n * @type {Number}\n */\n get day() {\n return this._getTimeAttr('day');\n }\n\n set day(val) {\n this._setTimeAttr('day', val);\n }\n\n /**\n * The hour of this date-time.\n * @type {Number}\n */\n get hour() {\n return this._getTimeAttr('hour');\n }\n\n set hour(val) {\n this._setTimeAttr('hour', val);\n }\n\n /**\n * The minute of this date-time.\n * @type {Number}\n */\n get minute() {\n return this._getTimeAttr('minute');\n }\n\n set minute(val) {\n this._setTimeAttr('minute', val);\n }\n\n /**\n * The second of this date-time.\n * @type {Number}\n */\n get second() {\n return this._getTimeAttr('second');\n }\n\n set second(val) {\n this._setTimeAttr('second', val);\n }\n\n /**\n * If true, the instance represents a date (as opposed to a date-time)\n * @type {Boolean}\n */\n get isDate() {\n return this._getTimeAttr('isDate');\n }\n\n set isDate(val) {\n this._setTimeAttr('isDate', val);\n }\n\n /**\n * @private\n * @param {String} attr Attribute to get (one of: year, month,\n * day, hour, minute, second, isDate)\n * @return {Number|Boolean} Current value for the attribute\n */\n _getTimeAttr(attr) {\n if (this._pendingNormalization) {\n this._normalize();\n this._pendingNormalization = false;\n }\n\n return this._time[attr];\n }\n\n /**\n * @private\n * @param {String} attr Attribute to set (one of: year, month,\n * day, hour, minute, second, isDate)\n * @param {Number|Boolean} val New value for the attribute\n */\n _setTimeAttr(attr, val) {\n // Check if isDate will be set and if was not set to normalize date.\n // This avoids losing days when seconds, minutes and hours are zeroed\n // what normalize will do when time is a date.\n if (attr === \"isDate\" && val && !this._time.isDate) {\n this.adjust(0, 0, 0, 0);\n }\n this._cachedUnixTime = null;\n this._pendingNormalization = true;\n this._time[attr] = val;\n }\n\n /**\n * Returns a clone of the time object.\n *\n * @return {Time} The cloned object\n */\n clone() {\n return new Time(this._time, this.zone);\n }\n\n /**\n * Reset the time instance to epoch time\n */\n reset() {\n this.fromData(Time.epochTime);\n this.zone = Timezone.utcTimezone;\n }\n\n /**\n * Reset the time instance to the given date/time values.\n *\n * @param {Number} year The year to set\n * @param {Number} month The month to set\n * @param {Number} day The day to set\n * @param {Number} hour The hour to set\n * @param {Number} minute The minute to set\n * @param {Number} second The second to set\n * @param {Timezone} timezone The timezone to set\n */\n resetTo(year, month, day, hour, minute, second, timezone) {\n this.fromData({\n year: year,\n month: month,\n day: day,\n hour: hour,\n minute: minute,\n second: second,\n zone: timezone\n });\n }\n\n /**\n * Set up the current instance from the Javascript date value.\n *\n * @param {?Date} aDate The Javascript Date to read, or null to reset\n * @param {Boolean} [useUTC=false] If true, the UTC values of the date will be used\n */\n fromJSDate(aDate, useUTC) {\n if (!aDate) {\n this.reset();\n } else {\n if (useUTC) {\n this.zone = Timezone.utcTimezone;\n this.year = aDate.getUTCFullYear();\n this.month = aDate.getUTCMonth() + 1;\n this.day = aDate.getUTCDate();\n this.hour = aDate.getUTCHours();\n this.minute = aDate.getUTCMinutes();\n this.second = aDate.getUTCSeconds();\n } else {\n this.zone = Timezone.localTimezone;\n this.year = aDate.getFullYear();\n this.month = aDate.getMonth() + 1;\n this.day = aDate.getDate();\n this.hour = aDate.getHours();\n this.minute = aDate.getMinutes();\n this.second = aDate.getSeconds();\n }\n }\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {timeInit} aData Time initialization\n * @param {Timezone=} aZone Timezone this position occurs in\n */\n fromData(aData, aZone) {\n if (aData) {\n for (let [key, value] of Object.entries(aData)) {\n // ical type cannot be set\n if (key === 'icaltype') continue;\n this[key] = value;\n }\n }\n\n if (aZone) {\n this.zone = aZone;\n }\n\n if (aData && !(\"isDate\" in aData)) {\n this.isDate = !(\"hour\" in aData);\n } else if (aData && (\"isDate\" in aData)) {\n this.isDate = aData.isDate;\n }\n\n if (aData && \"timezone\" in aData) {\n let zone = TimezoneService.get(\n aData.timezone\n );\n\n this.zone = zone || Timezone.localTimezone;\n }\n\n if (aData && \"zone\" in aData) {\n this.zone = aData.zone;\n }\n\n if (!this.zone) {\n this.zone = Timezone.localTimezone;\n }\n\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Calculate the day of week.\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {weekDay}\n */\n dayOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let dowCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + firstDow;\n if (dowCacheKey in Time._dowCache) {\n return Time._dowCache[dowCacheKey];\n }\n\n // Using Zeller's algorithm\n let q = this.day;\n let m = this.month + (this.month < 3 ? 12 : 0);\n let Y = this.year - (this.month < 3 ? 1 : 0);\n\n let h = (q + Y + trunc(((m + 1) * 26) / 10) + trunc(Y / 4));\n { // eslint-disable-line no-constant-condition\n h += trunc(Y / 100) * 6 + trunc(Y / 400);\n }\n\n // Normalize to 1 = wkst\n h = ((h + 7 - firstDow) % 7) + 1;\n Time._dowCache[dowCacheKey] = h;\n return h;\n }\n\n /**\n * Calculate the day of year.\n * @return {Number}\n */\n dayOfYear() {\n let is_leap = (Time.isLeapYear(this.year) ? 1 : 0);\n let diypm = Time.daysInYearPassedMonth;\n return diypm[is_leap][this.month - 1] + this.day;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * week. The resulting ICAL.Time instance is of icaltype date, even if this\n * is a date-time.\n *\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Time} The start of the week (cloned)\n */\n startOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let result = this.clone();\n result.day -= ((this.dayOfWeek() + 7 - firstDow) % 7);\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the week.\n * The resulting ICAL.Time instance is of icaltype date, even if this is a\n * date-time.\n *\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Time} The end of the week (cloned)\n */\n endOfWeek(aWeekStart) {\n let firstDow = aWeekStart || Time.SUNDAY;\n let result = this.clone();\n result.day += (7 - this.dayOfWeek() + firstDow - Time.SUNDAY) % 7;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * month. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The start of the month (cloned)\n */\n startOfMonth() {\n let result = this.clone();\n result.day = 1;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the\n * month. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The end of the month (cloned)\n */\n endOfMonth() {\n let result = this.clone();\n result.day = Time.daysInMonth(result.month, result.year);\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, rewound to the start of the\n * year. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The start of the year (cloned)\n */\n startOfYear() {\n let result = this.clone();\n result.day = 1;\n result.month = 1;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * Returns a copy of the current date/time, shifted to the end of the\n * year. The resulting ICAL.Time instance is of icaltype date, even if\n * this is a date-time.\n *\n * @return {Time} The end of the year (cloned)\n */\n endOfYear() {\n let result = this.clone();\n result.day = 31;\n result.month = 12;\n result.isDate = true;\n result.hour = 0;\n result.minute = 0;\n result.second = 0;\n return result;\n }\n\n /**\n * First calculates the start of the week, then returns the day of year for\n * this date. If the day falls into the previous year, the day is zero or negative.\n *\n * @param {weekDay=} aFirstDayOfWeek\n * The week start weekday, defaults to SUNDAY\n * @return {Number} The calculated day of year\n */\n startDoyWeek(aFirstDayOfWeek) {\n let firstDow = aFirstDayOfWeek || Time.SUNDAY;\n let delta = this.dayOfWeek() - firstDow;\n if (delta < 0) delta += 7;\n return this.dayOfYear() - delta;\n }\n\n /**\n * Get the dominical letter for the current year. Letters range from A - G\n * for common years, and AG to GF for leap years.\n *\n * @param {Number} yr The year to retrieve the letter for\n * @return {String} The dominical letter.\n */\n getDominicalLetter() {\n return Time.getDominicalLetter(this.year);\n }\n\n /**\n * Finds the nthWeekDay relative to the current month (not day). The\n * returned value is a day relative the month that this month belongs to so\n * 1 would indicate the first of the month and 40 would indicate a day in\n * the following month.\n *\n * @param {Number} aDayOfWeek Day of the week see the day name constants\n * @param {Number} aPos Nth occurrence of a given week day values\n * of 1 and 0 both indicate the first weekday of that type. aPos may\n * be either positive or negative\n *\n * @return {Number} numeric value indicating a day relative\n * to the current month of this time object\n */\n nthWeekDay(aDayOfWeek, aPos) {\n let daysInMonth = Time.daysInMonth(this.month, this.year);\n let weekday;\n let pos = aPos;\n\n let start = 0;\n\n let otherDay = this.clone();\n\n if (pos >= 0) {\n otherDay.day = 1;\n\n // because 0 means no position has been given\n // 1 and 0 indicate the same day.\n if (pos != 0) {\n // remove the extra numeric value\n pos--;\n }\n\n // set current start offset to current day.\n start = otherDay.day;\n\n // find the current day of week\n let startDow = otherDay.dayOfWeek();\n\n // calculate the difference between current\n // day of the week and desired day of the week\n let offset = aDayOfWeek - startDow;\n\n\n // if the offset goes into the past\n // week we add 7 so it goes into the next\n // week. We only want to go forward in time here.\n if (offset < 0)\n // this is really important otherwise we would\n // end up with dates from in the past.\n offset += 7;\n\n // add offset to start so start is the same\n // day of the week as the desired day of week.\n start += offset;\n\n // because we are going to add (and multiply)\n // the numeric value of the day we subtract it\n // from the start position so not to add it twice.\n start -= aDayOfWeek;\n\n // set week day\n weekday = aDayOfWeek;\n } else {\n\n // then we set it to the last day in the current month\n otherDay.day = daysInMonth;\n\n // find the ends weekday\n let endDow = otherDay.dayOfWeek();\n\n pos++;\n\n weekday = (endDow - aDayOfWeek);\n\n if (weekday < 0) {\n weekday += 7;\n }\n\n weekday = daysInMonth - weekday;\n }\n\n weekday += pos * 7;\n\n return start + weekday;\n }\n\n /**\n * Checks if current time is the nth weekday, relative to the current\n * month. Will always return false when rule resolves outside of current\n * month.\n *\n * @param {weekDay} aDayOfWeek Day of week to check\n * @param {Number} aPos Relative position\n * @return {Boolean} True, if it is the nth weekday\n */\n isNthWeekDay(aDayOfWeek, aPos) {\n let dow = this.dayOfWeek();\n\n if (aPos === 0 && dow === aDayOfWeek) {\n return true;\n }\n\n // get pos\n let day = this.nthWeekDay(aDayOfWeek, aPos);\n\n if (day === this.day) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Calculates the ISO 8601 week number. The first week of a year is the\n * week that contains the first Thursday. The year can have 53 weeks, if\n * January 1st is a Friday.\n *\n * Note there are regions where the first week of the year is the one that\n * starts on January 1st, which may offset the week number. Also, if a\n * different week start is specified, this will also affect the week\n * number.\n *\n * @see Time.weekOneStarts\n * @param {weekDay} aWeekStart The weekday the week starts with\n * @return {Number} The ISO week number\n */\n weekNumber(aWeekStart) {\n let wnCacheKey = (this.year << 12) + (this.month << 8) + (this.day << 3) + aWeekStart;\n if (wnCacheKey in Time._wnCache) {\n return Time._wnCache[wnCacheKey];\n }\n // This function courtesty of Julian Bucknall, published under the MIT license\n // http://www.boyet.com/articles/publishedarticles/calculatingtheisoweeknumb.html\n // plus some fixes to be able to use different week starts.\n let week1;\n\n let dt = this.clone();\n dt.isDate = true;\n let isoyear = this.year;\n\n if (dt.month == 12 && dt.day > 25) {\n week1 = Time.weekOneStarts(isoyear + 1, aWeekStart);\n if (dt.compare(week1) < 0) {\n week1 = Time.weekOneStarts(isoyear, aWeekStart);\n } else {\n isoyear++;\n }\n } else {\n week1 = Time.weekOneStarts(isoyear, aWeekStart);\n if (dt.compare(week1) < 0) {\n week1 = Time.weekOneStarts(--isoyear, aWeekStart);\n }\n }\n\n let daysBetween = (dt.subtractDate(week1).toSeconds() / 86400);\n let answer = trunc(daysBetween / 7) + 1;\n Time._wnCache[wnCacheKey] = answer;\n return answer;\n }\n\n /**\n * Adds the duration to the current time. The instance is modified in\n * place.\n *\n * @param {Duration} aDuration The duration to add\n */\n addDuration(aDuration) {\n let mult = (aDuration.isNegative ? -1 : 1);\n\n // because of the duration optimizations it is much\n // more efficient to grab all the values up front\n // then set them directly (which will avoid a normalization call).\n // So we don't actually normalize until we need it.\n let second = this.second;\n let minute = this.minute;\n let hour = this.hour;\n let day = this.day;\n\n second += mult * aDuration.seconds;\n minute += mult * aDuration.minutes;\n hour += mult * aDuration.hours;\n day += mult * aDuration.days;\n day += mult * 7 * aDuration.weeks;\n\n this.second = second;\n this.minute = minute;\n this.hour = hour;\n this.day = day;\n\n this._cachedUnixTime = null;\n }\n\n /**\n * Subtract the date details (_excluding_ timezone). Useful for finding\n * the relative difference between two time objects excluding their\n * timezone differences.\n *\n * @param {Time} aDate The date to subtract\n * @return {Duration} The difference as a duration\n */\n subtractDate(aDate) {\n let unixTime = this.toUnixTime() + this.utcOffset();\n let other = aDate.toUnixTime() + aDate.utcOffset();\n return Duration.fromSeconds(unixTime - other);\n }\n\n /**\n * Subtract the date details, taking timezones into account.\n *\n * @param {Time} aDate The date to subtract\n * @return {Duration} The difference in duration\n */\n subtractDateTz(aDate) {\n let unixTime = this.toUnixTime();\n let other = aDate.toUnixTime();\n return Duration.fromSeconds(unixTime - other);\n }\n\n /**\n * Compares the ICAL.Time instance with another one, or a period.\n *\n * @param {Time|Period} aOther The instance to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\n if (other instanceof Period) {\n return -1 * other.compare(this);\n } else {\n let a = this.toUnixTime();\n let b = other.toUnixTime();\n\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n }\n }\n\n /**\n * Compares only the date part of this instance with another one.\n *\n * @param {Time} other The instance to compare with\n * @param {Timezone} tz The timezone to compare in\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compareDateOnlyTz(other, tz) {\n let a = this.convertToZone(tz);\n let b = other.convertToZone(tz);\n let rc = 0;\n\n if ((rc = Time._cmp_attr(a, b, \"year\")) != 0) return rc;\n if ((rc = Time._cmp_attr(a, b, \"month\")) != 0) return rc;\n if ((rc = Time._cmp_attr(a, b, \"day\")) != 0) return rc;\n\n return rc;\n }\n\n /**\n * Convert the instance into another timezone. The returned ICAL.Time\n * instance is always a copy.\n *\n * @param {Timezone} zone The zone to convert to\n * @return {Time} The copy, converted to the zone\n */\n convertToZone(zone) {\n let copy = this.clone();\n let zone_equals = (this.zone.tzid == zone.tzid);\n\n if (!this.isDate && !zone_equals) {\n Timezone.convert_time(copy, this.zone, zone);\n }\n\n copy.zone = zone;\n return copy;\n }\n\n /**\n * Calculates the UTC offset of the current date/time in the timezone it is\n * in.\n *\n * @return {Number} UTC offset in seconds\n */\n utcOffset() {\n if (this.zone == Timezone.localTimezone ||\n this.zone == Timezone.utcTimezone) {\n return 0;\n } else {\n return this.zone.utcOffset(this);\n }\n }\n\n /**\n * Returns an RFC 5545 compliant ical representation of this object.\n *\n * @return {String} ical date/date-time\n */\n toICALString() {\n let string = this.toString();\n\n if (string.length > 10) {\n return design.icalendar.value['date-time'].toICAL(string);\n } else {\n return design.icalendar.value.date.toICAL(string);\n }\n }\n\n /**\n * The string representation of this date/time, in jCal form\n * (including : and - separators).\n * @return {String}\n */\n toString() {\n let result = this.year + '-' +\n pad2(this.month) + '-' +\n pad2(this.day);\n\n if (!this.isDate) {\n result += 'T' + pad2(this.hour) + ':' +\n pad2(this.minute) + ':' +\n pad2(this.second);\n\n if (this.zone === Timezone.utcTimezone) {\n result += 'Z';\n }\n }\n\n return result;\n }\n\n /**\n * Converts the current instance to a Javascript date\n * @return {Date}\n */\n toJSDate() {\n if (this.zone == Timezone.localTimezone) {\n if (this.isDate) {\n return new Date(this.year, this.month - 1, this.day);\n } else {\n return new Date(this.year, this.month - 1, this.day,\n this.hour, this.minute, this.second, 0);\n }\n } else {\n return new Date(this.toUnixTime() * 1000);\n }\n }\n\n _normalize() {\n if (this._time.isDate) {\n this._time.hour = 0;\n this._time.minute = 0;\n this._time.second = 0;\n }\n this.adjust(0, 0, 0, 0);\n\n return this;\n }\n\n /**\n * Adjust the date/time by the given offset\n *\n * @param {Number} aExtraDays The extra amount of days\n * @param {Number} aExtraHours The extra amount of hours\n * @param {Number} aExtraMinutes The extra amount of minutes\n * @param {Number} aExtraSeconds The extra amount of seconds\n * @param {Number=} aTime The time to adjust, defaults to the\n * current instance.\n */\n adjust(aExtraDays, aExtraHours, aExtraMinutes, aExtraSeconds, aTime) {\n\n let minutesOverflow, hoursOverflow,\n daysOverflow = 0, yearsOverflow = 0;\n\n let second, minute, hour, day;\n let daysInMonth;\n\n let time = aTime || this._time;\n\n if (!time.isDate) {\n second = time.second + aExtraSeconds;\n time.second = second % 60;\n minutesOverflow = trunc(second / 60);\n if (time.second < 0) {\n time.second += 60;\n minutesOverflow--;\n }\n\n minute = time.minute + aExtraMinutes + minutesOverflow;\n time.minute = minute % 60;\n hoursOverflow = trunc(minute / 60);\n if (time.minute < 0) {\n time.minute += 60;\n hoursOverflow--;\n }\n\n hour = time.hour + aExtraHours + hoursOverflow;\n\n time.hour = hour % 24;\n daysOverflow = trunc(hour / 24);\n if (time.hour < 0) {\n time.hour += 24;\n daysOverflow--;\n }\n }\n\n\n // Adjust month and year first, because we need to know what month the day\n // is in before adjusting it.\n if (time.month > 12) {\n yearsOverflow = trunc((time.month - 1) / 12);\n } else if (time.month < 1) {\n yearsOverflow = trunc(time.month / 12) - 1;\n }\n\n time.year += yearsOverflow;\n time.month -= 12 * yearsOverflow;\n\n // Now take care of the days (and adjust month if needed)\n day = time.day + aExtraDays + daysOverflow;\n\n if (day > 0) {\n for (;;) {\n daysInMonth = Time.daysInMonth(time.month, time.year);\n if (day <= daysInMonth) {\n break;\n }\n\n time.month++;\n if (time.month > 12) {\n time.year++;\n time.month = 1;\n }\n\n day -= daysInMonth;\n }\n } else {\n while (day <= 0) {\n if (time.month == 1) {\n time.year--;\n time.month = 12;\n } else {\n time.month--;\n }\n\n day += Time.daysInMonth(time.month, time.year);\n }\n }\n\n time.day = day;\n\n this._cachedUnixTime = null;\n return this;\n }\n\n /**\n * Sets up the current instance from unix time, the number of seconds since\n * January 1st, 1970.\n *\n * @param {Number} seconds The seconds to set up with\n */\n fromUnixTime(seconds) {\n this.zone = Timezone.utcTimezone;\n // We could use `fromJSDate` here, but this is about twice as fast.\n // We could also clone `epochTime` and use `adjust` for a more\n // ical.js-centric approach, but this is about 100 times as fast.\n let date = new Date(seconds * 1000);\n this.year = date.getUTCFullYear();\n this.month = date.getUTCMonth() + 1;\n this.day = date.getUTCDate();\n if (this._time.isDate) {\n this.hour = 0;\n this.minute = 0;\n this.second = 0;\n } else {\n this.hour = date.getUTCHours();\n this.minute = date.getUTCMinutes();\n this.second = date.getUTCSeconds();\n }\n\n this._cachedUnixTime = null;\n }\n\n /**\n * Converts the current instance to seconds since January 1st 1970.\n *\n * @return {Number} Seconds since 1970\n */\n toUnixTime() {\n if (this._cachedUnixTime !== null) {\n return this._cachedUnixTime;\n }\n let offset = this.utcOffset();\n\n // we use the offset trick to ensure\n // that we are getting the actual UTC time\n let ms = Date.UTC(\n this.year,\n this.month - 1,\n this.day,\n this.hour,\n this.minute,\n this.second - offset\n );\n\n // seconds\n this._cachedUnixTime = ms / 1000;\n return this._cachedUnixTime;\n }\n\n /**\n * Converts time to into Object which can be serialized then re-created\n * using the constructor.\n *\n * @example\n * // toJSON will automatically be called\n * var json = JSON.stringify(mytime);\n *\n * var deserialized = JSON.parse(json);\n *\n * var time = new ICAL.Time(deserialized);\n *\n * @return {Object}\n */\n toJSON() {\n let copy = [\n 'year',\n 'month',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'isDate'\n ];\n\n let result = Object.create(null);\n\n let i = 0;\n let len = copy.length;\n let prop;\n\n for (; i < len; i++) {\n prop = copy[i];\n result[prop] = this[prop];\n }\n\n if (this.zone) {\n result.timezone = this.zone.tzid;\n }\n\n return result;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").parserState} parserState\n * Imports the 'parserState' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\nconst CHAR = /[^ \\t]/;\nconst VALUE_DELIMITER = ':';\nconst PARAM_DELIMITER = ';';\nconst PARAM_NAME_DELIMITER = '=';\nconst DEFAULT_VALUE_TYPE$1 = 'unknown';\nconst DEFAULT_PARAM_TYPE = 'text';\nconst RFC6868_REPLACE_MAP$1 = { \"^'\": '\"', \"^n\": \"\\n\", \"^^\": \"^\" };\n\n/**\n * Parses iCalendar or vCard data into a raw jCal object. Consult\n * documentation on the {@tutorial layers|layers of parsing} for more\n * details.\n *\n * @function ICAL.parse\n * @memberof ICAL\n * @variation function\n * @todo Fix the API to be more clear on the return type\n * @param {String} input The string data to parse\n * @return {Object|Object[]} A single jCal object, or an array thereof\n */\nfunction parse(input) {\n let state = {};\n let root = state.component = [];\n\n state.stack = [root];\n\n parse._eachLine(input, function(err, line) {\n parse._handleContentLine(line, state);\n });\n\n\n // when there are still items on the stack\n // throw a fatal error, a component was not closed\n // correctly in that case.\n if (state.stack.length > 1) {\n throw new ParserError(\n 'invalid ical body. component began but did not end'\n );\n }\n\n state = null;\n\n return (root.length == 1 ? root[0] : root);\n}\n\n/**\n * Parse an iCalendar property value into the jCal for a single property\n *\n * @function ICAL.parse.property\n * @param {String} str\n * The iCalendar property string to parse\n * @param {designSet=} designSet\n * The design data to use for this property\n * @return {Object}\n * The jCal Object containing the property\n */\nparse.property = function(str, designSet) {\n let state = {\n component: [[], []],\n designSet: designSet || design.defaultSet\n };\n parse._handleContentLine(str, state);\n return state.component[1][0];\n};\n\n/**\n * Convenience method to parse a component. You can use ICAL.parse() directly\n * instead.\n *\n * @function ICAL.parse.component\n * @see ICAL.parse(function)\n * @param {String} str The iCalendar component string to parse\n * @return {Object} The jCal Object containing the component\n */\nparse.component = function(str) {\n return parse(str);\n};\n\n\n/**\n * An error that occurred during parsing.\n *\n * @param {String} message The error message\n * @memberof ICAL.parse\n * @extends {Error}\n */\nclass ParserError extends Error {\n name = this.constructor.name;\n}\n\n// classes & constants\nparse.ParserError = ParserError;\n\n\n/**\n * Handles a single line of iCalendar/vCard, updating the state.\n *\n * @private\n * @function ICAL.parse._handleContentLine\n * @param {String} line The content line to process\n * @param {parserState} state The current state of the line parsing\n */\nparse._handleContentLine = function(line, state) {\n // break up the parts of the line\n let valuePos = line.indexOf(VALUE_DELIMITER);\n let paramPos = line.indexOf(PARAM_DELIMITER);\n\n let lastParamIndex;\n let lastValuePos;\n\n // name of property or begin/end\n let name;\n let value;\n // params is only overridden if paramPos !== -1.\n // we can't do params = params || {} later on\n // because it sacrifices ops.\n let params = {};\n\n /**\n * Different property cases\n *\n *\n * 1. RRULE:FREQ=foo\n * // FREQ= is not a param but the value\n *\n * 2. ATTENDEE;ROLE=REQ-PARTICIPANT;\n * // ROLE= is a param because : has not happened yet\n */\n // when the parameter delimiter is after the\n // value delimiter then it is not a parameter.\n\n if ((paramPos !== -1 && valuePos !== -1)) {\n // when the parameter delimiter is after the\n // value delimiter then it is not a parameter.\n if (paramPos > valuePos) {\n paramPos = -1;\n }\n }\n\n let parsedParams;\n if (paramPos !== -1) {\n name = line.slice(0, Math.max(0, paramPos)).toLowerCase();\n parsedParams = parse._parseParameters(line.slice(Math.max(0, paramPos)), 0, state.designSet);\n if (parsedParams[2] == -1) {\n throw new ParserError(\"Invalid parameters in '\" + line + \"'\");\n }\n params = parsedParams[0];\n // Handle parameter values with multiple entries\n let parsedParamLength;\n if (typeof parsedParams[1] === 'string') {\n parsedParamLength = parsedParams[1].length;\n } else {\n parsedParamLength = parsedParams[1].reduce((accumulator, currentValue) => {\n return accumulator + currentValue.length;\n }, 0);\n }\n lastParamIndex = parsedParamLength + parsedParams[2] + paramPos;\n if ((lastValuePos =\n line.slice(Math.max(0, lastParamIndex)).indexOf(VALUE_DELIMITER)) !== -1) {\n value = line.slice(Math.max(0, lastParamIndex + lastValuePos + 1));\n } else {\n throw new ParserError(\"Missing parameter value in '\" + line + \"'\");\n }\n } else if (valuePos !== -1) {\n // without parmeters (BEGIN:VCAENDAR, CLASS:PUBLIC)\n name = line.slice(0, Math.max(0, valuePos)).toLowerCase();\n value = line.slice(Math.max(0, valuePos + 1));\n\n if (name === 'begin') {\n let newComponent = [value.toLowerCase(), [], []];\n if (state.stack.length === 1) {\n state.component.push(newComponent);\n } else {\n state.component[2].push(newComponent);\n }\n state.stack.push(state.component);\n state.component = newComponent;\n if (!state.designSet) {\n state.designSet = design.getDesignSet(state.component[0]);\n }\n return;\n } else if (name === 'end') {\n state.component = state.stack.pop();\n return;\n }\n // If it is not begin/end, then this is a property with an empty value,\n // which should be considered valid.\n } else {\n /**\n * Invalid line.\n * The rational to throw an error is we will\n * never be certain that the rest of the file\n * is sane and it is unlikely that we can serialize\n * the result correctly either.\n */\n throw new ParserError(\n 'invalid line (no token \";\" or \":\") \"' + line + '\"'\n );\n }\n\n let valueType;\n let multiValue = false;\n let structuredValue = false;\n let propertyDetails;\n let splitName;\n let ungroupedName;\n\n // fetch the ungrouped part of the name\n if (state.designSet.propertyGroups && name.indexOf('.') !== -1) {\n splitName = name.split('.');\n params.group = splitName[0];\n ungroupedName = splitName[1];\n } else {\n ungroupedName = name;\n }\n\n if (ungroupedName in state.designSet.property) {\n propertyDetails = state.designSet.property[ungroupedName];\n\n if ('multiValue' in propertyDetails) {\n multiValue = propertyDetails.multiValue;\n }\n\n if ('structuredValue' in propertyDetails) {\n structuredValue = propertyDetails.structuredValue;\n }\n\n if (value && 'detectType' in propertyDetails) {\n valueType = propertyDetails.detectType(value);\n }\n }\n\n // attempt to determine value\n if (!valueType) {\n if (!('value' in params)) {\n if (propertyDetails) {\n valueType = propertyDetails.defaultType;\n } else {\n valueType = DEFAULT_VALUE_TYPE$1;\n }\n } else {\n // possible to avoid this?\n valueType = params.value.toLowerCase();\n }\n }\n\n delete params.value;\n\n /**\n * Note on `var result` juggling:\n *\n * I observed that building the array in pieces has adverse\n * effects on performance, so where possible we inline the creation.\n * It is a little ugly but resulted in ~2000 additional ops/sec.\n */\n\n let result;\n if (multiValue && structuredValue) {\n value = parse._parseMultiValue(value, structuredValue, valueType, [], multiValue, state.designSet, structuredValue);\n result = [ungroupedName, params, valueType, value];\n } else if (multiValue) {\n result = [ungroupedName, params, valueType];\n parse._parseMultiValue(value, multiValue, valueType, result, null, state.designSet, false);\n } else if (structuredValue) {\n value = parse._parseMultiValue(value, structuredValue, valueType, [], null, state.designSet, structuredValue);\n result = [ungroupedName, params, valueType, value];\n } else {\n value = parse._parseValue(value, valueType, state.designSet, false);\n result = [ungroupedName, params, valueType, value];\n }\n // rfc6350 requires that in vCard 4.0 the first component is the VERSION\n // component with as value 4.0, note that 3.0 does not have this requirement.\n if (state.component[0] === 'vcard' && state.component[1].length === 0 &&\n !(name === 'version' && value === '4.0')) {\n state.designSet = design.getDesignSet(\"vcard3\");\n }\n state.component[1].push(result);\n};\n\n/**\n * Parse a value from the raw value into the jCard/jCal value.\n *\n * @private\n * @function ICAL.parse._parseValue\n * @param {String} value Original value\n * @param {String} type Type of value\n * @param {Object} designSet The design data to use for this value\n * @return {Object} varies on type\n */\nparse._parseValue = function(value, type, designSet, structuredValue) {\n if (type in designSet.value && 'fromICAL' in designSet.value[type]) {\n return designSet.value[type].fromICAL(value, structuredValue);\n }\n return value;\n};\n\n/**\n * Parse parameters from a string to object.\n *\n * @function ICAL.parse._parseParameters\n * @private\n * @param {String} line A single unfolded line\n * @param {Number} start Position to start looking for properties\n * @param {Object} designSet The design data to use for this property\n * @return {Array} Array containing key/valye pairs of parsed parameters, the\n * parsed value, and the position of the last parameter found\n */\nparse._parseParameters = function(line, start, designSet) {\n let lastParam = start;\n let pos = 0;\n let delim = PARAM_NAME_DELIMITER;\n let result = {};\n let name, lcname;\n let value, valuePos = -1;\n let type, multiValue, mvdelim;\n\n // find the next '=' sign\n // use lastParam and pos to find name\n // check if \" is used if so get value from \"->\"\n // then increment pos to find next ;\n\n while ((pos !== false) &&\n (pos = line.indexOf(delim, pos + 1)) !== -1) {\n\n name = line.slice(lastParam + 1, pos);\n if (name.length == 0) {\n throw new ParserError(\"Empty parameter name in '\" + line + \"'\");\n }\n lcname = name.toLowerCase();\n mvdelim = false;\n multiValue = false;\n\n if (lcname in designSet.param && designSet.param[lcname].valueType) {\n type = designSet.param[lcname].valueType;\n } else {\n type = DEFAULT_PARAM_TYPE;\n }\n\n if (lcname in designSet.param) {\n multiValue = designSet.param[lcname].multiValue;\n if (designSet.param[lcname].multiValueSeparateDQuote) {\n mvdelim = parse._rfc6868Escape('\"' + multiValue + '\"');\n }\n }\n\n let nextChar = line[pos + 1];\n if (nextChar === '\"') {\n valuePos = pos + 2;\n pos = line.indexOf('\"', valuePos);\n if (multiValue && pos != -1) {\n let extendedValue = true;\n while (extendedValue) {\n if (line[pos + 1] == multiValue && line[pos + 2] == '\"') {\n pos = line.indexOf('\"', pos + 3);\n } else {\n extendedValue = false;\n }\n }\n }\n if (pos === -1) {\n throw new ParserError(\n 'invalid line (no matching double quote) \"' + line + '\"'\n );\n }\n value = line.slice(valuePos, pos);\n lastParam = line.indexOf(PARAM_DELIMITER, pos);\n let propValuePos = line.indexOf(VALUE_DELIMITER, pos);\n // if either no next parameter or delimeter in property value, let's stop here\n if (lastParam === -1 || (propValuePos !== -1 && lastParam > propValuePos)) {\n pos = false;\n }\n } else {\n valuePos = pos + 1;\n\n // move to next \";\"\n let nextPos = line.indexOf(PARAM_DELIMITER, valuePos);\n let propValuePos = line.indexOf(VALUE_DELIMITER, valuePos);\n if (propValuePos !== -1 && nextPos > propValuePos) {\n // this is a delimiter in the property value, let's stop here\n nextPos = propValuePos;\n pos = false;\n } else if (nextPos === -1) {\n // no \";\"\n if (propValuePos === -1) {\n nextPos = line.length;\n } else {\n nextPos = propValuePos;\n }\n pos = false;\n } else {\n lastParam = nextPos;\n pos = nextPos;\n }\n\n value = line.slice(valuePos, nextPos);\n }\n\n const length_before = value.length;\n value = parse._rfc6868Escape(value);\n valuePos += length_before - value.length;\n if (multiValue) {\n let delimiter = mvdelim || multiValue;\n value = parse._parseMultiValue(value, delimiter, type, [], null, designSet);\n } else {\n value = parse._parseValue(value, type, designSet);\n }\n\n if (multiValue && (lcname in result)) {\n if (Array.isArray(result[lcname])) {\n result[lcname].push(value);\n } else {\n result[lcname] = [\n result[lcname],\n value\n ];\n }\n } else {\n result[lcname] = value;\n }\n }\n return [result, value, valuePos];\n};\n\n/**\n * Internal helper for rfc6868. Exposing this on ICAL.parse so that\n * hackers can disable the rfc6868 parsing if the really need to.\n *\n * @function ICAL.parse._rfc6868Escape\n * @param {String} val The value to escape\n * @return {String} The escaped value\n */\nparse._rfc6868Escape = function(val) {\n return val.replace(/\\^['n^]/g, function(x) {\n return RFC6868_REPLACE_MAP$1[x];\n });\n};\n\n/**\n * Parse a multi value string. This function is used either for parsing\n * actual multi-value property's values, or for handling parameter values. It\n * can be used for both multi-value properties and structured value properties.\n *\n * @private\n * @function ICAL.parse._parseMultiValue\n * @param {String} buffer The buffer containing the full value\n * @param {String} delim The multi-value delimiter\n * @param {String} type The value type to be parsed\n * @param {Array.} result The array to append results to, varies on value type\n * @param {String} innerMulti The inner delimiter to split each value with\n * @param {designSet} designSet The design data for this value\n * @return {?|Array.} Either an array of results, or the first result\n */\nparse._parseMultiValue = function(buffer, delim, type, result, innerMulti, designSet, structuredValue) {\n let pos = 0;\n let lastPos = 0;\n let value;\n if (delim.length === 0) {\n return buffer;\n }\n\n // split each piece\n while ((pos = unescapedIndexOf(buffer, delim, lastPos)) !== -1) {\n value = buffer.slice(lastPos, pos);\n if (innerMulti) {\n value = parse._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue);\n } else {\n value = parse._parseValue(value, type, designSet, structuredValue);\n }\n result.push(value);\n lastPos = pos + delim.length;\n }\n\n // on the last piece take the rest of string\n value = buffer.slice(lastPos);\n if (innerMulti) {\n value = parse._parseMultiValue(value, innerMulti, type, [], null, designSet, structuredValue);\n } else {\n value = parse._parseValue(value, type, designSet, structuredValue);\n }\n result.push(value);\n\n return result.length == 1 ? result[0] : result;\n};\n\n/**\n * Process a complete buffer of iCalendar/vCard data line by line, correctly\n * unfolding content. Each line will be processed with the given callback\n *\n * @private\n * @function ICAL.parse._eachLine\n * @param {String} buffer The buffer to process\n * @param {function(?String, String)} callback The callback for each line\n */\nparse._eachLine = function(buffer, callback) {\n let len = buffer.length;\n let lastPos = buffer.search(CHAR);\n let pos = lastPos;\n let line;\n let firstChar;\n\n let newlineOffset;\n\n do {\n pos = buffer.indexOf('\\n', lastPos) + 1;\n\n if (pos > 1 && buffer[pos - 2] === '\\r') {\n newlineOffset = 2;\n } else {\n newlineOffset = 1;\n }\n\n if (pos === 0) {\n pos = len;\n newlineOffset = 0;\n }\n\n firstChar = buffer[lastPos];\n\n if (firstChar === ' ' || firstChar === '\\t') {\n // add to line\n line += buffer.slice(lastPos + 1, pos - newlineOffset);\n } else {\n if (line)\n callback(null, line);\n // push line\n line = buffer.slice(lastPos, pos - newlineOffset);\n }\n\n lastPos = pos;\n } while (pos !== len);\n\n // extra ending line\n line = line.trim();\n\n if (line.length)\n callback(null, line);\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nconst OPTIONS = [\"tzid\", \"location\", \"tznames\", \"latitude\", \"longitude\"];\n\n/**\n * Timezone representation.\n *\n * @example\n * var vcalendar;\n * var timezoneComp = vcalendar.getFirstSubcomponent('vtimezone');\n * var tzid = timezoneComp.getFirstPropertyValue('tzid');\n *\n * var timezone = new ICAL.Timezone({\n * component: timezoneComp,\n * tzid\n * });\n *\n * @memberof ICAL\n */\nclass Timezone {\n static _compare_change_fn(a, b) {\n if (a.year < b.year) return -1;\n else if (a.year > b.year) return 1;\n\n if (a.month < b.month) return -1;\n else if (a.month > b.month) return 1;\n\n if (a.day < b.day) return -1;\n else if (a.day > b.day) return 1;\n\n if (a.hour < b.hour) return -1;\n else if (a.hour > b.hour) return 1;\n\n if (a.minute < b.minute) return -1;\n else if (a.minute > b.minute) return 1;\n\n if (a.second < b.second) return -1;\n else if (a.second > b.second) return 1;\n\n return 0;\n }\n\n /**\n * Convert the date/time from one zone to the next.\n *\n * @param {Time} tt The time to convert\n * @param {Timezone} from_zone The source zone to convert from\n * @param {Timezone} to_zone The target zone to convert to\n * @return {Time} The converted date/time object\n */\n static convert_time(tt, from_zone, to_zone) {\n if (tt.isDate ||\n from_zone.tzid == to_zone.tzid ||\n from_zone == Timezone.localTimezone ||\n to_zone == Timezone.localTimezone) {\n tt.zone = to_zone;\n return tt;\n }\n\n let utcOffset = from_zone.utcOffset(tt);\n tt.adjust(0, 0, 0, - utcOffset);\n\n utcOffset = to_zone.utcOffset(tt);\n tt.adjust(0, 0, 0, utcOffset);\n\n return null;\n }\n\n /**\n * Creates a new ICAL.Timezone instance from the passed data object.\n *\n * @param {Component|Object} aData options for class\n * @param {String|Component} aData.component\n * If aData is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} aData.tzid The timezone identifier\n * @param {String} aData.location The timezone locationw\n * @param {String} aData.tznames An alternative string representation of the\n * timezone\n * @param {Number} aData.latitude The latitude of the timezone\n * @param {Number} aData.longitude The longitude of the timezone\n */\n static fromData(aData) {\n let tt = new Timezone();\n return tt.fromData(aData);\n }\n\n /**\n * The instance describing the UTC timezone\n * @type {Timezone}\n * @constant\n * @instance\n */\n static #utcTimezone = null;\n static get utcTimezone() {\n if (!this.#utcTimezone) {\n this.#utcTimezone = Timezone.fromData({\n tzid: \"UTC\"\n });\n }\n return this.#utcTimezone;\n }\n\n /**\n * The instance describing the local timezone\n * @type {Timezone}\n * @constant\n * @instance\n */\n static #localTimezone = null;\n static get localTimezone() {\n if (!this.#localTimezone) {\n this.#localTimezone = Timezone.fromData({\n tzid: \"floating\"\n });\n }\n return this.#localTimezone;\n }\n\n /**\n * Adjust a timezone change object.\n * @private\n * @param {Object} change The timezone change object\n * @param {Number} days The extra amount of days\n * @param {Number} hours The extra amount of hours\n * @param {Number} minutes The extra amount of minutes\n * @param {Number} seconds The extra amount of seconds\n */\n static adjust_change(change, days, hours, minutes, seconds) {\n return Time.prototype.adjust.call(\n change,\n days,\n hours,\n minutes,\n seconds,\n change\n );\n }\n\n static _minimumExpansionYear = -1;\n static EXTRA_COVERAGE = 5;\n\n /**\n * Creates a new ICAL.Timezone instance, by passing in a tzid and component.\n *\n * @param {Component|Object} data options for class\n * @param {String|Component} data.component\n * If data is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} data.tzid The timezone identifier\n * @param {String} data.location The timezone locationw\n * @param {String} data.tznames An alternative string representation of the\n * timezone\n * @param {Number} data.latitude The latitude of the timezone\n * @param {Number} data.longitude The longitude of the timezone\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.fromData(data);\n }\n\n\n /**\n * Timezone identifier\n * @type {String}\n */\n tzid = \"\";\n\n /**\n * Timezone location\n * @type {String}\n */\n location = \"\";\n\n /**\n * Alternative timezone name, for the string representation\n * @type {String}\n */\n tznames = \"\";\n\n /**\n * The primary latitude for the timezone.\n * @type {Number}\n */\n latitude = 0.0;\n\n /**\n * The primary longitude for the timezone.\n * @type {Number}\n */\n longitude = 0.0;\n\n /**\n * The vtimezone component for this timezone.\n * @type {Component}\n */\n component = null;\n\n /**\n * The year this timezone has been expanded to. All timezone transition\n * dates until this year are known and can be used for calculation\n *\n * @private\n * @type {Number}\n */\n expandedUntilYear = 0;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icaltimezone\"\n */\n icalclass = \"icaltimezone\";\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Component|Object} aData options for class\n * @param {String|Component} aData.component\n * If aData is a simple object, then this member can be set to either a\n * string containing the component data, or an already parsed\n * ICAL.Component\n * @param {String} aData.tzid The timezone identifier\n * @param {String} aData.location The timezone locationw\n * @param {String} aData.tznames An alternative string representation of the\n * timezone\n * @param {Number} aData.latitude The latitude of the timezone\n * @param {Number} aData.longitude The longitude of the timezone\n */\n fromData(aData) {\n this.expandedUntilYear = 0;\n this.changes = [];\n\n if (aData instanceof Component) {\n // Either a component is passed directly\n this.component = aData;\n } else {\n // Otherwise the component may be in the data object\n if (aData && \"component\" in aData) {\n if (typeof aData.component == \"string\") {\n // If a string was passed, parse it as a component\n let jCal = parse(aData.component);\n this.component = new Component(jCal);\n } else if (aData.component instanceof Component) {\n // If it was a component already, then just set it\n this.component = aData.component;\n } else {\n // Otherwise just null out the component\n this.component = null;\n }\n }\n\n // Copy remaining passed properties\n for (let prop of OPTIONS) {\n if (aData && prop in aData) {\n this[prop] = aData[prop];\n }\n }\n }\n\n // If we have a component but no TZID, attempt to get it from the\n // component's properties.\n if (this.component instanceof Component && !this.tzid) {\n this.tzid = this.component.getFirstPropertyValue('tzid');\n }\n\n return this;\n }\n\n /**\n * Finds the utcOffset the given time would occur in this timezone.\n *\n * @param {Time} tt The time to check for\n * @return {Number} utc offset in seconds\n */\n utcOffset(tt) {\n if (this == Timezone.utcTimezone || this == Timezone.localTimezone) {\n return 0;\n }\n\n this._ensureCoverage(tt.year);\n\n if (!this.changes.length) {\n return 0;\n }\n\n let tt_change = {\n year: tt.year,\n month: tt.month,\n day: tt.day,\n hour: tt.hour,\n minute: tt.minute,\n second: tt.second\n };\n\n let change_num = this._findNearbyChange(tt_change);\n let change_num_to_use = -1;\n let step = 1;\n\n // TODO: replace with bin search?\n for (;;) {\n let change = clone(this.changes[change_num], true);\n if (change.utcOffset < change.prevUtcOffset) {\n Timezone.adjust_change(change, 0, 0, 0, change.utcOffset);\n } else {\n Timezone.adjust_change(change, 0, 0, 0,\n change.prevUtcOffset);\n }\n\n let cmp = Timezone._compare_change_fn(tt_change, change);\n\n if (cmp >= 0) {\n change_num_to_use = change_num;\n } else {\n step = -1;\n }\n\n if (step == -1 && change_num_to_use != -1) {\n break;\n }\n\n change_num += step;\n\n if (change_num < 0) {\n return 0;\n }\n\n if (change_num >= this.changes.length) {\n break;\n }\n }\n\n let zone_change = this.changes[change_num_to_use];\n let utcOffset_change = zone_change.utcOffset - zone_change.prevUtcOffset;\n\n if (utcOffset_change < 0 && change_num_to_use > 0) {\n let tmp_change = clone(zone_change, true);\n Timezone.adjust_change(tmp_change, 0, 0, 0, tmp_change.prevUtcOffset);\n\n if (Timezone._compare_change_fn(tt_change, tmp_change) < 0) {\n let prev_zone_change = this.changes[change_num_to_use - 1];\n\n let want_daylight = false; // TODO\n\n if (zone_change.is_daylight != want_daylight &&\n prev_zone_change.is_daylight == want_daylight) {\n zone_change = prev_zone_change;\n }\n }\n }\n\n // TODO return is_daylight?\n return zone_change.utcOffset;\n }\n\n _findNearbyChange(change) {\n // find the closest match\n let idx = binsearchInsert(\n this.changes,\n change,\n Timezone._compare_change_fn\n );\n\n if (idx >= this.changes.length) {\n return this.changes.length - 1;\n }\n\n return idx;\n }\n\n _ensureCoverage(aYear) {\n if (Timezone._minimumExpansionYear == -1) {\n let today = Time.now();\n Timezone._minimumExpansionYear = today.year;\n }\n\n let changesEndYear = aYear;\n if (changesEndYear < Timezone._minimumExpansionYear) {\n changesEndYear = Timezone._minimumExpansionYear;\n }\n\n changesEndYear += Timezone.EXTRA_COVERAGE;\n\n if (!this.changes.length || this.expandedUntilYear < aYear) {\n let subcomps = this.component.getAllSubcomponents();\n let compLen = subcomps.length;\n let compIdx = 0;\n\n for (; compIdx < compLen; compIdx++) {\n this._expandComponent(\n subcomps[compIdx], changesEndYear, this.changes\n );\n }\n\n this.changes.sort(Timezone._compare_change_fn);\n this.expandedUntilYear = changesEndYear;\n }\n }\n\n _expandComponent(aComponent, aYear, changes) {\n if (!aComponent.hasProperty(\"dtstart\") ||\n !aComponent.hasProperty(\"tzoffsetto\") ||\n !aComponent.hasProperty(\"tzoffsetfrom\")) {\n return null;\n }\n\n let dtstart = aComponent.getFirstProperty(\"dtstart\").getFirstValue();\n let change;\n\n function convert_tzoffset(offset) {\n return offset.factor * (offset.hours * 3600 + offset.minutes * 60);\n }\n\n function init_changes() {\n let changebase = {};\n changebase.is_daylight = (aComponent.name == \"daylight\");\n changebase.utcOffset = convert_tzoffset(\n aComponent.getFirstProperty(\"tzoffsetto\").getFirstValue()\n );\n\n changebase.prevUtcOffset = convert_tzoffset(\n aComponent.getFirstProperty(\"tzoffsetfrom\").getFirstValue()\n );\n\n return changebase;\n }\n\n if (!aComponent.hasProperty(\"rrule\") && !aComponent.hasProperty(\"rdate\")) {\n change = init_changes();\n change.year = dtstart.year;\n change.month = dtstart.month;\n change.day = dtstart.day;\n change.hour = dtstart.hour;\n change.minute = dtstart.minute;\n change.second = dtstart.second;\n\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n changes.push(change);\n } else {\n let props = aComponent.getAllProperties(\"rdate\");\n for (let rdate of props) {\n let time = rdate.getFirstValue();\n change = init_changes();\n\n change.year = time.year;\n change.month = time.month;\n change.day = time.day;\n\n if (time.isDate) {\n change.hour = dtstart.hour;\n change.minute = dtstart.minute;\n change.second = dtstart.second;\n\n if (dtstart.zone != Timezone.utcTimezone) {\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n }\n } else {\n change.hour = time.hour;\n change.minute = time.minute;\n change.second = time.second;\n\n if (time.zone != Timezone.utcTimezone) {\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n }\n }\n\n changes.push(change);\n }\n\n let rrule = aComponent.getFirstProperty(\"rrule\");\n\n if (rrule) {\n rrule = rrule.getFirstValue();\n change = init_changes();\n\n if (rrule.until && rrule.until.zone == Timezone.utcTimezone) {\n rrule.until.adjust(0, 0, 0, change.prevUtcOffset);\n rrule.until.zone = Timezone.localTimezone;\n }\n\n let iterator = rrule.iterator(dtstart);\n\n let occ;\n while ((occ = iterator.next())) {\n change = init_changes();\n if (occ.year > aYear || !occ) {\n break;\n }\n\n change.year = occ.year;\n change.month = occ.month;\n change.day = occ.day;\n change.hour = occ.hour;\n change.minute = occ.minute;\n change.second = occ.second;\n change.isDate = occ.isDate;\n\n Timezone.adjust_change(change, 0, 0, 0, -change.prevUtcOffset);\n changes.push(change);\n }\n }\n }\n\n return changes;\n }\n\n /**\n * The string representation of this timezone.\n * @return {String}\n */\n toString() {\n return (this.tznames ? this.tznames : this.tzid);\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\nlet zones = null;\n\n/**\n * @classdesc\n * Singleton class to contain timezones. Right now it is all manual registry in\n * the future we may use this class to download timezone information or handle\n * loading pre-expanded timezones.\n *\n * @exports module:ICAL.TimezoneService\n * @memberof ICAL\n */\nconst TimezoneService = {\n get count() {\n if (zones === null) {\n return 0;\n }\n\n return Object.keys(zones).length;\n },\n\n reset: function() {\n zones = Object.create(null);\n let utc = Timezone.utcTimezone;\n\n zones.Z = utc;\n zones.UTC = utc;\n zones.GMT = utc;\n },\n _hard_reset: function() {\n zones = null;\n },\n\n /**\n * Checks if timezone id has been registered.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {Boolean} False, when not present\n */\n has: function(tzid) {\n if (zones === null) {\n return false;\n }\n\n return !!zones[tzid];\n },\n\n /**\n * Returns a timezone by its tzid if present.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {Timezone | undefined} The timezone, or undefined if not found\n */\n get: function(tzid) {\n if (zones === null) {\n this.reset();\n }\n\n return zones[tzid];\n },\n\n /**\n * Registers a timezone object or component.\n *\n * @param {Component|Timezone} timezone\n * The initialized zone or vtimezone.\n *\n * @param {String=} name\n * The name of the timezone. Defaults to the component's TZID if not\n * passed.\n */\n register: function(timezone, name) {\n if (zones === null) {\n this.reset();\n }\n\n // This avoids a breaking change by the change of argument order\n // TODO remove in v3\n if (typeof timezone === \"string\" && name instanceof Timezone) {\n [timezone, name] = [name, timezone];\n }\n\n if (!name) {\n if (timezone instanceof Timezone) {\n name = timezone.tzid;\n } else {\n if (timezone.name === 'vtimezone') {\n timezone = new Timezone(timezone);\n name = timezone.tzid;\n }\n }\n }\n\n if (!name) {\n throw new TypeError(\"Neither a timezone nor a name was passed\");\n }\n\n if (timezone instanceof Timezone) {\n zones[name] = timezone;\n } else {\n throw new TypeError('timezone must be ICAL.Timezone or ICAL.Component');\n }\n },\n\n /**\n * Removes a timezone by its tzid from the list.\n *\n * @param {String} tzid Timezone identifier (e.g. America/Los_Angeles)\n * @return {?Timezone} The removed timezone, or null if not registered\n */\n remove: function(tzid) {\n if (zones === null) {\n return null;\n }\n\n return (delete zones[tzid]);\n }\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Helper functions used in various places within ical.js\n * @module ICAL.helpers\n */\n\n/**\n * Compiles a list of all referenced TZIDs in all subcomponents and\n * removes any extra VTIMEZONE subcomponents. In addition, if any TZIDs\n * are referenced by a component, but a VTIMEZONE does not exist,\n * an attempt will be made to generate a VTIMEZONE using ICAL.TimezoneService.\n *\n * @param {Component} vcal The top-level VCALENDAR component.\n * @return {Component} The ICAL.Component that was passed in.\n */\nfunction updateTimezones(vcal) {\n let allsubs, properties, vtimezones, reqTzid, i;\n\n if (!vcal || vcal.name !== \"vcalendar\") {\n //not a top-level vcalendar component\n return vcal;\n }\n\n //Store vtimezone subcomponents in an object reference by tzid.\n //Store properties from everything else in another array\n allsubs = vcal.getAllSubcomponents();\n properties = [];\n vtimezones = {};\n for (i = 0; i < allsubs.length; i++) {\n if (allsubs[i].name === \"vtimezone\") {\n let tzid = allsubs[i].getFirstProperty(\"tzid\").getFirstValue();\n vtimezones[tzid] = allsubs[i];\n } else {\n properties = properties.concat(allsubs[i].getAllProperties());\n }\n }\n\n //create an object with one entry for each required tz\n reqTzid = {};\n for (i = 0; i < properties.length; i++) {\n let tzid = properties[i].getParameter(\"tzid\");\n if (tzid) {\n reqTzid[tzid] = true;\n }\n }\n\n //delete any vtimezones that are not on the reqTzid list.\n for (let [tzid, comp] of Object.entries(vtimezones)) {\n if (!reqTzid[tzid]) {\n vcal.removeSubcomponent(comp);\n }\n }\n\n //create any missing, but registered timezones\n for (let tzid of Object.keys(reqTzid)) {\n if (!vtimezones[tzid] && TimezoneService.has(tzid)) {\n vcal.addSubcomponent(TimezoneService.get(tzid).component);\n }\n }\n\n return vcal;\n}\n\n/**\n * Checks if the given type is of the number type and also NaN.\n *\n * @param {Number} number The number to check\n * @return {Boolean} True, if the number is strictly NaN\n */\nfunction isStrictlyNaN(number) {\n return typeof(number) === 'number' && isNaN(number);\n}\n\n/**\n * Parses a string value that is expected to be an integer, when the valid is\n * not an integer throws a decoration error.\n *\n * @param {String} string Raw string input\n * @return {Number} Parsed integer\n */\nfunction strictParseInt(string) {\n let result = parseInt(string, 10);\n\n if (isStrictlyNaN(result)) {\n throw new Error(\n 'Could not extract integer from \"' + string + '\"'\n );\n }\n\n return result;\n}\n\n/**\n * Creates or returns a class instance of a given type with the initialization\n * data if the data is not already an instance of the given type.\n *\n * @example\n * var time = new ICAL.Time(...);\n * var result = ICAL.helpers.formatClassType(time, ICAL.Time);\n *\n * (result instanceof ICAL.Time)\n * // => true\n *\n * result = ICAL.helpers.formatClassType({}, ICAL.Time);\n * (result isntanceof ICAL.Time)\n * // => true\n *\n *\n * @param {Object} data object initialization data\n * @param {Object} type object type (like ICAL.Time)\n * @return {?} An instance of the found type.\n */\nfunction formatClassType(data, type) {\n if (typeof(data) === 'undefined') {\n return undefined;\n }\n\n if (data instanceof type) {\n return data;\n }\n return new type(data);\n}\n\n/**\n * Identical to indexOf but will only match values when they are not preceded\n * by a backslash character.\n *\n * @param {String} buffer String to search\n * @param {String} search Value to look for\n * @param {Number} pos Start position\n * @return {Number} The position, or -1 if not found\n */\nfunction unescapedIndexOf(buffer, search, pos) {\n while ((pos = buffer.indexOf(search, pos)) !== -1) {\n if (pos > 0 && buffer[pos - 1] === '\\\\') {\n pos += 1;\n } else {\n return pos;\n }\n }\n return -1;\n}\n\n/**\n * Find the index for insertion using binary search.\n *\n * @param {Array} list The list to search\n * @param {?} seekVal The value to insert\n * @param {function(?,?)} cmpfunc The comparison func, that can\n * compare two seekVals\n * @return {Number} The insert position\n */\nfunction binsearchInsert(list, seekVal, cmpfunc) {\n if (!list.length)\n return 0;\n\n let low = 0, high = list.length - 1,\n mid, cmpval;\n\n while (low <= high) {\n mid = low + Math.floor((high - low) / 2);\n cmpval = cmpfunc(seekVal, list[mid]);\n\n if (cmpval < 0)\n high = mid - 1;\n else if (cmpval > 0)\n low = mid + 1;\n else\n break;\n }\n\n if (cmpval < 0)\n return mid; // insertion is displacing, so use mid outright.\n else if (cmpval > 0)\n return mid + 1;\n else\n return mid;\n}\n\n/**\n * Clone the passed object or primitive. By default a shallow clone will be\n * executed.\n *\n * @param {*} aSrc The thing to clone\n * @param {Boolean=} aDeep If true, a deep clone will be performed\n * @return {*} The copy of the thing\n */\nfunction clone(aSrc, aDeep) {\n if (!aSrc || typeof aSrc != \"object\") {\n return aSrc;\n } else if (aSrc instanceof Date) {\n return new Date(aSrc.getTime());\n } else if (\"clone\" in aSrc) {\n return aSrc.clone();\n } else if (Array.isArray(aSrc)) {\n let arr = [];\n for (let i = 0; i < aSrc.length; i++) {\n arr.push(aDeep ? clone(aSrc[i], true) : aSrc[i]);\n }\n return arr;\n } else {\n let obj = {};\n for (let [name, value] of Object.entries(aSrc)) {\n if (aDeep) {\n obj[name] = clone(value, true);\n } else {\n obj[name] = value;\n }\n }\n return obj;\n }\n}\n\n/**\n * Performs iCalendar line folding. A line ending character is inserted and\n * the next line begins with a whitespace.\n *\n * @example\n * SUMMARY:This line will be fold\n * ed right in the middle of a word.\n *\n * @param {String} aLine The line to fold\n * @return {String} The folded line\n */\nfunction foldline(aLine) {\n let result = \"\";\n let line = aLine || \"\", pos = 0, line_length = 0;\n //pos counts position in line for the UTF-16 presentation\n //line_length counts the bytes for the UTF-8 presentation\n while (line.length) {\n let cp = line.codePointAt(pos);\n if (cp < 128) ++line_length;\n else if (cp < 2048) line_length += 2;//needs 2 UTF-8 bytes\n else if (cp < 65536) line_length += 3;\n else line_length += 4; //cp is less than 1114112\n if (line_length < ICALmodule.foldLength + 1)\n pos += cp > 65535 ? 2 : 1;\n else {\n result += ICALmodule.newLineChar + \" \" + line.slice(0, Math.max(0, pos));\n line = line.slice(Math.max(0, pos));\n pos = line_length = 0;\n }\n }\n return result.slice(ICALmodule.newLineChar.length + 1);\n}\n\n/**\n * Pads the given string or number with zeros so it will have at least two\n * characters.\n *\n * @param {String|Number} data The string or number to pad\n * @return {String} The number padded as a string\n */\nfunction pad2(data) {\n if (typeof(data) !== 'string') {\n // handle fractions.\n if (typeof(data) === 'number') {\n data = parseInt(data);\n }\n data = String(data);\n }\n\n let len = data.length;\n\n switch (len) {\n case 0:\n return '00';\n case 1:\n return '0' + data;\n default:\n return data;\n }\n}\n\n/**\n * Truncates the given number, correctly handling negative numbers.\n *\n * @param {Number} number The number to truncate\n * @return {Number} The truncated number\n */\nfunction trunc(number) {\n return (number < 0 ? Math.ceil(number) : Math.floor(number));\n}\n\n/**\n * Poor-man's cross-browser object extension. Doesn't support all the\n * features, but enough for our usage. Note that the target's properties are\n * not overwritten with the source properties.\n *\n * @example\n * var child = ICAL.helpers.extend(parent, {\n * \"bar\": 123\n * });\n *\n * @param {Object} source The object to extend\n * @param {Object} target The object to extend with\n * @return {Object} Returns the target.\n */\nfunction extend(source, target) {\n for (let key in source) {\n let descr = Object.getOwnPropertyDescriptor(source, key);\n if (descr && !Object.getOwnPropertyDescriptor(target, key)) {\n Object.defineProperty(target, key, descr);\n }\n }\n return target;\n}\n\nvar helpers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n binsearchInsert: binsearchInsert,\n clone: clone,\n extend: extend,\n foldline: foldline,\n formatClassType: formatClassType,\n isStrictlyNaN: isStrictlyNaN,\n pad2: pad2,\n strictParseInt: strictParseInt,\n trunc: trunc,\n unescapedIndexOf: unescapedIndexOf,\n updateTimezones: updateTimezones\n});\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This class represents the \"utc-offset\" value type, with various calculation and manipulation\n * methods.\n *\n * @memberof ICAL\n */\nclass UtcOffset {\n /**\n * Creates a new {@link ICAL.UtcOffset} instance from the passed string.\n *\n * @param {String} aString The string to parse\n * @return {Duration} The created utc-offset instance\n */\n static fromString(aString) {\n // -05:00\n let options = {};\n //TODO: support seconds per rfc5545 ?\n options.factor = (aString[0] === '+') ? 1 : -1;\n options.hours = strictParseInt(aString.slice(1, 3));\n options.minutes = strictParseInt(aString.slice(4, 6));\n\n return new UtcOffset(options);\n }\n\n /**\n * Creates a new {@link ICAL.UtcOffset} instance from the passed seconds\n * value.\n *\n * @param {Number} aSeconds The number of seconds to convert\n */\n static fromSeconds(aSeconds) {\n let instance = new UtcOffset();\n instance.fromSeconds(aSeconds);\n return instance;\n }\n\n /**\n * Creates a new ICAL.UtcOffset instance.\n *\n * @param {Object} aData An object with members of the utc offset\n * @param {Number=} aData.hours The hours for the utc offset\n * @param {Number=} aData.minutes The minutes in the utc offset\n * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1\n */\n constructor(aData) {\n this.fromData(aData);\n }\n\n /**\n * The hours in the utc-offset\n * @type {Number}\n */\n hours = 0;\n\n /**\n * The minutes in the utc-offset\n * @type {Number}\n */\n minutes = 0;\n\n /**\n * The sign of the utc offset, 1 for positive offset, -1 for negative\n * offsets.\n * @type {Number}\n */\n factor = 1;\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"utc-offset\"\n */\n icaltype = \"utc-offset\";\n\n /**\n * Returns a clone of the utc offset object.\n *\n * @return {UtcOffset} The cloned object\n */\n clone() {\n return UtcOffset.fromSeconds(this.toSeconds());\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} aData An object with members of the utc offset\n * @param {Number=} aData.hours The hours for the utc offset\n * @param {Number=} aData.minutes The minutes in the utc offset\n * @param {Number=} aData.factor The factor for the utc-offset, either -1 or 1\n */\n fromData(aData) {\n if (aData) {\n for (let [key, value] of Object.entries(aData)) {\n this[key] = value;\n }\n }\n this._normalize();\n }\n\n /**\n * Sets up the current instance from the given seconds value. The seconds\n * value is truncated to the minute. Offsets are wrapped when the world\n * ends, the hour after UTC+14:00 is UTC-12:00.\n *\n * @param {Number} aSeconds The seconds to convert into an offset\n */\n fromSeconds(aSeconds) {\n let secs = Math.abs(aSeconds);\n\n this.factor = aSeconds < 0 ? -1 : 1;\n this.hours = trunc(secs / 3600);\n\n secs -= (this.hours * 3600);\n this.minutes = trunc(secs / 60);\n return this;\n }\n\n /**\n * Convert the current offset to a value in seconds\n *\n * @return {Number} The offset in seconds\n */\n toSeconds() {\n return this.factor * (60 * this.minutes + 3600 * this.hours);\n }\n\n /**\n * Compare this utc offset with another one.\n *\n * @param {UtcOffset} other The other offset to compare with\n * @return {Number} -1, 0 or 1 for less/equal/greater\n */\n compare(other) {\n let a = this.toSeconds();\n let b = other.toSeconds();\n return (a > b) - (b > a);\n }\n\n _normalize() {\n // Range: 97200 seconds (with 1 hour inbetween)\n let secs = this.toSeconds();\n let factor = this.factor;\n while (secs < -43200) { // = UTC-12:00\n secs += 97200;\n }\n while (secs > 50400) { // = UTC+14:00\n secs -= 97200;\n }\n\n this.fromSeconds(secs);\n\n // Avoid changing the factor when on zero seconds\n if (secs == 0) {\n this.factor = factor;\n }\n }\n\n /**\n * The iCalendar string representation of this utc-offset.\n * @return {String}\n */\n toICALString() {\n return design.icalendar.value['utc-offset'].toICAL(this.toString());\n }\n\n /**\n * The string representation of this utc-offset.\n * @return {String}\n */\n toString() {\n return (this.factor == 1 ? \"+\" : \"-\") + pad2(this.hours) + ':' + pad2(this.minutes);\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Describes a vCard time, which has slight differences to the ICAL.Time.\n * Properties can be null if not specified, for example for dates with\n * reduced accuracy or truncation.\n *\n * Note that currently not all methods are correctly re-implemented for\n * VCardTime. For example, comparison will have undefined results when some\n * members are null.\n *\n * Also, normalization is not yet implemented for this class!\n *\n * @memberof ICAL\n * @extends {Time}\n */\nclass VCardTime extends Time {\n /**\n * Returns a new ICAL.VCardTime instance from a date and/or time string.\n *\n * @param {String} aValue The string to create from\n * @param {String} aIcalType The type for this instance, e.g. date-and-or-time\n * @return {VCardTime} The date/time instance\n */\n static fromDateAndOrTimeString(aValue, aIcalType) {\n function part(v, s, e) {\n return v ? strictParseInt(v.slice(s, s + e)) : null;\n }\n let parts = aValue.split('T');\n let dt = parts[0], tmz = parts[1];\n let splitzone = tmz ? design.vcard.value.time._splitZone(tmz) : [];\n let zone = splitzone[0], tm = splitzone[1];\n\n let dtlen = dt ? dt.length : 0;\n let tmlen = tm ? tm.length : 0;\n\n let hasDashDate = dt && dt[0] == '-' && dt[1] == '-';\n let hasDashTime = tm && tm[0] == '-';\n\n let o = {\n year: hasDashDate ? null : part(dt, 0, 4),\n month: hasDashDate && (dtlen == 4 || dtlen == 7) ? part(dt, 2, 2) : dtlen == 7 ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 5, 2) : null,\n day: dtlen == 5 ? part(dt, 3, 2) : dtlen == 7 && hasDashDate ? part(dt, 5, 2) : dtlen == 10 ? part(dt, 8, 2) : null,\n\n hour: hasDashTime ? null : part(tm, 0, 2),\n minute: hasDashTime && tmlen == 3 ? part(tm, 1, 2) : tmlen > 4 ? hasDashTime ? part(tm, 1, 2) : part(tm, 3, 2) : null,\n second: tmlen == 4 ? part(tm, 2, 2) : tmlen == 6 ? part(tm, 4, 2) : tmlen == 8 ? part(tm, 6, 2) : null\n };\n\n if (zone == 'Z') {\n zone = Timezone.utcTimezone;\n } else if (zone && zone[3] == ':') {\n zone = UtcOffset.fromString(zone);\n } else {\n zone = null;\n }\n\n return new VCardTime(o, zone, aIcalType);\n }\n\n\n /**\n * Creates a new ICAL.VCardTime instance.\n *\n * @param {Object} data The data for the time instance\n * @param {Number=} data.year The year for this date\n * @param {Number=} data.month The month for this date\n * @param {Number=} data.day The day for this date\n * @param {Number=} data.hour The hour for this date\n * @param {Number=} data.minute The minute for this date\n * @param {Number=} data.second The second for this date\n * @param {Timezone|UtcOffset} zone The timezone to use\n * @param {String} icaltype The type for this date/time object\n */\n constructor(data, zone, icaltype) {\n super(data, zone);\n this.icaltype = icaltype || \"date-and-or-time\";\n }\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"vcardtime\"\n */\n icalclass = \"vcardtime\";\n\n /**\n * The type name, to be used in the jCal object.\n * @type {String}\n * @default \"date-and-or-time\"\n */\n icaltype = \"date-and-or-time\";\n\n /**\n * Returns a clone of the vcard date/time object.\n *\n * @return {VCardTime} The cloned object\n */\n clone() {\n return new VCardTime(this._time, this.zone, this.icaltype);\n }\n\n _normalize() {\n return this;\n }\n\n /**\n * @inheritdoc\n */\n utcOffset() {\n if (this.zone instanceof UtcOffset) {\n return this.zone.toSeconds();\n } else {\n return Time.prototype.utcOffset.apply(this, arguments);\n }\n }\n\n /**\n * Returns an RFC 6350 compliant representation of this object.\n *\n * @return {String} vcard date/time string\n */\n toICALString() {\n return design.vcard.value[this.icaltype].toICAL(this.toString());\n }\n\n /**\n * The string representation of this date/time, in jCard form\n * (including : and - separators).\n * @return {String}\n */\n toString() {\n let y = this.year, m = this.month, d = this.day;\n let h = this.hour, mm = this.minute, s = this.second;\n\n let hasYear = y !== null, hasMonth = m !== null, hasDay = d !== null;\n let hasHour = h !== null, hasMinute = mm !== null, hasSecond = s !== null;\n\n let datepart = (hasYear ? pad2(y) + (hasMonth || hasDay ? '-' : '') : (hasMonth || hasDay ? '--' : '')) +\n (hasMonth ? pad2(m) : '') +\n (hasDay ? '-' + pad2(d) : '');\n let timepart = (hasHour ? pad2(h) : '-') + (hasHour && hasMinute ? ':' : '') +\n (hasMinute ? pad2(mm) : '') + (!hasHour && !hasMinute ? '-' : '') +\n (hasMinute && hasSecond ? ':' : '') +\n (hasSecond ? pad2(s) : '');\n\n let zone;\n if (this.zone === Timezone.utcTimezone) {\n zone = 'Z';\n } else if (this.zone instanceof UtcOffset) {\n zone = this.zone.toString();\n } else if (this.zone === Timezone.localTimezone) {\n zone = '';\n } else if (this.zone instanceof Timezone) {\n let offset = UtcOffset.fromSeconds(this.zone.utcOffset(this));\n zone = offset.toString();\n } else {\n zone = '';\n }\n\n switch (this.icaltype) {\n case \"time\":\n return timepart + zone;\n case \"date-and-or-time\":\n case \"date-time\":\n return datepart + (timepart == '--' ? '' : 'T' + timepart + zone);\n case \"date\":\n return datepart;\n }\n return null;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n */\n\n/**\n * An iterator for a single recurrence rule. This class usually doesn't have to be instanciated\n * directly, the convenience method {@link ICAL.Recur#iterator} can be used.\n *\n * @memberof ICAL\n */\nclass RecurIterator {\n static _indexMap = {\n \"BYSECOND\": 0,\n \"BYMINUTE\": 1,\n \"BYHOUR\": 2,\n \"BYDAY\": 3,\n \"BYMONTHDAY\": 4,\n \"BYYEARDAY\": 5,\n \"BYWEEKNO\": 6,\n \"BYMONTH\": 7,\n \"BYSETPOS\": 8\n };\n\n static _expandMap = {\n \"SECONDLY\": [1, 1, 1, 1, 1, 1, 1, 1],\n \"MINUTELY\": [2, 1, 1, 1, 1, 1, 1, 1],\n \"HOURLY\": [2, 2, 1, 1, 1, 1, 1, 1],\n \"DAILY\": [2, 2, 2, 1, 1, 1, 1, 1],\n \"WEEKLY\": [2, 2, 2, 2, 3, 3, 1, 1],\n \"MONTHLY\": [2, 2, 2, 2, 2, 3, 3, 1],\n \"YEARLY\": [2, 2, 2, 2, 2, 2, 2, 2]\n };\n\n static UNKNOWN = 0;\n static CONTRACT = 1;\n static EXPAND = 2;\n static ILLEGAL = 3;\n\n /**\n * Creates a new ICAL.RecurIterator instance. The options object may contain additional members\n * when resuming iteration from a previous run.\n *\n * @param {Object} options The iterator options\n * @param {Recur} options.rule The rule to iterate.\n * @param {Time} options.dtstart The start date of the event.\n * @param {Boolean=} options.initialized When true, assume that options are\n * from a previously constructed iterator. Initialization will not be\n * repeated.\n */\n constructor(options) {\n this.fromData(options);\n }\n\n /**\n * True when iteration is finished.\n * @type {Boolean}\n */\n completed = false;\n\n /**\n * The rule that is being iterated\n * @type {Recur}\n */\n rule = null;\n\n /**\n * The start date of the event being iterated.\n * @type {Time}\n */\n dtstart = null;\n\n /**\n * The last occurrence that was returned from the\n * {@link RecurIterator#next} method.\n * @type {Time}\n */\n last = null;\n\n /**\n * The sequence number from the occurrence\n * @type {Number}\n */\n occurrence_number = 0;\n\n /**\n * The indices used for the {@link ICAL.RecurIterator#by_data} object.\n * @type {Object}\n * @private\n */\n by_indices = null;\n\n /**\n * If true, the iterator has already been initialized\n * @type {Boolean}\n * @private\n */\n initialized = false;\n\n /**\n * The initializd by-data.\n * @type {Object}\n * @private\n */\n by_data = null;\n\n /**\n * The expanded yeardays\n * @type {Array}\n * @private\n */\n days = null;\n\n /**\n * The index in the {@link ICAL.RecurIterator#days} array.\n * @type {Number}\n * @private\n */\n days_index = 0;\n\n /**\n * Initialize the recurrence iterator from the passed data object. This\n * method is usually not called directly, you can initialize the iterator\n * through the constructor.\n *\n * @param {Object} options The iterator options\n * @param {Recur} options.rule The rule to iterate.\n * @param {Time} options.dtstart The start date of the event.\n * @param {Boolean=} options.initialized When true, assume that options are\n * from a previously constructed iterator. Initialization will not be\n * repeated.\n */\n fromData(options) {\n this.rule = formatClassType(options.rule, Recur);\n\n if (!this.rule) {\n throw new Error('iterator requires a (ICAL.Recur) rule');\n }\n\n this.dtstart = formatClassType(options.dtstart, Time);\n\n if (!this.dtstart) {\n throw new Error('iterator requires a (ICAL.Time) dtstart');\n }\n\n if (options.by_data) {\n this.by_data = options.by_data;\n } else {\n this.by_data = clone(this.rule.parts, true);\n }\n\n if (options.occurrence_number)\n this.occurrence_number = options.occurrence_number;\n\n this.days = options.days || [];\n if (options.last) {\n this.last = formatClassType(options.last, Time);\n }\n\n this.by_indices = options.by_indices;\n\n if (!this.by_indices) {\n this.by_indices = {\n \"BYSECOND\": 0,\n \"BYMINUTE\": 0,\n \"BYHOUR\": 0,\n \"BYDAY\": 0,\n \"BYMONTH\": 0,\n \"BYWEEKNO\": 0,\n \"BYMONTHDAY\": 0\n };\n }\n\n this.initialized = options.initialized || false;\n\n if (!this.initialized) {\n try {\n this.init();\n } catch (e) {\n if (e instanceof InvalidRecurrenceRuleError) {\n // Init may error if there are no possible recurrence instances from\n // the rule, but we don't want to bubble this error up. Instead, we\n // create an empty iterator.\n this.completed = true;\n } else {\n // Propagate other errors to consumers.\n throw e;\n }\n }\n }\n }\n\n /**\n * Initialize the iterator\n * @private\n */\n init() {\n this.initialized = true;\n this.last = this.dtstart.clone();\n let parts = this.by_data;\n\n if (\"BYDAY\" in parts) {\n // libical does this earlier when the rule is loaded, but we postpone to\n // now so we can preserve the original order.\n this.sort_byday_rules(parts.BYDAY);\n }\n\n // The BYYEARDAY may only appear with BYDAY\n if (\"BYYEARDAY\" in parts) {\n if (\"BYMONTH\" in parts || \"BYWEEKNO\" in parts ||\n \"BYMONTHDAY\" in parts) {\n throw new Error(\"Invalid BYYEARDAY rule\");\n }\n }\n\n // BYWEEKNO and BYMONTHDAY rule parts may not both appear\n if (\"BYWEEKNO\" in parts && \"BYMONTHDAY\" in parts) {\n throw new Error(\"BYWEEKNO does not fit to BYMONTHDAY\");\n }\n\n // For MONTHLY recurrences (FREQ=MONTHLY) neither BYYEARDAY nor\n // BYWEEKNO may appear.\n if (this.rule.freq == \"MONTHLY\" &&\n (\"BYYEARDAY\" in parts || \"BYWEEKNO\" in parts)) {\n throw new Error(\"For MONTHLY recurrences neither BYYEARDAY nor BYWEEKNO may appear\");\n }\n\n // For WEEKLY recurrences (FREQ=WEEKLY) neither BYMONTHDAY nor\n // BYYEARDAY may appear.\n if (this.rule.freq == \"WEEKLY\" &&\n (\"BYYEARDAY\" in parts || \"BYMONTHDAY\" in parts)) {\n throw new Error(\"For WEEKLY recurrences neither BYMONTHDAY nor BYYEARDAY may appear\");\n }\n\n // BYYEARDAY may only appear in YEARLY rules\n if (this.rule.freq != \"YEARLY\" && \"BYYEARDAY\" in parts) {\n throw new Error(\"BYYEARDAY may only appear in YEARLY rules\");\n }\n\n this.last.second = this.setup_defaults(\"BYSECOND\", \"SECONDLY\", this.dtstart.second);\n this.last.minute = this.setup_defaults(\"BYMINUTE\", \"MINUTELY\", this.dtstart.minute);\n this.last.hour = this.setup_defaults(\"BYHOUR\", \"HOURLY\", this.dtstart.hour);\n this.last.day = this.setup_defaults(\"BYMONTHDAY\", \"DAILY\", this.dtstart.day);\n this.last.month = this.setup_defaults(\"BYMONTH\", \"MONTHLY\", this.dtstart.month);\n\n if (this.rule.freq == \"WEEKLY\") {\n if (\"BYDAY\" in parts) {\n let [, dow] = this.ruleDayOfWeek(parts.BYDAY[0], this.rule.wkst);\n let wkdy = dow - this.last.dayOfWeek(this.rule.wkst);\n if ((this.last.dayOfWeek(this.rule.wkst) < dow && wkdy >= 0) || wkdy < 0) {\n // Initial time is after first day of BYDAY data\n this.last.day += wkdy;\n }\n } else {\n let dayName = Recur.numericDayToIcalDay(this.dtstart.dayOfWeek());\n parts.BYDAY = [dayName];\n }\n }\n\n if (this.rule.freq == \"YEARLY\") {\n // Some yearly recurrence rules may be specific enough to not actually\n // occur on a yearly basis, e.g. the 29th day of February or the fifth\n // Monday of a given month. The standard isn't clear on the intended\n // behavior in these cases, but `libical` at least will iterate until it\n // finds a matching year.\n // CAREFUL: Some rules may specify an occurrence that can never happen,\n // e.g. the first Monday of April so long as it falls on the 15th\n // through the 21st. Detecting these is non-trivial, so ensure that we\n // stop iterating at some point.\n const untilYear = this.rule.until ? this.rule.until.year : 20000;\n while (this.last.year <= untilYear) {\n this.expand_year_days(this.last.year);\n if (this.days.length > 0) {\n break;\n }\n this.increment_year(this.rule.interval);\n }\n\n if (this.days.length == 0) {\n throw new InvalidRecurrenceRuleError();\n }\n\n // If there's no occurrence in this year, try the following years. This\n // would only happen looking for day 366 or -366.\n if (!this._nextByYearDay() && !this.next_year() && !this.next_year() && !this.next_year()) {\n // This should not be possible, but just in case it is, stop.\n throw new InvalidRecurrenceRuleError();\n }\n }\n\n if (this.rule.freq == \"MONTHLY\") {\n if (this.has_by_data(\"BYDAY\")) {\n let tempLast = null;\n let initLast = this.last.clone();\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n\n // Check every weekday in BYDAY with relative dow and pos.\n for (let bydow of this.by_data.BYDAY) {\n this.last = initLast.clone();\n let [pos, dow] = this.ruleDayOfWeek(bydow);\n let dayOfMonth = this.last.nthWeekDay(dow, pos);\n\n // If |pos| >= 6, the byday is invalid for a monthly rule.\n if (pos >= 6 || pos <= -6) {\n throw new Error(\"Malformed values in BYDAY part\");\n }\n\n // If a Byday with pos=+/-5 is not in the current month it\n // must be searched in the next months.\n if (dayOfMonth > daysInMonth || dayOfMonth <= 0) {\n // Skip if we have already found a \"last\" in this month.\n if (tempLast && tempLast.month == initLast.month) {\n continue;\n }\n while (dayOfMonth > daysInMonth || dayOfMonth <= 0) {\n this.increment_month();\n daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n dayOfMonth = this.last.nthWeekDay(dow, pos);\n }\n }\n\n this.last.day = dayOfMonth;\n if (!tempLast || this.last.compare(tempLast) < 0) {\n tempLast = this.last.clone();\n }\n }\n this.last = tempLast.clone();\n\n //XXX: This feels like a hack, but we need to initialize\n // the BYMONTHDAY case correctly and byDayAndMonthDay handles\n // this case. It accepts a special flag which will avoid incrementing\n // the initial value without the flag days that match the start time\n // would be missed.\n if (this.has_by_data('BYMONTHDAY')) {\n this._byDayAndMonthDay(true);\n }\n\n if (this.last.day > daysInMonth || this.last.day == 0) {\n throw new Error(\"Malformed values in BYDAY part\");\n }\n } else if (this.has_by_data(\"BYMONTHDAY\")) {\n // Change the day value so that normalisation won't change the month.\n this.last.day = 1;\n\n // Get a sorted list of days in the starting month that match the rule.\n let normalized = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n ).filter(d => d >= this.last.day);\n\n if (normalized.length) {\n // There's at least one valid day, use it.\n this.last.day = normalized[0];\n this.by_data.BYMONTHDAY = normalized;\n } else {\n // There's no occurrence in this month, find the next valid month.\n // The longest possible sequence of skipped months is February-April-June,\n // so we might need to call next_month up to three times.\n if (!this.next_month() && !this.next_month() && !this.next_month()) {\n throw new InvalidRecurrenceRuleError();\n }\n }\n }\n }\n }\n\n /**\n * Retrieve the next occurrence from the iterator.\n * @return {Time}\n */\n next(again = false) {\n let before = (this.last ? this.last.clone() : null);\n\n if ((this.rule.count && this.occurrence_number >= this.rule.count) ||\n (this.rule.until && this.last.compare(this.rule.until) > 0)) {\n this.completed = true;\n }\n\n if (this.completed) {\n return null;\n }\n\n if (this.occurrence_number == 0 && this.last.compare(this.dtstart) >= 0) {\n // First of all, give the instance that was initialized\n this.occurrence_number++;\n return this.last;\n }\n\n let valid;\n let invalid_count = 0;\n do {\n valid = 1;\n\n switch (this.rule.freq) {\n case \"SECONDLY\":\n this.next_second();\n break;\n case \"MINUTELY\":\n this.next_minute();\n break;\n case \"HOURLY\":\n this.next_hour();\n break;\n case \"DAILY\":\n this.next_day();\n break;\n case \"WEEKLY\":\n this.next_week();\n break;\n case \"MONTHLY\":\n valid = this.next_month();\n if (valid) {\n invalid_count = 0;\n } else if (++invalid_count == 336) {\n // We've been through all 91 month variations and not found a recurrence. Stop.\n // (12 months and 29-day February × 7 starting days.)\n this.completed = true;\n return null;\n }\n break;\n case \"YEARLY\":\n valid = this.next_year();\n if (valid) {\n invalid_count = 0;\n } else if (++invalid_count == 28) {\n // We've been through all 14 year variations and not found a recurrence. Stop.\n // (365-day and 366-day years × 7 starting days.)\n this.completed = true;\n return null;\n }\n break;\n\n default:\n return null;\n }\n } while (!this.check_contracting_rules() ||\n this.last.compare(this.dtstart) < 0 ||\n !valid);\n\n if (this.last.compare(before) == 0) {\n if (again) {\n throw new Error(\"Same occurrence found twice, protecting you from death by recursion\");\n }\n this.next(true);\n }\n\n if (this.rule.until && this.last.compare(this.rule.until) > 0) {\n this.completed = true;\n return null;\n } else {\n this.occurrence_number++;\n return this.last;\n }\n }\n\n next_second() {\n return this.next_generic(\"BYSECOND\", \"SECONDLY\", \"second\", \"minute\");\n }\n\n increment_second(inc) {\n return this.increment_generic(inc, \"second\", 60, \"minute\");\n }\n\n next_minute() {\n return this.next_generic(\"BYMINUTE\", \"MINUTELY\",\n \"minute\", \"hour\", \"next_second\");\n }\n\n increment_minute(inc) {\n return this.increment_generic(inc, \"minute\", 60, \"hour\");\n }\n\n next_hour() {\n return this.next_generic(\"BYHOUR\", \"HOURLY\", \"hour\",\n \"monthday\", \"next_minute\");\n }\n\n increment_hour(inc) {\n this.increment_generic(inc, \"hour\", 24, \"monthday\");\n }\n\n next_day() {\n let this_freq = (this.rule.freq == \"DAILY\");\n\n if (this.next_hour() == 0) {\n return 0;\n }\n\n if (this_freq) {\n this.increment_monthday(this.rule.interval);\n } else {\n this.increment_monthday(1);\n }\n\n return 0;\n }\n\n next_week() {\n let end_of_data = 0;\n\n if (this.next_weekday_by_week() == 0) {\n return end_of_data;\n }\n\n if (this.has_by_data(\"BYWEEKNO\")) {\n this.by_indices.BYWEEKNO++;\n\n if (this.by_indices.BYWEEKNO == this.by_data.BYWEEKNO.length) {\n this.by_indices.BYWEEKNO = 0;\n end_of_data = 1;\n }\n\n // HACK should be first month of the year\n this.last.month = 1;\n this.last.day = 1;\n\n let week_no = this.by_data.BYWEEKNO[this.by_indices.BYWEEKNO];\n\n this.last.day += 7 * week_no;\n\n if (end_of_data) {\n this.increment_year(1);\n }\n } else {\n // Jump to the next week\n this.increment_monthday(7 * this.rule.interval);\n }\n\n return end_of_data;\n }\n\n /**\n * Normalize each by day rule for a given year/month.\n * Takes into account ordering and negative rules\n *\n * @private\n * @param {Number} year Current year.\n * @param {Number} month Current month.\n * @param {Array} rules Array of rules.\n *\n * @return {Array} sorted and normalized rules.\n * Negative rules will be expanded to their\n * correct positive values for easier processing.\n */\n normalizeByMonthDayRules(year, month, rules) {\n let daysInMonth = Time.daysInMonth(month, year);\n\n // XXX: This is probably bad for performance to allocate\n // a new array for each month we scan, if possible\n // we should try to optimize this...\n let newRules = [];\n\n let ruleIdx = 0;\n let len = rules.length;\n let rule;\n\n for (; ruleIdx < len; ruleIdx++) {\n rule = parseInt(rules[ruleIdx], 10);\n if (isNaN(rule)) {\n throw new Error('Invalid BYMONTHDAY value');\n }\n\n // if this rule falls outside of given\n // month discard it.\n if (Math.abs(rule) > daysInMonth) {\n continue;\n }\n\n // negative case\n if (rule < 0) {\n // we add (not subtract it is a negative number)\n // one from the rule because 1 === last day of month\n rule = daysInMonth + (rule + 1);\n } else if (rule === 0) {\n // skip zero: it is invalid.\n continue;\n }\n\n // only add unique items...\n if (newRules.indexOf(rule) === -1) {\n newRules.push(rule);\n }\n\n }\n\n // unique and sort\n return newRules.sort(function(a, b) { return a - b; });\n }\n\n /**\n * NOTES:\n * We are given a list of dates in the month (BYMONTHDAY) (23, etc..)\n * Also we are given a list of days (BYDAY) (MO, 2SU, etc..) when\n * both conditions match a given date (this.last.day) iteration stops.\n *\n * @private\n * @param {Boolean=} isInit When given true will not increment the\n * current day (this.last).\n */\n _byDayAndMonthDay(isInit) {\n let byMonthDay; // setup in initMonth\n let byDay = this.by_data.BYDAY;\n\n let date;\n let dateIdx = 0;\n let dateLen; // setup in initMonth\n let dayLen = byDay.length;\n\n // we are not valid by default\n let dataIsValid = 0;\n\n let daysInMonth;\n let self = this;\n // we need a copy of this, because a DateTime gets normalized\n // automatically if the day is out of range. At some points we\n // set the last day to 0 to start counting.\n let lastDay = this.last.day;\n\n function initMonth() {\n daysInMonth = Time.daysInMonth(\n self.last.month, self.last.year\n );\n\n byMonthDay = self.normalizeByMonthDayRules(\n self.last.year,\n self.last.month,\n self.by_data.BYMONTHDAY\n );\n\n dateLen = byMonthDay.length;\n\n // For the case of more than one occurrence in one month\n // we have to be sure to start searching after the last\n // found date or at the last BYMONTHDAY, unless we are\n // initializing the iterator because in this case we have\n // to consider the last found date too.\n while (byMonthDay[dateIdx] <= lastDay &&\n !(isInit && byMonthDay[dateIdx] == lastDay) &&\n dateIdx < dateLen - 1) {\n dateIdx++;\n }\n }\n\n function nextMonth() {\n // since the day is incremented at the start\n // of the loop below, we need to start at 0\n lastDay = 0;\n self.increment_month();\n dateIdx = 0;\n initMonth();\n }\n\n initMonth();\n\n // should come after initMonth\n if (isInit) {\n lastDay -= 1;\n }\n\n // Use a counter to avoid an infinite loop with malformed rules.\n // Stop checking after 4 years so we consider also a leap year.\n let monthsCounter = 48;\n\n while (!dataIsValid && monthsCounter) {\n monthsCounter--;\n // increment the current date. This is really\n // important otherwise we may fall into the infinite\n // loop trap. The initial date takes care of the case\n // where the current date is the date we are looking\n // for.\n date = lastDay + 1;\n\n if (date > daysInMonth) {\n nextMonth();\n continue;\n }\n\n // find next date\n let next = byMonthDay[dateIdx++];\n\n // this logic is dependent on the BYMONTHDAYS\n // being in order (which is done by #normalizeByMonthDayRules)\n if (next >= date) {\n // if the next month day is in the future jump to it.\n lastDay = next;\n } else {\n // in this case the 'next' monthday has past\n // we must move to the month.\n nextMonth();\n continue;\n }\n\n // Now we can loop through the day rules to see\n // if one matches the current month date.\n for (let dayIdx = 0; dayIdx < dayLen; dayIdx++) {\n let parts = this.ruleDayOfWeek(byDay[dayIdx]);\n let pos = parts[0];\n let dow = parts[1];\n\n this.last.day = lastDay;\n if (this.last.isNthWeekDay(dow, pos)) {\n // when we find the valid one we can mark\n // the conditions as met and break the loop.\n // (Because we have this condition above\n // it will also break the parent loop).\n dataIsValid = 1;\n break;\n }\n }\n\n // It is completely possible that the combination\n // cannot be matched in the current month.\n // When we reach the end of possible combinations\n // in the current month we iterate to the next one.\n // since dateIdx is incremented right after getting\n // \"next\", we don't need dateLen -1 here.\n if (!dataIsValid && dateIdx === dateLen) {\n nextMonth();\n continue;\n }\n }\n\n if (monthsCounter <= 0) {\n // Checked 4 years without finding a Byday that matches\n // a Bymonthday. Maybe the rule is not correct.\n throw new Error(\"Malformed values in BYDAY combined with BYMONTHDAY parts\");\n }\n\n\n return dataIsValid;\n }\n\n next_month() {\n let data_valid = 1;\n\n if (this.next_hour() == 0) {\n return data_valid;\n }\n\n if (this.has_by_data(\"BYDAY\") && this.has_by_data(\"BYMONTHDAY\")) {\n data_valid = this._byDayAndMonthDay();\n } else if (this.has_by_data(\"BYDAY\")) {\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n let setpos = 0;\n let setpos_total = 0;\n\n if (this.has_by_data(\"BYSETPOS\")) {\n let last_day = this.last.day;\n for (let day = 1; day <= daysInMonth; day++) {\n this.last.day = day;\n if (this.is_day_in_byday(this.last)) {\n setpos_total++;\n if (day <= last_day) {\n setpos++;\n }\n }\n }\n this.last.day = last_day;\n }\n\n data_valid = 0;\n let day;\n for (day = this.last.day + 1; day <= daysInMonth; day++) {\n this.last.day = day;\n\n if (this.is_day_in_byday(this.last)) {\n if (!this.has_by_data(\"BYSETPOS\") ||\n this.check_set_position(++setpos) ||\n this.check_set_position(setpos - setpos_total - 1)) {\n\n data_valid = 1;\n break;\n }\n }\n }\n\n if (day > daysInMonth) {\n this.last.day = 1;\n this.increment_month();\n\n if (this.is_day_in_byday(this.last)) {\n if (!this.has_by_data(\"BYSETPOS\") || this.check_set_position(1)) {\n data_valid = 1;\n }\n } else {\n data_valid = 0;\n }\n }\n } else if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_indices.BYMONTHDAY++;\n\n if (this.by_indices.BYMONTHDAY >= this.by_data.BYMONTHDAY.length) {\n this.by_indices.BYMONTHDAY = 0;\n this.increment_month();\n if (this.by_indices.BYMONTHDAY >= this.by_data.BYMONTHDAY.length) {\n return 0;\n }\n }\n\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n let day = this.by_data.BYMONTHDAY[this.by_indices.BYMONTHDAY];\n\n if (day < 0) {\n day = daysInMonth + day + 1;\n }\n\n if (day > daysInMonth) {\n this.last.day = 1;\n data_valid = this.is_day_in_byday(this.last);\n } else {\n this.last.day = day;\n }\n } else {\n this.increment_month();\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n if (this.by_data.BYMONTHDAY[0] > daysInMonth) {\n data_valid = 0;\n } else {\n this.last.day = this.by_data.BYMONTHDAY[0];\n }\n }\n\n return data_valid;\n }\n\n next_weekday_by_week() {\n let end_of_data = 0;\n\n if (this.next_hour() == 0) {\n return end_of_data;\n }\n\n if (!this.has_by_data(\"BYDAY\")) {\n return 1;\n }\n\n for (;;) {\n let tt = new Time();\n this.by_indices.BYDAY++;\n\n if (this.by_indices.BYDAY == Object.keys(this.by_data.BYDAY).length) {\n this.by_indices.BYDAY = 0;\n end_of_data = 1;\n }\n\n let coded_day = this.by_data.BYDAY[this.by_indices.BYDAY];\n let parts = this.ruleDayOfWeek(coded_day);\n let dow = parts[1];\n\n dow -= this.rule.wkst;\n\n if (dow < 0) {\n dow += 7;\n }\n\n tt.year = this.last.year;\n tt.month = this.last.month;\n tt.day = this.last.day;\n\n let startOfWeek = tt.startDoyWeek(this.rule.wkst);\n\n if (dow + startOfWeek < 1) {\n // The selected date is in the previous year\n if (!end_of_data) {\n continue;\n }\n }\n\n let next = Time.fromDayOfYear(startOfWeek + dow, this.last.year);\n\n /**\n * The normalization horrors below are due to\n * the fact that when the year/month/day changes\n * it can effect the other operations that come after.\n */\n this.last.year = next.year;\n this.last.month = next.month;\n this.last.day = next.day;\n\n return end_of_data;\n }\n }\n\n next_year() {\n if (this.next_hour() == 0) {\n return 0;\n }\n\n if (this.days.length == 0 || ++this.days_index == this.days.length) {\n this.days_index = 0;\n this.increment_year(this.rule.interval);\n if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_data.BYMONTHDAY = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n );\n }\n this.expand_year_days(this.last.year);\n if (this.days.length == 0) {\n return 0;\n }\n }\n\n return this._nextByYearDay();\n }\n\n _nextByYearDay() {\n let doy = this.days[this.days_index];\n let year = this.last.year;\n\n if (Math.abs(doy) == 366 && !Time.isLeapYear(this.last.year)) {\n return 0;\n }\n\n if (doy < 1) {\n // Time.fromDayOfYear(doy, year) indexes relative to the\n // start of the given year. That is different from the\n // semantics of BYYEARDAY where negative indexes are an\n // offset from the end of the given year.\n doy += 1;\n year += 1;\n }\n let next = Time.fromDayOfYear(doy, year);\n this.last.day = next.day;\n this.last.month = next.month;\n\n return 1;\n }\n\n /**\n * @param dow (eg: '1TU', '-1MO')\n * @param {weekDay=} aWeekStart The week start weekday\n * @return [pos, numericDow] (eg: [1, 3]) numericDow is relative to aWeekStart\n */\n ruleDayOfWeek(dow, aWeekStart) {\n let matches = dow.match(/([+-]?[0-9])?(MO|TU|WE|TH|FR|SA|SU)/);\n if (matches) {\n let pos = parseInt(matches[1] || 0, 10);\n dow = Recur.icalDayToNumericDay(matches[2], aWeekStart);\n return [pos, dow];\n } else {\n return [0, 0];\n }\n }\n\n next_generic(aRuleType, aInterval, aDateAttr, aFollowingAttr, aPreviousIncr) {\n let has_by_rule = (aRuleType in this.by_data);\n let this_freq = (this.rule.freq == aInterval);\n let end_of_data = 0;\n\n if (aPreviousIncr && this[aPreviousIncr]() == 0) {\n return end_of_data;\n }\n\n if (has_by_rule) {\n this.by_indices[aRuleType]++;\n let dta = this.by_data[aRuleType];\n\n if (this.by_indices[aRuleType] == dta.length) {\n this.by_indices[aRuleType] = 0;\n end_of_data = 1;\n }\n this.last[aDateAttr] = dta[this.by_indices[aRuleType]];\n } else if (this_freq) {\n this[\"increment_\" + aDateAttr](this.rule.interval);\n }\n\n if (has_by_rule && end_of_data && this_freq) {\n this[\"increment_\" + aFollowingAttr](1);\n }\n\n return end_of_data;\n }\n\n increment_monthday(inc) {\n for (let i = 0; i < inc; i++) {\n let daysInMonth = Time.daysInMonth(this.last.month, this.last.year);\n this.last.day++;\n\n if (this.last.day > daysInMonth) {\n this.last.day -= daysInMonth;\n this.increment_month();\n }\n }\n }\n\n increment_month() {\n this.last.day = 1;\n if (this.has_by_data(\"BYMONTH\")) {\n this.by_indices.BYMONTH++;\n\n if (this.by_indices.BYMONTH == this.by_data.BYMONTH.length) {\n this.by_indices.BYMONTH = 0;\n this.increment_year(1);\n }\n\n this.last.month = this.by_data.BYMONTH[this.by_indices.BYMONTH];\n } else {\n if (this.rule.freq == \"MONTHLY\") {\n this.last.month += this.rule.interval;\n } else {\n this.last.month++;\n }\n\n this.last.month--;\n let years = trunc(this.last.month / 12);\n this.last.month %= 12;\n this.last.month++;\n\n if (years != 0) {\n this.increment_year(years);\n }\n }\n\n if (this.has_by_data(\"BYMONTHDAY\")) {\n this.by_data.BYMONTHDAY = this.normalizeByMonthDayRules(\n this.last.year,\n this.last.month,\n this.rule.parts.BYMONTHDAY\n );\n }\n }\n\n increment_year(inc) {\n // Don't jump into the next month if this.last is Feb 29.\n this.last.day = 1;\n this.last.year += inc;\n }\n\n increment_generic(inc, aDateAttr, aFactor, aNextIncrement) {\n this.last[aDateAttr] += inc;\n let nextunit = trunc(this.last[aDateAttr] / aFactor);\n this.last[aDateAttr] %= aFactor;\n if (nextunit != 0) {\n this[\"increment_\" + aNextIncrement](nextunit);\n }\n }\n\n has_by_data(aRuleType) {\n return (aRuleType in this.rule.parts);\n }\n\n expand_year_days(aYear) {\n let t = new Time();\n this.days = [];\n\n // We need our own copy with a few keys set\n let parts = {};\n let rules = [\"BYDAY\", \"BYWEEKNO\", \"BYMONTHDAY\", \"BYMONTH\", \"BYYEARDAY\"];\n for (let part of rules) {\n if (part in this.rule.parts) {\n parts[part] = this.rule.parts[part];\n }\n }\n\n if (\"BYMONTH\" in parts && \"BYWEEKNO\" in parts) {\n let valid = 1;\n let validWeeks = {};\n t.year = aYear;\n t.isDate = true;\n\n for (let monthIdx = 0; monthIdx < this.by_data.BYMONTH.length; monthIdx++) {\n let month = this.by_data.BYMONTH[monthIdx];\n t.month = month;\n t.day = 1;\n let first_week = t.weekNumber(this.rule.wkst);\n t.day = Time.daysInMonth(month, aYear);\n let last_week = t.weekNumber(this.rule.wkst);\n for (monthIdx = first_week; monthIdx < last_week; monthIdx++) {\n validWeeks[monthIdx] = 1;\n }\n }\n\n for (let weekIdx = 0; weekIdx < this.by_data.BYWEEKNO.length && valid; weekIdx++) {\n let weekno = this.by_data.BYWEEKNO[weekIdx];\n if (weekno < 52) {\n valid &= validWeeks[weekIdx];\n } else {\n valid = 0;\n }\n }\n\n if (valid) {\n delete parts.BYMONTH;\n } else {\n delete parts.BYWEEKNO;\n }\n }\n\n let partCount = Object.keys(parts).length;\n\n if (partCount == 0) {\n let t1 = this.dtstart.clone();\n t1.year = this.last.year;\n this.days.push(t1.dayOfYear());\n } else if (partCount == 1 && \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let t2 = this.dtstart.clone();\n t2.year = aYear;\n t2.month = month;\n t2.isDate = true;\n this.days.push(t2.dayOfYear());\n }\n } else if (partCount == 1 && \"BYMONTHDAY\" in parts) {\n for (let monthday of this.by_data.BYMONTHDAY) {\n let t3 = this.dtstart.clone();\n if (monthday < 0) {\n let daysInMonth = Time.daysInMonth(t3.month, aYear);\n monthday = monthday + daysInMonth + 1;\n }\n t3.day = monthday;\n t3.year = aYear;\n t3.isDate = true;\n this.days.push(t3.dayOfYear());\n }\n } else if (partCount == 2 &&\n \"BYMONTHDAY\" in parts &&\n \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let daysInMonth = Time.daysInMonth(month, aYear);\n for (let monthday of this.by_data.BYMONTHDAY) {\n if (monthday < 0) {\n monthday = monthday + daysInMonth + 1;\n }\n t.day = monthday;\n t.month = month;\n t.year = aYear;\n t.isDate = true;\n\n this.days.push(t.dayOfYear());\n }\n }\n } else if (partCount == 1 && \"BYWEEKNO\" in parts) ; else if (partCount == 2 &&\n \"BYWEEKNO\" in parts &&\n \"BYMONTHDAY\" in parts) ; else if (partCount == 1 && \"BYDAY\" in parts) {\n this.days = this.days.concat(this.expand_by_day(aYear));\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYMONTH\" in parts) {\n for (let month of this.by_data.BYMONTH) {\n let daysInMonth = Time.daysInMonth(month, aYear);\n\n t.year = aYear;\n t.month = month;\n t.day = 1;\n t.isDate = true;\n\n let first_dow = t.dayOfWeek();\n let doy_offset = t.dayOfYear() - 1;\n\n t.day = daysInMonth;\n let last_dow = t.dayOfWeek();\n\n if (this.has_by_data(\"BYSETPOS\")) {\n let by_month_day = [];\n for (let day = 1; day <= daysInMonth; day++) {\n t.day = day;\n if (this.is_day_in_byday(t)) {\n by_month_day.push(day);\n }\n }\n\n for (let spIndex = 0; spIndex < by_month_day.length; spIndex++) {\n if (this.check_set_position(spIndex + 1) ||\n this.check_set_position(spIndex - by_month_day.length)) {\n this.days.push(doy_offset + by_month_day[spIndex]);\n }\n }\n } else {\n for (let coded_day of this.by_data.BYDAY) {\n let bydayParts = this.ruleDayOfWeek(coded_day);\n let pos = bydayParts[0];\n let dow = bydayParts[1];\n let month_day;\n\n let first_matching_day = ((dow + 7 - first_dow) % 7) + 1;\n let last_matching_day = daysInMonth - ((last_dow + 7 - dow) % 7);\n\n if (pos == 0) {\n for (let day = first_matching_day; day <= daysInMonth; day += 7) {\n this.days.push(doy_offset + day);\n }\n } else if (pos > 0) {\n month_day = first_matching_day + (pos - 1) * 7;\n\n if (month_day <= daysInMonth) {\n this.days.push(doy_offset + month_day);\n }\n } else {\n month_day = last_matching_day + (pos + 1) * 7;\n\n if (month_day > 0) {\n this.days.push(doy_offset + month_day);\n }\n }\n }\n }\n }\n // Return dates in order of occurrence (1,2,3,...) instead\n // of by groups of weekdays (1,8,15,...,2,9,16,...).\n this.days.sort(function(a, b) { return a - b; }); // Comparator function allows to sort numbers.\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYMONTHDAY\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n if (this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) {\n this.days.push(day);\n }\n }\n } else if (partCount == 3 &&\n \"BYDAY\" in parts &&\n \"BYMONTHDAY\" in parts &&\n \"BYMONTH\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n\n if (this.by_data.BYMONTH.indexOf(tt.month) >= 0 &&\n this.by_data.BYMONTHDAY.indexOf(tt.day) >= 0) {\n this.days.push(day);\n }\n }\n } else if (partCount == 2 && \"BYDAY\" in parts && \"BYWEEKNO\" in parts) {\n let expandedDays = this.expand_by_day(aYear);\n\n for (let day of expandedDays) {\n let tt = Time.fromDayOfYear(day, aYear);\n let weekno = tt.weekNumber(this.rule.wkst);\n\n if (this.by_data.BYWEEKNO.indexOf(weekno)) {\n this.days.push(day);\n }\n }\n } else if (partCount == 3 &&\n \"BYDAY\" in parts &&\n \"BYWEEKNO\" in parts &&\n \"BYMONTHDAY\" in parts) ; else if (partCount == 1 && \"BYYEARDAY\" in parts) {\n this.days = this.days.concat(this.by_data.BYYEARDAY);\n } else if (partCount == 2 && \"BYYEARDAY\" in parts && \"BYDAY\" in parts) {\n let daysInYear = Time.isLeapYear(aYear) ? 366 : 365;\n let expandedDays = new Set(this.expand_by_day(aYear));\n\n for (let doy of this.by_data.BYYEARDAY) {\n if (doy < 0) {\n doy += daysInYear + 1;\n }\n\n if (expandedDays.has(doy)) {\n this.days.push(doy);\n }\n }\n } else {\n this.days = [];\n }\n\n let daysInYear = Time.isLeapYear(aYear) ? 366 : 365;\n this.days.sort((a, b) => {\n if (a < 0) a += daysInYear + 1;\n if (b < 0) b += daysInYear + 1;\n return a - b;\n });\n\n return 0;\n }\n\n expand_by_day(aYear) {\n\n let days_list = [];\n let tmp = this.last.clone();\n\n tmp.year = aYear;\n tmp.month = 1;\n tmp.day = 1;\n tmp.isDate = true;\n\n let start_dow = tmp.dayOfWeek();\n\n tmp.month = 12;\n tmp.day = 31;\n tmp.isDate = true;\n\n let end_dow = tmp.dayOfWeek();\n let end_year_day = tmp.dayOfYear();\n\n for (let day of this.by_data.BYDAY) {\n let parts = this.ruleDayOfWeek(day);\n let pos = parts[0];\n let dow = parts[1];\n\n if (pos == 0) {\n let tmp_start_doy = ((dow + 7 - start_dow) % 7) + 1;\n\n for (let doy = tmp_start_doy; doy <= end_year_day; doy += 7) {\n days_list.push(doy);\n }\n\n } else if (pos > 0) {\n let first;\n if (dow >= start_dow) {\n first = dow - start_dow + 1;\n } else {\n first = dow - start_dow + 8;\n }\n\n days_list.push(first + (pos - 1) * 7);\n } else {\n let last;\n pos = -pos;\n\n if (dow <= end_dow) {\n last = end_year_day - end_dow + dow;\n } else {\n last = end_year_day - end_dow + dow - 7;\n }\n\n days_list.push(last - (pos - 1) * 7);\n }\n }\n return days_list;\n }\n\n is_day_in_byday(tt) {\n if (this.by_data.BYDAY) {\n for (let day of this.by_data.BYDAY) {\n let parts = this.ruleDayOfWeek(day);\n let pos = parts[0];\n let dow = parts[1];\n let this_dow = tt.dayOfWeek();\n\n if ((pos == 0 && dow == this_dow) ||\n (tt.nthWeekDay(dow, pos) == tt.day)) {\n return 1;\n }\n }\n }\n\n return 0;\n }\n\n /**\n * Checks if given value is in BYSETPOS.\n *\n * @private\n * @param {Numeric} aPos position to check for.\n * @return {Boolean} false unless BYSETPOS rules exist\n * and the given value is present in rules.\n */\n check_set_position(aPos) {\n if (this.has_by_data('BYSETPOS')) {\n let idx = this.by_data.BYSETPOS.indexOf(aPos);\n // negative numbers are not false-y\n return idx !== -1;\n }\n return false;\n }\n\n sort_byday_rules(aRules) {\n for (let i = 0; i < aRules.length; i++) {\n for (let j = 0; j < i; j++) {\n let one = this.ruleDayOfWeek(aRules[j], this.rule.wkst)[1];\n let two = this.ruleDayOfWeek(aRules[i], this.rule.wkst)[1];\n\n if (one > two) {\n let tmp = aRules[i];\n aRules[i] = aRules[j];\n aRules[j] = tmp;\n }\n }\n }\n }\n\n check_contract_restriction(aRuleType, v) {\n let indexMapValue = RecurIterator._indexMap[aRuleType];\n let ruleMapValue = RecurIterator._expandMap[this.rule.freq][indexMapValue];\n let pass = false;\n\n if (aRuleType in this.by_data &&\n ruleMapValue == RecurIterator.CONTRACT) {\n\n let ruleType = this.by_data[aRuleType];\n\n for (let bydata of ruleType) {\n if (bydata == v) {\n pass = true;\n break;\n }\n }\n } else {\n // Not a contracting byrule or has no data, test passes\n pass = true;\n }\n return pass;\n }\n\n check_contracting_rules() {\n let dow = this.last.dayOfWeek();\n let weekNo = this.last.weekNumber(this.rule.wkst);\n let doy = this.last.dayOfYear();\n\n return (this.check_contract_restriction(\"BYSECOND\", this.last.second) &&\n this.check_contract_restriction(\"BYMINUTE\", this.last.minute) &&\n this.check_contract_restriction(\"BYHOUR\", this.last.hour) &&\n this.check_contract_restriction(\"BYDAY\", Recur.numericDayToIcalDay(dow)) &&\n this.check_contract_restriction(\"BYWEEKNO\", weekNo) &&\n this.check_contract_restriction(\"BYMONTHDAY\", this.last.day) &&\n this.check_contract_restriction(\"BYMONTH\", this.last.month) &&\n this.check_contract_restriction(\"BYYEARDAY\", doy));\n }\n\n setup_defaults(aRuleType, req, deftime) {\n let indexMapValue = RecurIterator._indexMap[aRuleType];\n let ruleMapValue = RecurIterator._expandMap[this.rule.freq][indexMapValue];\n\n if (ruleMapValue != RecurIterator.CONTRACT) {\n if (!(aRuleType in this.by_data)) {\n this.by_data[aRuleType] = [deftime];\n }\n if (this.rule.freq != req) {\n return this.by_data[aRuleType][0];\n }\n }\n return deftime;\n }\n\n /**\n * Convert iterator into a serialize-able object. Will preserve current\n * iteration sequence to ensure the seamless continuation of the recurrence\n * rule.\n * @return {Object}\n */\n toJSON() {\n let result = Object.create(null);\n\n result.initialized = this.initialized;\n result.rule = this.rule.toJSON();\n result.dtstart = this.dtstart.toJSON();\n result.by_data = this.by_data;\n result.days = this.days;\n result.last = this.last.toJSON();\n result.by_indices = this.by_indices;\n result.occurrence_number = this.occurrence_number;\n\n return result;\n }\n}\n\n/**\n * An error indicating that a recurrence rule is invalid and produces no\n * occurrences.\n *\n * @extends {Error}\n * @class\n */\nclass InvalidRecurrenceRuleError extends Error {\n constructor() {\n super(\"Recurrence rule has no valid occurrences\");\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").weekDay} weekDay\n * Imports the 'weekDay' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").frequencyValues} frequencyValues\n * Imports the 'frequencyValues' type from the \"types.js\" module\n */\n\nconst VALID_DAY_NAMES = /^(SU|MO|TU|WE|TH|FR|SA)$/;\nconst VALID_BYDAY_PART = /^([+-])?(5[0-3]|[1-4][0-9]|[1-9])?(SU|MO|TU|WE|TH|FR|SA)$/;\nconst DOW_MAP = {\n SU: Time.SUNDAY,\n MO: Time.MONDAY,\n TU: Time.TUESDAY,\n WE: Time.WEDNESDAY,\n TH: Time.THURSDAY,\n FR: Time.FRIDAY,\n SA: Time.SATURDAY\n};\n\nconst REVERSE_DOW_MAP = Object.fromEntries(Object.entries(DOW_MAP).map(entry => entry.reverse()));\n\nconst ALLOWED_FREQ = ['SECONDLY', 'MINUTELY', 'HOURLY',\n 'DAILY', 'WEEKLY', 'MONTHLY', 'YEARLY'];\n\n/**\n * This class represents the \"recur\" value type, used for example by RRULE. It provides methods to\n * calculate occurrences among others.\n *\n * @memberof ICAL\n */\nclass Recur {\n /**\n * Creates a new {@link ICAL.Recur} instance from the passed string.\n *\n * @param {String} string The string to parse\n * @return {Recur} The created recurrence instance\n */\n static fromString(string) {\n let data = this._stringToData(string, false);\n return new Recur(data);\n }\n\n /**\n * Creates a new {@link ICAL.Recur} instance using members from the passed\n * data object.\n *\n * @param {Object} aData An object with members of the recurrence\n * @param {frequencyValues=} aData.freq The frequency value\n * @param {Number=} aData.interval The INTERVAL value\n * @param {weekDay=} aData.wkst The week start value\n * @param {Time=} aData.until The end of the recurrence set\n * @param {Number=} aData.count The number of occurrences\n * @param {Array.=} aData.bysecond The seconds for the BYSECOND part\n * @param {Array.=} aData.byminute The minutes for the BYMINUTE part\n * @param {Array.=} aData.byhour The hours for the BYHOUR part\n * @param {Array.=} aData.byday The BYDAY values\n * @param {Array.=} aData.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} aData.byyearday The days for the BYYEARDAY part\n * @param {Array.=} aData.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} aData.bymonth The month for the BYMONTH part\n * @param {Array.=} aData.bysetpos The positionals for the BYSETPOS part\n */\n static fromData(aData) {\n return new Recur(aData);\n }\n\n /**\n * Converts a recurrence string to a data object, suitable for the fromData\n * method.\n *\n * @private\n * @param {String} string The string to parse\n * @param {Boolean} fmtIcal If true, the string is considered to be an\n * iCalendar string\n * @return {Recur} The recurrence instance\n */\n static _stringToData(string, fmtIcal) {\n let dict = Object.create(null);\n\n // split is slower in FF but fast enough.\n // v8 however this is faster then manual split?\n let values = string.split(';');\n let len = values.length;\n\n for (let i = 0; i < len; i++) {\n let parts = values[i].split('=');\n let ucname = parts[0].toUpperCase();\n let lcname = parts[0].toLowerCase();\n let name = (fmtIcal ? lcname : ucname);\n let value = parts[1];\n\n if (ucname in partDesign) {\n let partArr = value.split(',');\n let partSet = new Set();\n\n for (let part of partArr) {\n partSet.add(partDesign[ucname](part));\n }\n partArr = [...partSet];\n\n dict[name] = (partArr.length == 1 ? partArr[0] : partArr);\n } else if (ucname in optionDesign) {\n optionDesign[ucname](value, dict, fmtIcal);\n } else {\n // Don't swallow unknown values. Just set them as they are.\n dict[lcname] = value;\n }\n }\n\n return dict;\n }\n\n /**\n * Convert an ical representation of a day (SU, MO, etc..)\n * into a numeric value of that day.\n *\n * @param {String} string The iCalendar day name\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {Number} Numeric value of given day\n */\n static icalDayToNumericDay(string, aWeekStart) {\n //XXX: this is here so we can deal\n // with possibly invalid string values.\n let firstDow = aWeekStart || Time.SUNDAY;\n return ((DOW_MAP[string] - firstDow + 7) % 7) + 1;\n }\n\n /**\n * Convert a numeric day value into its ical representation (SU, MO, etc..)\n *\n * @param {Number} num Numeric value of given day\n * @param {weekDay=} aWeekStart\n * The week start weekday, defaults to SUNDAY\n * @return {String} The ICAL day value, e.g SU,MO,...\n */\n static numericDayToIcalDay(num, aWeekStart) {\n //XXX: this is here so we can deal with possibly invalid number values.\n // Also, this allows consistent mapping between day numbers and day\n // names for external users.\n let firstDow = aWeekStart || Time.SUNDAY;\n let dow = (num + firstDow - Time.SUNDAY);\n if (dow > 7) {\n dow -= 7;\n }\n return REVERSE_DOW_MAP[dow];\n }\n\n /**\n * Create a new instance of the Recur class.\n *\n * @param {Object} data An object with members of the recurrence\n * @param {frequencyValues=} data.freq The frequency value\n * @param {Number=} data.interval The INTERVAL value\n * @param {weekDay=} data.wkst The week start value\n * @param {Time=} data.until The end of the recurrence set\n * @param {Number=} data.count The number of occurrences\n * @param {Array.=} data.bysecond The seconds for the BYSECOND part\n * @param {Array.=} data.byminute The minutes for the BYMINUTE part\n * @param {Array.=} data.byhour The hours for the BYHOUR part\n * @param {Array.=} data.byday The BYDAY values\n * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} data.byyearday The days for the BYYEARDAY part\n * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} data.bymonth The month for the BYMONTH part\n * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part\n */\n constructor(data) {\n this.wrappedJSObject = this;\n this.parts = {};\n\n if (data && typeof(data) === 'object') {\n this.fromData(data);\n }\n }\n\n /**\n * An object holding the BY-parts of the recurrence rule\n * @memberof ICAL.Recur\n * @typedef {Object} byParts\n * @property {Array.=} BYSECOND The seconds for the BYSECOND part\n * @property {Array.=} BYMINUTE The minutes for the BYMINUTE part\n * @property {Array.=} BYHOUR The hours for the BYHOUR part\n * @property {Array.=} BYDAY The BYDAY values\n * @property {Array.=} BYMONTHDAY The days for the BYMONTHDAY part\n * @property {Array.=} BYYEARDAY The days for the BYYEARDAY part\n * @property {Array.=} BYWEEKNO The weeks for the BYWEEKNO part\n * @property {Array.=} BYMONTH The month for the BYMONTH part\n * @property {Array.=} BYSETPOS The positionals for the BYSETPOS part\n */\n\n /**\n * An object holding the BY-parts of the recurrence rule\n * @type {byParts}\n */\n parts = null;\n\n /**\n * The interval value for the recurrence rule.\n * @type {Number}\n */\n interval = 1;\n\n /**\n * The week start day\n *\n * @type {weekDay}\n * @default ICAL.Time.MONDAY\n */\n wkst = Time.MONDAY;\n\n /**\n * The end of the recurrence\n * @type {?Time}\n */\n until = null;\n\n /**\n * The maximum number of occurrences\n * @type {?Number}\n */\n count = null;\n\n /**\n * The frequency value.\n * @type {frequencyValues}\n */\n freq = null;\n\n /**\n * The class identifier.\n * @constant\n * @type {String}\n * @default \"icalrecur\"\n */\n icalclass = \"icalrecur\";\n\n /**\n * The type name, to be used in the jCal object.\n * @constant\n * @type {String}\n * @default \"recur\"\n */\n icaltype = \"recur\";\n\n /**\n * Create a new iterator for this recurrence rule. The passed start date\n * must be the start date of the event, not the start of the range to\n * search in.\n *\n * @example\n * let recur = comp.getFirstPropertyValue('rrule');\n * let dtstart = comp.getFirstPropertyValue('dtstart');\n * let iter = recur.iterator(dtstart);\n * for (let next = iter.next(); next; next = iter.next()) {\n * if (next.compare(rangeStart) < 0) {\n * continue;\n * }\n * console.log(next.toString());\n * }\n *\n * @param {Time} aStart The item's start date\n * @return {RecurIterator} The recurrence iterator\n */\n iterator(aStart) {\n return new RecurIterator({\n rule: this,\n dtstart: aStart\n });\n }\n\n /**\n * Returns a clone of the recurrence object.\n *\n * @return {Recur} The cloned object\n */\n clone() {\n return new Recur(this.toJSON());\n }\n\n /**\n * Checks if the current rule is finite, i.e. has a count or until part.\n *\n * @return {Boolean} True, if the rule is finite\n */\n isFinite() {\n return !!(this.count || this.until);\n }\n\n /**\n * Checks if the current rule has a count part, and not limited by an until\n * part.\n *\n * @return {Boolean} True, if the rule is by count\n */\n isByCount() {\n return !!(this.count && !this.until);\n }\n\n /**\n * Adds a component (part) to the recurrence rule. This is not a component\n * in the sense of {@link ICAL.Component}, but a part of the recurrence\n * rule, i.e. BYMONTH.\n *\n * @param {String} aType The name of the component part\n * @param {Array|String} aValue The component value\n */\n addComponent(aType, aValue) {\n let ucname = aType.toUpperCase();\n if (ucname in this.parts) {\n this.parts[ucname].push(aValue);\n } else {\n this.parts[ucname] = [aValue];\n }\n }\n\n /**\n * Sets the component value for the given by-part.\n *\n * @param {String} aType The component part name\n * @param {Array} aValues The component values\n */\n setComponent(aType, aValues) {\n this.parts[aType.toUpperCase()] = aValues.slice();\n }\n\n /**\n * Gets (a copy) of the requested component value.\n *\n * @param {String} aType The component part name\n * @return {Array} The component part value\n */\n getComponent(aType) {\n let ucname = aType.toUpperCase();\n return (ucname in this.parts ? this.parts[ucname].slice() : []);\n }\n\n /**\n * Retrieves the next occurrence after the given recurrence id. See the\n * guide on {@tutorial terminology} for more details.\n *\n * NOTE: Currently, this method iterates all occurrences from the start\n * date. It should not be called in a loop for performance reasons. If you\n * would like to get more than one occurrence, you can iterate the\n * occurrences manually, see the example on the\n * {@link ICAL.Recur#iterator iterator} method.\n *\n * @param {Time} aStartTime The start of the event series\n * @param {Time} aRecurrenceId The date of the last occurrence\n * @return {Time} The next occurrence after\n */\n getNextOccurrence(aStartTime, aRecurrenceId) {\n let iter = this.iterator(aStartTime);\n let next;\n\n do {\n next = iter.next();\n } while (next && next.compare(aRecurrenceId) <= 0);\n\n if (next && aRecurrenceId.zone) {\n next.zone = aRecurrenceId.zone;\n }\n\n return next;\n }\n\n /**\n * Sets up the current instance using members from the passed data object.\n *\n * @param {Object} data An object with members of the recurrence\n * @param {frequencyValues=} data.freq The frequency value\n * @param {Number=} data.interval The INTERVAL value\n * @param {weekDay=} data.wkst The week start value\n * @param {Time=} data.until The end of the recurrence set\n * @param {Number=} data.count The number of occurrences\n * @param {Array.=} data.bysecond The seconds for the BYSECOND part\n * @param {Array.=} data.byminute The minutes for the BYMINUTE part\n * @param {Array.=} data.byhour The hours for the BYHOUR part\n * @param {Array.=} data.byday The BYDAY values\n * @param {Array.=} data.bymonthday The days for the BYMONTHDAY part\n * @param {Array.=} data.byyearday The days for the BYYEARDAY part\n * @param {Array.=} data.byweekno The weeks for the BYWEEKNO part\n * @param {Array.=} data.bymonth The month for the BYMONTH part\n * @param {Array.=} data.bysetpos The positionals for the BYSETPOS part\n */\n fromData(data) {\n for (let key in data) {\n let uckey = key.toUpperCase();\n\n if (uckey in partDesign) {\n if (Array.isArray(data[key])) {\n this.parts[uckey] = data[key];\n } else {\n this.parts[uckey] = [data[key]];\n }\n } else {\n this[key] = data[key];\n }\n }\n\n if (this.interval && typeof this.interval != \"number\") {\n optionDesign.INTERVAL(this.interval, this);\n }\n\n if (this.wkst && typeof this.wkst != \"number\") {\n this.wkst = Recur.icalDayToNumericDay(this.wkst);\n }\n\n if (this.until && !(this.until instanceof Time)) {\n this.until = Time.fromString(this.until);\n }\n }\n\n /**\n * The jCal representation of this recurrence type.\n * @return {Object}\n */\n toJSON() {\n let res = Object.create(null);\n res.freq = this.freq;\n\n if (this.count) {\n res.count = this.count;\n }\n\n if (this.interval > 1) {\n res.interval = this.interval;\n }\n\n for (let [k, kparts] of Object.entries(this.parts)) {\n if (Array.isArray(kparts) && kparts.length == 1) {\n res[k.toLowerCase()] = kparts[0];\n } else {\n res[k.toLowerCase()] = clone(kparts);\n }\n }\n\n if (this.until) {\n res.until = this.until.toString();\n }\n if ('wkst' in this && this.wkst !== Time.DEFAULT_WEEK_START) {\n res.wkst = Recur.numericDayToIcalDay(this.wkst);\n }\n return res;\n }\n\n /**\n * The string representation of this recurrence rule.\n * @return {String}\n */\n toString() {\n // TODO retain order\n let str = \"FREQ=\" + this.freq;\n if (this.count) {\n str += \";COUNT=\" + this.count;\n }\n if (this.interval > 1) {\n str += \";INTERVAL=\" + this.interval;\n }\n for (let [k, v] of Object.entries(this.parts)) {\n str += \";\" + k + \"=\" + v;\n }\n if (this.until) {\n str += ';UNTIL=' + this.until.toICALString();\n }\n if ('wkst' in this && this.wkst !== Time.DEFAULT_WEEK_START) {\n str += ';WKST=' + Recur.numericDayToIcalDay(this.wkst);\n }\n return str;\n }\n}\n\nfunction parseNumericValue(type, min, max, value) {\n let result = value;\n\n if (value[0] === '+') {\n result = value.slice(1);\n }\n\n result = strictParseInt(result);\n\n if (min !== undefined && value < min) {\n throw new Error(\n type + ': invalid value \"' + value + '\" must be > ' + min\n );\n }\n\n if (max !== undefined && value > max) {\n throw new Error(\n type + ': invalid value \"' + value + '\" must be < ' + min\n );\n }\n\n return result;\n}\n\nconst optionDesign = {\n FREQ: function(value, dict, fmtIcal) {\n // yes this is actually equal or faster then regex.\n // upside here is we can enumerate the valid values.\n if (ALLOWED_FREQ.indexOf(value) !== -1) {\n dict.freq = value;\n } else {\n throw new Error(\n 'invalid frequency \"' + value + '\" expected: \"' +\n ALLOWED_FREQ.join(', ') + '\"'\n );\n }\n },\n\n COUNT: function(value, dict, fmtIcal) {\n dict.count = strictParseInt(value);\n },\n\n INTERVAL: function(value, dict, fmtIcal) {\n dict.interval = strictParseInt(value);\n if (dict.interval < 1) {\n // 0 or negative values are not allowed, some engines seem to generate\n // it though. Assume 1 instead.\n dict.interval = 1;\n }\n },\n\n UNTIL: function(value, dict, fmtIcal) {\n if (value.length > 10) {\n dict.until = design.icalendar.value['date-time'].fromICAL(value);\n } else {\n dict.until = design.icalendar.value.date.fromICAL(value);\n }\n if (!fmtIcal) {\n dict.until = Time.fromString(dict.until);\n }\n },\n\n WKST: function(value, dict, fmtIcal) {\n if (VALID_DAY_NAMES.test(value)) {\n dict.wkst = Recur.icalDayToNumericDay(value);\n } else {\n throw new Error('invalid WKST value \"' + value + '\"');\n }\n }\n};\n\nconst partDesign = {\n BYSECOND: parseNumericValue.bind(undefined, 'BYSECOND', 0, 60),\n BYMINUTE: parseNumericValue.bind(undefined, 'BYMINUTE', 0, 59),\n BYHOUR: parseNumericValue.bind(undefined, 'BYHOUR', 0, 23),\n BYDAY: function(value) {\n if (VALID_BYDAY_PART.test(value)) {\n return value;\n } else {\n throw new Error('invalid BYDAY value \"' + value + '\"');\n }\n },\n BYMONTHDAY: parseNumericValue.bind(undefined, 'BYMONTHDAY', -31, 31),\n BYYEARDAY: parseNumericValue.bind(undefined, 'BYYEARDAY', -366, 366),\n BYWEEKNO: parseNumericValue.bind(undefined, 'BYWEEKNO', -53, 53),\n BYMONTH: parseNumericValue.bind(undefined, 'BYMONTH', 1, 12),\n BYSETPOS: parseNumericValue.bind(undefined, 'BYSETPOS', -366, 366)\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\n/** @module ICAL.design */\n\nconst FROM_ICAL_NEWLINE = /\\\\\\\\|\\\\;|\\\\,|\\\\[Nn]/g;\nconst TO_ICAL_NEWLINE = /\\\\|;|,|\\n/g;\nconst FROM_VCARD_NEWLINE = /\\\\\\\\|\\\\,|\\\\[Nn]/g;\nconst TO_VCARD_NEWLINE = /\\\\|,|\\n/g;\n\nfunction createTextType(fromNewline, toNewline) {\n let result = {\n matches: /.*/,\n\n fromICAL: function(aValue, structuredEscape) {\n return replaceNewline(aValue, fromNewline, structuredEscape);\n },\n\n toICAL: function(aValue, structuredEscape) {\n let regEx = toNewline;\n if (structuredEscape)\n regEx = new RegExp(regEx.source + '|' + structuredEscape, regEx.flags);\n return aValue.replace(regEx, function(str) {\n switch (str) {\n case \"\\\\\":\n return \"\\\\\\\\\";\n case \";\":\n return \"\\\\;\";\n case \",\":\n return \"\\\\,\";\n case \"\\n\":\n return \"\\\\n\";\n /* c8 ignore next 2 */\n default:\n return str;\n }\n });\n }\n };\n return result;\n}\n\n// default types used multiple times\nconst DEFAULT_TYPE_TEXT = { defaultType: \"text\" };\nconst DEFAULT_TYPE_TEXT_MULTI = { defaultType: \"text\", multiValue: \",\" };\nconst DEFAULT_TYPE_TEXT_STRUCTURED = { defaultType: \"text\", structuredValue: \";\" };\nconst DEFAULT_TYPE_INTEGER = { defaultType: \"integer\" };\nconst DEFAULT_TYPE_DATETIME_DATE = { defaultType: \"date-time\", allowedTypes: [\"date-time\", \"date\"] };\nconst DEFAULT_TYPE_DATETIME = { defaultType: \"date-time\" };\nconst DEFAULT_TYPE_URI = { defaultType: \"uri\" };\nconst DEFAULT_TYPE_UTCOFFSET = { defaultType: \"utc-offset\" };\nconst DEFAULT_TYPE_RECUR = { defaultType: \"recur\" };\nconst DEFAULT_TYPE_DATE_ANDOR_TIME = { defaultType: \"date-and-or-time\", allowedTypes: [\"date-time\", \"date\", \"text\"] };\n\nfunction replaceNewlineReplace(string) {\n switch (string) {\n case \"\\\\\\\\\":\n return \"\\\\\";\n case \"\\\\;\":\n return \";\";\n case \"\\\\,\":\n return \",\";\n case \"\\\\n\":\n case \"\\\\N\":\n return \"\\n\";\n /* c8 ignore next 2 */\n default:\n return string;\n }\n}\n\nfunction replaceNewline(value, newline, structuredEscape) {\n // avoid regex when possible.\n if (value.indexOf('\\\\') === -1) {\n return value;\n }\n if (structuredEscape)\n newline = new RegExp(newline.source + '|\\\\\\\\' + structuredEscape, newline.flags);\n return value.replace(newline, replaceNewlineReplace);\n}\n\nlet commonProperties = {\n \"categories\": DEFAULT_TYPE_TEXT_MULTI,\n \"url\": DEFAULT_TYPE_URI,\n \"version\": DEFAULT_TYPE_TEXT,\n \"uid\": DEFAULT_TYPE_TEXT\n};\n\nlet commonValues = {\n \"boolean\": {\n values: [\"TRUE\", \"FALSE\"],\n\n fromICAL: function(aValue) {\n switch (aValue) {\n case 'TRUE':\n return true;\n case 'FALSE':\n return false;\n default:\n //TODO: parser warning\n return false;\n }\n },\n\n toICAL: function(aValue) {\n if (aValue) {\n return 'TRUE';\n }\n return 'FALSE';\n }\n\n },\n float: {\n matches: /^[+-]?\\d+\\.\\d+$/,\n\n fromICAL: function(aValue) {\n let parsed = parseFloat(aValue);\n if (isStrictlyNaN(parsed)) {\n // TODO: parser warning\n return 0.0;\n }\n return parsed;\n },\n\n toICAL: function(aValue) {\n return String(aValue);\n }\n },\n integer: {\n fromICAL: function(aValue) {\n let parsed = parseInt(aValue);\n if (isStrictlyNaN(parsed)) {\n return 0;\n }\n return parsed;\n },\n\n toICAL: function(aValue) {\n return String(aValue);\n }\n },\n \"utc-offset\": {\n toICAL: function(aValue) {\n if (aValue.length < 7) {\n // no seconds\n // -0500\n return aValue.slice(0, 3) +\n aValue.slice(4, 6);\n } else {\n // seconds\n // -050000\n return aValue.slice(0, 3) +\n aValue.slice(4, 6) +\n aValue.slice(7, 9);\n }\n },\n\n fromICAL: function(aValue) {\n if (aValue.length < 6) {\n // no seconds\n // -05:00\n return aValue.slice(0, 3) + ':' +\n aValue.slice(3, 5);\n } else {\n // seconds\n // -05:00:00\n return aValue.slice(0, 3) + ':' +\n aValue.slice(3, 5) + ':' +\n aValue.slice(5, 7);\n }\n },\n\n decorate: function(aValue) {\n return UtcOffset.fromString(aValue);\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n }\n};\n\nlet icalParams = {\n // Although the syntax is DQUOTE uri DQUOTE, I don't think we should\n // enforce anything aside from it being a valid content line.\n //\n // At least some params require - if multi values are used - DQUOTEs\n // for each of its values - e.g. delegated-from=\"uri1\",\"uri2\"\n // To indicate this, I introduced the new k/v pair\n // multiValueSeparateDQuote: true\n //\n // \"ALTREP\": { ... },\n\n // CN just wants a param-value\n // \"CN\": { ... }\n\n \"cutype\": {\n values: [\"INDIVIDUAL\", \"GROUP\", \"RESOURCE\", \"ROOM\", \"UNKNOWN\"],\n allowXName: true,\n allowIanaToken: true\n },\n\n \"delegated-from\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n \"delegated-to\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n // \"DIR\": { ... }, // See ALTREP\n \"encoding\": {\n values: [\"8BIT\", \"BASE64\"]\n },\n // \"FMTTYPE\": { ... }, // See ALTREP\n \"fbtype\": {\n values: [\"FREE\", \"BUSY\", \"BUSY-UNAVAILABLE\", \"BUSY-TENTATIVE\"],\n allowXName: true,\n allowIanaToken: true\n },\n // \"LANGUAGE\": { ... }, // See ALTREP\n \"member\": {\n valueType: \"cal-address\",\n multiValue: \",\",\n multiValueSeparateDQuote: true\n },\n \"partstat\": {\n // TODO These values are actually different per-component\n values: [\"NEEDS-ACTION\", \"ACCEPTED\", \"DECLINED\", \"TENTATIVE\",\n \"DELEGATED\", \"COMPLETED\", \"IN-PROCESS\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"range\": {\n values: [\"THISANDFUTURE\"]\n },\n \"related\": {\n values: [\"START\", \"END\"]\n },\n \"reltype\": {\n values: [\"PARENT\", \"CHILD\", \"SIBLING\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"role\": {\n values: [\"REQ-PARTICIPANT\", \"CHAIR\",\n \"OPT-PARTICIPANT\", \"NON-PARTICIPANT\"],\n allowXName: true,\n allowIanaToken: true\n },\n \"rsvp\": {\n values: [\"TRUE\", \"FALSE\"]\n },\n \"sent-by\": {\n valueType: \"cal-address\"\n },\n \"tzid\": {\n matches: /^\\//\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"binary\", \"boolean\", \"cal-address\", \"date\", \"date-time\",\n \"duration\", \"float\", \"integer\", \"period\", \"recur\", \"text\",\n \"time\", \"uri\", \"utc-offset\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\n// When adding a value here, be sure to add it to the parameter types!\nconst icalValues = extend(commonValues, {\n text: createTextType(FROM_ICAL_NEWLINE, TO_ICAL_NEWLINE),\n\n uri: {\n // TODO\n /* ... */\n },\n\n \"binary\": {\n decorate: function(aString) {\n return Binary.fromString(aString);\n },\n\n undecorate: function(aBinary) {\n return aBinary.toString();\n }\n },\n \"cal-address\": {\n // needs to be an uri\n },\n \"date\": {\n decorate: function(aValue, aProp) {\n if (design.strict) {\n return Time.fromDateString(aValue, aProp);\n } else {\n return Time.fromString(aValue, aProp);\n }\n },\n\n /**\n * undecorates a time object.\n */\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n // from: 20120901\n // to: 2012-09-01\n if (!design.strict && aValue.length >= 15) {\n // This is probably a date-time, e.g. 20120901T130000Z\n return icalValues[\"date-time\"].fromICAL(aValue);\n } else {\n return aValue.slice(0, 4) + '-' +\n aValue.slice(4, 6) + '-' +\n aValue.slice(6, 8);\n }\n },\n\n toICAL: function(aValue) {\n // from: 2012-09-01\n // to: 20120901\n let len = aValue.length;\n\n if (len == 10) {\n return aValue.slice(0, 4) +\n aValue.slice(5, 7) +\n aValue.slice(8, 10);\n } else if (len >= 19) {\n return icalValues[\"date-time\"].toICAL(aValue);\n } else {\n //TODO: serialize warning?\n return aValue;\n }\n\n }\n },\n \"date-time\": {\n fromICAL: function(aValue) {\n // from: 20120901T130000\n // to: 2012-09-01T13:00:00\n if (!design.strict && aValue.length == 8) {\n // This is probably a date, e.g. 20120901\n return icalValues.date.fromICAL(aValue);\n } else {\n let result = aValue.slice(0, 4) + '-' +\n aValue.slice(4, 6) + '-' +\n aValue.slice(6, 8) + 'T' +\n aValue.slice(9, 11) + ':' +\n aValue.slice(11, 13) + ':' +\n aValue.slice(13, 15);\n\n if (aValue[15] && aValue[15] === 'Z') {\n result += 'Z';\n }\n\n return result;\n }\n },\n\n toICAL: function(aValue) {\n // from: 2012-09-01T13:00:00\n // to: 20120901T130000\n let len = aValue.length;\n\n if (len == 10 && !design.strict) {\n return icalValues.date.toICAL(aValue);\n } else if (len >= 19) {\n let result = aValue.slice(0, 4) +\n aValue.slice(5, 7) +\n // grab the (DDTHH) segment\n aValue.slice(8, 13) +\n // MM\n aValue.slice(14, 16) +\n // SS\n aValue.slice(17, 19);\n\n if (aValue[19] && aValue[19] === 'Z') {\n result += 'Z';\n }\n return result;\n } else {\n // TODO: error\n return aValue;\n }\n },\n\n decorate: function(aValue, aProp) {\n if (design.strict) {\n return Time.fromDateTimeString(aValue, aProp);\n } else {\n return Time.fromString(aValue, aProp);\n }\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n },\n duration: {\n decorate: function(aValue) {\n return Duration.fromString(aValue);\n },\n undecorate: function(aValue) {\n return aValue.toString();\n }\n },\n period: {\n fromICAL: function(string) {\n let parts = string.split('/');\n parts[0] = icalValues['date-time'].fromICAL(parts[0]);\n\n if (!Duration.isValueString(parts[1])) {\n parts[1] = icalValues['date-time'].fromICAL(parts[1]);\n }\n\n return parts;\n },\n\n toICAL: function(parts) {\n parts = parts.slice();\n if (!design.strict && parts[0].length == 10) {\n parts[0] = icalValues.date.toICAL(parts[0]);\n } else {\n parts[0] = icalValues['date-time'].toICAL(parts[0]);\n }\n\n if (!Duration.isValueString(parts[1])) {\n if (!design.strict && parts[1].length == 10) {\n parts[1] = icalValues.date.toICAL(parts[1]);\n } else {\n parts[1] = icalValues['date-time'].toICAL(parts[1]);\n }\n }\n\n return parts.join(\"/\");\n },\n\n decorate: function(aValue, aProp) {\n return Period.fromJSON(aValue, aProp, !design.strict);\n },\n\n undecorate: function(aValue) {\n return aValue.toJSON();\n }\n },\n recur: {\n fromICAL: function(string) {\n return Recur._stringToData(string, true);\n },\n\n toICAL: function(data) {\n let str = \"\";\n for (let [k, val] of Object.entries(data)) {\n if (k == \"until\") {\n if (val.length > 10) {\n val = icalValues['date-time'].toICAL(val);\n } else {\n val = icalValues.date.toICAL(val);\n }\n } else if (k == \"wkst\") {\n if (typeof val === 'number') {\n val = Recur.numericDayToIcalDay(val);\n }\n } else if (Array.isArray(val)) {\n val = val.join(\",\");\n }\n str += k.toUpperCase() + \"=\" + val + \";\";\n }\n return str.slice(0, Math.max(0, str.length - 1));\n },\n\n decorate: function decorate(aValue) {\n return Recur.fromData(aValue);\n },\n\n undecorate: function(aRecur) {\n return aRecur.toJSON();\n }\n },\n\n time: {\n fromICAL: function(aValue) {\n // from: MMHHSS(Z)?\n // to: HH:MM:SS(Z)?\n if (aValue.length < 6) {\n // TODO: parser exception?\n return aValue;\n }\n\n // HH::MM::SSZ?\n let result = aValue.slice(0, 2) + ':' +\n aValue.slice(2, 4) + ':' +\n aValue.slice(4, 6);\n\n if (aValue[6] === 'Z') {\n result += 'Z';\n }\n\n return result;\n },\n\n toICAL: function(aValue) {\n // from: HH:MM:SS(Z)?\n // to: MMHHSS(Z)?\n if (aValue.length < 8) {\n //TODO: error\n return aValue;\n }\n\n let result = aValue.slice(0, 2) +\n aValue.slice(3, 5) +\n aValue.slice(6, 8);\n\n if (aValue[8] === 'Z') {\n result += 'Z';\n }\n\n return result;\n }\n }\n});\n\nlet icalProperties = extend(commonProperties, {\n\n \"action\": DEFAULT_TYPE_TEXT,\n \"attach\": { defaultType: \"uri\" },\n \"attendee\": { defaultType: \"cal-address\" },\n \"calscale\": DEFAULT_TYPE_TEXT,\n \"class\": DEFAULT_TYPE_TEXT,\n \"comment\": DEFAULT_TYPE_TEXT,\n \"completed\": DEFAULT_TYPE_DATETIME,\n \"contact\": DEFAULT_TYPE_TEXT,\n \"created\": DEFAULT_TYPE_DATETIME,\n \"description\": DEFAULT_TYPE_TEXT,\n \"dtend\": DEFAULT_TYPE_DATETIME_DATE,\n \"dtstamp\": DEFAULT_TYPE_DATETIME,\n \"dtstart\": DEFAULT_TYPE_DATETIME_DATE,\n \"due\": DEFAULT_TYPE_DATETIME_DATE,\n \"duration\": { defaultType: \"duration\" },\n \"exdate\": {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n multiValue: ','\n },\n \"exrule\": DEFAULT_TYPE_RECUR,\n \"freebusy\": { defaultType: \"period\", multiValue: \",\" },\n \"geo\": { defaultType: \"float\", structuredValue: \";\" },\n \"last-modified\": DEFAULT_TYPE_DATETIME,\n \"location\": DEFAULT_TYPE_TEXT,\n \"method\": DEFAULT_TYPE_TEXT,\n \"organizer\": { defaultType: \"cal-address\" },\n \"percent-complete\": DEFAULT_TYPE_INTEGER,\n \"priority\": DEFAULT_TYPE_INTEGER,\n \"prodid\": DEFAULT_TYPE_TEXT,\n \"related-to\": DEFAULT_TYPE_TEXT,\n \"repeat\": DEFAULT_TYPE_INTEGER,\n \"rdate\": {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\", \"period\"],\n multiValue: ',',\n detectType: function(string) {\n if (string.indexOf('/') !== -1) {\n return 'period';\n }\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n \"recurrence-id\": DEFAULT_TYPE_DATETIME_DATE,\n \"resources\": DEFAULT_TYPE_TEXT_MULTI,\n \"request-status\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"rrule\": DEFAULT_TYPE_RECUR,\n \"sequence\": DEFAULT_TYPE_INTEGER,\n \"status\": DEFAULT_TYPE_TEXT,\n \"summary\": DEFAULT_TYPE_TEXT,\n \"transp\": DEFAULT_TYPE_TEXT,\n \"trigger\": { defaultType: \"duration\", allowedTypes: [\"duration\", \"date-time\"] },\n \"tzoffsetfrom\": DEFAULT_TYPE_UTCOFFSET,\n \"tzoffsetto\": DEFAULT_TYPE_UTCOFFSET,\n \"tzurl\": DEFAULT_TYPE_URI,\n \"tzid\": DEFAULT_TYPE_TEXT,\n \"tzname\": DEFAULT_TYPE_TEXT\n});\n\n// When adding a value here, be sure to add it to the parameter types!\nconst vcardValues = extend(commonValues, {\n text: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE),\n uri: createTextType(FROM_VCARD_NEWLINE, TO_VCARD_NEWLINE),\n\n date: {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date\");\n },\n undecorate: function(aValue) {\n return aValue.toString();\n },\n fromICAL: function(aValue) {\n if (aValue.length == 8) {\n return icalValues.date.fromICAL(aValue);\n } else if (aValue[0] == '-' && aValue.length == 6) {\n return aValue.slice(0, 4) + '-' + aValue.slice(4);\n } else {\n return aValue;\n }\n },\n toICAL: function(aValue) {\n if (aValue.length == 10) {\n return icalValues.date.toICAL(aValue);\n } else if (aValue[0] == '-' && aValue.length == 7) {\n return aValue.slice(0, 4) + aValue.slice(5);\n } else {\n return aValue;\n }\n }\n },\n\n time: {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(\"T\" + aValue, \"time\");\n },\n undecorate: function(aValue) {\n return aValue.toString();\n },\n fromICAL: function(aValue) {\n let splitzone = vcardValues.time._splitZone(aValue, true);\n let zone = splitzone[0], value = splitzone[1];\n\n //console.log(\"SPLIT: \",splitzone);\n\n if (value.length == 6) {\n value = value.slice(0, 2) + ':' +\n value.slice(2, 4) + ':' +\n value.slice(4, 6);\n } else if (value.length == 4 && value[0] != '-') {\n value = value.slice(0, 2) + ':' + value.slice(2, 4);\n } else if (value.length == 5) {\n value = value.slice(0, 3) + ':' + value.slice(3, 5);\n }\n\n if (zone.length == 5 && (zone[0] == '-' || zone[0] == '+')) {\n zone = zone.slice(0, 3) + ':' + zone.slice(3);\n }\n\n return value + zone;\n },\n\n toICAL: function(aValue) {\n let splitzone = vcardValues.time._splitZone(aValue);\n let zone = splitzone[0], value = splitzone[1];\n\n if (value.length == 8) {\n value = value.slice(0, 2) +\n value.slice(3, 5) +\n value.slice(6, 8);\n } else if (value.length == 5 && value[0] != '-') {\n value = value.slice(0, 2) + value.slice(3, 5);\n } else if (value.length == 6) {\n value = value.slice(0, 3) + value.slice(4, 6);\n }\n\n if (zone.length == 6 && (zone[0] == '-' || zone[0] == '+')) {\n zone = zone.slice(0, 3) + zone.slice(4);\n }\n\n return value + zone;\n },\n\n _splitZone: function(aValue, isFromIcal) {\n let lastChar = aValue.length - 1;\n let signChar = aValue.length - (isFromIcal ? 5 : 6);\n let sign = aValue[signChar];\n let zone, value;\n\n if (aValue[lastChar] == 'Z') {\n zone = aValue[lastChar];\n value = aValue.slice(0, Math.max(0, lastChar));\n } else if (aValue.length > 6 && (sign == '-' || sign == '+')) {\n zone = aValue.slice(signChar);\n value = aValue.slice(0, Math.max(0, signChar));\n } else {\n zone = \"\";\n value = aValue;\n }\n\n return [zone, value];\n }\n },\n\n \"date-time\": {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date-time\");\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n return vcardValues['date-and-or-time'].fromICAL(aValue);\n },\n\n toICAL: function(aValue) {\n return vcardValues['date-and-or-time'].toICAL(aValue);\n }\n },\n\n \"date-and-or-time\": {\n decorate: function(aValue) {\n return VCardTime.fromDateAndOrTimeString(aValue, \"date-and-or-time\");\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n },\n\n fromICAL: function(aValue) {\n let parts = aValue.split('T');\n return (parts[0] ? vcardValues.date.fromICAL(parts[0]) : '') +\n (parts[1] ? 'T' + vcardValues.time.fromICAL(parts[1]) : '');\n },\n\n toICAL: function(aValue) {\n let parts = aValue.split('T');\n return vcardValues.date.toICAL(parts[0]) +\n (parts[1] ? 'T' + vcardValues.time.toICAL(parts[1]) : '');\n\n }\n },\n timestamp: icalValues['date-time'],\n \"language-tag\": {\n matches: /^[a-zA-Z0-9-]+$/ // Could go with a more strict regex here\n },\n \"phone-number\": {\n fromICAL: function(aValue) {\n return Array.from(aValue).filter(function(c) {\n return c === '\\\\' ? undefined : c;\n }).join('');\n },\n toICAL: function(aValue) {\n return Array.from(aValue).map(function(c) {\n return c === ',' || c === \";\" ? '\\\\' + c : c;\n }).join('');\n }\n }\n});\n\nlet vcardParams = {\n \"type\": {\n valueType: \"text\",\n multiValue: \",\"\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"text\", \"uri\", \"date\", \"time\", \"date-time\", \"date-and-or-time\",\n \"timestamp\", \"boolean\", \"integer\", \"float\", \"utc-offset\",\n \"language-tag\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\nlet vcardProperties = extend(commonProperties, {\n \"adr\": { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n \"anniversary\": DEFAULT_TYPE_DATE_ANDOR_TIME,\n \"bday\": DEFAULT_TYPE_DATE_ANDOR_TIME,\n \"caladruri\": DEFAULT_TYPE_URI,\n \"caluri\": DEFAULT_TYPE_URI,\n \"clientpidmap\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"email\": DEFAULT_TYPE_TEXT,\n \"fburl\": DEFAULT_TYPE_URI,\n \"fn\": DEFAULT_TYPE_TEXT,\n \"gender\": DEFAULT_TYPE_TEXT_STRUCTURED,\n \"geo\": DEFAULT_TYPE_URI,\n \"impp\": DEFAULT_TYPE_URI,\n \"key\": DEFAULT_TYPE_URI,\n \"kind\": DEFAULT_TYPE_TEXT,\n \"lang\": { defaultType: \"language-tag\" },\n \"logo\": DEFAULT_TYPE_URI,\n \"member\": DEFAULT_TYPE_URI,\n \"n\": { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n \"nickname\": DEFAULT_TYPE_TEXT_MULTI,\n \"note\": DEFAULT_TYPE_TEXT,\n \"org\": { defaultType: \"text\", structuredValue: \";\" },\n \"photo\": DEFAULT_TYPE_URI,\n \"related\": DEFAULT_TYPE_URI,\n \"rev\": { defaultType: \"timestamp\" },\n \"role\": DEFAULT_TYPE_TEXT,\n \"sound\": DEFAULT_TYPE_URI,\n \"source\": DEFAULT_TYPE_URI,\n \"tel\": { defaultType: \"uri\", allowedTypes: [\"uri\", \"text\"] },\n \"title\": DEFAULT_TYPE_TEXT,\n \"tz\": { defaultType: \"text\", allowedTypes: [\"text\", \"utc-offset\", \"uri\"] },\n \"xml\": DEFAULT_TYPE_TEXT\n});\n\nlet vcard3Values = extend(commonValues, {\n binary: icalValues.binary,\n date: vcardValues.date,\n \"date-time\": vcardValues[\"date-time\"],\n \"phone-number\": vcardValues[\"phone-number\"],\n uri: icalValues.uri,\n text: vcardValues.text,\n time: icalValues.time,\n vcard: icalValues.text,\n \"utc-offset\": {\n toICAL: function(aValue) {\n return aValue.slice(0, 7);\n },\n\n fromICAL: function(aValue) {\n return aValue.slice(0, 7);\n },\n\n decorate: function(aValue) {\n return UtcOffset.fromString(aValue);\n },\n\n undecorate: function(aValue) {\n return aValue.toString();\n }\n }\n});\n\nlet vcard3Params = {\n \"type\": {\n valueType: \"text\",\n multiValue: \",\"\n },\n \"value\": {\n // since the value here is a 'type' lowercase is used.\n values: [\"text\", \"uri\", \"date\", \"date-time\", \"phone-number\", \"time\",\n \"boolean\", \"integer\", \"float\", \"utc-offset\", \"vcard\", \"binary\"],\n allowXName: true,\n allowIanaToken: true\n }\n};\n\nlet vcard3Properties = extend(commonProperties, {\n fn: DEFAULT_TYPE_TEXT,\n n: { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n nickname: DEFAULT_TYPE_TEXT_MULTI,\n photo: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n bday: {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n detectType: function(string) {\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n\n adr: { defaultType: \"text\", structuredValue: \";\", multiValue: \",\" },\n label: DEFAULT_TYPE_TEXT,\n\n tel: { defaultType: \"phone-number\" },\n email: DEFAULT_TYPE_TEXT,\n mailer: DEFAULT_TYPE_TEXT,\n\n tz: { defaultType: \"utc-offset\", allowedTypes: [\"utc-offset\", \"text\"] },\n geo: { defaultType: \"float\", structuredValue: \";\" },\n\n title: DEFAULT_TYPE_TEXT,\n role: DEFAULT_TYPE_TEXT,\n logo: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n agent: { defaultType: \"vcard\", allowedTypes: [\"vcard\", \"text\", \"uri\"] },\n org: DEFAULT_TYPE_TEXT_STRUCTURED,\n\n note: DEFAULT_TYPE_TEXT_MULTI,\n prodid: DEFAULT_TYPE_TEXT,\n rev: {\n defaultType: \"date-time\",\n allowedTypes: [\"date-time\", \"date\"],\n detectType: function(string) {\n return (string.indexOf('T') === -1) ? 'date' : 'date-time';\n }\n },\n \"sort-string\": DEFAULT_TYPE_TEXT,\n sound: { defaultType: \"binary\", allowedTypes: [\"binary\", \"uri\"] },\n\n class: DEFAULT_TYPE_TEXT,\n key: { defaultType: \"binary\", allowedTypes: [\"binary\", \"text\"] }\n});\n\n/**\n * iCalendar design set\n * @type {designSet}\n */\nlet icalSet = {\n name: \"ical\",\n value: icalValues,\n param: icalParams,\n property: icalProperties,\n propertyGroups: false\n};\n\n/**\n * vCard 4.0 design set\n * @type {designSet}\n */\nlet vcardSet = {\n name: \"vcard4\",\n value: vcardValues,\n param: vcardParams,\n property: vcardProperties,\n propertyGroups: true\n};\n\n/**\n * vCard 3.0 design set\n * @type {designSet}\n */\nlet vcard3Set = {\n name: \"vcard3\",\n value: vcard3Values,\n param: vcard3Params,\n property: vcard3Properties,\n propertyGroups: true\n};\n\n/**\n * The design data, used by the parser to determine types for properties and\n * other metadata needed to produce correct jCard/jCal data.\n *\n * @alias ICAL.design\n * @exports module:ICAL.design\n */\nconst design = {\n /**\n * Can be set to false to make the parser more lenient.\n */\n strict: true,\n\n /**\n * The default set for new properties and components if none is specified.\n * @type {designSet}\n */\n defaultSet: icalSet,\n\n /**\n * The default type for unknown properties\n * @type {String}\n */\n defaultType: 'unknown',\n\n /**\n * Holds the design set for known top-level components\n *\n * @type {Object}\n * @property {designSet} vcard vCard VCARD\n * @property {designSet} vevent iCalendar VEVENT\n * @property {designSet} vtodo iCalendar VTODO\n * @property {designSet} vjournal iCalendar VJOURNAL\n * @property {designSet} valarm iCalendar VALARM\n * @property {designSet} vtimezone iCalendar VTIMEZONE\n * @property {designSet} daylight iCalendar DAYLIGHT\n * @property {designSet} standard iCalendar STANDARD\n *\n * @example\n * let propertyName = 'fn';\n * let componentDesign = ICAL.design.components.vcard;\n * let propertyDetails = componentDesign.property[propertyName];\n * if (propertyDetails.defaultType == 'text') {\n * // Yep, sure is...\n * }\n */\n components: {\n vcard: vcardSet,\n vcard3: vcard3Set,\n vevent: icalSet,\n vtodo: icalSet,\n vjournal: icalSet,\n valarm: icalSet,\n vtimezone: icalSet,\n daylight: icalSet,\n standard: icalSet\n },\n\n\n /**\n * The design set for iCalendar (rfc5545/rfc7265) components.\n * @type {designSet}\n */\n icalendar: icalSet,\n\n /**\n * The design set for vCard (rfc6350/rfc7095) components.\n * @type {designSet}\n */\n vcard: vcardSet,\n\n /**\n * The design set for vCard (rfc2425/rfc2426/rfc7095) components.\n * @type {designSet}\n */\n vcard3: vcard3Set,\n\n /**\n * Gets the design set for the given component name.\n *\n * @param {String} componentName The name of the component\n * @return {designSet} The design set for the component\n */\n getDesignSet: function(componentName) {\n let isInDesign = componentName && componentName in design.components;\n return isInDesign ? design.components[componentName] : design.defaultSet;\n }\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n *\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n */\n\nconst LINE_ENDING = '\\r\\n';\nconst DEFAULT_VALUE_TYPE = 'unknown';\nconst RFC6868_REPLACE_MAP = { '\"': \"^'\", \"\\n\": \"^n\", \"^\": \"^^\" };\n\n/**\n * Convert a full jCal/jCard array into a iCalendar/vCard string.\n *\n * @function ICAL.stringify\n * @variation function\n * @param {Array} jCal The jCal/jCard document\n * @return {String} The stringified iCalendar/vCard document\n */\nfunction stringify(jCal) {\n if (typeof jCal[0] == \"string\") {\n // This is a single component\n jCal = [jCal];\n }\n\n let i = 0;\n let len = jCal.length;\n let result = '';\n\n for (; i < len; i++) {\n result += stringify.component(jCal[i]) + LINE_ENDING;\n }\n\n return result;\n}\n\n/**\n * Converts an jCal component array into a ICAL string.\n * Recursive will resolve sub-components.\n *\n * Exact component/property order is not saved all\n * properties will come before subcomponents.\n *\n * @function ICAL.stringify.component\n * @param {Array} component\n * jCal/jCard fragment of a component\n * @param {designSet} designSet\n * The design data to use for this component\n * @return {String} The iCalendar/vCard string\n */\nstringify.component = function(component, designSet) {\n let name = component[0].toUpperCase();\n let result = 'BEGIN:' + name + LINE_ENDING;\n\n let props = component[1];\n let propIdx = 0;\n let propLen = props.length;\n\n let designSetName = component[0];\n // rfc6350 requires that in vCard 4.0 the first component is the VERSION\n // component with as value 4.0, note that 3.0 does not have this requirement.\n if (designSetName === 'vcard' && component[1].length > 0 &&\n !(component[1][0][0] === \"version\" && component[1][0][3] === \"4.0\")) {\n designSetName = \"vcard3\";\n }\n designSet = designSet || design.getDesignSet(designSetName);\n\n for (; propIdx < propLen; propIdx++) {\n result += stringify.property(props[propIdx], designSet) + LINE_ENDING;\n }\n\n // Ignore subcomponents if none exist, e.g. in vCard.\n let comps = component[2] || [];\n let compIdx = 0;\n let compLen = comps.length;\n\n for (; compIdx < compLen; compIdx++) {\n result += stringify.component(comps[compIdx], designSet) + LINE_ENDING;\n }\n\n result += 'END:' + name;\n return result;\n};\n\n/**\n * Converts a single jCal/jCard property to a iCalendar/vCard string.\n *\n * @function ICAL.stringify.property\n * @param {Array} property\n * jCal/jCard property array\n * @param {designSet} designSet\n * The design data to use for this property\n * @param {Boolean} noFold\n * If true, the line is not folded\n * @return {String} The iCalendar/vCard string\n */\nstringify.property = function(property, designSet, noFold) {\n let name = property[0].toUpperCase();\n let jsName = property[0];\n let params = property[1];\n\n if (!designSet) {\n designSet = design.defaultSet;\n }\n\n let groupName = params.group;\n let line;\n if (designSet.propertyGroups && groupName) {\n line = groupName.toUpperCase() + \".\" + name;\n } else {\n line = name;\n }\n\n for (let [paramName, value] of Object.entries(params)) {\n if (designSet.propertyGroups && paramName == 'group') {\n continue;\n }\n\n let paramDesign = designSet.param[paramName];\n let multiValue = paramDesign && paramDesign.multiValue;\n if (multiValue && Array.isArray(value)) {\n value = value.map(function(val) {\n val = stringify._rfc6868Unescape(val);\n val = stringify.paramPropertyValue(val, paramDesign.multiValueSeparateDQuote);\n return val;\n });\n value = stringify.multiValue(value, multiValue, \"unknown\", null, designSet);\n } else {\n value = stringify._rfc6868Unescape(value);\n value = stringify.paramPropertyValue(value);\n }\n\n line += ';' + paramName.toUpperCase() + '=' + value;\n }\n\n if (property.length === 3) {\n // If there are no values, we must assume a blank value\n return line + ':';\n }\n\n let valueType = property[2];\n\n let propDetails;\n let multiValue = false;\n let structuredValue = false;\n let isDefault = false;\n\n if (jsName in designSet.property) {\n propDetails = designSet.property[jsName];\n\n if ('multiValue' in propDetails) {\n multiValue = propDetails.multiValue;\n }\n\n if (('structuredValue' in propDetails) && Array.isArray(property[3])) {\n structuredValue = propDetails.structuredValue;\n }\n\n if ('defaultType' in propDetails) {\n if (valueType === propDetails.defaultType) {\n isDefault = true;\n }\n } else {\n if (valueType === DEFAULT_VALUE_TYPE) {\n isDefault = true;\n }\n }\n } else {\n if (valueType === DEFAULT_VALUE_TYPE) {\n isDefault = true;\n }\n }\n\n // push the VALUE property if type is not the default\n // for the current property.\n if (!isDefault) {\n // value will never contain ;/:/, so we don't escape it here.\n line += ';VALUE=' + valueType.toUpperCase();\n }\n\n line += ':';\n\n if (multiValue && structuredValue) {\n line += stringify.multiValue(\n property[3], structuredValue, valueType, multiValue, designSet, structuredValue\n );\n } else if (multiValue) {\n line += stringify.multiValue(\n property.slice(3), multiValue, valueType, null, designSet, false\n );\n } else if (structuredValue) {\n line += stringify.multiValue(\n property[3], structuredValue, valueType, null, designSet, structuredValue\n );\n } else {\n line += stringify.value(property[3], valueType, designSet, false);\n }\n\n return noFold ? line : foldline(line);\n};\n\n/**\n * Handles escaping of property values that may contain:\n *\n * COLON (:), SEMICOLON (;), or COMMA (,)\n *\n * If any of the above are present the result is wrapped\n * in double quotes.\n *\n * @function ICAL.stringify.paramPropertyValue\n * @param {String} value Raw property value\n * @param {boolean} force If value should be escaped even when unnecessary\n * @return {String} Given or escaped value when needed\n */\nstringify.paramPropertyValue = function(value, force) {\n if (!force &&\n (value.indexOf(',') === -1) &&\n (value.indexOf(':') === -1) &&\n (value.indexOf(';') === -1)) {\n\n return value;\n }\n\n return '\"' + value + '\"';\n};\n\n/**\n * Converts an array of ical values into a single\n * string based on a type and a delimiter value (like \",\").\n *\n * @function ICAL.stringify.multiValue\n * @param {Array} values List of values to convert\n * @param {String} delim Used to join the values (\",\", \";\", \":\")\n * @param {String} type Lowecase ical value type\n * (like boolean, date-time, etc..)\n * @param {?String} innerMulti If set, each value will again be processed\n * Used for structured values\n * @param {designSet} designSet\n * The design data to use for this property\n *\n * @return {String} iCalendar/vCard string for value\n */\nstringify.multiValue = function(values, delim, type, innerMulti, designSet, structuredValue) {\n let result = '';\n let len = values.length;\n let i = 0;\n\n for (; i < len; i++) {\n if (innerMulti && Array.isArray(values[i])) {\n result += stringify.multiValue(values[i], innerMulti, type, null, designSet, structuredValue);\n } else {\n result += stringify.value(values[i], type, designSet, structuredValue);\n }\n\n if (i !== (len - 1)) {\n result += delim;\n }\n }\n\n return result;\n};\n\n/**\n * Processes a single ical value runs the associated \"toICAL\" method from the\n * design value type if available to convert the value.\n *\n * @function ICAL.stringify.value\n * @param {String|Number} value A formatted value\n * @param {String} type Lowercase iCalendar/vCard value type\n * (like boolean, date-time, etc..)\n * @return {String} iCalendar/vCard value for single value\n */\nstringify.value = function(value, type, designSet, structuredValue) {\n if (type in designSet.value && 'toICAL' in designSet.value[type]) {\n return designSet.value[type].toICAL(value, structuredValue);\n }\n return value;\n};\n\n/**\n * Internal helper for rfc6868. Exposing this on ICAL.stringify so that\n * hackers can disable the rfc6868 parsing if the really need to.\n *\n * @param {String} val The value to unescape\n * @return {String} The escaped value\n */\nstringify._rfc6868Unescape = function(val) {\n return val.replace(/[\\n^\"]/g, function(x) {\n return RFC6868_REPLACE_MAP[x];\n });\n};\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\nconst NAME_INDEX$1 = 0;\nconst PROP_INDEX = 1;\nconst TYPE_INDEX = 2;\nconst VALUE_INDEX = 3;\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").Geo} Geo\n * Imports the 'Geo' type from the \"types.js\" module\n */\n\n/**\n * Provides a layer on top of the raw jCal object for manipulating a single property, with its\n * parameters and value.\n *\n * @memberof ICAL\n */\nclass Property {\n /**\n * Create an {@link ICAL.Property} by parsing the passed iCalendar string.\n *\n * @param {String} str The iCalendar string to parse\n * @param {designSet=} designSet The design data to use for this property\n * @return {Property} The created iCalendar property\n */\n static fromString(str, designSet) {\n return new Property(parse.property(str, designSet));\n }\n\n /**\n * Creates a new ICAL.Property instance.\n *\n * It is important to note that mutations done in the wrapper directly mutate the jCal object used\n * to initialize.\n *\n * Can also be used to create new properties by passing the name of the property (as a String).\n *\n * @param {Array|String} jCal Raw jCal representation OR the new name of the property\n * @param {Component=} parent Parent component\n */\n constructor(jCal, parent) {\n this._parent = parent || null;\n\n if (typeof(jCal) === 'string') {\n // We are creating the property by name and need to detect the type\n this.jCal = [jCal, {}, design.defaultType];\n this.jCal[TYPE_INDEX] = this.getDefaultType();\n } else {\n this.jCal = jCal;\n }\n this._updateType();\n }\n\n /**\n * The value type for this property\n * @type {String}\n */\n get type() {\n return this.jCal[TYPE_INDEX];\n }\n\n /**\n * The name of this property, in lowercase.\n * @type {String}\n */\n get name() {\n return this.jCal[NAME_INDEX$1];\n }\n\n /**\n * The parent component for this property.\n * @type {Component}\n */\n get parent() {\n return this._parent;\n }\n\n set parent(p) {\n // Before setting the parent, check if the design set has changed. If it\n // has, we later need to update the type if it was unknown before.\n let designSetChanged = !this._parent || (p && p._designSet != this._parent._designSet);\n\n this._parent = p;\n\n if (this.type == design.defaultType && designSetChanged) {\n this.jCal[TYPE_INDEX] = this.getDefaultType();\n this._updateType();\n }\n }\n\n /**\n * The design set for this property, e.g. icalendar vs vcard\n *\n * @type {designSet}\n * @private\n */\n get _designSet() {\n return this.parent ? this.parent._designSet : design.defaultSet;\n }\n\n /**\n * Updates the type metadata from the current jCal type and design set.\n *\n * @private\n */\n _updateType() {\n let designSet = this._designSet;\n\n if (this.type in designSet.value) {\n if ('decorate' in designSet.value[this.type]) {\n this.isDecorated = true;\n } else {\n this.isDecorated = false;\n }\n\n if (this.name in designSet.property) {\n this.isMultiValue = ('multiValue' in designSet.property[this.name]);\n this.isStructuredValue = ('structuredValue' in designSet.property[this.name]);\n }\n }\n }\n\n /**\n * Hydrate a single value. The act of hydrating means turning the raw jCal\n * value into a potentially wrapped object, for example {@link ICAL.Time}.\n *\n * @private\n * @param {Number} index The index of the value to hydrate\n * @return {?Object} The decorated value.\n */\n _hydrateValue(index) {\n if (this._values && this._values[index]) {\n return this._values[index];\n }\n\n // for the case where there is no value.\n if (this.jCal.length <= (VALUE_INDEX + index)) {\n return null;\n }\n\n if (this.isDecorated) {\n if (!this._values) {\n this._values = [];\n }\n return (this._values[index] = this._decorate(\n this.jCal[VALUE_INDEX + index]\n ));\n } else {\n return this.jCal[VALUE_INDEX + index];\n }\n }\n\n /**\n * Decorate a single value, returning its wrapped object. This is used by\n * the hydrate function to actually wrap the value.\n *\n * @private\n * @param {?} value The value to decorate\n * @return {Object} The decorated value\n */\n _decorate(value) {\n return this._designSet.value[this.type].decorate(value, this);\n }\n\n /**\n * Undecorate a single value, returning its raw jCal data.\n *\n * @private\n * @param {Object} value The value to undecorate\n * @return {?} The undecorated value\n */\n _undecorate(value) {\n return this._designSet.value[this.type].undecorate(value, this);\n }\n\n /**\n * Sets the value at the given index while also hydrating it. The passed\n * value can either be a decorated or undecorated value.\n *\n * @private\n * @param {?} value The value to set\n * @param {Number} index The index to set it at\n */\n _setDecoratedValue(value, index) {\n if (!this._values) {\n this._values = [];\n }\n\n if (typeof(value) === 'object' && 'icaltype' in value) {\n // decorated value\n this.jCal[VALUE_INDEX + index] = this._undecorate(value);\n this._values[index] = value;\n } else {\n // undecorated value\n this.jCal[VALUE_INDEX + index] = value;\n this._values[index] = this._decorate(value);\n }\n }\n\n /**\n * Gets a parameter on the property.\n *\n * @param {String} name Parameter name (lowercase)\n * @return {Array|String} Parameter value\n */\n getParameter(name) {\n if (name in this.jCal[PROP_INDEX]) {\n return this.jCal[PROP_INDEX][name];\n } else {\n return undefined;\n }\n }\n\n /**\n * Gets first parameter on the property.\n *\n * @param {String} name Parameter name (lowercase)\n * @return {String} Parameter value\n */\n getFirstParameter(name) {\n let parameters = this.getParameter(name);\n\n if (Array.isArray(parameters)) {\n return parameters[0];\n }\n\n return parameters;\n }\n\n /**\n * Sets a parameter on the property.\n *\n * @param {String} name The parameter name\n * @param {Array|String} value The parameter value\n */\n setParameter(name, value) {\n let lcname = name.toLowerCase();\n if (typeof value === \"string\" &&\n lcname in this._designSet.param &&\n 'multiValue' in this._designSet.param[lcname]) {\n value = [value];\n }\n this.jCal[PROP_INDEX][name] = value;\n }\n\n /**\n * Removes a parameter\n *\n * @param {String} name The parameter name\n */\n removeParameter(name) {\n delete this.jCal[PROP_INDEX][name];\n }\n\n /**\n * Get the default type based on this property's name.\n *\n * @return {String} The default type for this property\n */\n getDefaultType() {\n let name = this.jCal[NAME_INDEX$1];\n let designSet = this._designSet;\n\n if (name in designSet.property) {\n let details = designSet.property[name];\n if ('defaultType' in details) {\n return details.defaultType;\n }\n }\n return design.defaultType;\n }\n\n /**\n * Sets type of property and clears out any existing values of the current\n * type.\n *\n * @param {String} type New iCAL type (see design.*.values)\n */\n resetType(type) {\n this.removeAllValues();\n this.jCal[TYPE_INDEX] = type;\n this._updateType();\n }\n\n /**\n * Finds the first property value.\n *\n * @return {Binary | Duration | Period |\n * Recur | Time | UtcOffset | Geo | string | null} First property value\n */\n getFirstValue() {\n return this._hydrateValue(0);\n }\n\n /**\n * Gets all values on the property.\n *\n * NOTE: this creates an array during each call.\n *\n * @return {Array} List of values\n */\n getValues() {\n let len = this.jCal.length - VALUE_INDEX;\n\n if (len < 1) {\n // it is possible for a property to have no value.\n return [];\n }\n\n let i = 0;\n let result = [];\n\n for (; i < len; i++) {\n result[i] = this._hydrateValue(i);\n }\n\n return result;\n }\n\n /**\n * Removes all values from this property\n */\n removeAllValues() {\n if (this._values) {\n this._values.length = 0;\n }\n this.jCal.length = 3;\n }\n\n /**\n * Sets the values of the property. Will overwrite the existing values.\n * This can only be used for multi-value properties.\n *\n * @param {Array} values An array of values\n */\n setValues(values) {\n if (!this.isMultiValue) {\n throw new Error(\n this.name + ': does not not support mulitValue.\\n' +\n 'override isMultiValue'\n );\n }\n\n let len = values.length;\n let i = 0;\n this.removeAllValues();\n\n if (len > 0 &&\n typeof(values[0]) === 'object' &&\n 'icaltype' in values[0]) {\n this.resetType(values[0].icaltype);\n }\n\n if (this.isDecorated) {\n for (; i < len; i++) {\n this._setDecoratedValue(values[i], i);\n }\n } else {\n for (; i < len; i++) {\n this.jCal[VALUE_INDEX + i] = values[i];\n }\n }\n }\n\n /**\n * Sets the current value of the property. If this is a multi-value\n * property, all other values will be removed.\n *\n * @param {String|Object} value New property value.\n */\n setValue(value) {\n this.removeAllValues();\n if (typeof(value) === 'object' && 'icaltype' in value) {\n this.resetType(value.icaltype);\n }\n\n if (this.isDecorated) {\n this._setDecoratedValue(value, 0);\n } else {\n this.jCal[VALUE_INDEX] = value;\n }\n }\n\n /**\n * Returns the Object representation of this component. The returned object\n * is a live jCal object and should be cloned if modified.\n * @return {Object}\n */\n toJSON() {\n return this.jCal;\n }\n\n /**\n * The string representation of this component.\n * @return {String}\n */\n toICALString() {\n return stringify.property(\n this.jCal, this._designSet, true\n );\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").designSet} designSet\n * Imports the 'designSet' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").Geo} Geo\n * Imports the 'Geo' type from the \"types.js\" module\n */\n\nconst NAME_INDEX = 0;\nconst PROPERTY_INDEX = 1;\nconst COMPONENT_INDEX = 2;\n\nconst PROPERTY_NAME_INDEX = 0;\nconst PROPERTY_VALUE_INDEX = 3;\n\n/**\n * Wraps a jCal component, adding convenience methods to add, remove and update subcomponents and\n * properties.\n *\n * @memberof ICAL\n */\nclass Component {\n /**\n * Create an {@link ICAL.Component} by parsing the passed iCalendar string.\n *\n * @param {String} str The iCalendar string to parse\n */\n static fromString(str) {\n return new Component(parse.component(str));\n }\n\n /**\n * Creates a new Component instance.\n *\n * @param {Array|String} jCal Raw jCal component data OR name of new\n * component\n * @param {Component=} parent Parent component to associate\n */\n constructor(jCal, parent) {\n if (typeof(jCal) === 'string') {\n // jCal spec (name, properties, components)\n jCal = [jCal, [], []];\n }\n\n // mostly for legacy reasons.\n this.jCal = jCal;\n\n this.parent = parent || null;\n\n if (!this.parent && this.name === 'vcalendar') {\n this._timezoneCache = new Map();\n }\n }\n\n /**\n * Hydrated properties are inserted into the _properties array at the same\n * position as in the jCal array, so it is possible that the array contains\n * undefined values for unhydrdated properties. To avoid iterating the\n * array when checking if all properties have been hydrated, we save the\n * count here.\n *\n * @type {Number}\n * @private\n */\n _hydratedPropertyCount = 0;\n\n /**\n * The same count as for _hydratedPropertyCount, but for subcomponents\n *\n * @type {Number}\n * @private\n */\n _hydratedComponentCount = 0;\n\n /**\n * A cache of hydrated time zone objects which may be used by consumers, keyed\n * by time zone ID.\n *\n * @type {Map}\n * @private\n */\n _timezoneCache = null;\n\n /**\n * @private\n */\n _components = null;\n\n /**\n * @private\n */\n _properties = null;\n\n /**\n * The name of this component\n *\n * @type {String}\n */\n get name() {\n return this.jCal[NAME_INDEX];\n }\n\n /**\n * The design set for this component, e.g. icalendar vs vcard\n *\n * @type {designSet}\n * @private\n */\n get _designSet() {\n let parentDesign = this.parent && this.parent._designSet;\n if (!parentDesign && this.name == \"vcard\") {\n // We can't decide on vcard3 vs vcard4 just based on the component name, the version number is\n // in the version property. We also can't use hydrated properties here because it would lead\n // to recursion, but the spec says that the version property needs to be the very first one.\n let versionProp = this.jCal[PROPERTY_INDEX]?.[0];\n\n if (versionProp && versionProp[PROPERTY_NAME_INDEX] == \"version\" && versionProp[PROPERTY_VALUE_INDEX] == \"3.0\") {\n return design.getDesignSet(\"vcard3\");\n }\n }\n\n return parentDesign || design.getDesignSet(this.name);\n }\n\n /**\n * @private\n */\n _hydrateComponent(index) {\n if (!this._components) {\n this._components = [];\n this._hydratedComponentCount = 0;\n }\n\n if (this._components[index]) {\n return this._components[index];\n }\n\n let comp = new Component(\n this.jCal[COMPONENT_INDEX][index],\n this\n );\n\n this._hydratedComponentCount++;\n return (this._components[index] = comp);\n }\n\n /**\n * @private\n */\n _hydrateProperty(index) {\n if (!this._properties) {\n this._properties = [];\n this._hydratedPropertyCount = 0;\n }\n\n if (this._properties[index]) {\n return this._properties[index];\n }\n\n let prop = new Property(\n this.jCal[PROPERTY_INDEX][index],\n this\n );\n\n this._hydratedPropertyCount++;\n return (this._properties[index] = prop);\n }\n\n /**\n * Finds first sub component, optionally filtered by name.\n *\n * @param {String=} name Optional name to filter by\n * @return {?Component} The found subcomponent\n */\n getFirstSubcomponent(name) {\n if (name) {\n let i = 0;\n let comps = this.jCal[COMPONENT_INDEX];\n let len = comps.length;\n\n for (; i < len; i++) {\n if (comps[i][NAME_INDEX] === name) {\n let result = this._hydrateComponent(i);\n return result;\n }\n }\n } else {\n if (this.jCal[COMPONENT_INDEX].length) {\n return this._hydrateComponent(0);\n }\n }\n\n // ensure we return a value (strict mode)\n return null;\n }\n\n /**\n * Finds all sub components, optionally filtering by name.\n *\n * @param {String=} name Optional name to filter by\n * @return {Component[]} The found sub components\n */\n getAllSubcomponents(name) {\n let jCalLen = this.jCal[COMPONENT_INDEX].length;\n let i = 0;\n\n if (name) {\n let comps = this.jCal[COMPONENT_INDEX];\n let result = [];\n\n for (; i < jCalLen; i++) {\n if (name === comps[i][NAME_INDEX]) {\n result.push(\n this._hydrateComponent(i)\n );\n }\n }\n return result;\n } else {\n if (!this._components ||\n (this._hydratedComponentCount !== jCalLen)) {\n for (; i < jCalLen; i++) {\n this._hydrateComponent(i);\n }\n }\n\n return this._components || [];\n }\n }\n\n /**\n * Returns true when a named property exists.\n *\n * @param {String} name The property name\n * @return {Boolean} True, when property is found\n */\n hasProperty(name) {\n let props = this.jCal[PROPERTY_INDEX];\n let len = props.length;\n\n let i = 0;\n for (; i < len; i++) {\n // 0 is property name\n if (props[i][NAME_INDEX] === name) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds the first property, optionally with the given name.\n *\n * @param {String=} name Lowercase property name\n * @return {?Property} The found property\n */\n getFirstProperty(name) {\n if (name) {\n let i = 0;\n let props = this.jCal[PROPERTY_INDEX];\n let len = props.length;\n\n for (; i < len; i++) {\n if (props[i][NAME_INDEX] === name) {\n let result = this._hydrateProperty(i);\n return result;\n }\n }\n } else {\n if (this.jCal[PROPERTY_INDEX].length) {\n return this._hydrateProperty(0);\n }\n }\n\n return null;\n }\n\n /**\n * Returns first property's value, if available.\n *\n * @param {String=} name Lowercase property name\n * @return {Binary | Duration | Period |\n * Recur | Time | UtcOffset | Geo | string | null} The found property value.\n */\n getFirstPropertyValue(name) {\n let prop = this.getFirstProperty(name);\n if (prop) {\n return prop.getFirstValue();\n }\n\n return null;\n }\n\n /**\n * Get all properties in the component, optionally filtered by name.\n *\n * @param {String=} name Lowercase property name\n * @return {Property[]} List of properties\n */\n getAllProperties(name) {\n let jCalLen = this.jCal[PROPERTY_INDEX].length;\n let i = 0;\n\n if (name) {\n let props = this.jCal[PROPERTY_INDEX];\n let result = [];\n\n for (; i < jCalLen; i++) {\n if (name === props[i][NAME_INDEX]) {\n result.push(\n this._hydrateProperty(i)\n );\n }\n }\n return result;\n } else {\n if (!this._properties ||\n (this._hydratedPropertyCount !== jCalLen)) {\n for (; i < jCalLen; i++) {\n this._hydrateProperty(i);\n }\n }\n\n return this._properties || [];\n }\n }\n\n /**\n * @private\n */\n _removeObjectByIndex(jCalIndex, cache, index) {\n cache = cache || [];\n // remove cached version\n if (cache[index]) {\n let obj = cache[index];\n if (\"parent\" in obj) {\n obj.parent = null;\n }\n }\n\n cache.splice(index, 1);\n\n // remove it from the jCal\n this.jCal[jCalIndex].splice(index, 1);\n }\n\n /**\n * @private\n */\n _removeObject(jCalIndex, cache, nameOrObject) {\n let i = 0;\n let objects = this.jCal[jCalIndex];\n let len = objects.length;\n let cached = this[cache];\n\n if (typeof(nameOrObject) === 'string') {\n for (; i < len; i++) {\n if (objects[i][NAME_INDEX] === nameOrObject) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n return true;\n }\n }\n } else if (cached) {\n for (; i < len; i++) {\n if (cached[i] && cached[i] === nameOrObject) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * @private\n */\n _removeAllObjects(jCalIndex, cache, name) {\n let cached = this[cache];\n\n // Unfortunately we have to run through all children to reset their\n // parent property.\n let objects = this.jCal[jCalIndex];\n let i = objects.length - 1;\n\n // descending search required because splice\n // is used and will effect the indices.\n for (; i >= 0; i--) {\n if (!name || objects[i][NAME_INDEX] === name) {\n this._removeObjectByIndex(jCalIndex, cached, i);\n }\n }\n }\n\n /**\n * Adds a single sub component.\n *\n * @param {Component} component The component to add\n * @return {Component} The passed in component\n */\n addSubcomponent(component) {\n if (!this._components) {\n this._components = [];\n this._hydratedComponentCount = 0;\n }\n\n if (component.parent) {\n component.parent.removeSubcomponent(component);\n }\n\n let idx = this.jCal[COMPONENT_INDEX].push(component.jCal);\n this._components[idx - 1] = component;\n this._hydratedComponentCount++;\n component.parent = this;\n return component;\n }\n\n /**\n * Removes a single component by name or the instance of a specific\n * component.\n *\n * @param {Component|String} nameOrComp Name of component, or component\n * @return {Boolean} True when comp is removed\n */\n removeSubcomponent(nameOrComp) {\n let removed = this._removeObject(COMPONENT_INDEX, '_components', nameOrComp);\n if (removed) {\n this._hydratedComponentCount--;\n }\n return removed;\n }\n\n /**\n * Removes all components or (if given) all components by a particular\n * name.\n *\n * @param {String=} name Lowercase component name\n */\n removeAllSubcomponents(name) {\n let removed = this._removeAllObjects(COMPONENT_INDEX, '_components', name);\n this._hydratedComponentCount = 0;\n return removed;\n }\n\n /**\n * Adds an {@link ICAL.Property} to the component.\n *\n * @param {Property} property The property to add\n * @return {Property} The passed in property\n */\n addProperty(property) {\n if (!(property instanceof Property)) {\n throw new TypeError('must be instance of ICAL.Property');\n }\n\n if (!this._properties) {\n this._properties = [];\n this._hydratedPropertyCount = 0;\n }\n\n if (property.parent) {\n property.parent.removeProperty(property);\n }\n\n let idx = this.jCal[PROPERTY_INDEX].push(property.jCal);\n this._properties[idx - 1] = property;\n this._hydratedPropertyCount++;\n property.parent = this;\n return property;\n }\n\n /**\n * Helper method to add a property with a value to the component.\n *\n * @param {String} name Property name to add\n * @param {String|Number|Object} value Property value\n * @return {Property} The created property\n */\n addPropertyWithValue(name, value) {\n let prop = new Property(name);\n prop.setValue(value);\n\n this.addProperty(prop);\n\n return prop;\n }\n\n /**\n * Helper method that will update or create a property of the given name\n * and sets its value. If multiple properties with the given name exist,\n * only the first is updated.\n *\n * @param {String} name Property name to update\n * @param {String|Number|Object} value Property value\n * @return {Property} The created property\n */\n updatePropertyWithValue(name, value) {\n let prop = this.getFirstProperty(name);\n\n if (prop) {\n prop.setValue(value);\n } else {\n prop = this.addPropertyWithValue(name, value);\n }\n\n return prop;\n }\n\n /**\n * Removes a single property by name or the instance of the specific\n * property.\n *\n * @param {String|Property} nameOrProp Property name or instance to remove\n * @return {Boolean} True, when deleted\n */\n removeProperty(nameOrProp) {\n let removed = this._removeObject(PROPERTY_INDEX, '_properties', nameOrProp);\n if (removed) {\n this._hydratedPropertyCount--;\n }\n return removed;\n }\n\n /**\n * Removes all properties associated with this component, optionally\n * filtered by name.\n *\n * @param {String=} name Lowercase property name\n * @return {Boolean} True, when deleted\n */\n removeAllProperties(name) {\n let removed = this._removeAllObjects(PROPERTY_INDEX, '_properties', name);\n this._hydratedPropertyCount = 0;\n return removed;\n }\n\n /**\n * Returns the Object representation of this component. The returned object\n * is a live jCal object and should be cloned if modified.\n * @return {Object}\n */\n toJSON() {\n return this.jCal;\n }\n\n /**\n * The string representation of this component.\n * @return {String}\n */\n toString() {\n return stringify.component(\n this.jCal, this._designSet\n );\n }\n\n /**\n * Retrieve a time zone definition from the component tree, if any is present.\n * If the tree contains no time zone definitions or the TZID cannot be\n * matched, returns null.\n *\n * @param {String} tzid The ID of the time zone to retrieve\n * @return {Timezone} The time zone corresponding to the ID, or null\n */\n getTimeZoneByID(tzid) {\n // VTIMEZONE components can only appear as a child of the VCALENDAR\n // component; walk the tree if we're not the root.\n if (this.parent) {\n return this.parent.getTimeZoneByID(tzid);\n }\n\n // If there is no time zone cache, we are probably parsing an incomplete\n // file and will have no time zone definitions.\n if (!this._timezoneCache) {\n return null;\n }\n\n if (this._timezoneCache.has(tzid)) {\n return this._timezoneCache.get(tzid);\n }\n\n // If the time zone is not already cached, hydrate it from the\n // subcomponents.\n const zones = this.getAllSubcomponents('vtimezone');\n for (const zone of zones) {\n if (zone.getFirstProperty('tzid').getFirstValue() === tzid) {\n const hydratedZone = new Timezone({\n component: zone,\n tzid: tzid,\n });\n\n this._timezoneCache.set(tzid, hydratedZone);\n\n return hydratedZone;\n }\n }\n\n // Per the standard, we should always have a time zone defined in a file\n // for any referenced TZID, but don't blow up if the file is invalid.\n return null;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * Primary class for expanding recurring rules. Can take multiple rrules, rdates, exdate(s) and\n * iterate (in order) over each next occurrence.\n *\n * Once initialized this class can also be serialized saved and continue iteration from the last\n * point.\n *\n * NOTE: it is intended that this class is to be used with {@link ICAL.Event} which handles recurrence\n * exceptions.\n *\n * @example\n * // assuming event is a parsed ical component\n * var event;\n *\n * var expand = new ICAL.RecurExpansion({\n * component: event,\n * dtstart: event.getFirstPropertyValue('dtstart')\n * });\n *\n * // remember there are infinite rules so it is a good idea to limit the scope of the iterations\n * // then resume later on.\n *\n * // next is always an ICAL.Time or null\n * var next;\n *\n * while (someCondition && (next = expand.next())) {\n * // do something with next\n * }\n *\n * // save instance for later\n * var json = JSON.stringify(expand);\n *\n * //...\n *\n * // NOTE: if the component's properties have changed you will need to rebuild the class and start\n * // over. This only works when the component's recurrence info is the same.\n * var expand = new ICAL.RecurExpansion(JSON.parse(json));\n *\n * @memberof ICAL\n */\nclass RecurExpansion {\n /**\n * Creates a new ICAL.RecurExpansion instance.\n *\n * The options object can be filled with the specified initial values. It can also contain\n * additional members, as a result of serializing a previous expansion state, as shown in the\n * example.\n *\n * @param {Object} options\n * Recurrence expansion options\n * @param {Time} options.dtstart\n * Start time of the event\n * @param {Component=} options.component\n * Component for expansion, required if not resuming.\n */\n constructor(options) {\n this.ruleDates = [];\n this.exDates = [];\n this.fromData(options);\n }\n\n /**\n * True when iteration is fully completed.\n * @type {Boolean}\n */\n complete = false;\n\n /**\n * Array of rrule iterators.\n *\n * @type {RecurIterator[]}\n * @private\n */\n ruleIterators = null;\n\n /**\n * Array of rdate instances.\n *\n * @type {Time[]}\n * @private\n */\n ruleDates = null;\n\n /**\n * Array of exdate instances.\n *\n * @type {Time[]}\n * @private\n */\n exDates = null;\n\n /**\n * Current position in ruleDates array.\n * @type {Number}\n * @private\n */\n ruleDateInc = 0;\n\n /**\n * Current position in exDates array\n * @type {Number}\n * @private\n */\n exDateInc = 0;\n\n /**\n * Current negative date.\n *\n * @type {Time}\n * @private\n */\n exDate = null;\n\n /**\n * Current additional date.\n *\n * @type {Time}\n * @private\n */\n ruleDate = null;\n\n /**\n * Start date of recurring rules.\n *\n * @type {Time}\n */\n dtstart = null;\n\n /**\n * Last expanded time\n *\n * @type {Time}\n */\n last = null;\n\n /**\n * Initialize the recurrence expansion from the data object. The options\n * object may also contain additional members, see the\n * {@link ICAL.RecurExpansion constructor} for more details.\n *\n * @param {Object} options\n * Recurrence expansion options\n * @param {Time} options.dtstart\n * Start time of the event\n * @param {Component=} options.component\n * Component for expansion, required if not resuming.\n */\n fromData(options) {\n let start = formatClassType(options.dtstart, Time);\n\n if (!start) {\n throw new Error('.dtstart (ICAL.Time) must be given');\n } else {\n this.dtstart = start;\n }\n\n if (options.component) {\n this._init(options.component);\n } else {\n this.last = formatClassType(options.last, Time) || start.clone();\n\n if (!options.ruleIterators) {\n throw new Error('.ruleIterators or .component must be given');\n }\n\n this.ruleIterators = options.ruleIterators.map(function(item) {\n return formatClassType(item, RecurIterator);\n });\n\n this.ruleDateInc = options.ruleDateInc;\n this.exDateInc = options.exDateInc;\n\n if (options.ruleDates) {\n this.ruleDates = options.ruleDates.map(item => formatClassType(item, Time));\n this.ruleDate = this.ruleDates[this.ruleDateInc];\n }\n\n if (options.exDates) {\n this.exDates = options.exDates.map(item => formatClassType(item, Time));\n this.exDate = this.exDates[this.exDateInc];\n }\n\n if (typeof(options.complete) !== 'undefined') {\n this.complete = options.complete;\n }\n }\n }\n\n /**\n * Compare two ICAL.Time objects. When the second parameter is a DATE and the first parameter is\n * DATE-TIME, strip the time and compare only the days.\n *\n * @private\n * @param {Time} a The one object to compare\n * @param {Time} b The other object to compare\n */\n _compare_special(a, b) {\n if (!a.isDate && b.isDate)\n return new Time({ year: a.year, month: a.month, day: a.day }).compare(b);\n return a.compare(b);\n }\n\n /**\n * Retrieve the next occurrence in the series.\n * @return {Time}\n */\n next() {\n let iter;\n let next;\n let compare;\n\n let maxTries = 500;\n let currentTry = 0;\n\n while (true) {\n if (currentTry++ > maxTries) {\n throw new Error(\n 'max tries have occurred, rule may be impossible to fulfill.'\n );\n }\n\n next = this.ruleDate;\n iter = this._nextRecurrenceIter(this.last);\n\n // no more matches\n // because we increment the rule day or rule\n // _after_ we choose a value this should be\n // the only spot where we need to worry about the\n // end of events.\n if (!next && !iter) {\n // there are no more iterators or rdates\n this.complete = true;\n break;\n }\n\n // no next rule day or recurrence rule is first.\n if (!next || (iter && next.compare(iter.last) > 0)) {\n // must be cloned, recur will reuse the time element.\n next = iter.last.clone();\n // move to next so we can continue\n iter.next();\n }\n\n // if the ruleDate is still next increment it.\n if (this.ruleDate === next) {\n this._nextRuleDay();\n }\n\n this.last = next;\n\n // check the negative rules\n if (this.exDate) {\n // EXDATE can be in DATE format, but DTSTART is in DATE-TIME format\n compare = this._compare_special(this.last, this.exDate);\n\n if (compare > 0) {\n this._nextExDay();\n }\n\n // if the current rule is excluded skip it.\n if (compare === 0) {\n this._nextExDay();\n continue;\n }\n }\n\n //XXX: The spec states that after we resolve the final\n // list of dates we execute exdate this seems somewhat counter\n // intuitive to what I have seen most servers do so for now\n // I exclude based on the original date not the one that may\n // have been modified by the exception.\n return this.last;\n }\n }\n\n /**\n * Converts object into a serialize-able format. This format can be passed\n * back into the expansion to resume iteration.\n * @return {Object}\n */\n toJSON() {\n function toJSON(item) {\n return item.toJSON();\n }\n\n let result = Object.create(null);\n result.ruleIterators = this.ruleIterators.map(toJSON);\n\n if (this.ruleDates) {\n result.ruleDates = this.ruleDates.map(toJSON);\n }\n\n if (this.exDates) {\n result.exDates = this.exDates.map(toJSON);\n }\n\n result.ruleDateInc = this.ruleDateInc;\n result.exDateInc = this.exDateInc;\n result.last = this.last.toJSON();\n result.dtstart = this.dtstart.toJSON();\n result.complete = this.complete;\n\n return result;\n }\n\n /**\n * Extract all dates from the properties in the given component. The\n * properties will be filtered by the property name.\n *\n * @private\n * @param {Component} component The component to search in\n * @param {String} propertyName The property name to search for\n * @return {Time[]} The extracted dates.\n */\n _extractDates(component, propertyName) {\n let result = [];\n let props = component.getAllProperties(propertyName);\n\n for (let i = 0, len = props.length; i < len; i++) {\n for (let prop of props[i].getValues()) {\n let idx = binsearchInsert(\n result,\n prop,\n (a, b) => a.compare(b)\n );\n\n // ordered insert\n result.splice(idx, 0, prop);\n }\n }\n\n return result;\n }\n\n /**\n * Initialize the recurrence expansion.\n *\n * @private\n * @param {Component} component The component to initialize from.\n */\n _init(component) {\n this.ruleIterators = [];\n\n this.last = this.dtstart.clone();\n\n // to provide api consistency non-recurring\n // events can also use the iterator though it will\n // only return a single time.\n if (!component.hasProperty('rdate') &&\n !component.hasProperty('rrule') &&\n !component.hasProperty('recurrence-id')) {\n this.ruleDate = this.last.clone();\n this.complete = true;\n return;\n }\n\n if (component.hasProperty('rdate')) {\n this.ruleDates = this._extractDates(component, 'rdate');\n\n // special hack for cases where first rdate is prior\n // to the start date. We only check for the first rdate.\n // This is mostly for google's crazy recurring date logic\n // (contacts birthdays).\n if ((this.ruleDates[0]) &&\n (this.ruleDates[0].compare(this.dtstart) < 0)) {\n\n this.ruleDateInc = 0;\n this.last = this.ruleDates[0].clone();\n } else {\n this.ruleDateInc = binsearchInsert(\n this.ruleDates,\n this.last,\n (a, b) => a.compare(b)\n );\n }\n\n this.ruleDate = this.ruleDates[this.ruleDateInc];\n }\n\n if (component.hasProperty('rrule')) {\n let rules = component.getAllProperties('rrule');\n let i = 0;\n let len = rules.length;\n\n let rule;\n let iter;\n\n for (; i < len; i++) {\n rule = rules[i].getFirstValue();\n iter = rule.iterator(this.dtstart);\n this.ruleIterators.push(iter);\n\n // increment to the next occurrence so future\n // calls to next return times beyond the initial iteration.\n // XXX: I find this suspicious might be a bug?\n iter.next();\n }\n }\n\n if (component.hasProperty('exdate')) {\n this.exDates = this._extractDates(component, 'exdate');\n // if we have a .last day we increment the index to beyond it.\n // When DTSTART is in DATE-TIME format, EXDATE is in DATE format and EXDATE is\n // the date of DTSTART, _compare_special finds this out and compareTime fails.\n this.exDateInc = binsearchInsert(\n this.exDates,\n this.last,\n this._compare_special\n );\n\n this.exDate = this.exDates[this.exDateInc];\n }\n }\n\n /**\n * Advance to the next exdate\n * @private\n */\n _nextExDay() {\n this.exDate = this.exDates[++this.exDateInc];\n }\n\n /**\n * Advance to the next rule date\n * @private\n */\n _nextRuleDay() {\n this.ruleDate = this.ruleDates[++this.ruleDateInc];\n }\n\n /**\n * Find and return the recurrence rule with the most recent event and\n * return it.\n *\n * @private\n * @return {?RecurIterator} Found iterator.\n */\n _nextRecurrenceIter() {\n let iters = this.ruleIterators;\n\n if (iters.length === 0) {\n return null;\n }\n\n let len = iters.length;\n let iter;\n let iterTime;\n let iterIdx = 0;\n let chosenIter;\n\n // loop through each iterator\n for (; iterIdx < len; iterIdx++) {\n iter = iters[iterIdx];\n iterTime = iter.last;\n\n // if iteration is complete\n // then we must exclude it from\n // the search and remove it.\n if (iter.completed) {\n len--;\n if (iterIdx !== 0) {\n iterIdx--;\n }\n iters.splice(iterIdx, 1);\n continue;\n }\n\n // find the most recent possible choice\n if (!chosenIter || chosenIter.last.compare(iterTime) > 0) {\n // that iterator is saved\n chosenIter = iter;\n }\n }\n\n // the chosen iterator is returned but not mutated\n // this iterator contains the most recent event.\n return chosenIter;\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * This lets typescript resolve our custom types in the\n * generated d.ts files (jsdoc typedefs are converted to typescript types).\n * Ignore prevents the typedefs from being documented more than once.\n * @ignore\n * @typedef {import(\"./types.js\").frequencyValues} frequencyValues\n * Imports the 'frequencyValues' type from the \"types.js\" module\n * @typedef {import(\"./types.js\").occurrenceDetails} occurrenceDetails\n * Imports the 'occurrenceDetails' type from the \"types.js\" module\n */\n\n/**\n * ICAL.js is organized into multiple layers. The bottom layer is a raw jCal\n * object, followed by the component/property layer. The highest level is the\n * event representation, which this class is part of. See the\n * {@tutorial layers} guide for more details.\n *\n * @memberof ICAL\n */\nclass Event {\n /**\n * Creates a new ICAL.Event instance.\n *\n * @param {Component=} component The ICAL.Component to base this event on\n * @param {Object} [options] Options for this event\n * @param {Boolean=} options.strictExceptions When true, will verify exceptions are related by\n * their UUID\n * @param {Array=} options.exceptions\n * Exceptions to this event, either as components or events. If not\n * specified exceptions will automatically be set in relation of\n * component's parent\n */\n constructor(component, options) {\n if (!(component instanceof Component)) {\n options = component;\n component = null;\n }\n\n if (component) {\n this.component = component;\n } else {\n this.component = new Component('vevent');\n }\n\n this._rangeExceptionCache = Object.create(null);\n this.exceptions = Object.create(null);\n this.rangeExceptions = [];\n\n if (options && options.strictExceptions) {\n this.strictExceptions = options.strictExceptions;\n }\n\n if (options && options.exceptions) {\n options.exceptions.forEach(this.relateException, this);\n } else if (this.component.parent && !this.isRecurrenceException()) {\n this.component.parent.getAllSubcomponents('vevent').forEach(function(event) {\n if (event.hasProperty('recurrence-id')) {\n this.relateException(event);\n }\n }, this);\n }\n }\n\n\n static THISANDFUTURE = 'THISANDFUTURE';\n\n /**\n * List of related event exceptions.\n *\n * @type {Event[]}\n */\n exceptions = null;\n\n /**\n * When true, will verify exceptions are related by their UUID.\n *\n * @type {Boolean}\n */\n strictExceptions = false;\n\n /**\n * Relates a given event exception to this object. If the given component\n * does not share the UID of this event it cannot be related and will throw\n * an exception.\n *\n * If this component is an exception it cannot have other exceptions\n * related to it.\n *\n * @param {Component|Event} obj Component or event\n */\n relateException(obj) {\n if (this.isRecurrenceException()) {\n throw new Error('cannot relate exception to exceptions');\n }\n\n if (obj instanceof Component) {\n obj = new Event(obj);\n }\n\n if (this.strictExceptions && obj.uid !== this.uid) {\n throw new Error('attempted to relate unrelated exception');\n }\n\n let id = obj.recurrenceId.toString();\n\n // we don't sort or manage exceptions directly\n // here the recurrence expander handles that.\n this.exceptions[id] = obj;\n\n // index RANGE=THISANDFUTURE exceptions so we can\n // look them up later in getOccurrenceDetails.\n if (obj.modifiesFuture()) {\n let item = [\n obj.recurrenceId.toUnixTime(), id\n ];\n\n // we keep them sorted so we can find the nearest\n // value later on...\n let idx = binsearchInsert(\n this.rangeExceptions,\n item,\n compareRangeException\n );\n\n this.rangeExceptions.splice(idx, 0, item);\n }\n }\n\n /**\n * Checks if this record is an exception and has the RANGE=THISANDFUTURE\n * value.\n *\n * @return {Boolean} True, when exception is within range\n */\n modifiesFuture() {\n if (!this.component.hasProperty('recurrence-id')) {\n return false;\n }\n\n let range = this.component.getFirstProperty('recurrence-id').getParameter('range');\n return range === Event.THISANDFUTURE;\n }\n\n /**\n * Finds the range exception nearest to the given date.\n *\n * @param {Time} time usually an occurrence time of an event\n * @return {?Event} the related event/exception or null\n */\n findRangeException(time) {\n if (!this.rangeExceptions.length) {\n return null;\n }\n\n let utc = time.toUnixTime();\n let idx = binsearchInsert(\n this.rangeExceptions,\n [utc],\n compareRangeException\n );\n\n idx -= 1;\n\n // occurs before\n if (idx < 0) {\n return null;\n }\n\n let rangeItem = this.rangeExceptions[idx];\n\n /* c8 ignore next 4 */\n if (utc < rangeItem[0]) {\n // sanity check only\n return null;\n }\n\n return rangeItem[1];\n }\n\n /**\n * Returns the occurrence details based on its start time. If the\n * occurrence has an exception will return the details for that exception.\n *\n * NOTE: this method is intend to be used in conjunction\n * with the {@link ICAL.Event#iterator iterator} method.\n *\n * @param {Time} occurrence time occurrence\n * @return {occurrenceDetails} Information about the occurrence\n */\n getOccurrenceDetails(occurrence) {\n let id = occurrence.toString();\n let utcId = occurrence.convertToZone(Timezone.utcTimezone).toString();\n let item;\n let result = {\n //XXX: Clone?\n recurrenceId: occurrence\n };\n\n if (id in this.exceptions) {\n item = result.item = this.exceptions[id];\n result.startDate = item.startDate;\n result.endDate = item.endDate;\n result.item = item;\n } else if (utcId in this.exceptions) {\n item = this.exceptions[utcId];\n result.startDate = item.startDate;\n result.endDate = item.endDate;\n result.item = item;\n } else {\n // range exceptions (RANGE=THISANDFUTURE) have a\n // lower priority then direct exceptions but\n // must be accounted for first. Their item is\n // always the first exception with the range prop.\n let rangeExceptionId = this.findRangeException(\n occurrence\n );\n let end;\n\n if (rangeExceptionId) {\n let exception = this.exceptions[rangeExceptionId];\n\n // range exception must modify standard time\n // by the difference (if any) in start/end times.\n result.item = exception;\n\n let startDiff = this._rangeExceptionCache[rangeExceptionId];\n\n if (!startDiff) {\n let original = exception.recurrenceId.clone();\n let newStart = exception.startDate.clone();\n\n // zones must be same otherwise subtract may be incorrect.\n original.zone = newStart.zone;\n startDiff = newStart.subtractDate(original);\n\n this._rangeExceptionCache[rangeExceptionId] = startDiff;\n }\n\n let start = occurrence.clone();\n start.zone = exception.startDate.zone;\n start.addDuration(startDiff);\n\n end = start.clone();\n end.addDuration(exception.duration);\n\n result.startDate = start;\n result.endDate = end;\n } else {\n // no range exception standard expansion\n end = occurrence.clone();\n end.addDuration(this.duration);\n\n result.endDate = end;\n result.startDate = occurrence;\n result.item = this;\n }\n }\n\n return result;\n }\n\n /**\n * Builds a recur expansion instance for a specific point in time (defaults\n * to startDate).\n *\n * @param {Time=} startTime Starting point for expansion\n * @return {RecurExpansion} Expansion object\n */\n iterator(startTime) {\n return new RecurExpansion({\n component: this.component,\n dtstart: startTime || this.startDate\n });\n }\n\n /**\n * Checks if the event is recurring\n *\n * @return {Boolean} True, if event is recurring\n */\n isRecurring() {\n let comp = this.component;\n return comp.hasProperty('rrule') || comp.hasProperty('rdate');\n }\n\n /**\n * Checks if the event describes a recurrence exception. See\n * {@tutorial terminology} for details.\n *\n * @return {Boolean} True, if the event describes a recurrence exception\n */\n isRecurrenceException() {\n return this.component.hasProperty('recurrence-id');\n }\n\n /**\n * Returns the types of recurrences this event may have.\n *\n * Returned as an object with the following possible keys:\n *\n * - YEARLY\n * - MONTHLY\n * - WEEKLY\n * - DAILY\n * - MINUTELY\n * - SECONDLY\n *\n * @return {Object.}\n * Object of recurrence flags\n */\n getRecurrenceTypes() {\n let rules = this.component.getAllProperties('rrule');\n let i = 0;\n let len = rules.length;\n let result = Object.create(null);\n\n for (; i < len; i++) {\n let value = rules[i].getFirstValue();\n result[value.freq] = true;\n }\n\n return result;\n }\n\n /**\n * The uid of this event\n * @type {String}\n */\n get uid() {\n return this._firstProp('uid');\n }\n\n set uid(value) {\n this._setProp('uid', value);\n }\n\n /**\n * The start date\n * @type {Time}\n */\n get startDate() {\n return this._firstProp('dtstart');\n }\n\n set startDate(value) {\n this._setTime('dtstart', value);\n }\n\n /**\n * The end date. This can be the result directly from the property, or the\n * end date calculated from start date and duration. Setting the property\n * will remove any duration properties.\n * @type {Time}\n */\n get endDate() {\n let endDate = this._firstProp('dtend');\n if (!endDate) {\n let duration = this._firstProp('duration');\n endDate = this.startDate.clone();\n if (duration) {\n endDate.addDuration(duration);\n } else if (endDate.isDate) {\n endDate.day += 1;\n }\n }\n return endDate;\n }\n\n set endDate(value) {\n if (this.component.hasProperty('duration')) {\n this.component.removeProperty('duration');\n }\n this._setTime('dtend', value);\n }\n\n /**\n * The duration. This can be the result directly from the property, or the\n * duration calculated from start date and end date. Setting the property\n * will remove any `dtend` properties.\n * @type {Duration}\n */\n get duration() {\n let duration = this._firstProp('duration');\n if (!duration) {\n return this.endDate.subtractDateTz(this.startDate);\n }\n return duration;\n }\n\n set duration(value) {\n if (this.component.hasProperty('dtend')) {\n this.component.removeProperty('dtend');\n }\n\n this._setProp('duration', value);\n }\n\n /**\n * The location of the event.\n * @type {String}\n */\n get location() {\n return this._firstProp('location');\n }\n\n set location(value) {\n this._setProp('location', value);\n }\n\n /**\n * The attendees in the event\n * @type {Property[]}\n */\n get attendees() {\n //XXX: This is way lame we should have a better\n // data structure for this later.\n return this.component.getAllProperties('attendee');\n }\n\n /**\n * The event summary\n * @type {String}\n */\n get summary() {\n return this._firstProp('summary');\n }\n\n set summary(value) {\n this._setProp('summary', value);\n }\n\n /**\n * The event description.\n * @type {String}\n */\n get description() {\n return this._firstProp('description');\n }\n\n set description(value) {\n this._setProp('description', value);\n }\n\n /**\n * The event color from [rfc7986](https://datatracker.ietf.org/doc/html/rfc7986)\n * @type {String}\n */\n get color() {\n return this._firstProp('color');\n }\n\n set color(value) {\n this._setProp('color', value);\n }\n\n /**\n * The organizer value as an uri. In most cases this is a mailto: uri, but\n * it can also be something else, like urn:uuid:...\n * @type {String}\n */\n get organizer() {\n return this._firstProp('organizer');\n }\n\n set organizer(value) {\n this._setProp('organizer', value);\n }\n\n /**\n * The sequence value for this event. Used for scheduling\n * see {@tutorial terminology}.\n * @type {Number}\n */\n get sequence() {\n return this._firstProp('sequence');\n }\n\n set sequence(value) {\n this._setProp('sequence', value);\n }\n\n /**\n * The recurrence id for this event. See {@tutorial terminology} for details.\n * @type {Time}\n */\n get recurrenceId() {\n return this._firstProp('recurrence-id');\n }\n\n set recurrenceId(value) {\n this._setTime('recurrence-id', value);\n }\n\n /**\n * Set/update a time property's value.\n * This will also update the TZID of the property.\n *\n * TODO: this method handles the case where we are switching\n * from a known timezone to an implied timezone (one without TZID).\n * This does _not_ handle the case of moving between a known\n * (by TimezoneService) timezone to an unknown timezone...\n *\n * We will not add/remove/update the VTIMEZONE subcomponents\n * leading to invalid ICAL data...\n * @private\n * @param {String} propName The property name\n * @param {Time} time The time to set\n */\n _setTime(propName, time) {\n let prop = this.component.getFirstProperty(propName);\n\n if (!prop) {\n prop = new Property(propName);\n this.component.addProperty(prop);\n }\n\n // utc and local don't get a tzid\n if (\n time.zone === Timezone.localTimezone ||\n time.zone === Timezone.utcTimezone\n ) {\n // remove the tzid\n prop.removeParameter('tzid');\n } else {\n prop.setParameter('tzid', time.zone.tzid);\n }\n\n prop.setValue(time);\n }\n\n _setProp(name, value) {\n this.component.updatePropertyWithValue(name, value);\n }\n\n _firstProp(name) {\n return this.component.getFirstPropertyValue(name);\n }\n\n /**\n * The string representation of this event.\n * @return {String}\n */\n toString() {\n return this.component.toString();\n }\n}\n\nfunction compareRangeException(a, b) {\n if (a[0] > b[0]) return 1;\n if (b[0] > a[0]) return -1;\n return 0;\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * The ComponentParser is used to process a String or jCal Object,\n * firing callbacks for various found components, as well as completion.\n *\n * @example\n * var options = {\n * // when false no events will be emitted for type\n * parseEvent: true,\n * parseTimezone: true\n * };\n *\n * var parser = new ICAL.ComponentParser(options);\n *\n * parser.onevent(eventComponent) {\n * //...\n * }\n *\n * // ontimezone, etc...\n *\n * parser.oncomplete = function() {\n *\n * };\n *\n * parser.process(stringOrComponent);\n *\n * @memberof ICAL\n */\nclass ComponentParser {\n /**\n * Creates a new ICAL.ComponentParser instance.\n *\n * @param {Object=} options Component parser options\n * @param {Boolean} options.parseEvent Whether events should be parsed\n * @param {Boolean} options.parseTimezeone Whether timezones should be parsed\n */\n constructor(options) {\n if (typeof(options) === 'undefined') {\n options = {};\n }\n\n for (let [key, value] of Object.entries(options)) {\n this[key] = value;\n }\n }\n\n /**\n * When true, parse events\n *\n * @type {Boolean}\n */\n parseEvent = true;\n\n /**\n * When true, parse timezones\n *\n * @type {Boolean}\n */\n parseTimezone = true;\n\n\n /* SAX like events here for reference */\n\n /**\n * Fired when parsing is complete\n * @callback\n */\n oncomplete = /* c8 ignore next */ function() {};\n\n /**\n * Fired if an error occurs during parsing.\n *\n * @callback\n * @param {Error} err details of error\n */\n onerror = /* c8 ignore next */ function(err) {};\n\n /**\n * Fired when a top level component (VTIMEZONE) is found\n *\n * @callback\n * @param {Timezone} component Timezone object\n */\n ontimezone = /* c8 ignore next */ function(component) {};\n\n /**\n * Fired when a top level component (VEVENT) is found.\n *\n * @callback\n * @param {Event} component Top level component\n */\n onevent = /* c8 ignore next */ function(component) {};\n\n /**\n * Process a string or parse ical object. This function itself will return\n * nothing but will start the parsing process.\n *\n * Events must be registered prior to calling this method.\n *\n * @param {Component|String|Object} ical The component to process,\n * either in its final form, as a jCal Object, or string representation\n */\n process(ical) {\n //TODO: this is sync now in the future we will have a incremental parser.\n if (typeof(ical) === 'string') {\n ical = parse(ical);\n }\n\n if (!(ical instanceof Component)) {\n ical = new Component(ical);\n }\n\n let components = ical.getAllSubcomponents();\n let i = 0;\n let len = components.length;\n let component;\n\n for (; i < len; i++) {\n component = components[i];\n\n switch (component.name) {\n case 'vtimezone':\n if (this.parseTimezone) {\n let tzid = component.getFirstPropertyValue('tzid');\n if (tzid) {\n this.ontimezone(new Timezone({\n tzid: tzid,\n component: component\n }));\n }\n }\n break;\n case 'vevent':\n if (this.parseEvent) {\n this.onevent(new Event(component));\n }\n break;\n default:\n continue;\n }\n }\n\n //XXX: ideally we should do a \"nextTick\" here\n // so in all cases this is actually async.\n this.oncomplete();\n }\n}\n\n/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n * Portions Copyright (C) Philipp Kewisch */\n\n\n/**\n * The main ICAL module. Provides access to everything else.\n *\n * @alias ICAL\n * @namespace ICAL\n * @property {ICAL.design} design\n * @property {ICAL.helpers} helpers\n */\nvar ICALmodule = {\n /**\n * The number of characters before iCalendar line folding should occur\n * @type {Number}\n * @default 75\n */\n foldLength: 75,\n\n debug: false,\n\n /**\n * The character(s) to be used for a newline. The default value is provided by\n * rfc5545.\n * @type {String}\n * @default \"\\r\\n\"\n */\n newLineChar: '\\r\\n',\n\n Binary,\n Component,\n ComponentParser,\n Duration,\n Event,\n Period,\n Property,\n Recur,\n RecurExpansion,\n RecurIterator,\n Time,\n Timezone,\n TimezoneService,\n UtcOffset,\n VCardTime,\n\n parse,\n stringify,\n\n design,\n helpers\n};\n\nexport { ICALmodule as default };\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","import './assets/index-CkcnNJJ0.css';\nimport { NcButton, NcDateTimePickerNative } from \"@nextcloud/vue\";\nimport IconDelete from \"vue-material-design-icons/TrashCanOutline.vue\";\nimport IconAdd from \"vue-material-design-icons/Plus.vue\";\nimport { getFirstDay } from \"@nextcloud/l10n\";\nimport { resolveComponent, createElementBlock, openBlock, Fragment, renderList, createElementVNode, createBlock, toDisplayString, createCommentVNode, createVNode, withCtx } from \"vue\";\nimport { getZoneString } from \"icalzone\";\nimport ICAL from \"ical.js\";\nimport { v4 } from \"uuid\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nconst _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nconst _sfc_main = {\n name: \"CalendarAvailability\",\n components: {\n NcDateTimePickerNative,\n NcButton,\n IconAdd,\n IconDelete\n },\n props: {\n slots: {\n type: Object,\n required: true\n },\n loading: {\n type: Boolean,\n default: false\n },\n l10nTo: {\n type: String,\n required: true\n },\n l10nDeleteSlot: {\n type: String,\n required: true\n },\n l10nEmptyDay: {\n type: String,\n required: true\n },\n l10nAddSlot: {\n type: String,\n required: true\n },\n l10nWeekDayListLabel: {\n type: String,\n default: \"Weekdays\"\n },\n l10nMonday: {\n type: String,\n required: true\n },\n l10nTuesday: {\n type: String,\n required: true\n },\n l10nWednesday: {\n type: String,\n required: true\n },\n l10nThursday: {\n type: String,\n required: true\n },\n l10nFriday: {\n type: String,\n required: true\n },\n l10nSaturday: {\n type: String,\n required: true\n },\n l10nSunday: {\n type: String,\n required: true\n },\n l10nStartPickerLabel: {\n type: Function,\n default: (dayName) => `Pick a start time for ${dayName}`\n },\n l10nEndPickerLabel: {\n type: Function,\n default: (dayName) => `Pick a end time for ${dayName}`\n }\n },\n data() {\n return {\n internalSlots: this.slotsToInternalData(this.slots)\n };\n },\n watch: {\n slots() {\n this.internalSlots = this.slotsToInternalData(this.slots);\n }\n },\n methods: {\n timeStampSlotsToDateObjectSlots(slots) {\n return slots.map((slot) => ({\n start: new Date(slot.start * 1e3),\n end: new Date(slot.end * 1e3)\n }));\n },\n slotsToInternalData() {\n const moToSa = [\n {\n id: \"MO\",\n displayName: this.l10nMonday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.MO)\n },\n {\n id: \"TU\",\n displayName: this.l10nTuesday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.TU)\n },\n {\n id: \"WE\",\n displayName: this.l10nWednesday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.WE)\n },\n {\n id: \"TH\",\n displayName: this.l10nThursday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.TH)\n },\n {\n id: \"FR\",\n displayName: this.l10nFriday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.FR)\n },\n {\n id: \"SA\",\n displayName: this.l10nSaturday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.SA)\n }\n ];\n const sunday = {\n id: \"SU\",\n displayName: this.l10nSunday,\n slots: this.timeStampSlotsToDateObjectSlots(this.slots.SU)\n };\n return getFirstDay() === 1 ? [...moToSa, sunday] : [sunday, ...moToSa];\n },\n internalDataToSlots() {\n const converted = {};\n this.internalSlots.forEach(({ id, slots }) => {\n converted[id] = slots.map((slot) => ({\n start: Math.round(slot.start.getTime() / 1e3),\n end: Math.round(slot.end.getTime() / 1e3)\n }));\n });\n return converted;\n },\n addSlot(day) {\n const start = /* @__PURE__ */ new Date();\n start.setHours(9, 0, 0, 0);\n const end = /* @__PURE__ */ new Date();\n end.setHours(17, 0, 0, 0);\n day.slots.push({\n start,\n end\n });\n this.onChangeSlots();\n },\n removeSlot(day, idx) {\n day.slots.splice(idx, 1);\n this.onChangeSlots();\n },\n onChangeSlots() {\n this.$emit(\"update:slots\", this.internalDataToSlots());\n }\n }\n};\nconst _hoisted_1 = [\"aria-label\"];\nconst _hoisted_2 = { class: \"label-weekday\" };\nconst _hoisted_3 = [\"id\"];\nconst _hoisted_4 = { class: \"availability-slot-group\" };\nconst _hoisted_5 = { class: \"to-text\" };\nconst _hoisted_6 = {\n key: 0,\n class: \"empty-content\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcDateTimePickerNative = resolveComponent(\"NcDateTimePickerNative\");\n const _component_IconDelete = resolveComponent(\"IconDelete\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_IconAdd = resolveComponent(\"IconAdd\");\n return openBlock(), createElementBlock(\"ul\", {\n class: \"week-day-container\",\n \"aria-label\": $props.l10nWeekDayListLabel\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.internalSlots, (day) => {\n return openBlock(), createElementBlock(\"li\", {\n key: `day-label-${day.id}`,\n class: \"day-container\"\n }, [\n createElementVNode(\"div\", _hoisted_2, [\n createElementVNode(\"span\", {\n id: day.displayName + \"-label\"\n }, toDisplayString(day.displayName), 9, _hoisted_3)\n ]),\n (openBlock(), createElementBlock(\"div\", {\n key: `day-slots-${day.id}`,\n class: \"availability-slots\"\n }, [\n createElementVNode(\"div\", _hoisted_4, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(day.slots, (slot, idx) => {\n return openBlock(), createElementBlock(\"div\", {\n key: `slot-${day.id}-${idx}`,\n class: \"availability-slot\"\n }, [\n createVNode(_component_NcDateTimePickerNative, {\n id: `start-${day.id}-${idx}`,\n modelValue: slot.start,\n \"onUpdate:modelValue\": ($event) => slot.start = $event,\n type: \"time\",\n label: $props.l10nStartPickerLabel?.(day.displayName),\n \"hide-label\": true,\n class: \"start-date\",\n onChange: $options.onChangeSlots\n }, null, 8, [\"id\", \"modelValue\", \"onUpdate:modelValue\", \"label\", \"onChange\"]),\n createElementVNode(\"span\", _hoisted_5, toDisplayString($props.l10nTo), 1),\n createVNode(_component_NcDateTimePickerNative, {\n id: `end-${day.id}-${idx}`,\n modelValue: slot.end,\n \"onUpdate:modelValue\": ($event) => slot.end = $event,\n type: \"time\",\n label: $props.l10nEndPickerLabel?.(day.displayName),\n \"hide-label\": true,\n class: \"end-date\",\n onChange: $options.onChangeSlots\n }, null, 8, [\"id\", \"modelValue\", \"onUpdate:modelValue\", \"label\", \"onChange\"]),\n (openBlock(), createBlock(_component_NcButton, {\n key: `slot-${day.id}-${idx}-btn`,\n type: \"tertiary\",\n class: \"button\",\n \"aria-label\": $props.l10nDeleteSlot,\n title: $props.l10nDeleteSlot,\n onClick: ($event) => $options.removeSlot(day, idx)\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconDelete, { size: 20 })\n ]),\n _: 2\n }, 1032, [\"aria-label\", \"title\", \"onClick\"]))\n ]);\n }), 128))\n ]),\n day.slots.length === 0 ? (openBlock(), createElementBlock(\"span\", _hoisted_6, toDisplayString($props.l10nEmptyDay), 1)) : createCommentVNode(\"\", true)\n ])),\n (openBlock(), createBlock(_component_NcButton, {\n key: `add-slot-${day.id}`,\n disabled: $props.loading,\n class: \"add-another button\",\n title: $props.l10nAddSlot,\n \"aria-label\": $props.l10nAddSlot,\n onClick: ($event) => $options.addSlot(day)\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconAdd, { size: 20 })\n ]),\n _: 2\n }, 1032, [\"disabled\", \"title\", \"aria-label\", \"onClick\"]))\n ]);\n }), 128))\n ], 8, _hoisted_1);\n}\nconst CalendarAvailability = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-3ef03e87\"]]);\nconst logger = getLoggerBuilder().detectUser().setApp(\"@nextcloud/calendar-availability-vue\").build();\nfunction getEmptySlots() {\n return {\n MO: [],\n TU: [],\n WE: [],\n TH: [],\n FR: [],\n SA: [],\n SU: []\n };\n}\nfunction vavailabilityToSlots(vavailability) {\n const parsedIcal = ICAL.parse(vavailability);\n const vcalendarComp = new ICAL.Component(parsedIcal);\n const vavailabilityComp = vcalendarComp.getFirstSubcomponent(\"vavailability\");\n let timezoneId;\n const timezoneComp = vcalendarComp.getFirstSubcomponent(\"vtimezone\");\n if (timezoneComp) {\n timezoneId = timezoneComp.getFirstProperty(\"tzid\").getFirstValue();\n }\n const availableComps = vavailabilityComp.getAllSubcomponents(\"available\");\n const slots = getEmptySlots();\n availableComps.forEach((availableComp) => {\n const startIcalDate = availableComp.getFirstProperty(\"dtstart\").getFirstValue();\n const endIcalDate = availableComp.getFirstProperty(\"dtend\").getFirstValue();\n const rrule = availableComp.getFirstProperty(\"rrule\");\n const start = /* @__PURE__ */ new Date();\n start.setHours(startIcalDate.hour, startIcalDate.minute, 0, 0);\n const end = /* @__PURE__ */ new Date();\n end.setHours(endIcalDate.hour, endIcalDate.minute, 0, 0);\n if (rrule.getFirstValue().freq !== \"WEEKLY\") {\n logger.warn(\"rrule not supported\", {\n rrule: rrule.toICALString()\n });\n return;\n }\n rrule.getFirstValue().getComponent(\"BYDAY\").forEach((day) => {\n slots[day].push({\n start: start.getTime() / 1e3,\n end: end.getTime() / 1e3\n });\n });\n });\n return {\n slots,\n timezoneId\n };\n}\nfunction slotsToVavailability(slots, timezoneId) {\n const vcalendarComp = new ICAL.Component(\"vcalendar\");\n vcalendarComp.addPropertyWithValue(\"prodid\", \"Nextcloud DAV app\");\n const predefinedTimezoneIcal = getZoneString(timezoneId);\n if (predefinedTimezoneIcal) {\n const timezoneComp = new ICAL.Component(ICAL.parse(predefinedTimezoneIcal));\n vcalendarComp.addSubcomponent(timezoneComp);\n } else {\n const timezoneComp = new ICAL.Component(\"vtimezone\");\n timezoneComp.addPropertyWithValue(\"tzid\", timezoneId);\n vcalendarComp.addSubcomponent(timezoneComp);\n }\n const vavailabilityComp = new ICAL.Component(\"vavailability\");\n const deduplicated = slots.reduce((acc, slot) => {\n const start = new Date(slot.start * 1e3);\n const end = new Date(slot.end * 1e3);\n const key = [\n start.getHours(),\n start.getMinutes(),\n end.getHours(),\n end.getMinutes()\n ].join(\"-\");\n return {\n ...acc,\n [key]: [...acc[key] ?? [], slot]\n };\n }, {});\n Object.keys(deduplicated).map((key) => {\n const slots2 = deduplicated[key];\n const start = slots2[0].start;\n const end = slots2[0].end;\n const days = slots2.map((slot) => slot.day).filter((day, index, self) => self.indexOf(day) === index);\n const availableComp = new ICAL.Component(\"available\");\n const startTimeProp = availableComp.addPropertyWithValue(\"dtstart\", ICAL.Time.fromJSDate(new Date(start * 1e3), false));\n startTimeProp.setParameter(\"tzid\", timezoneId);\n const endTimeProp = availableComp.addPropertyWithValue(\"dtend\", ICAL.Time.fromJSDate(new Date(end * 1e3), false));\n endTimeProp.setParameter(\"tzid\", timezoneId);\n availableComp.addPropertyWithValue(\"uid\", v4());\n availableComp.addPropertyWithValue(\"rrule\", {\n freq: \"WEEKLY\",\n byday: days\n });\n return availableComp;\n }).map(vavailabilityComp.addSubcomponent.bind(vavailabilityComp));\n vcalendarComp.addSubcomponent(vavailabilityComp);\n return vcalendarComp.toString();\n}\nexport {\n CalendarAvailability,\n getEmptySlots,\n slotsToVavailability,\n vavailabilityToSlots\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { WebDAVClient } from 'webdav'\n\nimport { getCurrentUser, getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { createClient } from 'webdav'\n\nlet client: WebDAVClient | undefined = undefined\n\n/**\n * Get the WebDAV client for the current user on the calendars endpoint.\n */\nexport function getClient(): WebDAVClient {\n\tif (!client) {\n\t\t// init webdav client\n\t\tconst remote = generateRemoteUrl(`dav/calendars/${getCurrentUser()!.uid}`)\n\t\tclient = createClient(remote)\n\n\t\t// set CSRF token header\n\t\tconst setHeaders = (token) => {\n\t\t\tclient!.setHeaders({\n\t\t\t\t// Add this so the server knows it is an request from the browser\n\t\t\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t\t\t// Inject user auth\n\t\t\t\trequesttoken: token ?? '',\n\t\t\t})\n\t\t}\n\n\t\t// refresh headers when request token changes\n\t\tonRequestTokenUpdate(setHeaders)\n\t\tsetHeaders(getRequestToken())\n\t}\n\n\treturn client\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tslotsToVavailability,\n\tvavailabilityToSlots,\n} from '@nextcloud/calendar-availability-vue'\nimport { parseXML } from 'webdav'\nimport { getClient } from '../dav/client.ts'\nimport { logger } from './logger.ts'\n\n/**\n * Get an object representing empty time slots for each day of the week.\n */\nexport function getEmptySlots() {\n\treturn {\n\t\tMO: [],\n\t\tTU: [],\n\t\tWE: [],\n\t\tTH: [],\n\t\tFR: [],\n\t\tSA: [],\n\t\tSU: [],\n\t}\n}\n\n/**\n * Find the availability of the schedule inbox.\n */\nexport async function findScheduleInboxAvailability() {\n\tconst response = await getClient().customRequest('inbox', {\n\t\tmethod: 'PROPFIND',\n\t\tdata: `\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t \n\t\t\t`,\n\t})\n\n\tconst xml = await parseXML(await response.text())\n\n\tif (!xml) {\n\t\treturn undefined\n\t}\n\n\tconst availability = xml?.multistatus?.response[0]?.propstat?.prop['calendar-availability']\n\tif (!availability) {\n\t\treturn undefined\n\t}\n\n\treturn vavailabilityToSlots(availability)\n}\n\n/**\n * Save the availability of the schedule inbox.\n *\n * @param slots - The availability slots to save.\n * @param timezoneId - The timezone identifier.\n */\nexport async function saveScheduleInboxAvailability(slots, timezoneId) {\n\tconst all = [...Object.keys(slots).flatMap((dayId) => slots[dayId].map((slot) => ({\n\t\t...slot,\n\t\tday: dayId,\n\t})))]\n\n\tconst vavailability = slotsToVavailability(all, timezoneId)\n\n\tlogger.debug('New availability ical created', {\n\t\tvavailability,\n\t})\n\n\tawait getClient().customRequest('inbox', {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t \n\t\t\t\t\n\t\t\t\t ${vavailability}\n\t\t\t\t\n\t\t\t \n\t\t\t`,\n\t})\n}\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Enable user status automation based on availability\n */\nexport async function enableUserStatusAutomation(): Promise {\n\tawait axios.post(\n\t\tgenerateOcsUrl('/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\tappId: 'dav',\n\t\t\tconfigKey: 'user_status_automation',\n\t\t}),\n\t\t{\n\t\t\tconfigValue: 'yes',\n\t\t},\n\t)\n}\n\n/**\n * Disable user status automation based on availability\n */\nexport async function disableUserStatusAutomation(): Promise {\n\tawait axios.delete(generateOcsUrl('/apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\tappId: 'dav',\n\t\tconfigKey: 'user_status_automation',\n\t}))\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport UserAvailability from './views/UserAvailability.vue'\n\nconst app = createApp(UserAvailability)\napp.mount('#settings-personal-availability')\n"],"names":["formatDateAsYMD","date","year","month","day","inputAdjustDate","timezoneOffsetMilliseconds","_sfc_main","NcButton","NcTextField","NcTextArea","NcDateTimePickerNative","NcSelectUsers","t","firstDay","lastDay","status","message","replacementUserId","replacementUserDisplayName","loadState","firstDayDate","firstDayInputAdjusted","lastDayInputAdjusted","result","query","search","shareType","ShareType","request","axios","generateOcsUrl","error","logger","data","exact","rawExactSuggestions","rawSuggestions","exactSuggestions","share","suggestions","allSuggestions","nameCounts","item","debounce","args","getCurrentUser","showSuccess","showError","_hoisted_1","_createElementBlock","_normalizeClass","_ctx","$options","_createElementVNode","_createVNode","_component_NcDateTimePickerNative","$data","$event","$setup","_toDisplayString","_component_NcSelectUsers","_component_NcTextField","_component_NcTextArea","_component_NcButton","zones","dist","zones_1","require$$0","renderZoneSub","n","f","r","s","getZoneLines","zoneName","includeWrapper","zoneData","d","getZoneString","Binary","aString","aValue","b64","o1","o2","o3","h1","h2","h3","h4","bits","i","ac","enc","tmp_arr","dec","DURATION_LETTERS","DATA_PROPS_TO_COPY","Duration","aSeconds","string","aStr","pos","dict","chunks","type","numeric","parseDurationChunk","aData","seconds","secs","trunc","prop","aOther","thisSeconds","otherSeconds","str","hasWeeks","letter","number","object","num","isStrictlyNaN","Period","parts","options","Time","end","aProp","aLenient","fromDateOrDateTimeString","dateProp","dt","_daysInMonth","days","aDayOfYear","aYear","doy","tt","is_leap","strictParseInt","zone","zoneId","Timezone","timeData","aProperty","aDate","useUTC","aZone","aWeekStart","dow","wkst","yr","LTRS","dom","#epochTime","a","b","attr","val","hour","minute","second","timezone","key","value","TimezoneService","firstDow","dowCacheKey","q","m","Y","h","aFirstDayOfWeek","delta","aDayOfWeek","aPos","daysInMonth","weekday","start","otherDay","startDow","offset","endDow","wnCacheKey","week1","isoyear","daysBetween","answer","aDuration","mult","unixTime","other","tz","rc","copy","zone_equals","design","pad2","aExtraDays","aExtraHours","aExtraMinutes","aExtraSeconds","aTime","minutesOverflow","hoursOverflow","daysOverflow","yearsOverflow","time","ms","len","CHAR","VALUE_DELIMITER","PARAM_DELIMITER","PARAM_NAME_DELIMITER","DEFAULT_VALUE_TYPE$1","DEFAULT_PARAM_TYPE","RFC6868_REPLACE_MAP$1","parse","input","state","root","err","line","ParserError","designSet","valuePos","paramPos","lastParamIndex","lastValuePos","name","params","parsedParams","parsedParamLength","accumulator","currentValue","newComponent","valueType","multiValue","structuredValue","propertyDetails","splitName","ungroupedName","lastParam","delim","lcname","mvdelim","extendedValue","propValuePos","nextPos","length_before","delimiter","x","buffer","innerMulti","lastPos","unescapedIndexOf","callback","firstChar","newlineOffset","OPTIONS","from_zone","to_zone","utcOffset","#utcTimezone","#localTimezone","change","hours","minutes","Component","jCal","tt_change","change_num","change_num_to_use","step","clone","zone_change","tmp_change","prev_zone_change","want_daylight","idx","binsearchInsert","today","changesEndYear","subcomps","compLen","compIdx","aComponent","changes","dtstart","convert_tzoffset","init_changes","changebase","props","rdate","rrule","iterator","occ","utc","tzid","updateTimezones","vcal","allsubs","properties","vtimezones","reqTzid","comp","formatClassType","list","seekVal","cmpfunc","low","high","mid","cmpval","aSrc","aDeep","arr","obj","foldline","aLine","line_length","cp","ICALmodule","extend","source","target","descr","helpers","UtcOffset","instance","factor","VCardTime","aIcalType","part","v","e","tmz","splitzone","tm","dtlen","tmlen","hasDashDate","hasDashTime","o","icaltype","y","mm","hasYear","hasMonth","hasDay","hasHour","hasMinute","hasSecond","datepart","timepart","RecurIterator","Recur","InvalidRecurrenceRuleError","wkdy","dayName","untilYear","tempLast","initLast","bydow","dayOfMonth","normalized","again","before","valid","invalid_count","inc","this_freq","end_of_data","week_no","rules","newRules","ruleIdx","rule","isInit","byMonthDay","byDay","dateIdx","dateLen","dayLen","dataIsValid","self","initMonth","nextMonth","monthsCounter","next","dayIdx","data_valid","setpos","setpos_total","last_day","coded_day","startOfWeek","matches","aRuleType","aInterval","aDateAttr","aFollowingAttr","aPreviousIncr","has_by_rule","dta","years","aFactor","aNextIncrement","nextunit","validWeeks","monthIdx","first_week","last_week","weekIdx","partCount","t1","t2","monthday","t3","first_dow","doy_offset","last_dow","by_month_day","spIndex","bydayParts","month_day","first_matching_day","last_matching_day","expandedDays","weekno","daysInYear","days_list","tmp","start_dow","end_dow","end_year_day","tmp_start_doy","first","last","this_dow","aRules","j","one","two","indexMapValue","ruleMapValue","pass","ruleType","bydata","weekNo","req","deftime","VALID_DAY_NAMES","VALID_BYDAY_PART","DOW_MAP","REVERSE_DOW_MAP","entry","ALLOWED_FREQ","fmtIcal","values","ucname","partDesign","partArr","partSet","optionDesign","aStart","aType","aValues","aStartTime","aRecurrenceId","iter","uckey","res","k","kparts","parseNumericValue","min","max","FROM_ICAL_NEWLINE","TO_ICAL_NEWLINE","FROM_VCARD_NEWLINE","TO_VCARD_NEWLINE","createTextType","fromNewline","toNewline","structuredEscape","replaceNewline","regEx","DEFAULT_TYPE_TEXT","DEFAULT_TYPE_TEXT_MULTI","DEFAULT_TYPE_TEXT_STRUCTURED","DEFAULT_TYPE_INTEGER","DEFAULT_TYPE_DATETIME_DATE","DEFAULT_TYPE_DATETIME","DEFAULT_TYPE_URI","DEFAULT_TYPE_UTCOFFSET","DEFAULT_TYPE_RECUR","DEFAULT_TYPE_DATE_ANDOR_TIME","replaceNewlineReplace","newline","commonProperties","commonValues","parsed","icalParams","icalValues","aBinary","aRecur","icalProperties","vcardValues","isFromIcal","lastChar","signChar","sign","c","vcardParams","vcardProperties","vcard3Values","vcard3Params","vcard3Properties","icalSet","vcardSet","vcard3Set","componentName","LINE_ENDING","DEFAULT_VALUE_TYPE","RFC6868_REPLACE_MAP","stringify","component","propIdx","propLen","designSetName","comps","property","noFold","jsName","groupName","paramName","paramDesign","propDetails","isDefault","force","NAME_INDEX$1","PROP_INDEX","TYPE_INDEX","VALUE_INDEX","Property","parent","p","designSetChanged","index","parameters","details","NAME_INDEX","PROPERTY_INDEX","COMPONENT_INDEX","PROPERTY_NAME_INDEX","PROPERTY_VALUE_INDEX","parentDesign","versionProp","jCalLen","jCalIndex","cache","nameOrObject","objects","cached","nameOrComp","removed","nameOrProp","hydratedZone","RecurExpansion","compare","maxTries","currentTry","toJSON","propertyName","iters","iterTime","iterIdx","chosenIter","Event","event","id","compareRangeException","rangeItem","occurrence","utcId","rangeExceptionId","exception","startDiff","original","newStart","startTime","endDate","duration","propName","ComponentParser","ical","components","byteToHex","unsafeStringify","getRandomValues","rnds8","rng","randomUUID","native","_v4","buf","rnds","v4","_export_sfc","sfc","IconAdd","IconDelete","slots","slot","moToSa","sunday","getFirstDay","converted","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_sfc_render","_cache","$props","resolveComponent","_component_IconDelete","_component_IconAdd","openBlock","createElementBlock","Fragment","renderList","createElementVNode","toDisplayString","createVNode","createBlock","withCtx","createCommentVNode","CalendarAvailability","getLoggerBuilder","getEmptySlots","vavailabilityToSlots","vavailability","parsedIcal","ICAL","vcalendarComp","vavailabilityComp","timezoneId","timezoneComp","availableComps","availableComp","startIcalDate","endIcalDate","slotsToVavailability","predefinedTimezoneIcal","deduplicated","acc","slots2","client","getClient","remote","generateRemoteUrl","createClient","setHeaders","token","onRequestTokenUpdate","getRequestToken","findScheduleInboxAvailability","response","xml","parseXML","availability","saveScheduleInboxAvailability","all","dayId","enableUserStatusAutomation","disableUserStatusAutomation","getCapabilities","loading","ref","saving","automated","onMounted","slotData","save","_unref","NcCheckboxRadioSwitch","hideAbsenceSettings","NcSettingsSection","AvailabilityForm","_createBlock","AbsenceForm","app","createApp","UserAvailability"],"mappings":"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AAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iCACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,8BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,0BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,6BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iCACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,0BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,6BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,6BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,yBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,+BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,0BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,6BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,0BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,8BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,8BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,8BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,8BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iCACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,yBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,4BACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,QACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,QACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,yBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,wBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,QACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,UACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,aACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,YACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,WACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,UACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,UACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,WACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,cACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,OACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,uBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,QACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,QACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,EACL,EAAK,MACzB,GAEY,EAAK,CACD,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,kBACL,EAAK,CACD,EAAK,GACL,EAAK,KACzB,CACA,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,sBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,MACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,qBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,OACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,eACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,kBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,iBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,oBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,gBACA,CACI,EAAK,CACD,EAAK,QACL,EAAK,KACrB,CACA,GAEI,CACI,mBACA,CACI,EAAK,CACD,EAAK,QACL,E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","x_google_ignoreList":[2,3,4,5,6,7,8,9]} \ No newline at end of file diff --git a/dist/encryption-encryption.mjs b/dist/encryption-encryption.mjs index 82f90f1524b40..b988d55da8fe5 100644 --- a/dist/encryption-encryption.mjs +++ b/dist/encryption-encryption.mjs @@ -1,2 +1,2 @@ -import{a as o,b as i}from"./index-Cp0kcsps.chunk.mjs";import{c as r}from"./index-CkGt55pS.chunk.mjs";import{s as a}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import"./Web-DYqXJUev.chunk.mjs";import"./public-C1mLBHT3.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";window.addEventListener("DOMContentLoaded",async function(){if(o()===null)return;const{data:t}=await r.get(i("/apps/encryption/ajax/getStatus"));t.status==="interactionNeeded"&&a(t.data.message)}); +import{a as o,b as i}from"./index-Cp0kcsps.chunk.mjs";import{c as r}from"./index-CkGt55pS.chunk.mjs";import{s as a}from"./index-mH69OG7L.chunk.mjs";import"./Web-DYqXJUev.chunk.mjs";import"./public-C1mLBHT3.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";window.addEventListener("DOMContentLoaded",async function(){if(o()===null)return;const{data:t}=await r.get(i("/apps/encryption/ajax/getStatus"));t.status==="interactionNeeded"&&a(t.data.message)}); //# sourceMappingURL=encryption-encryption.mjs.map diff --git a/dist/encryption-encryption.mjs.map b/dist/encryption-encryption.mjs.map index e71bdb185fe27..baefdb915b80c 100644 --- a/dist/encryption-encryption.mjs.map +++ b/dist/encryption-encryption.mjs.map @@ -1 +1 @@ -{"version":3,"file":"encryption-encryption.mjs","sources":["../build/frontend/apps/encryption/src/encryption.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { showWarning } from '@nextcloud/dialogs'\nimport { generateUrl } from '@nextcloud/router'\n\nwindow.addEventListener('DOMContentLoaded', async function() {\n\tif (getCurrentUser() === null) {\n\t\t// skip for public pages\n\t\treturn\n\t}\n\n\tconst { data } = await axios.get(generateUrl('/apps/encryption/ajax/getStatus'))\n\tif (data.status === 'interactionNeeded') {\n\t\tshowWarning(data.data.message)\n\t}\n})\n"],"names":["getCurrentUser","data","axios","generateUrl","showWarning"],"mappings":"wjBAUA,OAAO,iBAAiB,mBAAoB,gBAAiB,CAC5D,GAAIA,EAAA,IAAqB,KAExB,OAGD,KAAM,CAAE,KAAAC,GAAS,MAAMC,EAAM,IAAIC,EAAY,iCAAiC,CAAC,EAC3EF,EAAK,SAAW,qBACnBG,EAAYH,EAAK,KAAK,OAAO,CAE/B,CAAC"} \ No newline at end of file +{"version":3,"file":"encryption-encryption.mjs","sources":["../build/frontend/apps/encryption/src/encryption.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { showWarning } from '@nextcloud/dialogs'\nimport { generateUrl } from '@nextcloud/router'\n\nwindow.addEventListener('DOMContentLoaded', async function() {\n\tif (getCurrentUser() === null) {\n\t\t// skip for public pages\n\t\treturn\n\t}\n\n\tconst { data } = await axios.get(generateUrl('/apps/encryption/ajax/getStatus'))\n\tif (data.status === 'interactionNeeded') {\n\t\tshowWarning(data.data.message)\n\t}\n})\n"],"names":["getCurrentUser","data","axios","generateUrl","showWarning"],"mappings":"+iBAUA,OAAO,iBAAiB,mBAAoB,gBAAiB,CAC5D,GAAIA,EAAA,IAAqB,KAExB,OAGD,KAAM,CAAE,KAAAC,GAAS,MAAMC,EAAM,IAAIC,EAAY,iCAAiC,CAAC,EAC3EF,EAAK,SAAW,qBACnBG,EAAYH,EAAK,KAAK,OAAO,CAE/B,CAAC"} \ No newline at end of file diff --git a/dist/encryption-settings_admin.mjs b/dist/encryption-settings_admin.mjs index f33987f279587..f074f084e8c2f 100644 --- a/dist/encryption-settings_admin.mjs +++ b/dist/encryption-settings_admin.mjs @@ -1,2 +1,2 @@ -import{b as k,n as x,z as T,o as p,c as f,u as e,w as c,j as g,t as w,l as s,p as A,f as P,k as m,h,L as K,v as N,y as j,F as H,g as z,e as D}from"./Web-DYqXJUev.chunk.mjs";import{_ as F,l as I}from"./public-C1mLBHT3.chunk.mjs";import{t as o}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{w as M}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as U}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{b as S}from"./index-Cp0kcsps.chunk.mjs";import{N as B}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{N as E}from"./mdi-B6W_Xvj-.chunk.mjs";import{N as V}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import{c as R}from"./index-CkGt55pS.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import{N as $}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{d as L}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{N as q,l as C,I as O}from"./types-CwtJCZU3.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const G=k({__name:"SettingsAdminHomeStorage",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(b){const a=x(b,"modelValue"),i=s(!1);return T(a,()=>{i.value=!0}),M(a,async(t,n)=>{if(t===n){i.value=!1;return}try{await R.post(S("/apps/encryption/ajax/setEncryptHomeStorage"),{encryptHomeStorage:t})}finally{i.value=!1}},{debounce:800}),(t,n)=>(p(),f(e(B),{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=r=>a.value=r),loading:i.value,description:e(o)("encryption","Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted"),type:"switch"},{default:c(()=>[g(w(e(o)("encryption","Encrypt the home storage")),1)]),_:1},8,["modelValue","loading","description"]))}}),J=k({__name:"SettingsAdminRecoveryKey",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(b){const a=x(b,"modelValue"),i=A("form"),t=s(!1),n=s(!1),r=s(""),l=s(""),v=N(()=>r.value===l.value);async function _(){if(!t.value&&v.value){n.value=!1,t.value=!0;try{const{data:d}=await R.post(S("/apps/encryption/ajax/adminRecovery"),{adminEnableRecovery:!a.value,recoveryPassword:r.value,confirmPassword:l.value});a.value=!a.value,r.value=l.value="",i.value?.reset(),d.data.message&&L(d.data.message)}catch(d){n.value=!0,C.error("Failed to update recovery key settings",{error:d})}finally{t.value=!1}}}return(d,u)=>(p(),P("form",{ref:"form",onSubmit:K(_,["prevent"])},[m(e(q),{label:a.value?e(o)("encryption","Disable recovery key"):e(o)("encryption","Enable recovery key"),description:e(o)("encryption","The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten.")},{default:c(()=>[m(e(V),{modelValue:r.value,"onUpdate:modelValue":u[0]||(u[0]=y=>r.value=y),required:"",name:"password",label:e(o)("encryption","Recovery key password")},null,8,["modelValue","label"]),m(e(V),{modelValue:l.value,"onUpdate:modelValue":u[1]||(u[1]=y=>l.value=y),required:"",name:"confirmPassword",error:!!l.value&&!v.value,helperText:v.value||!l.value?"":e(o)("encryption","Passwords fields do not match"),label:e(o)("encryption","Repeat recovery key password")},null,8,["modelValue","error","helperText","label"]),m(e(U),{type:"submit",variant:a.value?"error":"primary"},{default:c(()=>[g(w(a.value?e(o)("encryption","Disable recovery key"):e(o)("encryption","Enable recovery key")),1)]),_:1},8,["variant"]),n.value?(p(),f(e(E),{key:0,type:"error"},{default:c(()=>[g(w(e(o)("encryption","An error occurred while updating the recovery key settings. Please try again.")),1)]),_:1})):h("",!0)]),_:1},8,["label","description"])],544))}}),Q=k({__name:"SettingsAdminRecoveryKeyChange",setup(b){const a=A("form"),i=s(!1),t=s(!1),n=s(""),r=s(""),l=s(""),v=N(()=>r.value===l.value);async function _(){if(!i.value&&v.value){t.value=!1,i.value=!0;try{await R.post(S("/apps/encryption/ajax/changeRecoveryPassword"),{oldPassword:n.value,newPassword:r.value,confirmPassword:l.value}),n.value=r.value=l.value="",a.value?.reset()}catch(d){t.value=!0,C.error("Failed to update recovery key settings",{error:d})}finally{i.value=!1}}}return(d,u)=>(p(),P("form",{ref:"form",class:j(d.$style.settingsAdminRecoveryKeyChange),onSubmit:K(_,["prevent"])},[m(e(q),{label:e(o)("encryption","Change recovery key password")},{default:c(()=>[m(e(V),{modelValue:n.value,"onUpdate:modelValue":u[0]||(u[0]=y=>n.value=y),required:"",name:"oldPassword",label:e(o)("encryption","Old recovery key password")},null,8,["modelValue","label"]),m(e(V),{modelValue:r.value,"onUpdate:modelValue":u[1]||(u[1]=y=>r.value=y),required:"",name:"password",label:e(o)("encryption","New recovery key password")},null,8,["modelValue","label"]),m(e(V),{modelValue:l.value,"onUpdate:modelValue":u[2]||(u[2]=y=>l.value=y),required:"",name:"confirmPassword",error:!v.value&&!!l.value,helperText:v.value||!l.value?"":e(o)("encryption","Passwords fields do not match"),label:e(o)("encryption","Repeat new recovery key password")},null,8,["modelValue","error","helperText","label"]),m(e(U),{type:"submit",variant:"primary"},{default:c(()=>[g(w(e(o)("encryption","Change recovery key password")),1)]),_:1}),t.value?(p(),f(e(E),{key:0,type:"error"},{default:c(()=>[g(w(e(o)("encryption","An error occurred while changing the recovery key password. Please try again.")),1)]),_:1})):h("",!0)]),_:1},8,["label"])],34))}}),W="_settingsAdminRecoveryKeyChange_12rwr_2",X={settingsAdminRecoveryKeyChange:W},Y={$style:X},Z=F(Q,[["__cssModules",Y]]),ee=k({__name:"SettingsAdmin",setup(b){const a=I("encryption","adminSettings"),i=s(a.encryptHomeStorage),t=s(a.recoveryEnabled);return(n,r)=>(p(),f(e($),{name:e(o)("encryption","Default encryption module")},{default:c(()=>[e(a).initStatus===e(O).NotInitialized&&!e(a).masterKeyEnabled?(p(),f(e(E),{key:0,type:"warning"},{default:c(()=>[g(w(e(o)("encryption","Encryption app is enabled but your keys are not initialized, please log-out and log-in again")),1)]),_:1})):(p(),P(H,{key:1},[m(G,{modelValue:i.value,"onUpdate:modelValue":r[0]||(r[0]=l=>i.value=l)},null,8,["modelValue"]),r[2]||(r[2]=z("br",null,null,-1)),e(a).masterKeyEnabled?h("",!0):(p(),f(J,{key:0,modelValue:t.value,"onUpdate:modelValue":r[1]||(r[1]=l=>t.value=l)},null,8,["modelValue"])),!e(a).masterKeyEnabled&&t.value?(p(),f(Z,{key:1})):h("",!0)],64))]),_:1},8,["name"]))}}),ae=D(ee);ae.mount("#encryption-settings-section"); +import{b as k,n as x,z as T,o as p,c as f,u as e,w as c,j as g,t as w,l as s,p as A,f as P,k as m,h,L as K,v as N,y as j,F as H,g as z,e as D}from"./Web-DYqXJUev.chunk.mjs";import{_ as F,l as I}from"./public-C1mLBHT3.chunk.mjs";import{t as o}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{w as M}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as U}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{b as S}from"./index-Cp0kcsps.chunk.mjs";import{N as B}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{N as E}from"./mdi-B6W_Xvj-.chunk.mjs";import{N as V}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import{c as R}from"./index-CkGt55pS.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import{N as $}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{d as L}from"./index-mH69OG7L.chunk.mjs";import{N as q,l as C,I as O}from"./types-CwtJCZU3.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const G=k({__name:"SettingsAdminHomeStorage",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(b){const a=x(b,"modelValue"),i=s(!1);return T(a,()=>{i.value=!0}),M(a,async(t,n)=>{if(t===n){i.value=!1;return}try{await R.post(S("/apps/encryption/ajax/setEncryptHomeStorage"),{encryptHomeStorage:t})}finally{i.value=!1}},{debounce:800}),(t,n)=>(p(),f(e(B),{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=r=>a.value=r),loading:i.value,description:e(o)("encryption","Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted"),type:"switch"},{default:c(()=>[g(w(e(o)("encryption","Encrypt the home storage")),1)]),_:1},8,["modelValue","loading","description"]))}}),J=k({__name:"SettingsAdminRecoveryKey",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(b){const a=x(b,"modelValue"),i=A("form"),t=s(!1),n=s(!1),r=s(""),l=s(""),v=N(()=>r.value===l.value);async function _(){if(!t.value&&v.value){n.value=!1,t.value=!0;try{const{data:d}=await R.post(S("/apps/encryption/ajax/adminRecovery"),{adminEnableRecovery:!a.value,recoveryPassword:r.value,confirmPassword:l.value});a.value=!a.value,r.value=l.value="",i.value?.reset(),d.data.message&&L(d.data.message)}catch(d){n.value=!0,C.error("Failed to update recovery key settings",{error:d})}finally{t.value=!1}}}return(d,u)=>(p(),P("form",{ref:"form",onSubmit:K(_,["prevent"])},[m(e(q),{label:a.value?e(o)("encryption","Disable recovery key"):e(o)("encryption","Enable recovery key"),description:e(o)("encryption","The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten.")},{default:c(()=>[m(e(V),{modelValue:r.value,"onUpdate:modelValue":u[0]||(u[0]=y=>r.value=y),required:"",name:"password",label:e(o)("encryption","Recovery key password")},null,8,["modelValue","label"]),m(e(V),{modelValue:l.value,"onUpdate:modelValue":u[1]||(u[1]=y=>l.value=y),required:"",name:"confirmPassword",error:!!l.value&&!v.value,helperText:v.value||!l.value?"":e(o)("encryption","Passwords fields do not match"),label:e(o)("encryption","Repeat recovery key password")},null,8,["modelValue","error","helperText","label"]),m(e(U),{type:"submit",variant:a.value?"error":"primary"},{default:c(()=>[g(w(a.value?e(o)("encryption","Disable recovery key"):e(o)("encryption","Enable recovery key")),1)]),_:1},8,["variant"]),n.value?(p(),f(e(E),{key:0,type:"error"},{default:c(()=>[g(w(e(o)("encryption","An error occurred while updating the recovery key settings. Please try again.")),1)]),_:1})):h("",!0)]),_:1},8,["label","description"])],544))}}),Q=k({__name:"SettingsAdminRecoveryKeyChange",setup(b){const a=A("form"),i=s(!1),t=s(!1),n=s(""),r=s(""),l=s(""),v=N(()=>r.value===l.value);async function _(){if(!i.value&&v.value){t.value=!1,i.value=!0;try{await R.post(S("/apps/encryption/ajax/changeRecoveryPassword"),{oldPassword:n.value,newPassword:r.value,confirmPassword:l.value}),n.value=r.value=l.value="",a.value?.reset()}catch(d){t.value=!0,C.error("Failed to update recovery key settings",{error:d})}finally{i.value=!1}}}return(d,u)=>(p(),P("form",{ref:"form",class:j(d.$style.settingsAdminRecoveryKeyChange),onSubmit:K(_,["prevent"])},[m(e(q),{label:e(o)("encryption","Change recovery key password")},{default:c(()=>[m(e(V),{modelValue:n.value,"onUpdate:modelValue":u[0]||(u[0]=y=>n.value=y),required:"",name:"oldPassword",label:e(o)("encryption","Old recovery key password")},null,8,["modelValue","label"]),m(e(V),{modelValue:r.value,"onUpdate:modelValue":u[1]||(u[1]=y=>r.value=y),required:"",name:"password",label:e(o)("encryption","New recovery key password")},null,8,["modelValue","label"]),m(e(V),{modelValue:l.value,"onUpdate:modelValue":u[2]||(u[2]=y=>l.value=y),required:"",name:"confirmPassword",error:!v.value&&!!l.value,helperText:v.value||!l.value?"":e(o)("encryption","Passwords fields do not match"),label:e(o)("encryption","Repeat new recovery key password")},null,8,["modelValue","error","helperText","label"]),m(e(U),{type:"submit",variant:"primary"},{default:c(()=>[g(w(e(o)("encryption","Change recovery key password")),1)]),_:1}),t.value?(p(),f(e(E),{key:0,type:"error"},{default:c(()=>[g(w(e(o)("encryption","An error occurred while changing the recovery key password. Please try again.")),1)]),_:1})):h("",!0)]),_:1},8,["label"])],34))}}),W="_settingsAdminRecoveryKeyChange_12rwr_2",X={settingsAdminRecoveryKeyChange:W},Y={$style:X},Z=F(Q,[["__cssModules",Y]]),ee=k({__name:"SettingsAdmin",setup(b){const a=I("encryption","adminSettings"),i=s(a.encryptHomeStorage),t=s(a.recoveryEnabled);return(n,r)=>(p(),f(e($),{name:e(o)("encryption","Default encryption module")},{default:c(()=>[e(a).initStatus===e(O).NotInitialized&&!e(a).masterKeyEnabled?(p(),f(e(E),{key:0,type:"warning"},{default:c(()=>[g(w(e(o)("encryption","Encryption app is enabled but your keys are not initialized, please log-out and log-in again")),1)]),_:1})):(p(),P(H,{key:1},[m(G,{modelValue:i.value,"onUpdate:modelValue":r[0]||(r[0]=l=>i.value=l)},null,8,["modelValue"]),r[2]||(r[2]=z("br",null,null,-1)),e(a).masterKeyEnabled?h("",!0):(p(),f(J,{key:0,modelValue:t.value,"onUpdate:modelValue":r[1]||(r[1]=l=>t.value=l)},null,8,["modelValue"])),!e(a).masterKeyEnabled&&t.value?(p(),f(Z,{key:1})):h("",!0)],64))]),_:1},8,["name"]))}}),ae=D(ee);ae.mount("#encryption-settings-section"); //# sourceMappingURL=encryption-settings_admin.mjs.map diff --git a/dist/encryption-settings_admin.mjs.map b/dist/encryption-settings_admin.mjs.map index 5464f1d6da56a..c1270b15447f3 100644 --- a/dist/encryption-settings_admin.mjs.map +++ b/dist/encryption-settings_admin.mjs.map @@ -1 +1 @@ -{"version":3,"file":"encryption-settings_admin.mjs","sources":["../build/frontend/apps/encryption/src/components/SettingsAdminHomeStorage.vue","../build/frontend/apps/encryption/src/components/SettingsAdminRecoveryKey.vue","../build/frontend/apps/encryption/src/components/SettingsAdminRecoveryKeyChange.vue","../build/frontend/apps/encryption/src/views/SettingsAdmin.vue","../build/frontend/apps/encryption/src/settings-admin.ts"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport SettingsAdmin from './views/SettingsAdmin.vue'\n\nconst app = createApp(SettingsAdmin)\napp.mount('#encryption-settings-section')\n"],"names":["encryptHomeStorage","_useModel","__props","isSavingHomeStorageEncryption","ref","watch","watchDebounced","oldValue","axios","generateUrl","_createBlock","_unref","NcCheckboxRadioSwitch","$event","t","recoveryEnabled","formElement","useTemplateRef","isLoading","hasError","password","confirmPassword","passwordMatch","computed","onSubmit","data","showSuccess","error","logger","_createElementBlock","_createVNode","NcFormGroup","NcPasswordField","NcButton","NcNoteCard","oldPassword","_normalizeClass","$style","adminSettings","loadState","NcSettingsSection","InitStatus","_Fragment","SettingsAdminHomeStorage","_createElementVNode","SettingsAdminRecoveryKey","SettingsAdminRecoveryKeyChange","app","createApp","SettingsAdmin"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"encryption-settings_admin.mjs","sources":["../build/frontend/apps/encryption/src/components/SettingsAdminHomeStorage.vue","../build/frontend/apps/encryption/src/components/SettingsAdminRecoveryKey.vue","../build/frontend/apps/encryption/src/components/SettingsAdminRecoveryKeyChange.vue","../build/frontend/apps/encryption/src/views/SettingsAdmin.vue","../build/frontend/apps/encryption/src/settings-admin.ts"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport SettingsAdmin from './views/SettingsAdmin.vue'\n\nconst app = createApp(SettingsAdmin)\napp.mount('#encryption-settings-section')\n"],"names":["encryptHomeStorage","_useModel","__props","isSavingHomeStorageEncryption","ref","watch","watchDebounced","oldValue","axios","generateUrl","_createBlock","_unref","NcCheckboxRadioSwitch","$event","t","recoveryEnabled","formElement","useTemplateRef","isLoading","hasError","password","confirmPassword","passwordMatch","computed","onSubmit","data","showSuccess","error","logger","_createElementBlock","_createVNode","NcFormGroup","NcPasswordField","NcButton","NcNoteCard","oldPassword","_normalizeClass","$style","adminSettings","loadState","NcSettingsSection","InitStatus","_Fragment","SettingsAdminHomeStorage","_createElementVNode","SettingsAdminRecoveryKey","SettingsAdminRecoveryKeyChange","app","createApp","SettingsAdmin"],"mappings":"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"} \ No newline at end of file diff --git a/dist/encryption-settings_personal.mjs b/dist/encryption-settings_personal.mjs index 747fabcd61a54..b106b3da0c997 100644 --- a/dist/encryption-settings_personal.mjs +++ b/dist/encryption-settings_personal.mjs @@ -1,2 +1,2 @@ -import{b,p as F,o as p,f as N,k as v,w as u,c as m,u as e,j as f,t as g,h as U,L as x,l,n as j,z,e as I}from"./Web-DYqXJUev.chunk.mjs";import{c as w,i as h}from"./index-CkGt55pS.chunk.mjs";import{a as S,c as B,b as K}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{l as R}from"./public-C1mLBHT3.chunk.mjs";import{t as r}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{b as k}from"./index-Cp0kcsps.chunk.mjs";import{N as V}from"./mdi-B6W_Xvj-.chunk.mjs";import{N as C}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{w as T}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as q}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as L}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";import{N as M,I as E,l as O}from"./types-CwtJCZU3.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{N as _}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";const Y=b({__name:"SettingsPersonalChangePrivateKey",props:{recoveryEnabledForUser:{type:Boolean}},emits:["updated"],setup(c,{emit:a}){const s=a,n=F("form"),t=l(!1),o=l(!1),i=l(""),y=l("");async function P(){if(!t.value){t.value=!0,o.value=!1;try{await w.post(k("/apps/encryption/ajax/updatePrivateKeyPassword"),{oldPassword:i.value,newPassword:y.value}),i.value=y.value="",n.value?.reset(),s("updated")}catch(d){h(d)&&d.response&&d.response.data?.data?.message&&S(d.response.data.data.message),o.value=!0}finally{t.value=!1}}}return(d,H)=>(p(),N("form",{ref:"form",onSubmit:x(P,["prevent"])},[v(e(M),{label:e(r)("encryption","Update private key password"),description:e(r)("encryption","Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password.")},{default:u(()=>[c.recoveryEnabledForUser?(p(),m(e(V),{key:0},{default:u(()=>[f(g(e(r)("encryption","If you do not remember your old password you can ask your administrator to recover your files.")),1)]),_:1})):U("",!0),v(e(_),{label:e(r)("encryption","Old log-in password")},null,8,["label"]),v(e(_),{label:e(r)("encryption","Current log-in password")},null,8,["label"]),v(e(q),{type:"submit",variant:"primary"},{default:u(()=>[f(g(e(r)("encryption","Update")),1)]),_:1})]),_:1},8,["label","description"])],544))}}),A=b({__name:"SettingsPersonalEnableRecovery",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(c){const a=j(c,"modelValue"),s=l(!1);return z(a,()=>{s.value=!0}),T([a],async([n],[t])=>{if(n===t){s.value=!1;return}const o=B(r("encryption","Updating recovery keys. This can take some time…"));try{await w.post(k("/apps/encryption/ajax/userSetRecovery"),{userEnableRecovery:a.value})}catch(i){a.value=t,h(i)&&i.response&&i.response.data?.data?.message&&S(i.response.data.data.message)}finally{o.hideToast(),s.value=!1}},{debounce:800}),(n,t)=>(p(),m(e(L),{modelValue:a.value,"onUpdate:modelValue":t[0]||(t[0]=o=>a.value=o),type:"switch",loading:s.value,description:e(r)("encryption","Enabling this option will allow you to reobtain access to your encrypted files in case of password loss")},{default:u(()=>[f(g(e(r)("encryption","Enable password recovery")),1)]),_:1},8,["modelValue","loading","description"]))}}),D=b({__name:"SettingsPersonal",setup(c){const a=R("encryption","personalSettings"),s=l(a.initialized),n=l(a.recoveryEnabledForUser);async function t(){try{const{data:o}=await w.get(k("/apps/encryption/ajax/getStatus"));s.value=o.initStatus,o.data.message&&K(o.data.message)}catch(o){O.error("Failed to fetch current encryption status",{error:o})}}return(o,i)=>(p(),m(e(C),{name:e(r)("encryption","Basic encryption module")},{default:u(()=>[s.value===e(E).NotInitialized?(p(),m(e(V),{key:0,type:"warning"},{default:u(()=>[f(g(e(r)("encryption","Encryption app is enabled but your keys are not initialized, please log-out and log-in again")),1)]),_:1})):s.value===e(E).InitExecuted?(p(),m(Y,{key:1,recoveryEnabledForUser:n.value,onUpdated:t},null,8,["recoveryEnabledForUser"])):e(a).recoveryEnabled&&e(a).privateKeySet?(p(),m(A,{key:2,modelValue:n.value,"onUpdate:modelValue":i[0]||(i[0]=y=>n.value=y)},null,8,["modelValue"])):U("",!0)]),_:1},8,["name"]))}}),G=I(D);G.mount("#encryption-settings-section"); +import{b,p as F,o as p,f as N,k as v,w as u,c as m,u as e,j as f,t as g,h as U,L as x,l,n as j,z,e as I}from"./Web-DYqXJUev.chunk.mjs";import{c as w,i as h}from"./index-CkGt55pS.chunk.mjs";import{a as S,c as B,b as K}from"./index-mH69OG7L.chunk.mjs";import{l as R}from"./public-C1mLBHT3.chunk.mjs";import{t as r}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{b as k}from"./index-Cp0kcsps.chunk.mjs";import{N as V}from"./mdi-B6W_Xvj-.chunk.mjs";import{N as C}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{w as T}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as q}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as L}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";import{N as M,I as E,l as O}from"./types-CwtJCZU3.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{N as _}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";const Y=b({__name:"SettingsPersonalChangePrivateKey",props:{recoveryEnabledForUser:{type:Boolean}},emits:["updated"],setup(c,{emit:a}){const s=a,n=F("form"),t=l(!1),o=l(!1),i=l(""),y=l("");async function P(){if(!t.value){t.value=!0,o.value=!1;try{await w.post(k("/apps/encryption/ajax/updatePrivateKeyPassword"),{oldPassword:i.value,newPassword:y.value}),i.value=y.value="",n.value?.reset(),s("updated")}catch(d){h(d)&&d.response&&d.response.data?.data?.message&&S(d.response.data.data.message),o.value=!0}finally{t.value=!1}}}return(d,H)=>(p(),N("form",{ref:"form",onSubmit:x(P,["prevent"])},[v(e(M),{label:e(r)("encryption","Update private key password"),description:e(r)("encryption","Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password.")},{default:u(()=>[c.recoveryEnabledForUser?(p(),m(e(V),{key:0},{default:u(()=>[f(g(e(r)("encryption","If you do not remember your old password you can ask your administrator to recover your files.")),1)]),_:1})):U("",!0),v(e(_),{label:e(r)("encryption","Old log-in password")},null,8,["label"]),v(e(_),{label:e(r)("encryption","Current log-in password")},null,8,["label"]),v(e(q),{type:"submit",variant:"primary"},{default:u(()=>[f(g(e(r)("encryption","Update")),1)]),_:1})]),_:1},8,["label","description"])],544))}}),A=b({__name:"SettingsPersonalEnableRecovery",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(c){const a=j(c,"modelValue"),s=l(!1);return z(a,()=>{s.value=!0}),T([a],async([n],[t])=>{if(n===t){s.value=!1;return}const o=B(r("encryption","Updating recovery keys. This can take some time…"));try{await w.post(k("/apps/encryption/ajax/userSetRecovery"),{userEnableRecovery:a.value})}catch(i){a.value=t,h(i)&&i.response&&i.response.data?.data?.message&&S(i.response.data.data.message)}finally{o.hideToast(),s.value=!1}},{debounce:800}),(n,t)=>(p(),m(e(L),{modelValue:a.value,"onUpdate:modelValue":t[0]||(t[0]=o=>a.value=o),type:"switch",loading:s.value,description:e(r)("encryption","Enabling this option will allow you to reobtain access to your encrypted files in case of password loss")},{default:u(()=>[f(g(e(r)("encryption","Enable password recovery")),1)]),_:1},8,["modelValue","loading","description"]))}}),D=b({__name:"SettingsPersonal",setup(c){const a=R("encryption","personalSettings"),s=l(a.initialized),n=l(a.recoveryEnabledForUser);async function t(){try{const{data:o}=await w.get(k("/apps/encryption/ajax/getStatus"));s.value=o.initStatus,o.data.message&&K(o.data.message)}catch(o){O.error("Failed to fetch current encryption status",{error:o})}}return(o,i)=>(p(),m(e(C),{name:e(r)("encryption","Basic encryption module")},{default:u(()=>[s.value===e(E).NotInitialized?(p(),m(e(V),{key:0,type:"warning"},{default:u(()=>[f(g(e(r)("encryption","Encryption app is enabled but your keys are not initialized, please log-out and log-in again")),1)]),_:1})):s.value===e(E).InitExecuted?(p(),m(Y,{key:1,recoveryEnabledForUser:n.value,onUpdated:t},null,8,["recoveryEnabledForUser"])):e(a).recoveryEnabled&&e(a).privateKeySet?(p(),m(A,{key:2,modelValue:n.value,"onUpdate:modelValue":i[0]||(i[0]=y=>n.value=y)},null,8,["modelValue"])):U("",!0)]),_:1},8,["name"]))}}),G=I(D);G.mount("#encryption-settings-section"); //# sourceMappingURL=encryption-settings_personal.mjs.map diff --git a/dist/encryption-settings_personal.mjs.map b/dist/encryption-settings_personal.mjs.map index 6cd9a79ae90a9..33524ab42dfd8 100644 --- a/dist/encryption-settings_personal.mjs.map +++ b/dist/encryption-settings_personal.mjs.map @@ -1 +1 @@ -{"version":3,"file":"encryption-settings_personal.mjs","sources":["../build/frontend/apps/encryption/src/components/SettingsPersonalChangePrivateKey.vue","../build/frontend/apps/encryption/src/components/SettingsPersonalEnableRecovery.vue","../build/frontend/apps/encryption/src/views/SettingsPersonal.vue","../build/frontend/apps/encryption/src/settings-personal.ts"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport SettingsPersonal from './views/SettingsPersonal.vue'\n\nconst app = createApp(SettingsPersonal)\napp.mount('#encryption-settings-section')\n"],"names":["emit","__emit","formElement","useTemplateRef","isLoading","ref","hasError","oldPrivateKeyPassword","newPrivateKeyPassword","onSubmit","axios","generateUrl","error","isAxiosError","showError","_createElementBlock","_createVNode","_unref","NcFormGroup","t","__props","_createBlock","NcNoteCard","NcPasswordField","NcButton","userEnableRecovery","_useModel","watch","watchDebounced","newValue","oldValue","toast","showLoading","NcCheckboxRadioSwitch","$event","personalSettings","loadState","initialized","recoveryEnabledForUser","reloadStatus","data","showInfo","logger","NcSettingsSection","InitStatus","SettingsPersonalChangePrivateKey","SettingsPersonalEnableRecovery","app","createApp","SettingsPersonal"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"encryption-settings_personal.mjs","sources":["../build/frontend/apps/encryption/src/components/SettingsPersonalChangePrivateKey.vue","../build/frontend/apps/encryption/src/components/SettingsPersonalEnableRecovery.vue","../build/frontend/apps/encryption/src/views/SettingsPersonal.vue","../build/frontend/apps/encryption/src/settings-personal.ts"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport SettingsPersonal from './views/SettingsPersonal.vue'\n\nconst app = createApp(SettingsPersonal)\napp.mount('#encryption-settings-section')\n"],"names":["emit","__emit","formElement","useTemplateRef","isLoading","ref","hasError","oldPrivateKeyPassword","newPrivateKeyPassword","onSubmit","axios","generateUrl","error","isAxiosError","showError","_createElementBlock","_createVNode","_unref","NcFormGroup","t","__props","_createBlock","NcNoteCard","NcPasswordField","NcButton","userEnableRecovery","_useModel","watch","watchDebounced","newValue","oldValue","toast","showLoading","NcCheckboxRadioSwitch","$event","personalSettings","loadState","initialized","recoveryEnabledForUser","reloadStatus","data","showInfo","logger","NcSettingsSection","InitStatus","SettingsPersonalChangePrivateKey","SettingsPersonalEnableRecovery","app","createApp","SettingsPersonal"],"mappings":"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"} \ No newline at end of file diff --git a/dist/federatedfilesharing-init-files.mjs b/dist/federatedfilesharing-init-files.mjs index 9ef69e9b79a5e..d8c688d4157f5 100644 --- a/dist/federatedfilesharing-init-files.mjs +++ b/dist/federatedfilesharing-init-files.mjs @@ -1,2 +1,2 @@ -import{c as d,i as _}from"./index-CkGt55pS.chunk.mjs";import{b as y,a as u}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{s as b,b as m}from"./index-Cp0kcsps.chunk.mjs";import{_ as R,l as v}from"./public-C1mLBHT3.chunk.mjs";import{t}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as D,s as S}from"./index-CmDAUQql.chunk.mjs";import{N as O}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import{b as F,o as f,c as h,w as k,g as C,t as P,u as i,y as q,h as x,l as N,v as E}from"./Web-DYqXJUev.chunk.mjs";import{l as M}from"./logger-COyHjIsS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";const T=F({__name:"RemoteShareDialog",props:{name:{},owner:{},remote:{},passwordRequired:{type:Boolean}},emits:["close"],setup(e,{emit:r}){const s=e,a=r,o=N(""),n=E(()=>[{label:t("federatedfilesharing","Cancel"),callback:()=>a("close",!1)},{label:t("federatedfilesharing","Add remote share"),type:s.passwordRequired?"submit":void 0,variant:"primary",callback:()=>a("close",!0,o.value)}]);return(p,l)=>(f(),h(i(D),{buttons:n.value,isForm:e.passwordRequired,name:i(t)("federatedfilesharing","Remote share"),onSubmit:l[1]||(l[1]=w=>a("close",!0,o.value))},{default:k(()=>[C("p",null,P(i(t)("federatedfilesharing","Do you want to add the remote share {name} from {owner}@{remote}?",{name:e.name,owner:e.owner,remote:e.remote})),1),e.passwordRequired?(f(),h(i(O),{key:0,modelValue:o.value,"onUpdate:modelValue":l[0]||(l[0]=w=>o.value=w),class:q(p.$style.remoteShareDialog__password),label:i(t)("federatedfilesharing","Remote share password")},null,8,["modelValue","class","label"])):x("",!0)]),_:1},8,["buttons","isForm","name"]))}}),U="_remoteShareDialog__password_1ccpy_2",V={remoteShareDialog__password:U},$={$style:V},j=R(T,[["__cssModules",$]]);async function I(e,r,s,a=!1){const[o,n]=await S(j,{name:e,owner:r,remote:s,passwordRequired:a});if(a&&o)return n;if(!o)throw new Error("Dialog was cancelled")}window.addEventListener("DOMContentLoaded",()=>{L(),v("federatedfilesharing","notificationsEnabled",!0)!==!0&&A(),b("notifications:action:executed",({action:e,notification:r})=>{r.app==="files_sharing"&&r.object_type==="remote_share"&&e.type==="POST"&&c()})});function c(){if(!window?.OCP?.Files?.Router?.goToRoute){window.location.reload();return}window.OCP.Files.Router.goToRoute(null,{...window.OCP.Files.Router.params,fileid:void 0},{...window.OCP.Files.Router.query,dir:"/",openfile:void 0})}function L(){const e=window.OC.Util.History.parseUrlQuery();if(e.remote&&e.token&&e.name){const r=(s,a)=>{s!==!1&&d.post(m("apps/federatedfilesharing/askForFederatedShare"),{remote:a.remote,token:a.token,owner:a.owner,ownerDisplayName:a.ownerDisplayName||a.owner,name:a.name,password:a.password||""}).then(({data:o})=>{Object.hasOwn(o,"legacyMount")?c():y(o.message)}).catch(o=>{M.error("Error while processing incoming share",{error:o}),_(o)&&o.response.data.message?u(o.response.data.message):u(t("federatedfilesharing","Incoming share could not be processed"))})};location.hash="",e.passwordProtected=parseInt(e.protected,10)===1,g(e,e.passwordProtected,r)}}async function A(){const{data:e}=await d.get(m("/apps/files_sharing/api/externalShares"));for(let r=0;rc())})}function g(e,r,s){const a=e.ownerDisplayName||e.owner,o=e.name,n=e.remote.replace(/^https?:\/\//,"").replace(/\/$/,"");I(o,a,n,r).then(p=>s(!0,{...e,password:p})).catch(()=>s(!1,e))} +import{c as d,i as _}from"./index-CkGt55pS.chunk.mjs";import{b as y,a as u}from"./index-mH69OG7L.chunk.mjs";import{s as b,b as m}from"./index-Cp0kcsps.chunk.mjs";import{_ as R,l as v}from"./public-C1mLBHT3.chunk.mjs";import{t}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as D,s as S}from"./index-CmDAUQql.chunk.mjs";import{N as O}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import{b as F,o as f,c as h,w as k,g as C,t as P,u as i,y as q,h as x,l as N,v as E}from"./Web-DYqXJUev.chunk.mjs";import{l as M}from"./logger-COyHjIsS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";const T=F({__name:"RemoteShareDialog",props:{name:{},owner:{},remote:{},passwordRequired:{type:Boolean}},emits:["close"],setup(e,{emit:r}){const s=e,a=r,o=N(""),n=E(()=>[{label:t("federatedfilesharing","Cancel"),callback:()=>a("close",!1)},{label:t("federatedfilesharing","Add remote share"),type:s.passwordRequired?"submit":void 0,variant:"primary",callback:()=>a("close",!0,o.value)}]);return(p,l)=>(f(),h(i(D),{buttons:n.value,isForm:e.passwordRequired,name:i(t)("federatedfilesharing","Remote share"),onSubmit:l[1]||(l[1]=w=>a("close",!0,o.value))},{default:k(()=>[C("p",null,P(i(t)("federatedfilesharing","Do you want to add the remote share {name} from {owner}@{remote}?",{name:e.name,owner:e.owner,remote:e.remote})),1),e.passwordRequired?(f(),h(i(O),{key:0,modelValue:o.value,"onUpdate:modelValue":l[0]||(l[0]=w=>o.value=w),class:q(p.$style.remoteShareDialog__password),label:i(t)("federatedfilesharing","Remote share password")},null,8,["modelValue","class","label"])):x("",!0)]),_:1},8,["buttons","isForm","name"]))}}),U="_remoteShareDialog__password_1ccpy_2",V={remoteShareDialog__password:U},$={$style:V},j=R(T,[["__cssModules",$]]);async function I(e,r,s,a=!1){const[o,n]=await S(j,{name:e,owner:r,remote:s,passwordRequired:a});if(a&&o)return n;if(!o)throw new Error("Dialog was cancelled")}window.addEventListener("DOMContentLoaded",()=>{L(),v("federatedfilesharing","notificationsEnabled",!0)!==!0&&A(),b("notifications:action:executed",({action:e,notification:r})=>{r.app==="files_sharing"&&r.object_type==="remote_share"&&e.type==="POST"&&c()})});function c(){if(!window?.OCP?.Files?.Router?.goToRoute){window.location.reload();return}window.OCP.Files.Router.goToRoute(null,{...window.OCP.Files.Router.params,fileid:void 0},{...window.OCP.Files.Router.query,dir:"/",openfile:void 0})}function L(){const e=window.OC.Util.History.parseUrlQuery();if(e.remote&&e.token&&e.name){const r=(s,a)=>{s!==!1&&d.post(m("apps/federatedfilesharing/askForFederatedShare"),{remote:a.remote,token:a.token,owner:a.owner,ownerDisplayName:a.ownerDisplayName||a.owner,name:a.name,password:a.password||""}).then(({data:o})=>{Object.hasOwn(o,"legacyMount")?c():y(o.message)}).catch(o=>{M.error("Error while processing incoming share",{error:o}),_(o)&&o.response.data.message?u(o.response.data.message):u(t("federatedfilesharing","Incoming share could not be processed"))})};location.hash="",e.passwordProtected=parseInt(e.protected,10)===1,g(e,e.passwordProtected,r)}}async function A(){const{data:e}=await d.get(m("/apps/files_sharing/api/externalShares"));for(let r=0;rc())})}function g(e,r,s){const a=e.ownerDisplayName||e.owner,o=e.name,n=e.remote.replace(/^https?:\/\//,"").replace(/\/$/,"");I(o,a,n,r).then(p=>s(!0,{...e,password:p})).catch(()=>s(!1,e))} //# sourceMappingURL=federatedfilesharing-init-files.mjs.map diff --git a/dist/federatedfilesharing-init-files.mjs.map b/dist/federatedfilesharing-init-files.mjs.map index adce40fdc9502..e4f71c6c45b2b 100644 --- a/dist/federatedfilesharing-init-files.mjs.map +++ b/dist/federatedfilesharing-init-files.mjs.map @@ -1 +1 @@ -{"version":3,"file":"federatedfilesharing-init-files.mjs","sources":["../build/frontend/apps/federatedfilesharing/src/components/RemoteShareDialog.vue","../build/frontend/apps/federatedfilesharing/src/services/dialogService.ts","../build/frontend/apps/federatedfilesharing/src/init-files.js"],"sourcesContent":["\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport RemoteShareDialog from '../components/RemoteShareDialog.vue'\n\n/**\n * Open a dialog to ask the user whether to add a remote share.\n *\n * @param name The name of the share\n * @param owner The owner of the share\n * @param remote The remote address\n * @param passwordRequired True if the share is password protected\n */\nexport async function showRemoteShareDialog(\n\tname: string,\n\towner: string,\n\tremote: string,\n\tpasswordRequired = false,\n): Promise {\n\tconst [status, password] = await spawnDialog(RemoteShareDialog, {\n\t\tname,\n\t\towner,\n\t\tremote,\n\t\tpasswordRequired,\n\t})\n\n\tif (passwordRequired && status) {\n\t\treturn password as string\n\t} else if (status) {\n\t\treturn\n\t} else {\n\t\tthrow new Error('Dialog was cancelled')\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios, { isAxiosError } from '@nextcloud/axios'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { subscribe } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport { showRemoteShareDialog } from './services/dialogService.ts'\nimport logger from './services/logger.ts'\n\nwindow.addEventListener('DOMContentLoaded', () => {\n\tprocessIncomingShareFromUrl()\n\n\tif (loadState('federatedfilesharing', 'notificationsEnabled', true) !== true) {\n\t\t// No notification app, display the modal\n\t\tprocessSharesToConfirm()\n\t}\n\n\tsubscribe('notifications:action:executed', ({ action, notification }) => {\n\t\tif (notification.app === 'files_sharing' && notification.object_type === 'remote_share' && action.type === 'POST') {\n\t\t\t// User accepted a remote share reload\n\t\t\treloadFilesList()\n\t\t}\n\t})\n})\n\n/**\n * Reload the files list to show accepted shares\n */\nfunction reloadFilesList() {\n\tif (!window?.OCP?.Files?.Router?.goToRoute) {\n\t\t// No router, just reload the page\n\t\twindow.location.reload()\n\t\treturn\n\t}\n\n\t// Let's redirect to the root as any accepted share would be there\n\twindow.OCP.Files.Router.goToRoute(\n\t\tnull,\n\t\t{ ...window.OCP.Files.Router.params, fileid: undefined },\n\t\t{ ...window.OCP.Files.Router.query, dir: '/', openfile: undefined },\n\t)\n}\n\n/**\n * Process incoming remote share that might have been passed\n * through the URL\n */\nfunction processIncomingShareFromUrl() {\n\tconst params = window.OC.Util.History.parseUrlQuery()\n\n\t// manually add server-to-server share\n\tif (params.remote && params.token && params.name) {\n\t\tconst callbackAddShare = (result, share) => {\n\t\t\tif (result === false) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\taxios.post(\n\t\t\t\tgenerateUrl('apps/federatedfilesharing/askForFederatedShare'),\n\t\t\t\t{\n\t\t\t\t\tremote: share.remote,\n\t\t\t\t\ttoken: share.token,\n\t\t\t\t\towner: share.owner,\n\t\t\t\t\townerDisplayName: share.ownerDisplayName || share.owner,\n\t\t\t\t\tname: share.name,\n\t\t\t\t\tpassword: share.password || '',\n\t\t\t\t},\n\t\t\t).then(({ data }) => {\n\t\t\t\tif (Object.hasOwn(data, 'legacyMount')) {\n\t\t\t\t\treloadFilesList()\n\t\t\t\t} else {\n\t\t\t\t\tshowInfo(data.message)\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tlogger.error('Error while processing incoming share', { error })\n\n\t\t\t\tif (isAxiosError(error) && error.response.data.message) {\n\t\t\t\t\tshowError(error.response.data.message)\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('federatedfilesharing', 'Incoming share could not be processed'))\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\t// clear hash, it is unlikely that it contain any extra parameters\n\t\tlocation.hash = ''\n\t\tparams.passwordProtected = parseInt(params.protected, 10) === 1\n\t\tshowAddExternalDialog(\n\t\t\tparams,\n\t\t\tparams.passwordProtected,\n\t\t\tcallbackAddShare,\n\t\t)\n\t}\n}\n\n/**\n * Retrieve a list of remote shares that need to be approved\n */\nasync function processSharesToConfirm() {\n\t// check for new server-to-server shares which need to be approved\n\tconst { data: shares } = await axios.get(generateUrl('/apps/files_sharing/api/externalShares'))\n\tfor (let index = 0; index < shares.length; ++index) {\n\t\tshowAddExternalDialog(\n\t\t\tshares[index],\n\t\t\tfalse,\n\t\t\tfunction(result, share) {\n\t\t\t\tif (result === false) {\n\t\t\t\t\t// Delete\n\t\t\t\t\taxios.delete(generateUrl('/apps/files_sharing/api/externalShares/' + share.id))\n\t\t\t\t} else {\n\t\t\t\t\t// Accept\n\t\t\t\t\taxios.post(generateUrl('/apps/files_sharing/api/externalShares'), { id: share.id })\n\t\t\t\t\t\t.then(() => reloadFilesList())\n\t\t\t\t}\n\t\t\t},\n\t\t)\n\t}\n}\n\n/**\n * Shows \"add external share\" dialog.\n *\n * @param {object} share the share\n * @param {string} share.remote remote server URL\n * @param {string} share.owner owner name\n * @param {string} share.name name of the shared folder\n * @param {string} share.token authentication token\n * @param {boolean} passwordProtected true if the share is password protected\n * @param {(status: boolean, share: Record & { password?: string }) => void} callback the callback\n */\nfunction showAddExternalDialog(share, passwordProtected, callback) {\n\tconst owner = share.ownerDisplayName || share.owner\n\tconst name = share.name\n\n\t// Clean up the remote URL for display\n\tconst remote = share.remote\n\t\t.replace(/^https?:\\/\\//, '') // remove http:// or https://\n\t\t.replace(/\\/$/, '') // remove trailing slash\n\n\tshowRemoteShareDialog(name, owner, remote, passwordProtected)\n\t\t.then((password) => callback(true, { ...share, password }))\n\t\t.catch(() => callback(false, share))\n}\n"],"names":["props","__props","emit","__emit","password","ref","buttons","computed","t","_createBlock","_unref","NcDialog","_cache","$event","_createElementVNode","NcPasswordField","_normalizeClass","$style","showRemoteShareDialog","name","owner","remote","passwordRequired","status","spawnDialog","RemoteShareDialog","processIncomingShareFromUrl","loadState","processSharesToConfirm","subscribe","action","notification","reloadFilesList","params","callbackAddShare","result","share","axios","generateUrl","data","showInfo","error","logger","isAxiosError","showError","showAddExternalDialog","shares","index","passwordProtected","callback"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"federatedfilesharing-init-files.mjs","sources":["../build/frontend/apps/federatedfilesharing/src/components/RemoteShareDialog.vue","../build/frontend/apps/federatedfilesharing/src/services/dialogService.ts","../build/frontend/apps/federatedfilesharing/src/init-files.js"],"sourcesContent":["\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport RemoteShareDialog from '../components/RemoteShareDialog.vue'\n\n/**\n * Open a dialog to ask the user whether to add a remote share.\n *\n * @param name The name of the share\n * @param owner The owner of the share\n * @param remote The remote address\n * @param passwordRequired True if the share is password protected\n */\nexport async function showRemoteShareDialog(\n\tname: string,\n\towner: string,\n\tremote: string,\n\tpasswordRequired = false,\n): Promise {\n\tconst [status, password] = await spawnDialog(RemoteShareDialog, {\n\t\tname,\n\t\towner,\n\t\tremote,\n\t\tpasswordRequired,\n\t})\n\n\tif (passwordRequired && status) {\n\t\treturn password as string\n\t} else if (status) {\n\t\treturn\n\t} else {\n\t\tthrow new Error('Dialog was cancelled')\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014-2016 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios, { isAxiosError } from '@nextcloud/axios'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { subscribe } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport { showRemoteShareDialog } from './services/dialogService.ts'\nimport logger from './services/logger.ts'\n\nwindow.addEventListener('DOMContentLoaded', () => {\n\tprocessIncomingShareFromUrl()\n\n\tif (loadState('federatedfilesharing', 'notificationsEnabled', true) !== true) {\n\t\t// No notification app, display the modal\n\t\tprocessSharesToConfirm()\n\t}\n\n\tsubscribe('notifications:action:executed', ({ action, notification }) => {\n\t\tif (notification.app === 'files_sharing' && notification.object_type === 'remote_share' && action.type === 'POST') {\n\t\t\t// User accepted a remote share reload\n\t\t\treloadFilesList()\n\t\t}\n\t})\n})\n\n/**\n * Reload the files list to show accepted shares\n */\nfunction reloadFilesList() {\n\tif (!window?.OCP?.Files?.Router?.goToRoute) {\n\t\t// No router, just reload the page\n\t\twindow.location.reload()\n\t\treturn\n\t}\n\n\t// Let's redirect to the root as any accepted share would be there\n\twindow.OCP.Files.Router.goToRoute(\n\t\tnull,\n\t\t{ ...window.OCP.Files.Router.params, fileid: undefined },\n\t\t{ ...window.OCP.Files.Router.query, dir: '/', openfile: undefined },\n\t)\n}\n\n/**\n * Process incoming remote share that might have been passed\n * through the URL\n */\nfunction processIncomingShareFromUrl() {\n\tconst params = window.OC.Util.History.parseUrlQuery()\n\n\t// manually add server-to-server share\n\tif (params.remote && params.token && params.name) {\n\t\tconst callbackAddShare = (result, share) => {\n\t\t\tif (result === false) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\taxios.post(\n\t\t\t\tgenerateUrl('apps/federatedfilesharing/askForFederatedShare'),\n\t\t\t\t{\n\t\t\t\t\tremote: share.remote,\n\t\t\t\t\ttoken: share.token,\n\t\t\t\t\towner: share.owner,\n\t\t\t\t\townerDisplayName: share.ownerDisplayName || share.owner,\n\t\t\t\t\tname: share.name,\n\t\t\t\t\tpassword: share.password || '',\n\t\t\t\t},\n\t\t\t).then(({ data }) => {\n\t\t\t\tif (Object.hasOwn(data, 'legacyMount')) {\n\t\t\t\t\treloadFilesList()\n\t\t\t\t} else {\n\t\t\t\t\tshowInfo(data.message)\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tlogger.error('Error while processing incoming share', { error })\n\n\t\t\t\tif (isAxiosError(error) && error.response.data.message) {\n\t\t\t\t\tshowError(error.response.data.message)\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('federatedfilesharing', 'Incoming share could not be processed'))\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\t// clear hash, it is unlikely that it contain any extra parameters\n\t\tlocation.hash = ''\n\t\tparams.passwordProtected = parseInt(params.protected, 10) === 1\n\t\tshowAddExternalDialog(\n\t\t\tparams,\n\t\t\tparams.passwordProtected,\n\t\t\tcallbackAddShare,\n\t\t)\n\t}\n}\n\n/**\n * Retrieve a list of remote shares that need to be approved\n */\nasync function processSharesToConfirm() {\n\t// check for new server-to-server shares which need to be approved\n\tconst { data: shares } = await axios.get(generateUrl('/apps/files_sharing/api/externalShares'))\n\tfor (let index = 0; index < shares.length; ++index) {\n\t\tshowAddExternalDialog(\n\t\t\tshares[index],\n\t\t\tfalse,\n\t\t\tfunction(result, share) {\n\t\t\t\tif (result === false) {\n\t\t\t\t\t// Delete\n\t\t\t\t\taxios.delete(generateUrl('/apps/files_sharing/api/externalShares/' + share.id))\n\t\t\t\t} else {\n\t\t\t\t\t// Accept\n\t\t\t\t\taxios.post(generateUrl('/apps/files_sharing/api/externalShares'), { id: share.id })\n\t\t\t\t\t\t.then(() => reloadFilesList())\n\t\t\t\t}\n\t\t\t},\n\t\t)\n\t}\n}\n\n/**\n * Shows \"add external share\" dialog.\n *\n * @param {object} share the share\n * @param {string} share.remote remote server URL\n * @param {string} share.owner owner name\n * @param {string} share.name name of the shared folder\n * @param {string} share.token authentication token\n * @param {boolean} passwordProtected true if the share is password protected\n * @param {(status: boolean, share: Record & { password?: string }) => void} callback the callback\n */\nfunction showAddExternalDialog(share, passwordProtected, callback) {\n\tconst owner = share.ownerDisplayName || share.owner\n\tconst name = share.name\n\n\t// Clean up the remote URL for display\n\tconst remote = share.remote\n\t\t.replace(/^https?:\\/\\//, '') // remove http:// or https://\n\t\t.replace(/\\/$/, '') // remove trailing slash\n\n\tshowRemoteShareDialog(name, owner, remote, passwordProtected)\n\t\t.then((password) => callback(true, { ...share, password }))\n\t\t.catch(() => callback(false, share))\n}\n"],"names":["props","__props","emit","__emit","password","ref","buttons","computed","t","_createBlock","_unref","NcDialog","_cache","$event","_createElementVNode","NcPasswordField","_normalizeClass","$style","showRemoteShareDialog","name","owner","remote","passwordRequired","status","spawnDialog","RemoteShareDialog","processIncomingShareFromUrl","loadState","processSharesToConfirm","subscribe","action","notification","reloadFilesList","params","callbackAddShare","result","share","axios","generateUrl","data","showInfo","error","logger","isAxiosError","showError","showAddExternalDialog","shares","index","passwordProtected","callback"],"mappings":"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"} \ No newline at end of file diff --git a/dist/federatedfilesharing-settings-admin.mjs b/dist/federatedfilesharing-settings-admin.mjs index 7a60debc1a646..427c92648a0dd 100644 --- a/dist/federatedfilesharing-settings-admin.mjs +++ b/dist/federatedfilesharing-settings-admin.mjs @@ -1,2 +1,2 @@ -import{l as s,_ as A}from"./public-C1mLBHT3.chunk.mjs";import{b as U,o as g,c,w as i,k as f,u as a,j as p,t as l,h as m,g as h,P as G,e as T}from"./Web-DYqXJUev.chunk.mjs";import{c as x}from"./index-CkGt55pS.chunk.mjs";import{a as v,e as b}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as C}from"./index-BgrtITOq.chunk.mjs";import{c as D}from"./index-Cp0kcsps.chunk.mjs";import{N as u}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as j}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{l as S}from"./logger-COyHjIsS.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";const I={class:"settings-subsection"},q={class:"settings-subsection__name"},F=U({__name:"AdminSettings",setup(R){const E=s("federatedfilesharing","sharingFederatedDocUrl"),y=new Proxy({outgoingServer2serverShareEnabled:[s("federatedfilesharing","outgoingServer2serverShareEnabled"),"outgoing_server2server_share_enabled"],incomingServer2serverShareEnabled:[s("federatedfilesharing","incomingServer2serverShareEnabled"),"incoming_server2server_share_enabled"],outgoingServer2serverGroupShareEnabled:[s("federatedfilesharing","outgoingServer2serverGroupShareEnabled"),"outgoing_server2server_group_share_enabled"],incomingServer2serverGroupShareEnabled:[s("federatedfilesharing","incomingServer2serverGroupShareEnabled"),"incoming_server2server_group_share_enabled"],federatedGroupSharingSupported:[s("federatedfilesharing","federatedGroupSharingSupported"),"federated_group_sharing_supported"],federatedTrustedShareAutoAccept:[s("federatedfilesharing","federatedTrustedShareAutoAccept"),"federatedTrustedShareAutoAccept"],lookupServerEnabled:[s("federatedfilesharing","lookupServerEnabled"),"lookupServerEnabled"],lookupServerUploadEnabled:[s("federatedfilesharing","lookupServerUploadEnabled"),"lookupServerUploadEnabled"]},{get(d,o){return d[o]?.[0]},set(d,o,t){return o in d?(d[o][0]=t,k(d[o][1],t),!0):!1}}),r=G(y);async function _(d){if(d===!1)return r.lookupServerUploadEnabled=!1;await b({name:e("federatedfilesharing","Confirm data upload to lookup server"),text:e("federatedfilesharing",'When enabled, all account properties (e.g. email address) with scope visibility set to "published", will be automatically synced and transmitted to an external system and made available in a public, global address book.'),labelConfirm:e("federatedfilesharing","Enable data upload"),labelReject:e("federatedfilesharing","Disable upload"),severity:"warning"}).then(()=>{r.lookupServerUploadEnabled=!0}).catch(()=>{r.lookupServerUploadEnabled=!1})}async function w(d){if(d===!1)return r.lookupServerEnabled=!1;await b({name:e("federatedfilesharing","Confirm querying lookup server"),text:e("federatedfilesharing","When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book.")+e("federatedfilesharing","This is used to retrieve the federated cloud ID to make federated sharing easier.")+e("federatedfilesharing","Moreover, email addresses of users might be sent to that system in order to verify them."),labelConfirm:e("federatedfilesharing","Enable querying"),labelReject:e("federatedfilesharing","Disable querying"),severity:"warning"}).then(()=>{r.lookupServerEnabled=!0}).catch(()=>{r.lookupServerEnabled=!1})}async function k(d,o){await C();const t=D("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"files_sharing",key:d}),V=o?"yes":"no";try{const{data:n}=await x.post(t,{value:V});if(n.ocs.meta.status!=="ok")if(n.ocs.meta.message)v(n.ocs.meta.message),S.error("Error updating federated files sharing config",{error:n.ocs});else throw new Error(`Failed to update federatedfilesharing config, ${n.ocs.meta.statuscode}`)}catch(n){S.error("Error updating federated files sharing config",{error:n}),v(e("federatedfilesharing","Unable to update federated files sharing config"))}}return(d,o)=>(g(),c(a(j),{name:a(e)("federatedfilesharing","Federated Cloud Sharing"),description:a(e)("federatedfilesharing","Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing."),docUrl:a(E)},{default:i(()=>[f(a(u),{modelValue:r.outgoingServer2serverShareEnabled,"onUpdate:modelValue":o[0]||(o[0]=t=>r.outgoingServer2serverShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)")),1)]),_:1},8,["modelValue"]),f(a(u),{modelValue:r.incomingServer2serverShareEnabled,"onUpdate:modelValue":o[1]||(o[1]=t=>r.incomingServer2serverShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to receive shares from other servers")),1)]),_:1},8,["modelValue"]),r.federatedGroupSharingSupported?(g(),c(a(u),{key:0,modelValue:r.outgoingServer2serverGroupShareEnabled,"onUpdate:modelValue":o[2]||(o[2]=t=>r.outgoingServer2serverGroupShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to send shares to groups on other servers")),1)]),_:1},8,["modelValue"])):m("",!0),r.federatedGroupSharingSupported?(g(),c(a(u),{key:1,modelValue:r.incomingServer2serverGroupShareEnabled,"onUpdate:modelValue":o[3]||(o[3]=t=>r.incomingServer2serverGroupShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to receive group shares from other servers")),1)]),_:1},8,["modelValue"])):m("",!0),h("fieldset",null,[h("legend",null,l(a(e)("federatedfilesharing","The lookup server is only available for global scale.")),1),f(a(u),{type:"switch",modelValue:r.lookupServerEnabled,disabled:"","onUpdate:modelValue":w},{default:i(()=>[p(l(a(e)("federatedfilesharing","Search global and public address book for people")),1)]),_:1},8,["modelValue"]),f(a(u),{type:"switch",modelValue:r.lookupServerUploadEnabled,disabled:"","onUpdate:modelValue":_},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people to publish their data to a global and public address book")),1)]),_:1},8,["modelValue"])]),h("div",I,[h("h3",q,l(a(e)("federatedfilesharing","Trusted federation")),1),f(a(u),{modelValue:r.federatedTrustedShareAutoAccept,"onUpdate:modelValue":o[4]||(o[4]=t=>r.federatedTrustedShareAutoAccept=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Automatically accept shares from trusted federated accounts and groups by default")),1)]),_:1},8,["modelValue"])])]),_:1},8,["name","description","docUrl"]))}}),N=A(F,[["__scopeId","data-v-71370f43"]]),P=s("federatedfilesharing","internalOnly",!1);P||T(N).mount("#vue-admin-federated"); +import{l as s,_ as A}from"./public-C1mLBHT3.chunk.mjs";import{b as U,o as g,c,w as i,k as f,u as a,j as p,t as l,h as m,g as h,P as G,e as T}from"./Web-DYqXJUev.chunk.mjs";import{c as x}from"./index-CkGt55pS.chunk.mjs";import{a as v,e as b}from"./index-mH69OG7L.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as C}from"./index-BgrtITOq.chunk.mjs";import{c as D}from"./index-Cp0kcsps.chunk.mjs";import{N as u}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as j}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{l as S}from"./logger-COyHjIsS.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";const I={class:"settings-subsection"},q={class:"settings-subsection__name"},F=U({__name:"AdminSettings",setup(R){const E=s("federatedfilesharing","sharingFederatedDocUrl"),y=new Proxy({outgoingServer2serverShareEnabled:[s("federatedfilesharing","outgoingServer2serverShareEnabled"),"outgoing_server2server_share_enabled"],incomingServer2serverShareEnabled:[s("federatedfilesharing","incomingServer2serverShareEnabled"),"incoming_server2server_share_enabled"],outgoingServer2serverGroupShareEnabled:[s("federatedfilesharing","outgoingServer2serverGroupShareEnabled"),"outgoing_server2server_group_share_enabled"],incomingServer2serverGroupShareEnabled:[s("federatedfilesharing","incomingServer2serverGroupShareEnabled"),"incoming_server2server_group_share_enabled"],federatedGroupSharingSupported:[s("federatedfilesharing","federatedGroupSharingSupported"),"federated_group_sharing_supported"],federatedTrustedShareAutoAccept:[s("federatedfilesharing","federatedTrustedShareAutoAccept"),"federatedTrustedShareAutoAccept"],lookupServerEnabled:[s("federatedfilesharing","lookupServerEnabled"),"lookupServerEnabled"],lookupServerUploadEnabled:[s("federatedfilesharing","lookupServerUploadEnabled"),"lookupServerUploadEnabled"]},{get(d,o){return d[o]?.[0]},set(d,o,t){return o in d?(d[o][0]=t,k(d[o][1],t),!0):!1}}),r=G(y);async function _(d){if(d===!1)return r.lookupServerUploadEnabled=!1;await b({name:e("federatedfilesharing","Confirm data upload to lookup server"),text:e("federatedfilesharing",'When enabled, all account properties (e.g. email address) with scope visibility set to "published", will be automatically synced and transmitted to an external system and made available in a public, global address book.'),labelConfirm:e("federatedfilesharing","Enable data upload"),labelReject:e("federatedfilesharing","Disable upload"),severity:"warning"}).then(()=>{r.lookupServerUploadEnabled=!0}).catch(()=>{r.lookupServerUploadEnabled=!1})}async function w(d){if(d===!1)return r.lookupServerEnabled=!1;await b({name:e("federatedfilesharing","Confirm querying lookup server"),text:e("federatedfilesharing","When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book.")+e("federatedfilesharing","This is used to retrieve the federated cloud ID to make federated sharing easier.")+e("federatedfilesharing","Moreover, email addresses of users might be sent to that system in order to verify them."),labelConfirm:e("federatedfilesharing","Enable querying"),labelReject:e("federatedfilesharing","Disable querying"),severity:"warning"}).then(()=>{r.lookupServerEnabled=!0}).catch(()=>{r.lookupServerEnabled=!1})}async function k(d,o){await C();const t=D("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"files_sharing",key:d}),V=o?"yes":"no";try{const{data:n}=await x.post(t,{value:V});if(n.ocs.meta.status!=="ok")if(n.ocs.meta.message)v(n.ocs.meta.message),S.error("Error updating federated files sharing config",{error:n.ocs});else throw new Error(`Failed to update federatedfilesharing config, ${n.ocs.meta.statuscode}`)}catch(n){S.error("Error updating federated files sharing config",{error:n}),v(e("federatedfilesharing","Unable to update federated files sharing config"))}}return(d,o)=>(g(),c(a(j),{name:a(e)("federatedfilesharing","Federated Cloud Sharing"),description:a(e)("federatedfilesharing","Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing."),docUrl:a(E)},{default:i(()=>[f(a(u),{modelValue:r.outgoingServer2serverShareEnabled,"onUpdate:modelValue":o[0]||(o[0]=t=>r.outgoingServer2serverShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)")),1)]),_:1},8,["modelValue"]),f(a(u),{modelValue:r.incomingServer2serverShareEnabled,"onUpdate:modelValue":o[1]||(o[1]=t=>r.incomingServer2serverShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to receive shares from other servers")),1)]),_:1},8,["modelValue"]),r.federatedGroupSharingSupported?(g(),c(a(u),{key:0,modelValue:r.outgoingServer2serverGroupShareEnabled,"onUpdate:modelValue":o[2]||(o[2]=t=>r.outgoingServer2serverGroupShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to send shares to groups on other servers")),1)]),_:1},8,["modelValue"])):m("",!0),r.federatedGroupSharingSupported?(g(),c(a(u),{key:1,modelValue:r.incomingServer2serverGroupShareEnabled,"onUpdate:modelValue":o[3]||(o[3]=t=>r.incomingServer2serverGroupShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to receive group shares from other servers")),1)]),_:1},8,["modelValue"])):m("",!0),h("fieldset",null,[h("legend",null,l(a(e)("federatedfilesharing","The lookup server is only available for global scale.")),1),f(a(u),{type:"switch",modelValue:r.lookupServerEnabled,disabled:"","onUpdate:modelValue":w},{default:i(()=>[p(l(a(e)("federatedfilesharing","Search global and public address book for people")),1)]),_:1},8,["modelValue"]),f(a(u),{type:"switch",modelValue:r.lookupServerUploadEnabled,disabled:"","onUpdate:modelValue":_},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people to publish their data to a global and public address book")),1)]),_:1},8,["modelValue"])]),h("div",I,[h("h3",q,l(a(e)("federatedfilesharing","Trusted federation")),1),f(a(u),{modelValue:r.federatedTrustedShareAutoAccept,"onUpdate:modelValue":o[4]||(o[4]=t=>r.federatedTrustedShareAutoAccept=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Automatically accept shares from trusted federated accounts and groups by default")),1)]),_:1},8,["modelValue"])])]),_:1},8,["name","description","docUrl"]))}}),N=A(F,[["__scopeId","data-v-71370f43"]]),P=s("federatedfilesharing","internalOnly",!1);P||T(N).mount("#vue-admin-federated"); //# sourceMappingURL=federatedfilesharing-settings-admin.mjs.map diff --git a/dist/federatedfilesharing-settings-admin.mjs.map b/dist/federatedfilesharing-settings-admin.mjs.map index 01bf8b8a59e64..32eb42d186c39 100644 --- a/dist/federatedfilesharing-settings-admin.mjs.map +++ b/dist/federatedfilesharing-settings-admin.mjs.map @@ -1 +1 @@ -{"version":3,"file":"federatedfilesharing-settings-admin.mjs","sources":["../build/frontend/apps/federatedfilesharing/src/components/AdminSettings.vue","../build/frontend/apps/federatedfilesharing/src/settings-admin.ts"],"sourcesContent":["\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { createApp } from 'vue'\nimport AdminSettings from './components/AdminSettings.vue'\n\nimport 'vite/modulepreload-polyfill'\n\nconst internalOnly = loadState('federatedfilesharing', 'internalOnly', false)\n\nif (!internalOnly) {\n\tconst app = createApp(AdminSettings)\n\tapp.mount('#vue-admin-federated')\n}\n"],"names":["sharingFederatedDocUrl","loadState","internalState","target","prop","value","updateAppConfig","state","reactive","showLookupServerUploadConfirmation","showConfirmation","t","showLookupServerConfirmation","key","confirmPassword","url","generateOcsUrl","stringValue","data","axios","showError","logger","error","_createBlock","_unref","NcSettingsSection","_createVNode","NcCheckboxRadioSwitch","_cache","$event","_createElementVNode","_hoisted_1","_hoisted_2","_toDisplayString","internalOnly","createApp","AdminSettings"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"federatedfilesharing-settings-admin.mjs","sources":["../build/frontend/apps/federatedfilesharing/src/components/AdminSettings.vue","../build/frontend/apps/federatedfilesharing/src/settings-admin.ts"],"sourcesContent":["\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { createApp } from 'vue'\nimport AdminSettings from './components/AdminSettings.vue'\n\nimport 'vite/modulepreload-polyfill'\n\nconst internalOnly = loadState('federatedfilesharing', 'internalOnly', false)\n\nif (!internalOnly) {\n\tconst app = createApp(AdminSettings)\n\tapp.mount('#vue-admin-federated')\n}\n"],"names":["sharingFederatedDocUrl","loadState","internalState","target","prop","value","updateAppConfig","state","reactive","showLookupServerUploadConfirmation","showConfirmation","t","showLookupServerConfirmation","key","confirmPassword","url","generateOcsUrl","stringValue","data","axios","showError","logger","error","_createBlock","_unref","NcSettingsSection","_createVNode","NcCheckboxRadioSwitch","_cache","$event","_createElementVNode","_hoisted_1","_hoisted_2","_toDisplayString","internalOnly","createApp","AdminSettings"],"mappings":"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"} \ No newline at end of file diff --git a/dist/federatedfilesharing-settings-personal.mjs b/dist/federatedfilesharing-settings-personal.mjs index d21a347e34137..7b146fca1944c 100644 --- a/dist/federatedfilesharing-settings-personal.mjs +++ b/dist/federatedfilesharing-settings-personal.mjs @@ -1,4 +1,4 @@ -import{o as l,f as g,g as t,t as i,h as F,m as A,b as H,c as y,w as r,k as s,u as e,j as d,W as J,F as W,O as Z,l as N,v as C,e as q}from"./Web-DYqXJUev.chunk.mjs";import{d as L}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{_ as S,l as c}from"./public-C1mLBHT3.chunk.mjs";import{t as a}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{k as _}from"./index-Cp0kcsps.chunk.mjs";import{N as m}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as E}from"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{I as G,N as K}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";const Q={name:"CheckIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},X=["aria-hidden","aria-label"],ee=["fill","width","height"],ae={d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"},te={key:0};function re(b,u,o,w,h,x){return l(),g("span",A(b.$attrs,{"aria-hidden":o.title?null:"true","aria-label":o.title,class:"material-design-icon check-icon",role:"img",onClick:u[0]||(u[0]=k=>b.$emit("click",k))}),[(l(),g("svg",{fill:o.fillColor,class:"material-design-icon__svg",width:o.size,height:o.size,viewBox:"0 0 24 24"},[t("path",ae,[o.title?(l(),g("title",te,i(o.title),1)):F("",!0)])],8,ee))],16,X)}const oe=S(Q,[["render",re]]),ie={class:"social-button"},le=["src"],ne=["src"],se=["src"],de={style:{margin:"10px 0"}},ce=["href"],ue=H({__name:"PersonalSettings",setup(b){const u=window.OC.theme.productName,o=c("federatedfilesharing","color"),w=c("federatedfilesharing","textColor"),h=c("federatedfilesharing","cloudId"),x=c("federatedfilesharing","docUrlFederated"),k=c("federatedfilesharing","logoPath"),f=c("federatedfilesharing","reference"),U=_("core","facebook"),z=_("core","mastodon"),D=_("core","bluesky"),B=a("federatedfilesharing","Share with me through my #Nextcloud Federated Cloud ID, see {url}",{url:f}),M=a("federatedfilesharing","Share with me through my #Nextcloud Federated Cloud ID"),R=`https://mastodon.social/?text=${encodeURIComponent(M)}&url=${encodeURIComponent(f)}`,T=`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(f)}`,O=`https://bsky.app/intent/compose?text=${encodeURIComponent(B)}`,P=new URL(k,location.origin),v=N(!1),p=N(!1),I=C(()=>` +import{o as l,f as g,g as t,t as i,h as F,m as A,b as H,c as y,w as r,k as s,u as e,j as d,W as J,F as W,O as Z,l as N,v as C,e as q}from"./Web-DYqXJUev.chunk.mjs";import{d as L}from"./index-mH69OG7L.chunk.mjs";import{_ as S,l as c}from"./public-C1mLBHT3.chunk.mjs";import{t as a}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{k as _}from"./index-Cp0kcsps.chunk.mjs";import{N as m}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as E}from"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{I as G,N as K}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";const Q={name:"CheckIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},X=["aria-hidden","aria-label"],ee=["fill","width","height"],ae={d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"},te={key:0};function re(b,u,o,w,h,x){return l(),g("span",A(b.$attrs,{"aria-hidden":o.title?null:"true","aria-label":o.title,class:"material-design-icon check-icon",role:"img",onClick:u[0]||(u[0]=k=>b.$emit("click",k))}),[(l(),g("svg",{fill:o.fillColor,class:"material-design-icon__svg",width:o.size,height:o.size,viewBox:"0 0 24 24"},[t("path",ae,[o.title?(l(),g("title",te,i(o.title),1)):F("",!0)])],8,ee))],16,X)}const oe=S(Q,[["render",re]]),ie={class:"social-button"},le=["src"],ne=["src"],se=["src"],de={style:{margin:"10px 0"}},ce=["href"],ue=H({__name:"PersonalSettings",setup(b){const u=window.OC.theme.productName,o=c("federatedfilesharing","color"),w=c("federatedfilesharing","textColor"),h=c("federatedfilesharing","cloudId"),x=c("federatedfilesharing","docUrlFederated"),k=c("federatedfilesharing","logoPath"),f=c("federatedfilesharing","reference"),U=_("core","facebook"),z=_("core","mastodon"),D=_("core","bluesky"),B=a("federatedfilesharing","Share with me through my #Nextcloud Federated Cloud ID, see {url}",{url:f}),M=a("federatedfilesharing","Share with me through my #Nextcloud Federated Cloud ID"),R=`https://mastodon.social/?text=${encodeURIComponent(M)}&url=${encodeURIComponent(f)}`,T=`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(f)}`,O=`https://bsky.app/intent/compose?text=${encodeURIComponent(B)}`,P=new URL(k,location.origin),v=N(!1),p=N(!1),I=C(()=>` padding:10px; background-color:${o}; color:${w}; diff --git a/dist/federatedfilesharing-settings-personal.mjs.map b/dist/federatedfilesharing-settings-personal.mjs.map index e7c59f4d7d3c9..6f8ab1ed2df97 100644 --- a/dist/federatedfilesharing-settings-personal.mjs.map +++ b/dist/federatedfilesharing-settings-personal.mjs.map @@ -1 +1 @@ -{"version":3,"file":"federatedfilesharing-settings-personal.mjs","sources":["../node_modules/vue-material-design-icons/Check.vue","../build/frontend/apps/federatedfilesharing/src/components/PersonalSettings.vue","../build/frontend/apps/federatedfilesharing/src/settings-personal.ts"],"sourcesContent":["\n\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport PersonalSettings from './components/PersonalSettings.vue'\n\nimport 'vite/modulepreload-polyfill'\n\nconst app = createApp(PersonalSettings)\napp.mount('#vue-personal-federated')\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","productName","color","loadState","textColor","cloudId","docUrlFederated","logoPath","reference","urlFacebookIcon","imagePath","urlMastodonIcon","urlBlueSkyIcon","messageWithURL","t","messageWithoutURL","shareMastodonUrl","shareFacebookUrl","shareBlueSkyUrl","logoPathAbsolute","showHtml","ref","isCopied","backgroundStyle","computed","linkStyle","htmlCode","copyLinkTooltip","copyCloudId","showSuccess","_createBlock","_unref","NcSettingsSection","_createVNode","NcInputField","IconCheck","IconClipboard","_hoisted_1","NcButton","_createTextVNode","_toDisplayString","IconWeb","_Fragment","_hoisted_5","app","createApp","PersonalSettings"],"mappings":"6zBAoBA,MAAKA,EAAU,CACb,KAAM,YACN,MAAO,CAAC,OAAO,EACf,MAAO,CACL,MAAO,CACL,KAAM,QAER,UAAW,CACT,KAAM,OACN,QAAS,gBAEX,KAAM,CACJ,KAAM,OACN,QAAS,EACX,CACF,CACF,8DAxBYC,GAAA,CAAA,EAAE,yDAAyD,iDAXrEC,EAeO,OAfPC,EAAcC,EAAA,OAAM,CACb,cAAaC,EAAA,MAAK,KAAA,OAClB,aAAYA,EAAA,MACb,MAAM,kCACN,KAAK,MACJ,QAAKC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAEH,EAAA,MAAK,QAAUG,CAAM,WACjCL,EAQM,MAAA,CARA,KAAMG,EAAA,UACP,MAAM,4BACL,MAAOA,EAAA,KACP,OAAQA,EAAA,KACT,QAAQ,cACXG,EAEO,OAFPP,GAEO,CADQI,EAAA,OAAbI,EAAA,EAAAP,EAAuC,aAAhBG,EAAA,KAAK,EAAA,CAAA,yMCKpC,MAAMK,EAAc,OAAO,GAAG,MAAM,YAC9BC,EAAQC,EAAkB,uBAAwB,OAAO,EACzDC,EAAYD,EAAkB,uBAAwB,WAAW,EACjEE,EAAUF,EAAkB,uBAAwB,SAAS,EAC7DG,EAAkBH,EAAkB,uBAAwB,iBAAiB,EAC7EI,EAAWJ,EAAkB,uBAAwB,UAAU,EAC/DK,EAAYL,EAAkB,uBAAwB,WAAW,EACjEM,EAAkBC,EAAU,OAAQ,UAAU,EAC9CC,EAAkBD,EAAU,OAAQ,UAAU,EAC9CE,EAAiBF,EAAU,OAAQ,SAAS,EAC5CG,EAAiBC,EAAE,uBAAwB,oEAAqE,CAAE,IAAKN,EAAW,EAClIO,EAAoBD,EAAE,uBAAwB,wDAAwD,EACtGE,EAAmB,iCAAiC,mBAAmBD,CAAiB,CAAC,QAAQ,mBAAmBP,CAAS,CAAC,GAC9HS,EAAmB,gDAAgD,mBAAmBT,CAAS,CAAC,GAChGU,EAAkB,wCAAwC,mBAAmBL,CAAc,CAAC,GAC5FM,EAAmB,IAAI,IAAIZ,EAAU,SAAS,MAAM,EAEpDa,EAAWC,EAAI,EAAK,EACpBC,EAAWD,EAAI,EAAK,EAEpBE,EAAkBC,EAAS,IAAM;AAAA;AAAA,oBAEnBtB,CAAK;AAAA,SAChBE,CAAS;AAAA;AAAA,2BAES,EAErBqB,EAAY,wBAAwBN,CAAgB,mKACpDO,EAAWF,EAAS,IAAM,sDAAsDhB,CAAS,YAAYe,EAAgB,KAAK;AAAA,gBAChHE,CAAS;AAAA,GACtBX,EAAE,uBAAwB,6BAA6B,CAAC;AAAA,KACtD,EAECa,EAAkBH,EAAS,IAAMF,EAAS,MAC7CR,EAAE,uBAAwB,iBAAiB,EAC3CA,EAAE,uBAAwB,MAAM,CAAC,EAKpC,eAAec,GAA6B,CAC3C,GAAI,CACH,MAAM,UAAU,UAAU,UAAUvB,CAAO,EAC3CwB,EAAYf,EAAE,uBAAwB,iBAAiB,CAAC,CACzD,MAAQ,CAEP,OAAO,OAAOA,EAAE,uBAAwB,6DAA6D,EAAGT,CAAO,CAChH,CACAiB,EAAS,MAAQ,GACjBO,EAAYf,EAAE,uBAAwB,SAAS,CAAC,EAChD,WAAW,IAAM,CAChBQ,EAAS,MAAQ,EAClB,EAAG,GAAI,CACR,oBAICQ,EAmEoBC,EAAAC,CAAA,EAAA,CAlElB,KAAMD,EAAAjB,CAAA,EAAC,uBAAA,iBAAA,EACP,YAAaiB,EAAAjB,CAAA,EAAC,uBAAA,0NAAA,CAAA,YAAsPiB,EAAA9B,CAAA,EAAW,EAC/Q,OAAQ8B,EAAAzB,CAAA,CAAA,aACT,IAae,CAbf2B,EAaeF,EAAAG,CAAA,EAAA,CAZd,MAAM,4BACN,SAAA,GACC,MAAOH,EAAAjB,CAAA,EAAC,uBAAA,yBAAA,EACR,WAAYiB,EAAA1B,CAAA,EACZ,QAASiB,EAAA,MACV,mBAAA,GACC,oBAAqBK,EAAA,MACrB,sBAAqBC,CAAA,GACX,yBACV,IAAgF,CAA/DN,EAAA,WAAjBQ,EAAgFK,GAAA,OAApD,KAAM,GAAI,UAAU,6BAAA,SAChDL,EAAmCM,EAAA,OAAZ,KAAM,EAAA,qEAI/BrC,EA4BI,IA5BJsC,GA4BI,KA3BAN,EAAAjB,CAAA,EAAC,uBAAA,oDAAA,CAAA,EAAA,CAAA,cAAiFf,EAAI,KAAA,KAAA,KAAA,EAAA,GACzFkC,EAKWF,EAAAO,CAAA,EAAA,CALA,KAAMpB,GAAe,CAEpB,OACV,IAAuD,CAAvDnB,EAAuD,MAAA,CAAlD,MAAM,sBAAuB,IAAKgC,EAAAnB,CAAA,CAAA,yBAFxC,IAA0C,CAAvC2B,EAAAC,EAAAT,EAAAjB,CAAA,qCAAuC,IAC1C,CAAA,CAAA,SAIDmB,EAKWF,EAAAO,CAAA,EAAA,CALA,KAAMrB,GAAgB,CAErB,OACV,IAAoF,CAApFlB,EAAoF,MAAA,CAA/E,MAAM,kDAAmD,IAAKgC,EAAAtB,CAAA,CAAA,yBAFpE,IAA2C,CAAxC8B,EAAAC,EAAAT,EAAAjB,CAAA,sCAAwC,IAC3C,CAAA,CAAA,SAIDmB,EAKWF,EAAAO,CAAA,EAAA,CALA,KAAMtB,GAAgB,CAErB,OACV,IAAwD,CAAxDjB,EAAwD,MAAA,CAAnD,MAAM,sBAAuB,IAAKgC,EAAApB,CAAA,CAAA,yBAFxC,IAA2C,CAAxC4B,EAAAC,EAAAT,EAAAjB,CAAA,sCAAwC,IAC3C,CAAA,CAAA,SAIDmB,EAOWF,EAAAO,CAAA,EAAA,CANV,MAAM,gCACL,QAAKzC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,IAAEsB,EAAA,MAAQ,CAAIA,EAAA,MAAA,GACT,OACV,IAAsB,CAAtBa,EAAsBQ,EAAA,CAAZ,KAAM,GAAE,CAAA,aACR,IACX,CADWF,EAAA,MACRR,EAAAjB,CAAA,EAAC,uBAAA,qBAAA,CAAA,EAAA,CAAA,CAAA,WAIUM,EAAA,WAAhB3B,EAiBWiD,EAAA,CAAA,IAAA,GAAA,CAhBV3C,EASI,IATJ4C,GASI,CARH5C,EAOI,IAAA,CANH,OAAO,SACP,IAAI,sBACH,KAAMgC,EAAAvB,CAAA,EACN,QAAOe,EAAA,KAAe,CAAA,GACvBxB,EAA2B,OAAA,CAApB,MAAO0B,EAAS,IAAI,IAC3Be,EAAGT,EAAAjB,CAAA,EAAC,uBAAA,kCAAA,CAAA,YAA8DiB,EAAA9B,CAAA,CAAA,CAAW,CAAA,EAAA,CAAA,CAAA,WAI/EF,EAIM,MAAA,KAAA,CAHLA,EAAoD,WAA9CgC,EAAAjB,CAAA,EAAC,uBAAA,YAAA,CAAA,EAAA,CAAA,cACPf,EAAI,KAAA,KAAA,KAAA,EAAA,GACJA,EAAsC,MAAA,KAAA,CAAjCA,EAA2B,cAAlB2B,EAAA,KAAQ,EAAA,CAAA,CAAA,6GCjIpBkB,GAAMC,EAAUC,EAAgB,EACtCF,GAAI,MAAM,yBAAyB","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"federatedfilesharing-settings-personal.mjs","sources":["../node_modules/vue-material-design-icons/Check.vue","../build/frontend/apps/federatedfilesharing/src/components/PersonalSettings.vue","../build/frontend/apps/federatedfilesharing/src/settings-personal.ts"],"sourcesContent":["\n\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport PersonalSettings from './components/PersonalSettings.vue'\n\nimport 'vite/modulepreload-polyfill'\n\nconst app = createApp(PersonalSettings)\napp.mount('#vue-personal-federated')\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","productName","color","loadState","textColor","cloudId","docUrlFederated","logoPath","reference","urlFacebookIcon","imagePath","urlMastodonIcon","urlBlueSkyIcon","messageWithURL","t","messageWithoutURL","shareMastodonUrl","shareFacebookUrl","shareBlueSkyUrl","logoPathAbsolute","showHtml","ref","isCopied","backgroundStyle","computed","linkStyle","htmlCode","copyLinkTooltip","copyCloudId","showSuccess","_createBlock","_unref","NcSettingsSection","_createVNode","NcInputField","IconCheck","IconClipboard","_hoisted_1","NcButton","_createTextVNode","_toDisplayString","IconWeb","_Fragment","_hoisted_5","app","createApp","PersonalSettings"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/federation-settings-admin.mjs b/dist/federation-settings-admin.mjs index f4a9139c25c6f..aaf7685942e1e 100644 --- a/dist/federation-settings-admin.mjs +++ b/dist/federation-settings-admin.mjs @@ -1,2 +1,2 @@ -import{b as g,p as x,o as l,f as U,g as h,t as E,u as t,y as u,k as _,w as T,L,l as w,D as k,c as f,v as p,h as O,Q as P,F as R,B as K,e as V}from"./Web-DYqXJUev.chunk.mjs";import{_ as F,l as q}from"./public-C1mLBHT3.chunk.mjs";import{t as r}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{k as z,l as G,a as B,b as M,d as j,N as Q}from"./mdi-B6W_Xvj-.chunk.mjs";import{N as W}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{d as H,a as y}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{N as b}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as A}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{_ as J}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{c as C,i as X}from"./index-CkGt55pS.chunk.mjs";import{c as $,g as Y}from"./index-Cp0kcsps.chunk.mjs";import{N as Z}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const d=Object.freeze({STATUS_OK:1,STATUS_PENDING:2,STATUS_FAILURE:3,STATUS_ACCESS_REVOKED:4});class N extends Error{}async function ee(a){try{const{data:i}=await C.post($("apps/federation/trusted-servers"),{url:a}),s=i.ocs.data;return{id:s.id,url:s.url,status:d.STATUS_PENDING}}catch(i){throw I(i)}}async function te(a){try{await C.delete($(`apps/federation/trusted-servers/${a}`))}catch(i){throw I(i)}}function I(a){return X(a)&&a.response?.data?.ocs?new N(a.response.data.ocs.meta.message,{cause:a}):a}const D=Y().setApp("federation").build(),re=g({__name:"AddTrustedServerForm",emits:["add"],setup(a,{emit:i}){const s=i,v=x("form"),o=w("");async function m(){try{const e=await ee(o.value);o.value="",s("add",e),k(()=>v.value?.reset()),H(r("federation","Added to the list of trusted servers"))}catch(e){D.error("Failed to add trusted server",{error:e}),e instanceof N?y(e.message):y(r("federation","Could not add trusted server. Please try again later."))}}return(e,n)=>(l(),U("form",{ref:"form",onSubmit:L(m,["prevent"])},[h("h3",{class:u(e.$style.addTrustedServerForm__heading)},E(t(r)("federation","Add trusted server")),3),h("div",{class:u(e.$style.addTrustedServerForm__wrapper)},[_(t(J),{modelValue:o.value,"onUpdate:modelValue":n[0]||(n[0]=c=>o.value=c),label:t(r)("federation","Server url"),placeholder:"https://…",required:"",type:"url"},null,8,["modelValue","label"]),_(t(b),{class:u(e.$style.addTrustedServerForm__submitButton),"aria-label":t(r)("federation","Add"),title:t(r)("federation","Add"),type:"submit",variant:"primary"},{icon:T(()=>[_(t(A),{path:t(z)},null,8,["path"])]),_:1},8,["class","aria-label","title"])],2)],544))}}),se="_addTrustedServerForm__heading_14ngv_2",ae="_addTrustedServerForm__wrapper_14ngv_7",ie="_addTrustedServerForm__submitButton_14ngv_14",oe={addTrustedServerForm__heading:se,addTrustedServerForm__wrapper:ae,addTrustedServerForm__submitButton:ie},de={$style:oe},ne=F(re,[["__cssModules",de]]),le=["textContent"],ue=g({__name:"TrustedServer",props:{server:{}},emits:["delete"],setup(a,{emit:i}){const s=a,v=i,o=w(!1),m=p(()=>s.server.status===d.STATUS_FAILURE),e=p(()=>{switch(s.server.status){case d.STATUS_OK:return j;case d.STATUS_PENDING:case d.STATUS_ACCESS_REVOKED:return M;case d.STATUS_FAILURE:default:return B}}),n=p(()=>{switch(s.server.status){case d.STATUS_OK:return[r("federation","Server ok"),r("federation","User list was exchanged at least once successfully with the remote server.")];case d.STATUS_PENDING:return[r("federation","Server pending"),r("federation","Waiting for shared secret or initial user list exchange.")];case d.STATUS_ACCESS_REVOKED:return[r("federation","Server access revoked"),r("federation","Server access revoked")];case d.STATUS_FAILURE:default:return[r("federation","Server failure"),r("federation","Connection to the remote server failed or the remote server is misconfigured.")]}});async function c(){try{o.value=!0,await te(s.server.id),v("delete",s.server)}catch(S){o.value=!1,D.error("Failed to delete trusted server",{error:S}),y(r("federation","Failed to delete trusted server. Please try again later."))}}return(S,Ee)=>(l(),U("li",{class:u(S.$style.trustedServer)},[_(t(A),{class:u({[S.$style.trustedServer__icon_error]:m.value}),path:e.value,name:n.value[0],title:n.value[1]},null,8,["class","path","name","title"]),h("code",{class:u(S.$style.trustedServer__url),textContent:E(a.server.url)},null,10,le),_(t(b),{"aria-label":t(r)("federation","Delete"),title:t(r)("federation","Delete"),disabled:o.value,onClick:c},{icon:T(()=>[o.value?(l(),f(t(Z),{key:0})):(l(),f(t(A),{key:1,path:t(G)},null,8,["path"]))]),_:1},8,["aria-label","title","disabled"])],2))}}),_e="_trustedServer_1wqey_2",ce="_trustedServer__icon_error_1wqey_15",ve="_trustedServer__url_1wqey_19",me={trustedServer:_e,trustedServer__icon_error:ce,trustedServer__url:ve},Se={$style:me},fe=F(ue,[["__cssModules",Se]]),pe=g({__name:"AdminSettings",setup(a){const i=q("federation","adminSettings"),s=w(i.trustedServers),v=p(()=>s.value.some(e=>e.status===d.STATUS_PENDING));async function o(e){s.value.unshift(e)}function m(e){s.value=s.value.filter(n=>n.id!==e.id)}return(e,n)=>(l(),f(t(W),{name:t(r)("federation","Trusted servers"),docUrl:t(i).docUrl,description:t(r)("federation","Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share.")},{default:T(()=>[v.value?(l(),f(t(Q),{key:0,type:"info",text:t(r)("federation","Each server must validate the other. This process may require a few cron cycles.")},null,8,["text"])):O("",!0),_(P,{class:u(e.$style.federationAdminSettings__trustedServersList),"aria-label":t(r)("federation","Trusted servers"),tag:"ul",enterFromClass:e.$style.transition_hidden,enterActiveClass:e.$style.transition_active,leaveActiveClass:e.$style.transition_active,leaveToClass:e.$style.transition_hidden},{default:T(()=>[(l(!0),U(R,null,K(s.value,c=>(l(),f(fe,{key:c.id,class:u(e.$style.federationAdminSettings__trustedServersListItem),server:c,onDelete:m},null,8,["class","server"]))),128))]),_:1},8,["class","aria-label","enterFromClass","enterActiveClass","leaveActiveClass","leaveToClass"]),_(ne,{onAdd:o})]),_:1},8,["name","docUrl","description"]))}}),Te="_federationAdminSettings__trustedServersList_z3uvu_2",he="_federationAdminSettings__trustedServersListItem_z3uvu_9",ye="_transition_active_z3uvu_13",Ae="_transition_hidden_z3uvu_17",ge={federationAdminSettings__trustedServersList:Te,federationAdminSettings__trustedServersListItem:he,transition_active:ye,transition_hidden:Ae},Ue={$style:ge},we=F(pe,[["__cssModules",Ue]]),Fe=V(we);Fe.mount("#federation-admin-settings"); +import{b as g,p as x,o as l,f as U,g as h,t as E,u as t,y as u,k as _,w as T,L,l as w,D as k,c as f,v as p,h as O,Q as P,F as R,B as K,e as V}from"./Web-DYqXJUev.chunk.mjs";import{_ as F,l as q}from"./public-C1mLBHT3.chunk.mjs";import{t as r}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{k as z,l as G,a as B,b as M,d as j,N as Q}from"./mdi-B6W_Xvj-.chunk.mjs";import{N as W}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{d as H,a as y}from"./index-mH69OG7L.chunk.mjs";import{N as b}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as A}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{_ as J}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{c as C,i as X}from"./index-CkGt55pS.chunk.mjs";import{c as $,g as Y}from"./index-Cp0kcsps.chunk.mjs";import{N as Z}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const d=Object.freeze({STATUS_OK:1,STATUS_PENDING:2,STATUS_FAILURE:3,STATUS_ACCESS_REVOKED:4});class N extends Error{}async function ee(a){try{const{data:i}=await C.post($("apps/federation/trusted-servers"),{url:a}),s=i.ocs.data;return{id:s.id,url:s.url,status:d.STATUS_PENDING}}catch(i){throw I(i)}}async function te(a){try{await C.delete($(`apps/federation/trusted-servers/${a}`))}catch(i){throw I(i)}}function I(a){return X(a)&&a.response?.data?.ocs?new N(a.response.data.ocs.meta.message,{cause:a}):a}const D=Y().setApp("federation").build(),re=g({__name:"AddTrustedServerForm",emits:["add"],setup(a,{emit:i}){const s=i,v=x("form"),o=w("");async function m(){try{const e=await ee(o.value);o.value="",s("add",e),k(()=>v.value?.reset()),H(r("federation","Added to the list of trusted servers"))}catch(e){D.error("Failed to add trusted server",{error:e}),e instanceof N?y(e.message):y(r("federation","Could not add trusted server. Please try again later."))}}return(e,n)=>(l(),U("form",{ref:"form",onSubmit:L(m,["prevent"])},[h("h3",{class:u(e.$style.addTrustedServerForm__heading)},E(t(r)("federation","Add trusted server")),3),h("div",{class:u(e.$style.addTrustedServerForm__wrapper)},[_(t(J),{modelValue:o.value,"onUpdate:modelValue":n[0]||(n[0]=c=>o.value=c),label:t(r)("federation","Server url"),placeholder:"https://…",required:"",type:"url"},null,8,["modelValue","label"]),_(t(b),{class:u(e.$style.addTrustedServerForm__submitButton),"aria-label":t(r)("federation","Add"),title:t(r)("federation","Add"),type:"submit",variant:"primary"},{icon:T(()=>[_(t(A),{path:t(z)},null,8,["path"])]),_:1},8,["class","aria-label","title"])],2)],544))}}),se="_addTrustedServerForm__heading_14ngv_2",ae="_addTrustedServerForm__wrapper_14ngv_7",ie="_addTrustedServerForm__submitButton_14ngv_14",oe={addTrustedServerForm__heading:se,addTrustedServerForm__wrapper:ae,addTrustedServerForm__submitButton:ie},de={$style:oe},ne=F(re,[["__cssModules",de]]),le=["textContent"],ue=g({__name:"TrustedServer",props:{server:{}},emits:["delete"],setup(a,{emit:i}){const s=a,v=i,o=w(!1),m=p(()=>s.server.status===d.STATUS_FAILURE),e=p(()=>{switch(s.server.status){case d.STATUS_OK:return j;case d.STATUS_PENDING:case d.STATUS_ACCESS_REVOKED:return M;case d.STATUS_FAILURE:default:return B}}),n=p(()=>{switch(s.server.status){case d.STATUS_OK:return[r("federation","Server ok"),r("federation","User list was exchanged at least once successfully with the remote server.")];case d.STATUS_PENDING:return[r("federation","Server pending"),r("federation","Waiting for shared secret or initial user list exchange.")];case d.STATUS_ACCESS_REVOKED:return[r("federation","Server access revoked"),r("federation","Server access revoked")];case d.STATUS_FAILURE:default:return[r("federation","Server failure"),r("federation","Connection to the remote server failed or the remote server is misconfigured.")]}});async function c(){try{o.value=!0,await te(s.server.id),v("delete",s.server)}catch(S){o.value=!1,D.error("Failed to delete trusted server",{error:S}),y(r("federation","Failed to delete trusted server. Please try again later."))}}return(S,Ee)=>(l(),U("li",{class:u(S.$style.trustedServer)},[_(t(A),{class:u({[S.$style.trustedServer__icon_error]:m.value}),path:e.value,name:n.value[0],title:n.value[1]},null,8,["class","path","name","title"]),h("code",{class:u(S.$style.trustedServer__url),textContent:E(a.server.url)},null,10,le),_(t(b),{"aria-label":t(r)("federation","Delete"),title:t(r)("federation","Delete"),disabled:o.value,onClick:c},{icon:T(()=>[o.value?(l(),f(t(Z),{key:0})):(l(),f(t(A),{key:1,path:t(G)},null,8,["path"]))]),_:1},8,["aria-label","title","disabled"])],2))}}),_e="_trustedServer_1wqey_2",ce="_trustedServer__icon_error_1wqey_15",ve="_trustedServer__url_1wqey_19",me={trustedServer:_e,trustedServer__icon_error:ce,trustedServer__url:ve},Se={$style:me},fe=F(ue,[["__cssModules",Se]]),pe=g({__name:"AdminSettings",setup(a){const i=q("federation","adminSettings"),s=w(i.trustedServers),v=p(()=>s.value.some(e=>e.status===d.STATUS_PENDING));async function o(e){s.value.unshift(e)}function m(e){s.value=s.value.filter(n=>n.id!==e.id)}return(e,n)=>(l(),f(t(W),{name:t(r)("federation","Trusted servers"),docUrl:t(i).docUrl,description:t(r)("federation","Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share.")},{default:T(()=>[v.value?(l(),f(t(Q),{key:0,type:"info",text:t(r)("federation","Each server must validate the other. This process may require a few cron cycles.")},null,8,["text"])):O("",!0),_(P,{class:u(e.$style.federationAdminSettings__trustedServersList),"aria-label":t(r)("federation","Trusted servers"),tag:"ul",enterFromClass:e.$style.transition_hidden,enterActiveClass:e.$style.transition_active,leaveActiveClass:e.$style.transition_active,leaveToClass:e.$style.transition_hidden},{default:T(()=>[(l(!0),U(R,null,K(s.value,c=>(l(),f(fe,{key:c.id,class:u(e.$style.federationAdminSettings__trustedServersListItem),server:c,onDelete:m},null,8,["class","server"]))),128))]),_:1},8,["class","aria-label","enterFromClass","enterActiveClass","leaveActiveClass","leaveToClass"]),_(ne,{onAdd:o})]),_:1},8,["name","docUrl","description"]))}}),Te="_federationAdminSettings__trustedServersList_z3uvu_2",he="_federationAdminSettings__trustedServersListItem_z3uvu_9",ye="_transition_active_z3uvu_13",Ae="_transition_hidden_z3uvu_17",ge={federationAdminSettings__trustedServersList:Te,federationAdminSettings__trustedServersListItem:he,transition_active:ye,transition_hidden:Ae},Ue={$style:ge},we=F(pe,[["__cssModules",Ue]]),Fe=V(we);Fe.mount("#federation-admin-settings"); //# sourceMappingURL=federation-settings-admin.mjs.map diff --git a/dist/federation-settings-admin.mjs.map b/dist/federation-settings-admin.mjs.map index 23ffdc6afa61d..23e36a1e26ee2 100644 --- a/dist/federation-settings-admin.mjs.map +++ b/dist/federation-settings-admin.mjs.map @@ -1 +1 @@ -{"version":3,"file":"federation-settings-admin.mjs","sources":["../build/frontend/apps/federation/src/services/api.ts","../build/frontend/apps/federation/src/services/logger.ts","../build/frontend/apps/federation/src/components/AddTrustedServerForm.vue","../build/frontend/apps/federation/src/components/TrustedServer.vue","../build/frontend/apps/federation/src/views/AdminSettings.vue","../build/frontend/apps/federation/src/settings-admin.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios, { isAxiosError } from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport const TrustedServerStatus = Object.freeze({\n\t/** after a user list was exchanged at least once successfully */\n\tSTATUS_OK: 1,\n\t/** waiting for shared secret or initial user list exchange */\n\tSTATUS_PENDING: 2,\n\t/** something went wrong, misconfigured server, software bug,... user interaction needed */\n\tSTATUS_FAILURE: 3,\n\t/** remote server revoked access */\n\tSTATUS_ACCESS_REVOKED: 4,\n})\n\nexport interface ITrustedServer {\n\tid: number\n\turl: string\n\tstatus: typeof TrustedServerStatus[keyof typeof TrustedServerStatus]\n}\n\nexport class ApiError extends Error {}\n\n/**\n * Add a new trusted server\n *\n * @param url - The new URL to add\n */\nexport async function addServer(url: string): Promise {\n\ttry {\n\t\tconst { data } = await axios.post>>(\n\t\t\tgenerateOcsUrl('apps/federation/trusted-servers'),\n\t\t\t{ url },\n\t\t)\n\n\t\tconst serverData = data.ocs.data\n\t\treturn {\n\t\t\tid: serverData.id,\n\t\t\turl: serverData.url,\n\t\t\tstatus: TrustedServerStatus.STATUS_PENDING,\n\t\t}\n\t} catch (error) {\n\t\tthrow mapError(error)\n\t}\n}\n\n/**\n * @param id - The id of the trusted server to remove\n */\nexport async function deleteServer(id: number): Promise {\n\ttry {\n\t\tawait axios.delete(generateOcsUrl(`apps/federation/trusted-servers/${id}`))\n\t} catch (error) {\n\t\tthrow mapError(error)\n\t}\n}\n\n/**\n * Error handling for API calls\n *\n * @param error - The catch error\n */\nfunction mapError(error: unknown): ApiError | unknown {\n\tif (isAxiosError(error) && error.response?.data?.ocs) {\n\t\treturn new ApiError((error.response.data as OCSResponse).ocs.meta.message, { cause: error })\n\t}\n\treturn error\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder().setApp('federation').build()\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport AdminSettings from './views/AdminSettings.vue'\n\nconst app = createApp(AdminSettings)\napp.mount('#federation-admin-settings')\n"],"names":["TrustedServerStatus","ApiError","addServer","url","data","axios","generateOcsUrl","serverData","error","mapError","deleteServer","id","isAxiosError","logger","getLoggerBuilder","emit","__emit","formElement","useTemplateRef","newServerUrl","ref","onAdd","server","nextTick","showSuccess","t","showError","_createElementBlock","_createElementVNode","_normalizeClass","$style","_unref","_createVNode","NcTextField","$event","NcButton","NcIconSvgWrapper","mdiPlus","props","__props","isLoading","hasError","computed","serverIcon","mdiCheckNetworkOutline","mdiHelpNetworkOutline","mdiCloseNetworkOutline","serverStatus","onDelete","_toDisplayString","_createBlock","NcLoadingIcon","mdiTrashCanOutline","adminSettings","loadState","trustedServers","showPendingServerInfo","s","NcSettingsSection","NcNoteCard","_TransitionGroup","_Fragment","_renderList","TrustedServer","AddTrustedServerForm","app","createApp","AdminSettings"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"federation-settings-admin.mjs","sources":["../build/frontend/apps/federation/src/services/api.ts","../build/frontend/apps/federation/src/services/logger.ts","../build/frontend/apps/federation/src/components/AddTrustedServerForm.vue","../build/frontend/apps/federation/src/components/TrustedServer.vue","../build/frontend/apps/federation/src/views/AdminSettings.vue","../build/frontend/apps/federation/src/settings-admin.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios, { isAxiosError } from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport const TrustedServerStatus = Object.freeze({\n\t/** after a user list was exchanged at least once successfully */\n\tSTATUS_OK: 1,\n\t/** waiting for shared secret or initial user list exchange */\n\tSTATUS_PENDING: 2,\n\t/** something went wrong, misconfigured server, software bug,... user interaction needed */\n\tSTATUS_FAILURE: 3,\n\t/** remote server revoked access */\n\tSTATUS_ACCESS_REVOKED: 4,\n})\n\nexport interface ITrustedServer {\n\tid: number\n\turl: string\n\tstatus: typeof TrustedServerStatus[keyof typeof TrustedServerStatus]\n}\n\nexport class ApiError extends Error {}\n\n/**\n * Add a new trusted server\n *\n * @param url - The new URL to add\n */\nexport async function addServer(url: string): Promise {\n\ttry {\n\t\tconst { data } = await axios.post>>(\n\t\t\tgenerateOcsUrl('apps/federation/trusted-servers'),\n\t\t\t{ url },\n\t\t)\n\n\t\tconst serverData = data.ocs.data\n\t\treturn {\n\t\t\tid: serverData.id,\n\t\t\turl: serverData.url,\n\t\t\tstatus: TrustedServerStatus.STATUS_PENDING,\n\t\t}\n\t} catch (error) {\n\t\tthrow mapError(error)\n\t}\n}\n\n/**\n * @param id - The id of the trusted server to remove\n */\nexport async function deleteServer(id: number): Promise {\n\ttry {\n\t\tawait axios.delete(generateOcsUrl(`apps/federation/trusted-servers/${id}`))\n\t} catch (error) {\n\t\tthrow mapError(error)\n\t}\n}\n\n/**\n * Error handling for API calls\n *\n * @param error - The catch error\n */\nfunction mapError(error: unknown): ApiError | unknown {\n\tif (isAxiosError(error) && error.response?.data?.ocs) {\n\t\treturn new ApiError((error.response.data as OCSResponse).ocs.meta.message, { cause: error })\n\t}\n\treturn error\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder().setApp('federation').build()\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport AdminSettings from './views/AdminSettings.vue'\n\nconst app = createApp(AdminSettings)\napp.mount('#federation-admin-settings')\n"],"names":["TrustedServerStatus","ApiError","addServer","url","data","axios","generateOcsUrl","serverData","error","mapError","deleteServer","id","isAxiosError","logger","getLoggerBuilder","emit","__emit","formElement","useTemplateRef","newServerUrl","ref","onAdd","server","nextTick","showSuccess","t","showError","_createElementBlock","_createElementVNode","_normalizeClass","$style","_unref","_createVNode","NcTextField","$event","NcButton","NcIconSvgWrapper","mdiPlus","props","__props","isLoading","hasError","computed","serverIcon","mdiCheckNetworkOutline","mdiHelpNetworkOutline","mdiCloseNetworkOutline","serverStatus","onDelete","_toDisplayString","_createBlock","NcLoadingIcon","mdiTrashCanOutline","adminSettings","loadState","trustedServers","showPendingServerInfo","s","NcSettingsSection","NcNoteCard","_TransitionGroup","_Fragment","_renderList","TrustedServer","AddTrustedServerForm","app","createApp","AdminSettings"],"mappings":"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"} \ No newline at end of file diff --git a/dist/files_external-auth_rsa.mjs b/dist/files_external-auth_rsa.mjs index ac46f3f64a08c..665af73dedf1f 100644 --- a/dist/files_external-auth_rsa.mjs +++ b/dist/files_external-auth_rsa.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/AuthMechanismRsa-EWm029j5.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/types-DurdPjCi.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-BFB83ufD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-AuthMechanismRsa-DGFpo-hc.chunk.css')])))=>i.map(i=>d[i]); -import{d as t,a as i,_ as a}from"./Web-DYqXJUev.chunk.mjs";import"./public-C1mLBHT3.chunk.mjs";const r=i(()=>a(()=>import("./AuthMechanismRsa-EWm029j5.chunk.mjs").then(e=>e.A),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]),import.meta.url)),s=t(r,{shadowRoot:!1});customElements.define("files_external-auth-mechanism-rsa",s),window.OCA.FilesExternal.AuthMechanism.registerHandler({id:"rsa",tagName:"files_external-auth-mechanism-rsa",enabled(e){return e.scheme==="publickey"&&e.identifier==="publickey::rsa"}}); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/AuthMechanismRsa-vXoEDo92.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/index-mH69OG7L.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/types-DurdPjCi.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-BFB83ufD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-AuthMechanismRsa-DGFpo-hc.chunk.css')])))=>i.map(i=>d[i]); +import{d as t,a as i,_ as a}from"./Web-DYqXJUev.chunk.mjs";import"./public-C1mLBHT3.chunk.mjs";const r=i(()=>a(()=>import("./AuthMechanismRsa-vXoEDo92.chunk.mjs").then(e=>e.A),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]),import.meta.url)),s=t(r,{shadowRoot:!1});customElements.define("files_external-auth-mechanism-rsa",s),window.OCA.FilesExternal.AuthMechanism.registerHandler({id:"rsa",tagName:"files_external-auth-mechanism-rsa",enabled(e){return e.scheme==="publickey"&&e.identifier==="publickey::rsa"}}); //# sourceMappingURL=files_external-auth_rsa.mjs.map diff --git a/dist/files_external-init.mjs b/dist/files_external-init.mjs index 9d0c4ccdebffd..e8585f000fc88 100644 --- a/dist/files_external-init.mjs +++ b/dist/files_external-init.mjs @@ -1,3 +1,3 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/CredentialsDialog-COL2lHl3.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs')])))=>i.map(i=>d[i]); -import{D as x,b as C,V as E,C as p,a as u}from"./index-BGv_Bbjs.chunk.mjs";import{l as V}from"./public-C1mLBHT3.chunk.mjs";import{t as s}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{a as M,_ as L}from"./Web-DYqXJUev.chunk.mjs";import{c as l}from"./index-CkGt55pS.chunk.mjs";import{d as w,a as h,s as S,e as T}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{b as m,f as _,a as c,c as A,h as y}from"./index-Cp0kcsps.chunk.mjs";import{a as N,P as k}from"./index-BgrtITOq.chunk.mjs";import{s as D}from"./index-CmDAUQql.chunk.mjs";import{S as a}from"./types-DurdPjCi.chunk.mjs";import{F as I,b,P as d}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";const P='',O='';function v(e){return e.status===void 0||e.status===a.Success?!1:e.userProvided||e.authMechanism==="password::global::user"}function H(e){if(e.type===I.File)return!1;const t=e.attributes;return!t.scope||!t.backend?!1:t.scope==="personal"||t.scope==="system"}N(l);async function R(e,t,n){const r=(await l.request({method:"PUT",url:m("apps/files_external/userglobalstorages/{id}",{id:e.id}),confirmPassword:k.Strict,data:{backendOptions:{user:t,password:n}}})).data;return r.status!==a.Success?(h(s("files_external","Unable to update this external storage config. {statusMessage}",{statusMessage:r?.statusMessage||""})),null):(w(s("files_external","New configuration successfully saved")),e.attributes.config=r,_("files:node:updated",e),!0)}const F="credentials-external-storage",U={id:F,displayName:()=>s("files","Enter missing credentials"),iconSvgInline:()=>O,enabled:({nodes:e})=>{if(e.length!==1||!e[0])return!1;const t=e[0];if(!H(t))return!1;const n=t.attributes?.config||{};return!!v(n)},async exec({nodes:e}){const{login:t,password:n}=await D(M(()=>L(()=>import("./CredentialsDialog-COL2lHl3.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]),import.meta.url)))??{};if(t&&n)try{await R(e[0],t,n),w(s("files_external","Credentials successfully set"))}catch(r){h(s("files_external","Error while setting credentials: {error}",{error:r.message}))}return null},order:-1e3,default:x.DEFAULT,inline:()=>!0},$='',o=`/files/${c()?.uid}`;function B(e){const t=(e.path+"/"+e.name).replace(/^\//gm,"");return new b({id:e.id,source:y("dav"+o+"/"+t),root:o,owner:c()?.uid||null,permissions:e.config.status!==a.Success?d.NONE:e?.permissions||d.READ,attributes:{displayName:t,...e}})}async function Z(){const e=(await l.get(A("apps/files_external/api/v1/mounts"))).data.ocs.data.map(B);return{folder:new b({id:0,source:y("dav"+o),root:o,owner:c()?.uid||null,permissions:d.READ}),contents:e}}function j(e,t=!0){const n=t?"userglobalstorages":"userstorages";return l.get(m(`apps/files_external/${n}/${e}?testOnly=false`))}const q={id:"check-external-storage",displayName:()=>"",iconSvgInline:()=>"",enabled:({nodes:e})=>e.every(t=>H(t)===!0),exec:async()=>null,async renderInline({nodes:e}){if(e.length!==1||!e[0])return null;const t=e[0],n=document.createElement("span");n.className="files-list__row-status",n.innerHTML=s("files_external","Checking storage …");let r;try{const{data:i}=await j(t.id,t.attributes.scope==="system");if(r=i,t.attributes.config=r,_("files:node:updated",t),r.status!==a.Success)throw new Error(r?.statusMessage||s("files_external","There was an error with this external storage."));n.remove()}catch(i){i.response&&!r&&S(s("files_external","We were unable to check the external storage {basename}",{basename:t.basename})),n.innerHTML="";const f=r?v(r):!1,g=document.createElement("span");g.classList.add(`files-list__row-status--${f?"warning":"error"}`),f||(n.innerHTML=$,n.title=i.message),n.prepend(g)}return n},order:10},W={id:"open-in-files-external-storage",displayName:({nodes:e})=>(e?.[0]?.attributes?.config||{status:a.Indeterminate}).status!==a.Success?s("files_external","Examine this faulty external storage configuration"):s("files","Open in Files"),iconSvgInline:()=>"",enabled:({view:e})=>e.id==="extstoragemounts",async exec({nodes:e}){if(e[0]?.attributes?.config?.status!==a.Success){if(await T({name:s("files_external","External mount error"),text:s("files_external","There was an error with this external storage. Do you want to review this mount point config in the settings page?"),labelConfirm:s("files_external","Open settings"),labelReject:s("files_external","Ignore")})===!0){const t=c()?.isAdmin?"admin":"user";window.location.href=m(`/settings/${t}/externalstorages`)}return null}return window.OCP.Files.Router.goToRoute(null,{view:"files"},{dir:e[0].path}),null},order:-1e3,default:x.HIDDEN},Y=V("files_external","allowUserMounting",!1),z=C();z.register(new E({id:"extstoragemounts",name:s("files_external","External storage"),caption:s("files_external","List of external storage."),emptyCaption:Y?s("files_external","There is no external storage configured. You can configure them in your Personal settings."):s("files_external","There is no external storage configured and you don't have the permission to configure them."),emptyTitle:s("files_external","No external storage"),icon:P,order:30,columns:[new p({id:"storage-type",title:s("files_external","Storage type"),render(e){const t=e.attributes?.backend||s("files_external","Unknown"),n=document.createElement("span");return n.textContent=t,n}}),new p({id:"scope",title:s("files_external","Scope"),render(e){const t=document.createElement("span");let n=s("files_external","Personal");return e.attributes?.scope==="system"&&(n=s("files_external","System")),t.textContent=n,t}})],getContents:Z})),u(U),u(q),u(W); +import{D as x,b as C,V as E,C as p,a as u}from"./index-BGv_Bbjs.chunk.mjs";import{l as V}from"./public-C1mLBHT3.chunk.mjs";import{t as s}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{a as M,_ as L}from"./Web-DYqXJUev.chunk.mjs";import{c as l}from"./index-CkGt55pS.chunk.mjs";import{d as w,a as h,s as S,e as T}from"./index-mH69OG7L.chunk.mjs";import{b as m,f as _,a as c,c as A,h as y}from"./index-Cp0kcsps.chunk.mjs";import{a as N,P as k}from"./index-BgrtITOq.chunk.mjs";import{s as D}from"./index-CmDAUQql.chunk.mjs";import{S as a}from"./types-DurdPjCi.chunk.mjs";import{F as I,b,P as d}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";const P='',O='';function v(e){return e.status===void 0||e.status===a.Success?!1:e.userProvided||e.authMechanism==="password::global::user"}function H(e){if(e.type===I.File)return!1;const t=e.attributes;return!t.scope||!t.backend?!1:t.scope==="personal"||t.scope==="system"}N(l);async function R(e,t,n){const r=(await l.request({method:"PUT",url:m("apps/files_external/userglobalstorages/{id}",{id:e.id}),confirmPassword:k.Strict,data:{backendOptions:{user:t,password:n}}})).data;return r.status!==a.Success?(h(s("files_external","Unable to update this external storage config. {statusMessage}",{statusMessage:r?.statusMessage||""})),null):(w(s("files_external","New configuration successfully saved")),e.attributes.config=r,_("files:node:updated",e),!0)}const F="credentials-external-storage",U={id:F,displayName:()=>s("files","Enter missing credentials"),iconSvgInline:()=>O,enabled:({nodes:e})=>{if(e.length!==1||!e[0])return!1;const t=e[0];if(!H(t))return!1;const n=t.attributes?.config||{};return!!v(n)},async exec({nodes:e}){const{login:t,password:n}=await D(M(()=>L(()=>import("./CredentialsDialog-COL2lHl3.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]),import.meta.url)))??{};if(t&&n)try{await R(e[0],t,n),w(s("files_external","Credentials successfully set"))}catch(r){h(s("files_external","Error while setting credentials: {error}",{error:r.message}))}return null},order:-1e3,default:x.DEFAULT,inline:()=>!0},$='',o=`/files/${c()?.uid}`;function B(e){const t=(e.path+"/"+e.name).replace(/^\//gm,"");return new b({id:e.id,source:y("dav"+o+"/"+t),root:o,owner:c()?.uid||null,permissions:e.config.status!==a.Success?d.NONE:e?.permissions||d.READ,attributes:{displayName:t,...e}})}async function Z(){const e=(await l.get(A("apps/files_external/api/v1/mounts"))).data.ocs.data.map(B);return{folder:new b({id:0,source:y("dav"+o),root:o,owner:c()?.uid||null,permissions:d.READ}),contents:e}}function j(e,t=!0){const n=t?"userglobalstorages":"userstorages";return l.get(m(`apps/files_external/${n}/${e}?testOnly=false`))}const q={id:"check-external-storage",displayName:()=>"",iconSvgInline:()=>"",enabled:({nodes:e})=>e.every(t=>H(t)===!0),exec:async()=>null,async renderInline({nodes:e}){if(e.length!==1||!e[0])return null;const t=e[0],n=document.createElement("span");n.className="files-list__row-status",n.innerHTML=s("files_external","Checking storage …");let r;try{const{data:i}=await j(t.id,t.attributes.scope==="system");if(r=i,t.attributes.config=r,_("files:node:updated",t),r.status!==a.Success)throw new Error(r?.statusMessage||s("files_external","There was an error with this external storage."));n.remove()}catch(i){i.response&&!r&&S(s("files_external","We were unable to check the external storage {basename}",{basename:t.basename})),n.innerHTML="";const f=r?v(r):!1,g=document.createElement("span");g.classList.add(`files-list__row-status--${f?"warning":"error"}`),f||(n.innerHTML=$,n.title=i.message),n.prepend(g)}return n},order:10},W={id:"open-in-files-external-storage",displayName:({nodes:e})=>(e?.[0]?.attributes?.config||{status:a.Indeterminate}).status!==a.Success?s("files_external","Examine this faulty external storage configuration"):s("files","Open in Files"),iconSvgInline:()=>"",enabled:({view:e})=>e.id==="extstoragemounts",async exec({nodes:e}){if(e[0]?.attributes?.config?.status!==a.Success){if(await T({name:s("files_external","External mount error"),text:s("files_external","There was an error with this external storage. Do you want to review this mount point config in the settings page?"),labelConfirm:s("files_external","Open settings"),labelReject:s("files_external","Ignore")})===!0){const t=c()?.isAdmin?"admin":"user";window.location.href=m(`/settings/${t}/externalstorages`)}return null}return window.OCP.Files.Router.goToRoute(null,{view:"files"},{dir:e[0].path}),null},order:-1e3,default:x.HIDDEN},Y=V("files_external","allowUserMounting",!1),z=C();z.register(new E({id:"extstoragemounts",name:s("files_external","External storage"),caption:s("files_external","List of external storage."),emptyCaption:Y?s("files_external","There is no external storage configured. You can configure them in your Personal settings."):s("files_external","There is no external storage configured and you don't have the permission to configure them."),emptyTitle:s("files_external","No external storage"),icon:P,order:30,columns:[new p({id:"storage-type",title:s("files_external","Storage type"),render(e){const t=e.attributes?.backend||s("files_external","Unknown"),n=document.createElement("span");return n.textContent=t,n}}),new p({id:"scope",title:s("files_external","Scope"),render(e){const t=document.createElement("span");let n=s("files_external","Personal");return e.attributes?.scope==="system"&&(n=s("files_external","System")),t.textContent=n,t}})],getContents:Z})),u(U),u(q),u(W); //# sourceMappingURL=files_external-init.mjs.map diff --git a/dist/files_external-init.mjs.map b/dist/files_external-init.mjs.map index a00a1842ec6eb..90eebb41764ae 100644 --- a/dist/files_external-init.mjs.map +++ b/dist/files_external-init.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["FolderNetworkSvg","LoginSvg","isMissingAuthConfig","config","StorageStatus","isNodeExternalStorage","node","FileType","attributes","addPasswordConfirmationInterceptors","axios","setCredentials","login","password","generateUrl","PwdConfirmationMode","showError","t","showSuccess","emit","ACTION_CREDENTIALS_EXTERNAL_STORAGE","action","nodes","spawnDialog","defineAsyncComponent","error","DefaultType","AlertSvg","rootPath","getCurrentUser","entryToFolder","ocsEntry","path","Folder","generateRemoteUrl","Permission","getContents","contents","generateOcsUrl","getStatus","id","global","type","span","data","showWarning","isWarning","overlay","view","showConfirmation","scope","allowUserMounting","loadState","Navigation","getNavigation","View","Column","backend","registerFileAction","enterCredentialsAction","inlineStorageCheckAction","openInFilesAction"],"ignoreList":[0,1,5],"sources":["../node_modules/@mdi/svg/svg/folder-network-outline.svg?raw","../node_modules/@mdi/svg/svg/login.svg?raw","../build/frontend/apps/files_external/src/utils/credentialsUtils.ts","../build/frontend/apps/files_external/src/utils/externalStorageUtils.ts","../build/frontend/apps/files_external/src/actions/enterCredentialsAction.ts","../node_modules/@mdi/svg/svg/alert-circle.svg?raw","../build/frontend/apps/files_external/src/services/externalStorage.ts","../build/frontend/apps/files_external/src/actions/inlineStorageCheckAction.ts","../build/frontend/apps/files_external/src/actions/openInFilesAction.ts","../build/frontend/apps/files_external/src/init-files.ts"],"sourcesContent":["export default \"\"","export default \"\"","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IStorage } from '../types.ts'\n\nimport { StorageStatus } from '../types.ts'\n\n/**\n * Check if the given storage configuration is missing authentication configuration\n *\n * @param config - The storage configuration to check\n */\nexport function isMissingAuthConfig(config: IStorage) {\n\t// If we don't know the status, assume it is ok\n\tif (config.status === undefined || config.status === StorageStatus.Success) {\n\t\treturn false\n\t}\n\n\treturn config.userProvided || config.authMechanism === 'password::global::user'\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { MountEntry } from '../services/externalStorage.ts'\n\nimport { FileType } from '@nextcloud/files'\n\n/**\n * Check if the given node represents an external storage mount\n *\n * @param node - The node to check\n */\nexport function isNodeExternalStorage(node: INode) {\n\t// Not a folder, not a storage\n\tif (node.type === FileType.File) {\n\t\treturn false\n\t}\n\n\t// No backend or scope, not a storage\n\tconst attributes = node.attributes as MountEntry\n\tif (!attributes.scope || !attributes.backend) {\n\t\treturn false\n\t}\n\n\t// Specific markers that we're sure are ext storage only\n\treturn attributes.scope === 'personal' || attributes.scope === 'system'\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { AxiosResponse } from '@nextcloud/axios'\nimport type { IFileAction, INode } from '@nextcloud/files'\nimport type { IStorage } from '../types.ts'\n\nimport LoginSvg from '@mdi/svg/svg/login.svg?raw'\nimport axios from '@nextcloud/axios'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { DefaultType } from '@nextcloud/files'\nimport { t } from '@nextcloud/l10n'\nimport { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation'\nimport { generateUrl } from '@nextcloud/router'\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport { defineAsyncComponent } from 'vue'\nimport { StorageStatus } from '../types.ts'\nimport { isMissingAuthConfig } from '../utils/credentialsUtils.ts'\nimport { isNodeExternalStorage } from '../utils/externalStorageUtils.ts'\n\n// Add password confirmation interceptors as\n// the backend requires the user to confirm their password\naddPasswordConfirmationInterceptors(axios)\n\n/**\n * Set credentials for external storage\n *\n * @param node The node for which to set the credentials\n * @param login The username\n * @param password The password\n */\nasync function setCredentials(node: INode, login: string, password: string): Promise {\n\tconst configResponse = await axios.request({\n\t\tmethod: 'PUT',\n\t\turl: generateUrl('apps/files_external/userglobalstorages/{id}', { id: node.id }),\n\t\tconfirmPassword: PwdConfirmationMode.Strict,\n\t\tdata: {\n\t\t\tbackendOptions: { user: login, password },\n\t\t},\n\t}) as AxiosResponse\n\n\tconst config = configResponse.data\n\tif (config.status !== StorageStatus.Success) {\n\t\tshowError(t('files_external', 'Unable to update this external storage config. {statusMessage}', {\n\t\t\tstatusMessage: config?.statusMessage || '',\n\t\t}))\n\t\treturn null\n\t}\n\n\t// Success update config attribute\n\tshowSuccess(t('files_external', 'New configuration successfully saved'))\n\tnode.attributes.config = config\n\temit('files:node:updated', node)\n\n\treturn true\n}\n\nexport const ACTION_CREDENTIALS_EXTERNAL_STORAGE = 'credentials-external-storage'\n\nexport const action: IFileAction = {\n\tid: ACTION_CREDENTIALS_EXTERNAL_STORAGE,\n\tdisplayName: () => t('files', 'Enter missing credentials'),\n\ticonSvgInline: () => LoginSvg,\n\n\tenabled: ({ nodes }) => {\n\t\t// Only works on single node\n\t\tif (nodes.length !== 1 || !nodes[0]) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst node = nodes[0]\n\t\tif (!isNodeExternalStorage(node)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst config = (node.attributes?.config || {}) as IStorage\n\t\tif (isMissingAuthConfig(config)) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t},\n\n\tasync exec({ nodes }) {\n\t\tconst { login, password } = await spawnDialog(defineAsyncComponent(() => import('../views/CredentialsDialog.vue'))) ?? {}\n\t\tif (login && password) {\n\t\t\ttry {\n\t\t\t\tawait setCredentials(nodes[0]!, login, password)\n\t\t\t\tshowSuccess(t('files_external', 'Credentials successfully set'))\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('files_external', 'Error while setting credentials: {error}', {\n\t\t\t\t\terror: (error as Error).message,\n\t\t\t\t}))\n\t\t\t}\n\t\t}\n\n\t\treturn null\n\t},\n\n\t// Before openFolderAction\n\torder: -1000,\n\tdefault: DefaultType.DEFAULT,\n\tinline: () => true,\n}\n","export default \"\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { AxiosResponse } from '@nextcloud/axios'\nimport type { ContentsWithRoot } from '@nextcloud/files'\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\nimport type { IStorage } from '../types.ts'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { Folder, Permission } from '@nextcloud/files'\nimport { generateOcsUrl, generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { StorageStatus } from '../types.ts'\n\nexport const rootPath = `/files/${getCurrentUser()?.uid}`\n\n/**\n * https://github.com/nextcloud/server/blob/ac2bc2384efe3c15ff987b87a7432bc60d545c67/apps/files_external/lib/Controller/ApiController.php#L71-L97\n */\nexport type MountEntry = {\n\tname: string\n\tpath: string\n\ttype: 'dir'\n\tbackend: 'SFTP'\n\tscope: 'system' | 'personal'\n\tpermissions: number\n\tid: number\n\tclass: string\n\tconfig: IStorage\n}\n\n/**\n * Convert an OCS api result (mount entry) to a Folder instance\n *\n * @param ocsEntry - The OCS mount entry\n */\nfunction entryToFolder(ocsEntry: MountEntry): Folder {\n\tconst path = (ocsEntry.path + '/' + ocsEntry.name).replace(/^\\//gm, '')\n\treturn new Folder({\n\t\tid: ocsEntry.id,\n\t\tsource: generateRemoteUrl('dav' + rootPath + '/' + path),\n\t\troot: rootPath,\n\t\towner: getCurrentUser()?.uid || null,\n\t\tpermissions: ocsEntry.config.status !== StorageStatus.Success\n\t\t\t? Permission.NONE\n\t\t\t: ocsEntry?.permissions || Permission.READ,\n\t\tattributes: {\n\t\t\tdisplayName: path,\n\t\t\t...ocsEntry,\n\t\t},\n\t})\n}\n\n/**\n * Fetch the contents of external storage mounts\n */\nexport async function getContents(): Promise {\n\tconst response = await axios.get(generateOcsUrl('apps/files_external/api/v1/mounts')) as AxiosResponse>\n\tconst contents = response.data.ocs.data.map(entryToFolder)\n\n\treturn {\n\t\tfolder: new Folder({\n\t\t\tid: 0,\n\t\t\tsource: generateRemoteUrl('dav' + rootPath),\n\t\t\troot: rootPath,\n\t\t\towner: getCurrentUser()?.uid || null,\n\t\t\tpermissions: Permission.READ,\n\t\t}),\n\t\tcontents,\n\t}\n}\n\n/**\n * Get the status of an external storage mount\n *\n * @param id - The storage ID\n * @param global - Whether the storage is global or user specific\n */\nexport function getStatus(id: number, global = true) {\n\tconst type = global ? 'userglobalstorages' : 'userstorages'\n\treturn axios.get(generateUrl(`apps/files_external/${type}/${id}?testOnly=false`)) as Promise>\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { AxiosError } from '@nextcloud/axios'\nimport type { IFileAction } from '@nextcloud/files'\nimport type { IStorage } from '../types.ts'\n\nimport AlertSvg from '@mdi/svg/svg/alert-circle.svg?raw'\nimport { showWarning } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { t } from '@nextcloud/l10n'\nimport { getStatus } from '../services/externalStorage.ts'\nimport { StorageStatus } from '../types.ts'\nimport { isMissingAuthConfig } from '../utils/credentialsUtils.ts'\nimport { isNodeExternalStorage } from '../utils/externalStorageUtils.ts'\n\nimport '../css/fileEntryStatus.scss'\n\nexport const action: IFileAction = {\n\tid: 'check-external-storage',\n\tdisplayName: () => '',\n\ticonSvgInline: () => '',\n\n\tenabled: ({ nodes }) => {\n\t\treturn nodes.every((node) => isNodeExternalStorage(node) === true)\n\t},\n\texec: async () => null,\n\n\t/**\n\t * Use this function to check the storage availability\n\t * We then update the node attributes directly.\n\t *\n\t * @param context - The action context\n\t * @param context.nodes - The node to render inline\n\t */\n\tasync renderInline({ nodes }) {\n\t\tif (nodes.length !== 1 || !nodes[0]) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst node = nodes[0]\n\t\tconst span = document.createElement('span')\n\t\tspan.className = 'files-list__row-status'\n\t\tspan.innerHTML = t('files_external', 'Checking storage …')\n\n\t\tlet config: IStorage | undefined\n\t\ttry {\n\t\t\tconst { data } = await getStatus(node.id, node.attributes.scope === 'system')\n\t\t\tconfig = data\n\t\t\tnode.attributes.config = config\n\t\t\temit('files:node:updated', node)\n\n\t\t\tif (config.status !== StorageStatus.Success) {\n\t\t\t\tthrow new Error(config?.statusMessage || t('files_external', 'There was an error with this external storage.'))\n\t\t\t}\n\n\t\t\tspan.remove()\n\t\t} catch (error) {\n\t\t\t// If axios failed or if something else prevented\n\t\t\t// us from getting the config\n\t\t\tif ((error as AxiosError).response && !config) {\n\t\t\t\tshowWarning(t('files_external', 'We were unable to check the external storage {basename}', {\n\t\t\t\t\tbasename: node.basename,\n\t\t\t\t}))\n\t\t\t}\n\n\t\t\t// Reset inline status\n\t\t\tspan.innerHTML = ''\n\n\t\t\t// Checking if we really have an error\n\t\t\tconst isWarning = !config ? false : isMissingAuthConfig(config)\n\t\t\tconst overlay = document.createElement('span')\n\t\t\toverlay.classList.add(`files-list__row-status--${isWarning ? 'warning' : 'error'}`)\n\n\t\t\t// Only show an icon for errors, warning like missing credentials\n\t\t\t// have a dedicated inline action button\n\t\t\tif (!isWarning) {\n\t\t\t\tspan.innerHTML = AlertSvg\n\t\t\t\tspan.title = (error as Error).message\n\t\t\t}\n\n\t\t\tspan.prepend(overlay)\n\t\t}\n\n\t\treturn span\n\t},\n\n\torder: 10,\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\nimport type { IStorage } from '../types.ts'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showConfirmation } from '@nextcloud/dialogs'\nimport { DefaultType } from '@nextcloud/files'\nimport { t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport { StorageStatus } from '../types.ts'\n\nexport const action: IFileAction = {\n\tid: 'open-in-files-external-storage',\n\tdisplayName: ({ nodes }) => {\n\t\tconst config = nodes?.[0]?.attributes?.config as IStorage || { status: StorageStatus.Indeterminate }\n\t\tif (config.status !== StorageStatus.Success) {\n\t\t\treturn t('files_external', 'Examine this faulty external storage configuration')\n\t\t}\n\t\treturn t('files', 'Open in Files')\n\t},\n\ticonSvgInline: () => '',\n\n\tenabled: ({ view }) => view.id === 'extstoragemounts',\n\n\tasync exec({ nodes }) {\n\t\tconst config = nodes[0]?.attributes?.config as IStorage\n\t\tif (config?.status !== StorageStatus.Success) {\n\t\t\tconst redirect = await showConfirmation({\n\t\t\t\tname: t('files_external', 'External mount error'),\n\t\t\t\ttext: t('files_external', 'There was an error with this external storage. Do you want to review this mount point config in the settings page?'),\n\t\t\t\tlabelConfirm: t('files_external', 'Open settings'),\n\t\t\t\tlabelReject: t('files_external', 'Ignore'),\n\t\t\t})\n\t\t\tif (redirect === true) {\n\t\t\t\tconst scope = getCurrentUser()?.isAdmin ? 'admin' : 'user'\n\t\t\t\twindow.location.href = generateUrl(`/settings/${scope}/externalstorages`)\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\t// Do not use fileid as we don't have that information\n\t\t// from the external storage api\n\t\twindow.OCP.Files.Router.goToRoute(\n\t\t\tnull, // use default route\n\t\t\t{ view: 'files' },\n\t\t\t{ dir: nodes[0].path },\n\t\t)\n\t\treturn null\n\t},\n\n\t// Before openFolderAction\n\torder: -1000,\n\tdefault: DefaultType.HIDDEN,\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport FolderNetworkSvg from '@mdi/svg/svg/folder-network-outline.svg?raw'\nimport { Column, getNavigation, registerFileAction, View } from '@nextcloud/files'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport { action as enterCredentialsAction } from './actions/enterCredentialsAction.ts'\nimport { action as inlineStorageCheckAction } from './actions/inlineStorageCheckAction.ts'\nimport { action as openInFilesAction } from './actions/openInFilesAction.ts'\nimport { getContents } from './services/externalStorage.ts'\n\nconst allowUserMounting = loadState('files_external', 'allowUserMounting', false)\n\n// Register view\nconst Navigation = getNavigation()\nNavigation.register(new View({\n\tid: 'extstoragemounts',\n\tname: t('files_external', 'External storage'),\n\tcaption: t('files_external', 'List of external storage.'),\n\n\temptyCaption: allowUserMounting\n\t\t? t('files_external', 'There is no external storage configured. You can configure them in your Personal settings.')\n\t\t: t('files_external', 'There is no external storage configured and you don\\'t have the permission to configure them.'),\n\temptyTitle: t('files_external', 'No external storage'),\n\n\ticon: FolderNetworkSvg,\n\torder: 30,\n\n\tcolumns: [\n\t\tnew Column({\n\t\t\tid: 'storage-type',\n\t\t\ttitle: t('files_external', 'Storage type'),\n\t\t\trender(node) {\n\t\t\t\tconst backend = node.attributes?.backend || t('files_external', 'Unknown')\n\t\t\t\tconst span = document.createElement('span')\n\t\t\t\tspan.textContent = backend\n\t\t\t\treturn span\n\t\t\t},\n\t\t}),\n\t\tnew Column({\n\t\t\tid: 'scope',\n\t\t\ttitle: t('files_external', 'Scope'),\n\t\t\trender(node) {\n\t\t\t\tconst span = document.createElement('span')\n\t\t\t\tlet scope = t('files_external', 'Personal')\n\t\t\t\tif (node.attributes?.scope === 'system') {\n\t\t\t\t\tscope = t('files_external', 'System')\n\t\t\t\t}\n\t\t\t\tspan.textContent = scope\n\t\t\t\treturn span\n\t\t\t},\n\t\t}),\n\t],\n\n\tgetContents,\n}))\n\n// Register actions\nregisterFileAction(enterCredentialsAction)\nregisterFileAction(inlineStorageCheckAction)\nregisterFileAction(openInFilesAction)\n"],"file":"files_external-init.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["FolderNetworkSvg","LoginSvg","isMissingAuthConfig","config","StorageStatus","isNodeExternalStorage","node","FileType","attributes","addPasswordConfirmationInterceptors","axios","setCredentials","login","password","generateUrl","PwdConfirmationMode","showError","t","showSuccess","emit","ACTION_CREDENTIALS_EXTERNAL_STORAGE","action","nodes","spawnDialog","defineAsyncComponent","error","DefaultType","AlertSvg","rootPath","getCurrentUser","entryToFolder","ocsEntry","path","Folder","generateRemoteUrl","Permission","getContents","contents","generateOcsUrl","getStatus","id","global","type","span","data","showWarning","isWarning","overlay","view","showConfirmation","scope","allowUserMounting","loadState","Navigation","getNavigation","View","Column","backend","registerFileAction","enterCredentialsAction","inlineStorageCheckAction","openInFilesAction"],"ignoreList":[0,1,5],"sources":["../node_modules/@mdi/svg/svg/folder-network-outline.svg?raw","../node_modules/@mdi/svg/svg/login.svg?raw","../build/frontend/apps/files_external/src/utils/credentialsUtils.ts","../build/frontend/apps/files_external/src/utils/externalStorageUtils.ts","../build/frontend/apps/files_external/src/actions/enterCredentialsAction.ts","../node_modules/@mdi/svg/svg/alert-circle.svg?raw","../build/frontend/apps/files_external/src/services/externalStorage.ts","../build/frontend/apps/files_external/src/actions/inlineStorageCheckAction.ts","../build/frontend/apps/files_external/src/actions/openInFilesAction.ts","../build/frontend/apps/files_external/src/init-files.ts"],"sourcesContent":["export default \"\"","export default \"\"","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IStorage } from '../types.ts'\n\nimport { StorageStatus } from '../types.ts'\n\n/**\n * Check if the given storage configuration is missing authentication configuration\n *\n * @param config - The storage configuration to check\n */\nexport function isMissingAuthConfig(config: IStorage) {\n\t// If we don't know the status, assume it is ok\n\tif (config.status === undefined || config.status === StorageStatus.Success) {\n\t\treturn false\n\t}\n\n\treturn config.userProvided || config.authMechanism === 'password::global::user'\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { MountEntry } from '../services/externalStorage.ts'\n\nimport { FileType } from '@nextcloud/files'\n\n/**\n * Check if the given node represents an external storage mount\n *\n * @param node - The node to check\n */\nexport function isNodeExternalStorage(node: INode) {\n\t// Not a folder, not a storage\n\tif (node.type === FileType.File) {\n\t\treturn false\n\t}\n\n\t// No backend or scope, not a storage\n\tconst attributes = node.attributes as MountEntry\n\tif (!attributes.scope || !attributes.backend) {\n\t\treturn false\n\t}\n\n\t// Specific markers that we're sure are ext storage only\n\treturn attributes.scope === 'personal' || attributes.scope === 'system'\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { AxiosResponse } from '@nextcloud/axios'\nimport type { IFileAction, INode } from '@nextcloud/files'\nimport type { IStorage } from '../types.ts'\n\nimport LoginSvg from '@mdi/svg/svg/login.svg?raw'\nimport axios from '@nextcloud/axios'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { DefaultType } from '@nextcloud/files'\nimport { t } from '@nextcloud/l10n'\nimport { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation'\nimport { generateUrl } from '@nextcloud/router'\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport { defineAsyncComponent } from 'vue'\nimport { StorageStatus } from '../types.ts'\nimport { isMissingAuthConfig } from '../utils/credentialsUtils.ts'\nimport { isNodeExternalStorage } from '../utils/externalStorageUtils.ts'\n\n// Add password confirmation interceptors as\n// the backend requires the user to confirm their password\naddPasswordConfirmationInterceptors(axios)\n\n/**\n * Set credentials for external storage\n *\n * @param node The node for which to set the credentials\n * @param login The username\n * @param password The password\n */\nasync function setCredentials(node: INode, login: string, password: string): Promise {\n\tconst configResponse = await axios.request({\n\t\tmethod: 'PUT',\n\t\turl: generateUrl('apps/files_external/userglobalstorages/{id}', { id: node.id }),\n\t\tconfirmPassword: PwdConfirmationMode.Strict,\n\t\tdata: {\n\t\t\tbackendOptions: { user: login, password },\n\t\t},\n\t}) as AxiosResponse\n\n\tconst config = configResponse.data\n\tif (config.status !== StorageStatus.Success) {\n\t\tshowError(t('files_external', 'Unable to update this external storage config. {statusMessage}', {\n\t\t\tstatusMessage: config?.statusMessage || '',\n\t\t}))\n\t\treturn null\n\t}\n\n\t// Success update config attribute\n\tshowSuccess(t('files_external', 'New configuration successfully saved'))\n\tnode.attributes.config = config\n\temit('files:node:updated', node)\n\n\treturn true\n}\n\nexport const ACTION_CREDENTIALS_EXTERNAL_STORAGE = 'credentials-external-storage'\n\nexport const action: IFileAction = {\n\tid: ACTION_CREDENTIALS_EXTERNAL_STORAGE,\n\tdisplayName: () => t('files', 'Enter missing credentials'),\n\ticonSvgInline: () => LoginSvg,\n\n\tenabled: ({ nodes }) => {\n\t\t// Only works on single node\n\t\tif (nodes.length !== 1 || !nodes[0]) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst node = nodes[0]\n\t\tif (!isNodeExternalStorage(node)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst config = (node.attributes?.config || {}) as IStorage\n\t\tif (isMissingAuthConfig(config)) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t},\n\n\tasync exec({ nodes }) {\n\t\tconst { login, password } = await spawnDialog(defineAsyncComponent(() => import('../views/CredentialsDialog.vue'))) ?? {}\n\t\tif (login && password) {\n\t\t\ttry {\n\t\t\t\tawait setCredentials(nodes[0]!, login, password)\n\t\t\t\tshowSuccess(t('files_external', 'Credentials successfully set'))\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('files_external', 'Error while setting credentials: {error}', {\n\t\t\t\t\terror: (error as Error).message,\n\t\t\t\t}))\n\t\t\t}\n\t\t}\n\n\t\treturn null\n\t},\n\n\t// Before openFolderAction\n\torder: -1000,\n\tdefault: DefaultType.DEFAULT,\n\tinline: () => true,\n}\n","export default \"\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { AxiosResponse } from '@nextcloud/axios'\nimport type { ContentsWithRoot } from '@nextcloud/files'\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\nimport type { IStorage } from '../types.ts'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { Folder, Permission } from '@nextcloud/files'\nimport { generateOcsUrl, generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { StorageStatus } from '../types.ts'\n\nexport const rootPath = `/files/${getCurrentUser()?.uid}`\n\n/**\n * https://github.com/nextcloud/server/blob/ac2bc2384efe3c15ff987b87a7432bc60d545c67/apps/files_external/lib/Controller/ApiController.php#L71-L97\n */\nexport type MountEntry = {\n\tname: string\n\tpath: string\n\ttype: 'dir'\n\tbackend: 'SFTP'\n\tscope: 'system' | 'personal'\n\tpermissions: number\n\tid: number\n\tclass: string\n\tconfig: IStorage\n}\n\n/**\n * Convert an OCS api result (mount entry) to a Folder instance\n *\n * @param ocsEntry - The OCS mount entry\n */\nfunction entryToFolder(ocsEntry: MountEntry): Folder {\n\tconst path = (ocsEntry.path + '/' + ocsEntry.name).replace(/^\\//gm, '')\n\treturn new Folder({\n\t\tid: ocsEntry.id,\n\t\tsource: generateRemoteUrl('dav' + rootPath + '/' + path),\n\t\troot: rootPath,\n\t\towner: getCurrentUser()?.uid || null,\n\t\tpermissions: ocsEntry.config.status !== StorageStatus.Success\n\t\t\t? Permission.NONE\n\t\t\t: ocsEntry?.permissions || Permission.READ,\n\t\tattributes: {\n\t\t\tdisplayName: path,\n\t\t\t...ocsEntry,\n\t\t},\n\t})\n}\n\n/**\n * Fetch the contents of external storage mounts\n */\nexport async function getContents(): Promise {\n\tconst response = await axios.get(generateOcsUrl('apps/files_external/api/v1/mounts')) as AxiosResponse>\n\tconst contents = response.data.ocs.data.map(entryToFolder)\n\n\treturn {\n\t\tfolder: new Folder({\n\t\t\tid: 0,\n\t\t\tsource: generateRemoteUrl('dav' + rootPath),\n\t\t\troot: rootPath,\n\t\t\towner: getCurrentUser()?.uid || null,\n\t\t\tpermissions: Permission.READ,\n\t\t}),\n\t\tcontents,\n\t}\n}\n\n/**\n * Get the status of an external storage mount\n *\n * @param id - The storage ID\n * @param global - Whether the storage is global or user specific\n */\nexport function getStatus(id: number, global = true) {\n\tconst type = global ? 'userglobalstorages' : 'userstorages'\n\treturn axios.get(generateUrl(`apps/files_external/${type}/${id}?testOnly=false`)) as Promise>\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { AxiosError } from '@nextcloud/axios'\nimport type { IFileAction } from '@nextcloud/files'\nimport type { IStorage } from '../types.ts'\n\nimport AlertSvg from '@mdi/svg/svg/alert-circle.svg?raw'\nimport { showWarning } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { t } from '@nextcloud/l10n'\nimport { getStatus } from '../services/externalStorage.ts'\nimport { StorageStatus } from '../types.ts'\nimport { isMissingAuthConfig } from '../utils/credentialsUtils.ts'\nimport { isNodeExternalStorage } from '../utils/externalStorageUtils.ts'\n\nimport '../css/fileEntryStatus.scss'\n\nexport const action: IFileAction = {\n\tid: 'check-external-storage',\n\tdisplayName: () => '',\n\ticonSvgInline: () => '',\n\n\tenabled: ({ nodes }) => {\n\t\treturn nodes.every((node) => isNodeExternalStorage(node) === true)\n\t},\n\texec: async () => null,\n\n\t/**\n\t * Use this function to check the storage availability\n\t * We then update the node attributes directly.\n\t *\n\t * @param context - The action context\n\t * @param context.nodes - The node to render inline\n\t */\n\tasync renderInline({ nodes }) {\n\t\tif (nodes.length !== 1 || !nodes[0]) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst node = nodes[0]\n\t\tconst span = document.createElement('span')\n\t\tspan.className = 'files-list__row-status'\n\t\tspan.innerHTML = t('files_external', 'Checking storage …')\n\n\t\tlet config: IStorage | undefined\n\t\ttry {\n\t\t\tconst { data } = await getStatus(node.id, node.attributes.scope === 'system')\n\t\t\tconfig = data\n\t\t\tnode.attributes.config = config\n\t\t\temit('files:node:updated', node)\n\n\t\t\tif (config.status !== StorageStatus.Success) {\n\t\t\t\tthrow new Error(config?.statusMessage || t('files_external', 'There was an error with this external storage.'))\n\t\t\t}\n\n\t\t\tspan.remove()\n\t\t} catch (error) {\n\t\t\t// If axios failed or if something else prevented\n\t\t\t// us from getting the config\n\t\t\tif ((error as AxiosError).response && !config) {\n\t\t\t\tshowWarning(t('files_external', 'We were unable to check the external storage {basename}', {\n\t\t\t\t\tbasename: node.basename,\n\t\t\t\t}))\n\t\t\t}\n\n\t\t\t// Reset inline status\n\t\t\tspan.innerHTML = ''\n\n\t\t\t// Checking if we really have an error\n\t\t\tconst isWarning = !config ? false : isMissingAuthConfig(config)\n\t\t\tconst overlay = document.createElement('span')\n\t\t\toverlay.classList.add(`files-list__row-status--${isWarning ? 'warning' : 'error'}`)\n\n\t\t\t// Only show an icon for errors, warning like missing credentials\n\t\t\t// have a dedicated inline action button\n\t\t\tif (!isWarning) {\n\t\t\t\tspan.innerHTML = AlertSvg\n\t\t\t\tspan.title = (error as Error).message\n\t\t\t}\n\n\t\t\tspan.prepend(overlay)\n\t\t}\n\n\t\treturn span\n\t},\n\n\torder: 10,\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\nimport type { IStorage } from '../types.ts'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showConfirmation } from '@nextcloud/dialogs'\nimport { DefaultType } from '@nextcloud/files'\nimport { t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport { StorageStatus } from '../types.ts'\n\nexport const action: IFileAction = {\n\tid: 'open-in-files-external-storage',\n\tdisplayName: ({ nodes }) => {\n\t\tconst config = nodes?.[0]?.attributes?.config as IStorage || { status: StorageStatus.Indeterminate }\n\t\tif (config.status !== StorageStatus.Success) {\n\t\t\treturn t('files_external', 'Examine this faulty external storage configuration')\n\t\t}\n\t\treturn t('files', 'Open in Files')\n\t},\n\ticonSvgInline: () => '',\n\n\tenabled: ({ view }) => view.id === 'extstoragemounts',\n\n\tasync exec({ nodes }) {\n\t\tconst config = nodes[0]?.attributes?.config as IStorage\n\t\tif (config?.status !== StorageStatus.Success) {\n\t\t\tconst redirect = await showConfirmation({\n\t\t\t\tname: t('files_external', 'External mount error'),\n\t\t\t\ttext: t('files_external', 'There was an error with this external storage. Do you want to review this mount point config in the settings page?'),\n\t\t\t\tlabelConfirm: t('files_external', 'Open settings'),\n\t\t\t\tlabelReject: t('files_external', 'Ignore'),\n\t\t\t})\n\t\t\tif (redirect === true) {\n\t\t\t\tconst scope = getCurrentUser()?.isAdmin ? 'admin' : 'user'\n\t\t\t\twindow.location.href = generateUrl(`/settings/${scope}/externalstorages`)\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\t// Do not use fileid as we don't have that information\n\t\t// from the external storage api\n\t\twindow.OCP.Files.Router.goToRoute(\n\t\t\tnull, // use default route\n\t\t\t{ view: 'files' },\n\t\t\t{ dir: nodes[0].path },\n\t\t)\n\t\treturn null\n\t},\n\n\t// Before openFolderAction\n\torder: -1000,\n\tdefault: DefaultType.HIDDEN,\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport FolderNetworkSvg from '@mdi/svg/svg/folder-network-outline.svg?raw'\nimport { Column, getNavigation, registerFileAction, View } from '@nextcloud/files'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport { action as enterCredentialsAction } from './actions/enterCredentialsAction.ts'\nimport { action as inlineStorageCheckAction } from './actions/inlineStorageCheckAction.ts'\nimport { action as openInFilesAction } from './actions/openInFilesAction.ts'\nimport { getContents } from './services/externalStorage.ts'\n\nconst allowUserMounting = loadState('files_external', 'allowUserMounting', false)\n\n// Register view\nconst Navigation = getNavigation()\nNavigation.register(new View({\n\tid: 'extstoragemounts',\n\tname: t('files_external', 'External storage'),\n\tcaption: t('files_external', 'List of external storage.'),\n\n\temptyCaption: allowUserMounting\n\t\t? t('files_external', 'There is no external storage configured. You can configure them in your Personal settings.')\n\t\t: t('files_external', 'There is no external storage configured and you don\\'t have the permission to configure them.'),\n\temptyTitle: t('files_external', 'No external storage'),\n\n\ticon: FolderNetworkSvg,\n\torder: 30,\n\n\tcolumns: [\n\t\tnew Column({\n\t\t\tid: 'storage-type',\n\t\t\ttitle: t('files_external', 'Storage type'),\n\t\t\trender(node) {\n\t\t\t\tconst backend = node.attributes?.backend || t('files_external', 'Unknown')\n\t\t\t\tconst span = document.createElement('span')\n\t\t\t\tspan.textContent = backend\n\t\t\t\treturn span\n\t\t\t},\n\t\t}),\n\t\tnew Column({\n\t\t\tid: 'scope',\n\t\t\ttitle: t('files_external', 'Scope'),\n\t\t\trender(node) {\n\t\t\t\tconst span = document.createElement('span')\n\t\t\t\tlet scope = t('files_external', 'Personal')\n\t\t\t\tif (node.attributes?.scope === 'system') {\n\t\t\t\t\tscope = t('files_external', 'System')\n\t\t\t\t}\n\t\t\t\tspan.textContent = scope\n\t\t\t\treturn span\n\t\t\t},\n\t\t}),\n\t],\n\n\tgetContents,\n}))\n\n// Register actions\nregisterFileAction(enterCredentialsAction)\nregisterFileAction(inlineStorageCheckAction)\nregisterFileAction(openInFilesAction)\n"],"file":"files_external-init.mjs"} \ No newline at end of file diff --git a/dist/files_external-settings.mjs b/dist/files_external-settings.mjs index daf0cae7ad45a..ad693b13e1d60 100644 --- a/dist/files_external-settings.mjs +++ b/dist/files_external-settings.mjs @@ -1,2 +1,2 @@ -import{d as ke,c as Ve}from"./pinia-BsumPXOW.chunk.mjs";import{E as K,a8 as ee,P as Se,v as C,b as U,n as j,o as u,c as k,u as e,l as M,z,f as x,y as h,g as y,t as v,F as S,C as Ce,B as O,J as W,K as J,h as T,s as Z,a0 as Q,R as ie,k as b,w,j as V,L as Me,e as Ae}from"./Web-DYqXJUev.chunk.mjs";import{s as $e,g as Ue,t as Te,u as Oe,l as Ne,v as qe,N as re,k as Pe}from"./mdi-B6W_Xvj-.chunk.mjs";import{_ as N,l as A}from"./public-C1mLBHT3.chunk.mjs";import{t as n,a as Ee}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as P}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as F}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as ce}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{N as Re,s as Fe}from"./index-CmDAUQql.chunk.mjs";import{N as ae}from"./index-BDlLVKOD.chunk.mjs";import{_ as _e}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{c as $}from"./index-CkGt55pS.chunk.mjs";import{b as R}from"./index-Cp0kcsps.chunk.mjs";import{N as De}from"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import{m as je}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as me}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as E}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as Be}from"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{N as Le}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import{N as He}from"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{C as pe}from"./AuthMechanismRsa-EWm029j5.chunk.mjs";import{C as G,a as ge,M as D,S as B,b as Ge,c as Ie}from"./types-DurdPjCi.chunk.mjs";import{a as fe,P as I}from"./index-BgrtITOq.chunk.mjs";import{a as te,d as le}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{l as ve}from"./logger-BFB83ufD.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";const Qe='',Y=Se(new Map);function be(l){const a=C(()=>ee(l).map(t=>({id:`user:${t}`,user:t,displayName:Y.get(t)||t})));return K(async()=>{const t=ee(l).filter(r=>!Y.has(r));if(t.length>0){const{data:r}=await $.post(R("/displaynames"),{users:t});for(const[d,c]of Object.entries(r.users))Y.set(d,c)}}),a}function ze(l){return C(()=>ee(l).map(ye))}function ye(l){return{id:l,isNoUser:!0,displayName:l,iconSvg:Qe}}const Ze=U({__name:"ApplicableEntities",props:{groups:{default:()=>[]},groupsModifiers:{},users:{default:()=>[]},usersModifiers:{}},emits:["update:groups","update:users"],setup(l){const a=j(l,"groups"),t=j(l,"users"),r=M([]),d=be(t),c=ze(a),o=C({get(){return[...c.value,...d.value]},set(p){t.value=p.filter(_=>_.user).map(_=>_.user),a.value=p.filter(_=>_.isNoUser).map(_=>_.id)}}),i=je(s,500);async function s(p){const{data:_}=await $.get(R("apps/files_external/ajax/applicable"),{params:{pattern:p,limit:20}}),m=[...r.value.map(g=>[g.id,g]),...Object.entries(_.groups).map(([g,f])=>[g,{...ye(g),displayName:f}]),...Object.entries(_.users).map(([g,f])=>[`user:${g}`,{id:`user:${g}`,user:g,displayName:f}])];r.value=[...new Map(m).values()]}return(p,_)=>(u(),k(e(De),{modelValue:o.value,"onUpdate:modelValue":_[0]||(_[0]=m=>o.value=m),keepOpen:"",multiple:"",options:r.value,inputLabel:e(n)("files_external","Restrict to"),onSearch:e(i)},null,8,["modelValue","options","inputLabel","onSearch"]))}}),Ke=U({__name:"AuthMechanismConfiguration",props:Z({authMechanism:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(l){const a=j(l,"modelValue"),t=l,r=C(()=>{if(!t.authMechanism.configuration)return;const s=Object.entries(t.authMechanism.configuration).filter(([,p])=>!(p.flags&G.UserProvided));return Object.fromEntries(s)}),d=C(()=>window.OCA.FilesExternal.AuthMechanism.getHandler(t.authMechanism)),c=C(()=>{if(!r.value)return!1;for(const s of Object.values(r.value))if(!(s.flags&G.Hidden||s.flags&G.UserProvided))return!0;return!1}),o=M(!1);K(async()=>{d.value&&(o.value=!0,await window.customElements.whenDefined(d.value.tagName),o.value=!1)}),z(r,()=>{for(const s in r.value)s in a.value||(a.value[s]=r.value[s]?.type===ge.Boolean?!1:"")});function i(s){const p=[s.detail].flat()[0];a.value={...a.value,...p}}return(s,p)=>c.value?(u(),x("fieldset",{key:0,class:h(s.$style.authMechanismConfiguration)},[y("legend",null,v(e(n)("files_external","Authentication")),1),d.value?(u(),x(S,{key:0},[o.value?(u(),k(e(me),{key:0})):(u(),k(Ce(d.value.tagName),{key:1,".modelValue":a.value,".authMechanism":l.authMechanism,"onUpdate:modelValue":i},null,40,[".modelValue",".authMechanism"]))],64)):(u(!0),x(S,{key:1},O(r.value,(_,m)=>W((u(),k(pe,{key:_.value,modelValue:a.value[m],"onUpdate:modelValue":g=>a.value[m]=g,"config-key":m,"config-option":_},null,8,["modelValue","onUpdate:modelValue","config-key","config-option"])),[[J,!(_.flags&e(G).Hidden)]])),128))],2)):T("",!0)}}),We="_authMechanismConfiguration_kpcpy_2",Je={authMechanismConfiguration:We},Ye={$style:Je},Xe=N(Ke,[["__cssModules",Ye]]),ea=U({__name:"BackendConfiguration",props:Z({configuration:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(l){const a=j(l,"modelValue"),t=l;return z(()=>t.configuration,()=>{for(const r in t.configuration)r in a.value||(a.value[r]=t.configuration[r]?.defaultValue??(t.configuration[r]?.type===ge.Boolean?!1:""))},{immediate:!0}),(r,d)=>(u(),x("fieldset",{class:h(r.$style.backendConfiguration)},[y("legend",null,v(e(n)("files_external","Storage configuration")),1),(u(!0),x(S,null,O(l.configuration,(c,o)=>W((u(),k(pe,{key:c.value,modelValue:a.value[o],"onUpdate:modelValue":i=>a.value[o]=i,configKey:o,configOption:c},null,8,["modelValue","onUpdate:modelValue","configKey","configOption"])),[[J,!(c.flags&e(G).Hidden)]])),128))],2))}}),aa="_backendConfiguration_1sf6y_2",ta={backendConfiguration:aa},la={$style:ta},sa=N(ea,[["__cssModules",la]]),{isAdmin:na}=A("files_external","settings"),oa=Object.freeze({encrypt:!0,previews:!0,filesystem_check_changes:D.OncePerRequest,enable_sharing:!1,encoding_compatibility:!1,readonly:!1}),se=ke("files_external--storages",()=>{const l=M([]),a=M([]);async function t(m){const g=R("apps/files_external/globalstorages"),{data:f}=await $.post(g,Q(m),{confirmPassword:I.Strict});l.value.push(L(f))}async function r(m){const g=R("apps/files_external/userstorages"),{data:f}=await $.post(g,Q(m),{confirmPassword:I.Strict});a.value.push(L(f))}async function d(m){await $.delete(p(m),{confirmPassword:I.Strict}),m.type==="personal"?a.value=a.value.filter(g=>g.id!==m.id):l.value=l.value.filter(g=>g.id!==m.id)}async function c(m){const{data:g}=await $.put(p(m),Q(m),{confirmPassword:I.Strict});_(L(g))}async function o(m){const{data:g}=await $.get(p(m));_(L(g))}return s(),{globalStorages:l,userStorages:a,createGlobalStorage:t,createUserStorage:r,deleteStorage:d,reloadStorage:o,updateStorage:c};async function i(m){const g=`apps/files_external/${m}`,{data:f}=await $.get(R(g));return Object.values(f).map(L)}async function s(){fe($),na?l.value=await i("globalstorages"):(a.value=await i("userstorages"),l.value=await i("userglobalstorages"))}function p(m){const g=m.type==="personal"?"userstorages":"globalstorages";return R(`apps/files_external/${g}/${m.id}`)}function _(m){if(m.type==="personal"){const g=a.value.findIndex(f=>f.id===m.id);a.value.splice(g,1,m)}else{const g=l.value.findIndex(f=>f.id===m.id);l.value.splice(g,1,m)}}});function L(l){return{...l,mountOptions:he(l.mountOptions)}}function he(l){const a={...l};return a.encrypt=H(a.encrypt,!0),a.previews=H(a.previews,!0),a.enable_sharing=H(a.enable_sharing,!1),a.filesystem_check_changes=typeof a.filesystem_check_changes=="string"?Number.parseInt(a.filesystem_check_changes):a.filesystem_check_changes??D.Never,a.encoding_compatibility=H(a.encoding_compatibility,!1),a.readonly=H(a.readonly,!1),a}function H(l,a=!1){return l===void 0?a:l===!0||l==="true"||l==="1"}const ia=["id","aria-labelledby"],ra=U({__name:"MountOptions",props:{modelValue:{required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(l){const a=j(l,"modelValue");K(()=>{Object.keys(a.value).length===0&&(a.value=he(a.value))});const{hasEncryption:t}=A("files_external","settings"),r=ie(),d=ie(),c=M(!1),o=[{label:n("files_external","Never"),value:D.Never},{label:n("files_external","Once every direct access"),value:D.OncePerRequest},{label:n("files_external","Always"),value:D.Always}],i=C({get(){return o.find(s=>s.value===a.value.filesystem_check_changes)},set(s){a.value.filesystem_check_changes=s?.value??D.OncePerRequest}});return(s,p)=>(u(),x("div",{class:h(s.$style.mountOptions)},[b(e(P),{id:e(r),"aria-controls":e(d),"aria-expanded":c.value,variant:"tertiary-no-background",onClick:p[0]||(p[0]=_=>c.value=!c.value)},{icon:w(()=>[b(e(F),{directional:"",path:c.value?e($e):e(Ue)},null,8,["path"])]),default:w(()=>[V(" "+v(e(n)("files_external","Mount options")),1)]),_:1},8,["id","aria-controls","aria-expanded"]),W(y("fieldset",{id:e(d),class:h(s.$style.mountOptions__fieldset),"aria-labelledby":e(r)},[b(e(ae),{modelValue:i.value,"onUpdate:modelValue":p[1]||(p[1]=_=>i.value=_),inputLabel:e(n)("files_external","Check filesystem changes"),options:o},null,8,["modelValue","inputLabel"]),b(e(E),{modelValue:l.modelValue.readonly,"onUpdate:modelValue":p[2]||(p[2]=_=>l.modelValue.readonly=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Read only")),1)]),_:1},8,["modelValue"]),b(e(E),{modelValue:l.modelValue.previews,"onUpdate:modelValue":p[3]||(p[3]=_=>l.modelValue.previews=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable previews")),1)]),_:1},8,["modelValue"]),b(e(E),{modelValue:l.modelValue.enable_sharing,"onUpdate:modelValue":p[4]||(p[4]=_=>l.modelValue.enable_sharing=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable sharing")),1)]),_:1},8,["modelValue"]),e(t)?(u(),k(e(E),{key:0,modelValue:l.modelValue.encrypt,"onUpdate:modelValue":p[5]||(p[5]=_=>l.modelValue.encrypt=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable encryption")),1)]),_:1},8,["modelValue"])):T("",!0),b(e(E),{modelValue:l.modelValue.encoding_compatibility,"onUpdate:modelValue":p[6]||(p[6]=_=>l.modelValue.encoding_compatibility=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Compatibility with Mac NFD encoding (slow)")),1)]),_:1},8,["modelValue"])],10,ia),[[J,c.value]])],2))}}),ua="_mountOptions_1fqyb_2",da="_mountOptions__fieldset_1fqyb_12",ca={mountOptions:ua,mountOptions__fieldset:da},_a={$style:ca},ma=N(ra,[["__cssModules",_a]]),{isAdmin:ue}=A("files_external","settings"),pa=A("files_external","allowedBackends"),de=A("files_external","backends").filter(l=>pa.includes(l.identifier)),ga=A("files_external","authMechanisms"),fa=U({__name:"AddExternalStorageDialog",props:Z({storage:{default:()=>({backendOptions:{},mountOptions:{...oa},type:ue?"system":"personal"})}},{open:{type:Boolean,default:!0},openModifiers:{}}),emits:Z(["close"],["update:open"]),setup(l){const a=j(l,"open"),t=M(structuredClone(Q(l.storage)));K(()=>{a.value&&(t.value=structuredClone(Q(l.storage)))});const r=C({get(){return de.find(o=>o.identifier===t.value.backend)},set(o){t.value.backend=o?.identifier}}),d=C(()=>ga.filter(({scheme:o})=>r.value?.authSchemes[o])),c=C({get(){return d.value.find(o=>o.identifier===t.value.authMechanism)},set(o){t.value.authMechanism=o?.identifier}});return z(d,()=>{d.value.length===1&&(t.value.authMechanism=d.value[0].identifier)}),(o,i)=>(u(),k(e(Re),{open:a.value,"onUpdate:open":[i[9]||(i[9]=s=>a.value=s),i[11]||(i[11]=s=>s||o.$emit("close"))],isForm:"",contentClasses:o.$style.externalStorageDialog,name:t.value.id?e(n)("files_external","Edit storage"):e(n)("files_external","Add storage"),onSubmit:i[10]||(i[10]=s=>o.$emit("close",t.value))},{actions:w(()=>[l.storage.id?(u(),k(e(P),{key:0,onClick:i[8]||(i[8]=s=>o.$emit("close"))},{default:w(()=>[V(v(e(n)("files_external","Cancel")),1)]),_:1})):T("",!0),b(e(P),{variant:"primary",type:"submit"},{default:w(()=>[V(v(l.storage.id?e(n)("files_external","Edit"):e(n)("files_external","Create")),1)]),_:1})]),default:w(()=>[b(e(_e),{modelValue:t.value.mountPoint,"onUpdate:modelValue":i[0]||(i[0]=s=>t.value.mountPoint=s),label:e(n)("files_external","Folder name"),required:""},null,8,["modelValue","label"]),b(ma,{modelValue:t.value.mountOptions,"onUpdate:modelValue":i[1]||(i[1]=s=>t.value.mountOptions=s)},null,8,["modelValue"]),e(ue)?(u(),k(Ze,{key:0,groups:t.value.applicableGroups,"onUpdate:groups":i[2]||(i[2]=s=>t.value.applicableGroups=s),users:t.value.applicableUsers,"onUpdate:users":i[3]||(i[3]=s=>t.value.applicableUsers=s),class:h(o.$style.externalStorageDialog__dropdown)},null,8,["groups","users","class"])):T("",!0),b(e(ae),{modelValue:r.value,"onUpdate:modelValue":i[4]||(i[4]=s=>r.value=s),options:e(de),disabled:!!(t.value.id&&t.value.backend),inputLabel:e(n)("files_external","External storage"),class:h(o.$style.externalStorageDialog__dropdown),label:"name",required:""},null,8,["modelValue","options","disabled","inputLabel","class"]),b(e(ae),{modelValue:c.value,"onUpdate:modelValue":i[5]||(i[5]=s=>c.value=s),options:d.value,disabled:!t.value.backend||d.value.length<=1||!!(t.value.id&&t.value.authMechanism),inputLabel:e(n)("files_external","Authentication"),class:h(o.$style.externalStorageDialog__dropdown),label:"name",required:""},null,8,["modelValue","options","disabled","inputLabel","class"]),r.value&&t.value.backendOptions?(u(),k(sa,{key:1,modelValue:t.value.backendOptions,"onUpdate:modelValue":i[6]||(i[6]=s=>t.value.backendOptions=s),class:h(o.$style.externalStorageDialog__configuration),configuration:r.value.configuration},null,8,["modelValue","class","configuration"])):T("",!0),c.value&&t.value.backendOptions?(u(),k(Xe,{key:2,modelValue:t.value.backendOptions,"onUpdate:modelValue":i[7]||(i[7]=s=>t.value.backendOptions=s),class:h(o.$style.externalStorageDialog__configuration),authMechanism:c.value},null,8,["modelValue","class","authMechanism"])):T("",!0)]),_:1},8,["open","contentClasses","name"]))}}),va="_externalStorageDialog_l5jv4_2",ba="_externalStorageDialog__configuration_l5jv4_9",ya="_externalStorageDialog__dropdown_l5jv4_13",ha={externalStorageDialog:va,externalStorageDialog__configuration:ba,externalStorageDialog__dropdown:ya},xa={$style:ha},xe=N(fa,[["__cssModules",xa]]),wa={class:"hidden-visually"},ka={key:0},Va=U({__name:"ExternalStorageTableRow",props:{storage:{},isAdmin:{type:Boolean}},setup(l){const a=l,t=se(),r=A("files_external","backends"),d=C(()=>r.find(f=>f.identifier===a.storage.backend).name),c=A("files_external","authMechanisms"),o=C(()=>c.find(f=>f.identifier===a.storage.authMechanism).name),i=M(!1),s=C(()=>{if(i.value)return{icon:"loading",label:n("files_external","Checking …")};const f=a.storage.status??B.Indeterminate,ne=a.storage.statusMessage||Ge[f],q=Ie[f],oe=f===B.NetworkError||f===B.Timeout,we=!oe&&f!==B.Success&&f!==B.Indeterminate;return{icon:q,label:ne,isWarning:oe,isError:we}}),p=be(()=>a.storage.applicableUsers||[]);async function _(){await t.deleteStorage(a.storage)}async function m(){const f=await Fe(xe,{storage:a.storage});f&&await t.updateStorage(f)}async function g(){i.value=!0;try{await t.reloadStorage(a.storage)}finally{i.value=!1}}return(f,ne)=>(u(),x("tr",{class:h(f.$style.storageTableRow)},[y("td",null,[y("span",wa,v(s.value.label),1),b(e(P),{"aria-label":e(n)("files_external","Recheck status"),title:s.value.label,variant:"tertiary-no-background",onClick:g},{icon:w(()=>[s.value.icon==="loading"?(u(),k(e(me),{key:0})):(u(),k(e(F),{key:1,class:h({[f.$style.storageTableRow__status_error]:s.value.isError,[f.$style.storageTableRow__status_warning]:s.value.isWarning}),path:s.value.icon},null,8,["class","path"]))]),_:1},8,["aria-label","title"])]),y("td",null,v(l.storage.mountPoint),1),y("td",null,v(d.value),1),y("td",null,v(o.value),1),l.isAdmin?(u(),x("td",ka,[y("div",{class:h(f.$style.storageTableRow__cellApplicable)},[(u(!0),x(S,null,O(l.storage.applicableGroups,q=>(u(),k(e(Be),{key:q,iconPath:e(Te),noClose:"",text:q},null,8,["iconPath","text"]))),128)),(u(!0),x(S,null,O(e(p),q=>(u(),k(e(He),{key:q.user,displayName:q.displayName,size:24,user:q.user},null,8,["displayName","user"]))),128))],2)])):T("",!0),y("td",null,[l.isAdmin||l.storage.type==="personal"?(u(),x("div",{key:0,class:h(f.$style.storageTableRow__cellActions)},[b(e(P),{"aria-label":e(n)("files_external","Edit"),title:e(n)("files_external","Edit"),onClick:m},{icon:w(()=>[b(e(F),{path:e(Oe)},null,8,["path"])]),_:1},8,["aria-label","title"]),b(e(P),{"aria-label":e(n)("files_external","Delete"),title:e(n)("files_external","Delete"),variant:"error",onClick:_},{icon:w(()=>[b(e(F),{path:e(Ne)},null,8,["path"])]),_:1},8,["aria-label","title"])],2)):(u(),k(e(F),{key:1,inline:"",path:e(qe),name:e(n)("files_external","System provided storage"),title:e(n)("files_external","System provided storage")},null,8,["path","name","title"]))])],2))}}),Sa="_storageTableRow__cellActions_1k62p_2",Ca="_storageTableRow__cellApplicable_1k62p_7",Ma="_storageTableRow__status_warning_1k62p_17",Aa="_storageTableRow__status_error_1k62p_21",$a={storageTableRow__cellActions:Sa,storageTableRow__cellApplicable:Ca,storageTableRow__status_warning:Ma,storageTableRow__status_error:Aa},Ua={$style:$a},Ta=N(Va,[["__cssModules",Ua]]),Oa=["aria-label"],Na={class:"hidden-visually"},qa={key:0},Pa={class:"hidden-visually"},Ea=U({__name:"ExternalStorageTable",setup(l){const a=se(),{isAdmin:t}=A("files_external","settings"),r=C(()=>t?a.globalStorages:[...a.userStorages,...a.globalStorages]);return(d,c)=>(u(),x("table",{class:h(d.$style.storageTable),"aria-label":e(n)("files_external","External storages")},[y("thead",{class:h(d.$style.storageTable__header)},[y("tr",null,[y("th",{class:h(d.$style.storageTable__headerStatus)},[y("span",Na,v(e(n)("files_external","Status")),1)],2),y("th",{class:h(d.$style.storageTable__headerFolder)},v(e(n)("files_external","Folder name")),3),y("th",{class:h(d.$style.storageTable__headerBackend)},v(e(n)("files_external","External storage")),3),y("th",{class:h(d.$style.storageTable__headerAuthentication)},v(e(n)("files_external","Authentication")),3),e(t)?(u(),x("th",qa,v(e(n)("files_external","Restricted to")),1)):T("",!0),y("th",{class:h(d.$style.storageTable__headerActions)},[y("span",Pa,v(e(n)("files_external","Actions")),1)],2)])],2),y("tbody",null,[(u(!0),x(S,null,O(r.value,o=>(u(),k(Ta,{key:o.id,isAdmin:e(t),storage:o},null,8,["isAdmin","storage"]))),128))])],10,Oa))}}),Ra="_storageTable_1dqte_2",Fa="_storageTable__header_1dqte_11",Da="_storageTable__headerStatus_1dqte_16",ja="_storageTable__headerFolder_1dqte_20",Ba="_storageTable__headerBackend_1dqte_24",La="_storageTable__headerFAuthentication_1dqte_28",Ha="_storageTable__headerActions_1dqte_32",Ga={storageTable:Ra,storageTable__header:Fa,storageTable__headerStatus:Da,storageTable__headerFolder:ja,storageTable__headerBackend:Ba,storageTable__headerFAuthentication:La,storageTable__headerActions:Ha},Ia={$style:Ga},Qa=N(Ea,[["__cssModules",Ia]]),za=U({__name:"UserMountSettings",setup(l){const a=A("files_external","user-mounting"),t=A("files_external","backends").filter(c=>c.identifier!=="local"),r=M(a.allowUserMounting),d=M(a.allowedBackends);return z(r,()=>{const c=!r.value;window.OCP.AppConfig.setValue("files_external","allow_user_mounting",r.value?"yes":"no",{success:()=>le(n("files_external","Saved")),error:()=>{r.value=c,te(n("files_external","Error while saving"))}})}),z(d,(c,o)=>{window.OCP.AppConfig.setValue("files_external","user_mounting_backends",c.join(","),{success:()=>le(n("files_external","Saved allowed backends")),error:()=>{te(n("files_external","Failed to save allowed backends")),d.value=o}})}),(c,o)=>(u(),x("form",null,[y("h3",{class:h(c.$style.userMountSettings__heading)},v(e(n)("files_external","Advanced options for external storage mounts")),3),b(e(E),{modelValue:r.value,"onUpdate:modelValue":o[0]||(o[0]=i=>r.value=i),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Allow people to mount external storage")),1)]),_:1},8,["modelValue"]),W(y("fieldset",{class:h(c.$style.userMountSettings__backends)},[y("legend",null,v(e(n)("files_external","External storage backends people are allowed to mount")),1),(u(!0),x(S,null,O(e(t),i=>(u(),k(e(E),{key:i.identifier,modelValue:d.value,"onUpdate:modelValue":o[1]||(o[1]=s=>d.value=s),value:i.identifier,name:"allowUserMountingBackends[]"},{default:w(()=>[V(v(i.name),1)]),_:2},1032,["modelValue","value"]))),128))],2),[[J,r.value]])]))}}),Za="_userMountSettings__heading_59moz_2",Ka="_userMountSettings__backends_59moz_9",Wa={userMountSettings__heading:Za,userMountSettings__backends:Ka},Ja={$style:Wa},Ya=N(za,[["__cssModules",Ja]]);const Xa=["aria-label"],et=U({__name:"ExternalStoragesSection",setup(l){const a=A("files_external","settings",{docUrl:"",dependencyIssues:{messages:null,modules:null},isAdmin:!1}),t=se(),r=a.dependencyIssues?.messages??[],d=a.dependencyIssues?.modules??{},c=M(!1),o=M();async function i(s){if(c.value=!1,!!s)try{a.isAdmin?await t.createGlobalStorage(s):await t.createUserStorage(s),o.value=void 0}catch(p){ve.error("Failed to add external storage",{error:p,storage:s}),o.value={...s},c.value=!0}}return(s,p)=>(u(),k(e(ce),{docUrl:e(a).docUrl,name:e(n)("files_external","External storage"),description:e(n)("files_external","External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices.")+(e(a).isAdmin?" "+e(n)("files_external","You may also allow people to mount their own external storage services."):"")},{default:w(()=>[(u(!0),x(S,null,O(e(r),(_,m)=>(u(),k(e(re),{key:m,type:"error"},{default:w(()=>[V(v(_),1)]),_:2},1024))),128)),(u(!0),x(S,null,O(e(d),(_,m)=>(u(),k(e(re),{key:m,type:"warning"},{default:w(()=>[y("p",null,[m==="curl"?(u(),x(S,{key:0},[V(v(e(n)("files_external","The cURL support in PHP is not enabled or installed.")),1)],64)):m==="ftp"?(u(),x(S,{key:1},[V(v(e(n)("files_external","The FTP support in PHP is not enabled or installed.")),1)],64)):(u(),x(S,{key:2},[V(v(e(n)("files_external","{module} is not installed.",{module:m})),1)],64)),V(" "+v(e(Ee)("files_external","Please ask your system administrator to install it as otherwise mounting the following backend is not possible:","Please ask your system administrator to install it as otherwise mounting the following backends is not possible:",_.length)),1)]),y("ul",{class:h(s.$style.externalStoragesSection__dependantList),"aria-label":e(n)("files_external","Dependant backends")},[(u(!0),x(S,null,O(_,g=>(u(),x("li",{key:g},v(g),1))),128))],10,Xa)]),_:2},1024))),128)),T("",!0),b(Qa),b(e(P),{class:h(s.$style.externalStoragesSection__newStorageButton),variant:"primary",onClick:p[0]||(p[0]=_=>c.value=!c.value)},{icon:w(()=>[b(e(F),{path:e(Pe)},null,8,["path"])]),default:w(()=>[V(" "+v(e(n)("files_external","Add external storage")),1)]),_:1},8,["class"]),b(xe,{open:c.value,"onUpdate:open":p[1]||(p[1]=_=>c.value=_),storage:o.value,onClose:i},null,8,["open","storage"]),e(a).isAdmin?(u(),k(Ya,{key:1})):T("",!0)]),_:1},8,["docUrl","name","description"]))}}),at="_externalStoragesSection__dependantList_atsmn_2",tt="_externalStoragesSection__newStorageButton_atsmn_7",lt={externalStoragesSection__dependantList:at,externalStoragesSection__newStorageButton:tt},st={$style:lt},nt=N(et,[["__cssModules",st]]),ot=U({__name:"GlobalCredentialsSection",setup(l){const a=A("files_external","global-credentials"),t=M(!1),r=M(a.user),d=M(a.password);fe($);async function c(){try{t.value=!0;const{data:o}=await $.post(R("apps/files_external/globalcredentials"),{uid:a.uid,user:r.value,password:d.value},{confirmPassword:I.Strict});if(o){le(n("files_external","Global credentials saved"));return}}catch(o){ve.error(o)}finally{t.value=!1}te(n("files_external","Could not save global credentials")),r.value=a.user,d.value=a.password}return(o,i)=>(u(),k(e(ce),{name:e(n)("files_external","Global credentials"),description:e(n)("files_external","Global credentials can be used to authenticate with multiple external storages that have the same credentials.")},{default:w(()=>[y("form",{id:"global_credentials",class:h(o.$style.globalCredentialsSectionForm),autocomplete:"false",onSubmit:Me(c,["prevent"])},[b(e(_e),{modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=s=>r.value=s),name:"username",autocomplete:"false",label:e(n)("files_external","Login")},null,8,["modelValue","label"]),b(e(Le),{modelValue:d.value,"onUpdate:modelValue":i[1]||(i[1]=s=>d.value=s),name:"password",autocomplete:"false",label:e(n)("files_external","Password")},null,8,["modelValue","label"]),b(e(P),{class:h(o.$style.globalCredentialsSectionForm__submit),disabled:t.value,variant:"primary",type:"submit"},{default:w(()=>[V(v(t.value?e(n)("files_external","Saving …"):e(n)("files_external","Save")),1)]),_:1},8,["class","disabled"])],34)]),_:1},8,["name","description"]))}}),it="_globalCredentialsSectionForm_bgjv2_2",rt="_globalCredentialsSectionForm__submit_bgjv2_10",ut={globalCredentialsSectionForm:it,globalCredentialsSectionForm__submit:rt},dt={$style:ut},ct=N(ot,[["__cssModules",dt]]),_t=U({__name:"FilesExternalSettings",setup(l){return(a,t)=>(u(),x(S,null,[b(nt),b(ct)],64))}}),mt=Ve(),X=Ae(_t);X.config.idPrefix="files-external",X.use(mt),X.mount("#files-external"); +import{d as ke,c as Ve}from"./pinia-BsumPXOW.chunk.mjs";import{E as K,a8 as ee,P as Se,v as C,b as U,n as j,o as u,c as k,u as e,l as M,z,f as x,y as h,g as y,t as v,F as S,C as Ce,B as O,J as W,K as J,h as T,s as Z,a0 as Q,R as ie,k as b,w,j as V,L as Me,e as Ae}from"./Web-DYqXJUev.chunk.mjs";import{s as $e,g as Ue,t as Te,u as Oe,l as Ne,v as qe,N as re,k as Pe}from"./mdi-B6W_Xvj-.chunk.mjs";import{_ as N,l as A}from"./public-C1mLBHT3.chunk.mjs";import{t as n,a as Ee}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as P}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{N as F}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as ce}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{N as Re,s as Fe}from"./index-CmDAUQql.chunk.mjs";import{N as ae}from"./index-BDlLVKOD.chunk.mjs";import{_ as _e}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{c as $}from"./index-CkGt55pS.chunk.mjs";import{b as R}from"./index-Cp0kcsps.chunk.mjs";import{N as De}from"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import{m as je}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as me}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as E}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as Be}from"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{N as Le}from"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import{N as He}from"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{C as pe}from"./AuthMechanismRsa-vXoEDo92.chunk.mjs";import{C as G,a as ge,M as D,S as B,b as Ge,c as Ie}from"./types-DurdPjCi.chunk.mjs";import{a as fe,P as I}from"./index-BgrtITOq.chunk.mjs";import{a as te,d as le}from"./index-mH69OG7L.chunk.mjs";import{l as ve}from"./logger-BFB83ufD.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";const Qe='',Y=Se(new Map);function be(l){const a=C(()=>ee(l).map(t=>({id:`user:${t}`,user:t,displayName:Y.get(t)||t})));return K(async()=>{const t=ee(l).filter(r=>!Y.has(r));if(t.length>0){const{data:r}=await $.post(R("/displaynames"),{users:t});for(const[d,c]of Object.entries(r.users))Y.set(d,c)}}),a}function ze(l){return C(()=>ee(l).map(ye))}function ye(l){return{id:l,isNoUser:!0,displayName:l,iconSvg:Qe}}const Ze=U({__name:"ApplicableEntities",props:{groups:{default:()=>[]},groupsModifiers:{},users:{default:()=>[]},usersModifiers:{}},emits:["update:groups","update:users"],setup(l){const a=j(l,"groups"),t=j(l,"users"),r=M([]),d=be(t),c=ze(a),o=C({get(){return[...c.value,...d.value]},set(p){t.value=p.filter(_=>_.user).map(_=>_.user),a.value=p.filter(_=>_.isNoUser).map(_=>_.id)}}),i=je(s,500);async function s(p){const{data:_}=await $.get(R("apps/files_external/ajax/applicable"),{params:{pattern:p,limit:20}}),m=[...r.value.map(g=>[g.id,g]),...Object.entries(_.groups).map(([g,f])=>[g,{...ye(g),displayName:f}]),...Object.entries(_.users).map(([g,f])=>[`user:${g}`,{id:`user:${g}`,user:g,displayName:f}])];r.value=[...new Map(m).values()]}return(p,_)=>(u(),k(e(De),{modelValue:o.value,"onUpdate:modelValue":_[0]||(_[0]=m=>o.value=m),keepOpen:"",multiple:"",options:r.value,inputLabel:e(n)("files_external","Restrict to"),onSearch:e(i)},null,8,["modelValue","options","inputLabel","onSearch"]))}}),Ke=U({__name:"AuthMechanismConfiguration",props:Z({authMechanism:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(l){const a=j(l,"modelValue"),t=l,r=C(()=>{if(!t.authMechanism.configuration)return;const s=Object.entries(t.authMechanism.configuration).filter(([,p])=>!(p.flags&G.UserProvided));return Object.fromEntries(s)}),d=C(()=>window.OCA.FilesExternal.AuthMechanism.getHandler(t.authMechanism)),c=C(()=>{if(!r.value)return!1;for(const s of Object.values(r.value))if(!(s.flags&G.Hidden||s.flags&G.UserProvided))return!0;return!1}),o=M(!1);K(async()=>{d.value&&(o.value=!0,await window.customElements.whenDefined(d.value.tagName),o.value=!1)}),z(r,()=>{for(const s in r.value)s in a.value||(a.value[s]=r.value[s]?.type===ge.Boolean?!1:"")});function i(s){const p=[s.detail].flat()[0];a.value={...a.value,...p}}return(s,p)=>c.value?(u(),x("fieldset",{key:0,class:h(s.$style.authMechanismConfiguration)},[y("legend",null,v(e(n)("files_external","Authentication")),1),d.value?(u(),x(S,{key:0},[o.value?(u(),k(e(me),{key:0})):(u(),k(Ce(d.value.tagName),{key:1,".modelValue":a.value,".authMechanism":l.authMechanism,"onUpdate:modelValue":i},null,40,[".modelValue",".authMechanism"]))],64)):(u(!0),x(S,{key:1},O(r.value,(_,m)=>W((u(),k(pe,{key:_.value,modelValue:a.value[m],"onUpdate:modelValue":g=>a.value[m]=g,"config-key":m,"config-option":_},null,8,["modelValue","onUpdate:modelValue","config-key","config-option"])),[[J,!(_.flags&e(G).Hidden)]])),128))],2)):T("",!0)}}),We="_authMechanismConfiguration_kpcpy_2",Je={authMechanismConfiguration:We},Ye={$style:Je},Xe=N(Ke,[["__cssModules",Ye]]),ea=U({__name:"BackendConfiguration",props:Z({configuration:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(l){const a=j(l,"modelValue"),t=l;return z(()=>t.configuration,()=>{for(const r in t.configuration)r in a.value||(a.value[r]=t.configuration[r]?.defaultValue??(t.configuration[r]?.type===ge.Boolean?!1:""))},{immediate:!0}),(r,d)=>(u(),x("fieldset",{class:h(r.$style.backendConfiguration)},[y("legend",null,v(e(n)("files_external","Storage configuration")),1),(u(!0),x(S,null,O(l.configuration,(c,o)=>W((u(),k(pe,{key:c.value,modelValue:a.value[o],"onUpdate:modelValue":i=>a.value[o]=i,configKey:o,configOption:c},null,8,["modelValue","onUpdate:modelValue","configKey","configOption"])),[[J,!(c.flags&e(G).Hidden)]])),128))],2))}}),aa="_backendConfiguration_1sf6y_2",ta={backendConfiguration:aa},la={$style:ta},sa=N(ea,[["__cssModules",la]]),{isAdmin:na}=A("files_external","settings"),oa=Object.freeze({encrypt:!0,previews:!0,filesystem_check_changes:D.OncePerRequest,enable_sharing:!1,encoding_compatibility:!1,readonly:!1}),se=ke("files_external--storages",()=>{const l=M([]),a=M([]);async function t(m){const g=R("apps/files_external/globalstorages"),{data:f}=await $.post(g,Q(m),{confirmPassword:I.Strict});l.value.push(L(f))}async function r(m){const g=R("apps/files_external/userstorages"),{data:f}=await $.post(g,Q(m),{confirmPassword:I.Strict});a.value.push(L(f))}async function d(m){await $.delete(p(m),{confirmPassword:I.Strict}),m.type==="personal"?a.value=a.value.filter(g=>g.id!==m.id):l.value=l.value.filter(g=>g.id!==m.id)}async function c(m){const{data:g}=await $.put(p(m),Q(m),{confirmPassword:I.Strict});_(L(g))}async function o(m){const{data:g}=await $.get(p(m));_(L(g))}return s(),{globalStorages:l,userStorages:a,createGlobalStorage:t,createUserStorage:r,deleteStorage:d,reloadStorage:o,updateStorage:c};async function i(m){const g=`apps/files_external/${m}`,{data:f}=await $.get(R(g));return Object.values(f).map(L)}async function s(){fe($),na?l.value=await i("globalstorages"):(a.value=await i("userstorages"),l.value=await i("userglobalstorages"))}function p(m){const g=m.type==="personal"?"userstorages":"globalstorages";return R(`apps/files_external/${g}/${m.id}`)}function _(m){if(m.type==="personal"){const g=a.value.findIndex(f=>f.id===m.id);a.value.splice(g,1,m)}else{const g=l.value.findIndex(f=>f.id===m.id);l.value.splice(g,1,m)}}});function L(l){return{...l,mountOptions:he(l.mountOptions)}}function he(l){const a={...l};return a.encrypt=H(a.encrypt,!0),a.previews=H(a.previews,!0),a.enable_sharing=H(a.enable_sharing,!1),a.filesystem_check_changes=typeof a.filesystem_check_changes=="string"?Number.parseInt(a.filesystem_check_changes):a.filesystem_check_changes??D.Never,a.encoding_compatibility=H(a.encoding_compatibility,!1),a.readonly=H(a.readonly,!1),a}function H(l,a=!1){return l===void 0?a:l===!0||l==="true"||l==="1"}const ia=["id","aria-labelledby"],ra=U({__name:"MountOptions",props:{modelValue:{required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(l){const a=j(l,"modelValue");K(()=>{Object.keys(a.value).length===0&&(a.value=he(a.value))});const{hasEncryption:t}=A("files_external","settings"),r=ie(),d=ie(),c=M(!1),o=[{label:n("files_external","Never"),value:D.Never},{label:n("files_external","Once every direct access"),value:D.OncePerRequest},{label:n("files_external","Always"),value:D.Always}],i=C({get(){return o.find(s=>s.value===a.value.filesystem_check_changes)},set(s){a.value.filesystem_check_changes=s?.value??D.OncePerRequest}});return(s,p)=>(u(),x("div",{class:h(s.$style.mountOptions)},[b(e(P),{id:e(r),"aria-controls":e(d),"aria-expanded":c.value,variant:"tertiary-no-background",onClick:p[0]||(p[0]=_=>c.value=!c.value)},{icon:w(()=>[b(e(F),{directional:"",path:c.value?e($e):e(Ue)},null,8,["path"])]),default:w(()=>[V(" "+v(e(n)("files_external","Mount options")),1)]),_:1},8,["id","aria-controls","aria-expanded"]),W(y("fieldset",{id:e(d),class:h(s.$style.mountOptions__fieldset),"aria-labelledby":e(r)},[b(e(ae),{modelValue:i.value,"onUpdate:modelValue":p[1]||(p[1]=_=>i.value=_),inputLabel:e(n)("files_external","Check filesystem changes"),options:o},null,8,["modelValue","inputLabel"]),b(e(E),{modelValue:l.modelValue.readonly,"onUpdate:modelValue":p[2]||(p[2]=_=>l.modelValue.readonly=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Read only")),1)]),_:1},8,["modelValue"]),b(e(E),{modelValue:l.modelValue.previews,"onUpdate:modelValue":p[3]||(p[3]=_=>l.modelValue.previews=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable previews")),1)]),_:1},8,["modelValue"]),b(e(E),{modelValue:l.modelValue.enable_sharing,"onUpdate:modelValue":p[4]||(p[4]=_=>l.modelValue.enable_sharing=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable sharing")),1)]),_:1},8,["modelValue"]),e(t)?(u(),k(e(E),{key:0,modelValue:l.modelValue.encrypt,"onUpdate:modelValue":p[5]||(p[5]=_=>l.modelValue.encrypt=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable encryption")),1)]),_:1},8,["modelValue"])):T("",!0),b(e(E),{modelValue:l.modelValue.encoding_compatibility,"onUpdate:modelValue":p[6]||(p[6]=_=>l.modelValue.encoding_compatibility=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Compatibility with Mac NFD encoding (slow)")),1)]),_:1},8,["modelValue"])],10,ia),[[J,c.value]])],2))}}),ua="_mountOptions_1fqyb_2",da="_mountOptions__fieldset_1fqyb_12",ca={mountOptions:ua,mountOptions__fieldset:da},_a={$style:ca},ma=N(ra,[["__cssModules",_a]]),{isAdmin:ue}=A("files_external","settings"),pa=A("files_external","allowedBackends"),de=A("files_external","backends").filter(l=>pa.includes(l.identifier)),ga=A("files_external","authMechanisms"),fa=U({__name:"AddExternalStorageDialog",props:Z({storage:{default:()=>({backendOptions:{},mountOptions:{...oa},type:ue?"system":"personal"})}},{open:{type:Boolean,default:!0},openModifiers:{}}),emits:Z(["close"],["update:open"]),setup(l){const a=j(l,"open"),t=M(structuredClone(Q(l.storage)));K(()=>{a.value&&(t.value=structuredClone(Q(l.storage)))});const r=C({get(){return de.find(o=>o.identifier===t.value.backend)},set(o){t.value.backend=o?.identifier}}),d=C(()=>ga.filter(({scheme:o})=>r.value?.authSchemes[o])),c=C({get(){return d.value.find(o=>o.identifier===t.value.authMechanism)},set(o){t.value.authMechanism=o?.identifier}});return z(d,()=>{d.value.length===1&&(t.value.authMechanism=d.value[0].identifier)}),(o,i)=>(u(),k(e(Re),{open:a.value,"onUpdate:open":[i[9]||(i[9]=s=>a.value=s),i[11]||(i[11]=s=>s||o.$emit("close"))],isForm:"",contentClasses:o.$style.externalStorageDialog,name:t.value.id?e(n)("files_external","Edit storage"):e(n)("files_external","Add storage"),onSubmit:i[10]||(i[10]=s=>o.$emit("close",t.value))},{actions:w(()=>[l.storage.id?(u(),k(e(P),{key:0,onClick:i[8]||(i[8]=s=>o.$emit("close"))},{default:w(()=>[V(v(e(n)("files_external","Cancel")),1)]),_:1})):T("",!0),b(e(P),{variant:"primary",type:"submit"},{default:w(()=>[V(v(l.storage.id?e(n)("files_external","Edit"):e(n)("files_external","Create")),1)]),_:1})]),default:w(()=>[b(e(_e),{modelValue:t.value.mountPoint,"onUpdate:modelValue":i[0]||(i[0]=s=>t.value.mountPoint=s),label:e(n)("files_external","Folder name"),required:""},null,8,["modelValue","label"]),b(ma,{modelValue:t.value.mountOptions,"onUpdate:modelValue":i[1]||(i[1]=s=>t.value.mountOptions=s)},null,8,["modelValue"]),e(ue)?(u(),k(Ze,{key:0,groups:t.value.applicableGroups,"onUpdate:groups":i[2]||(i[2]=s=>t.value.applicableGroups=s),users:t.value.applicableUsers,"onUpdate:users":i[3]||(i[3]=s=>t.value.applicableUsers=s),class:h(o.$style.externalStorageDialog__dropdown)},null,8,["groups","users","class"])):T("",!0),b(e(ae),{modelValue:r.value,"onUpdate:modelValue":i[4]||(i[4]=s=>r.value=s),options:e(de),disabled:!!(t.value.id&&t.value.backend),inputLabel:e(n)("files_external","External storage"),class:h(o.$style.externalStorageDialog__dropdown),label:"name",required:""},null,8,["modelValue","options","disabled","inputLabel","class"]),b(e(ae),{modelValue:c.value,"onUpdate:modelValue":i[5]||(i[5]=s=>c.value=s),options:d.value,disabled:!t.value.backend||d.value.length<=1||!!(t.value.id&&t.value.authMechanism),inputLabel:e(n)("files_external","Authentication"),class:h(o.$style.externalStorageDialog__dropdown),label:"name",required:""},null,8,["modelValue","options","disabled","inputLabel","class"]),r.value&&t.value.backendOptions?(u(),k(sa,{key:1,modelValue:t.value.backendOptions,"onUpdate:modelValue":i[6]||(i[6]=s=>t.value.backendOptions=s),class:h(o.$style.externalStorageDialog__configuration),configuration:r.value.configuration},null,8,["modelValue","class","configuration"])):T("",!0),c.value&&t.value.backendOptions?(u(),k(Xe,{key:2,modelValue:t.value.backendOptions,"onUpdate:modelValue":i[7]||(i[7]=s=>t.value.backendOptions=s),class:h(o.$style.externalStorageDialog__configuration),authMechanism:c.value},null,8,["modelValue","class","authMechanism"])):T("",!0)]),_:1},8,["open","contentClasses","name"]))}}),va="_externalStorageDialog_l5jv4_2",ba="_externalStorageDialog__configuration_l5jv4_9",ya="_externalStorageDialog__dropdown_l5jv4_13",ha={externalStorageDialog:va,externalStorageDialog__configuration:ba,externalStorageDialog__dropdown:ya},xa={$style:ha},xe=N(fa,[["__cssModules",xa]]),wa={class:"hidden-visually"},ka={key:0},Va=U({__name:"ExternalStorageTableRow",props:{storage:{},isAdmin:{type:Boolean}},setup(l){const a=l,t=se(),r=A("files_external","backends"),d=C(()=>r.find(f=>f.identifier===a.storage.backend).name),c=A("files_external","authMechanisms"),o=C(()=>c.find(f=>f.identifier===a.storage.authMechanism).name),i=M(!1),s=C(()=>{if(i.value)return{icon:"loading",label:n("files_external","Checking …")};const f=a.storage.status??B.Indeterminate,ne=a.storage.statusMessage||Ge[f],q=Ie[f],oe=f===B.NetworkError||f===B.Timeout,we=!oe&&f!==B.Success&&f!==B.Indeterminate;return{icon:q,label:ne,isWarning:oe,isError:we}}),p=be(()=>a.storage.applicableUsers||[]);async function _(){await t.deleteStorage(a.storage)}async function m(){const f=await Fe(xe,{storage:a.storage});f&&await t.updateStorage(f)}async function g(){i.value=!0;try{await t.reloadStorage(a.storage)}finally{i.value=!1}}return(f,ne)=>(u(),x("tr",{class:h(f.$style.storageTableRow)},[y("td",null,[y("span",wa,v(s.value.label),1),b(e(P),{"aria-label":e(n)("files_external","Recheck status"),title:s.value.label,variant:"tertiary-no-background",onClick:g},{icon:w(()=>[s.value.icon==="loading"?(u(),k(e(me),{key:0})):(u(),k(e(F),{key:1,class:h({[f.$style.storageTableRow__status_error]:s.value.isError,[f.$style.storageTableRow__status_warning]:s.value.isWarning}),path:s.value.icon},null,8,["class","path"]))]),_:1},8,["aria-label","title"])]),y("td",null,v(l.storage.mountPoint),1),y("td",null,v(d.value),1),y("td",null,v(o.value),1),l.isAdmin?(u(),x("td",ka,[y("div",{class:h(f.$style.storageTableRow__cellApplicable)},[(u(!0),x(S,null,O(l.storage.applicableGroups,q=>(u(),k(e(Be),{key:q,iconPath:e(Te),noClose:"",text:q},null,8,["iconPath","text"]))),128)),(u(!0),x(S,null,O(e(p),q=>(u(),k(e(He),{key:q.user,displayName:q.displayName,size:24,user:q.user},null,8,["displayName","user"]))),128))],2)])):T("",!0),y("td",null,[l.isAdmin||l.storage.type==="personal"?(u(),x("div",{key:0,class:h(f.$style.storageTableRow__cellActions)},[b(e(P),{"aria-label":e(n)("files_external","Edit"),title:e(n)("files_external","Edit"),onClick:m},{icon:w(()=>[b(e(F),{path:e(Oe)},null,8,["path"])]),_:1},8,["aria-label","title"]),b(e(P),{"aria-label":e(n)("files_external","Delete"),title:e(n)("files_external","Delete"),variant:"error",onClick:_},{icon:w(()=>[b(e(F),{path:e(Ne)},null,8,["path"])]),_:1},8,["aria-label","title"])],2)):(u(),k(e(F),{key:1,inline:"",path:e(qe),name:e(n)("files_external","System provided storage"),title:e(n)("files_external","System provided storage")},null,8,["path","name","title"]))])],2))}}),Sa="_storageTableRow__cellActions_1k62p_2",Ca="_storageTableRow__cellApplicable_1k62p_7",Ma="_storageTableRow__status_warning_1k62p_17",Aa="_storageTableRow__status_error_1k62p_21",$a={storageTableRow__cellActions:Sa,storageTableRow__cellApplicable:Ca,storageTableRow__status_warning:Ma,storageTableRow__status_error:Aa},Ua={$style:$a},Ta=N(Va,[["__cssModules",Ua]]),Oa=["aria-label"],Na={class:"hidden-visually"},qa={key:0},Pa={class:"hidden-visually"},Ea=U({__name:"ExternalStorageTable",setup(l){const a=se(),{isAdmin:t}=A("files_external","settings"),r=C(()=>t?a.globalStorages:[...a.userStorages,...a.globalStorages]);return(d,c)=>(u(),x("table",{class:h(d.$style.storageTable),"aria-label":e(n)("files_external","External storages")},[y("thead",{class:h(d.$style.storageTable__header)},[y("tr",null,[y("th",{class:h(d.$style.storageTable__headerStatus)},[y("span",Na,v(e(n)("files_external","Status")),1)],2),y("th",{class:h(d.$style.storageTable__headerFolder)},v(e(n)("files_external","Folder name")),3),y("th",{class:h(d.$style.storageTable__headerBackend)},v(e(n)("files_external","External storage")),3),y("th",{class:h(d.$style.storageTable__headerAuthentication)},v(e(n)("files_external","Authentication")),3),e(t)?(u(),x("th",qa,v(e(n)("files_external","Restricted to")),1)):T("",!0),y("th",{class:h(d.$style.storageTable__headerActions)},[y("span",Pa,v(e(n)("files_external","Actions")),1)],2)])],2),y("tbody",null,[(u(!0),x(S,null,O(r.value,o=>(u(),k(Ta,{key:o.id,isAdmin:e(t),storage:o},null,8,["isAdmin","storage"]))),128))])],10,Oa))}}),Ra="_storageTable_1dqte_2",Fa="_storageTable__header_1dqte_11",Da="_storageTable__headerStatus_1dqte_16",ja="_storageTable__headerFolder_1dqte_20",Ba="_storageTable__headerBackend_1dqte_24",La="_storageTable__headerFAuthentication_1dqte_28",Ha="_storageTable__headerActions_1dqte_32",Ga={storageTable:Ra,storageTable__header:Fa,storageTable__headerStatus:Da,storageTable__headerFolder:ja,storageTable__headerBackend:Ba,storageTable__headerFAuthentication:La,storageTable__headerActions:Ha},Ia={$style:Ga},Qa=N(Ea,[["__cssModules",Ia]]),za=U({__name:"UserMountSettings",setup(l){const a=A("files_external","user-mounting"),t=A("files_external","backends").filter(c=>c.identifier!=="local"),r=M(a.allowUserMounting),d=M(a.allowedBackends);return z(r,()=>{const c=!r.value;window.OCP.AppConfig.setValue("files_external","allow_user_mounting",r.value?"yes":"no",{success:()=>le(n("files_external","Saved")),error:()=>{r.value=c,te(n("files_external","Error while saving"))}})}),z(d,(c,o)=>{window.OCP.AppConfig.setValue("files_external","user_mounting_backends",c.join(","),{success:()=>le(n("files_external","Saved allowed backends")),error:()=>{te(n("files_external","Failed to save allowed backends")),d.value=o}})}),(c,o)=>(u(),x("form",null,[y("h3",{class:h(c.$style.userMountSettings__heading)},v(e(n)("files_external","Advanced options for external storage mounts")),3),b(e(E),{modelValue:r.value,"onUpdate:modelValue":o[0]||(o[0]=i=>r.value=i),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Allow people to mount external storage")),1)]),_:1},8,["modelValue"]),W(y("fieldset",{class:h(c.$style.userMountSettings__backends)},[y("legend",null,v(e(n)("files_external","External storage backends people are allowed to mount")),1),(u(!0),x(S,null,O(e(t),i=>(u(),k(e(E),{key:i.identifier,modelValue:d.value,"onUpdate:modelValue":o[1]||(o[1]=s=>d.value=s),value:i.identifier,name:"allowUserMountingBackends[]"},{default:w(()=>[V(v(i.name),1)]),_:2},1032,["modelValue","value"]))),128))],2),[[J,r.value]])]))}}),Za="_userMountSettings__heading_59moz_2",Ka="_userMountSettings__backends_59moz_9",Wa={userMountSettings__heading:Za,userMountSettings__backends:Ka},Ja={$style:Wa},Ya=N(za,[["__cssModules",Ja]]);const Xa=["aria-label"],et=U({__name:"ExternalStoragesSection",setup(l){const a=A("files_external","settings",{docUrl:"",dependencyIssues:{messages:null,modules:null},isAdmin:!1}),t=se(),r=a.dependencyIssues?.messages??[],d=a.dependencyIssues?.modules??{},c=M(!1),o=M();async function i(s){if(c.value=!1,!!s)try{a.isAdmin?await t.createGlobalStorage(s):await t.createUserStorage(s),o.value=void 0}catch(p){ve.error("Failed to add external storage",{error:p,storage:s}),o.value={...s},c.value=!0}}return(s,p)=>(u(),k(e(ce),{docUrl:e(a).docUrl,name:e(n)("files_external","External storage"),description:e(n)("files_external","External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices.")+(e(a).isAdmin?" "+e(n)("files_external","You may also allow people to mount their own external storage services."):"")},{default:w(()=>[(u(!0),x(S,null,O(e(r),(_,m)=>(u(),k(e(re),{key:m,type:"error"},{default:w(()=>[V(v(_),1)]),_:2},1024))),128)),(u(!0),x(S,null,O(e(d),(_,m)=>(u(),k(e(re),{key:m,type:"warning"},{default:w(()=>[y("p",null,[m==="curl"?(u(),x(S,{key:0},[V(v(e(n)("files_external","The cURL support in PHP is not enabled or installed.")),1)],64)):m==="ftp"?(u(),x(S,{key:1},[V(v(e(n)("files_external","The FTP support in PHP is not enabled or installed.")),1)],64)):(u(),x(S,{key:2},[V(v(e(n)("files_external","{module} is not installed.",{module:m})),1)],64)),V(" "+v(e(Ee)("files_external","Please ask your system administrator to install it as otherwise mounting the following backend is not possible:","Please ask your system administrator to install it as otherwise mounting the following backends is not possible:",_.length)),1)]),y("ul",{class:h(s.$style.externalStoragesSection__dependantList),"aria-label":e(n)("files_external","Dependant backends")},[(u(!0),x(S,null,O(_,g=>(u(),x("li",{key:g},v(g),1))),128))],10,Xa)]),_:2},1024))),128)),T("",!0),b(Qa),b(e(P),{class:h(s.$style.externalStoragesSection__newStorageButton),variant:"primary",onClick:p[0]||(p[0]=_=>c.value=!c.value)},{icon:w(()=>[b(e(F),{path:e(Pe)},null,8,["path"])]),default:w(()=>[V(" "+v(e(n)("files_external","Add external storage")),1)]),_:1},8,["class"]),b(xe,{open:c.value,"onUpdate:open":p[1]||(p[1]=_=>c.value=_),storage:o.value,onClose:i},null,8,["open","storage"]),e(a).isAdmin?(u(),k(Ya,{key:1})):T("",!0)]),_:1},8,["docUrl","name","description"]))}}),at="_externalStoragesSection__dependantList_atsmn_2",tt="_externalStoragesSection__newStorageButton_atsmn_7",lt={externalStoragesSection__dependantList:at,externalStoragesSection__newStorageButton:tt},st={$style:lt},nt=N(et,[["__cssModules",st]]),ot=U({__name:"GlobalCredentialsSection",setup(l){const a=A("files_external","global-credentials"),t=M(!1),r=M(a.user),d=M(a.password);fe($);async function c(){try{t.value=!0;const{data:o}=await $.post(R("apps/files_external/globalcredentials"),{uid:a.uid,user:r.value,password:d.value},{confirmPassword:I.Strict});if(o){le(n("files_external","Global credentials saved"));return}}catch(o){ve.error(o)}finally{t.value=!1}te(n("files_external","Could not save global credentials")),r.value=a.user,d.value=a.password}return(o,i)=>(u(),k(e(ce),{name:e(n)("files_external","Global credentials"),description:e(n)("files_external","Global credentials can be used to authenticate with multiple external storages that have the same credentials.")},{default:w(()=>[y("form",{id:"global_credentials",class:h(o.$style.globalCredentialsSectionForm),autocomplete:"false",onSubmit:Me(c,["prevent"])},[b(e(_e),{modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=s=>r.value=s),name:"username",autocomplete:"false",label:e(n)("files_external","Login")},null,8,["modelValue","label"]),b(e(Le),{modelValue:d.value,"onUpdate:modelValue":i[1]||(i[1]=s=>d.value=s),name:"password",autocomplete:"false",label:e(n)("files_external","Password")},null,8,["modelValue","label"]),b(e(P),{class:h(o.$style.globalCredentialsSectionForm__submit),disabled:t.value,variant:"primary",type:"submit"},{default:w(()=>[V(v(t.value?e(n)("files_external","Saving …"):e(n)("files_external","Save")),1)]),_:1},8,["class","disabled"])],34)]),_:1},8,["name","description"]))}}),it="_globalCredentialsSectionForm_bgjv2_2",rt="_globalCredentialsSectionForm__submit_bgjv2_10",ut={globalCredentialsSectionForm:it,globalCredentialsSectionForm__submit:rt},dt={$style:ut},ct=N(ot,[["__cssModules",dt]]),_t=U({__name:"FilesExternalSettings",setup(l){return(a,t)=>(u(),x(S,null,[b(nt),b(ct)],64))}}),mt=Ve(),X=Ae(_t);X.config.idPrefix="files-external",X.use(mt),X.mount("#files-external"); //# sourceMappingURL=files_external-settings.mjs.map diff --git a/dist/files_external-settings.mjs.map b/dist/files_external-settings.mjs.map index 4e8710166ae92..799c75e92e3af 100644 --- a/dist/files_external-settings.mjs.map +++ b/dist/files_external-settings.mjs.map @@ -1 +1 @@ -{"version":3,"file":"files_external-settings.mjs","sources":["../node_modules/@mdi/svg/svg/account-group-outline.svg?raw","../build/frontend/apps/files_external/src/composables/useEntities.ts","../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/ApplicableEntities.vue","../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/AuthMechanismConfiguration.vue","../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/BackendConfiguration.vue","../build/frontend/apps/files_external/src/store/storages.ts","../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/MountOptions.vue","../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/AddExternalStorageDialog.vue","../build/frontend/apps/files_external/src/components/ExternalStorageTableRow.vue","../build/frontend/apps/files_external/src/components/ExternalStorageTable.vue","../build/frontend/apps/files_external/src/components/UserMountSettings.vue","../build/frontend/apps/files_external/src/views/ExternalStoragesSection.vue","../build/frontend/apps/files_external/src/views/GlobalCredentialsSection.vue","../build/frontend/apps/files_external/src/views/FilesExternalSettings.vue","../build/frontend/apps/files_external/src/settings-main.ts"],"sourcesContent":["export default \"\"","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\n\nimport svgAccountGroupOutline from '@mdi/svg/svg/account-group-outline.svg?raw'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { computed, reactive, toValue, watchEffect } from 'vue'\n\nconst displayNames = reactive(new Map())\n\n/**\n * Fetch and provide user display names for given UIDs\n *\n * @param uids - The user ids to fetch display names for\n */\nexport function useUsers(uids: MaybeRefOrGetter) {\n\tconst users = computed(() => toValue(uids).map((uid) => ({\n\t\tid: `user:${uid}`,\n\t\tuser: uid,\n\t\tdisplayName: displayNames.get(uid) || uid,\n\t})))\n\n\twatchEffect(async () => {\n\t\tconst missingUsers = toValue(uids).filter((uid) => !displayNames.has(uid))\n\t\tif (missingUsers.length > 0) {\n\t\t\tconst { data } = await axios.post(generateUrl('/displaynames'), {\n\t\t\t\tusers: missingUsers,\n\t\t\t})\n\t\t\tfor (const [uid, displayName] of Object.entries(data.users)) {\n\t\t\t\tdisplayNames.set(uid, displayName as string)\n\t\t\t}\n\t\t}\n\t})\n\n\treturn users\n}\n\n/**\n * Map group ids to IUserData objects\n *\n * @param gids - The group ids to create entities for\n */\nexport function useGroups(gids: MaybeRefOrGetter) {\n\treturn computed(() => toValue(gids).map(mapGroupToUserData))\n}\n\n/**\n * Map a group id to an IUserData object\n *\n * @param gid - The group id to map\n */\nexport function mapGroupToUserData(gid: string) {\n\treturn {\n\t\tid: gid,\n\t\tisNoUser: true,\n\t\tdisplayName: gid,\n\t\ticonSvg: svgAccountGroupOutline,\n\t}\n}\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IMountOptions, IStorage } from '../types.ts'\n\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation'\nimport { generateUrl } from '@nextcloud/router'\nimport { defineStore } from 'pinia'\nimport { ref, toRaw } from 'vue'\nimport { MountOptionsCheckFilesystem } from '../types.ts'\n\nconst { isAdmin } = loadState<{ isAdmin: boolean }>('files_external', 'settings')\n\n/** The default mount options for NEW storages (not the defaults applied if a config is missing!) */\nexport const DEFAULT_MOUNT_OPTIONS: IMountOptions = Object.freeze({\n\tencrypt: true,\n\tpreviews: true,\n\tfilesystem_check_changes: MountOptionsCheckFilesystem.OncePerRequest,\n\tenable_sharing: false,\n\tencoding_compatibility: false,\n\treadonly: false,\n})\n\nexport const useStorages = defineStore('files_external--storages', () => {\n\tconst globalStorages = ref([])\n\tconst userStorages = ref([])\n\n\t/**\n\t * Create a new global storage\n\t *\n\t * @param storage - The storage to create\n\t */\n\tasync function createGlobalStorage(storage: Partial) {\n\t\tconst url = generateUrl('apps/files_external/globalstorages')\n\t\tconst { data } = await axios.post(\n\t\t\turl,\n\t\t\ttoRaw(storage),\n\t\t\t{ confirmPassword: PwdConfirmationMode.Strict },\n\t\t)\n\t\tglobalStorages.value.push(parseStorage(data))\n\t}\n\n\t/**\n\t * Create a new global storage\n\t *\n\t * @param storage - The storage to create\n\t */\n\tasync function createUserStorage(storage: Partial) {\n\t\tconst url = generateUrl('apps/files_external/userstorages')\n\t\tconst { data } = await axios.post(\n\t\t\turl,\n\t\t\ttoRaw(storage),\n\t\t\t{ confirmPassword: PwdConfirmationMode.Strict },\n\t\t)\n\t\tuserStorages.value.push(parseStorage(data))\n\t}\n\n\t/**\n\t * Delete a storage\n\t *\n\t * @param storage - The storage to delete\n\t */\n\tasync function deleteStorage(storage: IStorage) {\n\t\tawait axios.delete(getUrl(storage), {\n\t\t\tconfirmPassword: PwdConfirmationMode.Strict,\n\t\t})\n\n\t\tif (storage.type === 'personal') {\n\t\t\tuserStorages.value = userStorages.value.filter((s) => s.id !== storage.id)\n\t\t} else {\n\t\t\tglobalStorages.value = globalStorages.value.filter((s) => s.id !== storage.id)\n\t\t}\n\t}\n\n\t/**\n\t * Update an existing storage\n\t *\n\t * @param storage - The storage to update\n\t */\n\tasync function updateStorage(storage: IStorage) {\n\t\tconst { data } = await axios.put(\n\t\t\tgetUrl(storage),\n\t\t\ttoRaw(storage),\n\t\t\t{ confirmPassword: PwdConfirmationMode.Strict },\n\t\t)\n\n\t\toverrideStorage(parseStorage(data))\n\t}\n\n\t/**\n\t * Reload a storage from the server\n\t *\n\t * @param storage - The storage to reload\n\t */\n\tasync function reloadStorage(storage: IStorage) {\n\t\tconst { data } = await axios.get(getUrl(storage))\n\t\toverrideStorage(parseStorage(data))\n\t}\n\n\t// initialize the store\n\tinitialize()\n\n\treturn {\n\t\tglobalStorages,\n\t\tuserStorages,\n\n\t\tcreateGlobalStorage,\n\t\tcreateUserStorage,\n\t\tdeleteStorage,\n\t\treloadStorage,\n\t\tupdateStorage,\n\t}\n\n\t/**\n\t * @param type - The type of storages to load\n\t */\n\tasync function loadStorages(type: string) {\n\t\tconst url = `apps/files_external/${type}`\n\t\tconst { data } = await axios.get>(generateUrl(url))\n\t\treturn Object.values(data)\n\t\t\t.map(parseStorage)\n\t}\n\n\t/**\n\t * Load the storages based on the user role\n\t */\n\tasync function initialize() {\n\t\taddPasswordConfirmationInterceptors(axios)\n\n\t\tif (isAdmin) {\n\t\t\tglobalStorages.value = await loadStorages('globalstorages')\n\t\t} else {\n\t\t\tuserStorages.value = await loadStorages('userstorages')\n\t\t\tglobalStorages.value = await loadStorages('userglobalstorages')\n\t\t}\n\t}\n\n\t/**\n\t * @param storage - The storage to get the URL for\n\t */\n\tfunction getUrl(storage: IStorage) {\n\t\tconst type = storage.type === 'personal' ? 'userstorages' : 'globalstorages'\n\t\treturn generateUrl(`apps/files_external/${type}/${storage.id}`)\n\t}\n\n\t/**\n\t * Override a storage in the store\n\t *\n\t * @param storage - The storage save\n\t */\n\tfunction overrideStorage(storage: IStorage) {\n\t\tif (storage.type === 'personal') {\n\t\t\tconst index = userStorages.value.findIndex((s) => s.id === storage.id)\n\t\t\tuserStorages.value.splice(index, 1, storage)\n\t\t} else {\n\t\t\tconst index = globalStorages.value.findIndex((s) => s.id === storage.id)\n\t\t\tglobalStorages.value.splice(index, 1, storage)\n\t\t}\n\t}\n})\n\n/**\n * @param storage - The storage from API\n */\nfunction parseStorage(storage: IStorage) {\n\treturn {\n\t\t...storage,\n\t\tmountOptions: parseMountOptions(storage.mountOptions),\n\t}\n}\n\n/**\n * Parse the mount options and convert string boolean values to\n * actual booleans and numeric strings to numbers\n *\n * @param options - The mount options to parse\n */\nexport function parseMountOptions(options: IStorage['mountOptions']) {\n\tconst mountOptions = { ...options }\n\tmountOptions.encrypt = convertBooleanOptions(mountOptions.encrypt, true)\n\tmountOptions.previews = convertBooleanOptions(mountOptions.previews, true)\n\tmountOptions.enable_sharing = convertBooleanOptions(mountOptions.enable_sharing, false)\n\tmountOptions.filesystem_check_changes = typeof mountOptions.filesystem_check_changes === 'string'\n\t\t? Number.parseInt(mountOptions.filesystem_check_changes)\n\t\t: (mountOptions.filesystem_check_changes ?? MountOptionsCheckFilesystem.Never) // see default: https://github.com/nextcloud/server/blob/573104451bca64b4f1676933ac029583b4b69992/lib/private/Files/Storage/Common.php#L367\n\tmountOptions.encoding_compatibility = convertBooleanOptions(mountOptions.encoding_compatibility, false)\n\tmountOptions.readonly = convertBooleanOptions(mountOptions.readonly, false)\n\treturn mountOptions\n}\n\n/**\n * Convert backend encoding of boolean options\n *\n * @param option - The option value from API\n * @param fallback - The fallback (default) value\n */\nfunction convertBooleanOptions(option: unknown, fallback = false) {\n\tif (option === undefined) {\n\t\treturn fallback\n\t}\n\treturn option === true || option === 'true' || option === '1'\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createPinia } from 'pinia'\nimport { createApp } from 'vue'\nimport FilesExternalApp from './views/FilesExternalSettings.vue'\n\nconst pinia = createPinia()\nconst app = createApp(FilesExternalApp)\napp.config.idPrefix = 'files-external'\napp.use(pinia)\napp.mount('#files-external')\n"],"names":["svgAccountGroupOutline","displayNames","reactive","useUsers","uids","users","computed","toValue","uid","watchEffect","missingUsers","data","axios","generateUrl","displayName","useGroups","gids","mapGroupToUserData","gid","groups","_useModel","__props","entities","ref","selectedUsers","selectedGroups","model","value","u","g","debouncedSearch","useDebounceFn","onSearch","pattern","newEntries","e","id","_createBlock","_unref","NcSelectUsers","$event","t","modelValue","props","configuration","entries","option","ConfigurationFlag","customComponent","hasConfiguration","isLoadingCustomComponent","watch","key","ConfigurationType","onUpdateModelValue","event","config","_createElementBlock","_normalizeClass","$style","_createElementVNode","_Fragment","NcLoadingIcon","_resolveDynamicComponent","_openBlock","_renderList","configOption","configKey","ConfigurationEntry","_vShow","isAdmin","loadState","DEFAULT_MOUNT_OPTIONS","MountOptionsCheckFilesystem","useStorages","defineStore","globalStorages","userStorages","createGlobalStorage","storage","url","toRaw","PwdConfirmationMode","parseStorage","createUserStorage","deleteStorage","getUrl","s","updateStorage","overrideStorage","reloadStorage","initialize","loadStorages","type","addPasswordConfirmationInterceptors","index","parseMountOptions","options","mountOptions","convertBooleanOptions","fallback","hasEncryption","idButton","useId","idFieldset","isExpanded","checkFilesystemOptions","checkFilesystem","_createVNode","NcButton","_cache","NcIconSvgWrapper","mdiChevronDown","mdiChevronRight","_createTextVNode","NcSelect","NcCheckboxRadioSwitch","allowedBackendIds","backends","b","allAuthMechanisms","open","internalStorage","backend","authMechanisms","scheme","authMechanism","a","NcDialog","$emit","_toDisplayString","NcTextField","MountOptions","ApplicableEntities","BackendConfiguration","AuthMechanismConfiguration","store","backendName","authMechanismName","checkingStatus","status","StorageStatus","label","StorageStatusMessage","icon","StorageStatusIcons","isWarning","isError","onDelete","onEdit","spawnDialog","AddExternalStorageDialog","reloadStatus","_hoisted_1","_hoisted_2","group","NcChip","mdiAccountGroupOutline","user","NcUserBubble","mdiPencilOutline","mdiTrashCanOutline","mdiInformationOutline","storages","_hoisted_4","ExternalStorageTableRow","userMounting","availableBackends","allowUserMounting","allowedBackends","backupValue","showSuccess","showError","newValue","oldValue","settings","dependencyIssues","missingModules","showDialog","newStorage","addStorage","error","logger","NcSettingsSection","message","NcNoteCard","dependants","module","n","ExternalStorageTable","mdiPlus","UserMountSettings","globalCredentials","loading","username","password","onSubmit","NcPasswordField","ExternalStoragesSection","GlobalCredentialsSection","pinia","createPinia","app","createApp","FilesExternalApp"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"files_external-settings.mjs","sources":["../node_modules/@mdi/svg/svg/account-group-outline.svg?raw","../build/frontend/apps/files_external/src/composables/useEntities.ts","../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/ApplicableEntities.vue","../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/AuthMechanismConfiguration.vue","../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/BackendConfiguration.vue","../build/frontend/apps/files_external/src/store/storages.ts","../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/MountOptions.vue","../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/AddExternalStorageDialog.vue","../build/frontend/apps/files_external/src/components/ExternalStorageTableRow.vue","../build/frontend/apps/files_external/src/components/ExternalStorageTable.vue","../build/frontend/apps/files_external/src/components/UserMountSettings.vue","../build/frontend/apps/files_external/src/views/ExternalStoragesSection.vue","../build/frontend/apps/files_external/src/views/GlobalCredentialsSection.vue","../build/frontend/apps/files_external/src/views/FilesExternalSettings.vue","../build/frontend/apps/files_external/src/settings-main.ts"],"sourcesContent":["export default \"\"","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\n\nimport svgAccountGroupOutline from '@mdi/svg/svg/account-group-outline.svg?raw'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { computed, reactive, toValue, watchEffect } from 'vue'\n\nconst displayNames = reactive(new Map())\n\n/**\n * Fetch and provide user display names for given UIDs\n *\n * @param uids - The user ids to fetch display names for\n */\nexport function useUsers(uids: MaybeRefOrGetter) {\n\tconst users = computed(() => toValue(uids).map((uid) => ({\n\t\tid: `user:${uid}`,\n\t\tuser: uid,\n\t\tdisplayName: displayNames.get(uid) || uid,\n\t})))\n\n\twatchEffect(async () => {\n\t\tconst missingUsers = toValue(uids).filter((uid) => !displayNames.has(uid))\n\t\tif (missingUsers.length > 0) {\n\t\t\tconst { data } = await axios.post(generateUrl('/displaynames'), {\n\t\t\t\tusers: missingUsers,\n\t\t\t})\n\t\t\tfor (const [uid, displayName] of Object.entries(data.users)) {\n\t\t\t\tdisplayNames.set(uid, displayName as string)\n\t\t\t}\n\t\t}\n\t})\n\n\treturn users\n}\n\n/**\n * Map group ids to IUserData objects\n *\n * @param gids - The group ids to create entities for\n */\nexport function useGroups(gids: MaybeRefOrGetter) {\n\treturn computed(() => toValue(gids).map(mapGroupToUserData))\n}\n\n/**\n * Map a group id to an IUserData object\n *\n * @param gid - The group id to map\n */\nexport function mapGroupToUserData(gid: string) {\n\treturn {\n\t\tid: gid,\n\t\tisNoUser: true,\n\t\tdisplayName: gid,\n\t\ticonSvg: svgAccountGroupOutline,\n\t}\n}\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IMountOptions, IStorage } from '../types.ts'\n\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation'\nimport { generateUrl } from '@nextcloud/router'\nimport { defineStore } from 'pinia'\nimport { ref, toRaw } from 'vue'\nimport { MountOptionsCheckFilesystem } from '../types.ts'\n\nconst { isAdmin } = loadState<{ isAdmin: boolean }>('files_external', 'settings')\n\n/** The default mount options for NEW storages (not the defaults applied if a config is missing!) */\nexport const DEFAULT_MOUNT_OPTIONS: IMountOptions = Object.freeze({\n\tencrypt: true,\n\tpreviews: true,\n\tfilesystem_check_changes: MountOptionsCheckFilesystem.OncePerRequest,\n\tenable_sharing: false,\n\tencoding_compatibility: false,\n\treadonly: false,\n})\n\nexport const useStorages = defineStore('files_external--storages', () => {\n\tconst globalStorages = ref([])\n\tconst userStorages = ref([])\n\n\t/**\n\t * Create a new global storage\n\t *\n\t * @param storage - The storage to create\n\t */\n\tasync function createGlobalStorage(storage: Partial) {\n\t\tconst url = generateUrl('apps/files_external/globalstorages')\n\t\tconst { data } = await axios.post(\n\t\t\turl,\n\t\t\ttoRaw(storage),\n\t\t\t{ confirmPassword: PwdConfirmationMode.Strict },\n\t\t)\n\t\tglobalStorages.value.push(parseStorage(data))\n\t}\n\n\t/**\n\t * Create a new global storage\n\t *\n\t * @param storage - The storage to create\n\t */\n\tasync function createUserStorage(storage: Partial) {\n\t\tconst url = generateUrl('apps/files_external/userstorages')\n\t\tconst { data } = await axios.post(\n\t\t\turl,\n\t\t\ttoRaw(storage),\n\t\t\t{ confirmPassword: PwdConfirmationMode.Strict },\n\t\t)\n\t\tuserStorages.value.push(parseStorage(data))\n\t}\n\n\t/**\n\t * Delete a storage\n\t *\n\t * @param storage - The storage to delete\n\t */\n\tasync function deleteStorage(storage: IStorage) {\n\t\tawait axios.delete(getUrl(storage), {\n\t\t\tconfirmPassword: PwdConfirmationMode.Strict,\n\t\t})\n\n\t\tif (storage.type === 'personal') {\n\t\t\tuserStorages.value = userStorages.value.filter((s) => s.id !== storage.id)\n\t\t} else {\n\t\t\tglobalStorages.value = globalStorages.value.filter((s) => s.id !== storage.id)\n\t\t}\n\t}\n\n\t/**\n\t * Update an existing storage\n\t *\n\t * @param storage - The storage to update\n\t */\n\tasync function updateStorage(storage: IStorage) {\n\t\tconst { data } = await axios.put(\n\t\t\tgetUrl(storage),\n\t\t\ttoRaw(storage),\n\t\t\t{ confirmPassword: PwdConfirmationMode.Strict },\n\t\t)\n\n\t\toverrideStorage(parseStorage(data))\n\t}\n\n\t/**\n\t * Reload a storage from the server\n\t *\n\t * @param storage - The storage to reload\n\t */\n\tasync function reloadStorage(storage: IStorage) {\n\t\tconst { data } = await axios.get(getUrl(storage))\n\t\toverrideStorage(parseStorage(data))\n\t}\n\n\t// initialize the store\n\tinitialize()\n\n\treturn {\n\t\tglobalStorages,\n\t\tuserStorages,\n\n\t\tcreateGlobalStorage,\n\t\tcreateUserStorage,\n\t\tdeleteStorage,\n\t\treloadStorage,\n\t\tupdateStorage,\n\t}\n\n\t/**\n\t * @param type - The type of storages to load\n\t */\n\tasync function loadStorages(type: string) {\n\t\tconst url = `apps/files_external/${type}`\n\t\tconst { data } = await axios.get>(generateUrl(url))\n\t\treturn Object.values(data)\n\t\t\t.map(parseStorage)\n\t}\n\n\t/**\n\t * Load the storages based on the user role\n\t */\n\tasync function initialize() {\n\t\taddPasswordConfirmationInterceptors(axios)\n\n\t\tif (isAdmin) {\n\t\t\tglobalStorages.value = await loadStorages('globalstorages')\n\t\t} else {\n\t\t\tuserStorages.value = await loadStorages('userstorages')\n\t\t\tglobalStorages.value = await loadStorages('userglobalstorages')\n\t\t}\n\t}\n\n\t/**\n\t * @param storage - The storage to get the URL for\n\t */\n\tfunction getUrl(storage: IStorage) {\n\t\tconst type = storage.type === 'personal' ? 'userstorages' : 'globalstorages'\n\t\treturn generateUrl(`apps/files_external/${type}/${storage.id}`)\n\t}\n\n\t/**\n\t * Override a storage in the store\n\t *\n\t * @param storage - The storage save\n\t */\n\tfunction overrideStorage(storage: IStorage) {\n\t\tif (storage.type === 'personal') {\n\t\t\tconst index = userStorages.value.findIndex((s) => s.id === storage.id)\n\t\t\tuserStorages.value.splice(index, 1, storage)\n\t\t} else {\n\t\t\tconst index = globalStorages.value.findIndex((s) => s.id === storage.id)\n\t\t\tglobalStorages.value.splice(index, 1, storage)\n\t\t}\n\t}\n})\n\n/**\n * @param storage - The storage from API\n */\nfunction parseStorage(storage: IStorage) {\n\treturn {\n\t\t...storage,\n\t\tmountOptions: parseMountOptions(storage.mountOptions),\n\t}\n}\n\n/**\n * Parse the mount options and convert string boolean values to\n * actual booleans and numeric strings to numbers\n *\n * @param options - The mount options to parse\n */\nexport function parseMountOptions(options: IStorage['mountOptions']) {\n\tconst mountOptions = { ...options }\n\tmountOptions.encrypt = convertBooleanOptions(mountOptions.encrypt, true)\n\tmountOptions.previews = convertBooleanOptions(mountOptions.previews, true)\n\tmountOptions.enable_sharing = convertBooleanOptions(mountOptions.enable_sharing, false)\n\tmountOptions.filesystem_check_changes = typeof mountOptions.filesystem_check_changes === 'string'\n\t\t? Number.parseInt(mountOptions.filesystem_check_changes)\n\t\t: (mountOptions.filesystem_check_changes ?? MountOptionsCheckFilesystem.Never) // see default: https://github.com/nextcloud/server/blob/573104451bca64b4f1676933ac029583b4b69992/lib/private/Files/Storage/Common.php#L367\n\tmountOptions.encoding_compatibility = convertBooleanOptions(mountOptions.encoding_compatibility, false)\n\tmountOptions.readonly = convertBooleanOptions(mountOptions.readonly, false)\n\treturn mountOptions\n}\n\n/**\n * Convert backend encoding of boolean options\n *\n * @param option - The option value from API\n * @param fallback - The fallback (default) value\n */\nfunction convertBooleanOptions(option: unknown, fallback = false) {\n\tif (option === undefined) {\n\t\treturn fallback\n\t}\n\treturn option === true || option === 'true' || option === '1'\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createPinia } from 'pinia'\nimport { createApp } from 'vue'\nimport FilesExternalApp from './views/FilesExternalSettings.vue'\n\nconst pinia = createPinia()\nconst app = createApp(FilesExternalApp)\napp.config.idPrefix = 'files-external'\napp.use(pinia)\napp.mount('#files-external')\n"],"names":["svgAccountGroupOutline","displayNames","reactive","useUsers","uids","users","computed","toValue","uid","watchEffect","missingUsers","data","axios","generateUrl","displayName","useGroups","gids","mapGroupToUserData","gid","groups","_useModel","__props","entities","ref","selectedUsers","selectedGroups","model","value","u","g","debouncedSearch","useDebounceFn","onSearch","pattern","newEntries","e","id","_createBlock","_unref","NcSelectUsers","$event","t","modelValue","props","configuration","entries","option","ConfigurationFlag","customComponent","hasConfiguration","isLoadingCustomComponent","watch","key","ConfigurationType","onUpdateModelValue","event","config","_createElementBlock","_normalizeClass","$style","_createElementVNode","_Fragment","NcLoadingIcon","_resolveDynamicComponent","_openBlock","_renderList","configOption","configKey","ConfigurationEntry","_vShow","isAdmin","loadState","DEFAULT_MOUNT_OPTIONS","MountOptionsCheckFilesystem","useStorages","defineStore","globalStorages","userStorages","createGlobalStorage","storage","url","toRaw","PwdConfirmationMode","parseStorage","createUserStorage","deleteStorage","getUrl","s","updateStorage","overrideStorage","reloadStorage","initialize","loadStorages","type","addPasswordConfirmationInterceptors","index","parseMountOptions","options","mountOptions","convertBooleanOptions","fallback","hasEncryption","idButton","useId","idFieldset","isExpanded","checkFilesystemOptions","checkFilesystem","_createVNode","NcButton","_cache","NcIconSvgWrapper","mdiChevronDown","mdiChevronRight","_createTextVNode","NcSelect","NcCheckboxRadioSwitch","allowedBackendIds","backends","b","allAuthMechanisms","open","internalStorage","backend","authMechanisms","scheme","authMechanism","a","NcDialog","$emit","_toDisplayString","NcTextField","MountOptions","ApplicableEntities","BackendConfiguration","AuthMechanismConfiguration","store","backendName","authMechanismName","checkingStatus","status","StorageStatus","label","StorageStatusMessage","icon","StorageStatusIcons","isWarning","isError","onDelete","onEdit","spawnDialog","AddExternalStorageDialog","reloadStatus","_hoisted_1","_hoisted_2","group","NcChip","mdiAccountGroupOutline","user","NcUserBubble","mdiPencilOutline","mdiTrashCanOutline","mdiInformationOutline","storages","_hoisted_4","ExternalStorageTableRow","userMounting","availableBackends","allowUserMounting","allowedBackends","backupValue","showSuccess","showError","newValue","oldValue","settings","dependencyIssues","missingModules","showDialog","newStorage","addStorage","error","logger","NcSettingsSection","message","NcNoteCard","dependants","module","n","ExternalStorageTable","mdiPlus","UserMountSettings","globalCredentials","loading","username","password","onSubmit","NcPasswordField","ExternalStoragesSection","GlobalCredentialsSection","pinia","createPinia","app","createApp","FilesExternalApp"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/files_reminders-init.mjs b/dist/files_reminders-init.mjs index 8edff8a8cea21..77a162a533b1d 100644 --- a/dist/files_reminders-init.mjs +++ b/dist/files_reminders-init.mjs @@ -1,2 +1,2 @@ -import{a as l}from"./index-BGv_Bbjs.chunk.mjs";import{c as Q}from"./dav-DpOWisxz.chunk.mjs";import{c as B,f as D,g as X}from"./index-Cp0kcsps.chunk.mjs";import{b as O,t as i}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as W}from"./index-CkGt55pS.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import{N as J}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import{_ as ee}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as k}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import{N as te,s as re}from"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{N as M}from"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{b as ie,A as ae,S as ne,o as v,c as y,w as d,g as se,L as oe,k as b,u as n,j as m,t as u,h as A,l as c}from"./Web-DYqXJUev.chunk.mjs";import{a as f,d as N}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{_ as de}from"./public-C1mLBHT3.chunk.mjs";import"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";const le='';async function E(e,t){const r=B("/apps/files_reminders/api/v1/{fileId}",{fileId:e});return(await W.put(r,{dueDate:t.toISOString()})).data.ocs.data}async function Z(e){const t=B("/apps/files_reminders/api/v1/{fileId}",{fileId:e});return(await W.delete(t)).data.ocs.data}var p=(e=>(e.LaterToday="later-today",e.Tomorrow="tomorrow",e.ThisWeekend="this-weekend",e.NextWeek="next-week",e))(p||{});function F(){const e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-e.getDay()+1),new Date(e)}function I(e){new Date(e).setHours(0,0,0,0);const t=new Date(e.getFullYear(),0,1,0,0,0,0),r=(e.getTime()-t.getTime())/864e5;return Math.ceil((r+t.getDay()+1)/7)}function me(e,t){return I(e)===I(t)&&e.getFullYear()===t.getFullYear()}function ue(e,t){return e.getDate()===t.getDate()&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}function _(e){return{"later-today":()=>{const t=new Date,r=new Date;r.setHours(18,0,0,0);const s=new Date;return s.setHours(17,0,0,0),t>=s?null:r},tomorrow:()=>{const t=new Date,r=new Date;return r.setDate(t.getDate()+1),r.setHours(8,0,0,0),r},"this-weekend":()=>{const t=new Date;if([5,6,0].includes(t.getDay()))return null;const r=new Date,s=F();return r.setDate(s.getDate()+5),r.setHours(8,0,0,0),r},"next-week":()=>{if(new Date().getDay()===0)return null;const t=new Date,r=F();return t.setDate(r.getDate()+7),t.setHours(8,0,0,0),t}}[e]()}function ce(){const e=new Date,t=new Date;return t.setHours(e.getHours()+2,0,0,0),t}function V(e){let t={hour:"numeric",minute:"2-digit"};const r=new Date;return ue(e,r)||(t={...t,weekday:"short"}),me(e,r)||(t={...t,month:"short",day:"numeric"}),e.getFullYear()!==r.getFullYear()&&(t={...t,year:"numeric"}),e.toLocaleString(O(),t)}function L(e){let t={month:"long",day:"numeric",weekday:"long",hour:"numeric",minute:"2-digit"};const r=new Date;return e.getFullYear()!==r.getFullYear()&&(t={...t,year:"numeric"}),e.toLocaleString(O(),t)}const fe={id:"clear-reminder",displayName:()=>i("files_reminders","Clear reminder"),title:({nodes:e})=>{const t=e.at(0),r=new Date(t.attributes["reminder-due-date"]);return`${i("files_reminders","Clear reminder")} – ${L(r)}`},iconSvgInline:()=>le,enabled:({nodes:e})=>e.length!==1?!1:!!e.at(0).attributes["reminder-due-date"],async exec({nodes:e}){const t=e.at(0);if(t.fileid)try{return await Z(t.fileid),t.attributes["reminder-due-date"]="",D("files:node:updated",t),!0}catch{return!1}return null},order:19},U='',h=X().setApp("files_reminders").detectUser().build(),pe=ie({__name:"SetCustomReminderModal",props:{node:{}},emits:["close"],setup(e,{emit:t}){const r=e,s=t,S=c(!1),C=c(!1),g=c(!0),o=c(),x=c(new Date);ae(()=>{const a=r.node.attributes["reminder-due-date"]?new Date(r.node.attributes["reminder-due-date"]):void 0;S.value=!!a,g.value=!0,C.value=!0,o.value=a??ce(),x.value=new Date}),ne(()=>{const a=document.getElementById("set-custom-reminder");a.focus(),S.value||a.showPicker()});async function q(){if(!(o.value instanceof Date)||isNaN(o.value.getTime())){f(i("files_reminders","Please choose a valid date & time"));return}try{await E(r.node.fileid,o.value);const a=r.node.clone();a.attributes["reminder-due-date"]=o.value.toISOString(),D("files:node:updated",a),N(i("files_reminders",'Reminder set for "{fileName}"',{fileName:r.node.displayname})),w()}catch(a){h.error("Failed to set reminder",{error:a}),f(i("files_reminders","Failed to set reminder"))}}async function z(){try{await Z(r.node.fileid);const a=r.node.clone();a.attributes["reminder-due-date"]="",D("files:node:updated",a),N(i("files_reminders",'Reminder cleared for "{fileName}"',{fileName:r.node.displayname})),w()}catch(a){h.error("Failed to clear reminder",{error:a}),f(i("files_reminders","Failed to clear reminder"))}}function w(){C.value=!1,s("close")}function G(){const a=document.getElementById("set-custom-reminder");g.value=a.checkValidity()}return(a,H)=>C.value?(v(),y(n(te),{key:0,name:n(i)("files_reminders","Set reminder for '{fileName}'",{fileName:e.node.displayname}),outTransition:"",size:"small",closeOnClickOutside:"",onClosing:w},{actions:d(()=>[b(n(k),{variant:"tertiary",onClick:w},{default:d(()=>[m(u(n(i)("files_reminders","Cancel")),1)]),_:1}),S.value?(v(),y(n(k),{key:0,onClick:z},{default:d(()=>[m(u(n(i)("files_reminders","Clear reminder")),1)]),_:1})):A("",!0),b(n(k),{disabled:!g.value,variant:"primary",form:"set-custom-reminder-form",type:"submit"},{default:d(()=>[m(u(n(i)("files_reminders","Set reminder")),1)]),_:1},8,["disabled"])]),default:d(()=>[se("form",{id:"set-custom-reminder-form",class:"custom-reminder-modal",onSubmit:oe(q,["prevent"])},[b(n(J),{id:"set-custom-reminder",modelValue:o.value,"onUpdate:modelValue":H[0]||(H[0]=K=>o.value=K),label:n(i)("files_reminders","Reminder at custom date & time"),min:x.value,required:!0,type:"datetime-local",onInput:G},null,8,["modelValue","label","min"]),g.value&&o.value?(v(),y(n(M),{key:0,type:"info"},{default:d(()=>[m(u(n(i)("files_reminders","We will remind you of this file"))+" ",1),b(n(ee),{timestamp:o.value},null,8,["timestamp"])]),_:1})):(v(),y(n(M),{key:1,type:"error"},{default:d(()=>[m(u(n(i)("files_reminders","Please choose a valid date & time")),1)]),_:1}))],32)]),_:1},8,["name"])):A("",!0)}}),ge=de(pe,[["__scopeId","data-v-1cc1857f"]]);async function j(e){await re(ge,{node:e})}const we={id:"reminder-status",inline:()=>!0,displayName:()=>"",title:({nodes:e})=>{const t=e.at(0),r=new Date(t.attributes["reminder-due-date"]);return`${i("files_reminders","Reminder set")} – ${L(r)}`},iconSvgInline:()=>U,enabled:({nodes:e})=>e.length!==1?!1:!!e.at(0).attributes["reminder-due-date"],async exec({nodes:e}){const t=e.at(0);return await j(t),null},order:-15},ve='',T="set-reminder-menu",ye={id:T,displayName:()=>i("files_reminders","Set reminder"),iconSvgInline:()=>U,enabled:({nodes:e,view:t})=>t.id==="trashbin"||e.length!==1?!1:e.at(0).attributes["reminder-due-date"]!==void 0,async exec(){return null},order:20},be={id:"set-reminder-custom",displayName:()=>i("files_reminders","Custom reminder"),title:()=>i("files_reminders","Reminder at custom date & time"),iconSvgInline:()=>ve,enabled:({nodes:e,view:t})=>t.id==="trashbin"||e.length!==1?!1:e.at(0).attributes["reminder-due-date"]!==void 0,parent:T,async exec({nodes:e}){const t=e.at(0);return j(t),null},order:22},P={dateTimePreset:p.LaterToday,label:i("files_reminders","Later today"),ariaLabel:i("files_reminders","Set reminder for later today"),dateString:"",verboseDateString:""},Y={dateTimePreset:p.Tomorrow,label:i("files_reminders","Tomorrow"),ariaLabel:i("files_reminders","Set reminder for tomorrow"),dateString:"",verboseDateString:""},$={dateTimePreset:p.ThisWeekend,label:i("files_reminders","This weekend"),ariaLabel:i("files_reminders","Set reminder for this weekend"),dateString:"",verboseDateString:""},R={dateTimePreset:p.NextWeek,label:i("files_reminders","Next week"),ariaLabel:i("files_reminders","Set reminder for next week"),dateString:"",verboseDateString:""};function De(){return[P,Y,$,R].forEach(e=>{const t=_(e.dateTimePreset);t&&(e.dateString=V(t),e.verboseDateString=L(t),setInterval(()=>{const r=_(e.dateTimePreset);r&&(e.dateString=V(r),e.verboseDateString=L(r))},1e3*30*60))}),[P,Y,$,R].map(_e)}function _e(e){return{id:`set-reminder-${e.dateTimePreset}`,displayName:()=>`${e.label} – ${e.dateString}`,title:()=>`${e.ariaLabel} – ${e.verboseDateString}`,iconSvgInline:()=>"",enabled:({nodes:t,view:r})=>r.id==="trashbin"||t.length!==1?!1:t.at(0).attributes["reminder-due-date"]!==void 0&&!!_(e.dateTimePreset),parent:T,async exec({nodes:t}){const r=t.at(0);if(!r.fileid)return h.error("Failed to set reminder, missing file id"),f(i("files_reminders","Failed to set reminder")),null;try{const s=_(e.dateTimePreset);await E(r.fileid,s),r.attributes["reminder-due-date"]=s.toISOString(),D("files:node:updated",r),N(i("files_reminders",'Reminder set for "{fileName}"',{fileName:r.basename}))}catch(s){h.error("Failed to set reminder",{error:s}),f(i("files_reminders","Failed to set reminder"))}return null},order:21}}Q("nc:reminder-due-date",{nc:"http://nextcloud.org/ns"}),l(we),l(fe),l(ye),l(be),De().forEach(l); +import{a as l}from"./index-BGv_Bbjs.chunk.mjs";import{c as Q}from"./dav-DpOWisxz.chunk.mjs";import{c as B,f as D,g as X}from"./index-Cp0kcsps.chunk.mjs";import{b as O,t as i}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as W}from"./index-CkGt55pS.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import{N as J}from"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import{_ as ee}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as k}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import{N as te,s as re}from"./index-CmDAUQql.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{N as M}from"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{b as ie,A as ae,S as ne,o as v,c as y,w as d,g as se,L as oe,k as b,u as n,j as m,t as u,h as A,l as c}from"./Web-DYqXJUev.chunk.mjs";import{a as f,d as N}from"./index-mH69OG7L.chunk.mjs";import{_ as de}from"./public-C1mLBHT3.chunk.mjs";import"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";const le='';async function E(e,t){const r=B("/apps/files_reminders/api/v1/{fileId}",{fileId:e});return(await W.put(r,{dueDate:t.toISOString()})).data.ocs.data}async function Z(e){const t=B("/apps/files_reminders/api/v1/{fileId}",{fileId:e});return(await W.delete(t)).data.ocs.data}var p=(e=>(e.LaterToday="later-today",e.Tomorrow="tomorrow",e.ThisWeekend="this-weekend",e.NextWeek="next-week",e))(p||{});function F(){const e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-e.getDay()+1),new Date(e)}function I(e){new Date(e).setHours(0,0,0,0);const t=new Date(e.getFullYear(),0,1,0,0,0,0),r=(e.getTime()-t.getTime())/864e5;return Math.ceil((r+t.getDay()+1)/7)}function me(e,t){return I(e)===I(t)&&e.getFullYear()===t.getFullYear()}function ue(e,t){return e.getDate()===t.getDate()&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}function _(e){return{"later-today":()=>{const t=new Date,r=new Date;r.setHours(18,0,0,0);const s=new Date;return s.setHours(17,0,0,0),t>=s?null:r},tomorrow:()=>{const t=new Date,r=new Date;return r.setDate(t.getDate()+1),r.setHours(8,0,0,0),r},"this-weekend":()=>{const t=new Date;if([5,6,0].includes(t.getDay()))return null;const r=new Date,s=F();return r.setDate(s.getDate()+5),r.setHours(8,0,0,0),r},"next-week":()=>{if(new Date().getDay()===0)return null;const t=new Date,r=F();return t.setDate(r.getDate()+7),t.setHours(8,0,0,0),t}}[e]()}function ce(){const e=new Date,t=new Date;return t.setHours(e.getHours()+2,0,0,0),t}function V(e){let t={hour:"numeric",minute:"2-digit"};const r=new Date;return ue(e,r)||(t={...t,weekday:"short"}),me(e,r)||(t={...t,month:"short",day:"numeric"}),e.getFullYear()!==r.getFullYear()&&(t={...t,year:"numeric"}),e.toLocaleString(O(),t)}function L(e){let t={month:"long",day:"numeric",weekday:"long",hour:"numeric",minute:"2-digit"};const r=new Date;return e.getFullYear()!==r.getFullYear()&&(t={...t,year:"numeric"}),e.toLocaleString(O(),t)}const fe={id:"clear-reminder",displayName:()=>i("files_reminders","Clear reminder"),title:({nodes:e})=>{const t=e.at(0),r=new Date(t.attributes["reminder-due-date"]);return`${i("files_reminders","Clear reminder")} – ${L(r)}`},iconSvgInline:()=>le,enabled:({nodes:e})=>e.length!==1?!1:!!e.at(0).attributes["reminder-due-date"],async exec({nodes:e}){const t=e.at(0);if(t.fileid)try{return await Z(t.fileid),t.attributes["reminder-due-date"]="",D("files:node:updated",t),!0}catch{return!1}return null},order:19},U='',h=X().setApp("files_reminders").detectUser().build(),pe=ie({__name:"SetCustomReminderModal",props:{node:{}},emits:["close"],setup(e,{emit:t}){const r=e,s=t,S=c(!1),C=c(!1),g=c(!0),o=c(),x=c(new Date);ae(()=>{const a=r.node.attributes["reminder-due-date"]?new Date(r.node.attributes["reminder-due-date"]):void 0;S.value=!!a,g.value=!0,C.value=!0,o.value=a??ce(),x.value=new Date}),ne(()=>{const a=document.getElementById("set-custom-reminder");a.focus(),S.value||a.showPicker()});async function q(){if(!(o.value instanceof Date)||isNaN(o.value.getTime())){f(i("files_reminders","Please choose a valid date & time"));return}try{await E(r.node.fileid,o.value);const a=r.node.clone();a.attributes["reminder-due-date"]=o.value.toISOString(),D("files:node:updated",a),N(i("files_reminders",'Reminder set for "{fileName}"',{fileName:r.node.displayname})),w()}catch(a){h.error("Failed to set reminder",{error:a}),f(i("files_reminders","Failed to set reminder"))}}async function z(){try{await Z(r.node.fileid);const a=r.node.clone();a.attributes["reminder-due-date"]="",D("files:node:updated",a),N(i("files_reminders",'Reminder cleared for "{fileName}"',{fileName:r.node.displayname})),w()}catch(a){h.error("Failed to clear reminder",{error:a}),f(i("files_reminders","Failed to clear reminder"))}}function w(){C.value=!1,s("close")}function G(){const a=document.getElementById("set-custom-reminder");g.value=a.checkValidity()}return(a,H)=>C.value?(v(),y(n(te),{key:0,name:n(i)("files_reminders","Set reminder for '{fileName}'",{fileName:e.node.displayname}),outTransition:"",size:"small",closeOnClickOutside:"",onClosing:w},{actions:d(()=>[b(n(k),{variant:"tertiary",onClick:w},{default:d(()=>[m(u(n(i)("files_reminders","Cancel")),1)]),_:1}),S.value?(v(),y(n(k),{key:0,onClick:z},{default:d(()=>[m(u(n(i)("files_reminders","Clear reminder")),1)]),_:1})):A("",!0),b(n(k),{disabled:!g.value,variant:"primary",form:"set-custom-reminder-form",type:"submit"},{default:d(()=>[m(u(n(i)("files_reminders","Set reminder")),1)]),_:1},8,["disabled"])]),default:d(()=>[se("form",{id:"set-custom-reminder-form",class:"custom-reminder-modal",onSubmit:oe(q,["prevent"])},[b(n(J),{id:"set-custom-reminder",modelValue:o.value,"onUpdate:modelValue":H[0]||(H[0]=K=>o.value=K),label:n(i)("files_reminders","Reminder at custom date & time"),min:x.value,required:!0,type:"datetime-local",onInput:G},null,8,["modelValue","label","min"]),g.value&&o.value?(v(),y(n(M),{key:0,type:"info"},{default:d(()=>[m(u(n(i)("files_reminders","We will remind you of this file"))+" ",1),b(n(ee),{timestamp:o.value},null,8,["timestamp"])]),_:1})):(v(),y(n(M),{key:1,type:"error"},{default:d(()=>[m(u(n(i)("files_reminders","Please choose a valid date & time")),1)]),_:1}))],32)]),_:1},8,["name"])):A("",!0)}}),ge=de(pe,[["__scopeId","data-v-1cc1857f"]]);async function j(e){await re(ge,{node:e})}const we={id:"reminder-status",inline:()=>!0,displayName:()=>"",title:({nodes:e})=>{const t=e.at(0),r=new Date(t.attributes["reminder-due-date"]);return`${i("files_reminders","Reminder set")} – ${L(r)}`},iconSvgInline:()=>U,enabled:({nodes:e})=>e.length!==1?!1:!!e.at(0).attributes["reminder-due-date"],async exec({nodes:e}){const t=e.at(0);return await j(t),null},order:-15},ve='',T="set-reminder-menu",ye={id:T,displayName:()=>i("files_reminders","Set reminder"),iconSvgInline:()=>U,enabled:({nodes:e,view:t})=>t.id==="trashbin"||e.length!==1?!1:e.at(0).attributes["reminder-due-date"]!==void 0,async exec(){return null},order:20},be={id:"set-reminder-custom",displayName:()=>i("files_reminders","Custom reminder"),title:()=>i("files_reminders","Reminder at custom date & time"),iconSvgInline:()=>ve,enabled:({nodes:e,view:t})=>t.id==="trashbin"||e.length!==1?!1:e.at(0).attributes["reminder-due-date"]!==void 0,parent:T,async exec({nodes:e}){const t=e.at(0);return j(t),null},order:22},P={dateTimePreset:p.LaterToday,label:i("files_reminders","Later today"),ariaLabel:i("files_reminders","Set reminder for later today"),dateString:"",verboseDateString:""},Y={dateTimePreset:p.Tomorrow,label:i("files_reminders","Tomorrow"),ariaLabel:i("files_reminders","Set reminder for tomorrow"),dateString:"",verboseDateString:""},$={dateTimePreset:p.ThisWeekend,label:i("files_reminders","This weekend"),ariaLabel:i("files_reminders","Set reminder for this weekend"),dateString:"",verboseDateString:""},R={dateTimePreset:p.NextWeek,label:i("files_reminders","Next week"),ariaLabel:i("files_reminders","Set reminder for next week"),dateString:"",verboseDateString:""};function De(){return[P,Y,$,R].forEach(e=>{const t=_(e.dateTimePreset);t&&(e.dateString=V(t),e.verboseDateString=L(t),setInterval(()=>{const r=_(e.dateTimePreset);r&&(e.dateString=V(r),e.verboseDateString=L(r))},1e3*30*60))}),[P,Y,$,R].map(_e)}function _e(e){return{id:`set-reminder-${e.dateTimePreset}`,displayName:()=>`${e.label} – ${e.dateString}`,title:()=>`${e.ariaLabel} – ${e.verboseDateString}`,iconSvgInline:()=>"",enabled:({nodes:t,view:r})=>r.id==="trashbin"||t.length!==1?!1:t.at(0).attributes["reminder-due-date"]!==void 0&&!!_(e.dateTimePreset),parent:T,async exec({nodes:t}){const r=t.at(0);if(!r.fileid)return h.error("Failed to set reminder, missing file id"),f(i("files_reminders","Failed to set reminder")),null;try{const s=_(e.dateTimePreset);await E(r.fileid,s),r.attributes["reminder-due-date"]=s.toISOString(),D("files:node:updated",r),N(i("files_reminders",'Reminder set for "{fileName}"',{fileName:r.basename}))}catch(s){h.error("Failed to set reminder",{error:s}),f(i("files_reminders","Failed to set reminder"))}return null},order:21}}Q("nc:reminder-due-date",{nc:"http://nextcloud.org/ns"}),l(we),l(fe),l(ye),l(be),De().forEach(l); //# sourceMappingURL=files_reminders-init.mjs.map diff --git a/dist/files_reminders-init.mjs.map b/dist/files_reminders-init.mjs.map index 4d7295ab8bd9e..dbcc41354a0ca 100644 --- a/dist/files_reminders-init.mjs.map +++ b/dist/files_reminders-init.mjs.map @@ -1 +1 @@ -{"version":3,"file":"files_reminders-init.mjs","sources":["../node_modules/@mdi/svg/svg/alarm-off.svg?raw","../build/frontend/apps/files_reminders/src/services/reminderService.ts","../build/frontend/apps/files_reminders/src/shared/utils.ts","../build/frontend/apps/files_reminders/src/files_actions/clearReminderAction.ts","../node_modules/@mdi/svg/svg/alarm.svg?raw","../build/frontend/apps/files_reminders/src/shared/logger.ts","../build/frontend/apps/files_reminders/src/components/SetCustomReminderModal.vue","../build/frontend/apps/files_reminders/src/services/customPicker.ts","../build/frontend/apps/files_reminders/src/files_actions/reminderStatusAction.ts","../node_modules/@mdi/svg/svg/calendar-clock.svg?raw","../build/frontend/apps/files_reminders/src/files_actions/setReminderMenuAction.ts","../build/frontend/apps/files_reminders/src/files_actions/setReminderCustomAction.ts","../build/frontend/apps/files_reminders/src/files_actions/setReminderSuggestionActions.ts","../build/frontend/apps/files_reminders/src/files-init.ts"],"sourcesContent":["export default \"\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\ninterface Reminder {\n\tdueDate: null | Date\n}\n\n/**\n * Get the reminder for a specific file\n *\n * @param fileId - The file id to get the reminder for\n */\nexport async function getReminder(fileId: number): Promise {\n\tconst url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })\n\tconst response = await axios.get(url)\n\tconst dueDate = response.data.ocs.data.dueDate ? new Date(response.data.ocs.data.dueDate) : null\n\n\treturn {\n\t\tdueDate,\n\t}\n}\n\n/**\n * Set a reminder for a specific file\n *\n * @param fileId - The file id to set the reminder for\n * @param dueDate - The due date for the reminder\n */\nexport async function setReminder(fileId: number, dueDate: Date): Promise<[]> {\n\tconst url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })\n\n\tconst response = await axios.put(url, {\n\t\tdueDate: dueDate.toISOString(), // timezone of string is always UTC\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Clear the reminder for a specific file\n *\n * @param fileId - The file id to clear the reminder for\n */\nexport async function clearReminder(fileId: number): Promise<[]> {\n\tconst url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })\n\tconst response = await axios.delete(url)\n\n\treturn response.data.ocs.data\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCanonicalLocale } from '@nextcloud/l10n'\n\nexport enum DateTimePreset {\n\tLaterToday = 'later-today',\n\tTomorrow = 'tomorrow',\n\tThisWeekend = 'this-weekend',\n\tNextWeek = 'next-week',\n}\n\n/**\n *\n */\nfunction getFirstWorkdayOfWeek() {\n\tconst now = new Date()\n\tnow.setHours(0, 0, 0, 0)\n\tnow.setDate(now.getDate() - now.getDay() + 1)\n\treturn new Date(now)\n}\n\n/**\n * @param date - The date to get the week number for\n */\nfunction getWeek(date: Date) {\n\tconst dateClone = new Date(date)\n\tdateClone.setHours(0, 0, 0, 0)\n\tconst firstDayOfYear = new Date(date.getFullYear(), 0, 1, 0, 0, 0, 0)\n\tconst daysFromFirstDay = (date.getTime() - firstDayOfYear.getTime()) / 86400000\n\treturn Math.ceil((daysFromFirstDay + firstDayOfYear.getDay() + 1) / 7)\n}\n\n/**\n * @param a - First date\n * @param b - Second date\n */\nfunction isSameWeek(a: Date, b: Date) {\n\treturn getWeek(a) === getWeek(b)\n\t\t&& a.getFullYear() === b.getFullYear()\n}\n\n/**\n * @param a - First date\n * @param b - Second date\n */\nfunction isSameDate(a: Date, b: Date) {\n\treturn a.getDate() === b.getDate()\n\t\t&& a.getMonth() === b.getMonth()\n\t\t&& a.getFullYear() === b.getFullYear()\n}\n\n/**\n * @param dateTime - The preset to get the date for\n */\nexport function getDateTime(dateTime: DateTimePreset): null | Date {\n\tconst matchPreset: Record null | Date> = {\n\t\t[DateTimePreset.LaterToday]: () => {\n\t\t\tconst now = new Date()\n\t\t\tconst evening = new Date()\n\t\t\tevening.setHours(18, 0, 0, 0)\n\t\t\tconst cutoff = new Date()\n\t\t\tcutoff.setHours(17, 0, 0, 0)\n\t\t\tif (now >= cutoff) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn evening\n\t\t},\n\n\t\t[DateTimePreset.Tomorrow]: () => {\n\t\t\tconst now = new Date()\n\t\t\tconst day = new Date()\n\t\t\tday.setDate(now.getDate() + 1)\n\t\t\tday.setHours(8, 0, 0, 0)\n\t\t\treturn day\n\t\t},\n\n\t\t[DateTimePreset.ThisWeekend]: () => {\n\t\t\tconst today = new Date()\n\t\t\tif (\n\t\t\t\t[\n\t\t\t\t\t5, // Friday\n\t\t\t\t\t6, // Saturday\n\t\t\t\t\t0, // Sunday\n\t\t\t\t].includes(today.getDay())\n\t\t\t) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tconst saturday = new Date()\n\t\t\tconst firstWorkdayOfWeek = getFirstWorkdayOfWeek()\n\t\t\tsaturday.setDate(firstWorkdayOfWeek.getDate() + 5)\n\t\t\tsaturday.setHours(8, 0, 0, 0)\n\t\t\treturn saturday\n\t\t},\n\n\t\t[DateTimePreset.NextWeek]: () => {\n\t\t\tconst today = new Date()\n\t\t\tif (today.getDay() === 0) { // Sunday\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tconst workday = new Date()\n\t\t\tconst firstWorkdayOfWeek = getFirstWorkdayOfWeek()\n\t\t\tworkday.setDate(firstWorkdayOfWeek.getDate() + 7)\n\t\t\tworkday.setHours(8, 0, 0, 0)\n\t\t\treturn workday\n\t\t},\n\t}\n\n\treturn matchPreset[dateTime]()\n}\n\n/**\n *\n */\nexport function getInitialCustomDueDate(): Date {\n\tconst now = new Date()\n\tconst dueDate = new Date()\n\tdueDate.setHours(now.getHours() + 2, 0, 0, 0)\n\treturn dueDate\n}\n\n/**\n * @param dueDate - The date to format as a string\n */\nexport function getDateString(dueDate: Date): string {\n\tlet formatOptions: Intl.DateTimeFormatOptions = {\n\t\thour: 'numeric',\n\t\tminute: '2-digit',\n\t}\n\n\tconst today = new Date()\n\n\tif (!isSameDate(dueDate, today)) {\n\t\tformatOptions = {\n\t\t\t...formatOptions,\n\t\t\tweekday: 'short',\n\t\t}\n\t}\n\n\tif (!isSameWeek(dueDate, today)) {\n\t\tformatOptions = {\n\t\t\t...formatOptions,\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t}\n\t}\n\n\tif (dueDate.getFullYear() !== today.getFullYear()) {\n\t\tformatOptions = {\n\t\t\t...formatOptions,\n\t\t\tyear: 'numeric',\n\t\t}\n\t}\n\n\treturn dueDate.toLocaleString(\n\t\tgetCanonicalLocale(),\n\t\tformatOptions,\n\t)\n}\n\n/**\n * @param dueDate - The date to format as a string\n */\nexport function getVerboseDateString(dueDate: Date): string {\n\tlet formatOptions: Intl.DateTimeFormatOptions = {\n\t\tmonth: 'long',\n\t\tday: 'numeric',\n\t\tweekday: 'long',\n\t\thour: 'numeric',\n\t\tminute: '2-digit',\n\t}\n\n\tconst today = new Date()\n\n\tif (dueDate.getFullYear() !== today.getFullYear()) {\n\t\tformatOptions = {\n\t\t\t...formatOptions,\n\t\t\tyear: 'numeric',\n\t\t}\n\t}\n\n\treturn dueDate.toLocaleString(\n\t\tgetCanonicalLocale(),\n\t\tformatOptions,\n\t)\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport AlarmOffSvg from '@mdi/svg/svg/alarm-off.svg?raw'\nimport { emit } from '@nextcloud/event-bus'\nimport { t } from '@nextcloud/l10n'\nimport { clearReminder } from '../services/reminderService.ts'\nimport { getVerboseDateString } from '../shared/utils.ts'\n\nexport const action: IFileAction = {\n\tid: 'clear-reminder',\n\n\tdisplayName: () => t('files_reminders', 'Clear reminder'),\n\n\ttitle: ({ nodes }) => {\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = new Date(node.attributes['reminder-due-date'])\n\t\treturn `${t('files_reminders', 'Clear reminder')} – ${getVerboseDateString(dueDate)}`\n\t},\n\n\ticonSvgInline: () => AlarmOffSvg,\n\n\tenabled: ({ nodes }) => {\n\t\t// Only allow on a single node\n\t\tif (nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = node.attributes['reminder-due-date']\n\t\treturn Boolean(dueDate)\n\t},\n\n\tasync exec({ nodes }) {\n\t\tconst node = nodes.at(0)!\n\t\tif (node.fileid) {\n\t\t\ttry {\n\t\t\t\tawait clearReminder(node.fileid)\n\t\t\t\tnode.attributes['reminder-due-date'] = ''\n\t\t\t\temit('files:node:updated', node)\n\t\t\t\treturn true\n\t\t\t} catch {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn null\n\t},\n\n\torder: 19,\n}\n","export default \"\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.setApp('files_reminders')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\n\nimport { spawnDialog } from '@nextcloud/vue'\nimport SetCustomReminderModal from '../components/SetCustomReminderModal.vue'\n\n/**\n * @param node - The file or folder node to set the custom reminder for\n */\nexport async function pickCustomDate(node: INode): Promise {\n\tawait spawnDialog(SetCustomReminderModal, {\n\t\tnode,\n\t})\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport AlarmSvg from '@mdi/svg/svg/alarm.svg?raw'\nimport { t } from '@nextcloud/l10n'\nimport { pickCustomDate } from '../services/customPicker.ts'\nimport { getVerboseDateString } from '../shared/utils.ts'\n\nexport const action: IFileAction = {\n\tid: 'reminder-status',\n\n\tinline: () => true,\n\n\tdisplayName: () => '',\n\n\ttitle: ({ nodes }) => {\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = new Date(node.attributes['reminder-due-date'])\n\t\treturn `${t('files_reminders', 'Reminder set')} – ${getVerboseDateString(dueDate)}`\n\t},\n\n\ticonSvgInline: () => AlarmSvg,\n\n\tenabled: ({ nodes }) => {\n\t\t// Only allow on a single node\n\t\tif (nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = node.attributes['reminder-due-date']\n\t\treturn Boolean(dueDate)\n\t},\n\n\tasync exec({ nodes }) {\n\t\tconst node = nodes.at(0)!\n\t\tawait pickCustomDate(node)\n\t\treturn null\n\t},\n\n\torder: -15,\n}\n","export default \"\"","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport AlarmSvg from '@mdi/svg/svg/alarm.svg?raw'\nimport { translate as t } from '@nextcloud/l10n'\n\nexport const SET_REMINDER_MENU_ID = 'set-reminder-menu'\n\nexport const action: IFileAction = {\n\tid: SET_REMINDER_MENU_ID,\n\tdisplayName: () => t('files_reminders', 'Set reminder'),\n\ticonSvgInline: () => AlarmSvg,\n\n\tenabled: ({ nodes, view }) => {\n\t\tif (view.id === 'trashbin') {\n\t\t\treturn false\n\t\t}\n\t\t// Only allow on a single INode\n\t\tif (nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = node.attributes['reminder-due-date']\n\t\treturn dueDate !== undefined\n\t},\n\n\tasync exec() {\n\t\treturn null\n\t},\n\n\torder: 20,\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport CalendarClockSvg from '@mdi/svg/svg/calendar-clock.svg?raw'\nimport { t } from '@nextcloud/l10n'\nimport { pickCustomDate } from '../services/customPicker.ts'\nimport { SET_REMINDER_MENU_ID } from './setReminderMenuAction.ts'\n\nexport const action: IFileAction = {\n\tid: 'set-reminder-custom',\n\tdisplayName: () => t('files_reminders', 'Custom reminder'),\n\ttitle: () => t('files_reminders', 'Reminder at custom date & time'),\n\ticonSvgInline: () => CalendarClockSvg,\n\n\tenabled: ({ nodes, view }) => {\n\t\tif (view.id === 'trashbin') {\n\t\t\treturn false\n\t\t}\n\t\t// Only allow on a single INode\n\t\tif (nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = node.attributes['reminder-due-date']\n\t\treturn dueDate !== undefined\n\t},\n\n\tparent: SET_REMINDER_MENU_ID,\n\n\tasync exec({ nodes }) {\n\t\tconst node = nodes.at(0)!\n\t\tpickCustomDate(node)\n\t\treturn null\n\t},\n\n\t// After presets\n\torder: 22,\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { t } from '@nextcloud/l10n'\nimport { setReminder } from '../services/reminderService.ts'\nimport { logger } from '../shared/logger.ts'\nimport { DateTimePreset, getDateString, getDateTime, getVerboseDateString } from '../shared/utils.ts'\nimport { SET_REMINDER_MENU_ID } from './setReminderMenuAction.ts'\n\nimport './setReminderSuggestionActions.scss'\n\ninterface ReminderOption {\n\tdateTimePreset: DateTimePreset\n\tlabel: string\n\tariaLabel: string\n\tdateString?: string\n\tverboseDateString?: string\n\taction?: () => Promise\n}\n\nconst laterToday: ReminderOption = {\n\tdateTimePreset: DateTimePreset.LaterToday,\n\tlabel: t('files_reminders', 'Later today'),\n\tariaLabel: t('files_reminders', 'Set reminder for later today'),\n\tdateString: '',\n\tverboseDateString: '',\n}\n\nconst tomorrow: ReminderOption = {\n\tdateTimePreset: DateTimePreset.Tomorrow,\n\tlabel: t('files_reminders', 'Tomorrow'),\n\tariaLabel: t('files_reminders', 'Set reminder for tomorrow'),\n\tdateString: '',\n\tverboseDateString: '',\n}\n\nconst thisWeekend: ReminderOption = {\n\tdateTimePreset: DateTimePreset.ThisWeekend,\n\tlabel: t('files_reminders', 'This weekend'),\n\tariaLabel: t('files_reminders', 'Set reminder for this weekend'),\n\tdateString: '',\n\tverboseDateString: '',\n}\n\nconst nextWeek: ReminderOption = {\n\tdateTimePreset: DateTimePreset.NextWeek,\n\tlabel: t('files_reminders', 'Next week'),\n\tariaLabel: t('files_reminders', 'Set reminder for next week'),\n\tdateString: '',\n\tverboseDateString: '',\n}\n\n/**\n * Get all set reminder suggestion actions from presets\n */\nexport function getSetReminderSuggestionActions() {\n\t[laterToday, tomorrow, thisWeekend, nextWeek].forEach((option) => {\n\t\t// Generate the initial date string\n\t\tconst dateTime = getDateTime(option.dateTimePreset)\n\t\tif (!dateTime) {\n\t\t\treturn\n\t\t}\n\t\toption.dateString = getDateString(dateTime)\n\t\toption.verboseDateString = getVerboseDateString(dateTime)\n\n\t\t// Update the date string every 30 minutes\n\t\tsetInterval(() => {\n\t\t\tconst dateTime = getDateTime(option.dateTimePreset)\n\t\t\tif (!dateTime) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// update the submenu remind options strings\n\t\t\toption.dateString = getDateString(dateTime)\n\t\t\toption.verboseDateString = getVerboseDateString(dateTime)\n\t\t}, 1000 * 30 * 60)\n\t})\n\n\t// Generate the default preset actions\n\treturn [laterToday, tomorrow, thisWeekend, nextWeek]\n\t\t.map(generateFileAction)\n}\n\n/**\n * Generate a file action for the given option\n *\n * @param option The option to generate the action for\n * @return The file action or null if the option should not be shown\n */\nfunction generateFileAction(option: ReminderOption): IFileAction {\n\treturn {\n\t\tid: `set-reminder-${option.dateTimePreset}`,\n\t\tdisplayName: () => `${option.label} – ${option.dateString}`,\n\t\ttitle: () => `${option.ariaLabel} – ${option.verboseDateString}`,\n\n\t\t// Empty svg to hide the icon\n\t\ticonSvgInline: () => '',\n\n\t\tenabled: ({ nodes, view }) => {\n\t\t\tif (view.id === 'trashbin') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Only allow on a single INode\n\t\t\tif (nodes.length !== 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst node = nodes.at(0)!\n\t\t\tconst dueDate = node.attributes['reminder-due-date']\n\t\t\treturn dueDate !== undefined && Boolean(getDateTime(option.dateTimePreset))\n\t\t},\n\n\t\tparent: SET_REMINDER_MENU_ID,\n\n\t\tasync exec({ nodes }) {\n\t\t\t// Can't really happen, but just in case™\n\t\t\tconst node = nodes.at(0)!\n\t\t\tif (!node.fileid) {\n\t\t\t\tlogger.error('Failed to set reminder, missing file id')\n\t\t\t\tshowError(t('files_reminders', 'Failed to set reminder'))\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\t// Set the reminder\n\t\t\ttry {\n\t\t\t\tconst dateTime = getDateTime(option.dateTimePreset)!\n\t\t\t\tawait setReminder(node.fileid, dateTime)\n\t\t\t\tnode.attributes['reminder-due-date'] = dateTime.toISOString()\n\t\t\t\temit('files:node:updated', node)\n\t\t\t\tshowSuccess(t('files_reminders', 'Reminder set for \"{fileName}\"', { fileName: node.basename }))\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Failed to set reminder', { error })\n\t\t\t\tshowError(t('files_reminders', 'Failed to set reminder'))\n\t\t\t}\n\t\t\t// Silent success as we display our own notification\n\t\t\treturn null\n\t\t},\n\n\t\torder: 21,\n\t}\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { registerFileAction } from '@nextcloud/files'\nimport { registerDavProperty } from '@nextcloud/files/dav'\nimport { action as clearAction } from './files_actions/clearReminderAction.ts'\nimport { action as statusAction } from './files_actions/reminderStatusAction.ts'\nimport { action as customAction } from './files_actions/setReminderCustomAction.ts'\nimport { action as menuAction } from './files_actions/setReminderMenuAction.ts'\nimport { getSetReminderSuggestionActions } from './files_actions/setReminderSuggestionActions.ts'\n\nregisterDavProperty('nc:reminder-due-date', { nc: 'http://nextcloud.org/ns' })\n\nregisterFileAction(statusAction)\nregisterFileAction(clearAction)\nregisterFileAction(menuAction)\nregisterFileAction(customAction)\ngetSetReminderSuggestionActions()\n\t.forEach(registerFileAction)\n"],"names":["AlarmOffSvg","setReminder","fileId","dueDate","url","generateOcsUrl","axios","clearReminder","DateTimePreset","getFirstWorkdayOfWeek","now","getWeek","date","firstDayOfYear","daysFromFirstDay","isSameWeek","a","b","isSameDate","getDateTime","dateTime","evening","cutoff","day","today","saturday","firstWorkdayOfWeek","workday","getInitialCustomDueDate","getDateString","formatOptions","getCanonicalLocale","getVerboseDateString","action","t","nodes","node","emit","AlarmSvg","logger","getLoggerBuilder","props","__props","__emit","hasDueDate","ref","opened","isValid","customDueDate","nowDate","onBeforeMount","onMounted","input","setCustom","showError","emitEventBus","showSuccess","onClose","error","clear","onInput","_createBlock","_unref","NcDialog","_createVNode","NcButton","_createElementVNode","NcDateTimePickerNative","$event","NcNoteCard","_createTextVNode","_toDisplayString","NcDateTime","pickCustomDate","spawnDialog","SetCustomReminderModal","CalendarClockSvg","SET_REMINDER_MENU_ID","view","laterToday","tomorrow","thisWeekend","nextWeek","getSetReminderSuggestionActions","option","generateFileAction","registerDavProperty","registerFileAction","statusAction","clearAction","menuAction","customAction"],"mappings":"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","x_google_ignoreList":[0,4,9]} \ No newline at end of file +{"version":3,"file":"files_reminders-init.mjs","sources":["../node_modules/@mdi/svg/svg/alarm-off.svg?raw","../build/frontend/apps/files_reminders/src/services/reminderService.ts","../build/frontend/apps/files_reminders/src/shared/utils.ts","../build/frontend/apps/files_reminders/src/files_actions/clearReminderAction.ts","../node_modules/@mdi/svg/svg/alarm.svg?raw","../build/frontend/apps/files_reminders/src/shared/logger.ts","../build/frontend/apps/files_reminders/src/components/SetCustomReminderModal.vue","../build/frontend/apps/files_reminders/src/services/customPicker.ts","../build/frontend/apps/files_reminders/src/files_actions/reminderStatusAction.ts","../node_modules/@mdi/svg/svg/calendar-clock.svg?raw","../build/frontend/apps/files_reminders/src/files_actions/setReminderMenuAction.ts","../build/frontend/apps/files_reminders/src/files_actions/setReminderCustomAction.ts","../build/frontend/apps/files_reminders/src/files_actions/setReminderSuggestionActions.ts","../build/frontend/apps/files_reminders/src/files-init.ts"],"sourcesContent":["export default \"\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\ninterface Reminder {\n\tdueDate: null | Date\n}\n\n/**\n * Get the reminder for a specific file\n *\n * @param fileId - The file id to get the reminder for\n */\nexport async function getReminder(fileId: number): Promise {\n\tconst url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })\n\tconst response = await axios.get(url)\n\tconst dueDate = response.data.ocs.data.dueDate ? new Date(response.data.ocs.data.dueDate) : null\n\n\treturn {\n\t\tdueDate,\n\t}\n}\n\n/**\n * Set a reminder for a specific file\n *\n * @param fileId - The file id to set the reminder for\n * @param dueDate - The due date for the reminder\n */\nexport async function setReminder(fileId: number, dueDate: Date): Promise<[]> {\n\tconst url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })\n\n\tconst response = await axios.put(url, {\n\t\tdueDate: dueDate.toISOString(), // timezone of string is always UTC\n\t})\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Clear the reminder for a specific file\n *\n * @param fileId - The file id to clear the reminder for\n */\nexport async function clearReminder(fileId: number): Promise<[]> {\n\tconst url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })\n\tconst response = await axios.delete(url)\n\n\treturn response.data.ocs.data\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCanonicalLocale } from '@nextcloud/l10n'\n\nexport enum DateTimePreset {\n\tLaterToday = 'later-today',\n\tTomorrow = 'tomorrow',\n\tThisWeekend = 'this-weekend',\n\tNextWeek = 'next-week',\n}\n\n/**\n *\n */\nfunction getFirstWorkdayOfWeek() {\n\tconst now = new Date()\n\tnow.setHours(0, 0, 0, 0)\n\tnow.setDate(now.getDate() - now.getDay() + 1)\n\treturn new Date(now)\n}\n\n/**\n * @param date - The date to get the week number for\n */\nfunction getWeek(date: Date) {\n\tconst dateClone = new Date(date)\n\tdateClone.setHours(0, 0, 0, 0)\n\tconst firstDayOfYear = new Date(date.getFullYear(), 0, 1, 0, 0, 0, 0)\n\tconst daysFromFirstDay = (date.getTime() - firstDayOfYear.getTime()) / 86400000\n\treturn Math.ceil((daysFromFirstDay + firstDayOfYear.getDay() + 1) / 7)\n}\n\n/**\n * @param a - First date\n * @param b - Second date\n */\nfunction isSameWeek(a: Date, b: Date) {\n\treturn getWeek(a) === getWeek(b)\n\t\t&& a.getFullYear() === b.getFullYear()\n}\n\n/**\n * @param a - First date\n * @param b - Second date\n */\nfunction isSameDate(a: Date, b: Date) {\n\treturn a.getDate() === b.getDate()\n\t\t&& a.getMonth() === b.getMonth()\n\t\t&& a.getFullYear() === b.getFullYear()\n}\n\n/**\n * @param dateTime - The preset to get the date for\n */\nexport function getDateTime(dateTime: DateTimePreset): null | Date {\n\tconst matchPreset: Record null | Date> = {\n\t\t[DateTimePreset.LaterToday]: () => {\n\t\t\tconst now = new Date()\n\t\t\tconst evening = new Date()\n\t\t\tevening.setHours(18, 0, 0, 0)\n\t\t\tconst cutoff = new Date()\n\t\t\tcutoff.setHours(17, 0, 0, 0)\n\t\t\tif (now >= cutoff) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn evening\n\t\t},\n\n\t\t[DateTimePreset.Tomorrow]: () => {\n\t\t\tconst now = new Date()\n\t\t\tconst day = new Date()\n\t\t\tday.setDate(now.getDate() + 1)\n\t\t\tday.setHours(8, 0, 0, 0)\n\t\t\treturn day\n\t\t},\n\n\t\t[DateTimePreset.ThisWeekend]: () => {\n\t\t\tconst today = new Date()\n\t\t\tif (\n\t\t\t\t[\n\t\t\t\t\t5, // Friday\n\t\t\t\t\t6, // Saturday\n\t\t\t\t\t0, // Sunday\n\t\t\t\t].includes(today.getDay())\n\t\t\t) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tconst saturday = new Date()\n\t\t\tconst firstWorkdayOfWeek = getFirstWorkdayOfWeek()\n\t\t\tsaturday.setDate(firstWorkdayOfWeek.getDate() + 5)\n\t\t\tsaturday.setHours(8, 0, 0, 0)\n\t\t\treturn saturday\n\t\t},\n\n\t\t[DateTimePreset.NextWeek]: () => {\n\t\t\tconst today = new Date()\n\t\t\tif (today.getDay() === 0) { // Sunday\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tconst workday = new Date()\n\t\t\tconst firstWorkdayOfWeek = getFirstWorkdayOfWeek()\n\t\t\tworkday.setDate(firstWorkdayOfWeek.getDate() + 7)\n\t\t\tworkday.setHours(8, 0, 0, 0)\n\t\t\treturn workday\n\t\t},\n\t}\n\n\treturn matchPreset[dateTime]()\n}\n\n/**\n *\n */\nexport function getInitialCustomDueDate(): Date {\n\tconst now = new Date()\n\tconst dueDate = new Date()\n\tdueDate.setHours(now.getHours() + 2, 0, 0, 0)\n\treturn dueDate\n}\n\n/**\n * @param dueDate - The date to format as a string\n */\nexport function getDateString(dueDate: Date): string {\n\tlet formatOptions: Intl.DateTimeFormatOptions = {\n\t\thour: 'numeric',\n\t\tminute: '2-digit',\n\t}\n\n\tconst today = new Date()\n\n\tif (!isSameDate(dueDate, today)) {\n\t\tformatOptions = {\n\t\t\t...formatOptions,\n\t\t\tweekday: 'short',\n\t\t}\n\t}\n\n\tif (!isSameWeek(dueDate, today)) {\n\t\tformatOptions = {\n\t\t\t...formatOptions,\n\t\t\tmonth: 'short',\n\t\t\tday: 'numeric',\n\t\t}\n\t}\n\n\tif (dueDate.getFullYear() !== today.getFullYear()) {\n\t\tformatOptions = {\n\t\t\t...formatOptions,\n\t\t\tyear: 'numeric',\n\t\t}\n\t}\n\n\treturn dueDate.toLocaleString(\n\t\tgetCanonicalLocale(),\n\t\tformatOptions,\n\t)\n}\n\n/**\n * @param dueDate - The date to format as a string\n */\nexport function getVerboseDateString(dueDate: Date): string {\n\tlet formatOptions: Intl.DateTimeFormatOptions = {\n\t\tmonth: 'long',\n\t\tday: 'numeric',\n\t\tweekday: 'long',\n\t\thour: 'numeric',\n\t\tminute: '2-digit',\n\t}\n\n\tconst today = new Date()\n\n\tif (dueDate.getFullYear() !== today.getFullYear()) {\n\t\tformatOptions = {\n\t\t\t...formatOptions,\n\t\t\tyear: 'numeric',\n\t\t}\n\t}\n\n\treturn dueDate.toLocaleString(\n\t\tgetCanonicalLocale(),\n\t\tformatOptions,\n\t)\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport AlarmOffSvg from '@mdi/svg/svg/alarm-off.svg?raw'\nimport { emit } from '@nextcloud/event-bus'\nimport { t } from '@nextcloud/l10n'\nimport { clearReminder } from '../services/reminderService.ts'\nimport { getVerboseDateString } from '../shared/utils.ts'\n\nexport const action: IFileAction = {\n\tid: 'clear-reminder',\n\n\tdisplayName: () => t('files_reminders', 'Clear reminder'),\n\n\ttitle: ({ nodes }) => {\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = new Date(node.attributes['reminder-due-date'])\n\t\treturn `${t('files_reminders', 'Clear reminder')} – ${getVerboseDateString(dueDate)}`\n\t},\n\n\ticonSvgInline: () => AlarmOffSvg,\n\n\tenabled: ({ nodes }) => {\n\t\t// Only allow on a single node\n\t\tif (nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = node.attributes['reminder-due-date']\n\t\treturn Boolean(dueDate)\n\t},\n\n\tasync exec({ nodes }) {\n\t\tconst node = nodes.at(0)!\n\t\tif (node.fileid) {\n\t\t\ttry {\n\t\t\t\tawait clearReminder(node.fileid)\n\t\t\t\tnode.attributes['reminder-due-date'] = ''\n\t\t\t\temit('files:node:updated', node)\n\t\t\t\treturn true\n\t\t\t} catch {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn null\n\t},\n\n\torder: 19,\n}\n","export default \"\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.setApp('files_reminders')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\n\nimport { spawnDialog } from '@nextcloud/vue'\nimport SetCustomReminderModal from '../components/SetCustomReminderModal.vue'\n\n/**\n * @param node - The file or folder node to set the custom reminder for\n */\nexport async function pickCustomDate(node: INode): Promise {\n\tawait spawnDialog(SetCustomReminderModal, {\n\t\tnode,\n\t})\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport AlarmSvg from '@mdi/svg/svg/alarm.svg?raw'\nimport { t } from '@nextcloud/l10n'\nimport { pickCustomDate } from '../services/customPicker.ts'\nimport { getVerboseDateString } from '../shared/utils.ts'\n\nexport const action: IFileAction = {\n\tid: 'reminder-status',\n\n\tinline: () => true,\n\n\tdisplayName: () => '',\n\n\ttitle: ({ nodes }) => {\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = new Date(node.attributes['reminder-due-date'])\n\t\treturn `${t('files_reminders', 'Reminder set')} – ${getVerboseDateString(dueDate)}`\n\t},\n\n\ticonSvgInline: () => AlarmSvg,\n\n\tenabled: ({ nodes }) => {\n\t\t// Only allow on a single node\n\t\tif (nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = node.attributes['reminder-due-date']\n\t\treturn Boolean(dueDate)\n\t},\n\n\tasync exec({ nodes }) {\n\t\tconst node = nodes.at(0)!\n\t\tawait pickCustomDate(node)\n\t\treturn null\n\t},\n\n\torder: -15,\n}\n","export default \"\"","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport AlarmSvg from '@mdi/svg/svg/alarm.svg?raw'\nimport { translate as t } from '@nextcloud/l10n'\n\nexport const SET_REMINDER_MENU_ID = 'set-reminder-menu'\n\nexport const action: IFileAction = {\n\tid: SET_REMINDER_MENU_ID,\n\tdisplayName: () => t('files_reminders', 'Set reminder'),\n\ticonSvgInline: () => AlarmSvg,\n\n\tenabled: ({ nodes, view }) => {\n\t\tif (view.id === 'trashbin') {\n\t\t\treturn false\n\t\t}\n\t\t// Only allow on a single INode\n\t\tif (nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = node.attributes['reminder-due-date']\n\t\treturn dueDate !== undefined\n\t},\n\n\tasync exec() {\n\t\treturn null\n\t},\n\n\torder: 20,\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport CalendarClockSvg from '@mdi/svg/svg/calendar-clock.svg?raw'\nimport { t } from '@nextcloud/l10n'\nimport { pickCustomDate } from '../services/customPicker.ts'\nimport { SET_REMINDER_MENU_ID } from './setReminderMenuAction.ts'\n\nexport const action: IFileAction = {\n\tid: 'set-reminder-custom',\n\tdisplayName: () => t('files_reminders', 'Custom reminder'),\n\ttitle: () => t('files_reminders', 'Reminder at custom date & time'),\n\ticonSvgInline: () => CalendarClockSvg,\n\n\tenabled: ({ nodes, view }) => {\n\t\tif (view.id === 'trashbin') {\n\t\t\treturn false\n\t\t}\n\t\t// Only allow on a single INode\n\t\tif (nodes.length !== 1) {\n\t\t\treturn false\n\t\t}\n\t\tconst node = nodes.at(0)!\n\t\tconst dueDate = node.attributes['reminder-due-date']\n\t\treturn dueDate !== undefined\n\t},\n\n\tparent: SET_REMINDER_MENU_ID,\n\n\tasync exec({ nodes }) {\n\t\tconst node = nodes.at(0)!\n\t\tpickCustomDate(node)\n\t\treturn null\n\t},\n\n\t// After presets\n\torder: 22,\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { t } from '@nextcloud/l10n'\nimport { setReminder } from '../services/reminderService.ts'\nimport { logger } from '../shared/logger.ts'\nimport { DateTimePreset, getDateString, getDateTime, getVerboseDateString } from '../shared/utils.ts'\nimport { SET_REMINDER_MENU_ID } from './setReminderMenuAction.ts'\n\nimport './setReminderSuggestionActions.scss'\n\ninterface ReminderOption {\n\tdateTimePreset: DateTimePreset\n\tlabel: string\n\tariaLabel: string\n\tdateString?: string\n\tverboseDateString?: string\n\taction?: () => Promise\n}\n\nconst laterToday: ReminderOption = {\n\tdateTimePreset: DateTimePreset.LaterToday,\n\tlabel: t('files_reminders', 'Later today'),\n\tariaLabel: t('files_reminders', 'Set reminder for later today'),\n\tdateString: '',\n\tverboseDateString: '',\n}\n\nconst tomorrow: ReminderOption = {\n\tdateTimePreset: DateTimePreset.Tomorrow,\n\tlabel: t('files_reminders', 'Tomorrow'),\n\tariaLabel: t('files_reminders', 'Set reminder for tomorrow'),\n\tdateString: '',\n\tverboseDateString: '',\n}\n\nconst thisWeekend: ReminderOption = {\n\tdateTimePreset: DateTimePreset.ThisWeekend,\n\tlabel: t('files_reminders', 'This weekend'),\n\tariaLabel: t('files_reminders', 'Set reminder for this weekend'),\n\tdateString: '',\n\tverboseDateString: '',\n}\n\nconst nextWeek: ReminderOption = {\n\tdateTimePreset: DateTimePreset.NextWeek,\n\tlabel: t('files_reminders', 'Next week'),\n\tariaLabel: t('files_reminders', 'Set reminder for next week'),\n\tdateString: '',\n\tverboseDateString: '',\n}\n\n/**\n * Get all set reminder suggestion actions from presets\n */\nexport function getSetReminderSuggestionActions() {\n\t[laterToday, tomorrow, thisWeekend, nextWeek].forEach((option) => {\n\t\t// Generate the initial date string\n\t\tconst dateTime = getDateTime(option.dateTimePreset)\n\t\tif (!dateTime) {\n\t\t\treturn\n\t\t}\n\t\toption.dateString = getDateString(dateTime)\n\t\toption.verboseDateString = getVerboseDateString(dateTime)\n\n\t\t// Update the date string every 30 minutes\n\t\tsetInterval(() => {\n\t\t\tconst dateTime = getDateTime(option.dateTimePreset)\n\t\t\tif (!dateTime) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// update the submenu remind options strings\n\t\t\toption.dateString = getDateString(dateTime)\n\t\t\toption.verboseDateString = getVerboseDateString(dateTime)\n\t\t}, 1000 * 30 * 60)\n\t})\n\n\t// Generate the default preset actions\n\treturn [laterToday, tomorrow, thisWeekend, nextWeek]\n\t\t.map(generateFileAction)\n}\n\n/**\n * Generate a file action for the given option\n *\n * @param option The option to generate the action for\n * @return The file action or null if the option should not be shown\n */\nfunction generateFileAction(option: ReminderOption): IFileAction {\n\treturn {\n\t\tid: `set-reminder-${option.dateTimePreset}`,\n\t\tdisplayName: () => `${option.label} – ${option.dateString}`,\n\t\ttitle: () => `${option.ariaLabel} – ${option.verboseDateString}`,\n\n\t\t// Empty svg to hide the icon\n\t\ticonSvgInline: () => '',\n\n\t\tenabled: ({ nodes, view }) => {\n\t\t\tif (view.id === 'trashbin') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Only allow on a single INode\n\t\t\tif (nodes.length !== 1) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tconst node = nodes.at(0)!\n\t\t\tconst dueDate = node.attributes['reminder-due-date']\n\t\t\treturn dueDate !== undefined && Boolean(getDateTime(option.dateTimePreset))\n\t\t},\n\n\t\tparent: SET_REMINDER_MENU_ID,\n\n\t\tasync exec({ nodes }) {\n\t\t\t// Can't really happen, but just in case™\n\t\t\tconst node = nodes.at(0)!\n\t\t\tif (!node.fileid) {\n\t\t\t\tlogger.error('Failed to set reminder, missing file id')\n\t\t\t\tshowError(t('files_reminders', 'Failed to set reminder'))\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\t// Set the reminder\n\t\t\ttry {\n\t\t\t\tconst dateTime = getDateTime(option.dateTimePreset)!\n\t\t\t\tawait setReminder(node.fileid, dateTime)\n\t\t\t\tnode.attributes['reminder-due-date'] = dateTime.toISOString()\n\t\t\t\temit('files:node:updated', node)\n\t\t\t\tshowSuccess(t('files_reminders', 'Reminder set for \"{fileName}\"', { fileName: node.basename }))\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Failed to set reminder', { error })\n\t\t\t\tshowError(t('files_reminders', 'Failed to set reminder'))\n\t\t\t}\n\t\t\t// Silent success as we display our own notification\n\t\t\treturn null\n\t\t},\n\n\t\torder: 21,\n\t}\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { registerFileAction } from '@nextcloud/files'\nimport { registerDavProperty } from '@nextcloud/files/dav'\nimport { action as clearAction } from './files_actions/clearReminderAction.ts'\nimport { action as statusAction } from './files_actions/reminderStatusAction.ts'\nimport { action as customAction } from './files_actions/setReminderCustomAction.ts'\nimport { action as menuAction } from './files_actions/setReminderMenuAction.ts'\nimport { getSetReminderSuggestionActions } from './files_actions/setReminderSuggestionActions.ts'\n\nregisterDavProperty('nc:reminder-due-date', { nc: 'http://nextcloud.org/ns' })\n\nregisterFileAction(statusAction)\nregisterFileAction(clearAction)\nregisterFileAction(menuAction)\nregisterFileAction(customAction)\ngetSetReminderSuggestionActions()\n\t.forEach(registerFileAction)\n"],"names":["AlarmOffSvg","setReminder","fileId","dueDate","url","generateOcsUrl","axios","clearReminder","DateTimePreset","getFirstWorkdayOfWeek","now","getWeek","date","firstDayOfYear","daysFromFirstDay","isSameWeek","a","b","isSameDate","getDateTime","dateTime","evening","cutoff","day","today","saturday","firstWorkdayOfWeek","workday","getInitialCustomDueDate","getDateString","formatOptions","getCanonicalLocale","getVerboseDateString","action","t","nodes","node","emit","AlarmSvg","logger","getLoggerBuilder","props","__props","__emit","hasDueDate","ref","opened","isValid","customDueDate","nowDate","onBeforeMount","onMounted","input","setCustom","showError","emitEventBus","showSuccess","onClose","error","clear","onInput","_createBlock","_unref","NcDialog","_createVNode","NcButton","_createElementVNode","NcDateTimePickerNative","$event","NcNoteCard","_createTextVNode","_toDisplayString","NcDateTime","pickCustomDate","spawnDialog","SetCustomReminderModal","CalendarClockSvg","SET_REMINDER_MENU_ID","view","laterToday","tomorrow","thisWeekend","nextWeek","getSetReminderSuggestionActions","option","generateFileAction","registerDavProperty","registerFileAction","statusAction","clearAction","menuAction","customAction"],"mappings":"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","x_google_ignoreList":[0,4,9]} \ No newline at end of file diff --git a/dist/files_trashbin-init.mjs b/dist/files_trashbin-init.mjs index 3016e5f6bde7d..28ffb53b0528a 100644 --- a/dist/files_trashbin-init.mjs +++ b/dist/files_trashbin-init.mjs @@ -1,4 +1,4 @@ -import{C as c,V as _,b as v,c as x,a as V}from"./index-BGv_Bbjs.chunk.mjs";import{a as o,b as H,i as A,g as C,h as N,j as E,f as h}from"./index-Cp0kcsps.chunk.mjs";import{c as u,i as S}from"./index-CkGt55pS.chunk.mjs";import{a as b,d as $,g as I}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{P as D}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import{g as y,b as f,t as n}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{g as L,a as M,b as T,r as k,d as F}from"./dav-DpOWisxz.chunk.mjs";import{f as B}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{e as U}from"./Web-DYqXJUev.chunk.mjs";import{N as P}from"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import{l as O}from"./public-C1mLBHT3.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";const R='',j='',w=`/trashbin/${o()?.uid}/trash`,q=L(),z=` +import{C as c,V as _,b as v,c as x,a as V}from"./index-BGv_Bbjs.chunk.mjs";import{a as o,b as H,i as A,g as C,h as N,j as E,f as h}from"./index-Cp0kcsps.chunk.mjs";import{c as u,i as S}from"./index-CkGt55pS.chunk.mjs";import{a as b,d as $,g as I}from"./index-mH69OG7L.chunk.mjs";import{P as D}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import{g as y,b as f,t as n}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{g as L,a as M,b as T,r as k,d as F}from"./dav-DpOWisxz.chunk.mjs";import{f as B}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{e as U}from"./Web-DYqXJUev.chunk.mjs";import{N as P}from"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import{l as O}from"./public-C1mLBHT3.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";const R='',j='',w=`/trashbin/${o()?.uid}/trash`,q=L(),z=` diff --git a/dist/files_trashbin-init.mjs.map b/dist/files_trashbin-init.mjs.map index 22424db92360f..d85959d5180c9 100644 --- a/dist/files_trashbin-init.mjs.map +++ b/dist/files_trashbin-init.mjs.map @@ -1 +1 @@ -{"version":3,"file":"files_trashbin-init.mjs","sources":["../node_modules/@mdi/svg/svg/history.svg?raw","../node_modules/@mdi/svg/svg/trash-can-outline.svg?raw","../build/frontend/apps/files_trashbin/src/services/client.ts","../build/frontend/apps/files_trashbin/src/services/trashbin.ts","../build/frontend/apps/files_trashbin/src/files_views/columns.ts","../build/frontend/apps/files_trashbin/src/files_views/trashbinView.ts","../build/frontend/apps/files_trashbin/src/logger.ts","../build/frontend/apps/files_trashbin/src/files_actions/restoreAction.ts","../build/frontend/apps/files_trashbin/src/services/api.ts","../build/frontend/apps/files_trashbin/src/files_listActions/emptyTrashAction.ts","../build/frontend/apps/files_trashbin/src/files-init.ts"],"sourcesContent":["export default \"\"","export default \"\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getClient } from '@nextcloud/files/dav'\n\nexport const rootPath = `/trashbin/${getCurrentUser()?.uid}/trash`\n\nexport const client = getClient()\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ContentsWithRoot, Folder, Node } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { resultToNode as davResultToNode, getDavNameSpaces, getDavProperties } from '@nextcloud/files/dav'\nimport { generateUrl } from '@nextcloud/router'\nimport { client, rootPath } from './client.ts'\n\nconst data = `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t${getDavProperties()}\n\t\n`\n\n/**\n * Converts a WebDAV file stat to a File or Folder\n * This will fix the preview URL attribute for trashbin items\n *\n * @param stat - The file stat object from WebDAV response\n */\nfunction resultToNode(stat: FileStat): Node {\n\tconst node = davResultToNode(stat, rootPath)\n\tnode.attributes.previewUrl = generateUrl('/apps/files_trashbin/preview?fileId={fileid}&x=32&y=32', { fileid: node.fileid })\n\treturn node\n}\n\n/**\n * Get the contents of a trashbin folder\n *\n * @param path - The path of the trashbin folder to get contents from\n */\nexport async function getContents(path = '/'): Promise {\n\tconst contentsResponse = await client.getDirectoryContents(`${rootPath}${path}`, {\n\t\tdetails: true,\n\t\tdata,\n\t\tincludeSelf: true,\n\t}) as ResponseDataDetailed\n\n\tconst contents = contentsResponse.data.map(resultToNode)\n\tconst [folder] = contents.splice(contents.findIndex((node) => node.path === path), 1)\n\n\treturn {\n\t\tfolder: folder as Folder,\n\t\tcontents,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Node } from '@nextcloud/files'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { Column } from '@nextcloud/files'\nimport { formatRelativeTime, getCanonicalLocale, getLanguage, t } from '@nextcloud/l10n'\nimport { dirname } from '@nextcloud/paths'\nimport { createApp } from 'vue'\nimport NcUserBubble from '@nextcloud/vue/components/NcUserBubble'\n\nexport const originalLocation = new Column({\n\tid: 'files_trashbin--original-location',\n\ttitle: t('files_trashbin', 'Original location'),\n\trender(node) {\n\t\tconst originalLocation = parseOriginalLocation(node)\n\t\tconst span = document.createElement('span')\n\t\tspan.title = originalLocation\n\t\tspan.textContent = originalLocation\n\t\treturn span\n\t},\n\tsort(nodeA, nodeB) {\n\t\tconst locationA = parseOriginalLocation(nodeA)\n\t\tconst locationB = parseOriginalLocation(nodeB)\n\t\treturn locationA.localeCompare(locationB, [getLanguage(), getCanonicalLocale()], { numeric: true, usage: 'sort' })\n\t},\n})\n\nexport const deletedBy = new Column({\n\tid: 'files_trashbin--deleted-by',\n\ttitle: t('files_trashbin', 'Deleted by'),\n\trender(node) {\n\t\tconst { userId, displayName, label } = parseDeletedBy(node)\n\t\tif (label) {\n\t\t\tconst span = document.createElement('span')\n\t\t\tspan.textContent = label\n\t\t\treturn span\n\t\t}\n\n\t\tconst el = document.createElement('div')\n\t\tcreateApp(NcUserBubble, {\n\t\t\tsize: 32,\n\t\t\tuser: userId ?? undefined,\n\t\t\tdisplayName: displayName ?? userId,\n\t\t}).mount(el)\n\t\treturn el\n\t},\n\tsort(nodeA, nodeB) {\n\t\tconst deletedByA = parseDeletedBy(nodeA)\n\t\tconst deletedbyALabel = deletedByA.label ?? deletedByA.displayName ?? deletedByA.userId\n\t\tconst deletedByB = parseDeletedBy(nodeB)\n\t\tconst deletedByBLabel = deletedByB.label ?? deletedByB.displayName ?? deletedByB.userId\n\t\t// label is set if uid and display name are unset - if label is unset at least uid or display name is set.\n\t\treturn deletedbyALabel!.localeCompare(deletedByBLabel!, [getLanguage(), getCanonicalLocale()], { numeric: true, usage: 'sort' })\n\t},\n})\n\nexport const deleted = new Column({\n\tid: 'files_trashbin--deleted',\n\ttitle: t('files_trashbin', 'Deleted'),\n\n\trender(node) {\n\t\tconst deletionTime = node.attributes?.['trashbin-deletion-time'] || ((node?.mtime?.getTime() ?? 0) / 1000)\n\t\tconst span = document.createElement('span')\n\t\tif (deletionTime) {\n\t\t\tconst formatter = Intl.DateTimeFormat([getCanonicalLocale()], { dateStyle: 'long', timeStyle: 'short' })\n\t\t\tconst timestamp = new Date(deletionTime * 1000)\n\n\t\t\tspan.title = formatter.format(timestamp)\n\t\t\tspan.textContent = formatRelativeTime(timestamp, { ignoreSeconds: t('files', 'few seconds ago') })\n\t\t\treturn span\n\t\t}\n\n\t\t// Unknown deletion time\n\t\tspan.textContent = t('files_trashbin', 'A long time ago')\n\t\treturn span\n\t},\n\n\tsort(nodeA, nodeB) {\n\t\t// deletion time is a unix timestamp while mtime is a JS Date -> we need to align the numbers (seconds vs milliseconds)\n\t\tconst deletionTimeA = nodeA.attributes?.['trashbin-deletion-time'] || ((nodeA?.mtime?.getTime() ?? 0) / 1000)\n\t\tconst deletionTimeB = nodeB.attributes?.['trashbin-deletion-time'] || ((nodeB?.mtime?.getTime() ?? 0) / 1000)\n\t\treturn deletionTimeB - deletionTimeA\n\t},\n})\n\n/**\n * Get the original file location of a trashbin file.\n *\n * @param node The node to parse\n */\nfunction parseOriginalLocation(node: Node): string {\n\tconst path = stringOrNull(node.attributes?.['trashbin-original-location'])\n\tif (!path) {\n\t\treturn t('files_trashbin', 'Unknown')\n\t}\n\n\tconst dir = dirname(path)\n\tif (dir === '/' || dir === '.') { // Node is in root folder\n\t\treturn t('files_trashbin', 'All files')\n\t}\n\n\treturn dir.replace(/^\\//, '')\n}\n\n/**\n * Parse a trashbin file to get information about the user that deleted the file.\n *\n * @param node The node to parse\n */\nfunction parseDeletedBy(node: Node) {\n\tconst userId = stringOrNull(node.attributes?.['trashbin-deleted-by-id'])\n\tconst displayName = stringOrNull(node.attributes?.['trashbin-deleted-by-display-name'])\n\n\tlet label: string | undefined\n\tconst currentUserId = getCurrentUser()?.uid\n\tif (userId === currentUserId) {\n\t\tlabel = t('files_trashbin', 'You')\n\t}\n\tif (!userId && !displayName) {\n\t\tlabel = t('files_trashbin', 'Unknown')\n\t}\n\n\treturn {\n\t\tuserId,\n\t\tdisplayName,\n\t\tlabel,\n\t}\n}\n\n/**\n * If the attribute is given it will be stringified and returned - otherwise null is returned.\n *\n * @param attribute The attribute to check\n */\nfunction stringOrNull(attribute: unknown): string | null {\n\tif (attribute) {\n\t\treturn String(attribute)\n\t}\n\treturn null\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport svgDelete from '@mdi/svg/svg/trash-can-outline.svg?raw'\nimport { View } from '@nextcloud/files'\nimport { t } from '@nextcloud/l10n'\nimport { getContents } from '../services/trashbin.ts'\nimport { deleted, deletedBy, originalLocation } from './columns.ts'\n\nexport const TRASHBIN_VIEW_ID = 'trashbin'\n\nexport const trashbinView = new View({\n\tid: TRASHBIN_VIEW_ID,\n\tname: t('files_trashbin', 'Deleted files'),\n\tcaption: t('files_trashbin', 'List of files that have been deleted.'),\n\n\temptyTitle: t('files_trashbin', 'No deleted files'),\n\temptyCaption: t('files_trashbin', 'Files and folders you have deleted will show up here'),\n\n\ticon: svgDelete,\n\torder: 50,\n\tsticky: true,\n\n\tdefaultSortKey: 'deleted',\n\n\tcolumns: [\n\t\toriginalLocation,\n\t\tdeletedBy,\n\t\tdeleted,\n\t],\n\n\tgetContents,\n})\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.setApp('files_trashbin')\n\t.detectUser()\n\t.build()\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport svgHistory from '@mdi/svg/svg/history.svg?raw'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios, { isAxiosError } from '@nextcloud/axios'\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { Permission } from '@nextcloud/files'\nimport { t } from '@nextcloud/l10n'\nimport { encodePath } from '@nextcloud/paths'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { TRASHBIN_VIEW_ID } from '../files_views/trashbinView.ts'\nimport { logger } from '../logger.ts'\n\nexport const restoreAction: IFileAction = {\n\tid: 'restore',\n\n\tdisplayName() {\n\t\treturn t('files_trashbin', 'Restore')\n\t},\n\n\ticonSvgInline: () => svgHistory,\n\n\tenabled({ nodes, view }) {\n\t\t// Only available in the trashbin view\n\t\tif (view.id !== TRASHBIN_VIEW_ID) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Only available if all nodes have read permission\n\t\treturn nodes.length > 0\n\t\t\t&& nodes\n\t\t\t\t.map((node) => node.permissions)\n\t\t\t\t.every((permission) => Boolean(permission & Permission.READ))\n\t},\n\n\tasync exec({ nodes }) {\n\t\tconst node = nodes[0]\n\t\ttry {\n\t\t\tconst destination = generateRemoteUrl(encodePath(`dav/trashbin/${getCurrentUser()!.uid}/restore/${node.basename}`))\n\t\t\tawait axios.request({\n\t\t\t\tmethod: 'MOVE',\n\t\t\t\turl: node.encodedSource,\n\t\t\t\theaders: {\n\t\t\t\t\tdestination,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\t// Let's pretend the file is deleted since\n\t\t\t// we don't know the restored location\n\t\t\temit('files:node:deleted', node)\n\t\t\treturn true\n\t\t} catch (error) {\n\t\t\tif (isAxiosError(error) && error.response?.status === 507) {\n\t\t\t\tshowError(t('files_trashbin', 'Not enough free space to restore the file/folder'))\n\t\t\t}\n\t\t\tlogger.error('Failed to restore node', { error, node })\n\t\t\treturn false\n\t\t}\n\t},\n\n\tasync execBatch({ nodes, view, folder, contents }) {\n\t\treturn Promise.all(nodes.map((node) => this.exec({ nodes: [node], view, folder, contents })))\n\t},\n\n\torder: 1,\n\n\tinline: () => true,\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { defaultRemoteURL } from '@nextcloud/files/dav'\nimport { t } from '@nextcloud/l10n'\nimport { logger } from '../logger.ts'\n\n/**\n * Send API request to empty the trashbin.\n * Returns true if request succeeded - otherwise false is returned.\n */\nexport async function emptyTrash(): Promise {\n\ttry {\n\t\tawait axios.delete(`${defaultRemoteURL}/trashbin/${getCurrentUser()!.uid}/trash`)\n\t\tshowSuccess(t('files_trashbin', 'All files have been permanently deleted'))\n\t\treturn true\n\t} catch (error) {\n\t\tshowError(t('files_trashbin', 'Failed to empty deleted files'))\n\t\tlogger.error('Failed to empty deleted files', { error })\n\t\treturn false\n\t}\n}\n","/*\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileListAction } from '@nextcloud/files'\n\nimport { getDialogBuilder } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { TRASHBIN_VIEW_ID } from '../files_views/trashbinView.ts'\nimport { emptyTrash } from '../services/api.ts'\n\nexport type FilesTrashbinConfigState = {\n\tallow_delete: boolean\n}\n\nexport const emptyTrashAction: IFileListAction = {\n\tid: 'empty-trash',\n\n\tdisplayName: () => t('files_trashbin', 'Empty deleted files'),\n\torder: 0,\n\n\tenabled({ view, folder, contents }) {\n\t\tif (view.id !== TRASHBIN_VIEW_ID) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst config = loadState('files_trashbin', 'config')\n\t\tif (!config.allow_delete) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn contents.length > 0 && folder.path === '/'\n\t},\n\n\tasync exec({ contents }): Promise {\n\t\tconst askConfirmation = new Promise((resolve) => {\n\t\t\tconst dialog = getDialogBuilder(t('files_trashbin', 'Confirm permanent deletion'))\n\t\t\t\t.setSeverity('warning')\n\t\t\t\t// TODO Add note for groupfolders\n\t\t\t\t.setText(t('files_trashbin', 'Are you sure you want to permanently delete all files and folders in the trash? This cannot be undone.'))\n\t\t\t\t.setButtons([\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: t('files_trashbin', 'Cancel'),\n\t\t\t\t\t\tvariant: 'secondary',\n\t\t\t\t\t\tcallback: () => resolve(false),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: t('files_trashbin', 'Empty deleted files'),\n\t\t\t\t\t\tvariant: 'error',\n\t\t\t\t\t\tcallback: () => resolve(true),\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t\t.build()\n\t\t\tdialog.show().then(() => {\n\t\t\t\tresolve(false)\n\t\t\t})\n\t\t})\n\n\t\tconst result = await askConfirmation\n\t\tif (result === true) {\n\t\t\tif (await emptyTrash()) {\n\t\t\t\tcontents.forEach((node) => emit('files:node:deleted', node))\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\treturn null\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getNavigation, registerFileAction, registerFileListAction } from '@nextcloud/files'\nimport { restoreAction } from './files_actions/restoreAction.ts'\nimport { emptyTrashAction } from './files_listActions/emptyTrashAction.ts'\nimport { trashbinView } from './files_views/trashbinView.ts'\n\nimport './trashbin.scss'\n\nconst Navigation = getNavigation()\nNavigation.register(trashbinView)\n\nregisterFileListAction(emptyTrashAction)\nregisterFileAction(restoreAction)\n"],"names":["svgHistory","svgDelete","rootPath","getCurrentUser","client","getClient","data","getDavNameSpaces","getDavProperties","resultToNode","stat","node","davResultToNode","generateUrl","getContents","path","contents","folder","originalLocation","Column","t","parseOriginalLocation","span","nodeA","nodeB","locationA","locationB","getLanguage","getCanonicalLocale","deletedBy","userId","displayName","label","parseDeletedBy","el","createApp","NcUserBubble","deletedByA","deletedbyALabel","deletedByB","deletedByBLabel","deleted","deletionTime","formatter","timestamp","formatRelativeTime","deletionTimeA","stringOrNull","dir","dirname","currentUserId","attribute","TRASHBIN_VIEW_ID","trashbinView","View","logger","getLoggerBuilder","restoreAction","nodes","view","permission","Permission","destination","generateRemoteUrl","encodePath","axios","emit","error","isAxiosError","showError","emptyTrash","defaultRemoteURL","showSuccess","emptyTrashAction","loadState","resolve","getDialogBuilder","Navigation","getNavigation","registerFileListAction","registerFileAction"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file +{"version":3,"file":"files_trashbin-init.mjs","sources":["../node_modules/@mdi/svg/svg/history.svg?raw","../node_modules/@mdi/svg/svg/trash-can-outline.svg?raw","../build/frontend/apps/files_trashbin/src/services/client.ts","../build/frontend/apps/files_trashbin/src/services/trashbin.ts","../build/frontend/apps/files_trashbin/src/files_views/columns.ts","../build/frontend/apps/files_trashbin/src/files_views/trashbinView.ts","../build/frontend/apps/files_trashbin/src/logger.ts","../build/frontend/apps/files_trashbin/src/files_actions/restoreAction.ts","../build/frontend/apps/files_trashbin/src/services/api.ts","../build/frontend/apps/files_trashbin/src/files_listActions/emptyTrashAction.ts","../build/frontend/apps/files_trashbin/src/files-init.ts"],"sourcesContent":["export default \"\"","export default \"\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getClient } from '@nextcloud/files/dav'\n\nexport const rootPath = `/trashbin/${getCurrentUser()?.uid}/trash`\n\nexport const client = getClient()\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ContentsWithRoot, Folder, Node } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { resultToNode as davResultToNode, getDavNameSpaces, getDavProperties } from '@nextcloud/files/dav'\nimport { generateUrl } from '@nextcloud/router'\nimport { client, rootPath } from './client.ts'\n\nconst data = `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t${getDavProperties()}\n\t\n`\n\n/**\n * Converts a WebDAV file stat to a File or Folder\n * This will fix the preview URL attribute for trashbin items\n *\n * @param stat - The file stat object from WebDAV response\n */\nfunction resultToNode(stat: FileStat): Node {\n\tconst node = davResultToNode(stat, rootPath)\n\tnode.attributes.previewUrl = generateUrl('/apps/files_trashbin/preview?fileId={fileid}&x=32&y=32', { fileid: node.fileid })\n\treturn node\n}\n\n/**\n * Get the contents of a trashbin folder\n *\n * @param path - The path of the trashbin folder to get contents from\n */\nexport async function getContents(path = '/'): Promise {\n\tconst contentsResponse = await client.getDirectoryContents(`${rootPath}${path}`, {\n\t\tdetails: true,\n\t\tdata,\n\t\tincludeSelf: true,\n\t}) as ResponseDataDetailed\n\n\tconst contents = contentsResponse.data.map(resultToNode)\n\tconst [folder] = contents.splice(contents.findIndex((node) => node.path === path), 1)\n\n\treturn {\n\t\tfolder: folder as Folder,\n\t\tcontents,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Node } from '@nextcloud/files'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { Column } from '@nextcloud/files'\nimport { formatRelativeTime, getCanonicalLocale, getLanguage, t } from '@nextcloud/l10n'\nimport { dirname } from '@nextcloud/paths'\nimport { createApp } from 'vue'\nimport NcUserBubble from '@nextcloud/vue/components/NcUserBubble'\n\nexport const originalLocation = new Column({\n\tid: 'files_trashbin--original-location',\n\ttitle: t('files_trashbin', 'Original location'),\n\trender(node) {\n\t\tconst originalLocation = parseOriginalLocation(node)\n\t\tconst span = document.createElement('span')\n\t\tspan.title = originalLocation\n\t\tspan.textContent = originalLocation\n\t\treturn span\n\t},\n\tsort(nodeA, nodeB) {\n\t\tconst locationA = parseOriginalLocation(nodeA)\n\t\tconst locationB = parseOriginalLocation(nodeB)\n\t\treturn locationA.localeCompare(locationB, [getLanguage(), getCanonicalLocale()], { numeric: true, usage: 'sort' })\n\t},\n})\n\nexport const deletedBy = new Column({\n\tid: 'files_trashbin--deleted-by',\n\ttitle: t('files_trashbin', 'Deleted by'),\n\trender(node) {\n\t\tconst { userId, displayName, label } = parseDeletedBy(node)\n\t\tif (label) {\n\t\t\tconst span = document.createElement('span')\n\t\t\tspan.textContent = label\n\t\t\treturn span\n\t\t}\n\n\t\tconst el = document.createElement('div')\n\t\tcreateApp(NcUserBubble, {\n\t\t\tsize: 32,\n\t\t\tuser: userId ?? undefined,\n\t\t\tdisplayName: displayName ?? userId,\n\t\t}).mount(el)\n\t\treturn el\n\t},\n\tsort(nodeA, nodeB) {\n\t\tconst deletedByA = parseDeletedBy(nodeA)\n\t\tconst deletedbyALabel = deletedByA.label ?? deletedByA.displayName ?? deletedByA.userId\n\t\tconst deletedByB = parseDeletedBy(nodeB)\n\t\tconst deletedByBLabel = deletedByB.label ?? deletedByB.displayName ?? deletedByB.userId\n\t\t// label is set if uid and display name are unset - if label is unset at least uid or display name is set.\n\t\treturn deletedbyALabel!.localeCompare(deletedByBLabel!, [getLanguage(), getCanonicalLocale()], { numeric: true, usage: 'sort' })\n\t},\n})\n\nexport const deleted = new Column({\n\tid: 'files_trashbin--deleted',\n\ttitle: t('files_trashbin', 'Deleted'),\n\n\trender(node) {\n\t\tconst deletionTime = node.attributes?.['trashbin-deletion-time'] || ((node?.mtime?.getTime() ?? 0) / 1000)\n\t\tconst span = document.createElement('span')\n\t\tif (deletionTime) {\n\t\t\tconst formatter = Intl.DateTimeFormat([getCanonicalLocale()], { dateStyle: 'long', timeStyle: 'short' })\n\t\t\tconst timestamp = new Date(deletionTime * 1000)\n\n\t\t\tspan.title = formatter.format(timestamp)\n\t\t\tspan.textContent = formatRelativeTime(timestamp, { ignoreSeconds: t('files', 'few seconds ago') })\n\t\t\treturn span\n\t\t}\n\n\t\t// Unknown deletion time\n\t\tspan.textContent = t('files_trashbin', 'A long time ago')\n\t\treturn span\n\t},\n\n\tsort(nodeA, nodeB) {\n\t\t// deletion time is a unix timestamp while mtime is a JS Date -> we need to align the numbers (seconds vs milliseconds)\n\t\tconst deletionTimeA = nodeA.attributes?.['trashbin-deletion-time'] || ((nodeA?.mtime?.getTime() ?? 0) / 1000)\n\t\tconst deletionTimeB = nodeB.attributes?.['trashbin-deletion-time'] || ((nodeB?.mtime?.getTime() ?? 0) / 1000)\n\t\treturn deletionTimeB - deletionTimeA\n\t},\n})\n\n/**\n * Get the original file location of a trashbin file.\n *\n * @param node The node to parse\n */\nfunction parseOriginalLocation(node: Node): string {\n\tconst path = stringOrNull(node.attributes?.['trashbin-original-location'])\n\tif (!path) {\n\t\treturn t('files_trashbin', 'Unknown')\n\t}\n\n\tconst dir = dirname(path)\n\tif (dir === '/' || dir === '.') { // Node is in root folder\n\t\treturn t('files_trashbin', 'All files')\n\t}\n\n\treturn dir.replace(/^\\//, '')\n}\n\n/**\n * Parse a trashbin file to get information about the user that deleted the file.\n *\n * @param node The node to parse\n */\nfunction parseDeletedBy(node: Node) {\n\tconst userId = stringOrNull(node.attributes?.['trashbin-deleted-by-id'])\n\tconst displayName = stringOrNull(node.attributes?.['trashbin-deleted-by-display-name'])\n\n\tlet label: string | undefined\n\tconst currentUserId = getCurrentUser()?.uid\n\tif (userId === currentUserId) {\n\t\tlabel = t('files_trashbin', 'You')\n\t}\n\tif (!userId && !displayName) {\n\t\tlabel = t('files_trashbin', 'Unknown')\n\t}\n\n\treturn {\n\t\tuserId,\n\t\tdisplayName,\n\t\tlabel,\n\t}\n}\n\n/**\n * If the attribute is given it will be stringified and returned - otherwise null is returned.\n *\n * @param attribute The attribute to check\n */\nfunction stringOrNull(attribute: unknown): string | null {\n\tif (attribute) {\n\t\treturn String(attribute)\n\t}\n\treturn null\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport svgDelete from '@mdi/svg/svg/trash-can-outline.svg?raw'\nimport { View } from '@nextcloud/files'\nimport { t } from '@nextcloud/l10n'\nimport { getContents } from '../services/trashbin.ts'\nimport { deleted, deletedBy, originalLocation } from './columns.ts'\n\nexport const TRASHBIN_VIEW_ID = 'trashbin'\n\nexport const trashbinView = new View({\n\tid: TRASHBIN_VIEW_ID,\n\tname: t('files_trashbin', 'Deleted files'),\n\tcaption: t('files_trashbin', 'List of files that have been deleted.'),\n\n\temptyTitle: t('files_trashbin', 'No deleted files'),\n\temptyCaption: t('files_trashbin', 'Files and folders you have deleted will show up here'),\n\n\ticon: svgDelete,\n\torder: 50,\n\tsticky: true,\n\n\tdefaultSortKey: 'deleted',\n\n\tcolumns: [\n\t\toriginalLocation,\n\t\tdeletedBy,\n\t\tdeleted,\n\t],\n\n\tgetContents,\n})\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.setApp('files_trashbin')\n\t.detectUser()\n\t.build()\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileAction } from '@nextcloud/files'\n\nimport svgHistory from '@mdi/svg/svg/history.svg?raw'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios, { isAxiosError } from '@nextcloud/axios'\nimport { showError } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { Permission } from '@nextcloud/files'\nimport { t } from '@nextcloud/l10n'\nimport { encodePath } from '@nextcloud/paths'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { TRASHBIN_VIEW_ID } from '../files_views/trashbinView.ts'\nimport { logger } from '../logger.ts'\n\nexport const restoreAction: IFileAction = {\n\tid: 'restore',\n\n\tdisplayName() {\n\t\treturn t('files_trashbin', 'Restore')\n\t},\n\n\ticonSvgInline: () => svgHistory,\n\n\tenabled({ nodes, view }) {\n\t\t// Only available in the trashbin view\n\t\tif (view.id !== TRASHBIN_VIEW_ID) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Only available if all nodes have read permission\n\t\treturn nodes.length > 0\n\t\t\t&& nodes\n\t\t\t\t.map((node) => node.permissions)\n\t\t\t\t.every((permission) => Boolean(permission & Permission.READ))\n\t},\n\n\tasync exec({ nodes }) {\n\t\tconst node = nodes[0]\n\t\ttry {\n\t\t\tconst destination = generateRemoteUrl(encodePath(`dav/trashbin/${getCurrentUser()!.uid}/restore/${node.basename}`))\n\t\t\tawait axios.request({\n\t\t\t\tmethod: 'MOVE',\n\t\t\t\turl: node.encodedSource,\n\t\t\t\theaders: {\n\t\t\t\t\tdestination,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\t// Let's pretend the file is deleted since\n\t\t\t// we don't know the restored location\n\t\t\temit('files:node:deleted', node)\n\t\t\treturn true\n\t\t} catch (error) {\n\t\t\tif (isAxiosError(error) && error.response?.status === 507) {\n\t\t\t\tshowError(t('files_trashbin', 'Not enough free space to restore the file/folder'))\n\t\t\t}\n\t\t\tlogger.error('Failed to restore node', { error, node })\n\t\t\treturn false\n\t\t}\n\t},\n\n\tasync execBatch({ nodes, view, folder, contents }) {\n\t\treturn Promise.all(nodes.map((node) => this.exec({ nodes: [node], view, folder, contents })))\n\t},\n\n\torder: 1,\n\n\tinline: () => true,\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { defaultRemoteURL } from '@nextcloud/files/dav'\nimport { t } from '@nextcloud/l10n'\nimport { logger } from '../logger.ts'\n\n/**\n * Send API request to empty the trashbin.\n * Returns true if request succeeded - otherwise false is returned.\n */\nexport async function emptyTrash(): Promise {\n\ttry {\n\t\tawait axios.delete(`${defaultRemoteURL}/trashbin/${getCurrentUser()!.uid}/trash`)\n\t\tshowSuccess(t('files_trashbin', 'All files have been permanently deleted'))\n\t\treturn true\n\t} catch (error) {\n\t\tshowError(t('files_trashbin', 'Failed to empty deleted files'))\n\t\tlogger.error('Failed to empty deleted files', { error })\n\t\treturn false\n\t}\n}\n","/*\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IFileListAction } from '@nextcloud/files'\n\nimport { getDialogBuilder } from '@nextcloud/dialogs'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { TRASHBIN_VIEW_ID } from '../files_views/trashbinView.ts'\nimport { emptyTrash } from '../services/api.ts'\n\nexport type FilesTrashbinConfigState = {\n\tallow_delete: boolean\n}\n\nexport const emptyTrashAction: IFileListAction = {\n\tid: 'empty-trash',\n\n\tdisplayName: () => t('files_trashbin', 'Empty deleted files'),\n\torder: 0,\n\n\tenabled({ view, folder, contents }) {\n\t\tif (view.id !== TRASHBIN_VIEW_ID) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst config = loadState('files_trashbin', 'config')\n\t\tif (!config.allow_delete) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn contents.length > 0 && folder.path === '/'\n\t},\n\n\tasync exec({ contents }): Promise {\n\t\tconst askConfirmation = new Promise((resolve) => {\n\t\t\tconst dialog = getDialogBuilder(t('files_trashbin', 'Confirm permanent deletion'))\n\t\t\t\t.setSeverity('warning')\n\t\t\t\t// TODO Add note for groupfolders\n\t\t\t\t.setText(t('files_trashbin', 'Are you sure you want to permanently delete all files and folders in the trash? This cannot be undone.'))\n\t\t\t\t.setButtons([\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: t('files_trashbin', 'Cancel'),\n\t\t\t\t\t\tvariant: 'secondary',\n\t\t\t\t\t\tcallback: () => resolve(false),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: t('files_trashbin', 'Empty deleted files'),\n\t\t\t\t\t\tvariant: 'error',\n\t\t\t\t\t\tcallback: () => resolve(true),\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t\t.build()\n\t\t\tdialog.show().then(() => {\n\t\t\t\tresolve(false)\n\t\t\t})\n\t\t})\n\n\t\tconst result = await askConfirmation\n\t\tif (result === true) {\n\t\t\tif (await emptyTrash()) {\n\t\t\t\tcontents.forEach((node) => emit('files:node:deleted', node))\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\treturn null\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getNavigation, registerFileAction, registerFileListAction } from '@nextcloud/files'\nimport { restoreAction } from './files_actions/restoreAction.ts'\nimport { emptyTrashAction } from './files_listActions/emptyTrashAction.ts'\nimport { trashbinView } from './files_views/trashbinView.ts'\n\nimport './trashbin.scss'\n\nconst Navigation = getNavigation()\nNavigation.register(trashbinView)\n\nregisterFileListAction(emptyTrashAction)\nregisterFileAction(restoreAction)\n"],"names":["svgHistory","svgDelete","rootPath","getCurrentUser","client","getClient","data","getDavNameSpaces","getDavProperties","resultToNode","stat","node","davResultToNode","generateUrl","getContents","path","contents","folder","originalLocation","Column","t","parseOriginalLocation","span","nodeA","nodeB","locationA","locationB","getLanguage","getCanonicalLocale","deletedBy","userId","displayName","label","parseDeletedBy","el","createApp","NcUserBubble","deletedByA","deletedbyALabel","deletedByB","deletedByBLabel","deleted","deletionTime","formatter","timestamp","formatRelativeTime","deletionTimeA","stringOrNull","dir","dirname","currentUserId","attribute","TRASHBIN_VIEW_ID","trashbinView","View","logger","getLoggerBuilder","restoreAction","nodes","view","permission","Permission","destination","generateRemoteUrl","encodePath","axios","emit","error","isAxiosError","showError","emptyTrash","defaultRemoteURL","showSuccess","emptyTrashAction","loadState","resolve","getDialogBuilder","Navigation","getNavigation","registerFileListAction","registerFileAction"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/dist/files_versions-sidebar-tab.mjs b/dist/files_versions-sidebar-tab.mjs index 2f641ca95ff9d..1d34fb752be00 100644 --- a/dist/files_versions-sidebar-tab.mjs +++ b/dist/files_versions-sidebar-tab.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/FilesVersionsSidebarTab-mZplOG03.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/index-BGv_Bbjs.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-YFFzfmzN.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-CSlQTlWs.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-Fnpm9Yo9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrayArrowDown-BEbvWlY3.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/dav-DpOWisxz.chunk.mjs'),window.OC.filePath('', '', 'dist/index-D5zm-WFT.chunk.mjs'),window.OC.filePath('', '', 'dist/files_versions-FilesVersionsSidebarTab-Cjl2hr1y.chunk.css')])))=>i.map(i=>d[i]); -import{d as i,a as r,_ as e}from"./Web-DYqXJUev.chunk.mjs";import{r as t}from"./index-BGv_Bbjs.chunk.mjs";import{t as m}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{i as n}from"./public-C1mLBHT3.chunk.mjs";import{F as a}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const d='',s="files-versions_sidebar-tab";t({id:"files_versions",tagName:s,order:90,displayName:m("files_versions","Versions"),iconSvgInline:d,enabled({node:o}){return!(n()||o.type!==a.File)},async onInit(){const o=r(()=>e(()=>import("./FilesVersionsSidebarTab-mZplOG03.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),import.meta.url));window.customElements.define(s,i(o,{shadowRoot:!1}))}}); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs'),window.OC.filePath('', '', 'dist/index-mH69OG7L.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/index-BGv_Bbjs.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-YFFzfmzN.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/ArrowRight-CSlQTlWs.chunk.mjs'),window.OC.filePath('', '', 'dist/common-ArrowRight-DfvWJUh_.chunk.css'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/common-NcAvatar-1KxMUN7V-CIJAK_jb.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-Fnpm9Yo9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrayArrowDown-BEbvWlY3.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/dav-DpOWisxz.chunk.mjs'),window.OC.filePath('', '', 'dist/index-D5zm-WFT.chunk.mjs'),window.OC.filePath('', '', 'dist/files_versions-FilesVersionsSidebarTab-Cjl2hr1y.chunk.css')])))=>i.map(i=>d[i]); +import{d as i,a as r,_ as e}from"./Web-DYqXJUev.chunk.mjs";import{r as t}from"./index-BGv_Bbjs.chunk.mjs";import{t as m}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{i as n}from"./public-C1mLBHT3.chunk.mjs";import{F as a}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const d='',s="files-versions_sidebar-tab";t({id:"files_versions",tagName:s,order:90,displayName:m("files_versions","Versions"),iconSvgInline:d,enabled({node:o}){return!(n()||o.type!==a.File)},async onInit(){const o=r(()=>e(()=>import("./FilesVersionsSidebarTab-DpBNHNa_.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),import.meta.url));window.customElements.define(s,i(o,{shadowRoot:!1}))}}); //# sourceMappingURL=files_versions-sidebar-tab.mjs.map diff --git a/dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs b/dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs deleted file mode 100644 index ab5fe26d40ab9..0000000000000 --- a/dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs +++ /dev/null @@ -1,11 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/index-BGv_Bbjs.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-YFFzfmzN.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/ShareType-suoNfd7y.chunk.mjs'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcBreadcrumbs-B4eyDS9i-BknLVeOm.chunk.css'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/dav-DpOWisxz.chunk.mjs'),window.OC.filePath('', '', 'dist/index-D5zm-WFT.chunk.mjs')])))=>i.map(i=>d[i]); -import{b as j,S as M,ai as I,o as x,c as p,w as D,u as A,g as Y,t as P,h as w,f as _,v as V,_ as U}from"./Web-DYqXJUev.chunk.mjs";import{s as y,N as T}from"./index-CmDAUQql.chunk.mjs";import{t as L,g as W,l as q}from"./index-Cp0kcsps.chunk.mjs";import{l as K}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as O}from"./mdi-B6W_Xvj-.chunk.mjs";var v={exports:{}},H=v.exports,k;function R(){return k||(k=1,(function(i){(function(e,s){i.exports?i.exports=s():e.Toastify=s()})(H,function(e){var s=function(u){return new s.lib.init(u)},t="1.12.0";s.defaults={oldestFirst:!0,text:"Toastify is awesome!",node:void 0,duration:3e3,selector:void 0,callback:function(){},destination:void 0,newWindow:!1,close:!1,gravity:"toastify-top",positionLeft:!1,position:"",backgroundColor:"",avatar:"",className:"",stopOnFocus:!0,onClick:function(){},offset:{x:0,y:0},escapeMarkup:!0,ariaLive:"polite",style:{background:""}},s.lib=s.prototype={toastify:t,constructor:s,init:function(u){return u||(u={}),this.options={},this.toastElement=null,this.options.text=u.text||s.defaults.text,this.options.node=u.node||s.defaults.node,this.options.duration=u.duration===0?0:u.duration||s.defaults.duration,this.options.selector=u.selector||s.defaults.selector,this.options.callback=u.callback||s.defaults.callback,this.options.destination=u.destination||s.defaults.destination,this.options.newWindow=u.newWindow||s.defaults.newWindow,this.options.close=u.close||s.defaults.close,this.options.gravity=u.gravity==="bottom"?"toastify-bottom":s.defaults.gravity,this.options.positionLeft=u.positionLeft||s.defaults.positionLeft,this.options.position=u.position||s.defaults.position,this.options.backgroundColor=u.backgroundColor||s.defaults.backgroundColor,this.options.avatar=u.avatar||s.defaults.avatar,this.options.className=u.className||s.defaults.className,this.options.stopOnFocus=u.stopOnFocus===void 0?s.defaults.stopOnFocus:u.stopOnFocus,this.options.onClick=u.onClick||s.defaults.onClick,this.options.offset=u.offset||s.defaults.offset,this.options.escapeMarkup=u.escapeMarkup!==void 0?u.escapeMarkup:s.defaults.escapeMarkup,this.options.ariaLive=u.ariaLive||s.defaults.ariaLive,this.options.style=u.style||s.defaults.style,u.backgroundColor&&(this.options.style.background=u.backgroundColor),this},buildToast:function(){if(!this.options)throw"Toastify is not initialized";var u=document.createElement("div");u.className="toastify on "+this.options.className,this.options.position?u.className+=" toastify-"+this.options.position:this.options.positionLeft===!0?(u.className+=" toastify-left",console.warn("Property `positionLeft` will be depreciated in further versions. Please use `position` instead.")):u.className+=" toastify-right",u.className+=" "+this.options.gravity,this.options.backgroundColor&&console.warn('DEPRECATION NOTICE: "backgroundColor" is being deprecated. Please use the "style.background" property.');for(var a in this.options.style)u.style[a]=this.options.style[a];if(this.options.ariaLive&&u.setAttribute("aria-live",this.options.ariaLive),this.options.node&&this.options.node.nodeType===Node.ELEMENT_NODE)u.appendChild(this.options.node);else if(this.options.escapeMarkup?u.innerText=this.options.text:u.innerHTML=this.options.text,this.options.avatar!==""){var g=document.createElement("img");g.src=this.options.avatar,g.className="toastify-avatar",this.options.position=="left"||this.options.positionLeft===!0?u.appendChild(g):u.insertAdjacentElement("afterbegin",g)}if(this.options.close===!0){var o=document.createElement("button");o.type="button",o.setAttribute("aria-label","Close"),o.className="toast-close",o.innerHTML="✖",o.addEventListener("click",function(C){C.stopPropagation(),this.removeElement(this.toastElement),window.clearTimeout(this.toastElement.timeOutValue)}.bind(this));var m=window.innerWidth>0?window.innerWidth:screen.width;(this.options.position=="left"||this.options.positionLeft===!0)&&m>360?u.insertAdjacentElement("afterbegin",o):u.appendChild(o)}if(this.options.stopOnFocus&&this.options.duration>0){var d=this;u.addEventListener("mouseover",function(C){window.clearTimeout(u.timeOutValue)}),u.addEventListener("mouseleave",function(){u.timeOutValue=window.setTimeout(function(){d.removeElement(u)},d.options.duration)})}if(typeof this.options.destination<"u"&&u.addEventListener("click",function(C){C.stopPropagation(),this.options.newWindow===!0?window.open(this.options.destination,"_blank"):window.location=this.options.destination}.bind(this)),typeof this.options.onClick=="function"&&typeof this.options.destination>"u"&&u.addEventListener("click",function(C){C.stopPropagation(),this.options.onClick()}.bind(this)),typeof this.options.offset=="object"){var E=n("x",this.options),c=n("y",this.options),B=this.options.position=="left"?E:"-"+E,S=this.options.gravity=="toastify-top"?c:"-"+c;u.style.transform="translate("+B+","+S+")"}return u},showToast:function(){this.toastElement=this.buildToast();var u;if(typeof this.options.selector=="string"?u=document.getElementById(this.options.selector):this.options.selector instanceof HTMLElement||typeof ShadowRoot<"u"&&this.options.selector instanceof ShadowRoot?u=this.options.selector:u=document.body,!u)throw"Root element is not defined";var a=s.defaults.oldestFirst?u.firstChild:u.lastChild;return u.insertBefore(this.toastElement,a),s.reposition(),this.options.duration>0&&(this.toastElement.timeOutValue=window.setTimeout(function(){this.removeElement(this.toastElement)}.bind(this),this.options.duration)),this},hideToast:function(){this.toastElement.timeOutValue&&clearTimeout(this.toastElement.timeOutValue),this.removeElement(this.toastElement)},removeElement:function(u){u.className=u.className.replace(" on",""),window.setTimeout(function(){this.options.node&&this.options.node.parentNode&&this.options.node.parentNode.removeChild(this.options.node),u.parentNode&&u.parentNode.removeChild(u),this.options.callback.call(u),s.reposition()}.bind(this),400)}},s.reposition=function(){for(var u={top:15,bottom:15},a={top:15,bottom:15},g={top:15,bottom:15},o=document.getElementsByClassName("toastify"),m,d=0;d0?window.innerWidth:screen.width;B<=360?(o[d].style[m]=g[m]+"px",g[m]+=E+c):r(o[d],"toastify-left")===!0?(o[d].style[m]=u[m]+"px",u[m]+=E+c):(o[d].style[m]=a[m]+"px",a[m]+=E+c)}return this};function n(u,a){return a.offset[u]?isNaN(a.offset[u])?a.offset[u]:a.offset[u]+"px":"0px"}function r(u,a){return!u||typeof a!="string"?!1:!!(u.className&&u.className.trim().split(/\s+/gi).indexOf(a)>-1)}return s.lib.init.prototype=s.lib,s})})(v)),v.exports}var G=R();const Z=L(G),J='',Q='',N=K().detectLanguage();for(const i of[{language:"ar",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" لا يصلح كاسم مجلد.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" غير مسموح به كاسم مجلد']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" غير مسموح به داخل اسم مجلد.']},{msgid:"All files",msgstr:["كل الملفات"]},{msgid:"Choose",msgstr:["إختَر"]},{msgid:"Choose {file}",msgstr:["إختر {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["إختَر %n ملف","إختَر %n ملف","إختَر %n ملف","إختَر %n ملفات","إختَر %n ملف","إختر %n ملف"]},{msgid:"Copy",msgstr:["نسخ"]},{msgid:"Copy to {target}",msgstr:["نسخ إلى {target}"]},{msgid:"Could not create the new folder",msgstr:["تعذّر إنشاء المجلد الجديد"]},{msgid:"Could not load files settings",msgstr:["يتعذّر تحميل إعدادات الملفات"]},{msgid:"Could not load files views",msgstr:["تعذر تحميل عرض الملفات"]},{msgid:"Create directory",msgstr:["إنشاء مجلد"]},{msgid:"Current view selector",msgstr:["محدد العرض الحالي"]},{msgid:"Favorites",msgstr:["المفضلة"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["الملفات والمجلدات التي تحددها كمفضلة ستظهر هنا."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["الملفات و المجلدات التي قمت مؤخراً بتعديلها سوف تظهر هنا."]},{msgid:"Filter file list",msgstr:["تصفية قائمة الملفات"]},{msgid:"Folder name cannot be empty.",msgstr:["اسم المجلد لا يمكن أن يكون فارغاً."]},{msgid:"Home",msgstr:["البداية"]},{msgid:"Modified",msgstr:["التعديل"]},{msgid:"Move",msgstr:["نقل"]},{msgid:"Move to {target}",msgstr:["نقل إلى {target}"]},{msgid:"Name",msgstr:["الاسم"]},{msgid:"New",msgstr:["جديد"]},{msgid:"New folder",msgstr:["مجلد جديد"]},{msgid:"New folder name",msgstr:["اسم المجلد الجديد"]},{msgid:"No files in here",msgstr:["لا توجد ملفات هنا"]},{msgid:"No files matching your filter were found.",msgstr:["لا توجد ملفات تتطابق مع عامل التصفية الذي وضعته"]},{msgid:"No matching files",msgstr:["لا توجد ملفات مطابقة"]},{msgid:"Recent",msgstr:["الحالي"]},{msgid:"Select all entries",msgstr:["حدد جميع الإدخالات"]},{msgid:"Select entry",msgstr:["إختَر المدخل"]},{msgid:"Select the row for {nodename}",msgstr:["إختر سطر الـ {nodename}"]},{msgid:"Size",msgstr:["الحجم"]},{msgid:"Undo",msgstr:["تراجع"]},{msgid:"Upload some content or sync with your devices!",msgstr:["قم برفع بعض المحتوى أو المزامنة مع أجهزتك!"]}]},{language:"ast",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["«{name}» ye un nome de carpeta inválidu."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["«{name}» ye un nome de carpeta inválidu"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["Nun se permite'l caráuter «/» dientro'l nome de les carpetes."]},{msgid:"All files",msgstr:["Tolos ficheros"]},{msgid:"Choose",msgstr:["Escoyer"]},{msgid:"Choose {file}",msgstr:["Escoyer «{ficheru}»"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escoyer %n ficheru","Escoyer %n ficheros"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar en: {target}"]},{msgid:"Could not create the new folder",msgstr:["Nun se pudo crear la carpeta"]},{msgid:"Could not load files settings",msgstr:["Nun se pudo cargar la configuración de los ficheros"]},{msgid:"Could not load files views",msgstr:["Nun se pudieron cargar les vistes de los ficheros"]},{msgid:"Create directory",msgstr:["Crear un direutoriu"]},{msgid:"Current view selector",msgstr:["Selector de la vista actual"]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Equí apaecen los ficheros y les carpetes que metas en Favoritos."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Equí apaecen los fichero y les carpetes que modificares apocayá."]},{msgid:"Filter file list",msgstr:["Peñerar la llista de ficheros"]},{msgid:"Folder name cannot be empty.",msgstr:["El nome de la carpeta nun pue tar baleru."]},{msgid:"Home",msgstr:["Aniciu"]},{msgid:"Modified",msgstr:["Modificóse"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"New",msgstr:["Nuevu"]},{msgid:"New folder",msgstr:["Carpeta nueva"]},{msgid:"New folder name",msgstr:["Nome de carpeta nuevu"]},{msgid:"No files in here",msgstr:["Equí nun hai nengún ficheru"]},{msgid:"No files matching your filter were found.",msgstr:["Nun s'atopó nengún ficheru que concasare cola peñera."]},{msgid:"No matching files",msgstr:["Nun hai nengún ficheru que concase"]},{msgid:"Recent",msgstr:["De recién"]},{msgid:"Select all entries",msgstr:["Seleicionar toles entraes"]},{msgid:"Select entry",msgstr:["Seleicionar la entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleicionar la filera de: {nodename}"]},{msgid:"Size",msgstr:["Tamañu"]},{msgid:"Undo",msgstr:["Desfacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Xubi dalgún elementu o sincroniza colos tos preseos!"]}]},{language:"ca",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:[`No és permès d'usar el caràcter "{char}" en un nom.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" no és un nom permès.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" no és vàlid com a nom de carpeta.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" no és vàlid com a nom de carpeta']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" és un mot reservat i no està permès com a nom.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:[`"/" no està permès en el nom d'una carpeta.`]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n conflicte de fitxers","%n conflictes de fitxers"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n onflicte de fitxers a {dirname}","%n conflictes de fitxers a {dirname}"]},{msgid:"All files",msgstr:["Tots els fitxers"]},{msgid:"Cancel",msgstr:["Cancel·lar"]},{msgid:"Cancel the entire operation",msgstr:["Cancel·lar tota l'operació"]},{msgid:"Choose",msgstr:["Tria"]},{msgid:"Choose {file}",msgstr:["Tria {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Tria %n fitxer","Tria %n fitxers"]},{msgid:"Confirm",msgstr:["Confirma"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copia"]},{msgid:"Copy to {target}",msgstr:["Copia a {target}"]},{msgid:"Could not create the new folder",msgstr:["No s'ha pogut crear la carpeta nova"]},{msgid:"Could not load files settings",msgstr:["No es poden carregar fitxers de configuració"]},{msgid:"Could not load files views",msgstr:["No es poden carregar fitxers de vistes"]},{msgid:"Create directory",msgstr:["Crea un directori"]},{msgid:"Current view selector",msgstr:["Selector de visualització actual"]},{msgid:"Enter your name",msgstr:["Escriviu el vostre nom"]},{msgid:"Existing version",msgstr:["Versió existent"]},{msgid:"Failed to set nickname.",msgstr:["No s'ha pogut desar el sobrenom."]},{msgid:"Favorites",msgstr:["Preferits"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Els fitxers i les carpetes que marqueu com a favorits es mostraran aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Els fitxers i les carpetes recentment modificats es mostraran aquí."]},{msgid:"Filter file list",msgstr:["Filtrar llistat de fitxers"]},{msgid:"Folder name cannot be empty.",msgstr:["El nom de la carpeta no pot estar buit."]},{msgid:"Guest identification",msgstr:["Identificació com a convidat"]},{msgid:"Home",msgstr:["Inici"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom."]},{msgid:"Invalid name.",msgstr:["Nom no vàlid."]},{msgid:"Last modified date unknown",msgstr:["Data de l'última modificació desconeguda"]},{msgid:"Modified",msgstr:["Data de modificació"]},{msgid:"Move",msgstr:["Desplaça"]},{msgid:"Move to {target}",msgstr:["Desplaça a {target}"]},{msgid:"Name",msgstr:["Nom"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Els noms poden tenir com a màxim 64 caràcters."]},{msgid:"Names must not be empty.",msgstr:["Els noms no poden ser buits."]},{msgid:'Names must not end with "{extension}".',msgstr:[`Els noms no poden acabar amb l'extensió "{extension}".`]},{msgid:"Names must not start with a dot.",msgstr:["Els noms no poden començar amb un punt."]},{msgid:"New",msgstr:["Crea"]},{msgid:"New folder",msgstr:["Carpeta nova"]},{msgid:"New folder name",msgstr:["Nom de la carpeta nova"]},{msgid:"New version",msgstr:["Nova versió"]},{msgid:"No files in here",msgstr:["No hi ha cap fitxer"]},{msgid:"No files matching your filter were found.",msgstr:["No s'ha trobat cap fitxer que coincideixi amb el filtre."]},{msgid:"No matching files",msgstr:["No hi ha cap fitxer que coincideixi"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Si us plau, escriu un nom amb 2 caràcters com a mínim."]},{msgid:"Recent",msgstr:["Recents"]},{msgid:"Select all checkboxes",msgstr:["Selecciona totes les caselles de selecció"]},{msgid:"Select all entries",msgstr:["Selecciona totes les entrades"]},{msgid:"Select all existing files",msgstr:["Selecciona tots els fitxers existents"]},{msgid:"Select all new files",msgstr:["Selecciona tots els fitxers nous"]},{msgid:"Select entry",msgstr:["Selecciona l'entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Selecciona la fila per a {nodename}"]},{msgid:"Size",msgstr:["Mida"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Omet %n fitxer","Omet %n fitxers"]},{msgid:"Skip this file",msgstr:["Omet aquest fitxer"]},{msgid:"Submit name",msgstr:["Entreu el nom"]},{msgid:"Undo",msgstr:["Desfés"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Pugeu contingut o sincronitzeu-lo amb els vostres dispositius!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Quan es selecciona una carpeta entrant, també se sobreescriuran els fitxers que hi entrin en conflicte."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quan es selecciona una carpeta entrant, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes."]},{msgid:"Which files do you want to keep?",msgstr:["Quins fitxers voleu conservar?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Actualment se us mostra com a {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Actualment no esteu identificat."]},{msgid:"You cannot leave the name empty.",msgstr:["No podeu deixar el nom buit."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Heu de triar com a mínim una solució de conflicte"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Heu de seleccionar com a mínim una versió de cada fitxer per continuar."]}]},{language:"cs_CZ",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["znak „{char}“ není možné použít uvnitř názvu složky."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["„{char}“ není možné použít uvnitř názvu."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["„{extension}“ není možné použít jako název."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["„{segment}“ je vyhrazeným názvem a není možné ho používat pro názvy složek."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["„{segment}“ je vyhrazeným názvem a není možné ho použít."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n kolize souboru","%n kolize souborů","%n kolizí souborů","%n kolize souborů"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n kolize souborů v {dirname}","%n kolize souborů v {dirname}","%n kolizí souborů v {dirname}","%n kolize souborů v {dirname}"]},{msgid:"All files",msgstr:["Veškeré soubory"]},{msgid:"Cancel",msgstr:["Storno"]},{msgid:"Cancel the entire operation",msgstr:["Zrušit celou operaci"]},{msgid:"Choose",msgstr:["Zvolit"]},{msgid:"Choose {file}",msgstr:["Zvolit {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Zvolte %n soubor","Zvolte %n soubory","Zvolte %n souborů","Zvolte %n soubory"]},{msgid:"Confirm",msgstr:["Potvrdit"]},{msgid:"Continue",msgstr:["Pokračovat"]},{msgid:"Copy",msgstr:["Zkopírovat"]},{msgid:"Copy to {target}",msgstr:["Zkopírovat do {target}"]},{msgid:"Could not create the new folder",msgstr:["Novou složku se nepodařilo vytvořit"]},{msgid:"Could not load files settings",msgstr:["Nepodařilo se načíst nastavení pro soubory"]},{msgid:"Could not load files views",msgstr:["Nepodařilo se načíst pohledy souborů"]},{msgid:"Create directory",msgstr:["Vytvořit složku"]},{msgid:"Current view selector",msgstr:["Výběr stávajícího zobrazení"]},{msgid:"Enter your name",msgstr:["Zadejte své jméno"]},{msgid:"Existing version",msgstr:["Existující verze"]},{msgid:"Failed to set nickname.",msgstr:["Nepodařilo se nastavit přezdívku."]},{msgid:"Favorites",msgstr:["Oblíbené"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Zde se zobrazí soubory a složky, které označíte jako oblíbené."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Zde se zobrazí soubory a složky, které jste nedávno pozměnili."]},{msgid:"Filter file list",msgstr:["Filtrovat seznam souborů"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Názvy složek nemohou končit na „{extension}“."]},{msgid:"Guest identification",msgstr:["Identifikace hosta"]},{msgid:"Home",msgstr:["Domů"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Pokud vyberete obě verze, pak k názvu příchozího souboru bude přidáno číslo."]},{msgid:"Invalid folder name.",msgstr:["Neplatný název složky."]},{msgid:"Invalid name.",msgstr:["Neplatný název."]},{msgid:"Last modified date unknown",msgstr:["Datum poslední změny neznámé"]},{msgid:"Modified",msgstr:["Změněno"]},{msgid:"Move",msgstr:["Přesounout"]},{msgid:"Move to {target}",msgstr:["Přesunout do {target}"]},{msgid:"Name",msgstr:["Název"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Je třeba, aby délka jmen nepřesahovala 64 znaků."]},{msgid:"Names must not be empty.",msgstr:["Názvy je třeba vyplnit."]},{msgid:'Names must not end with "{extension}".',msgstr:["Názvy nemohou končit na „{extension}“."]},{msgid:"Names must not start with a dot.",msgstr:["Názvy nemohou začínat tečkou."]},{msgid:"New",msgstr:["Nové"]},{msgid:"New folder",msgstr:["Nová složka"]},{msgid:"New folder name",msgstr:["Název pro novou složku"]},{msgid:"New version",msgstr:["Nová verze"]},{msgid:"No files in here",msgstr:["Nejsou zde žádné soubory"]},{msgid:"No files matching your filter were found.",msgstr:["Nenalezeny žádné soubory odpovídající vašemu filtru"]},{msgid:"No matching files",msgstr:["Žádné odpovídající soubory"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Zadejte jméno dlouhé alespoň 2 znaky."]},{msgid:"Recent",msgstr:["Nedávné"]},{msgid:"Select all checkboxes",msgstr:["Vybrat všechny zaškrtávací kolonky"]},{msgid:"Select all entries",msgstr:["Vybrat všechny položky"]},{msgid:"Select all existing files",msgstr:["Vybrat všechny existující soubory"]},{msgid:"Select all new files",msgstr:["Vybrat všechny nové soubory"]},{msgid:"Select entry",msgstr:["Vybrat položku"]},{msgid:"Select the row for {nodename}",msgstr:["Vybrat řádek pro {nodename}"]},{msgid:"Size",msgstr:["Velikost"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Přeskočit %n soubor","Přeskočit %n soubory","Přeskočit %n souborů","Přeskočit %n soubory"]},{msgid:"Skip this file",msgstr:["Přeskočit tento soubor"]},{msgid:"Submit name",msgstr:["Odeslat jméno"]},{msgid:"Undo",msgstr:["Zpět"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Nahrajte sem nějaký obsah nebo proveďte synchronizaci se svými zařízeními!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Pokud je vybrána příchozí složka, budou v ní také přepsány jakékoli kolidující soubory."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Pokud je vybrána příchozí složka, je obsah zapsán do existující složky a je provedeno rekurzivní vyřešení kolizí."]},{msgid:"Which files do you want to keep?",msgstr:["Které soubory chcete ponechat?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["V tuto chvíli jste identifikováni jako {nickname}."]},{msgid:"You are currently not identified.",msgstr:["V tuto chvíli nejste identifikovaní."]},{msgid:"You cannot leave the name empty.",msgstr:["Jméno nelze ponechat nevyplněné."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Je třeba zvolit alespoň jedno z řešení kolize"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru."]}]},{language:"da",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" er ikke tilladt i et navn.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" er ikke tilladt i et navn.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" er et ugyldigt mappenavn.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" er ikke et tilladt mappenavn']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" er et reserveret navn og er derfor ikke tilladt.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" er ikke tilladt i et mappenavn.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n filkonflikt","%n filer konflikter"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n filkonflikt i {dirname}","%n filkonflikter i {dirname}"]},{msgid:"All files",msgstr:["Alle filer"]},{msgid:"Cancel",msgstr:["Fortryd"]},{msgid:"Cancel the entire operation",msgstr:["Annullér hele operationen"]},{msgid:"Choose",msgstr:["Vælg"]},{msgid:"Choose {file}",msgstr:["Vælg {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Vælg %n fil","Vælg %n filer"]},{msgid:"Confirm",msgstr:["Bekræft"]},{msgid:"Continue",msgstr:["Fortsæt"]},{msgid:"Copy",msgstr:["Kopier"]},{msgid:"Copy to {target}",msgstr:["Kopier til {target}"]},{msgid:"Could not create the new folder",msgstr:["Kunne ikke oprette den nye mappe"]},{msgid:"Could not load files settings",msgstr:["Filindstillingerne kunne ikke indlæses"]},{msgid:"Could not load files views",msgstr:["Kunne ikke indlæse filvisninger"]},{msgid:"Create directory",msgstr:["Opret mappe"]},{msgid:"Current view selector",msgstr:["Aktuel visningsvælger"]},{msgid:"Enter your name",msgstr:["Indtast dit navn"]},{msgid:"Existing version",msgstr:["Eksisterende version"]},{msgid:"Failed to set nickname.",msgstr:["Forsøg på at gemme kaldenavn mislykkedes."]},{msgid:"Favorites",msgstr:["Favoritter"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Filer og mapper, du markerer som foretrukne, vises her."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Filer og mapper, du for nylig har ændret, vises her."]},{msgid:"Filter file list",msgstr:["Filtrer fil liste"]},{msgid:"Folder name cannot be empty.",msgstr:["Mappenavnet må ikke være tomt."]},{msgid:"Guest identification",msgstr:["Gæsteidentifikation"]},{msgid:"Home",msgstr:["Hjem"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn."]},{msgid:"Invalid name.",msgstr:["Ugyldigt navn."]},{msgid:"Last modified date unknown",msgstr:["Senest ændret dato ukendt"]},{msgid:"Modified",msgstr:["Ændret"]},{msgid:"Move",msgstr:["Flyt"]},{msgid:"Move to {target}",msgstr:["Flyt til {target}"]},{msgid:"Name",msgstr:["Navn"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Navne kan højst være 64 tegn lange."]},{msgid:"Names must not be empty.",msgstr:["Navne kan ikke være tomt."]},{msgid:'Names must not end with "{extension}".',msgstr:['Navne må ikke ende på "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Navne skal starte med et punktum."]},{msgid:"New",msgstr:["Ny"]},{msgid:"New folder",msgstr:["Ny mappe"]},{msgid:"New folder name",msgstr:["Ny mappe navn"]},{msgid:"New version",msgstr:["Ny version"]},{msgid:"No files in here",msgstr:["Ingen filer here"]},{msgid:"No files matching your filter were found.",msgstr:["Der blev ikke fundet nogen filer, der matcher dit filter."]},{msgid:"No matching files",msgstr:["Ingen matchende filer"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Indtast et navn med mindst 2 tegn."]},{msgid:"Recent",msgstr:["Seneste"]},{msgid:"Select all checkboxes",msgstr:["Markér alle afkrydsningsfelter"]},{msgid:"Select all entries",msgstr:["Vælg alle poster"]},{msgid:"Select all existing files",msgstr:["Vælg alle eksisterende filer"]},{msgid:"Select all new files",msgstr:["Vælg alle nye filer"]},{msgid:"Select entry",msgstr:["Vælg post"]},{msgid:"Select the row for {nodename}",msgstr:["Vælg rækken for {nodenavn}"]},{msgid:"Size",msgstr:["Størelse"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Spring %n fil over","Spring %n filer over"]},{msgid:"Skip this file",msgstr:["Spring denne fil over"]},{msgid:"Submit name",msgstr:["Indsend navn"]},{msgid:"Undo",msgstr:["Fortryd"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Upload noget indhold eller synkroniser med dine enheder!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Når en indkommende mappe er valgt, vil eventuelle modstridende filer i det også blive overskrevet."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Når en indkommende mappe er valgt, er indholdet skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres."]},{msgid:"Which files do you want to keep?",msgstr:["Hvilke filer vil du have?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du er i øjeblikket identificeret som {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Du er ikke identificeret."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kan ikke efterlade navnet tomt."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Du skal vælge mindst én konfliktløsning"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du skal vælge mindst én version af hver fil for at fortsætte."]}]},{language:"de",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" ist innerhalb eines Ordnernamens nicht zulässig.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" ist innerhalb eines Namens nicht zulässig.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ist kein zulässiger Name.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig für Ordnernamen.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n Dateikonflikt","%n Dateikonflikte"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n Dateikonflikt in {dirname}","%n Dateikonflikte in {dirname}"]},{msgid:"All files",msgstr:["Alle Dateien"]},{msgid:"Cancel",msgstr:["Abbrechen"]},{msgid:"Cancel the entire operation",msgstr:["Den gesamten Vorgang abbrechen"]},{msgid:"Choose",msgstr:["Auswählen"]},{msgid:"Choose {file}",msgstr:["{file} auswählen"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n Datei auswählen","%n Dateien auswählen"]},{msgid:"Confirm",msgstr:["Bestätigen"]},{msgid:"Continue",msgstr:["Fortsetzen"]},{msgid:"Copy",msgstr:["Kopieren"]},{msgid:"Copy to {target}",msgstr:["Nach {target} kopieren"]},{msgid:"Could not create the new folder",msgstr:["Der neue Ordner konnte nicht erstellt werden"]},{msgid:"Could not load files settings",msgstr:["Dateieinstellungen konnten nicht geladen werden"]},{msgid:"Could not load files views",msgstr:["Dateiansichten konnten nicht geladen werden"]},{msgid:"Create directory",msgstr:["Verzeichnis erstellen"]},{msgid:"Current view selector",msgstr:["Aktuelle Ansichtsauswahl"]},{msgid:"Enter your name",msgstr:["Gib deinen Namen ein"]},{msgid:"Existing version",msgstr:["Vorhandene Version"]},{msgid:"Failed to set nickname.",msgstr:["Spitzname konnte nicht gespeichert werden."]},{msgid:"Favorites",msgstr:["Favoriten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Dateien und Ordner, die du als Favorit markierst, werden hier angezeigt."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Dateien und Ordner, die du kürzlich geändert hast, werden hier angezeigt."]},{msgid:"Filter file list",msgstr:["Dateiliste filtern"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Ordnernamen dürfen nicht mit "{extension}" enden.']},{msgid:"Guest identification",msgstr:["Gast-Identifikation"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt."]},{msgid:"Invalid folder name.",msgstr:["Ungültiger Ordnername."]},{msgid:"Invalid name.",msgstr:["Ungültiger Name."]},{msgid:"Last modified date unknown",msgstr:["Datum der letzten Änderung unbekannt"]},{msgid:"Modified",msgstr:["Geändert"]},{msgid:"Move",msgstr:["Verschieben"]},{msgid:"Move to {target}",msgstr:["Nach {target} verschieben"]},{msgid:"Name",msgstr:["Name"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namen dürfen maximal 64 Zeichen lang sein."]},{msgid:"Names must not be empty.",msgstr:["Namen dürfen nicht leer sein."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namen dürfen nicht mit "{extension}" enden.']},{msgid:"Names must not start with a dot.",msgstr:["Namen dürfen nicht mit einem Punkt beginnen."]},{msgid:"New",msgstr:["Neu"]},{msgid:"New folder",msgstr:["Neuer Ordner"]},{msgid:"New folder name",msgstr:["Neuer Ordnername"]},{msgid:"New version",msgstr:["Neue Version"]},{msgid:"No files in here",msgstr:["Hier sind keine Dateien"]},{msgid:"No files matching your filter were found.",msgstr:["Es wurden keine Dateien gefunden, die deinem Filter entsprechen."]},{msgid:"No matching files",msgstr:["Keine passenden Dateien"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Bitte einen Namen mit mindestens zwei Zeichen eingeben."]},{msgid:"Recent",msgstr:["Neueste"]},{msgid:"Select all checkboxes",msgstr:["Alle Kontrollkästchen aktivieren"]},{msgid:"Select all entries",msgstr:["Alle Einträge auswählen"]},{msgid:"Select all existing files",msgstr:["Alle vorhandenen Dateien auswählen"]},{msgid:"Select all new files",msgstr:["Alle neuen Dateien auswählen"]},{msgid:"Select entry",msgstr:["Eintrag auswählen"]},{msgid:"Select the row for {nodename}",msgstr:["Die Zeile für {nodename} auswählen."]},{msgid:"Size",msgstr:["Größe"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n Datei überspringen","%n Dateien überspringen"]},{msgid:"Skip this file",msgstr:["Diese Datei überspringen"]},{msgid:"Submit name",msgstr:["Namen senden"]},{msgid:"Undo",msgstr:["Rückgängig machen"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Lade Inhalte hoch oder synchronisiere diese mit deinen Geräten!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt."]},{msgid:"Which files do you want to keep?",msgstr:["Welche Dateien sollen behalten werden?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du bist derzeit als {nickname} identifiziert."]},{msgid:"You are currently not identified.",msgstr:["Du bist momentan nicht identifiziert."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kannst den Namen nicht leer lassen."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Es muss mindestens eine Konfliktlösung gewählt werden"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren."]}]},{language:"de_DE",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" ist innerhalb eines Ordnernamens nicht zulässig.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" ist innerhalb eines Namens nicht zulässig.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ist kein zulässiger Name.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig für Ordnernamen.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n Dateikonflikt","%n Dateikonflikte"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n Dateikonflikt in {dirname}","%n Dateikonflikte in {dirname}"]},{msgid:"All files",msgstr:["Alle Dateien"]},{msgid:"Cancel",msgstr:["Abbrechen"]},{msgid:"Cancel the entire operation",msgstr:["Den gesamten Vorgang abbrechen"]},{msgid:"Choose",msgstr:["Auswählen"]},{msgid:"Choose {file}",msgstr:["{file} auswählen"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n Datei auswählen","%n Dateien auswählen"]},{msgid:"Confirm",msgstr:["Bestätigen"]},{msgid:"Continue",msgstr:["Fortsetzen"]},{msgid:"Copy",msgstr:["Kopieren"]},{msgid:"Copy to {target}",msgstr:["Nach {target} kopieren"]},{msgid:"Could not create the new folder",msgstr:["Der neue Ordner konnte nicht erstellt werden"]},{msgid:"Could not load files settings",msgstr:["Dateieinstellungen konnten nicht geladen werden"]},{msgid:"Could not load files views",msgstr:["Dateiansichten konnten nicht geladen werden"]},{msgid:"Create directory",msgstr:["Verzeichnis erstellen"]},{msgid:"Current view selector",msgstr:["Aktuelle Ansichtsauswahl"]},{msgid:"Enter your name",msgstr:["Geben Sie Ihren Namen ein"]},{msgid:"Existing version",msgstr:["Vorhandene Version"]},{msgid:"Failed to set nickname.",msgstr:["Spitzname konnte nicht gespeichert werden."]},{msgid:"Favorites",msgstr:["Favoriten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Dateien und Ordner, die Sie als Favorit markieren, werden hier angezeigt."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Dateien und Ordner, die Sie kürzlich geändert haben, werden hier angezeigt."]},{msgid:"Filter file list",msgstr:["Dateiliste filtern"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Ordnernamen dürfen nicht mit "{extension}" enden.']},{msgid:"Guest identification",msgstr:["Gast-Identifikation"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt."]},{msgid:"Invalid folder name.",msgstr:["Ungültiger Ordnername."]},{msgid:"Invalid name.",msgstr:["Ungültiger Name."]},{msgid:"Last modified date unknown",msgstr:["Datum der letzten Änderung unbekannt"]},{msgid:"Modified",msgstr:["Geändert"]},{msgid:"Move",msgstr:["Verschieben"]},{msgid:"Move to {target}",msgstr:["Nach {target} verschieben"]},{msgid:"Name",msgstr:["Name"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namen dürfen maximal 64 Zeichen lang sein."]},{msgid:"Names must not be empty.",msgstr:["Namen dürfen nicht leer sein."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namen dürfen nicht mit "{extension}" enden.']},{msgid:"Names must not start with a dot.",msgstr:["Namen dürfen nicht mit einem Punkt beginnen."]},{msgid:"New",msgstr:["Neu"]},{msgid:"New folder",msgstr:["Neuer Ordner"]},{msgid:"New folder name",msgstr:["Neuer Ordnername"]},{msgid:"New version",msgstr:["Neue Version"]},{msgid:"No files in here",msgstr:["Hier sind keine Dateien"]},{msgid:"No files matching your filter were found.",msgstr:["Es wurden keine Dateien gefunden, die Ihrem Filter entsprechen."]},{msgid:"No matching files",msgstr:["Keine passenden Dateien"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Bitte einen Namen mit mindestens zwei Zeichen eingeben."]},{msgid:"Recent",msgstr:["Neueste"]},{msgid:"Select all checkboxes",msgstr:["Alle Kontrollkästchen aktivieren"]},{msgid:"Select all entries",msgstr:["Alle Einträge auswählen"]},{msgid:"Select all existing files",msgstr:["Alle vorhandenen Dateien auswählen"]},{msgid:"Select all new files",msgstr:["Alle neuen Dateien auswählen"]},{msgid:"Select entry",msgstr:["Eintrag auswählen"]},{msgid:"Select the row for {nodename}",msgstr:["Die Zeile für {nodename} auswählen."]},{msgid:"Size",msgstr:["Größe"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n Datei überspringen","%n Dateien überspringen"]},{msgid:"Skip this file",msgstr:["Diese Datei überspringen"]},{msgid:"Submit name",msgstr:["Namen senden"]},{msgid:"Undo",msgstr:["Rückgängig machen"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Laden Sie Inhalte hoch oder synchronisieren Sie diese mit Ihren Geräten!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt."]},{msgid:"Which files do you want to keep?",msgstr:["Welche Dateien sollen behalten werden?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sie sind derzeit als {nickname} identifiziert."]},{msgid:"You are currently not identified.",msgstr:["Sie sind momentan nicht identifiziert."]},{msgid:"You cannot leave the name empty.",msgstr:["Sie können den Namen nicht leer lassen."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Es muss mindestens eine Konfliktlösung gewählt werden"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren."]}]},{language:"el",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["Το «{char}» δεν επιτρέπεται μέσα σε όνομα φακέλου."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" δεν επιτρέπεται μέσα σε ένα όνομα.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" δεν είναι επιτρεπτό όνομα.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["Το «{segment}» είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται για ονόματα φακέλων."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n σύγκρουση αρχείου","%n σύγκρουση αρχείων"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n σύγκρουση αρχείου στο {dirname}","%n σύγκρουση αρχείων στο {dirname}"]},{msgid:"All files",msgstr:["Όλα τα αρχεία"]},{msgid:"Cancel",msgstr:["Ακύρωση"]},{msgid:"Cancel the entire operation",msgstr:["Ακύρωση όλης της διαδικασίας"]},{msgid:"Choose",msgstr:["Επιλογή"]},{msgid:"Choose {file}",msgstr:["Επιλέξτε {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Επιλέξτε %n αρχείο","Επιλέξτε %n αρχεία"]},{msgid:"Confirm",msgstr:["Επιβεβαίωση"]},{msgid:"Continue",msgstr:["Συνέχεια"]},{msgid:"Copy",msgstr:["Αντιγραφή"]},{msgid:"Copy to {target}",msgstr:["Αντιγραφή στο {target}"]},{msgid:"Could not create the new folder",msgstr:["Αδυναμία δημιουργίας νέου φακέλου"]},{msgid:"Could not load files settings",msgstr:["Αδυναμία φόρτωσης ρυθμίσεων αρχείων"]},{msgid:"Could not load files views",msgstr:["Αδυναμία φόρτωσης προβολών αρχείων"]},{msgid:"Create directory",msgstr:["Δημιουργία καταλόγου"]},{msgid:"Current view selector",msgstr:["Επιλογέας τρέχουσας προβολής"]},{msgid:"Enter your name",msgstr:["Εισάγετε το όνομά σας"]},{msgid:"Existing version",msgstr:["Υφιστάμενη έκδοση"]},{msgid:"Failed to set nickname.",msgstr:["Αποτυχία στην ρύθμιση του ψευδώνυμου."]},{msgid:"Favorites",msgstr:["Αγαπημένα"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Τα αρχεία και οι φάκελοι που επισημάνετε ως αγαπημένα θα εμφανίζονται εδώ."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Τα αρχεία και οι φάκελοι που τροποποιήσατε πρόσφατα θα εμφανίζονται εδώ."]},{msgid:"Filter file list",msgstr:["Φιλτράρισμα λίστας αρχείων"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Τα ονόματα των φακέλων δεν πρέπει να τελειώνουν με «{extension}»."]},{msgid:"Guest identification",msgstr:["Ταυτοποίηση επισκέπτη"]},{msgid:"Home",msgstr:["Αρχική"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Εάν επιλέξετε και τις δύο εκδόσεις, στο όνομα του εισερχόμενου αρχείου θα προστεθεί ένας αριθμός."]},{msgid:"Invalid folder name.",msgstr:["Μη έγκυρο όνομα φακέλου."]},{msgid:"Invalid name.",msgstr:["Μη έγκυρο όνομα."]},{msgid:"Last modified date unknown",msgstr:["Άγνωστη ημερομηνία τελευταίας τροποποίησης"]},{msgid:"Modified",msgstr:["Τροποποιήθηκε"]},{msgid:"Move",msgstr:["Μετακίνηση"]},{msgid:"Move to {target}",msgstr:["Μετακίνηση στο {target}"]},{msgid:"Name",msgstr:["Όνομα"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Τα ονόματα μπορούν να έχουν μέγιστο μήκος 64 χαρακτήρες."]},{msgid:"Names must not be empty.",msgstr:["Τα ονόματα δεν πρέπει να είναι κενά."]},{msgid:'Names must not end with "{extension}".',msgstr:['Τα ονόματα δεν πρέπει να τελειώνουν με "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Τα ονόματα δεν πρέπει να ξεκινούν με τελεία."]},{msgid:"New",msgstr:["Νέο"]},{msgid:"New folder",msgstr:["Νέος φάκελος"]},{msgid:"New folder name",msgstr:["Όνομα νέου φακέλου"]},{msgid:"New version",msgstr:["Νέα έκδοση"]},{msgid:"No files in here",msgstr:["Δεν υπάρχουν αρχεία εδώ"]},{msgid:"No files matching your filter were found.",msgstr:["Δεν βρέθηκαν αρχεία που να ταιριάζουν με το φίλτρο σας."]},{msgid:"No matching files",msgstr:["Κανένα αρχείο δεν ταιριάζει"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Παρακαλώ εισάγετε ένα όνομα με τουλάχιστον 2 χαρακτήρες."]},{msgid:"Recent",msgstr:["Πρόσφατα"]},{msgid:"Select all checkboxes",msgstr:["Επιλέξτε όλα τα πλαίσια ελέγχου"]},{msgid:"Select all entries",msgstr:["Επιλογή όλων των καταχωρήσεων"]},{msgid:"Select all existing files",msgstr:["Επιλογή όλων των υπάρχοντων αρχείων"]},{msgid:"Select all new files",msgstr:["Επιλογή όλων των νέων αρχείων"]},{msgid:"Select entry",msgstr:["Επιλογή εγγραφής"]},{msgid:"Select the row for {nodename}",msgstr:["Επιλέξτε τη γραμμή για το {nodename}"]},{msgid:"Size",msgstr:["Μέγεθος"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Παράλειψη ενός αρχείου","Παράλειψη %n αρχείων"]},{msgid:"Skip this file",msgstr:["Παράλειψη αυτού το αρχείου"]},{msgid:"Submit name",msgstr:["Υποβολή ονόματος"]},{msgid:"Undo",msgstr:["Αναίρεση"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Ανεβάστε κάποιο περιεχόμενο ή συγχρονίστε με τις συσκευές σας!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Όταν επιλέγεται ένας φάκελος εισερχομένων, όλα τα αρχεία που βρίσκονται σε σύγκρουση μέσα σε αυτόν θα αντικατασταθούν επίσης."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Όταν επιλέγεται ένας φάκελος εισερχομένων, το περιεχόμενο εγγράφεται στον υπάρχοντα φάκελο και εκτελείται μια αναδρομική επίλυση σύγκρουσης."]},{msgid:"Which files do you want to keep?",msgstr:["Ποια αρχεία θέλετε να διατηρήσετε;"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Αυτή τη στιγμή έχετε αναγνωριστεί ως {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Δεν έχετε ταυτοποιηθεί."]},{msgid:"You cannot leave the name empty.",msgstr:["Δεν μπορείτε να αφήσετε το όνομα κενό."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Πρέπει να επιλέξετε τουλάχιστον μία λύση σύγκρουσης"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Πρέπει να επιλέξετε τουλάχιστον μία έκδοση από κάθε αρχείο για να συνεχίσετε."]}]},{language:"en_GB",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" is not allowed inside a folder name.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" is not allowed inside a name.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" is not an allowed name.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" is a reserved name and cannot be used for folder names.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" is a reserved name and not allowed.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n file conflict","%n files conflict"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n file conflict in {dirname}","%n file conflicts in {dirname}"]},{msgid:"All files",msgstr:["All files"]},{msgid:"Cancel",msgstr:["Cancel"]},{msgid:"Cancel the entire operation",msgstr:["Cancel the entire operation"]},{msgid:"Choose",msgstr:["Choose"]},{msgid:"Choose {file}",msgstr:["Choose {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Choose %n file","Choose %n files"]},{msgid:"Confirm",msgstr:["Confirm"]},{msgid:"Continue",msgstr:["Continue"]},{msgid:"Copy",msgstr:["Copy"]},{msgid:"Copy to {target}",msgstr:["Copy to {target}"]},{msgid:"Could not create the new folder",msgstr:["Could not create the new folder"]},{msgid:"Could not load files settings",msgstr:["Could not load files settings"]},{msgid:"Could not load files views",msgstr:["Could not load files views"]},{msgid:"Create directory",msgstr:["Create directory"]},{msgid:"Current view selector",msgstr:["Current view selector"]},{msgid:"Enter your name",msgstr:["Enter your name"]},{msgid:"Existing version",msgstr:["Existing version"]},{msgid:"Failed to set nickname.",msgstr:["Failed to set nickname."]},{msgid:"Favorites",msgstr:["Favourites"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Files and folders you mark as favourite will show up here."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Files and folders you recently modified will show up here."]},{msgid:"Filter file list",msgstr:["Filter file list"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Folder names must not end with "{extension}".']},{msgid:"Guest identification",msgstr:["Guest identification"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["If you select both versions, the incoming file will have a number added to its name."]},{msgid:"Invalid folder name.",msgstr:["Invalid folder name."]},{msgid:"Invalid name.",msgstr:["Invalid name."]},{msgid:"Last modified date unknown",msgstr:["Last modified date unknown"]},{msgid:"Modified",msgstr:["Modified"]},{msgid:"Move",msgstr:["Move"]},{msgid:"Move to {target}",msgstr:["Move to {target}"]},{msgid:"Name",msgstr:["Name"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Names may be at most 64 characters long."]},{msgid:"Names must not be empty.",msgstr:["Names must not be empty."]},{msgid:'Names must not end with "{extension}".',msgstr:['Names must not end with "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Names must not start with a dot."]},{msgid:"New",msgstr:["New"]},{msgid:"New folder",msgstr:["New folder"]},{msgid:"New folder name",msgstr:["New folder name"]},{msgid:"New version",msgstr:["New version"]},{msgid:"No files in here",msgstr:["No files in here"]},{msgid:"No files matching your filter were found.",msgstr:["No files matching your filter were found."]},{msgid:"No matching files",msgstr:["No matching files"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Please enter a name with at least 2 characters."]},{msgid:"Recent",msgstr:["Recent"]},{msgid:"Select all checkboxes",msgstr:["Select all checkboxes"]},{msgid:"Select all entries",msgstr:["Select all entries"]},{msgid:"Select all existing files",msgstr:["Select all existing files"]},{msgid:"Select all new files",msgstr:["Select all new files"]},{msgid:"Select entry",msgstr:["Select entry"]},{msgid:"Select the row for {nodename}",msgstr:["Select the row for {nodename}"]},{msgid:"Size",msgstr:["Size"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Skip %n file","Skip %n files"]},{msgid:"Skip this file",msgstr:["Skip this file"]},{msgid:"Submit name",msgstr:["Submit name"]},{msgid:"Undo",msgstr:["Undo"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Upload some content or sync with your devices!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["When an incoming folder is selected, any conflicting files within it will also be overwritten."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed."]},{msgid:"Which files do you want to keep?",msgstr:["Which files do you want to keep?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["You are currently identified as {nickname}."]},{msgid:"You are currently not identified.",msgstr:["You are currently not identified."]},{msgid:"You cannot leave the name empty.",msgstr:["You cannot leave the name empty."]},{msgid:"You need to choose at least one conflict solution",msgstr:["You need to choose at least one conflict solution"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["You need to select at least one version of each file to continue."]}]},{language:"es",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" no está permitido dentro de un nombre.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" no es un nombre permitido.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" es un nombre de carpeta no válido.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" no es un nombre de carpeta permitido']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" es un nombre reservado y no está permitido.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" no está permitido dentro del nombre de una carpeta.']},{msgid:"All files",msgstr:["Todos los archivos"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Choose",msgstr:["Seleccionar"]},{msgid:"Choose {file}",msgstr:["Seleccionar {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Elige %n archivo","Elige %n archivos","Seleccione %n archivos"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar a {target}"]},{msgid:"Could not create the new folder",msgstr:["No se pudo crear la nueva carpeta"]},{msgid:"Could not load files settings",msgstr:["No se pudieron cargar los ajustes de archivos"]},{msgid:"Could not load files views",msgstr:["No se pudieron cargar las vistas de los archivos"]},{msgid:"Create directory",msgstr:["Crear directorio"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Enter your name",msgstr:["Ingrese su nombre"]},{msgid:"Failed to set nickname.",msgstr:["Fallo al establecer apodo."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Los archivos y carpetas que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Los archivos y carpetas que modificó recientemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar lista de archivos"]},{msgid:"Folder name cannot be empty.",msgstr:["El nombre de la carpeta no puede estar vacío."]},{msgid:"Guest identification",msgstr:["Identificación de invitado"]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"Invalid name.",msgstr:["Nombre inválido."]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nombre"]},{msgid:"Names must not be empty.",msgstr:["Los nombres no deben estar vacíos."]},{msgid:'Names must not end with "{extension}".',msgstr:['Los nombres no deben terminar con "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Los nombres no deben iniciar con un punto."]},{msgid:"New",msgstr:["Nuevo"]},{msgid:"New folder",msgstr:[" Nueva carpeta"]},{msgid:"New folder name",msgstr:["Nuevo nombre de carpeta"]},{msgid:"No files in here",msgstr:["No hay archivos aquí"]},{msgid:"No files matching your filter were found.",msgstr:["No se encontraron archivos que coincidiesen con su filtro."]},{msgid:"No matching files",msgstr:["No hay archivos coincidentes"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Por favor, ingrese un nombre con al menos 2 caracteres."]},{msgid:"Recent",msgstr:["Reciente"]},{msgid:"Select all entries",msgstr:["Seleccionar todas las entradas"]},{msgid:"Select entry",msgstr:["Seleccionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccione la fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Submit name",msgstr:["Enviar nombre"]},{msgid:"Undo",msgstr:["Deshacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Cargue algún contenido o sincronice con sus dispositivos!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Ud. se encuentra identificado actualmente como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Ud. no se encuentra identificado actualmente."]},{msgid:"You cannot leave the name empty.",msgstr:["No puede dejar el nombre vacío."]}]},{language:"es_AR",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" es un nombre de carpeta inválido.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" no es un nombre de carpeta permitido']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" no está permitido en el nombre de una carpeta.']},{msgid:"All files",msgstr:["Todos los archivos"]},{msgid:"Choose",msgstr:["Elegir"]},{msgid:"Choose {file}",msgstr:["Elija {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Elija %n archivo","Elija %n archivos","Elija %n archivos"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar a {target}"]},{msgid:"Could not create the new folder",msgstr:["No se pudo crear la nueva carpeta"]},{msgid:"Could not load files settings",msgstr:["No se pudo cargar la configuración de archivos"]},{msgid:"Could not load files views",msgstr:["No se pudieron cargar las vistas de los archivos"]},{msgid:"Create directory",msgstr:["Crear directorio"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Los archivos y carpetas que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Los archivos y carpetas que modificó recientemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar lista de archivos"]},{msgid:"Folder name cannot be empty.",msgstr:["El nombre de la carpeta no puede estar vacío."]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nombre"]},{msgid:"New",msgstr:["Nuevo"]},{msgid:"New folder",msgstr:["Nueva carpeta"]},{msgid:"New folder name",msgstr:["Nombre de nueva carpeta"]},{msgid:"No files in here",msgstr:["No hay archivos aquí"]},{msgid:"No files matching your filter were found.",msgstr:["No se encontraron archivos que coincidan con su filtro."]},{msgid:"No matching files",msgstr:["No hay archivos coincidentes"]},{msgid:"Recent",msgstr:["Reciente"]},{msgid:"Select all entries",msgstr:["Seleccionar todas las entradas"]},{msgid:"Select entry",msgstr:["Seleccionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccione la fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Undo",msgstr:["Deshacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Cargue algún contenido o sincronice con sus dispositivos!"]}]},{language:"es_MX",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" no está permitido dentro de un nombre de carpeta']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" no está permitido dentro de un nombre']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" no es un nombre permitido']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" es un nombre reservado y no está permitido para nombres de carpetas']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" es un nombre reservado y no está permitido']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n conflicto de archivo","%n conflicto de archivos","%n conflicto de archivos"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n conflicto de archivo en {dirname}","%n conflictos de archivo en {dirname}","%n conflictos de archivo en {dirname}"]},{msgid:"All files",msgstr:["Todos los archivos"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar la operación completa"]},{msgid:"Choose",msgstr:["Seleccionar"]},{msgid:"Choose {file}",msgstr:["Seleccionar {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Seleccionar %n archivo","Seleccionar %n archivos","Seleccionar %n archivos"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar a {target}"]},{msgid:"Could not create the new folder",msgstr:["No se pudo crear la nueva carpeta"]},{msgid:"Could not load files settings",msgstr:["No se pudo cargar la configuración de archivos"]},{msgid:"Could not load files views",msgstr:["No se pudieron cargar las vistas de los archivos"]},{msgid:"Create directory",msgstr:["Crear carpeta"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Enter your name",msgstr:["Ingresa tu nombre"]},{msgid:"Existing version",msgstr:["Versión existente"]},{msgid:"Failed to set nickname.",msgstr:["No se pudo establecer el nickname"]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Los archivos y carpetas que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Los archivos y carpetas que modificó recientemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar lista de archivos"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Los nombres para carpeta no deben terminar con "{extension}"']},{msgid:"Guest identification",msgstr:["Identificación de invitado"]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si seleccionas ambas versiones, se le agregará al archivo que se está descargando, un número a su nombre."]},{msgid:"Invalid folder name.",msgstr:["Nombre de carpeta no válido"]},{msgid:"Invalid name.",msgstr:["Nombre no válido"]},{msgid:"Last modified date unknown",msgstr:["Última fecha de modificación desconocida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nombre"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Los nombres pueden tener como máximo 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["Los nombres no deben estar vacíos."]},{msgid:'Names must not end with "{extension}".',msgstr:['Los nombres no deben terminar con "{extension}"']},{msgid:"Names must not start with a dot.",msgstr:["Los nombres no deben comenzar con un punto."]},{msgid:"New",msgstr:["Nuevo"]},{msgid:"New folder",msgstr:["Nueva carpeta"]},{msgid:"New folder name",msgstr:["Nombre de nueva carpeta"]},{msgid:"New version",msgstr:["Versión nueva"]},{msgid:"No files in here",msgstr:["No hay archivos aquí"]},{msgid:"No files matching your filter were found.",msgstr:["No se encontraron archivos que coincidan con su filtro."]},{msgid:"No matching files",msgstr:["No hay archivos coincidentes"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Por favor ingrese un nombre con al menos 2 caracteres."]},{msgid:"Recent",msgstr:["Reciente"]},{msgid:"Select all checkboxes",msgstr:["Seleccione todas las casillas de verificación"]},{msgid:"Select all entries",msgstr:["Seleccionar todas las entradas"]},{msgid:"Select all existing files",msgstr:["Seleccione todos los archivos que aparecen"]},{msgid:"Select all new files",msgstr:["Seleccione todos los archivos nuevos"]},{msgid:"Select entry",msgstr:["Seleccionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccione la fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Omitir %n archivo","Omitir %n archivos","Omitir %n archivos"]},{msgid:"Skip this file",msgstr:["Omitir este archivo"]},{msgid:"Submit name",msgstr:["Enviar nombre"]},{msgid:"Undo",msgstr:["Deshacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Suba algún contenido o sincronice con sus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cuando se selecciona una carpeta en descarga, cualquier archivo conflictivo que contenga también se sobrescribirá."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cuando se selecciona una carpeta en descarga, el contenido se escribe en la carpeta existente y se realiza una resolución de conflicto recursiva."]},{msgid:"Which files do you want to keep?",msgstr:["¿Qué archivos deseas conservar?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Actualmente estás identificado como {nickname}"]},{msgid:"You are currently not identified.",msgstr:["No estás identificado actualmente."]},{msgid:"You cannot leave the name empty.",msgstr:["No puedes dejar el nombre vacío."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Necesitas elegir al menos una solución al conflicto."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Necesitas seleccionar al menos una versión de cada archivo para continuar."]}]},{language:"et_EE",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["„{char}“ pole kausta nimes lubatud."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["„{char}“ pole nimes lubatud."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["„{extension}“ pole lubatud nimi."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["„{segment}“ on reserveeritud nimi ja pole kausta nimes lubatud."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["„{segment}“ on reserveeritud nimi ja pole kasutamiseks lubatud."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n fail on vastuolus","%n faili on omavahel vastuolus"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n fail on {dirname} kaustas vastuolus","%n faili on omavahel {dirname} kaustas vastuolus"]},{msgid:"All files",msgstr:["Kõik failid"]},{msgid:"Cancel",msgstr:["Katkesta"]},{msgid:"Cancel the entire operation",msgstr:["Katkesta kogu tegevus"]},{msgid:"Choose",msgstr:["Tee valik"]},{msgid:"Choose {file}",msgstr:["Vali {file} fail"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Vali %n fail","Vali %n faili"]},{msgid:"Confirm",msgstr:["Kinnita"]},{msgid:"Continue",msgstr:["Jätka"]},{msgid:"Copy",msgstr:["Kopeeri"]},{msgid:"Copy to {target}",msgstr:["Kopeeri sihtkohta „{target}“"]},{msgid:"Could not create the new folder",msgstr:["Uut kausta ei saanud luua"]},{msgid:"Could not load files settings",msgstr:["Failide seadistusi ei õnnestunud laadida"]},{msgid:"Could not load files views",msgstr:["Failide vaatamiskordi ei õnnestunud laadida"]},{msgid:"Create directory",msgstr:["Loo kaust"]},{msgid:"Current view selector",msgstr:["Praeguse vaate valija"]},{msgid:"Enter your name",msgstr:["Sisesta oma nimi"]},{msgid:"Existing version",msgstr:["Olemasolev versioon"]},{msgid:"Failed to set nickname.",msgstr:["Hüüdnime ei õnnestunud lisada"]},{msgid:"Favorites",msgstr:["Lemmikud"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Failid ja kaustad, mida märgistad lemmikuks, kuvatakse siin."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Siin kuvatakse hiljuti muudetud failid ja kaustad."]},{msgid:"Filter file list",msgstr:["Filtreeri faililoendit"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Kausta nime lõpus ei tohi olla „{extension}“."]},{msgid:"Guest identification",msgstr:["Külalise tuvastamine"]},{msgid:"Home",msgstr:["Avaleht"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Kui valid mõlemad versioonid, siis uue faili nimele lisatakse number."]},{msgid:"Invalid folder name.",msgstr:["Vigane kausta nimi."]},{msgid:"Invalid name.",msgstr:["Vigane nimi."]},{msgid:"Last modified date unknown",msgstr:["Viimase muutmise kuupäev pole teada"]},{msgid:"Modified",msgstr:["Muudetud"]},{msgid:"Move",msgstr:["Teisalda"]},{msgid:"Move to {target}",msgstr:["Teisalda kausta „{target}“"]},{msgid:"Name",msgstr:["Nimi"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nimed võivad olla vaid kuni 64 tähemärki pikad."]},{msgid:"Names must not be empty.",msgstr:["Nimi ei saa olla tühi."]},{msgid:'Names must not end with "{extension}".',msgstr:["Nime lõpus ei tohi olla „{extension}“."]},{msgid:"Names must not start with a dot.",msgstr:["Nime alguses ei tohi olla punkt."]},{msgid:"New",msgstr:["Uus"]},{msgid:"New folder",msgstr:["Uus kaust"]},{msgid:"New folder name",msgstr:["Uue kausta nimi"]},{msgid:"New version",msgstr:["Uus versioon"]},{msgid:"No files in here",msgstr:["Siin puuduvad failid"]},{msgid:"No files matching your filter were found.",msgstr:["Sinu filtrile vastavaid faile ei leidunud."]},{msgid:"No matching files",msgstr:["Puuduvad sobivad failid"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Palun sisesta vähemalt 2 tähemärki pikk nimi."]},{msgid:"Recent",msgstr:["Hiljutine"]},{msgid:"Select all checkboxes",msgstr:["Vali kõik märkeruudud"]},{msgid:"Select all entries",msgstr:["Vali kõik kirjed"]},{msgid:"Select all existing files",msgstr:["Vali kõik olemasolevad failid"]},{msgid:"Select all new files",msgstr:["Vali kõik uued failid"]},{msgid:"Select entry",msgstr:["Vali kirje"]},{msgid:"Select the row for {nodename}",msgstr:["Vali rida „{nodename}“ jaoks"]},{msgid:"Size",msgstr:["Suurus"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Jäta %n fail vahele","Jäta %n faili vahele"]},{msgid:"Skip this file",msgstr:["Jäta see fail vahele"]},{msgid:"Submit name",msgstr:["Lisa nimi"]},{msgid:"Undo",msgstr:["Tühista"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Lisa mingit sisu või sünkrooni see oma seadmetest!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Kui uute failide kaust on valitud, siis kõik seal leiduvad vastuolus failid saavad üle kirjutatud."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Kui uute failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja korraldatakse rekursiivne failikonfliktide lahendamine."]},{msgid:"Which files do you want to keep?",msgstr:["Missugused failid tahaksid alles jätta?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sa oled hetkel tuvastatav kui {nickname}.."]},{msgid:"You are currently not identified.",msgstr:["Sa oled hetkel tuvastamata."]},{msgid:"You cannot leave the name empty.",msgstr:["Sa ei saa jätte nime tühjaks."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Sa pead valima vähemalt ühe failikonflikti lahenduse."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Jätkamaks pead valima igast failist vähemalt ühe versiooni."]}]},{language:"fa",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} نام پوشه معتبر نیست"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} نام پوشه مجاز نیست"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" نمی‌تواند در نام پوشه استفاده شود.']},{msgid:"All files",msgstr:["همه فایل‌ها"]},{msgid:"Cancel",msgstr:["لغو"]},{msgid:"Choose",msgstr:["انتخاب"]},{msgid:"Choose {file}",msgstr:["انتخاب {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["انتخاب %n فایل","انتخاب %n فایل"]},{msgid:"Copy",msgstr:["رونوشت"]},{msgid:"Copy to {target}",msgstr:["رونوشت از {target}"]},{msgid:"Could not create the new folder",msgstr:["پوشه جدید ایجاد نشد"]},{msgid:"Could not load files settings",msgstr:["تنظیمات فایل باز نشد"]},{msgid:"Could not load files views",msgstr:["نمای فایل‌ها بارگیری نشد"]},{msgid:"Create directory",msgstr:["ایجاد فهرست"]},{msgid:"Current view selector",msgstr:["انتخابگر نماگر فعلی"]},{msgid:"Enter your name",msgstr:["نام خود را وارد کنید"]},{msgid:"Failed to set nickname.",msgstr:["تنظیم نام مستعار ناموفق بود."]},{msgid:"Favorites",msgstr:["علایق"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["فایل‌ها و پوشه‌هایی که به‌عنوان مورد علاقه علامت‌گذاری می‌کنید در اینجا نشان داده می‌شوند."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["فایل‌ها و پوشه‌هایی که اخیراً تغییر داده‌اید در اینجا نمایش داده می‌شوند."]},{msgid:"Filter file list",msgstr:["فیلتر لیست فایل"]},{msgid:"Folder name cannot be empty.",msgstr:["نام پوشه نمی تواند خالی باشد."]},{msgid:"Guest identification",msgstr:["شناسایی مهمان"]},{msgid:"Home",msgstr:["خانه"]},{msgid:"Modified",msgstr:["اصلاح شده"]},{msgid:"Move",msgstr:["انتقال"]},{msgid:"Move to {target}",msgstr:["انتقال به {target}"]},{msgid:"Name",msgstr:["نام"]},{msgid:"New",msgstr:["جدید"]},{msgid:"New folder",msgstr:["پوشه جدید"]},{msgid:"New folder name",msgstr:["نام پوشه جدید"]},{msgid:"No files in here",msgstr:["فایلی اینجا نیست"]},{msgid:"No files matching your filter were found.",msgstr:["هیچ فایلی مطابق با فیلتر شما یافت نشد."]},{msgid:"No matching files",msgstr:["فایل منطبقی وجود ندارد"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["لطفاً نامی با حداقل ۲ کاراکتر وارد کنید."]},{msgid:"Recent",msgstr:["اخیر"]},{msgid:"Select all entries",msgstr:["انتخاب همه ورودی ها"]},{msgid:"Select entry",msgstr:["انتخاب ورودی"]},{msgid:"Select the row for {nodename}",msgstr:["انتخاب ردیف برای {nodename}"]},{msgid:"Size",msgstr:["اندازه"]},{msgid:"Submit name",msgstr:["ارسال نام"]},{msgid:"Undo",msgstr:["بازگردانی"]},{msgid:"Upload some content or sync with your devices!",msgstr:["مقداری محتوا آپلود کنید یا با دستگاه های خود همگام سازی کنید!"]},{msgid:"You are currently not identified.",msgstr:["شما در حال حاضر شناسایی نشده‌اید."]},{msgid:"You cannot leave the name empty.",msgstr:["نمی‌توانید نام را خالی بگذارید."]}]},{language:"fi_FI",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" ei ole sallittu nimessä.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ei ole sallittu nimi.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" on virheellinen kansion nimi.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" ei ole sallittu kansion nimi']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" on varattu nimi eikä se ole sallittu.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" ei ole sallittu kansion nimessä.']},{msgid:"All files",msgstr:["Kaikki tiedostot"]},{msgid:"Cancel",msgstr:["Peruuta"]},{msgid:"Choose",msgstr:["Valitse"]},{msgid:"Choose {file}",msgstr:["Valitse {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Valitse %n tiedosto","Valitse %n tiedostoa"]},{msgid:"Copy",msgstr:["Kopioi"]},{msgid:"Copy to {target}",msgstr:["Kopioi sijaintiin {target}"]},{msgid:"Could not create the new folder",msgstr:["Uutta kansiota ei voitu luoda"]},{msgid:"Could not load files settings",msgstr:["Tiedoston asetuksia ei saa ladattua"]},{msgid:"Could not load files views",msgstr:["Tiedoston näkymiä ei saa ladattua"]},{msgid:"Create directory",msgstr:["Luo kansio"]},{msgid:"Current view selector",msgstr:["Nykyisen näkymän valinta"]},{msgid:"Enter your name",msgstr:["Kirjoita nimesi"]},{msgid:"Failed to set nickname.",msgstr:["Kutsumanimen asettaminen epäonnistui."]},{msgid:"Favorites",msgstr:["Suosikit"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Tiedostot ja kansiot, jotka merkitset suosikkeihisi, näkyvät täällä."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Tiedostot ja kansiot, joita muokkasit äskettäin, näkyvät täällä."]},{msgid:"Filter file list",msgstr:["Suodata tiedostolistaa"]},{msgid:"Folder name cannot be empty.",msgstr:["Kansion nimi ei voi olla tyhjä."]},{msgid:"Guest identification",msgstr:["Vieraan tunnistaminen"]},{msgid:"Home",msgstr:["Koti"]},{msgid:"Invalid name.",msgstr:["Virheellinen nimi."]},{msgid:"Modified",msgstr:["Muokattu"]},{msgid:"Move",msgstr:["Siirrä"]},{msgid:"Move to {target}",msgstr:["Siirrä sijaintiin {target}"]},{msgid:"Name",msgstr:["Nimi"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nimissä voi olla enintään 64 merkkiä."]},{msgid:"Names must not be empty.",msgstr:["Nimet eivät saa olla tyhjiä."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nimet eivät saa päättyä sanaan "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nimet eivät saa alkaa pisteellä."]},{msgid:"New",msgstr:["Uusi"]},{msgid:"New folder",msgstr:["Uusi kansio"]},{msgid:"New folder name",msgstr:["Uuden kansion nimi"]},{msgid:"No files in here",msgstr:["Täällä ei ole tiedostoja"]},{msgid:"No files matching your filter were found.",msgstr:["Suodatinta vastaavia tiedostoja ei löytynyt."]},{msgid:"No matching files",msgstr:["Ei vastaavia tiedostoja"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Kirjoita vähintään kaksi merkkiä sisältävä nimi."]},{msgid:"Recent",msgstr:["Viimeisimmät"]},{msgid:"Select all entries",msgstr:["Valitse kaikki tietueet"]},{msgid:"Select entry",msgstr:["Valitse tietue"]},{msgid:"Select the row for {nodename}",msgstr:["Valitse rivi {nodename}:lle"]},{msgid:"Size",msgstr:["Koko"]},{msgid:"Submit name",msgstr:["Lähetä nimi"]},{msgid:"Undo",msgstr:["Kumoa"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Lähetä jotain sisältöä tai synkronoi laitteidesi kanssa!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sinut tunnetaan tällä hetkellä nimellä {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Sinua ei ole tunnistettu."]},{msgid:"You cannot leave the name empty.",msgstr:["Nimeä ei voi jättää tyhjäksi."]}]},{language:"fr",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:[`"{char}" n'est pas autorisé dans un nom de dossier.`]},{msgid:'"{char}" is not allowed inside a name.',msgstr:[`"{char}" n'est pas autorisé dans un nom.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:[`"{extension}" n'est pas un nom autorisé.`]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:[`"{segment}" est un nom réservé et n'est pas autorisé pour un nom de dossier.`]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:[`"{segment}" est un nom réservé et n'est pas autorisé.`]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n conflit de fichier","%n conflit de fichiers","%n conflit de fichiers"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%nconflit de fichier dans {dirname}","%n conflit de fichiers dans {dirname}","%nconflit de fichiers dans {dirname}"]},{msgid:"All files",msgstr:["Tous les fichiers"]},{msgid:"Cancel",msgstr:["Annuler"]},{msgid:"Cancel the entire operation",msgstr:["Tout annuler "]},{msgid:"Choose",msgstr:["Choisir"]},{msgid:"Choose {file}",msgstr:["Choisir {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Choisir %n fichier","Choisir %n fichiers","Choisir %n fichiers "]},{msgid:"Confirm",msgstr:["Confirmer"]},{msgid:"Continue",msgstr:["Continuer"]},{msgid:"Copy",msgstr:["Copier"]},{msgid:"Copy to {target}",msgstr:["Copier vers {target}"]},{msgid:"Could not create the new folder",msgstr:["Impossible de créer le nouveau dossier"]},{msgid:"Could not load files settings",msgstr:["Les paramètres des fichiers n'ont pas pu être chargés"]},{msgid:"Could not load files views",msgstr:["Impossible de charger les vues des fichiers"]},{msgid:"Create directory",msgstr:["Créer un répertoire"]},{msgid:"Current view selector",msgstr:["Sélecteur d'affichage actuel"]},{msgid:"Enter your name",msgstr:["Entrez votre nom"]},{msgid:"Existing version",msgstr:["Version actuelle "]},{msgid:"Failed to set nickname.",msgstr:["Échec de définition du surnom."]},{msgid:"Favorites",msgstr:["Favoris"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Les fichiers et répertoires marqués en favoris apparaîtront ici."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Les fichiers et répertoires modifiés récemment apparaîtront ici."]},{msgid:"Filter file list",msgstr:["Filtrer la liste des fichiers"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Les noms de dossiers ne doivent pas se terminer par "{extension}".']},{msgid:"Guest identification",msgstr:["Identification d'invité"]},{msgid:"Home",msgstr:["Accueil"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si vous conservez les deux versions, le fichier reçu sera renommé avec un numéro."]},{msgid:"Invalid folder name.",msgstr:["Nom de dossier invalide."]},{msgid:"Invalid name.",msgstr:["Nom invalide."]},{msgid:"Last modified date unknown",msgstr:["Date de modification inconnue"]},{msgid:"Modified",msgstr:["Modifié"]},{msgid:"Move",msgstr:["Déplacer"]},{msgid:"Move to {target}",msgstr:["Déplacer vers {target}"]},{msgid:"Name",msgstr:["Nom"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Les noms peuvent comporter au maximum 64 caractères."]},{msgid:"Names must not be empty.",msgstr:["Les noms ne peuvent pas être vides."]},{msgid:'Names must not end with "{extension}".',msgstr:['Les noms ne doivent pas se terminer par "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Les noms ne peuvent pas commencer par un point."]},{msgid:"New",msgstr:["Nouveau"]},{msgid:"New folder",msgstr:["Nouveau dossier"]},{msgid:"New folder name",msgstr:["Nom du nouveau dossier"]},{msgid:"New version",msgstr:["Nouvelle version"]},{msgid:"No files in here",msgstr:["Aucun fichier ici"]},{msgid:"No files matching your filter were found.",msgstr:["Aucun fichier trouvé correspondant à votre filtre."]},{msgid:"No matching files",msgstr:["Aucun fichier correspondant"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Veuillez entrer un nom avec au moins 2 caractères."]},{msgid:"Recent",msgstr:["Récents"]},{msgid:"Select all checkboxes",msgstr:["Sélectionner toutes les cases à cocher"]},{msgid:"Select all entries",msgstr:["Tout sélectionner"]},{msgid:"Select all existing files",msgstr:["Sélectionner tous les fichiers existants"]},{msgid:"Select all new files",msgstr:["Sélectionner tous les nouveaux fichiers"]},{msgid:"Select entry",msgstr:["Sélectionner une entrée"]},{msgid:"Select the row for {nodename}",msgstr:["Sélectionner la ligne correspondant à {nodename}"]},{msgid:"Size",msgstr:["Taille"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Ignorer %n fichier","Ignorer %n fichiers ","Ignorer %n fichiers "]},{msgid:"Skip this file",msgstr:["Ignorer ce fichier"]},{msgid:"Submit name",msgstr:["Envoyer le nom"]},{msgid:"Undo",msgstr:["Annuler"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Chargez du contenu ou synchronisez avec vos équipements !"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["En sélectionnant un dossier entrant, les fichiers en conflit qu’il contient seront automatiquement écrasés."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Lorsque vous sélectionnez un dossier entrant, son contenu est ajouté au dossier existant et les conflits sont résolus automatiquement."]},{msgid:"Which files do you want to keep?",msgstr:["Quels fichiers souhaitez-vous conserver ?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Vous êtes actuellement identifié comme {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Vous n'êtes pas identifié actuellement."]},{msgid:"You cannot leave the name empty.",msgstr:["Vous ne pouvez pas laisser le nom vide."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Vous devez choisir au moins une option pour résoudre le conflit"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Sélectionnez au moins une version de chaque fichier pour continuer."]}]},{language:"ga",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:[`Ní cheadaítear "{char}" laistigh d'ainm fillteáin.`]},{msgid:'"{char}" is not allowed inside a name.',msgstr:[`Ní cheadaítear "{char}" laistigh d'ainm.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:['Ní ainm ceadaithe é "{extension}".']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:[`Is ainm curtha in áirithe é "{segment}" agus ní cheadaítear é d'ainmneacha fillteán.`]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['Is ainm curtha in áirithe é "{segment}" agus ní cheadaítear é.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n coimhlint comhaid","%n coimhlint comhad","%n coimhlint comhad","%n coimhlint comhad","%n coimhlint comhad"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n coimhlint comhaid i {dirname}","%n coimhlintí comhaid i {dirname}","%n coimhlintí comhaid i {dirname}","%n coimhlintí comhaid i {dirname}","%n coimhlintí comhaid i {dirname}"]},{msgid:"All files",msgstr:["Gach comhad"]},{msgid:"Cancel",msgstr:["Cealaigh"]},{msgid:"Cancel the entire operation",msgstr:["Cealaigh an oibríocht ar fad"]},{msgid:"Choose",msgstr:["Roghnaigh"]},{msgid:"Choose {file}",msgstr:["Roghnaigh {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Roghnaigh %n comhad","Roghnaigh %n comhaid","Roghnaigh %n comhaid","Roghnaigh %n comhaid","Roghnaigh %n comhaid"]},{msgid:"Confirm",msgstr:["Deimhnigh"]},{msgid:"Continue",msgstr:["Lean ar aghaidh"]},{msgid:"Copy",msgstr:["Cóip"]},{msgid:"Copy to {target}",msgstr:["Cóipeáil chuig {target}"]},{msgid:"Could not create the new folder",msgstr:["Níorbh fhéidir an fillteán nua a chruthú"]},{msgid:"Could not load files settings",msgstr:["Níorbh fhéidir socruithe comhaid a lódáil"]},{msgid:"Could not load files views",msgstr:["Níorbh fhéidir radhairc comhad a lódáil"]},{msgid:"Create directory",msgstr:["Cruthaigh eolaire"]},{msgid:"Current view selector",msgstr:["Roghnóir amhairc reatha"]},{msgid:"Enter your name",msgstr:["Cuir isteach d'ainm"]},{msgid:"Existing version",msgstr:["Leagan atá ann cheana féin"]},{msgid:"Failed to set nickname.",msgstr:["Theip ar leasainm a shocrú."]},{msgid:"Favorites",msgstr:["Ceanáin"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Taispeánfar comhaid agus fillteáin a d'athraigh tú le déanaí anseo."]},{msgid:"Filter file list",msgstr:["Scag liosta comhad"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Ní féidir ainmneacha fillteán a chríochnú le "{extension}".']},{msgid:"Guest identification",msgstr:["Aitheantas aoi"]},{msgid:"Home",msgstr:["Baile"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Má roghnaíonn tú an dá leagan, cuirfear uimhir le hainm an chomhaid atá ag teacht isteach."]},{msgid:"Invalid folder name.",msgstr:["Ainm fillteáin neamhbhailí."]},{msgid:"Invalid name.",msgstr:["Ainm neamhbhailí."]},{msgid:"Last modified date unknown",msgstr:["Dáta an athraithe dheireanaigh anaithnid"]},{msgid:"Modified",msgstr:["Athraithe"]},{msgid:"Move",msgstr:["Bog"]},{msgid:"Move to {target}",msgstr:["Bog go{target}"]},{msgid:"Name",msgstr:["Ainm"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Ní fhéadfaidh ainmneacha a bheith níos mó ná 64 carachtar ar fhad."]},{msgid:"Names must not be empty.",msgstr:["Ní féidir ainmneacha a bheith folamh."]},{msgid:'Names must not end with "{extension}".',msgstr:['Ní féidir ainmneacha a chríochnú le "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Ní mór ainmneacha a bheith ag tosú le ponc."]},{msgid:"New",msgstr:["Nua"]},{msgid:"New folder",msgstr:["Fillteán nua"]},{msgid:"New folder name",msgstr:["Ainm fillteáin nua"]},{msgid:"New version",msgstr:["Leagan nua"]},{msgid:"No files in here",msgstr:["Níl aon chomhaid istigh anseo"]},{msgid:"No files matching your filter were found.",msgstr:["Níor aimsíodh aon chomhad a tháinig le do scagaire."]},{msgid:"No matching files",msgstr:["Gan comhaid meaitseála"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Cuir isteach ainm ina bhfuil 2 charachtar ar a laghad."]},{msgid:"Recent",msgstr:["le déanaí"]},{msgid:"Select all checkboxes",msgstr:["Roghnaigh na boscaí seiceála go léir"]},{msgid:"Select all entries",msgstr:["Roghnaigh gach iontráil"]},{msgid:"Select all existing files",msgstr:["Roghnaigh na comhaid uile atá ann cheana"]},{msgid:"Select all new files",msgstr:["Roghnaigh gach comhad nua"]},{msgid:"Select entry",msgstr:["Roghnaigh iontráil"]},{msgid:"Select the row for {nodename}",msgstr:["Roghnaigh an ró do {nodename}"]},{msgid:"Size",msgstr:["Méid"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Léim %n comhad","Léim %n comhaid","Léim %n comhaid","Léim %n comhaid","Léim %n comhaid"]},{msgid:"Skip this file",msgstr:["Scipeáil an comhad seo"]},{msgid:"Submit name",msgstr:["Cuir isteach ainm"]},{msgid:"Undo",msgstr:["Cealaigh"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Uaslódáil roinnt ábhair nó sioncronaigh le do ghléasanna!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Nuair a roghnaítear fillteán isteach, déanfar aon chomhaid choimhlinteacha ann a athscríobh freisin."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach sa fhillteán atá ann cheana féin agus déantar réiteach coinbhleachta athchúrsach."]},{msgid:"Which files do you want to keep?",msgstr:["Cé na comhaid ar mhaith leat a choinneáil?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Is é {nickname} an ainm atá ort faoi láthair."]},{msgid:"You are currently not identified.",msgstr:["Níl aitheantas tugtha duit faoi láthair."]},{msgid:"You cannot leave the name empty.",msgstr:["Ní féidir leat an t-ainm a fhágáil folamh."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Ní mór duit réiteach coinbhleachta amháin ar a laghad a roghnú"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú le leanúint ar aghaidh."]}]},{language:"gl",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["«{char}» non está permitido no nome dun cartafol."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["«{char}» non está permitido dentro dun nome."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["«{extension}» non é un nome permitido."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["«{segment}» é un nome reservado e non está permitido para nomes de cartafoles."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["«{segment}» é un nome reservado e non está permitido."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n ficheiro en conflito","%n ficheiros en conflito"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n ficheiro en conflito en {dirname}","%n ficheiros en conflito en {dirname}"]},{msgid:"All files",msgstr:["Todos os ficheiros"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar toda a operación"]},{msgid:"Choose",msgstr:["Escoller"]},{msgid:"Choose {file}",msgstr:["Escoller {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escoller %n ficheiro","Escoller %n ficheiros"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar en {target}"]},{msgid:"Could not create the new folder",msgstr:["Non foi posíbel crear o novo cartafol"]},{msgid:"Could not load files settings",msgstr:["Non foi posíbel cargar os axustes dos ficheiros"]},{msgid:"Could not load files views",msgstr:["Non foi posíbel cargar as vistas dos ficheiros"]},{msgid:"Create directory",msgstr:["Crear un directorio"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Enter your name",msgstr:["Introduza o seu nome"]},{msgid:"Existing version",msgstr:["Versión existente"]},{msgid:"Failed to set nickname.",msgstr:["Produciuse un fallo ao definir o alcume."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Os ficheiros e cartafoles que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Os ficheiros e cartafoles que modificou recentemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar a lista de ficheiros"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Os nomes de cartafol non deben rematar en «{extension}»."]},{msgid:"Guest identification",msgstr:["Identificación do convidado"]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome."]},{msgid:"Invalid folder name.",msgstr:["O nome de cartafol non é válido."]},{msgid:"Invalid name.",msgstr:["Nome incorrecto"]},{msgid:"Last modified date unknown",msgstr:["Data da última modificación descoñecida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover cara a {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Os nomes poden ter unha lonxitude máxima de 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["Os nomes non deben estar baleiros."]},{msgid:'Names must not end with "{extension}".',msgstr:["Os nomes non deben rematar en «{extension}»."]},{msgid:"Names must not start with a dot.",msgstr:["Os nomes non deben comezar cun punto."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Novo cartafol"]},{msgid:"New folder name",msgstr:["Novo nome do cartafol"]},{msgid:"New version",msgstr:["Nova versión"]},{msgid:"No files in here",msgstr:["Aquí non hai ficheiros"]},{msgid:"No files matching your filter were found.",msgstr:["Non se atopou ningún ficheiro que coincida co filtro."]},{msgid:"No matching files",msgstr:["Non hai ficheiros coincidentes"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Introduza un nome con polo menos 2 caracteres."]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all checkboxes",msgstr:["Seleccionar todas as caixas"]},{msgid:"Select all entries",msgstr:["Seleccionar todas as entradas"]},{msgid:"Select all existing files",msgstr:["Seleccionar todos os ficheiros existentes"]},{msgid:"Select all new files",msgstr:["Seleccionar todos os ficheiros novos"]},{msgid:"Select entry",msgstr:["Seleccionar a entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccionar a fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Omitir %n ficheiro","Omitir %n ficheiros"]},{msgid:"Skip this file",msgstr:["Omitir este ficheiro"]},{msgid:"Submit name",msgstr:["Enviar o nome"]},{msgid:"Undo",msgstr:["Desfacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Enviar algún contido ou sincronizalo cos seus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cando se selecciona un cartafol entrante, todos os ficheiros conflitivos dentro dela tamén serán sobrescritos."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e realízase unha resolución recursiva de conflitos."]},{msgid:"Which files do you want to keep?",msgstr:["Que ficheiros quere conservar?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Vde. está identificado actualmente como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Vde. non está identificado actualmente."]},{msgid:"You cannot leave the name empty.",msgstr:["Vde. non pode deixar o nome baleiro."]},{msgid:"You need to choose at least one conflict solution",msgstr:["É necesario escoller polo menos unha solución de conflito"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["É necesario seleccionar polo menos unha versión de cada ficheiro para continuar."]}]},{language:"hr",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["Znak „{char}” nije dopušten u nazivu mape."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["Znak „{char}” nije dopušten u nazivu."]},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" nije dopušten u nazivu.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" je rezervirana riječ i nije dopušten u nazivu mape.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" je rezervirana riječ i nije dopušten.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["Sukobljava se %n datoteka","Sukobljava se %n datoteke","Sukobljava se %n datoteke"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n sukob datoteka u {dirname}","%n sukoba datoteka u {dirname}","%n sukoba datoteka u {dirname}"]},{msgid:"All files",msgstr:["Sve datoteke"]},{msgid:"Cancel",msgstr:["Odustani"]},{msgid:"Cancel the entire operation",msgstr:["Odustani od cijele operacije"]},{msgid:"Choose",msgstr:["Odaberi"]},{msgid:"Choose {file}",msgstr:["Odaberi {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Odaberi %n datoteku","Odaberi %n datoteka","Odaberi %n datoteke"]},{msgid:"Confirm",msgstr:["Potvrdi"]},{msgid:"Continue",msgstr:["Nastavi"]},{msgid:"Copy",msgstr:["Kopiraj"]},{msgid:"Copy to {target}",msgstr:["Kopiraj u {target}"]},{msgid:"Could not create the new folder",msgstr:["Nije moguće stvoriti novu mapu"]},{msgid:"Could not load files settings",msgstr:["Nije moguće učitati postavke datoteka"]},{msgid:"Could not load files views",msgstr:["Nije moguće učitati prikaze datoteka"]},{msgid:"Create directory",msgstr:["Stvori mapu"]},{msgid:"Current view selector",msgstr:["Odabir trenutačnog prikaza"]},{msgid:"Enter your name",msgstr:["Unesite vaše ime"]},{msgid:"Existing version",msgstr:["Postojeća verzija"]},{msgid:"Failed to set nickname.",msgstr:["Neuspjelo postavljanje nadimka."]},{msgid:"Favorites",msgstr:["Favoriti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Ovdje se prikazuju datoteke i mape koje ste označili kao favoriti."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Ovdje se prikazuju datoteke i mape koje ste nedavno ažurirali."]},{msgid:"Filter file list",msgstr:["Filtriranje liste datoteka"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nazivi mapa ne smiju završiti sa "{extension}".']},{msgid:"Guest identification",msgstr:["Identifikacija gosta"]},{msgid:"Home",msgstr:["Naslovna"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ako odaberete obje verzije, dolaznoj datoteci bit će dodan broj u nazivu."]},{msgid:"Invalid folder name.",msgstr:["Neispavan naziv mape."]},{msgid:"Invalid name.",msgstr:["Neispravan naziv."]},{msgid:"Last modified date unknown",msgstr:["Nepoznat datum zadnjeg ažuriranja"]},{msgid:"Modified",msgstr:["Ažurirano"]},{msgid:"Move",msgstr:["Premjesti"]},{msgid:"Move to {target}",msgstr:["Premjesti u {target}"]},{msgid:"Name",msgstr:["Naziv"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nazivi mogu imati najviše 64 znaka."]},{msgid:"Names must not be empty.",msgstr:["Nazivi ne smiju biti prazni."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nazivi ne smiju završiti sa "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nazivi ne smiju započinjati točkom."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Nova mapa"]},{msgid:"New folder name",msgstr:["Novi naziv mape"]},{msgid:"New version",msgstr:["Nova verzija"]},{msgid:"No files in here",msgstr:["Ovdje nema datoteka"]},{msgid:"No files matching your filter were found.",msgstr:["Nisu pronađene datoteke koje odgovaraju vašem filtru."]},{msgid:"No matching files",msgstr:["Nema odgovarajućih datoteka."]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Unesite naziv s najmanje 2 znaka."]},{msgid:"Recent",msgstr:["Nedavno"]},{msgid:"Select all checkboxes",msgstr:["Označi sve potvrdne okvire"]},{msgid:"Select all entries",msgstr:["Označi sve stavke"]},{msgid:"Select all existing files",msgstr:["Označi sve postojeće datoteke"]},{msgid:"Select all new files",msgstr:["Označi sve nove datoteke"]},{msgid:"Select entry",msgstr:["Označi stavku"]},{msgid:"Select the row for {nodename}",msgstr:["Označi red za{nodename}"]},{msgid:"Size",msgstr:["Veličina"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Preskoči %n datoteku","Preskoči %n datoteke","Preskoči %n datoteke"]},{msgid:"Skip this file",msgstr:["Preskoči ovu datoteku"]},{msgid:"Submit name",msgstr:["Pošalji naziv"]},{msgid:"Undo",msgstr:["Poništi"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Prenesite neki sadržaj ili sinkronizirajte sa svojim uređajima!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Kada je odabrana dolazna mapa, sve datoteke unutar nje koje su u sukobu također će biti prepisane."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Kada je odabrana dolazna mapa, sadržaj se upisuje u postojeću mapu i provodi se rekurzivno rješavanje sukoba."]},{msgid:"Which files do you want to keep?",msgstr:["Koje datoteke želite zadržati?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Trenutno ste identificirani kao {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Trenutno niste identificirani."]},{msgid:"You cannot leave the name empty.",msgstr:["Ne možete ostaviti naziv prazan."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Morate odabrati barem jedno rješenje sukoba"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Morate odabrati barem jednu verziju svake datoteke kako biste nastavili."]}]},{language:"hu_HU",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["A(z) „{char}” nem engedélyezett egy mappanévben."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["A(z) „{char}” nem engedélyezett egy névben."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["A(z) „{extension}” nem engedélyezett név."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["A(z) „{segment}” foglalt név, és nem engedélyezett a mappanevekben."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["A(z) „{segment}” foglalt név, és nem engedélyezett."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n ütköző fájl","%n ütköző fájl"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n ütköző fájl ebben: {dirname}","%n ütköző fájl ebben: {dirname}"]},{msgid:"All files",msgstr:["Összes fájl"]},{msgid:"Cancel",msgstr:["Mégse"]},{msgid:"Cancel the entire operation",msgstr:["Egész művelet megszakítása"]},{msgid:"Choose",msgstr:["Kiválasztás"]},{msgid:"Choose {file}",msgstr:["{file} kiválasztása"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n fájl kiválasztása","%n fájl kiválasztása"]},{msgid:"Confirm",msgstr:["Megerősítés"]},{msgid:"Continue",msgstr:["Folytatás"]},{msgid:"Copy",msgstr:["Másolás"]},{msgid:"Copy to {target}",msgstr:["Másolás ide: {target}"]},{msgid:"Could not create the new folder",msgstr:["Nem lehet létrehozni az új mappát"]},{msgid:"Could not load files settings",msgstr:["Nem lehet betölteni a fájlok beállításait"]},{msgid:"Could not load files views",msgstr:["Nem lehet betölteni a fájlok nézeteit"]},{msgid:"Create directory",msgstr:["Mappa létrehozása"]},{msgid:"Current view selector",msgstr:["Jelenlegi nézet választója"]},{msgid:"Enter your name",msgstr:["Adja meg a nevét"]},{msgid:"Existing version",msgstr:["Meglévő verzió"]},{msgid:"Failed to set nickname.",msgstr:["Nem sikerült a becenév beállítása."]},{msgid:"Favorites",msgstr:["Kedvencek"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["A kedvencként megjelölt fájlok és mappák itt jelennek meg."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["A nemrég módosított fájlok és mappák itt jelennek meg."]},{msgid:"Filter file list",msgstr:["Fájllista szűrése"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["A mappanevek nem végződhetnek ezzel: „{extension}”."]},{msgid:"Guest identification",msgstr:["Vendégazonosítás"]},{msgid:"Home",msgstr:["Kezdőlap"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ha mindkét verziót választja, akkor a bejövő fájl nevéhez egy szám lesz hozzáfűzve."]},{msgid:"Invalid folder name.",msgstr:["Érvénytelen mappanév."]},{msgid:"Invalid name.",msgstr:["Érvénytelen név."]},{msgid:"Last modified date unknown",msgstr:["Legutóbbi módosítás ideje ismeretlen"]},{msgid:"Modified",msgstr:["Módosítva"]},{msgid:"Move",msgstr:["Áthelyezés"]},{msgid:"Move to {target}",msgstr:["Áthelyezés ide: {target}"]},{msgid:"Name",msgstr:["Név"]},{msgid:"Names may be at most 64 characters long.",msgstr:["A nevek legfeljebb 64 karakter hosszúak lehetnek."]},{msgid:"Names must not be empty.",msgstr:["A nevek nem lehetnek üresek."]},{msgid:'Names must not end with "{extension}".',msgstr:["A nevek nem végződhetnek ezzel: „{extension}”."]},{msgid:"Names must not start with a dot.",msgstr:["A nevek nem kezdődhetnek ponttal."]},{msgid:"New",msgstr:["Új"]},{msgid:"New folder",msgstr:["Új mappa"]},{msgid:"New folder name",msgstr:["Új mappa neve"]},{msgid:"New version",msgstr:["Új verzió"]},{msgid:"No files in here",msgstr:["Itt nincsenek fájlok"]},{msgid:"No files matching your filter were found.",msgstr:["Nincs a szűrési feltételeknek megfelelő fájl."]},{msgid:"No matching files",msgstr:["Nincs ilyen fájl"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Legalább 2 karakteres nevet adjon meg."]},{msgid:"Recent",msgstr:["Legutóbbi"]},{msgid:"Select all checkboxes",msgstr:["Összes jelölőmező bepipálása"]},{msgid:"Select all entries",msgstr:["Összes bejegyzés kijelölése"]},{msgid:"Select all existing files",msgstr:["Összes meglévő fájl kijelölése"]},{msgid:"Select all new files",msgstr:["Összes új fájl kijelölése"]},{msgid:"Select entry",msgstr:["Bejegyzés kijelölése"]},{msgid:"Select the row for {nodename}",msgstr:["Válasszon sort a következőnek: {nodename}"]},{msgid:"Size",msgstr:["Méret"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n fájl kihagyása","%n fájl kihagyása"]},{msgid:"Skip this file",msgstr:["Fájl kihagyása"]},{msgid:"Submit name",msgstr:["Név beküldése"]},{msgid:"Undo",msgstr:["Visszavonás"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Töltsön fel tartalmat, vagy szinkronizáljon az eszközeivel!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ha egy bejövő mappa van kijelölve, akkor a benne lévő ütköző fájlok is felül lesznek írva."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Ha egy bejövő mappa van kijelölve, akkor a tartalom a meglévő mappába lesz írva, és rekurzív ütközéskezelés lesz végezve."]},{msgid:"Which files do you want to keep?",msgstr:["Mely fájlokat akarja megtartani?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Jelenleg ekként van azonosítva: {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Jelenleg nincs azonosítva."]},{msgid:"You cannot leave the name empty.",msgstr:["A nevet nem hagyhatja üresen."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Legalább egy ütközéskezelési megoldást kell választania"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["A folytatáshoz az összes fájlnak legalább egy verzióját ki kell választania."]}]},{language:"hy",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} սխալ թղթապանակի անվանում է"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} համարվում է անթույլատրելի թղթապանակի անվանում"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["/ չի թույլատրվում օգտագործել անվանման մեջ"]},{msgid:"All files",msgstr:["Բոլոր ֆայլերը"]},{msgid:"Choose",msgstr:["Ընտրել"]},{msgid:"Choose {file}",msgstr:["Ընտրել {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Ընտրել %n ֆայլ","Ընտրել %n ֆայլեր"]},{msgid:"Copy",msgstr:["Պատճենել"]},{msgid:"Copy to {target}",msgstr:["Պատճենել {target}"]},{msgid:"Could not create the new folder",msgstr:["Չստացվեց ստեղծել նոր թղթապանակը"]},{msgid:"Could not load files settings",msgstr:["Չստացվեց բեռնել ֆայլի կարգավորումները"]},{msgid:"Could not load files views",msgstr:["Չստացվեց բեռնել ֆայլերի դիտումները"]},{msgid:"Create directory",msgstr:["Ստեղծել դիրեկտորիա"]},{msgid:"Current view selector",msgstr:["Ընթացիկ դիտման ընտրիչ"]},{msgid:"Favorites",msgstr:["Նախընտրելիներ"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք դուք նշել եք որպես նախընտրելիներ:"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք վերջերս փոխել եք:"]},{msgid:"Filter file list",msgstr:["Ֆիլտրել ֆայլերի ցուցակը"]},{msgid:"Folder name cannot be empty.",msgstr:["Թղթապանակի անունը չի կարող դատարկ լինել:"]},{msgid:"Home",msgstr:["Սկիզբ"]},{msgid:"Modified",msgstr:["Փոփոխված"]},{msgid:"Move",msgstr:["Տեղափոխել"]},{msgid:"Move to {target}",msgstr:["Տեղափոխել {target}"]},{msgid:"Name",msgstr:["Անուն"]},{msgid:"New",msgstr:["Նոր"]},{msgid:"New folder",msgstr:["Նոր թղթապանակ"]},{msgid:"New folder name",msgstr:["Նոր թղթապանակի անվանում"]},{msgid:"No files in here",msgstr:["Այստեղ չկան ֆայլեր"]},{msgid:"No files matching your filter were found.",msgstr:["Ձեր ֆիլտրին համապատասխանող ֆայլերը չեն գտնվել:"]},{msgid:"No matching files",msgstr:["Չկան համապատասխան ֆայլեր"]},{msgid:"Recent",msgstr:["Վերջին"]},{msgid:"Select all entries",msgstr:["Ընտրել բոլոր գրառումները"]},{msgid:"Select entry",msgstr:["Ընտրել բոլոր գրառումը"]},{msgid:"Select the row for {nodename}",msgstr:["Ընտրեք տողը {nodename}-ի համար "]},{msgid:"Size",msgstr:["Չափ"]},{msgid:"Undo",msgstr:["Ետարկել"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Ներբեռնեք որոշ բովանդակություն կամ համաժամացրեք այն ձեր սարքերի հետ:"]}]},{language:"id",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" tidak diizinkan di dalam nama folder.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" tidak diizinkan di dalam nama.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" bukan nama yang diizinkan.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" adalah nama yang dicadangkan dan tidak diizinkan untuk nama folder.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" adalah nama yang dicadangkan dan tidak diizinkan.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n konflik file"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n konflik file di {dirname}"]},{msgid:"All files",msgstr:["Semua berkas"]},{msgid:"Cancel",msgstr:["Batal"]},{msgid:"Cancel the entire operation",msgstr:["Batalkan seluruh operasi"]},{msgid:"Choose",msgstr:["Pilih"]},{msgid:"Choose {file}",msgstr:["Pilih {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Pilih %n file"]},{msgid:"Confirm",msgstr:["Konfirmasi"]},{msgid:"Continue",msgstr:["Lanjutkan"]},{msgid:"Copy",msgstr:["Salin"]},{msgid:"Copy to {target}",msgstr:["Salin ke {target}"]},{msgid:"Could not create the new folder",msgstr:["Tidak dapat membuat folder baru"]},{msgid:"Could not load files settings",msgstr:["Tidak dapat memuat pengaturan file"]},{msgid:"Could not load files views",msgstr:["Tidak dapat memuat tampilan file"]},{msgid:"Create directory",msgstr:["Buat direktori"]},{msgid:"Current view selector",msgstr:["Pemilih tampilan saat ini"]},{msgid:"Enter your name",msgstr:["Masukkan nama Anda"]},{msgid:"Existing version",msgstr:["Versi yang ada"]},{msgid:"Failed to set nickname.",msgstr:["Gagal menetapkan nama panggilan."]},{msgid:"Favorites",msgstr:["Favorit"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Berkas dan folder yang Anda tandai sebagai favorit akan muncul di sini."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Berkas dan folder yang Anda ubah baru-baru ini akan muncul di sini."]},{msgid:"Filter file list",msgstr:["Saring daftar berkas"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nama folder tidak boleh diakhiri dengan "{extension}".']},{msgid:"Guest identification",msgstr:["Identifikasi tamu"]},{msgid:"Home",msgstr:["Beranda"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jika Anda memilih kedua versi, file yang masuk akan ditambahkan angka pada namanya."]},{msgid:"Invalid folder name.",msgstr:["Nama folder tidak valid."]},{msgid:"Invalid name.",msgstr:["Nama tidak valid."]},{msgid:"Last modified date unknown",msgstr:["Tanggal modifikasi terakhir tidak diketahui"]},{msgid:"Modified",msgstr:["Diubah"]},{msgid:"Move",msgstr:["Pindahkan"]},{msgid:"Move to {target}",msgstr:["Pindahkan ke {target}"]},{msgid:"Name",msgstr:["Nama"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Panjang nama maksimal 64 karakter."]},{msgid:"Names must not be empty.",msgstr:["Nama tidak boleh kosong."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nama tidak boleh diakhiri dengan "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nama tidak boleh diawali dengan titik."]},{msgid:"New",msgstr:["Baru"]},{msgid:"New folder",msgstr:["Folder baru"]},{msgid:"New folder name",msgstr:["Nama folder baru"]},{msgid:"New version",msgstr:["Versi baru"]},{msgid:"No files in here",msgstr:["Tidak ada berkas di sini"]},{msgid:"No files matching your filter were found.",msgstr:["Tidak ada berkas yang cocok dengan penyaringan Anda."]},{msgid:"No matching files",msgstr:["Tidak ada berkas yang cocok"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Silakan masukkan nama dengan minimal 2 karakter."]},{msgid:"Recent",msgstr:["Terkini"]},{msgid:"Select all checkboxes",msgstr:["Pilih semua kotak centang"]},{msgid:"Select all entries",msgstr:["Pilih semua entri"]},{msgid:"Select all existing files",msgstr:["Pilih semua file yang ada"]},{msgid:"Select all new files",msgstr:["Pilih semua file baru"]},{msgid:"Select entry",msgstr:["Pilih entri"]},{msgid:"Select the row for {nodename}",msgstr:["Pilih baris untuk {nodename}"]},{msgid:"Size",msgstr:["Ukuran"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Lewati %n file"]},{msgid:"Skip this file",msgstr:["Lewati file ini"]},{msgid:"Submit name",msgstr:["Kirim nama"]},{msgid:"Undo",msgstr:["Tidak jadi"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Unggah beberapa konten atau sinkronkan dengan perangkat Anda!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Saat folder yang masuk dipilih, semua file yang konflik di dalamnya juga akan ditimpa."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Saat folder yang masuk dipilih, konten ditulis ke dalam folder yang ada dan penyelesaian konflik rekursif dilakukan."]},{msgid:"Which files do you want to keep?",msgstr:["File mana yang ingin Anda pertahankan?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Saat ini Anda teridentifikasi sebagai {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Saat ini Anda tidak teridentifikasi."]},{msgid:"You cannot leave the name empty.",msgstr:["Anda tidak dapat membiarkan nama kosong."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Anda perlu memilih setidaknya satu solusi konflik"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Anda perlu memilih setidaknya satu versi dari setiap file untuk melanjutkan."]}]},{language:"is",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" er ógilt möppuheiti.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" er ekki leyfilegt möppuheiti']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" er er ekki leyfilegt innan í skráarheiti.']},{msgid:"All files",msgstr:["Allar skrár"]},{msgid:"Choose",msgstr:["Veldu"]},{msgid:"Choose {file}",msgstr:["Veldu {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Veldu %n skrá","Veldu %n skrár"]},{msgid:"Copy",msgstr:["Afrita"]},{msgid:"Copy to {target}",msgstr:["Afrita í {target}"]},{msgid:"Could not create the new folder",msgstr:["Get ekki búið til nýju möppuna"]},{msgid:"Could not load files settings",msgstr:["Tókst ekki að hlaða inn stillingum skráa"]},{msgid:"Could not load files views",msgstr:["Tókst ekki að hlaða inn sýnum skráa"]},{msgid:"Create directory",msgstr:["Búa til möppu"]},{msgid:"Current view selector",msgstr:["Núverandi val sýnar"]},{msgid:"Favorites",msgstr:["Eftirlæti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Skrár og möppur sem þú merkir sem eftirlæti birtast hér."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Skrár og möppur sem þú breyttir nýlega birtast hér."]},{msgid:"Filter file list",msgstr:["Sía skráalista"]},{msgid:"Folder name cannot be empty.",msgstr:["Möppuheiti má ekki vera tómt."]},{msgid:"Home",msgstr:["Heim"]},{msgid:"Modified",msgstr:["Breytt"]},{msgid:"Move",msgstr:["Færa"]},{msgid:"Move to {target}",msgstr:["Færa í {target}"]},{msgid:"Name",msgstr:["Heiti"]},{msgid:"New",msgstr:["Nýtt"]},{msgid:"New folder",msgstr:["Ný mappa"]},{msgid:"New folder name",msgstr:["Heiti nýrrar möppu"]},{msgid:"No files in here",msgstr:["Engar skrár hér"]},{msgid:"No files matching your filter were found.",msgstr:["Engar skrár fundust sem passa við síuna."]},{msgid:"No matching files",msgstr:["Engar samsvarandi skrár"]},{msgid:"Recent",msgstr:["Nýlegt"]},{msgid:"Select all entries",msgstr:["Velja allar færslur"]},{msgid:"Select entry",msgstr:["Velja færslu"]},{msgid:"Select the row for {nodename}",msgstr:["Veldu röðina fyrir {nodename}"]},{msgid:"Size",msgstr:["Stærð"]},{msgid:"Undo",msgstr:["Afturkalla"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Sendu inn eitthvað efni eða samstilltu við tækin þín!"]}]},{language:"it",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:[`"{char}" non è consentito all'interno di un nome di cartella.`]},{msgid:'"{char}" is not allowed inside a name.',msgstr:[`"{char}" non è consentito all'interno di un nome.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" non è un nome consentito']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" è un nome riservato e non consentito per i nomi delle cartelle.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" è un nome riservato e non consentito.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n file in conflitto","%n file in conflitto","%n file in conflitto"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n file in conflitto in {dirname}","%n file in conflitto in {dirname}","%n file in conflitto in {dirname}"]},{msgid:"All files",msgstr:["Tutti i file"]},{msgid:"Cancel",msgstr:["Annulla"]},{msgid:"Cancel the entire operation",msgstr:["Annulla l'intera operazione"]},{msgid:"Choose",msgstr:["Scegli"]},{msgid:"Choose {file}",msgstr:["Scegli {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Scegli %n file","Scegli %n file","Scegli %n file"]},{msgid:"Confirm",msgstr:["Conferma"]},{msgid:"Continue",msgstr:["Continua"]},{msgid:"Copy",msgstr:["Copia"]},{msgid:"Copy to {target}",msgstr:["Copia in {target}"]},{msgid:"Could not create the new folder",msgstr:["Impossibile creare la nuova cartella"]},{msgid:"Could not load files settings",msgstr:["Impossibile caricare le impostazioni dei file"]},{msgid:"Could not load files views",msgstr:["Impossibile caricare le visualizzazioni dei file"]},{msgid:"Create directory",msgstr:["Crea cartella"]},{msgid:"Current view selector",msgstr:["Selettore della vista attuale"]},{msgid:"Enter your name",msgstr:["Inserisci il tuo nome"]},{msgid:"Existing version",msgstr:["Versione esistente"]},{msgid:"Failed to set nickname.",msgstr:["Impossibile impostare lo pseudonimo."]},{msgid:"Favorites",msgstr:["Preferiti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["I file e le cartelle contrassegnate come preferite saranno mostrate qui."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["I file e le cartelle che hai modificato di recente saranno mostrate qui."]},{msgid:"Filter file list",msgstr:["Filtra l'elenco dei file"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['I nomi delle cartelle devono finire con "{extension}".']},{msgid:"Guest identification",msgstr:["Identificazione ospiti"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se selezioni entrambe le versioni, al nome del file in arrivo verrà aggiunto un numero."]},{msgid:"Invalid folder name.",msgstr:["Nome cartella non valido."]},{msgid:"Invalid name.",msgstr:["Nome non valido."]},{msgid:"Last modified date unknown",msgstr:["Data di ultima modifica sconosciuta"]},{msgid:"Modified",msgstr:["Modificato"]},{msgid:"Move",msgstr:["Sposta"]},{msgid:"Move to {target}",msgstr:["Sposta in {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["I nomi dovrebbero avere una lunghezza massima di 64 caratteri."]},{msgid:"Names must not be empty.",msgstr:["I nomi non devono essere vuoti."]},{msgid:'Names must not end with "{extension}".',msgstr:['I nomi devono finire con "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["I nomi non possono iniziare con un punto."]},{msgid:"New",msgstr:["Nuovo"]},{msgid:"New folder",msgstr:["Nuova cartella"]},{msgid:"New folder name",msgstr:["Nome della nuova cartella"]},{msgid:"New version",msgstr:["Nuova versione"]},{msgid:"No files in here",msgstr:["Nessun file qui"]},{msgid:"No files matching your filter were found.",msgstr:["Nessun file che corrisponde al tuo filtro è stato trovato."]},{msgid:"No matching files",msgstr:["Nessun file corrispondente"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Digita un nome con almeno 2 caratteri."]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all checkboxes",msgstr:["Seleziona tutte le caselle"]},{msgid:"Select all entries",msgstr:["Scegli tutte le voci"]},{msgid:"Select all existing files",msgstr:["Seleziona tutti i file esistenti"]},{msgid:"Select all new files",msgstr:["Seleziona tutti i nuovi file"]},{msgid:"Select entry",msgstr:["Seleziona la voce"]},{msgid:"Select the row for {nodename}",msgstr:["Seleziona la riga per {nodename}"]},{msgid:"Size",msgstr:["Dimensioni"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Salta %n file","Salta %n file","Salta %n file"]},{msgid:"Skip this file",msgstr:["Salta questo file"]},{msgid:"Submit name",msgstr:["Invia nome"]},{msgid:"Undo",msgstr:["Annulla"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Carica qualche contenuto o sincronizza con i tuoi dispositivi!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno saranno sovrascritti."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti."]},{msgid:"Which files do you want to keep?",msgstr:["Quali file vuoi conservare?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sei attualmente identificato come {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Attualmente non sei identificato."]},{msgid:"You cannot leave the name empty.",msgstr:["Non puoi lasciare il nome vuoto."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Devi scegliere almeno una soluzione al conflitto"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Per continuare, è necessario selezionare almeno una versione di ciascun file."]}]},{language:"ja_JP",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['フォルダー名に "{char}" を使用することはできません。']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['名前に "{char}" を使用することはできません。']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" は許可された名前ではありません。']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" は予約名のため、使用できません。']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" は予約名のため、使用できません。']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%nファイルが競合しています"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%nディレクトリ{dirname}内のファイル競合"]},{msgid:"All files",msgstr:["すべてのファイル"]},{msgid:"Cancel",msgstr:["キャンセル"]},{msgid:"Cancel the entire operation",msgstr:["すべての操作をキャンセル"]},{msgid:"Choose",msgstr:["選択"]},{msgid:"Choose {file}",msgstr:["{file} を選択"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n 個のファイルを選択"]},{msgid:"Confirm",msgstr:["確認"]},{msgid:"Continue",msgstr:["続行"]},{msgid:"Copy",msgstr:["コピー"]},{msgid:"Copy to {target}",msgstr:["{target} にコピー"]},{msgid:"Could not create the new folder",msgstr:["新しいフォルダーを作成できませんでした"]},{msgid:"Could not load files settings",msgstr:["ファイル設定を読み込めませんでした"]},{msgid:"Could not load files views",msgstr:["ファイルビューを読み込めませんでした"]},{msgid:"Create directory",msgstr:["ディレクトリを作成"]},{msgid:"Current view selector",msgstr:["現在のビュー選択"]},{msgid:"Enter your name",msgstr:["名前を入力してください"]},{msgid:"Existing version",msgstr:["現行バージョン"]},{msgid:"Failed to set nickname.",msgstr:["ニックネームの設定に失敗しました。"]},{msgid:"Favorites",msgstr:["お気に入り"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["お気に入りとしてマークしたファイルとフォルダーがここに表示されます。"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["最近変更したファイルとフォルダーがここに表示されます。"]},{msgid:"Filter file list",msgstr:["ファイルのリストをフィルター"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['フォルダー名の末尾に "{extension}" を使用できません。']},{msgid:"Guest identification",msgstr:["ゲスト識別"]},{msgid:"Home",msgstr:["ホーム"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["両方のバージョンを選択した場合、受信ファイル名には番号が追加されます。"]},{msgid:"Invalid folder name.",msgstr:["フォルダー名が無効です。"]},{msgid:"Invalid name.",msgstr:["無効な名前です。"]},{msgid:"Last modified date unknown",msgstr:["最終更新日不明"]},{msgid:"Modified",msgstr:["変更済み"]},{msgid:"Move",msgstr:["移動"]},{msgid:"Move to {target}",msgstr:["{target} に移動"]},{msgid:"Name",msgstr:["名前"]},{msgid:"Names may be at most 64 characters long.",msgstr:["名前は最大64文字です。"]},{msgid:"Names must not be empty.",msgstr:["名前は空にできません。"]},{msgid:'Names must not end with "{extension}".',msgstr:['名前の末尾に "{extension}" を使用できません。']},{msgid:"Names must not start with a dot.",msgstr:["ドットで始まる名前は使用できません。"]},{msgid:"New",msgstr:["新規作成"]},{msgid:"New folder",msgstr:["新しいフォルダー"]},{msgid:"New folder name",msgstr:["新しいフォルダーの名前"]},{msgid:"New version",msgstr:["新バージョン"]},{msgid:"No files in here",msgstr:["ファイルがありません"]},{msgid:"No files matching your filter were found.",msgstr:["フィルターに一致するファイルは見つかりませんでした。"]},{msgid:"No matching files",msgstr:["一致するファイルはありません"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["名前は2文字以上を入力してください。"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all checkboxes",msgstr:["すべてのチェックボックスを選択"]},{msgid:"Select all entries",msgstr:["すべてのエントリを選択"]},{msgid:"Select all existing files",msgstr:["既存のファイルをすべて選択"]},{msgid:"Select all new files",msgstr:["すべての新規ファイルを選択"]},{msgid:"Select entry",msgstr:["エントリを選択"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename} の行を選択"]},{msgid:"Size",msgstr:["サイズ"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n 個のファイルをスキップ"]},{msgid:"Skip this file",msgstr:["このファイルをスキップ"]},{msgid:"Submit name",msgstr:["名前を送信する"]},{msgid:"Undo",msgstr:["元に戻す"]},{msgid:"Upload some content or sync with your devices!",msgstr:["コンテンツをアップロードするか、デバイスと同期してください!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["受信フォルダーを選択すると、そのフォルダー内の競合ファイルも上書きされます。"]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["受信フォルダーを選択すると、内容は既存のフォルダーに書き込まれ、再帰的な競合解決が実行されます。"]},{msgid:"Which files do you want to keep?",msgstr:["どのファイルを残しますか?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["現在、{nickname}として識別されています。"]},{msgid:"You are currently not identified.",msgstr:["現在あなたは識別されていません。"]},{msgid:"You cannot leave the name empty.",msgstr:["名前を空にすることはできません。"]},{msgid:"You need to choose at least one conflict solution",msgstr:["少なくとも1つの競合ソリューションを選択する必要があります"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["続行するには、各ファイルのバージョンを少なくとも1つ選択する必要があります。"]}]},{language:"ko",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["문자 '{char}'은(는) 폴더 이름에 사용할 수 없습니다."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["문자 '{char}'은(는) 이름에 사용할 수 없습니다."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["'{extension}'은(는) 사용 불가능한 이름입니다."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["'{segment}'은(는) 예약된 이름이므로 폴더 이름으로 사용할 수 없습니다."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["'{segment}'은(는) 예약된 이름이므로 사용할 수 없습니다."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n개의 파일이 충돌함"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname}에서 %n개의 파일이 충돌함"]},{msgid:"All files",msgstr:["모든 파일"]},{msgid:"Cancel",msgstr:["취소"]},{msgid:"Cancel the entire operation",msgstr:["전체 작업 취소"]},{msgid:"Choose",msgstr:["선택"]},{msgid:"Choose {file}",msgstr:["{file} 선택"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["파일 %n개 선택"]},{msgid:"Confirm",msgstr:["확인"]},{msgid:"Continue",msgstr:["계속"]},{msgid:"Copy",msgstr:["복사"]},{msgid:"Copy to {target}",msgstr:["{target}(으)로 복사"]},{msgid:"Could not create the new folder",msgstr:["새 폴더를 만들 수 없음"]},{msgid:"Could not load files settings",msgstr:["파일 설정을 불러오지 못함"]},{msgid:"Could not load files views",msgstr:["파일 보기를 불러오지 못함"]},{msgid:"Create directory",msgstr:["디렉토리 만들기"]},{msgid:"Current view selector",msgstr:["현재 보기 방식"]},{msgid:"Enter your name",msgstr:["이름을 입력하세요"]},{msgid:"Existing version",msgstr:["기존 버전"]},{msgid:"Failed to set nickname.",msgstr:[`닉네임을 설정하지 못했습니다. - `]},{msgid:"Favorites",msgstr:["즐겨찾기"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["즐겨찾기 한 파일 및 폴더가 이곳에 표시됩니다."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["최근 수정된 파일 및 폴더가 이곳에 표시됩니다."]},{msgid:"Filter file list",msgstr:["파일 목록 필터링"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["폴더 이름은 '{extension}'(으)로 끝날 수 없습니다."]},{msgid:"Guest identification",msgstr:["게스트 확인"]},{msgid:"Home",msgstr:["홈"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["두 버전을 모두 선택할 경우 새로 추가되는 파일의 이름에 숫자가 붙게 됩니다."]},{msgid:"Invalid folder name.",msgstr:["잘못된 폴더 이름입니다."]},{msgid:"Invalid name.",msgstr:["잘못된 이름입니다. "]},{msgid:"Last modified date unknown",msgstr:["최근 수정일 알 수 없음"]},{msgid:"Modified",msgstr:["수정됨"]},{msgid:"Move",msgstr:["이동"]},{msgid:"Move to {target}",msgstr:["{target}(으)로 이동"]},{msgid:"Name",msgstr:["이름"]},{msgid:"Names may be at most 64 characters long.",msgstr:["이름은 최대 64글자까지 지정할 수 있습니다."]},{msgid:"Names must not be empty.",msgstr:["이름은 비어 있을 수 없습니다."]},{msgid:'Names must not end with "{extension}".',msgstr:["이름은 '{extension}'(으)로 끝날 수 없습니다."]},{msgid:"Names must not start with a dot.",msgstr:["이름은 마침표로 시작될 수 없습니다."]},{msgid:"New",msgstr:["새로 만들기"]},{msgid:"New folder",msgstr:["새 폴더"]},{msgid:"New folder name",msgstr:["새 폴더명"]},{msgid:"New version",msgstr:["새로운 버전"]},{msgid:"No files in here",msgstr:["파일이 없습니다"]},{msgid:"No files matching your filter were found.",msgstr:["선택된 필터에 해당하는 파일이 없습니다."]},{msgid:"No matching files",msgstr:["해당하는 파일 없음"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["최소 두 글자 이상의 이름을 입력해주세요."]},{msgid:"Recent",msgstr:["최근"]},{msgid:"Select all checkboxes",msgstr:["체크박스 모두 선택"]},{msgid:"Select all entries",msgstr:["모두 선택"]},{msgid:"Select all existing files",msgstr:["기존 파일 모두 선택"]},{msgid:"Select all new files",msgstr:["새 파일 모두 선택"]},{msgid:"Select entry",msgstr:["항목 선택"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename}의 행 선택"]},{msgid:"Size",msgstr:["크기"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n개 파일 건너뛰기"]},{msgid:"Skip this file",msgstr:["이 파일 건너뛰기"]},{msgid:"Submit name",msgstr:["이름 제출"]},{msgid:"Undo",msgstr:["되돌리기"]},{msgid:"Upload some content or sync with your devices!",msgstr:["기기에서 파일을 업로드 또는 동기화하세요!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["새 폴더를 선택할 경우, 해당 폴더 내의 충돌 파일들도 덮어쓰기 됩니다."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["새 폴더를 선택할 경우 내용물이 기존 폴더에 기록되며 재귀적 충돌 해결이 수행됩니다."]},{msgid:"Which files do you want to keep?",msgstr:["어떤 파일들을 유지하시겠습니까?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["{nickname}(으)로 인증된 상태 입니다."]},{msgid:"You are currently not identified.",msgstr:["현재 인증 정보가 없습니다."]},{msgid:"You cannot leave the name empty.",msgstr:["이름은 비워 둘 수 없습니다. "]},{msgid:"You need to choose at least one conflict solution",msgstr:["최소한 하나의 충돌 해결 방안을 선택해야 합니다."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다."]}]},{language:"lb",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} ass en ongëlteg Dossier"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} ass net en erlaabten Dossiernumm"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" ass net an engem Dossier Numm erlaabt']},{msgid:"All files",msgstr:["All Dateien"]},{msgid:"Choose",msgstr:["Wielt"]},{msgid:"Choose {file}",msgstr:["Wielt {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Wielt %n Fichieren","Wielt %n Fichier"]},{msgid:"Copy",msgstr:["Kopie"]},{msgid:"Copy to {target}",msgstr:["Kopie op {target}"]},{msgid:"Could not create the new folder",msgstr:["Konnt den neien Dossier net erstellen"]},{msgid:"Could not load files settings",msgstr:["Konnt d'Dateienastellungen net lueden"]},{msgid:"Could not load files views",msgstr:["Konnt d'Dateien net lueden"]},{msgid:"Create directory",msgstr:["Erstellt Verzeechnes"]},{msgid:"Current view selector",msgstr:["Aktuell Vue selector"]},{msgid:"Favorites",msgstr:["Favoritten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Dateien an Ordner, déi Dir als Favorit markéiert, ginn hei gewisen"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Dateien an Ordner déi Dir viru kuerzem geännert hutt ginn hei op"]},{msgid:"Filter file list",msgstr:["Filter Datei Lëscht"]},{msgid:"Folder name cannot be empty.",msgstr:["Dossier Numm kann net eidel sinn"]},{msgid:"Home",msgstr:["Wëllkomm"]},{msgid:"Modified",msgstr:["Geännert"]},{msgid:"Move",msgstr:["Plënne"]},{msgid:"Move to {target}",msgstr:["Plënneren {target}"]},{msgid:"Name",msgstr:["Numm"]},{msgid:"New",msgstr:["Nei"]},{msgid:"New folder",msgstr:["Neien dossier"]},{msgid:"New folder name",msgstr:["Neien dossier numm"]},{msgid:"No files in here",msgstr:["Kee fichier hei"]},{msgid:"No files matching your filter were found.",msgstr:["Kee fichier deen äre filter passt gouf fonnt"]},{msgid:"No matching files",msgstr:["Keng passende dateien"]},{msgid:"Recent",msgstr:["Rezent"]},{msgid:"Select all entries",msgstr:["Wielt all entréen"]},{msgid:"Select entry",msgstr:["Wielt entrée"]},{msgid:"Select the row for {nodename}",msgstr:["Wielt d'zeil fir {nodename}"]},{msgid:"Size",msgstr:["Gréisst"]},{msgid:"Undo",msgstr:["Undoen"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Luet en inhalt erop oder synchroniséiert mat ären apparater"]}]},{language:"lo",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" ບໍ່ອະນຸຍາດໃຫ້ມີຢູ່ໃນຊື່ໂຟນເດີ.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['ບໍ່ອະນຸຍາດໃຫ້ມີ "{char}" ພາຍໃນຊື່.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ບໍ່ແມ່ນຊື່ທີ່ໄດ້ຮັບອະນຸຍາດ.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ເປັນຊື່ໂຟນເດີ.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ໄດ້ຮັບອະນຸຍາດ.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["ໄຟລ໌ຂັດກັນ %n ລາຍການ"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["ໄຟລ໌ຂັດກັນ %n ລາຍການໃນ {dirname}"]},{msgid:"All files",msgstr:["ໄຟລ໌ທັງໝົດ"]},{msgid:"Cancel",msgstr:["ຍົກເລີກ"]},{msgid:"Cancel the entire operation",msgstr:["ຍົກເລີກການດຳເນີນການທັງໝົດ"]},{msgid:"Choose",msgstr:["ເລືອກ"]},{msgid:"Choose {file}",msgstr:["ເລືອກ {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["ເລືອກ %n ໄຟລ໌"]},{msgid:"Confirm",msgstr:["ຢືນຢັນ"]},{msgid:"Continue",msgstr:["ດຳເນີນການຕໍ່"]},{msgid:"Copy",msgstr:["ຄັດລອກ"]},{msgid:"Copy to {target}",msgstr:["ຄັດລອກໄປທີ່ {target}"]},{msgid:"Could not create the new folder",msgstr:["ບໍ່ສາມາດສ້າງໂຟນເດີໃໝ່ໄດ້"]},{msgid:"Could not load files settings",msgstr:["ບໍ່ສາມາດໂຫຼດການຕັ້ງຄ່າໄຟລ໌ໄດ້"]},{msgid:"Could not load files views",msgstr:["ບໍ່ສາມາດໂຫຼດມຸມມອງໄຟລ໌ໄດ້"]},{msgid:"Create directory",msgstr:["ສ້າງໄດເຣັກທໍຣີ"]},{msgid:"Current view selector",msgstr:["ຕົວເລືອກມຸມມອງປັດຈຸບັນ"]},{msgid:"Enter your name",msgstr:["ປ້ອນຊື່ຂອງທ່ານ"]},{msgid:"Existing version",msgstr:["ເວີຊັນທີ່ມີຢູ່"]},{msgid:"Failed to set nickname.",msgstr:["ຕັ້ງຊື່ຫຼິ້ນບໍ່ສຳເລັດ."]},{msgid:"Favorites",msgstr:["ລາຍການທີ່ມັກ"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານໝາຍວ່າເປັນລາຍການທີ່ມັກຈະສະແດງຢູ່ບ່ອນນີ້."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານແກ້ໄຂລ່າສຸດຈະສະແດງຢູ່ບ່ອນນີ້."]},{msgid:"Filter file list",msgstr:["ກັ່ນຕອງລາຍການໄຟລ໌"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['ຊື່ໂຟນເດີຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ "{extension}".']},{msgid:"Guest identification",msgstr:["ການລະບຸຕົວຕົນຂອງແຂກ"]},{msgid:"Home",msgstr:["ໜ້າຫຼັກ"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["ຖ້າທ່ານເລືອກທັງສອງເວີຊັນ, ໄຟລ໌ທີ່ເຂົ້າມາຈະມີຕົວເລກເພີ່ມໃສ່ຊື່ຂອງມັນ."]},{msgid:"Invalid folder name.",msgstr:["ຊື່ໂຟນເດີບໍ່ຖືກຕ້ອງ."]},{msgid:"Invalid name.",msgstr:["ຊື່ບໍ່ຖືກຕ້ອງ."]},{msgid:"Last modified date unknown",msgstr:["ບໍ່ຮູ້ວັນທີແກ້ໄຂລ່າສຸດ"]},{msgid:"Modified",msgstr:["ແກ້ໄຂເມື່ອ"]},{msgid:"Move",msgstr:["ຍ້າຍ"]},{msgid:"Move to {target}",msgstr:["ຍ້າຍໄປທີ່ {target}"]},{msgid:"Name",msgstr:["ຊື່"]},{msgid:"Names may be at most 64 characters long.",msgstr:["ຊື່ອາດມີຄວາມຍາວສູງສຸດ 64 ຕົວອັກສອນ."]},{msgid:"Names must not be empty.",msgstr:["ຊື່ຕ້ອງບໍ່ຫວ່າງເປົ່າ."]},{msgid:'Names must not end with "{extension}".',msgstr:['ຊື່ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["ຊື່ຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຈຸດ."]},{msgid:"New",msgstr:["ໃໝ່"]},{msgid:"New folder",msgstr:["ໂຟນເດີໃໝ່"]},{msgid:"New folder name",msgstr:["ຊື່ໂຟນເດີໃໝ່"]},{msgid:"New version",msgstr:["ເວີຊັນໃໝ່"]},{msgid:"No files in here",msgstr:["ບໍ່ມີໄຟລ໌ຢູ່ບ່ອນນີ້"]},{msgid:"No files matching your filter were found.",msgstr:["ບໍ່ພົບໄຟລ໌ທີ່ກົງກັບການກັ່ນຕອງຂອງທ່ານ."]},{msgid:"No matching files",msgstr:["ບໍ່ມີໄຟລ໌ທີ່ກົງກັນ"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["ກະລຸນາປ້ອນຊື່ທີ່ມີຢ່າງໜ້ອຍ 2 ຕົວອັກສອນ."]},{msgid:"Recent",msgstr:["ລ່າສຸດ"]},{msgid:"Select all checkboxes",msgstr:["ເລືອກກ່ອງໝາຍທັງໝົດ"]},{msgid:"Select all entries",msgstr:["ເລືອກທຸກລາຍການ"]},{msgid:"Select all existing files",msgstr:["ເລືອກໄຟລ໌ທີ່ມີຢູ່ທັງໝົດ"]},{msgid:"Select all new files",msgstr:["ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ"]},{msgid:"Select entry",msgstr:["ເລືອກລາຍການ"]},{msgid:"Select the row for {nodename}",msgstr:["ເລືອກແຖວສຳລັບ {nodename}"]},{msgid:"Size",msgstr:["ຂະໜາດ"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["ຂ້າມ %n ໄຟລ໌"]},{msgid:"Skip this file",msgstr:["ຂ້າມໄຟລ໌ນີ້"]},{msgid:"Submit name",msgstr:["ສົ່ງຊື່"]},{msgid:"Undo",msgstr:["ເອົາຄືນ"]},{msgid:"Upload some content or sync with your devices!",msgstr:["ອັບໂຫຼດເນື້ອຫາ ຫຼື ຊິງຄ໌ກັບອຸປະກອນຂອງທ່ານ!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ໄຟລ໌ໃດໆທີ່ຂັດກັນພາຍໃນໂຟນເດີນັ້ນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟນເດີທີ່ມີຢູ່ ແລະ ຈະມີການແກ້ໄຂຂໍ້ຂັດແຍ່ງແບບຕໍ່ເນື່ອງ."]},{msgid:"Which files do you want to keep?",msgstr:["ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["ຕອນນີ້ທ່ານຖືກລະບຸວ່າເປັນ {nickname}."]},{msgid:"You are currently not identified.",msgstr:["ຕອນນີ້ທ່ານຍັງບໍ່ໄດ້ຖືກລະບຸຕົວຕົນ."]},{msgid:"You cannot leave the name empty.",msgstr:["ທ່ານບໍ່ສາມາດປະຊື່ໃຫ້ຫວ່າງເປົ່າໄດ້."]},{msgid:"You need to choose at least one conflict solution",msgstr:["ທ່ານຈຳເປັນຕ້ອງເລືອກວິທີແກ້ໄຂຂໍ້ຂັດແຍ່ງຢ່າງໜ້ອຍໜຶ່ງຢ່າງ"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງເວີຊັນຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່."]}]},{language:"lt_LT",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["„{char}“ negalima naudoti aplanko pavadinime."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["„{char}“ negalima naudoti vardo sudėtyje."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["„{extension}“ nėra leidžiamas vardas."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["„{segment}“ yra rezervuotas vardas, kurio negalima naudoti aplankų pavadinimuose."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["„{segment}“ yra rezervuotas vardas, todėl jo naudoti negalima."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n failo konfliktas","%n failų konfliktas","%n failų konfliktas","%n failų konfliktas"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n failo konfliktas {dirname}","%n failų konfliktas {dirname}","%n failų konfliktas {dirname}","%n failų konfliktas {dirname}"]},{msgid:"All files",msgstr:["Visi failai"]},{msgid:"Cancel",msgstr:["Atsisakyti"]},{msgid:"Cancel the entire operation",msgstr:["Atsisakyti visos operacijos"]},{msgid:"Choose",msgstr:["Pasirinkti"]},{msgid:"Choose {file}",msgstr:["Pasirinkti {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Pasirinkti %n failą","Pasirinkti %n failus","Pasirinkti %n failų","Pasirinkti %n failą"]},{msgid:"Confirm",msgstr:["Patvirtinti"]},{msgid:"Continue",msgstr:["Tęsti"]},{msgid:"Copy",msgstr:["Kopijuoti"]},{msgid:"Copy to {target}",msgstr:["Kopijuoti į {target}"]},{msgid:"Could not create the new folder",msgstr:["Nepavyko sukurti naujo aplanko"]},{msgid:"Could not load files settings",msgstr:["Nepavyko įkelti failų nustatymų"]},{msgid:"Could not load files views",msgstr:["Nepavyko įkelti failų peržiūrų"]},{msgid:"Create directory",msgstr:["Sukurti katalogą"]},{msgid:"Current view selector",msgstr:["Dabartinis peržiūros pasirinkimas"]},{msgid:"Enter your name",msgstr:["Įrašykite savo vardą"]},{msgid:"Existing version",msgstr:["Esama versija"]},{msgid:"Failed to set nickname.",msgstr:["Nepavyko nustatyti slapyvardžio"]},{msgid:"Favorites",msgstr:["Populiariausi"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Failai ir aplankai, kuriuos pažymėsite kaip mėgstamiausius, bus rodomi čia."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Čia bus rodomi failai ir aplankai, kuriuos neseniai pakeitėte."]},{msgid:"Filter file list",msgstr:["Filtruoti failų sąrašą"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Aplankų pavadinimai neturi baigtis simboliu „{extension}“."]},{msgid:"Guest identification",msgstr:["Svečio identifikacija"]},{msgid:"Home",msgstr:["Pradžia"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jei pasirinksite abi versijas, prie gaunamo failo pavadinimo bus pridėtas numeris."]},{msgid:"Invalid folder name.",msgstr:["Netinkamas aplanko pavadinimas."]},{msgid:"Invalid name.",msgstr:["Netinkamas pavadinimas."]},{msgid:"Last modified date unknown",msgstr:["Paskutinio atnaujinimo data nežinoma"]},{msgid:"Modified",msgstr:["Pakeista"]},{msgid:"Move",msgstr:["Perkelti"]},{msgid:"Move to {target}",msgstr:["Perkelti į {target}"]},{msgid:"Name",msgstr:["Vardas"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Vardų ilgis negali viršyti 64 simbolių."]},{msgid:"Names must not be empty.",msgstr:["Pavadinimai negali būti tušti."]},{msgid:'Names must not end with "{extension}".',msgstr:["Vardai neturi baigtis simboliu „{extension}“."]},{msgid:"Names must not start with a dot.",msgstr:["Vardai negali prasidėti tašku."]},{msgid:"New",msgstr:["Naujas"]},{msgid:"New folder",msgstr:["Naujas aplankas"]},{msgid:"New folder name",msgstr:["Naujas aplanko pavadinimas"]},{msgid:"New version",msgstr:["Nauja versija"]},{msgid:"No files in here",msgstr:["Čia failų nėra"]},{msgid:"No files matching your filter were found.",msgstr:["Nepavyko rasti failų pagal filtro nustatymus"]},{msgid:"No matching files",msgstr:["Nėra atitinkančių failų"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Įrašykite vardą iš mažiausiai dviejų ženklų."]},{msgid:"Recent",msgstr:["Nauji"]},{msgid:"Select all checkboxes",msgstr:["Pažymėti visus langelius"]},{msgid:"Select all entries",msgstr:["Žymėti visus įrašus"]},{msgid:"Select all existing files",msgstr:["Pažymėti visus esamus failus"]},{msgid:"Select all new files",msgstr:["Pažymėti visus naujus failus"]},{msgid:"Select entry",msgstr:["Žymėti įrašą"]},{msgid:"Select the row for {nodename}",msgstr:["Pasirinkite eilutę {nodename}"]},{msgid:"Size",msgstr:["Dydis"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Praleisti %n failą","Praleisti %n failus","Praleisti %n failų","Praleisti %n failą"]},{msgid:"Skip this file",msgstr:["Praleisti šį failą"]},{msgid:"Submit name",msgstr:["Pateikti pavadinimą"]},{msgid:"Undo",msgstr:["Atšaukti"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Įkelkite turinio arba sinchronizuokite su savo įrenginiais!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Pasirinkus įeinančių failų aplanką, jame esantys failai, su kuriais kyla konfliktas, taip pat bus perrašyti."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Pasirinkus įeinančių failų aplanką, jo turinys įrašomas į esamą aplanką ir atliekamas rekursyvus konfliktų sprendimas."]},{msgid:"Which files do you want to keep?",msgstr:["Kokius failus norite išsaugoti?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Šiuo metu esate identifikuotas kaip {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Šiuo metu nesate identifikuotas."]},{msgid:"You cannot leave the name empty.",msgstr:["Negalite palikti tuščio vardo lauko."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Turite pasirinkti bent vieną konflikto sprendimo būdą"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Norėdami tęsti, turite pasirinkti bent vieną kiekvieno failo versiją."]}]},{language:"lv",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" nav derīgs mapes nosaukums.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" nav atļauts mapes nosaukums']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" nav atļauts mapes nosaukuma izmantošanā.']},{msgid:"All files",msgstr:["Visas datnes"]},{msgid:"Choose",msgstr:["Izvēlieties"]},{msgid:"Choose {file}",msgstr:["Izvēlieties {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Izvēlēties %n datņu","Izvēlēties %n datni","Izvēlēties %n datnes"]},{msgid:"Copy",msgstr:["Kopēt"]},{msgid:"Copy to {target}",msgstr:["Kopēt uz {target}"]},{msgid:"Could not create the new folder",msgstr:["Nevarēja izveidot jaunu mapi"]},{msgid:"Could not load files settings",msgstr:["Nevarēja ielādēt datņu iestatījumus"]},{msgid:"Could not load files views",msgstr:["Nevarēja ielādēt datņu apskatījumus"]},{msgid:"Create directory",msgstr:["Izveidot direktoriju"]},{msgid:"Current view selector",msgstr:["Pašreizēja skata atlasītājs"]},{msgid:"Favorites",msgstr:["Favorīti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Šeit parādīsies datnes un mapes, kas tiks atzīmētas kā iecienītas."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Šeit parādīsies datnes un mapes, kuras nesen tika izmainītas."]},{msgid:"Filter file list",msgstr:["Atlasīt datņu sarakstu"]},{msgid:"Folder name cannot be empty.",msgstr:["Mapes nosaukums nevar būt tukšs."]},{msgid:"Home",msgstr:["Sākums"]},{msgid:"Modified",msgstr:["Izmaninīta"]},{msgid:"Move",msgstr:["Pārvietot"]},{msgid:"Move to {target}",msgstr:["Pārvietot uz {target}"]},{msgid:"Name",msgstr:["Nosaukums"]},{msgid:"New",msgstr:["Jauns"]},{msgid:"New folder",msgstr:["Jauna mape"]},{msgid:"New folder name",msgstr:["Jaunas mapes nosaukums"]},{msgid:"No files in here",msgstr:["Šeit nav datņu"]},{msgid:"No files matching your filter were found.",msgstr:["Netika atrasta neviena datne, kas atbilst atlasei."]},{msgid:"No matching files",msgstr:["Nav atbilstošu datņu"]},{msgid:"Recent",msgstr:["Nesenās"]},{msgid:"Select all entries",msgstr:["Atlasīt visus ierakstus"]},{msgid:"Select entry",msgstr:["Atlasīt ierakstu"]},{msgid:"Select the row for {nodename}",msgstr:["Atlasīt rindu {nodename}"]},{msgid:"Size",msgstr:["Izmērs"]},{msgid:"Undo",msgstr:["Atsaukt"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Augšupielādē kādu saturu vai sinhronizē savās iekārtās!"]}]},{language:"mk",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" не е дозволен во име на папка.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" не е дозволено во име.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" не е дозволено име.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" е резервирано име и не е дозволено за име на папка.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" е резервирано име и не е дозволено.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n конфликт со датотекa","%n конфликти со датотеки"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n конфликт со датотека во {dirname}","%n конфликти со датотеки vo {dirname}"]},{msgid:"All files",msgstr:["Сите датотеки"]},{msgid:"Cancel",msgstr:["Откажи"]},{msgid:"Cancel the entire operation",msgstr:["Прекини ја целата операција"]},{msgid:"Choose",msgstr:["Избери"]},{msgid:"Choose {file}",msgstr:["Избери {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Избери %n датотека","Избери %n датотеки"]},{msgid:"Confirm",msgstr:["Потврди"]},{msgid:"Continue",msgstr:["Продолжи"]},{msgid:"Copy",msgstr:["Копирај"]},{msgid:"Copy to {target}",msgstr:["Копирај во {target}"]},{msgid:"Could not create the new folder",msgstr:["Неможе да се креира нова папка"]},{msgid:"Could not load files settings",msgstr:["Неможе да се вчиаат параметрите за датотеките"]},{msgid:"Could not load files views",msgstr:["Неможе да се вчитаат погледите за датотеките"]},{msgid:"Create directory",msgstr:["Креирај папка"]},{msgid:"Current view selector",msgstr:["Избирач на тековен приказ"]},{msgid:"Enter your name",msgstr:["Внесете го вашето име"]},{msgid:"Existing version",msgstr:["Моментална верзија"]},{msgid:"Failed to set nickname.",msgstr:["Неуспешно поставување прекар."]},{msgid:"Favorites",msgstr:["Фаворити"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Датотеките и папките кој ќе ги означите за омилени ќе се појават овде."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Датотеките и папките кој неодамна сте ги измениле ќе се појават овде."]},{msgid:"Filter file list",msgstr:["Филтрирај листа на датотеки"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Имињата на папките неможе да завршуваат со "{extension}".']},{msgid:"Guest identification",msgstr:["Гостинска идентификација"]},{msgid:"Home",msgstr:["Почетна"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ако ги избереш двете верзии, влезната датотека ќе добие број додаден на нејзиното име."]},{msgid:"Invalid folder name.",msgstr:["Невалидно име на папка."]},{msgid:"Invalid name.",msgstr:["Невалидно име."]},{msgid:"Last modified date unknown",msgstr:["Датумот на последна измена е непознат"]},{msgid:"Modified",msgstr:["Променето"]},{msgid:"Move",msgstr:["Премести"]},{msgid:"Move to {target}",msgstr:["Премести во {target}"]},{msgid:"Name",msgstr:["Име"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Имињата можат да бидат најмногу со 64 карактери."]},{msgid:"Names must not be empty.",msgstr:["Имињата неможе да бидат празни."]},{msgid:'Names must not end with "{extension}".',msgstr:['Имињата неможе да завршуваат со "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Имињата неможе да започнуваат со точка."]},{msgid:"New",msgstr:["Нова"]},{msgid:"New folder",msgstr:["Нова папка"]},{msgid:"New folder name",msgstr:["Ново име на папка"]},{msgid:"New version",msgstr:["Нова верзија"]},{msgid:"No files in here",msgstr:["Овде нема датотеки"]},{msgid:"No files matching your filter were found.",msgstr:["Не се пронајдени датотеки што одговараат на вашиот филтер."]},{msgid:"No matching files",msgstr:["Нема датотеки што се совпаѓаат"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Внесете име со најмалку 2 карактери."]},{msgid:"Recent",msgstr:["Неодамнешни"]},{msgid:"Select all checkboxes",msgstr:["Избери ги сите полиња за избор"]},{msgid:"Select all entries",msgstr:["Изберете ги сите записи"]},{msgid:"Select all existing files",msgstr:["Изберете ги сите постоечки датотеки"]},{msgid:"Select all new files",msgstr:["Изберете ги сите нови датотеки"]},{msgid:"Select entry",msgstr:["Избери запис"]},{msgid:"Select the row for {nodename}",msgstr:["Избери ред за {nodename}"]},{msgid:"Size",msgstr:["Големина"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Прескокни %n датотека","Прескокни %n датотеки"]},{msgid:"Skip this file",msgstr:["Прескокни ја оваа датотека"]},{msgid:"Submit name",msgstr:["Испрати име"]},{msgid:"Undo",msgstr:["Врати"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Прикачи содржина или синхронизирај со ваши уреди!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Кога е избрана влезна папка, сите конфликтни датотеки во неа исто така ќе бидат препишани."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Кога е избрана влезна папка, содржината се запишува во постоечката папка и се извршува рекурсивно решавање на конфликти."]},{msgid:"Which files do you want to keep?",msgstr:["Кој датотеки сакаш да ги зачуваш?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Моментално сте идентификувани како {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Моментално не сте идентификувани."]},{msgid:"You cannot leave the name empty.",msgstr:["Не можете да го оставите името празно."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Треба да избереш најмалку едно решение за конфликт"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Треба да избереш најмалку една верзија за секоја датотека за да продолжи."]}]},{language:"ms_MY",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" adalah nama folder yang tidak sesuai ']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" nama folder yang tidak dibenarkan']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" tidak dibenarkan dalam nama folder']},{msgid:"All files",msgstr:["Semua fail"]},{msgid:"Choose",msgstr:["Pilih"]},{msgid:"Choose {file}",msgstr:["Pilih {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Pilih fail %n"]},{msgid:"Copy",msgstr:["menyalin"]},{msgid:"Copy to {target}",msgstr:["menyalin ke {target}"]},{msgid:"Could not create the new folder",msgstr:["Tidak dapat mewujudkan folder baharu"]},{msgid:"Could not load files settings",msgstr:["Tidak dapat memuatkan tetapan fail"]},{msgid:"Could not load files views",msgstr:["Tidak dapat memuatkan paparan fail"]},{msgid:"Create directory",msgstr:["mewujudkan direktori"]},{msgid:"Current view selector",msgstr:["pemilih pandangan semasa"]},{msgid:"Favorites",msgstr:["Pilihan"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Fail dan folder yang anda tanda sebagai pilihan akan dipaparkan di sini."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Fail dan folder yang anda telah ubah suai baru-baru ini dipaparkan di sini."]},{msgid:"Filter file list",msgstr:["Menapis senarai fail"]},{msgid:"Folder name cannot be empty.",msgstr:["Nama folder tidak boleh kosong."]},{msgid:"Home",msgstr:["Utama"]},{msgid:"Modified",msgstr:["Ubah suai"]},{msgid:"Move",msgstr:["pindah"]},{msgid:"Move to {target}",msgstr:["pindah ke {target}"]},{msgid:"Name",msgstr:["Nama"]},{msgid:"New",msgstr:["Baru"]},{msgid:"New folder",msgstr:["Folder Baharu"]},{msgid:"New folder name",msgstr:["Nama folder baharu"]},{msgid:"No files in here",msgstr:["Tiada fail di sini"]},{msgid:"No files matching your filter were found.",msgstr:["Tiada fail yang sepadan dengan tapisan anda."]},{msgid:"No matching files",msgstr:["Tiada fail yang sepadan"]},{msgid:"Recent",msgstr:["baru-baru ini"]},{msgid:"Select all entries",msgstr:["Pilih semua entri"]},{msgid:"Select entry",msgstr:["Pilih entri"]},{msgid:"Select the row for {nodename}",msgstr:["memilih baris {nodename}"]},{msgid:"Size",msgstr:["Saiz"]},{msgid:"Undo",msgstr:["buat asal"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Muat naik beberapa kandungan atau selaras dengan peranti anda!"]}]},{language:"nb_NO",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" er ikke tillatt i et navn.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" er ikke et tillatt navn.']},{msgid:'"{name}" is an invalid folder name.',msgstr:["«{name}» er ikke et gyldig mappenavn."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["«{name}» er ikke et tillatt mappenavn."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" er et reservert navn og er ikke tillatt.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" er ikke tillatt inne i et mappenavn.']},{msgid:"All files",msgstr:["Alle filer"]},{msgid:"Cancel",msgstr:["Avbryt"]},{msgid:"Choose",msgstr:["Velg"]},{msgid:"Choose {file}",msgstr:["Velg {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Velg %n fil","Velg %n filer"]},{msgid:"Copy",msgstr:["Kopier"]},{msgid:"Copy to {target}",msgstr:["Kopier til {target}"]},{msgid:"Could not create the new folder",msgstr:["Kunne ikke opprette den nye mappen"]},{msgid:"Could not load files settings",msgstr:["Kunne ikke laste filinnstillinger"]},{msgid:"Could not load files views",msgstr:["Kunne ikke laste filvisninger"]},{msgid:"Create directory",msgstr:["Opprett mappe"]},{msgid:"Current view selector",msgstr:["Nåværende visningsvelger"]},{msgid:"Enter your name",msgstr:["Skriv inn navnet ditt"]},{msgid:"Failed to set nickname.",msgstr:["Kunne ikke lagre kallenavnet."]},{msgid:"Favorites",msgstr:["Favoritter"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Filer og mapper du markerer som favoritter vil vises her."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Filer og mapper du nylig har endret, vil vises her."]},{msgid:"Filter file list",msgstr:["Filtrer filliste"]},{msgid:"Folder name cannot be empty.",msgstr:["Mappenavn kan ikke være tomt."]},{msgid:"Guest identification",msgstr:["Gjesteidentifikasjon"]},{msgid:"Home",msgstr:["Hjem"]},{msgid:"Invalid name.",msgstr:["Ugyldig navn."]},{msgid:"Modified",msgstr:["Modifisert"]},{msgid:"Move",msgstr:["Flytt"]},{msgid:"Move to {target}",msgstr:["Flytt til {target}"]},{msgid:"Name",msgstr:["Navn"]},{msgid:"Names must not be empty.",msgstr:["Navn kan ikke være tomme."]},{msgid:'Names must not end with "{extension}".',msgstr:['Navn kan ikke ende med "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Navn kan ikke starte med et punktum."]},{msgid:"New",msgstr:["Ny"]},{msgid:"New folder",msgstr:["Ny mappe"]},{msgid:"New folder name",msgstr:["Nytt mappenavn"]},{msgid:"No files in here",msgstr:["Ingen filer her"]},{msgid:"No files matching your filter were found.",msgstr:["Ingen filer funnet med ditt filter."]},{msgid:"No matching files",msgstr:["Ingen filer samsvarer"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Vennligst angi et navn som har minst 2 tegn."]},{msgid:"Recent",msgstr:["Nylige"]},{msgid:"Select all entries",msgstr:["Velg alle oppføringer"]},{msgid:"Select entry",msgstr:["Velg oppføring"]},{msgid:"Select the row for {nodename}",msgstr:["Velg raden for {nodename}"]},{msgid:"Size",msgstr:["Størrelse"]},{msgid:"Submit name",msgstr:["Bekreft navn"]},{msgid:"Undo",msgstr:["Angre"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Last opp innhold eller synkroniser med enhetene dine!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du er akkurat nå identifisert som {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Du er akkurat nå ikke identifisert."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kan ikke la navnet være blankt."]}]},{language:"nl",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["{char}is niet toegestaan in een mapnaam."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" kan niet gebruikt worden in de benaming.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" is geen toegestane naam.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" is een gereserveerde naam en niet toegestaan in mapnamen.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" is een gereserveerde naam en niet toegestaan.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n bestanden conflicteren","%nbestand bestanden conflicteren"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n bestand conflicteerd in {dirname}","%nbestanden conflicteert in {dirname}"]},{msgid:"All files",msgstr:["Alle bestanden"]},{msgid:"Cancel",msgstr:["Annuleren"]},{msgid:"Cancel the entire operation",msgstr:["Annuleer de hele bewerking"]},{msgid:"Choose",msgstr:["Kiezen"]},{msgid:"Choose {file}",msgstr:["Kies {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Kies %n bestand","Kies %n bestanden"]},{msgid:"Confirm",msgstr:["Bevestigen"]},{msgid:"Continue",msgstr:["Doorgaan"]},{msgid:"Copy",msgstr:["Kopiëren"]},{msgid:"Copy to {target}",msgstr:["Kopiëren naar {target}"]},{msgid:"Could not create the new folder",msgstr:["Kon de nieuwe map niet maken"]},{msgid:"Could not load files settings",msgstr:["Kon de bestandsinstellingen niet laden"]},{msgid:"Could not load files views",msgstr:["Kon de bestandsweergaves niet laden"]},{msgid:"Create directory",msgstr:["Map aanmaken"]},{msgid:"Current view selector",msgstr:["Huidige weergave keuze"]},{msgid:"Enter your name",msgstr:["Voer je naam in"]},{msgid:"Existing version",msgstr:["Bestaande versie"]},{msgid:"Failed to set nickname.",msgstr:["Kon geen bijnaam instellen."]},{msgid:"Favorites",msgstr:["Favorieten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Bestanden en mappen die je als favoriet markeert, verschijnen hier."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Bestanden en mappen die je recentelijk hebt gewijzigd, verschijnen hier."]},{msgid:"Filter file list",msgstr:["Bestandslijst filteren"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Mapnamen mogen niet eindigen op "{extension}".']},{msgid:"Guest identification",msgstr:["Gastenidentificatie"]},{msgid:"Home",msgstr:["Thuis"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Als u beide versies selecteert wordt een nummer toegevoegd aan de naam van het binnenkomende bestand."]},{msgid:"Invalid folder name.",msgstr:["Ongeldige mapnaam."]},{msgid:"Invalid name.",msgstr:["Ongeldige naam."]},{msgid:"Last modified date unknown",msgstr:["Laatste wijzigingsdatum onbekend"]},{msgid:"Modified",msgstr:["Gewijzigd"]},{msgid:"Move",msgstr:["Verplaatsen"]},{msgid:"Move to {target}",msgstr:["Verplaatsen naar {target}"]},{msgid:"Name",msgstr:["Naam"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namen mogen maximaal 64 tekens lang zijn."]},{msgid:"Names must not be empty.",msgstr:["Namen mogen niet leeg zijn."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namen mogen niet eindigen met "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Namen mogen niet begonnen met een punt."]},{msgid:"New",msgstr:["Nieuw"]},{msgid:"New folder",msgstr:["Nieuwe map"]},{msgid:"New folder name",msgstr:["Nieuwe mapnaam"]},{msgid:"New version",msgstr:["Nieuwe versie"]},{msgid:"No files in here",msgstr:["Geen bestanden hier"]},{msgid:"No files matching your filter were found.",msgstr:["Geen bestanden gevonden die voldoen aan je filter."]},{msgid:"No matching files",msgstr:["Geen overeenkomende bestanden"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Voer een naam in met minimaal 2 tekens."]},{msgid:"Recent",msgstr:["Recent"]},{msgid:"Select all checkboxes",msgstr:["Selecteer alle aanvinkopties"]},{msgid:"Select all entries",msgstr:["Alle invoer selecteren"]},{msgid:"Select all existing files",msgstr:["Selecteer alle bestaande bestanden"]},{msgid:"Select all new files",msgstr:["Selecteer alle nieuwe bestanden"]},{msgid:"Select entry",msgstr:["Invoer selecteren"]},{msgid:"Select the row for {nodename}",msgstr:["Selecteer de rij voor {nodename}"]},{msgid:"Size",msgstr:["Grootte"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Sla %n bestand over","Sla %n bestanden over"]},{msgid:"Skip this file",msgstr:["Sla dit bestand over"]},{msgid:"Submit name",msgstr:["Naam indienen"]},{msgid:"Undo",msgstr:["Ongedaan maken"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Upload inhoud of synchroniseer met je apparaten!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Als een inkomende map wordt geselecteerd, worden alle conflicterende bestanden daarin overschreven."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Als een inkomende map wordt geselecteerd, wordt de inhoud naar de bestaande map geschreven en wordt een recursieve conflict-oplossing uitgevoerd."]},{msgid:"Which files do you want to keep?",msgstr:["Welke bestanden wilt u bewaren?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Je wordt momenteel geïdentificeerd als {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Je bent momenteel niet geïdentificeerd."]},{msgid:"You cannot leave the name empty.",msgstr:["Je kunt de naam niet leeg laten."]},{msgid:"You need to choose at least one conflict solution",msgstr:["U moet in elk geval een conflictoplossing kiezen"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["U moet minstens een versie van elk bestand kiezen om door te gaan. "]}]},{language:"pl",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['Znak "{char}" nie jest dozwolony w nazwie folderu.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" nie jest dozwolone w nazwie.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" nie jest dozwoloną nazwą.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" jest nazwą zastrzeżoną i nie jest dozwolona jako nazwa folderu.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" jest zastrzeżoną nazwą i nie jest dozwolone.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["Konflikt pliku","Konflikt %n plików","Konflikt %n plików","Konflikt %n plików"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n konfliktów pliku w {dirname}","%n konfliktów plików w {dirname}","%n konfliktów plików w {dirname}","%n konfliktów plików w {dirname}"]},{msgid:"All files",msgstr:["Wszystkie pliki"]},{msgid:"Cancel",msgstr:["Anuluj"]},{msgid:"Cancel the entire operation",msgstr:["Anuluj całą operację"]},{msgid:"Choose",msgstr:["Wybierz"]},{msgid:"Choose {file}",msgstr:["Wybierz {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Wybierz %n plik","Wybierz %n pliki","Wybierz %n plików","Wybierz %n plików"]},{msgid:"Confirm",msgstr:["Potwierdź"]},{msgid:"Continue",msgstr:["Kontynuuj"]},{msgid:"Copy",msgstr:["Kopiuj"]},{msgid:"Copy to {target}",msgstr:["Skopiuj do {target}"]},{msgid:"Could not create the new folder",msgstr:["Nie można utworzyć nowego folderu"]},{msgid:"Could not load files settings",msgstr:["Nie można wczytać ustawień plików"]},{msgid:"Could not load files views",msgstr:["Nie można wczytać widoków plików"]},{msgid:"Create directory",msgstr:["Utwórz katalog"]},{msgid:"Current view selector",msgstr:["Bieżący selektor widoku"]},{msgid:"Enter your name",msgstr:["Wprowadź nazwę"]},{msgid:"Existing version",msgstr:["Istniejąca wersja"]},{msgid:"Failed to set nickname.",msgstr:["Nie udało się utworzyć pseudonimu."]},{msgid:"Favorites",msgstr:["Ulubione"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Pliki i foldery które oznaczysz jako ulubione będą wyświetlały się tutaj"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Pliki i foldery które ostatnio modyfikowałeś będą wyświetlały się tutaj"]},{msgid:"Filter file list",msgstr:["Filtruj listę plików"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nazwy folderów nie mogą kończyć się na "{extension}".']},{msgid:"Guest identification",msgstr:["Identyfikacja gościa"]},{msgid:"Home",msgstr:["Strona główna"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jeśli wybierzesz obie wersje, do nazwy przychodzącego pliku zostanie dodany numer."]},{msgid:"Invalid folder name.",msgstr:["Nieprawidłowa nazwa folderu."]},{msgid:"Invalid name.",msgstr:["Nieprawidłowa nazwa."]},{msgid:"Last modified date unknown",msgstr:["Data ostatniej modyfikacji nieznana"]},{msgid:"Modified",msgstr:["Zmodyfikowano"]},{msgid:"Move",msgstr:["Przenieś"]},{msgid:"Move to {target}",msgstr:["Przejdź do {target}"]},{msgid:"Name",msgstr:["Nazwa"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nazwy mogą mieć maksymalnie 64 znaki."]},{msgid:"Names must not be empty.",msgstr:["Nazwy nie mogą być puste."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nazwy nie mogą kończyć się na "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nazwy nie mogą zaczynać się od kropki."]},{msgid:"New",msgstr:["Nowy"]},{msgid:"New folder",msgstr:["Nowy folder"]},{msgid:"New folder name",msgstr:["Nowa nazwa folderu"]},{msgid:"New version",msgstr:["Nowa wersja"]},{msgid:"No files in here",msgstr:["Brak plików"]},{msgid:"No files matching your filter were found.",msgstr:["Nie znaleziono plików spełniających warunki filtru"]},{msgid:"No matching files",msgstr:["Brak pasujących plików"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Wprowadź nazwę zawierającą minimum 2 znaki."]},{msgid:"Recent",msgstr:["Ostatni"]},{msgid:"Select all checkboxes",msgstr:["Zaznacz wszystkie pola wyboru"]},{msgid:"Select all entries",msgstr:["Wybierz wszystkie wpisy"]},{msgid:"Select all existing files",msgstr:["Zaznacz wszystkie istniejące pliki"]},{msgid:"Select all new files",msgstr:["Zaznacz wszystkie nowe pliki"]},{msgid:"Select entry",msgstr:["Wybierz wpis"]},{msgid:"Select the row for {nodename}",msgstr:["Wybierz wiersz dla {nodename}"]},{msgid:"Size",msgstr:["Rozmiar"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Pomiń %n plik","Pomiń %n plików","Pomiń %n plików","Pomiń %n plików"]},{msgid:"Skip this file",msgstr:["Pomiń ten plik"]},{msgid:"Submit name",msgstr:["Zatwierdź nazwę"]},{msgid:"Undo",msgstr:["Cofnij"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Wyślij zawartość lub zsynchronizuj ze swoimi urządzeniami!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Po wybraniu przychodzącego folderu wszystkie konfliktujące pliki w jego obrębie również zostaną nadpisane."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Po wybraniu przychodzącego folderu jego zawartość zostanie zapisana w istniejącym folderze i zostanie przeprowadzone rekursywne rozwiązywanie konfliktów."]},{msgid:"Which files do you want to keep?",msgstr:["Które pliki chcesz zachować?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Obecnie jesteś zidentyfikowany jako {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Użytkownik nie został uwierzytelniony."]},{msgid:"You cannot leave the name empty.",msgstr:["Nazwa nie może być pusta."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Musisz wybrać co najmniej jedno rozwiązanie konfliktu"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku."]}]},{language:"pt_BR",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" não é permitido dentro de um nome de pasta.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" não é permitido dentro de um nome.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" não é um nome permitido.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" é um nome reservado e não permitido para nomes de pasta.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" é um nome reservado e não permitido.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n arquivo conflita","%n de arquivos conflitam","%n arquivos conflitam"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n conflito de arquivo em {dirname}","%n de conflitos de arquivos em {dirname}","%n conflitos de arquivos em {dirname}"]},{msgid:"All files",msgstr:["Todos os arquivos"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar toda a operação"]},{msgid:"Choose",msgstr:["Escolher"]},{msgid:"Choose {file}",msgstr:["Escolher {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escolher %n arquivo","Escolher %n arquivos","Escolher %n arquivos"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar para {target}"]},{msgid:"Could not create the new folder",msgstr:["Não foi possível criar a nova pasta"]},{msgid:"Could not load files settings",msgstr:["Não foi possível carregar configurações de arquivos"]},{msgid:"Could not load files views",msgstr:["Não foi possível carregar visualições de arquivos"]},{msgid:"Create directory",msgstr:["Criar diretório"]},{msgid:"Current view selector",msgstr:["Seletor de visualização atual"]},{msgid:"Enter your name",msgstr:["Digite seu nome"]},{msgid:"Existing version",msgstr:["Versão existente"]},{msgid:"Failed to set nickname.",msgstr:["Falha ao definir apelido."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Os arquivos e pastas que você marca como favoritos aparecerão aqui."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Arquivos e pastas que você modificou recentemente aparecerão aqui."]},{msgid:"Filter file list",msgstr:["Filtrar lista de arquivos"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nomes de pasta não podem terminar com "{extension}".']},{msgid:"Guest identification",msgstr:["Identificação de convidados"]},{msgid:"Home",msgstr:["Início"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se você selecionar ambas as versões, um número será adicionado ao nome do arquivo recebido."]},{msgid:"Invalid folder name.",msgstr:["Nome de pasta inválido."]},{msgid:"Invalid name.",msgstr:["Nome inválido."]},{msgid:"Last modified date unknown",msgstr:["Data da última modificação desconhecida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover para {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Os nomes podem ter no máximo 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["Nomes não podem estar vazios."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nomes não podem terminar com "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nomes não podem começar com um ponto."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Nova pasta"]},{msgid:"New folder name",msgstr:["Novo nome de pasta"]},{msgid:"New version",msgstr:["Nova versão"]},{msgid:"No files in here",msgstr:["Nenhum arquivo aqui"]},{msgid:"No files matching your filter were found.",msgstr:["Nenhum arquivo correspondente ao seu filtro foi encontrado."]},{msgid:"No matching files",msgstr:["Nenhum arquivo correspondente"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Digite um nome com pelo menos 2 caracteres."]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all checkboxes",msgstr:["Selecione todas as caixas de seleção"]},{msgid:"Select all entries",msgstr:["Selecionar todas as entradas"]},{msgid:"Select all existing files",msgstr:["Selecione todos os arquivos existentes"]},{msgid:"Select all new files",msgstr:["Selecione todos os novos arquivos"]},{msgid:"Select entry",msgstr:["Selecionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Selecionar a linha para {nodename}"]},{msgid:"Size",msgstr:["Tamanho"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Ignorar %n arquivo","Ignorar %n de arquivos","Ignorar %n arquivos"]},{msgid:"Skip this file",msgstr:["Ignorar este arquivo"]},{msgid:"Submit name",msgstr:["Enviar nome"]},{msgid:"Undo",msgstr:["Desfazer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Faça upload de algum conteúdo ou sincronize com seus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ao selecionar uma pasta de entrada, quaisquer arquivos conflitantes dentro dela também serão sobrescritos."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução recursiva de conflitos é realizada."]},{msgid:"Which files do you want to keep?",msgstr:["Quais arquivos você deseja manter?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Você está atualmente identificado como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["No momento, você não está identificado."]},{msgid:"You cannot leave the name empty.",msgstr:["Você não pode deixar o nome vazio."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Você precisa escolher pelo menos uma solução para o conflito"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Você precisa selecionar pelo menos uma versão de cada arquivo para continuar."]}]},{language:"pt_PT",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" não é permitido dentro de um nome de pasta.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" não é permitido dentro de um nome.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" não é um nome permitido.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" é um nome reservado e não é permitido para nomes de pasta.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" é um nome reservado e não é permitido.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n ficheiro em conflito","%n ficheiros em conflito","%n ficheiros em conflito"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n ficheiro em conflito em {dirname}","%n ficheiros em conflito em {dirname}","%n ficheiros em conflito em {dirname}"]},{msgid:"All files",msgstr:["Todos os ficheiros"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar toda a operação"]},{msgid:"Choose",msgstr:["Escolher"]},{msgid:"Choose {file}",msgstr:["Escolher {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escolha %n ficheiro","Escolha %n ficheiros","Escolha %n ficheiros"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar para {target}"]},{msgid:"Could not create the new folder",msgstr:["Não foi possível criar a nova pasta "]},{msgid:"Could not load files settings",msgstr:["Não foi possível carregar as definições dos ficheiros"]},{msgid:"Could not load files views",msgstr:["Não foi possível carregar as visualizações dos ficheiros"]},{msgid:"Create directory",msgstr:["Criar pasta"]},{msgid:"Current view selector",msgstr:["Seletor de visualização atual"]},{msgid:"Enter your name",msgstr:["Introduza o seu nome"]},{msgid:"Existing version",msgstr:["Versão existente"]},{msgid:"Failed to set nickname.",msgstr:["Falha ao definir o nome alternativo."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Os ficheiros e as pastas que marcar como favoritos aparecerão aqui."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Os ficheiros e as pastas que modificou recentemente aparecerão aqui."]},{msgid:"Filter file list",msgstr:["Filtrar lista de ficheiros"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nomes de pasta não podem terminar em "{extension}".']},{msgid:"Guest identification",msgstr:["Identificação de convidado"]},{msgid:"Home",msgstr:["Início"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se você selecionar ambas as versões, um número será adicionado ao nome do ficheiro recebido."]},{msgid:"Invalid folder name.",msgstr:["Nome de pasta inválido."]},{msgid:"Invalid name.",msgstr:["Nome inválido."]},{msgid:"Last modified date unknown",msgstr:["Data da última modificação desconhecida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover para {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Os nomes podem ter no máximo 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["O nome não pode ficar em branco."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nomes não podem terminar em "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Os nomes não podem começar por um ponto."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Nova pasta"]},{msgid:"New folder name",msgstr:["Novo nome da pasta"]},{msgid:"New version",msgstr:["Nova versão"]},{msgid:"No files in here",msgstr:["Sem ficheiros aqui"]},{msgid:"No files matching your filter were found.",msgstr:["Não foi encontrado nenhum ficheiro correspondente ao seu filtro."]},{msgid:"No matching files",msgstr:["Nenhum ficheiro correspondente"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Introduza um nome com, pelo menos, 2 caracteres."]},{msgid:"Recent",msgstr:["Recentes"]},{msgid:"Select all checkboxes",msgstr:["Selecione todas as caixas de seleção"]},{msgid:"Select all entries",msgstr:["Selecionar todas as entradas"]},{msgid:"Select all existing files",msgstr:["Selecione todos os ficheiros existentes"]},{msgid:"Select all new files",msgstr:["Selecione todos os novos ficheiros"]},{msgid:"Select entry",msgstr:["Selecionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Selecione a linha para {nodename}"]},{msgid:"Size",msgstr:["Tamanho"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Ignorar %n ficheiro","Ignorar %n ficheiros","Ignorar %n ficheiros"]},{msgid:"Skip this file",msgstr:["Ignorar este ficheiro"]},{msgid:"Submit name",msgstr:["Submeter nome"]},{msgid:"Undo",msgstr:["Anular"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Envie algum conteúdo ou sincronize com os seus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ao selecionar uma pasta de entrada, quaisquer ficheiros conflituantes dentro da mesma serão também sobrescritos."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e é realizada uma resolução recursiva de conflitos."]},{msgid:"Which files do you want to keep?",msgstr:["Quais os ficheiros que deseja manter?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Atualmente está identificado como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Atualmente, não está identificado."]},{msgid:"You cannot leave the name empty.",msgstr:["Não pode deixar o nome em branco."]},{msgid:"You need to choose at least one conflict solution",msgstr:["É preciso escolher pelo menos uma solução para o conflito."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["É necessário selecionar pelo menos uma versão de cada ficheiro para continuar."]}]},{language:"ro",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" este un nume de director invalid.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" nu este un nume de director permis']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" nu este permis în numele unui director.']},{msgid:"All files",msgstr:["Toate fișierele"]},{msgid:"Choose",msgstr:["Alege"]},{msgid:"Choose {file}",msgstr:["Alege {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Alege %n fișier","Alege %n fișiere","Alege %n fișiere"]},{msgid:"Copy",msgstr:["Copiază"]},{msgid:"Copy to {target}",msgstr:["Copiază în {target}"]},{msgid:"Could not create the new folder",msgstr:["Nu s-a putut crea noul director"]},{msgid:"Could not load files settings",msgstr:["Nu s-au putut încărca setările fișierelor"]},{msgid:"Could not load files views",msgstr:["Nu s-au putut încărca vizualizările fișierelor"]},{msgid:"Create directory",msgstr:["Creează director"]},{msgid:"Current view selector",msgstr:["Selectorul curent al vizualizării"]},{msgid:"Favorites",msgstr:["Favorite"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Fișiere și directoare pe care le marcați ca favorite vor apărea aici."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Fișiere și directoare pe care le-ați modificat recent vor apărea aici."]},{msgid:"Filter file list",msgstr:["Filtrează lista de fișiere"]},{msgid:"Folder name cannot be empty.",msgstr:["Numele de director nu poate fi necompletat."]},{msgid:"Home",msgstr:["Acasă"]},{msgid:"Modified",msgstr:["Modificat"]},{msgid:"Move",msgstr:["Mută"]},{msgid:"Move to {target}",msgstr:["Mută către {target}"]},{msgid:"Name",msgstr:["Nume"]},{msgid:"New",msgstr:["Nou"]},{msgid:"New folder",msgstr:["Director nou"]},{msgid:"New folder name",msgstr:["Numele noului director"]},{msgid:"No files in here",msgstr:["Nu există fișiere"]},{msgid:"No files matching your filter were found.",msgstr:["Nu există fișiere potrivite pentru filtrul selectat"]},{msgid:"No matching files",msgstr:["Nu există fișiere potrivite"]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all entries",msgstr:["Selectează toate înregistrările"]},{msgid:"Select entry",msgstr:["Selectează înregistrarea"]},{msgid:"Select the row for {nodename}",msgstr:["Selectează rândul pentru {nodename}"]},{msgid:"Size",msgstr:["Mărime"]},{msgid:"Undo",msgstr:["Anulează"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Încărcați conținut sau sincronizați cu dispozitivele dumneavoastră!"]}]},{language:"ru",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" не допускается в названии папки.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" не допускается внутри имени.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" это не допустимое имя.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" это зарезервированное имя и не допустимо для имени папки.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" это зарезервированное имя и не допустимо.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n конфликт файла","%n конфликта файлов","%n конфликтов файлов","%n конфликтов файлов"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n конфликт файлов в {dirname}","%n конфликта файлов в {dirname}","%n конфликтов файлов в {dirname}","%n конфликтов файлов в {dirname}"]},{msgid:"All files",msgstr:["Все файлы"]},{msgid:"Cancel",msgstr:["Отмена"]},{msgid:"Cancel the entire operation",msgstr:["Отмена операции"]},{msgid:"Choose",msgstr:["Выбрать"]},{msgid:"Choose {file}",msgstr:["Выбрать «{file}»"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Выбрать %n файл","Выбрать %n файла","Выбрать %n файлов","Выбрать %n файлов"]},{msgid:"Confirm",msgstr:["Подтвердить"]},{msgid:"Continue",msgstr:["Продолжить"]},{msgid:"Copy",msgstr:["Копировать"]},{msgid:"Copy to {target}",msgstr:["Копировать в «{target}»"]},{msgid:"Could not create the new folder",msgstr:["Не удалось создать новую папку"]},{msgid:"Could not load files settings",msgstr:["Не удалось загрузить настройки файлов"]},{msgid:"Could not load files views",msgstr:["Не удалось загрузить конфигурацию просмотра файлов"]},{msgid:"Create directory",msgstr:["Создать папку"]},{msgid:"Current view selector",msgstr:["Переключатель текущего вида"]},{msgid:"Enter your name",msgstr:["Введите ваше имя"]},{msgid:"Existing version",msgstr:["Текущая версия"]},{msgid:"Failed to set nickname.",msgstr:["Не удалось задать никнейм."]},{msgid:"Favorites",msgstr:["Избранное"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Здесь будут отображаться файлы и папки, которые вы пометили как избранные."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Здесь будут отображаться файлы и папки, которые вы недавно изменили."]},{msgid:"Filter file list",msgstr:["Фильтровать список файлов"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Имена папок не могут оканчиваться на "{extension}".']},{msgid:"Guest identification",msgstr:["Гостевая идентификация"]},{msgid:"Home",msgstr:["Домой"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Если вы выберете обе версии, к имени входящего файла будет добавлен номер."]},{msgid:"Invalid folder name.",msgstr:["Недопустимое имя папки."]},{msgid:"Invalid name.",msgstr:["Неверное имя."]},{msgid:"Last modified date unknown",msgstr:["Дата последнего изменения неизвестна"]},{msgid:"Modified",msgstr:["Изменен"]},{msgid:"Move",msgstr:["Переместить"]},{msgid:"Move to {target}",msgstr:["Переместить в «{target}»"]},{msgid:"Name",msgstr:["Имя"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Имена не могут быть длинее 64 символов."]},{msgid:"Names must not be empty.",msgstr:["Имена не могут быть пустыми."]},{msgid:'Names must not end with "{extension}".',msgstr:['Имена не могут оканчиваться на "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Имена должны начинаться с точки."]},{msgid:"New",msgstr:["Новый"]},{msgid:"New folder",msgstr:["Новая папка"]},{msgid:"New folder name",msgstr:["Имя новой папки"]},{msgid:"New version",msgstr:["Новая версия"]},{msgid:"No files in here",msgstr:["Здесь нет файлов"]},{msgid:"No files matching your filter were found.",msgstr:["Файлы, соответствующие вашему фильтру, не найдены."]},{msgid:"No matching files",msgstr:["Нет подходящих файлов"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Введите имя длиной не менее 2 символов."]},{msgid:"Recent",msgstr:["Недавний"]},{msgid:"Select all checkboxes",msgstr:["Выбрать все флажки"]},{msgid:"Select all entries",msgstr:["Выбрать все записи"]},{msgid:"Select all existing files",msgstr:["Выбрать все существующие файлы"]},{msgid:"Select all new files",msgstr:["Выбрать все новые файлы"]},{msgid:"Select entry",msgstr:["Выбрать запись"]},{msgid:"Select the row for {nodename}",msgstr:["Выбрать строку для «{nodename}»"]},{msgid:"Size",msgstr:["Размер"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Пропустить %n файл","Пропустить %n файла","Пропустить %n файлов","Пропустить %n файлов"]},{msgid:"Skip this file",msgstr:["Пропустить файл"]},{msgid:"Submit name",msgstr:["Отправить имя"]},{msgid:"Undo",msgstr:["Отменить"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Загрузите контент или синхронизируйте его со своими устройствами!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов."]},{msgid:"Which files do you want to keep?",msgstr:["Какие файлы вы хотите сохранить?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Вы идентифицированы как {nickname}."]},{msgid:"You are currently not identified.",msgstr:["В данный момент вы не идентифицированы."]},{msgid:"You cannot leave the name empty.",msgstr:["Вы не можете оставить имя пустым."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Вам нужно выбрать хотя бы одно решение конфликта"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Для продолжения вам нужно выбрать хотя бы одну версию каждого файла."]}]},{language:"sk_SK",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" nie je povolené v názve priečinka.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" nie je povolené v rámci mena.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" nie je povolený názov.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["„{segment}“ je rezervované meno a nie je povolené na názvy priečinkov."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" je rezervované meno a nie je povolené.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n konflikt súborov","%n konflikty súborov","%n konfliktov súborov","%n konflikty súborov"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n konflikt súborov v {dirname}","%n konflikty súborov v {dirname}","%n konfliktov súborov v {dirname}","%n konfliktov súborov v {dirname}"]},{msgid:"All files",msgstr:["Všetky súbory"]},{msgid:"Cancel",msgstr:["Zrušiť"]},{msgid:"Cancel the entire operation",msgstr:["Zrušiť celú operáciu"]},{msgid:"Choose",msgstr:["Vybrať"]},{msgid:"Choose {file}",msgstr:["Vybrať {súbor}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Vybraný %n súbor","Vybrané %n súbory","Vybraných %n súborov","Vybraných %n súborov"]},{msgid:"Confirm",msgstr:["Potvrdiť"]},{msgid:"Continue",msgstr:["Pokračovať"]},{msgid:"Copy",msgstr:["Kopírovať"]},{msgid:"Copy to {target}",msgstr:["Kopírovať do {umiestnenia}"]},{msgid:"Could not create the new folder",msgstr:["Nepodarilo sa vytvoriť nový priečinok"]},{msgid:"Could not load files settings",msgstr:["Nepodarilo sa načítať nastavenia súborov"]},{msgid:"Could not load files views",msgstr:["Nepodarilo sa načítať pohľady súborov"]},{msgid:"Create directory",msgstr:["Vytvoriť adresár"]},{msgid:"Current view selector",msgstr:["Výber aktuálneho zobrazenia"]},{msgid:"Enter your name",msgstr:["Zadajte svoje meno"]},{msgid:"Existing version",msgstr:["Existujúca verzia"]},{msgid:"Failed to set nickname.",msgstr:["Nepodarilo sa nastaviť prezývku."]},{msgid:"Favorites",msgstr:["Obľúbené"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Tu sa zobrazia súbory a priečinky, ktoré označíte ako obľúbené."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Tu sa zobrazia súbory a priečinky, ktoré ste nedávno upravili."]},{msgid:"Filter file list",msgstr:["Filtrovať zoznam súborov"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Názvy priečinkov nesmú končiť na "{extension}".']},{msgid:"Guest identification",msgstr:["Identifikácia hosťa"]},{msgid:"Home",msgstr:["Domov"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ak vyberiete obe verzie, prichádzajúci súbor bude mať k svojmu názvu pridané číslo."]},{msgid:"Invalid folder name.",msgstr:["Neplatný názov priečinka."]},{msgid:"Invalid name.",msgstr:["Neplatné meno."]},{msgid:"Last modified date unknown",msgstr:["Posledná zmena dátumu neznáma"]},{msgid:"Modified",msgstr:["Upravené"]},{msgid:"Move",msgstr:["Prejsť"]},{msgid:"Move to {target}",msgstr:["Prejsť na {umiestnenie}"]},{msgid:"Name",msgstr:["Názov"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Mená môžu mať maximálne 64 znakov."]},{msgid:"Names must not be empty.",msgstr:["Mená nesmú byť prázdne."]},{msgid:'Names must not end with "{extension}".',msgstr:['Mená nesmú končiť "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Mená nesmú začínať bodkou."]},{msgid:"New",msgstr:["Pridať"]},{msgid:"New folder",msgstr:["Pridať priečinok"]},{msgid:"New folder name",msgstr:["Pridať názov priečinka"]},{msgid:"New version",msgstr:["Nová verzia"]},{msgid:"No files in here",msgstr:["Nie sú tu žiadne súbory"]},{msgid:"No files matching your filter were found.",msgstr:["Nenašli sa žiadne súbory zodpovedajúce vášmu filtru."]},{msgid:"No matching files",msgstr:["Žiadne zodpovedajúce súbory"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Zadajte meno s aspoň 2 znakmi."]},{msgid:"Recent",msgstr:["Nedávne"]},{msgid:"Select all checkboxes",msgstr:["Vyberte všetky zaškrtávacie políčka"]},{msgid:"Select all entries",msgstr:["Vybrať všetky položky"]},{msgid:"Select all existing files",msgstr:["Vybrať všetky existujúce súbory"]},{msgid:"Select all new files",msgstr:["Vybrať všetky nové súbory"]},{msgid:"Select entry",msgstr:["Vybrať položku"]},{msgid:"Select the row for {nodename}",msgstr:["Vyberte riadok pre {názov uzla}"]},{msgid:"Size",msgstr:["Veľkosť"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Preskočiť %n súbor","Preskočiť %n súbory","Preskočiť %n súborov","Preskočiť %n súbory"]},{msgid:"Skip this file",msgstr:["Preskočiť tento súbor"]},{msgid:"Submit name",msgstr:["Zadať meno"]},{msgid:"Undo",msgstr:["Späť"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Nahrajte nejaký obsah alebo synchronizujte so svojimi zariadeniami!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Keď je vybraná prichádzajúca složka, všetky konfliktné súbory v nej budú taktiež prepísané."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Keď je vybraná prichádzajúca zložka, obsah sa zapíše do existujúcej zložky a vykoná sa rekurzívne riešenie konfliktov."]},{msgid:"Which files do you want to keep?",msgstr:["Ktoré súbory chcete zachovať?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Momentálne ste identifikovaný ako {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Momentálne nie ste identifikovaný."]},{msgid:"You cannot leave the name empty.",msgstr:["Nemôžete nechať meno prázdne."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Musíte si vybrať aspoň jedno riešenie konfliktu."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Musíte vybrať aspoň jednu verziu každého súboru, aby ste mohli pokračovať."]}]},{language:"sl",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} je neveljavno ime mape."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} ni dovoljeno ime mape"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" ni dovoljen v imenu mape.']},{msgid:"All files",msgstr:["Vse datoteke"]},{msgid:"Choose",msgstr:["Izberi"]},{msgid:"Choose {file}",msgstr:["Izberi {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Izberi %n datoteko","Izberi %n datoteki","Izberi %n datotek","Izberi %n datotek"]},{msgid:"Copy",msgstr:["Kopiraj"]},{msgid:"Copy to {target}",msgstr:["Kopiraj v {target}"]},{msgid:"Could not create the new folder",msgstr:["Nisem mogel ustvariti nove mape"]},{msgid:"Could not load files settings",msgstr:["NIsem mogel naložiti nastavitev datotek"]},{msgid:"Could not load files views",msgstr:["Nisem mogel naložiti pogledov datotek"]},{msgid:"Create directory",msgstr:["Ustvari mapo"]},{msgid:"Current view selector",msgstr:["Izbirnik trenutnega pogleda"]},{msgid:"Favorites",msgstr:["Priljubljene"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Datoteke in mape ki jih označite kot priljubljene se bodo prikazale tukaj."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Daoteke in mape ki ste jih pred kratkim spremenili se bodo prikazale tukaj."]},{msgid:"Filter file list",msgstr:["Filtriraj seznam datotek"]},{msgid:"Folder name cannot be empty.",msgstr:["Ime mape ne more biti prazno"]},{msgid:"Home",msgstr:["Domov"]},{msgid:"Modified",msgstr:["Spremenjeno"]},{msgid:"Move",msgstr:["Premakni"]},{msgid:"Move to {target}",msgstr:["Premakni v {target}"]},{msgid:"Name",msgstr:["Ime"]},{msgid:"New",msgstr:["Nov"]},{msgid:"New folder",msgstr:["Nova mapa"]},{msgid:"New folder name",msgstr:["Novo ime mape"]},{msgid:"No files in here",msgstr:["Tukaj ni datotek"]},{msgid:"No files matching your filter were found.",msgstr:["Ni bilo najdenih ujemajočih datotek glede na vaš filter."]},{msgid:"No matching files",msgstr:["Ni ujemajočih datotek"]},{msgid:"Recent",msgstr:["Nedavne"]},{msgid:"Select all entries",msgstr:["Izberi vse vnose"]},{msgid:"Select entry",msgstr:["Izberi vnos"]},{msgid:"Select the row for {nodename}",msgstr:["Izberi vrstico za {nodename}"]},{msgid:"Size",msgstr:["Velikost"]},{msgid:"Undo",msgstr:["Razveljavi"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Naloži nekaj vsebine ali sinhroniziraj s svojimi napravami!"]}]},{language:"sr",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:["„{char}” није дозвољено унутар имена."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["„{extension}” није дозвољено име."]},{msgid:'"{name}" is an invalid folder name.',msgstr:["„{name}” није исправно име фолдера."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["„{name}” није дозвољено име за фолдер."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["„{segment}” је резервисано име и није дозвољено."]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["„/” није дозвољено унутар имена фолдера."]},{msgid:"All files",msgstr:["Сви фајлови"]},{msgid:"Cancel",msgstr:["Откажи"]},{msgid:"Choose",msgstr:["Изаберите"]},{msgid:"Choose {file}",msgstr:["Изаберите {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Изаберите %n фајл","Изаберите %n фајла","Изаберите %n фајлова"]},{msgid:"Copy",msgstr:["Копирај"]},{msgid:"Copy to {target}",msgstr:["Копирај у {target}"]},{msgid:"Could not create the new folder",msgstr:["Није могао да се креира нови фолдер"]},{msgid:"Could not load files settings",msgstr:["Не могу да се учитају подешавања фајлова"]},{msgid:"Could not load files views",msgstr:["Не могу да се учитају прикази фајлова"]},{msgid:"Create directory",msgstr:["Креирај директоријум"]},{msgid:"Current view selector",msgstr:["Бирач тренутног приказа"]},{msgid:"Enter your name",msgstr:["Унесите своје име"]},{msgid:"Failed to set nickname.",msgstr:["Није успело постављање надимка."]},{msgid:"Favorites",msgstr:["Омиљено"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Овде ће се појавити фајлови и фолдери које сте означили као омиљене."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Овде ће се појавити фајлови и фолдери који се се недавно изменили."]},{msgid:"Filter file list",msgstr:["Фитрирање листе фајлова"]},{msgid:"Folder name cannot be empty.",msgstr:["Име фолдера не може бити празно."]},{msgid:"Guest identification",msgstr:["Идентификација госта"]},{msgid:"Home",msgstr:["Почетак"]},{msgid:"Invalid name.",msgstr:["Неисправно име."]},{msgid:"Modified",msgstr:["Измењено"]},{msgid:"Move",msgstr:["Премести"]},{msgid:"Move to {target}",msgstr:["Премести у {target}"]},{msgid:"Name",msgstr:["Име"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Највећа дужина имена може бити 64 карактера."]},{msgid:"Names must not be empty.",msgstr:["Имена не смеју да буду празна."]},{msgid:'Names must not end with "{extension}".',msgstr:["Имена не смеју да се завршавају на „{extension}”."]},{msgid:"Names must not start with a dot.",msgstr:["Имена не смеју да почињу тачком."]},{msgid:"New",msgstr:["Ново"]},{msgid:"New folder",msgstr:["Нови фолдер"]},{msgid:"New folder name",msgstr:["Име новог фолдера"]},{msgid:"No files in here",msgstr:["Овде нема фајлова"]},{msgid:"No files matching your filter were found.",msgstr:["Није пронађен ниједан фајл који задовољава ваш филтер."]},{msgid:"No matching files",msgstr:["Нема таквих фајлова"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Молимо вас да унесете име од барем два карактера."]},{msgid:"Recent",msgstr:["Скорашње"]},{msgid:"Select all entries",msgstr:["Изаберите све ставке"]},{msgid:"Select entry",msgstr:["Изаберите ставку"]},{msgid:"Select the row for {nodename}",msgstr:["Изаберите ред за {nodename}"]},{msgid:"Size",msgstr:["Величина"]},{msgid:"Submit name",msgstr:["Предај име"]},{msgid:"Undo",msgstr:["Поништи"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Отпремите нешто или синхронизујте са својим уређајима!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Тренутно се идентификујете као {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Тренутно немате идентификацију."]},{msgid:"You cannot leave the name empty.",msgstr:["Име не можете да оставите празно."]}]},{language:"sr@latin",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["„{name}” je neispravan naziv foldera."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["„{name}” je nedozvoljen naziv foldera."]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["„/” se ne može koristiti unutar naziva foldera."]},{msgid:"All files",msgstr:["Svi fajlovi"]},{msgid:"Choose",msgstr:["Izaberite"]},{msgid:"Choose {file}",msgstr:["Izaberite {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Izaberite %n fajl","Izaberite %n fajla","Izaberite %n fajlova"]},{msgid:"Copy",msgstr:["Kopiraj"]},{msgid:"Copy to {target}",msgstr:["Kopiraj u {target}"]},{msgid:"Could not create the new folder",msgstr:["Neuspešno kreiranje novog foldera"]},{msgid:"Could not load files settings",msgstr:["Neuspešno učitavanje podešavanja fajlova"]},{msgid:"Could not load files views",msgstr:["Neuspešno učitavanje prikaza fajlova"]},{msgid:"Create directory",msgstr:["Kreiraj direktorijum"]},{msgid:"Current view selector",msgstr:["Birač trenutnog prikaza"]},{msgid:"Favorites",msgstr:["Omiljeno"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Lista omiljenih fajlova i foldera."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Lista fajlova i foldera sa skorašnjim izmenama."]},{msgid:"Filter file list",msgstr:["Fitriranje liste fajlova"]},{msgid:"Folder name cannot be empty.",msgstr:["Naziv foldera ne može biti prazan."]},{msgid:"Home",msgstr:["Početak"]},{msgid:"Modified",msgstr:["Izmenjeno"]},{msgid:"Move",msgstr:["Premesti"]},{msgid:"Move to {target}",msgstr:["Premesti u {target}"]},{msgid:"Name",msgstr:["Naziv"]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Novi folder"]},{msgid:"New folder name",msgstr:["Naziv novog foldera"]},{msgid:"No files in here",msgstr:["Bez fajlova"]},{msgid:"No files matching your filter were found.",msgstr:["Nema fajlova koji zadovoljavaju uslove filtera."]},{msgid:"No matching files",msgstr:["Nema takvih fajlova"]},{msgid:"Recent",msgstr:["Skorašnje"]},{msgid:"Select all entries",msgstr:["Izaberite sve stavke"]},{msgid:"Select entry",msgstr:["Izaberite stavku"]},{msgid:"Select the row for {nodename}",msgstr:["Izaberite red za {nodename}"]},{msgid:"Size",msgstr:["Veličina"]},{msgid:"Undo",msgstr:["Vrati"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Otpremite sadržaj ili sinhronizujte sa svojim uređajima!"]}]},{language:"sv",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" är inte tillåtet i ett mappnamn.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" är inte tillåtet i ett namn.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" är inte ett tillåtet namn.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" är ett reserverat namn och inte tillåtet mappnamn.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" är ett reserverat namn och inte tillåtet.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n fil är i konflikt","%n filer är i konflikt"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n fil är i konflikt i {dirname}","%n filer är i konflikt i {dirname}"]},{msgid:"All files",msgstr:["Alla filer"]},{msgid:"Cancel",msgstr:["Avbryt"]},{msgid:"Cancel the entire operation",msgstr:["Avbryt hela operationen"]},{msgid:"Choose",msgstr:["Välj"]},{msgid:"Choose {file}",msgstr:["Välj {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Välj %n fil","Välj %n filer"]},{msgid:"Confirm",msgstr:["Bekräfta"]},{msgid:"Continue",msgstr:["Fortsätt"]},{msgid:"Copy",msgstr:["Kopiera"]},{msgid:"Copy to {target}",msgstr:["Kopiera till {target}"]},{msgid:"Could not create the new folder",msgstr:["Kunde inte skapa den nya mappen"]},{msgid:"Could not load files settings",msgstr:["Kunde inte ladda filinställningar"]},{msgid:"Could not load files views",msgstr:["Kunde inte ladda filvyer"]},{msgid:"Create directory",msgstr:["Skapa katalog"]},{msgid:"Current view selector",msgstr:["Aktuell vyväljare"]},{msgid:"Enter your name",msgstr:["Ange ditt namn"]},{msgid:"Existing version",msgstr:["Nuvarande version"]},{msgid:"Failed to set nickname.",msgstr:["Kunde inte ställa in smeknamn."]},{msgid:"Favorites",msgstr:["Favoriter"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Filer och mappar som du markerar som favorit kommer att visas här."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Filer och mappar som du nyligen ändrat kommer att visas här."]},{msgid:"Filter file list",msgstr:["Filtrera fillistan"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Mappnamn får inte sluta med "{extension}".']},{msgid:"Guest identification",msgstr:["Gästidentifiering"]},{msgid:"Home",msgstr:["Hem"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Om du väljer båda versionerna kommer den inkommande filen att få ett nummer tillagt i sitt namn."]},{msgid:"Invalid folder name.",msgstr:["Ogiltigt mappnamn."]},{msgid:"Invalid name.",msgstr:["Ogiltigt namn."]},{msgid:"Last modified date unknown",msgstr:["Senaste ändringsdatum okänt"]},{msgid:"Modified",msgstr:["Ändrad"]},{msgid:"Move",msgstr:["Flytta"]},{msgid:"Move to {target}",msgstr:["Flytta till {target}"]},{msgid:"Name",msgstr:["Namn"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namnen kan vara högst 64 tecken långa."]},{msgid:"Names must not be empty.",msgstr:["Namn får inte vara tomt."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namn får inte sluta med "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Namn får inte börja med en punkt."]},{msgid:"New",msgstr:["Ny"]},{msgid:"New folder",msgstr:["Ny mapp"]},{msgid:"New folder name",msgstr:["Nytt mappnamn"]},{msgid:"New version",msgstr:["Ny version"]},{msgid:"No files in here",msgstr:["Inga filer här"]},{msgid:"No files matching your filter were found.",msgstr:["Inga filer som matchar ditt filter hittades."]},{msgid:"No matching files",msgstr:["Inga matchande filer"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Ange ett namn med minst 2 tecken."]},{msgid:"Recent",msgstr:["Nyligen"]},{msgid:"Select all checkboxes",msgstr:["Markera alla kryssrutor"]},{msgid:"Select all entries",msgstr:["Välj alla poster"]},{msgid:"Select all existing files",msgstr:["Välj alla befintliga filer"]},{msgid:"Select all new files",msgstr:["Välj alla nya filer"]},{msgid:"Select entry",msgstr:["Välj post"]},{msgid:"Select the row for {nodename}",msgstr:["Välj raden för {nodename}"]},{msgid:"Size",msgstr:["Storlek"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Hoppa över %n fil","Hoppa över %n filer"]},{msgid:"Skip this file",msgstr:["Hoppa över den här filen"]},{msgid:"Submit name",msgstr:["Skicka namn"]},{msgid:"Undo",msgstr:["Ångra"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Ladda upp lite innehåll eller synkronisera med dina enheter!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["När en inkommande mapp väljs kommer eventuella konflikterande filer i den också att skrivas över."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs."]},{msgid:"Which files do you want to keep?",msgstr:["Vilka filer vill du behålla?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du är för närvarande identifierad som {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Du är för närvarande inte identifierad."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kan inte lämna namnet tomt."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Du måste välja minst en konfliktlösning"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du måste välja minst en version av varje fil för att fortsätta."]}]},{language:"tr",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" karakteri bir klasör adında kullanılamaz.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['Bir ad içinde "{char}" karakteri kullanılamaz.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" adına izin verilmiyor.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" adı sistem için ayrılmış olduğundan klasör adlarında kullanılamaz.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" adı sistem için ayrılmış olduğundan kullanılamaz.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n dosya çakışıyor","%n dosya çakışıyor"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname} içindeki %n dosya çakışıyor","{dirname} içindeki %n dosya çakışıyor"]},{msgid:"All files",msgstr:["Tüm dosyalar"]},{msgid:"Cancel",msgstr:["İptal"]},{msgid:"Cancel the entire operation",msgstr:["Tüm işlemi iptal et"]},{msgid:"Choose",msgstr:["Seçin"]},{msgid:"Choose {file}",msgstr:["{file} seçin"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n dosya seçin","%n dosya seçin"]},{msgid:"Confirm",msgstr:["Onayla"]},{msgid:"Continue",msgstr:["İlerle"]},{msgid:"Copy",msgstr:["Kopyala"]},{msgid:"Copy to {target}",msgstr:["{target} üzerine kopyala"]},{msgid:"Could not create the new folder",msgstr:["Yeni klasör oluşturulamadı"]},{msgid:"Could not load files settings",msgstr:["Dosyalar uygulamasının ayarları yüklenemedi"]},{msgid:"Could not load files views",msgstr:["Dosyalar uygulamasının görünümleri yüklenemedi"]},{msgid:"Create directory",msgstr:["Klasör oluştur"]},{msgid:"Current view selector",msgstr:["Geçerli görünüm seçici"]},{msgid:"Enter your name",msgstr:["Adınızı yazın"]},{msgid:"Existing version",msgstr:["Var olan sürüm"]},{msgid:"Failed to set nickname.",msgstr:["Takma ad ayarlanamadı."]},{msgid:"Favorites",msgstr:["Sık kullanılanlar"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Sık kullanılan olarak seçtiğiniz dosyalar burada görüntülenir."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Son zamanlarda değiştirdiğiniz dosya ve klasörler burada görüntülenir."]},{msgid:"Filter file list",msgstr:["Dosya listesini süz"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Klasör adları "{extension}" ile bitemez.']},{msgid:"Guest identification",msgstr:["Konuk kimliği"]},{msgid:"Home",msgstr:["Giriş"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir."]},{msgid:"Invalid folder name.",msgstr:["Klasör adı geçersiz."]},{msgid:"Invalid name.",msgstr:["Ad geçersiz."]},{msgid:"Last modified date unknown",msgstr:["Son değiştirilme tarihi bilinmiyor."]},{msgid:"Modified",msgstr:["Değiştirilme"]},{msgid:"Move",msgstr:["Taşı"]},{msgid:"Move to {target}",msgstr:["{target} üzerine taşı"]},{msgid:"Name",msgstr:["Ad"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Adlar en fazla 64 karakter uzunluğunda olabilir."]},{msgid:"Names must not be empty.",msgstr:["Ad boş olamaz."]},{msgid:'Names must not end with "{extension}".',msgstr:['Ad "{extension}" ile bitemez.']},{msgid:"Names must not start with a dot.",msgstr:["Ad nokta karakteri ile başlayamaz."]},{msgid:"New",msgstr:["Yeni"]},{msgid:"New folder",msgstr:["Yeni klasör"]},{msgid:"New folder name",msgstr:["Yeni klasör adı"]},{msgid:"New version",msgstr:["Yeni sürüm"]},{msgid:"No files in here",msgstr:["Burada herhangi bir dosya yok"]},{msgid:"No files matching your filter were found.",msgstr:["Süzgece uyan bir dosya bulunamadı."]},{msgid:"No matching files",msgstr:["Eşleşen bir dosya yok"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Ad en az 2 karakter uzunluğunda olmalıdır."]},{msgid:"Recent",msgstr:["Son kullanılanlar"]},{msgid:"Select all checkboxes",msgstr:["Tüm kutuları işaretle"]},{msgid:"Select all entries",msgstr:["Tüm kayıtları seç"]},{msgid:"Select all existing files",msgstr:["Tüm var olan dosyaları seç"]},{msgid:"Select all new files",msgstr:["Tüm yeni dosyaları seç"]},{msgid:"Select entry",msgstr:["Kaydı seç"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename} satırını seçin"]},{msgid:"Size",msgstr:["Boyut"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n dosyayı atla","%n dosyayı atla"]},{msgid:"Skip this file",msgstr:["Bu dosyayı atla"]},{msgid:"Submit name",msgstr:["Adı gönder"]},{msgid:"Undo",msgstr:["Geri al"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Bazı içerikler yükleyin ya da aygıtlarınızla eşitleyin!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bir gelen klasör seçildiğinde, içerik var olan klasöre yazılır ve alt klasörlerle bir çakışma çözümü uygulanır."]},{msgid:"Which files do you want to keep?",msgstr:["Hangi dosyaları tutmak istiyorsunuz?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["{nickname} olarak tanınıyorsunuz."]},{msgid:"You are currently not identified.",msgstr:["Henüz kendinizi tanıtmadınız."]},{msgid:"You cannot leave the name empty.",msgstr:["Ad boş bırakılamaz."]},{msgid:"You need to choose at least one conflict solution",msgstr:["En az bir çakışma çözümü seçmelisiniz"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["İlerlemek için her dosaynın en az bir sürümünü seçmelisiniz."]}]},{language:"uk",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["{char} не дозволено всередині назви каталогу."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" не дозволено всередині імени.']},{msgid:'"{extension}" is not an allowed name.',msgstr:[`"{extension}" недозволене ім'я.`]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["{segment} є зарезервованим ім'ям і не дозволено для назви каталогу."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:[`"{segment}" зарезервоване ім'я і не дозволено для використання.`]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n конфлікт файлів","%n конфлікти файлів","%n конфліктів файлів","%n конфліктів файлів"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n конфлікт файлів у каталозі {dirname}","%n конфлікти файлів у каталозі {dirname}","%n конфліктів файлів у каталозі {dirname}","%n конфліктів файлів у каталозі {dirname}"]},{msgid:"All files",msgstr:["Всі файли"]},{msgid:"Cancel",msgstr:["Скасувати"]},{msgid:"Cancel the entire operation",msgstr:["Скасувати всю операцію"]},{msgid:"Choose",msgstr:["Вибрати"]},{msgid:"Choose {file}",msgstr:["Вибрати {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Вибрати %n файл","Вибрати %n файли","Вибрати %n файлів","Вибрати %n файлів"]},{msgid:"Confirm",msgstr:["Підтвердити"]},{msgid:"Continue",msgstr:["Продовжити"]},{msgid:"Copy",msgstr:["Копіювати"]},{msgid:"Copy to {target}",msgstr:["Копіювати до {target}"]},{msgid:"Could not create the new folder",msgstr:["Не вдалося створити новий каталог"]},{msgid:"Could not load files settings",msgstr:["Не вдалося завантажити налаштування файлів"]},{msgid:"Could not load files views",msgstr:["Не вдалося завантажити подання файлів"]},{msgid:"Create directory",msgstr:["Створити каталог"]},{msgid:"Current view selector",msgstr:["Вибір подання"]},{msgid:"Enter your name",msgstr:["Зазначте ваше ім'я"]},{msgid:"Existing version",msgstr:["Наявна версія"]},{msgid:"Failed to set nickname.",msgstr:["Не вдалося встановити псевдо."]},{msgid:"Favorites",msgstr:["Із зірочкою"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Тут показуватимуться файли та каталоги, які ви позначите зірочкою."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Тут показуватимуться файли та каталоги, які було нещодавно змінено."]},{msgid:"Filter file list",msgstr:["Фільтрувати список файлів"]},{msgid:'Folder names must not end with "{extension}".',msgstr:[`Ім'я каталогу не може закінчуватися на "{extension}".`]},{msgid:"Guest identification",msgstr:["Ім'я для гостя"]},{msgid:"Home",msgstr:["Домівка"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Якщо вибрати обидві версії, до назви вхідного файлу буде додано цифру. "]},{msgid:"Invalid folder name.",msgstr:["Недійсне ім'я каталогу."]},{msgid:"Invalid name.",msgstr:["Недійсне ім'я."]},{msgid:"Last modified date unknown",msgstr:["Дата останньої зміни невідома"]},{msgid:"Modified",msgstr:["Змінено"]},{msgid:"Move",msgstr:["Перемістити"]},{msgid:"Move to {target}",msgstr:["Перемістити до {target}"]},{msgid:"Name",msgstr:["Ім'я"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Імена мають мати довжину не більше 64 символів."]},{msgid:"Names must not be empty.",msgstr:["Ім'я не може бути порожнє."]},{msgid:'Names must not end with "{extension}".',msgstr:[`Ім'я не може закінчуватися на "{extension}".`]},{msgid:"Names must not start with a dot.",msgstr:["Ім'я не може починатися з крапки."]},{msgid:"New",msgstr:["Новий"]},{msgid:"New folder",msgstr:["Новий каталог"]},{msgid:"New folder name",msgstr:["Ім'я нового каталогу"]},{msgid:"New version",msgstr:["Нова версія"]},{msgid:"No files in here",msgstr:["Тут відсутні файли"]},{msgid:"No files matching your filter were found.",msgstr:["Відсутні збіги за фільтром."]},{msgid:"No matching files",msgstr:["Відсутні збіги файлів."]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Зазначте ім'я довжиною не менше 2 символів"]},{msgid:"Recent",msgstr:["Останні"]},{msgid:"Select all checkboxes",msgstr:["Вибрати всі прапорці"]},{msgid:"Select all entries",msgstr:["Вибрати всі записи"]},{msgid:"Select all existing files",msgstr:["Вибрати всі наявні файли"]},{msgid:"Select all new files",msgstr:["Вибрати всі нові файли"]},{msgid:"Select entry",msgstr:["Вибрати запис"]},{msgid:"Select the row for {nodename}",msgstr:["Вибрати рядок для {nodename}"]},{msgid:"Size",msgstr:["Розмір"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Пропустити %n файл","Пропустити %n файли","Пропустити %n файлів","Пропустити %n файлів"]},{msgid:"Skip this file",msgstr:["Пропустити цей файл"]},{msgid:"Submit name",msgstr:["Встановити ім'я"]},{msgid:"Undo",msgstr:["Повернути"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Завантажте вміст або синхронізуйте з вашим пристроєм!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Коли вибрано вхідний каталог, будь-які файли з конфліктами буде також перезаписано."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Коли вибрано вхідний каталог, вміст буде записано до існуючого каталогу, а також виконано вирішення конфліктів всередині каталогу."]},{msgid:"Which files do you want to keep?",msgstr:["Які файли залишити?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Вас визначено як {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Вас не ідентифіковано."]},{msgid:"You cannot leave the name empty.",msgstr:["Потрібно зазначити ім'я."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Треб вибрати щонайменше одне рішення конфлікту"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Треба вибрати щонайменше одну версію кожного файлу, щоби продовжити."]}]},{language:"uz",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['Papka nomi ichida "{char}" ga ruxsat berilmaydi.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['Nom ichida "{char}" ga ruxsat berilmagan.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ruxsat etilgan nom emas.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:[`"{segment}" ajratilgan nom bo'lib, papka nomlari uchun ruxsat berilmagan.`]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" - zaxiralangan nom va ruxsat berilmaydi.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n fayl ziddiyatli"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname} da %n fayl ziddiyati"]},{msgid:"All files",msgstr:["Barcha fayllar"]},{msgid:"Cancel",msgstr:["Bekor qilish"]},{msgid:"Cancel the entire operation",msgstr:["Butun operatsiyani bekor qiling"]},{msgid:"Choose",msgstr:["Tanlang"]},{msgid:"Choose {file}",msgstr:["Tanlang {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Tanlang %n faylni"]},{msgid:"Confirm",msgstr:["Tasdiqlang"]},{msgid:"Continue",msgstr:["Davom eting"]},{msgid:"Copy",msgstr:["Nusxa"]},{msgid:"Copy to {target}",msgstr:[" {target} ga nusxa"]},{msgid:"Could not create the new folder",msgstr:["Yangi jild yaratib bo‘lmadi"]},{msgid:"Could not load files settings",msgstr:["Fayl sozlamalari yuklanmadi"]},{msgid:"Could not load files views",msgstr:["Fayllarni koʻrishni yuklab boʻlmadi"]},{msgid:"Create directory",msgstr:["Katalog yaratish"]},{msgid:"Current view selector",msgstr:["Joriy ko'rinish selektori"]},{msgid:"Enter your name",msgstr:["Ismingizni kiriting"]},{msgid:"Existing version",msgstr:["Mavjud versiya"]},{msgid:"Failed to set nickname.",msgstr:["Taxallusni o‘rnatib bo‘lmadi."]},{msgid:"Favorites",msgstr:["Tanlanganlar"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Tanlangan deb belgilagan fayl va papkalar shu yerda koʻrinadi."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Siz yaqinda oʻzgartirgan fayl va papkalar shu yerda koʻrinadi."]},{msgid:"Filter file list",msgstr:["Fayl ro'yxatini filtrlash"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Papka nomlari "{extension}" bilan tugamasligi kerak.']},{msgid:"Guest identification",msgstr:["Foydalanuvchini identifikatsiyalash"]},{msgid:"Home",msgstr:["Uy"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi."]},{msgid:"Invalid folder name.",msgstr:["Jild nomi noto'g'ri."]},{msgid:"Invalid name.",msgstr:["Nomi noto‘g‘ri."]},{msgid:"Last modified date unknown",msgstr:["Oxirgi tahrirlangan sana noma'lum"]},{msgid:"Modified",msgstr:["Modifikatsiyalangan"]},{msgid:"Move",msgstr:["Ko'chirish"]},{msgid:"Move to {target}",msgstr:[" {target} ga ko'chirish"]},{msgid:"Name",msgstr:["Nomi"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Ismlar ko'pi bilan 64 ta belgidan iborat bo'lishi mumkin."]},{msgid:"Names must not be empty.",msgstr:["Ismlar bo'sh bo'lmasligi kerak."]},{msgid:'Names must not end with "{extension}".',msgstr:['Ismlar "{extension}" bilan tugamasligi kerak.']},{msgid:"Names must not start with a dot.",msgstr:["Ismlar nuqta bilan boshlanmasligi kerak."]},{msgid:"New",msgstr:["Yangi"]},{msgid:"New folder",msgstr:["Yangi jild"]},{msgid:"New folder name",msgstr:["Yangi jild nomi"]},{msgid:"New version",msgstr:["Yangi versiya"]},{msgid:"No files in here",msgstr:["Fayl mavjud emas"]},{msgid:"No files matching your filter were found.",msgstr:["Filtringizga mos keladigan fayl topilmadi."]},{msgid:"No matching files",msgstr:["Mos fayllar yo'q"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Kamida 2 ta belgidan iborat nom kiriting."]},{msgid:"Recent",msgstr:["Yaqinda"]},{msgid:"Select all checkboxes",msgstr:["Barcha katakchalarni belgilang"]},{msgid:"Select all entries",msgstr:["Barcha yozuvlarni tanlang"]},{msgid:"Select all existing files",msgstr:["Barcha mavjud fayllarni tanlang"]},{msgid:"Select all new files",msgstr:["Barcha yangi fayllarni tanlang"]},{msgid:"Select entry",msgstr:["Yozuvni tanlang"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename} uchun qatorni tanlang"]},{msgid:"Size",msgstr:["O`lcham"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n faylni oʻtkazib yuborish"]},{msgid:"Skip this file",msgstr:["Ushbu faylni o'tkazib yuboring"]},{msgid:"Submit name",msgstr:["Ismni tasdiqlang"]},{msgid:"Undo",msgstr:["Bekor qilish"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Qurilmangizga ba'zi kontentni yuklang yoki sinxronlang!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Kiruvchi papka tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Kiruvchi papka tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi."]},{msgid:"Which files do you want to keep?",msgstr:["Qaysi fayllarni saqlamoqchisiz?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Siz hozirda {nickname} sifatida aniqlangansiz."]},{msgid:"You are currently not identified.",msgstr:["Siz hozirda identifikatsiyadan o'tmagansiz"]},{msgid:"You cannot leave the name empty.",msgstr:["Ism katagini bo'sh qoldirib bo'lmaydi."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Siz kamida bitta mojaro yechimini tanlashingiz kerak"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak."]}]},{language:"vi",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" là tên thư mục không hợp lệ.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"1{name}"không phải là tên thư mục được cho phép']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/"không được phép đặt trong tên thư mục.']},{msgid:"All files",msgstr:["Tất cả tệp"]},{msgid:"Choose",msgstr:["Chọn"]},{msgid:"Choose {file}",msgstr:["Chọn {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Chọn %n tệp"]},{msgid:"Copy",msgstr:["Sao chép"]},{msgid:"Copy to {target}",msgstr:["Sao chép đến {target}"]},{msgid:"Could not create the new folder",msgstr:["Không thể tạo thư mục mới"]},{msgid:"Could not load files settings",msgstr:["Không thể tải tập tin cài đặt"]},{msgid:"Could not load files views",msgstr:["Không thể tải xuống tệp xem"]},{msgid:"Create directory",msgstr:["Tạo thư mục"]},{msgid:"Current view selector",msgstr:["Hiện tại chế độ xem của bộ chọn"]},{msgid:"Favorites",msgstr:["Yêu cầu thích"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Các tập tin và thư mục bạn đánh dấu yêu thích sẽ hiển thị ở đây."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Các tập tin và thư mục bạn sửa đổi gần đây sẽ hiển thị ở đây."]},{msgid:"Filter file list",msgstr:["Filter list file"]},{msgid:"Folder name cannot be empty.",msgstr:["Thư mục tên không được để trống."]},{msgid:"Home",msgstr:["Trang chủ"]},{msgid:"Modified",msgstr:["Đã sửa đổi"]},{msgid:"Move",msgstr:["Di chuyển"]},{msgid:"Move to {target}",msgstr:["Di chuyển đến{target}"]},{msgid:"Name",msgstr:["Tên"]},{msgid:"New",msgstr:["Mới"]},{msgid:"New folder",msgstr:["New thư mục"]},{msgid:"New folder name",msgstr:["New thư mục tên"]},{msgid:"No files in here",msgstr:["No file at here"]},{msgid:"No files matching your filter were found.",msgstr:["Không tìm thấy tệp nào phù hợp với bộ lọc của bạn."]},{msgid:"No matching files",msgstr:["No file phù hợp"]},{msgid:"Recent",msgstr:["Gần đây"]},{msgid:"Select all entries",msgstr:["Choose all items"]},{msgid:"Select entry",msgstr:["Chọn mục nhập"]},{msgid:"Select the row for {nodename}",msgstr:["Choose hang cho{nodename}"]},{msgid:"Size",msgstr:["Kích cỡ"]},{msgid:"Undo",msgstr:["Hoàn tác"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Tải lên một số nội dung hoặc đồng bộ hóa với thiết bị của bạn!"]}]},{language:"zh_CN",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["“{name}” 是无效的文件夹名称。"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["“{name}” 不是允许的文件夹名称"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["文件夹名称中不允许包含 “/”。"]},{msgid:"All files",msgstr:["所有文件"]},{msgid:"Choose",msgstr:["选择"]},{msgid:"Choose {file}",msgstr:["选择 {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["选择 %n 个文件"]},{msgid:"Copy",msgstr:["复制"]},{msgid:"Copy to {target}",msgstr:["复制到 {target}"]},{msgid:"Could not create the new folder",msgstr:["无法创建新文件夹"]},{msgid:"Could not load files settings",msgstr:["无法加载文件设置"]},{msgid:"Could not load files views",msgstr:["无法加载文件视图"]},{msgid:"Create directory",msgstr:["创建目录"]},{msgid:"Current view selector",msgstr:["当前视图选择器"]},{msgid:"Favorites",msgstr:["最爱"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["您标记为最爱的文件与文件夹会显示在这里"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["您最近修改的文件与文件夹会显示在这里"]},{msgid:"Filter file list",msgstr:["过滤文件列表"]},{msgid:"Folder name cannot be empty.",msgstr:["文件夹名称不能为空。"]},{msgid:"Home",msgstr:["主目录"]},{msgid:"Modified",msgstr:["已修改"]},{msgid:"Move",msgstr:["移动"]},{msgid:"Move to {target}",msgstr:["移动至 {target}"]},{msgid:"Name",msgstr:["名称"]},{msgid:"New",msgstr:["新建"]},{msgid:"New folder",msgstr:["新文件夹"]},{msgid:"New folder name",msgstr:["新文件夹名称"]},{msgid:"No files in here",msgstr:["此处无文件"]},{msgid:"No files matching your filter were found.",msgstr:["找不到符合您过滤条件的文件"]},{msgid:"No matching files",msgstr:["无符合的文件"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all entries",msgstr:["选择所有条目"]},{msgid:"Select entry",msgstr:["选择条目"]},{msgid:"Select the row for {nodename}",msgstr:["选择 {nodename} 的列"]},{msgid:"Size",msgstr:["大小"]},{msgid:"Undo",msgstr:[" 撤消"]},{msgid:"Upload some content or sync with your devices!",msgstr:["上传一些项目或与您的设备同步!"]}]},{language:"zh_HK",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["資料夾名稱中不允許使用「{char}」。"]},{msgid:'"{char}" is not allowed inside a name.',msgstr:['名稱中不能使用 "{char}"。']},{msgid:'"{extension}" is not an allowed name.',msgstr:["「{extension}」並非允許的名稱。"]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["「{segment}」為保留名稱,不能用作資料夾名稱。"]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["「{segment}」是一個保留名稱,不能使用。"]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n 檔案衝突"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname} 中有 %n 個檔案衝突"]},{msgid:"All files",msgstr:["所有檔案"]},{msgid:"Cancel",msgstr:["取消"]},{msgid:"Cancel the entire operation",msgstr:["取消整個操作"]},{msgid:"Choose",msgstr:["選擇"]},{msgid:"Choose {file}",msgstr:["選擇 {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["選擇 %n 個檔案"]},{msgid:"Confirm",msgstr:["確認"]},{msgid:"Continue",msgstr:["繼續"]},{msgid:"Copy",msgstr:["複製"]},{msgid:"Copy to {target}",msgstr:["複製到 {target}"]},{msgid:"Could not create the new folder",msgstr:["無法建立新資料夾"]},{msgid:"Could not load files settings",msgstr:["無法載入檔案設定"]},{msgid:"Could not load files views",msgstr:["無法載入檔案視圖"]},{msgid:"Create directory",msgstr:["建立目錄"]},{msgid:"Current view selector",msgstr:["目前視圖選擇器"]},{msgid:"Enter your name",msgstr:["輸入您的名字"]},{msgid:"Existing version",msgstr:["現有的版本"]},{msgid:"Failed to set nickname.",msgstr:["無法設置暱稱。"]},{msgid:"Favorites",msgstr:["最愛"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["您標記為最愛的檔案與資料夾將會顯示在此處。"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["您最近修改的檔案與資料夾將會顯示在此處。"]},{msgid:"Filter file list",msgstr:["過濾檔案清單"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["資料夾名稱不得以「{extension}」結尾。"]},{msgid:"Guest identification",msgstr:["訪客身份識別"]},{msgid:"Home",msgstr:["首頁"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["如果您選擇兩個版本,傳入的檔案名稱將會附加一個數字。"]},{msgid:"Invalid folder name.",msgstr:["無效的資料夾名稱。"]},{msgid:"Invalid name.",msgstr:["無效的名字。"]},{msgid:"Last modified date unknown",msgstr:["最後的修改日期不詳"]},{msgid:"Modified",msgstr:["已修改"]},{msgid:"Move",msgstr:["移動"]},{msgid:"Move to {target}",msgstr:["移動至 {target}"]},{msgid:"Name",msgstr:["名稱"]},{msgid:"Names may be at most 64 characters long.",msgstr:["名稱長度最多為 64 個字元。"]},{msgid:"Names must not be empty.",msgstr:["名稱不能為空。"]},{msgid:'Names must not end with "{extension}".',msgstr:["名稱不得以「{extension}」結尾。"]},{msgid:"Names must not start with a dot.",msgstr:["名稱不得以點開頭。"]},{msgid:"New",msgstr:["新"]},{msgid:"New folder",msgstr:["新資料夾"]},{msgid:"New folder name",msgstr:["新資料夾名稱"]},{msgid:"New version",msgstr:["新版本"]},{msgid:"No files in here",msgstr:["此處無檔案"]},{msgid:"No files matching your filter were found.",msgstr:["找不到符合您過濾條件的檔案。"]},{msgid:"No matching files",msgstr:["沒有匹配的檔案"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["請輸入至少 2 個字符的名稱。"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all checkboxes",msgstr:["選擇所有復選框"]},{msgid:"Select all entries",msgstr:["選擇所有項目"]},{msgid:"Select all existing files",msgstr:["選擇所有現有的檔案"]},{msgid:"Select all new files",msgstr:["選擇所有新檔案"]},{msgid:"Select entry",msgstr:["選擇項目"]},{msgid:"Select the row for {nodename}",msgstr:["選擇 {nodename} 的列"]},{msgid:"Size",msgstr:["大小"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["跳過 %n 個檔案"]},{msgid:"Skip this file",msgstr:["跳過此檔案"]},{msgid:"Submit name",msgstr:["遞交名字"]},{msgid:"Undo",msgstr:["還原"]},{msgid:"Upload some content or sync with your devices!",msgstr:["上傳一些內容或與您的裝置同步!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["選取傳入資料夾時,其中任何衝突的檔案也將被覆蓋。"]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["當選取傳入資料夾時,內容將寫入現有資料夾,並執行遞歸衝突解決。"]},{msgid:"Which files do you want to keep?",msgstr:["你想保留哪些檔案?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["您目前被識別為 {nickname}。"]},{msgid:"You are currently not identified.",msgstr:["您目前尚未被識別。"]},{msgid:"You cannot leave the name empty.",msgstr:["名稱不能留空。"]},{msgid:"You need to choose at least one conflict solution",msgstr:["你需要選擇至少一種衝突解決方案。"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["您必須選擇每個文件的至少一個版本才能繼續。"]}]},{language:"zh_TW",translations:[{msgid:'"{name}" is an invalid file name.',msgstr:["「{name}」是無效的檔案名稱。"]},{msgid:'"{name}" is not an allowed filetype',msgstr:["「{name}」並非允許的檔案類型"]},{msgid:'"/" is not allowed inside a file name.',msgstr:["檔案名稱中不允許使用「/」。"]},{msgid:"All files",msgstr:["所有檔案"]},{msgid:"Choose",msgstr:["選擇"]},{msgid:"Choose {file}",msgstr:["選擇 {file}"]},{msgid:"Copy",msgstr:["複製"]},{msgid:"Copy to {target}",msgstr:["複製到 {target}"]},{msgid:"Could not create the new folder",msgstr:["無法建立新資料夾"]},{msgid:"Create directory",msgstr:["建立目錄"]},{msgid:"Current view selector",msgstr:["目前檢視選取器"]},{msgid:"Favorites",msgstr:["最愛"]},{msgid:"File name cannot be empty.",msgstr:["檔案名稱不能為空。"]},{msgid:"Filepicker sections",msgstr:["檔案挑選器選取"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["您標記為最愛的檔案與資料夾將會顯示在此處。"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["您最近修改的檔案與資料夾將會顯示在此處。"]},{msgid:"Filter file list",msgstr:["過濾檔案清單"]},{msgid:"Home",msgstr:["家"]},{msgid:"Mime type {mime}",msgstr:["Mime type {mime}"]},{msgid:"Modified",msgstr:["已修改"]},{msgid:"Move",msgstr:["移動"]},{msgid:"Move to {target}",msgstr:["移動至 {target}"]},{msgid:"Name",msgstr:["名稱"]},{msgid:"New",msgstr:["新"]},{msgid:"New folder",msgstr:["新資料夾"]},{msgid:"New folder name",msgstr:["新資料夾名稱"]},{msgid:"No files in here",msgstr:["此處無檔案"]},{msgid:"No files matching your filter were found.",msgstr:["找不到符合您過濾條件的檔案。"]},{msgid:"No matching files",msgstr:["無符合的檔案"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all entries",msgstr:["選取所有條目"]},{msgid:"Select entry",msgstr:["選取條目"]},{msgid:"Select the row for {nodename}",msgstr:["選取 {nodename} 的列"]},{msgid:"Size",msgstr:["大小"]},{msgid:"Undo",msgstr:["復原"]},{msgid:"unknown",msgstr:["未知"]},{msgid:"Upload some content or sync with your devices!",msgstr:["上傳一些內容或與您的裝置同步"]}]}]){const{language:e,translations:s}=i,t={headers:{},translations:{"":Object.fromEntries(s.map(n=>[n.msgid,n]))}};N.addTranslation(e,t)}const h=N.build(),$=h.ngettext.bind(h),l=h.gettext.bind(h),b=W().setApp("@nextcloud/dialogs").detectLogLevel().build();class X extends Error{}class uu{title;multiSelect;mimeTypeFilter;directoriesAllowed;noMenu;buttons;path;filter;canPick;container;disabledNavigation;constructor(e,s,t,n,r,u,a,g,o,m,d=!1){this.title=e,this.multiSelect=s,this.mimeTypeFilter=t,this.directoriesAllowed=n,this.noMenu=r,this.path=a,this.filter=g,this.canPick=o,this.buttons=u,this.container=m,this.disabledNavigation=d}async pickNodes(){const{default:e}=await U(async()=>{const{default:t}=await import("./FilePicker-DWYoSaVg-Fz2ShbTW.chunk.mjs");return{default:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),import.meta.url),s=await y(e,{allowPickDirectory:this.directoriesAllowed,noMenu:this.noMenu,buttons:this.buttons,name:this.title,path:this.path,mimetypeFilter:this.mimeTypeFilter,multiselect:this.multiSelect,filterFn:this.filter,canPickFn:this.canPick,disabledNavigation:this.disabledNavigation},{container:this.container});if(!Array.isArray(s)||s.length===0)throw new X("FilePicker: No nodes selected");return s}async pick(){const e=await this.pickNodes();return this.multiSelect?e.map(s=>s.path):e[0]?.path??"/"}}class eu{title;multiSelect=!1;mimeTypeFilter=[];directoriesAllowed=!1;noMenu=!1;path;filter;canPick;buttons=[];container;disabledNavigation=!1;constructor(e){this.title=e}setContainer(e){return this.container=e,this}setMultiSelect(e){return this.multiSelect=e,this}addMimeTypeFilter(e){return this.mimeTypeFilter.push(e),this}setMimeTypeFilter(e){return this.mimeTypeFilter=e,this}addButton(e){return typeof this.buttons=="function"&&(b.warn("FilePicker buttons were set to factory, now overwritten with button object."),this.buttons=[]),this.buttons.push(e),this}setButtonFactory(e){return this.buttons=e,this}setType(e){return this.buttons=(s,t)=>{const n=[],r=s[0]?.displayname||q(t);if(e===1){let u=l("Choose");s.length===1?u=l("Choose {file}",{file:r}):this.multiSelect&&(u=$("Choose %n file","Choose %n files",s.length)),n.push({callback:()=>{},label:u,variant:"primary"})}return(e===4||e===3)&&n.push({callback:()=>{},label:r?l("Copy to {target}",{target:r}):l("Copy"),icon:Q,variant:e===3?"primary":"secondary"}),(e===4||e===2)&&n.push({callback:()=>{},label:r?l("Move to {target}",{target:r}):l("Move"),icon:J,variant:"primary"}),n},this}allowDirectories(e=!0){return this.directoriesAllowed=e,this}setNoMenu(e=!0){return this.noMenu=e,this}startAt(e){return this.path=e,this}setFilter(e){return this.filter=e,this}setCanPick(e){return this.canPick=e,this}disableNavigation(){return this.disabledNavigation=!0,this}build(){return new uu(this.title,this.multiSelect,this.mimeTypeFilter,this.directoriesAllowed,this.noMenu,this.buttons,this.path,this.filter,this.canPick,this.container,this.disabledNavigation)}}function Bu(i){return new eu(i)}const su=` - - - -`,iu="off",tu="polite",nu="assertive";var F=(i=>(i[i.OFF=iu]="OFF",i[i.POLITE=tu]="POLITE",i[i.ASSERTIVE=nu]="ASSERTIVE",i))(F||{});const ru=1e4,au=7e3,mu=-1;function f(i,e){if(e={timeout:au,isHTML:!1,type:void 0,selector:void 0,onRemove:()=>{},onClick:void 0,close:!0,...e},typeof i=="string"&&!e.isHTML){const u=document.createElement("div");u.innerHTML=i,i=u.innerText}let s=e.type??"";typeof e.onClick=="function"&&(s+=" toast-with-click ");const t=i instanceof Node;let n=F.POLITE;e.ariaLive?n=e.ariaLive:(e.type==="toast-error"||e.type==="toast-undo")&&(n=F.ASSERTIVE);const r=Z({[t?"node":"text"]:i,duration:e.timeout,callback:e.onRemove,onClick:e.onClick,close:e.close,gravity:"top",selector:e.selector,position:"right",backgroundColor:"",className:"dialogs "+s,escapeMarkup:!e.isHTML,ariaLive:n});return r.showToast(),r}function xu(i,e){return f(i,{...e,type:"toast-error"})}function vu(i,e){return f(i,{...e,type:"toast-warning"})}function Fu(i,e){return f(i,{...e,type:"toast-info"})}function pu(i,e){return f(i,{...e,type:"toast-success"})}function Du(i,e){const s=document.createElement("span");s.innerHTML=su,s.classList.add("toast-loader");const t=document.createElement("span");return t.classList.add("toast-loader-container"),t.innerText=i,t.appendChild(s),f(t,{...e,close:!1,timeout:mu,type:"toast-loading"})}function Au(i,e,s){if(!(e instanceof Function))throw new Error("Please provide a valid onUndo method");s=Object.assign(s||{},{timeout:ru});const t=document.createElement("span"),n=document.createElement("button");t.classList.add("toast-undo-container"),n.classList.add("toast-undo-button"),n.innerText=l("Undo"),t.innerText=i,t.appendChild(n);const r=f(t,{...s,type:"toast-undo"});return n.addEventListener("click",function(u){u.stopPropagation(),e(u),r?.hideToast instanceof Function&&r.hideToast()}),r}const ou=["textContent"],du=["innerHTML"],gu=j({__name:"GenericDialog",props:{name:{},text:{},html:{},buttons:{},severity:{}},emits:["close"],setup(i,{emit:e}){const s=i,t=e,n=V(()=>s.buttons?.map(u=>({...u,callback(){u.callback(),t("close",!0)}}))),r=()=>`${s.name}: ${s.text}`;return M(()=>window.addEventListener("unload",r)),I(()=>window.removeEventListener("unload",r)),(u,a)=>(x(),p(A(T),{dialogClasses:"nc-generic-dialog",buttons:n.value,name:i.name,message:i.text,"onUpdate:open":a[0]||(a[0]=g=>u.$emit("close",!1))},{default:D(()=>[i.severity?(x(),p(A(O),{key:0,type:i.severity},{default:D(()=>[Y("p",{textContent:P(i.text)},null,8,ou)]),_:1},8,["type"])):w("",!0),i.html?(x(),_("div",{key:1,innerHTML:i.html},null,8,du)):w("",!0)]),_:1},8,["buttons","name","message"]))}});class z{#e;#s;#i;#u;constructor(e,s,t=[],n){this.#e=e,this.#s=s,this.#i=t,this.#u=n}async show(){if(!await y(gu,{buttons:this.#i,name:this.#e,text:this.#s,severity:this.#u}))throw new Error("Dialog closed")}}class lu{#e;#s;#i;#u;constructor(e){this.#e=void 0,this.#s="",this.#i=e??"",this.#u=[]}setName(e){return this.#i=e,this}setText(e){return this.#s=e,this}setSeverity(e){return this.#e=e,this}setButtons(e){return this.#u.length>0&&b.warn("[@nextcloud/dialogs] Dialog buttons are already set - this overrides previous buttons."),this.#u=e,this}addButton(e){return this.#u.push(e),this}build(){return new z(this.#i,this.#s,this.#u,this.#e)}}function wu(i){return new lu(i)}async function ku(i){i={labelConfirm:l("Confirm"),...i};const{promise:e,resolve:s}=Promise.withResolvers(),t=[{label:i.labelConfirm,variant:"primary",callback(){s(!0)}}];return i.labelReject&&t.unshift({label:i.labelReject,callback(){s(!1)}}),await new z(i.name,i.text,t,i.severity).show(),e}export{ru as T,xu as a,Fu as b,Du as c,pu as d,ku as e,Au as f,wu as g,Bu as h,b as l,vu as s,l as t}; -//# sourceMappingURL=index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.map diff --git a/dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.map b/dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.map deleted file mode 100644 index 00ce033e2ef2b..0000000000000 --- a/dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"mappings":"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","names":["root","factory","module","this","global","Toastify","options","version","divElement","property","avatarElement","closeElement","event","width","self","x","getAxisOffsetAValue","y","xOffset","yOffset","rootElement","elementToInsert","toastElement","topLeftOffsetSize","topRightOffsetSize","offsetSize","allToasts","classUsed","i","containsClass","height","offset","axis","elem","yourClass","IconMove","IconCopy","gtBuilder","getGettextBuilder","data","language","translations","bundle","translation","gt","n","t","logger","getLoggerBuilder","FilePickerClosed","FilePicker","title","multiSelect","mimeTypeFilter","directoriesAllowed","noMenu","buttons","path","filter","canPick","container","disabledNavigation","FilePickerVue","__vitePreload","nodes","spawnDialog","node","FilePickerBuilder","ms","button","type","target","basename","label","allow","getFilePickerBuilder","LoaderSvg","TOAST_ARIA_LIVE_OFF","TOAST_ARIA_LIVE_POLITE","TOAST_ARIA_LIVE_ASSERTIVE","ToastAriaLive","ToastAriaLive2","TOAST_UNDO_TIMEOUT","TOAST_DEFAULT_TIMEOUT","TOAST_PERMANENT_TIMEOUT","showMessage","element","classes","isNode","ariaLive","toast","showError","text","showWarning","showInfo","showSuccess","showLoading","loader","loaderContent","showUndo","onUndo","undoContent","undoButton","_hoisted_1","_hoisted_2","_sfc_main","defineComponent","__props","__emit","props","emit","dialogButtons","computed","handleUnload","onMounted","onUnmounted","_ctx","_cache","openBlock","createBlock","unref","NcDialog","$event","withCtx","NcNoteCard","createElementVNode","toDisplayString","createCommentVNode","createElementBlock","Dialog","#name","#text","#buttons","#severity","name","severity","DialogBuilder","getDialogBuilder","showConfirmation","promise","resolve"],"ignoreList":[0,1],"sources":["../node_modules/toastify-js/src/toastify.js","../node_modules/@nextcloud/dialogs/dist/chunks/index-DL1yHC1K.mjs"],"sourcesContent":["/*!\n * Toastify js 1.12.0\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Varun A P\n */\n(function(root, factory) {\n if (typeof module === \"object\" && module.exports) {\n module.exports = factory();\n } else {\n root.Toastify = factory();\n }\n})(this, function(global) {\n // Object initialization\n var Toastify = function(options) {\n // Returning a new init object\n return new Toastify.lib.init(options);\n },\n // Library version\n version = \"1.12.0\";\n\n // Set the default global options\n Toastify.defaults = {\n oldestFirst: true,\n text: \"Toastify is awesome!\",\n node: undefined,\n duration: 3000,\n selector: undefined,\n callback: function () {\n },\n destination: undefined,\n newWindow: false,\n close: false,\n gravity: \"toastify-top\",\n positionLeft: false,\n position: '',\n backgroundColor: '',\n avatar: \"\",\n className: \"\",\n stopOnFocus: true,\n onClick: function () {\n },\n offset: {x: 0, y: 0},\n escapeMarkup: true,\n ariaLive: 'polite',\n style: {background: ''}\n };\n\n // Defining the prototype of the object\n Toastify.lib = Toastify.prototype = {\n toastify: version,\n\n constructor: Toastify,\n\n // Initializing the object with required parameters\n init: function(options) {\n // Verifying and validating the input object\n if (!options) {\n options = {};\n }\n\n // Creating the options object\n this.options = {};\n\n this.toastElement = null;\n\n // Validating the options\n this.options.text = options.text || Toastify.defaults.text; // Display message\n this.options.node = options.node || Toastify.defaults.node; // Display content as node\n this.options.duration = options.duration === 0 ? 0 : options.duration || Toastify.defaults.duration; // Display duration\n this.options.selector = options.selector || Toastify.defaults.selector; // Parent selector\n this.options.callback = options.callback || Toastify.defaults.callback; // Callback after display\n this.options.destination = options.destination || Toastify.defaults.destination; // On-click destination\n this.options.newWindow = options.newWindow || Toastify.defaults.newWindow; // Open destination in new window\n this.options.close = options.close || Toastify.defaults.close; // Show toast close icon\n this.options.gravity = options.gravity === \"bottom\" ? \"toastify-bottom\" : Toastify.defaults.gravity; // toast position - top or bottom\n this.options.positionLeft = options.positionLeft || Toastify.defaults.positionLeft; // toast position - left or right\n this.options.position = options.position || Toastify.defaults.position; // toast position - left or right\n this.options.backgroundColor = options.backgroundColor || Toastify.defaults.backgroundColor; // toast background color\n this.options.avatar = options.avatar || Toastify.defaults.avatar; // img element src - url or a path\n this.options.className = options.className || Toastify.defaults.className; // additional class names for the toast\n this.options.stopOnFocus = options.stopOnFocus === undefined ? Toastify.defaults.stopOnFocus : options.stopOnFocus; // stop timeout on focus\n this.options.onClick = options.onClick || Toastify.defaults.onClick; // Callback after click\n this.options.offset = options.offset || Toastify.defaults.offset; // toast offset\n this.options.escapeMarkup = options.escapeMarkup !== undefined ? options.escapeMarkup : Toastify.defaults.escapeMarkup;\n this.options.ariaLive = options.ariaLive || Toastify.defaults.ariaLive;\n this.options.style = options.style || Toastify.defaults.style;\n if(options.backgroundColor) {\n this.options.style.background = options.backgroundColor;\n }\n\n // Returning the current object for chaining functions\n return this;\n },\n\n // Building the DOM element\n buildToast: function() {\n // Validating if the options are defined\n if (!this.options) {\n throw \"Toastify is not initialized\";\n }\n\n // Creating the DOM object\n var divElement = document.createElement(\"div\");\n divElement.className = \"toastify on \" + this.options.className;\n\n // Positioning toast to left or right or center\n if (!!this.options.position) {\n divElement.className += \" toastify-\" + this.options.position;\n } else {\n // To be depreciated in further versions\n if (this.options.positionLeft === true) {\n divElement.className += \" toastify-left\";\n console.warn('Property `positionLeft` will be depreciated in further versions. Please use `position` instead.')\n } else {\n // Default position\n divElement.className += \" toastify-right\";\n }\n }\n\n // Assigning gravity of element\n divElement.className += \" \" + this.options.gravity;\n\n if (this.options.backgroundColor) {\n // This is being deprecated in favor of using the style HTML DOM property\n console.warn('DEPRECATION NOTICE: \"backgroundColor\" is being deprecated. Please use the \"style.background\" property.');\n }\n\n // Loop through our style object and apply styles to divElement\n for (var property in this.options.style) {\n divElement.style[property] = this.options.style[property];\n }\n\n // Announce the toast to screen readers\n if (this.options.ariaLive) {\n divElement.setAttribute('aria-live', this.options.ariaLive)\n }\n\n // Adding the toast message/node\n if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) {\n // If we have a valid node, we insert it\n divElement.appendChild(this.options.node)\n } else {\n if (this.options.escapeMarkup) {\n divElement.innerText = this.options.text;\n } else {\n divElement.innerHTML = this.options.text;\n }\n\n if (this.options.avatar !== \"\") {\n var avatarElement = document.createElement(\"img\");\n avatarElement.src = this.options.avatar;\n\n avatarElement.className = \"toastify-avatar\";\n\n if (this.options.position == \"left\" || this.options.positionLeft === true) {\n // Adding close icon on the left of content\n divElement.appendChild(avatarElement);\n } else {\n // Adding close icon on the right of content\n divElement.insertAdjacentElement(\"afterbegin\", avatarElement);\n }\n }\n }\n\n // Adding a close icon to the toast\n if (this.options.close === true) {\n // Create a span for close element\n var closeElement = document.createElement(\"button\");\n closeElement.type = \"button\";\n closeElement.setAttribute(\"aria-label\", \"Close\");\n closeElement.className = \"toast-close\";\n closeElement.innerHTML = \"✖\";\n\n // Triggering the removal of toast from DOM on close click\n closeElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.removeElement(this.toastElement);\n window.clearTimeout(this.toastElement.timeOutValue);\n }.bind(this)\n );\n\n //Calculating screen width\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Adding the close icon to the toast element\n // Display on the right if screen width is less than or equal to 360px\n if ((this.options.position == \"left\" || this.options.positionLeft === true) && width > 360) {\n // Adding close icon on the left of content\n divElement.insertAdjacentElement(\"afterbegin\", closeElement);\n } else {\n // Adding close icon on the right of content\n divElement.appendChild(closeElement);\n }\n }\n\n // Clear timeout while toast is focused\n if (this.options.stopOnFocus && this.options.duration > 0) {\n var self = this;\n // stop countdown\n divElement.addEventListener(\n \"mouseover\",\n function(event) {\n window.clearTimeout(divElement.timeOutValue);\n }\n )\n // add back the timeout\n divElement.addEventListener(\n \"mouseleave\",\n function() {\n divElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n self.removeElement(divElement);\n },\n self.options.duration\n )\n }\n )\n }\n\n // Adding an on-click destination path\n if (typeof this.options.destination !== \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n if (this.options.newWindow === true) {\n window.open(this.options.destination, \"_blank\");\n } else {\n window.location = this.options.destination;\n }\n }.bind(this)\n );\n }\n\n if (typeof this.options.onClick === \"function\" && typeof this.options.destination === \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.options.onClick();\n }.bind(this)\n );\n }\n\n // Adding offset\n if(typeof this.options.offset === \"object\") {\n\n var x = getAxisOffsetAValue(\"x\", this.options);\n var y = getAxisOffsetAValue(\"y\", this.options);\n\n var xOffset = this.options.position == \"left\" ? x : \"-\" + x;\n var yOffset = this.options.gravity == \"toastify-top\" ? y : \"-\" + y;\n\n divElement.style.transform = \"translate(\" + xOffset + \",\" + yOffset + \")\";\n\n }\n\n // Returning the generated element\n return divElement;\n },\n\n // Displaying the toast\n showToast: function() {\n // Creating the DOM object for the toast\n this.toastElement = this.buildToast();\n\n // Getting the root element to with the toast needs to be added\n var rootElement;\n if (typeof this.options.selector === \"string\") {\n rootElement = document.getElementById(this.options.selector);\n } else if (this.options.selector instanceof HTMLElement || (typeof ShadowRoot !== 'undefined' && this.options.selector instanceof ShadowRoot)) {\n rootElement = this.options.selector;\n } else {\n rootElement = document.body;\n }\n\n // Validating if root element is present in DOM\n if (!rootElement) {\n throw \"Root element is not defined\";\n }\n\n // Adding the DOM element\n var elementToInsert = Toastify.defaults.oldestFirst ? rootElement.firstChild : rootElement.lastChild;\n rootElement.insertBefore(this.toastElement, elementToInsert);\n\n // Repositioning the toasts in case multiple toasts are present\n Toastify.reposition();\n\n if (this.options.duration > 0) {\n this.toastElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n this.removeElement(this.toastElement);\n }.bind(this),\n this.options.duration\n ); // Binding `this` for function invocation\n }\n\n // Supporting function chaining\n return this;\n },\n\n hideToast: function() {\n if (this.toastElement.timeOutValue) {\n clearTimeout(this.toastElement.timeOutValue);\n }\n this.removeElement(this.toastElement);\n },\n\n // Removing the element from the DOM\n removeElement: function(toastElement) {\n // Hiding the element\n // toastElement.classList.remove(\"on\");\n toastElement.className = toastElement.className.replace(\" on\", \"\");\n\n // Removing the element from DOM after transition end\n window.setTimeout(\n function() {\n // remove options node if any\n if (this.options.node && this.options.node.parentNode) {\n this.options.node.parentNode.removeChild(this.options.node);\n }\n\n // Remove the element from the DOM, only when the parent node was not removed before.\n if (toastElement.parentNode) {\n toastElement.parentNode.removeChild(toastElement);\n }\n\n // Calling the callback function\n this.options.callback.call(toastElement);\n\n // Repositioning the toasts again\n Toastify.reposition();\n }.bind(this),\n 400\n ); // Binding `this` for function invocation\n },\n };\n\n // Positioning the toasts on the DOM\n Toastify.reposition = function() {\n\n // Top margins with gravity\n var topLeftOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var topRightOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var offsetSize = {\n top: 15,\n bottom: 15,\n };\n\n // Get all toast messages on the DOM\n var allToasts = document.getElementsByClassName(\"toastify\");\n\n var classUsed;\n\n // Modifying the position of each toast element\n for (var i = 0; i < allToasts.length; i++) {\n // Getting the applied gravity\n if (containsClass(allToasts[i], \"toastify-top\") === true) {\n classUsed = \"toastify-top\";\n } else {\n classUsed = \"toastify-bottom\";\n }\n\n var height = allToasts[i].offsetHeight;\n classUsed = classUsed.substr(9, classUsed.length-1)\n // Spacing between toasts\n var offset = 15;\n\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Show toast in center if screen with less than or equal to 360px\n if (width <= 360) {\n // Setting the position\n allToasts[i].style[classUsed] = offsetSize[classUsed] + \"px\";\n\n offsetSize[classUsed] += height + offset;\n } else {\n if (containsClass(allToasts[i], \"toastify-left\") === true) {\n // Setting the position\n allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + \"px\";\n\n topLeftOffsetSize[classUsed] += height + offset;\n } else {\n // Setting the position\n allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + \"px\";\n\n topRightOffsetSize[classUsed] += height + offset;\n }\n }\n }\n\n // Supporting function chaining\n return this;\n };\n\n // Helper function to get offset.\n function getAxisOffsetAValue(axis, options) {\n\n if(options.offset[axis]) {\n if(isNaN(options.offset[axis])) {\n return options.offset[axis];\n }\n else {\n return options.offset[axis] + 'px';\n }\n }\n\n return '0px';\n\n }\n\n function containsClass(elem, yourClass) {\n if (!elem || typeof yourClass !== \"string\") {\n return false;\n } else if (\n elem.className &&\n elem.className\n .trim()\n .split(/\\s+/gi)\n .indexOf(yourClass) > -1\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n // Setting up the prototype for the init object\n Toastify.lib.init.prototype = Toastify.lib;\n\n // Returning the Toastify function to be assigned to the window object/module\n return Toastify;\n});\n","import { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { defineAsyncComponent, defineComponent, computed, onMounted, onUnmounted, openBlock, createBlock, unref, withCtx, createElementVNode, toDisplayString, createCommentVNode, createElementBlock } from \"vue\";\nimport { basename } from \"@nextcloud/paths\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport Toastify from \"toastify-js\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcNoteCard from \"@nextcloud/vue/components/NcNoteCard\";\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nasync function openConflictPicker(dirname, conflicts, content, options) {\n const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-BwfOiKFa.mjs\"));\n const incoming = [];\n const existing = [];\n for (const node of content) {\n if (isConflictingNode(node)) {\n existing.push(node);\n incoming.push(conflicts[indexOf(node)]);\n }\n }\n if (conflicts.length === 0 || content.length === 0) {\n throw new Error(\"ConflictPicker: files and conflicts must not be empty\");\n }\n if (conflicts.length !== content.length) {\n throw new Error(\"ConflictPicker: files and conflicts must have the same length. Make sure you filter out non conflicting files from the conflicts array.\");\n }\n return await spawnDialog(ConflictPicker, {\n dirname,\n existing,\n incoming,\n isOverwriting: options?.overwriting === true,\n recursiveUpload: options?.recursive === true\n }, {\n container: options?.container\n });\n function isConflictingNode(node) {\n return conflicts.some((entry) => nodeIsConflict(node, entry));\n }\n function indexOf(node) {\n return conflicts.findIndex((entry) => nodeIsConflict(node, entry));\n }\n function nodeIsConflict(node, conflict) {\n if (\"basename\" in conflict) {\n return conflict.basename === node.basename;\n }\n return conflict.name === node.basename;\n }\n}\nconst IconMove = '';\nconst IconCopy = '';\nconst gtBuilder = getGettextBuilder().detectLanguage();\nfor (const data of [{ \"language\": \"ar\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" لا يصلح كاسم مجلد.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" غير مسموح به كاسم مجلد'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" غير مسموح به داخل اسم مجلد.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"كل الملفات\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"إختَر\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"إختر {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"إختَر %n ملف\", \"إختَر %n ملف\", \"إختَر %n ملف\", \"إختَر %n ملفات\", \"إختَر %n ملف\", \"إختر %n ملف\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"نسخ\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"نسخ إلى {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"تعذّر إنشاء المجلد الجديد\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"يتعذّر تحميل إعدادات الملفات\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"تعذر تحميل عرض الملفات\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"إنشاء مجلد\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"محدد العرض الحالي\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"المفضلة\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"الملفات والمجلدات التي تحددها كمفضلة ستظهر هنا.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"الملفات و المجلدات التي قمت مؤخراً بتعديلها سوف تظهر هنا.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"تصفية قائمة الملفات\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"اسم المجلد لا يمكن أن يكون فارغاً.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"البداية\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"التعديل\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"نقل\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"نقل إلى {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"الاسم\"] }, { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"مجلد جديد\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"اسم المجلد الجديد\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"لا توجد ملفات هنا\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"لا توجد ملفات تتطابق مع عامل التصفية الذي وضعته\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"لا توجد ملفات مطابقة\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"الحالي\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"حدد جميع الإدخالات\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"إختَر المدخل\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"إختر سطر الـ {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"الحجم\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"تراجع\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"قم برفع بعض المحتوى أو المزامنة مع أجهزتك!\"] }] }, { \"language\": \"ast\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» ye un nome de carpeta inválidu.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» ye un nome de carpeta inválidu\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"Nun se permite'l caráuter «/» dientro'l nome de les carpetes.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tolos ficheros\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escoyer\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escoyer «{ficheru}»\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escoyer %n ficheru\", \"Escoyer %n ficheros\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar en: {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nun se pudo crear la carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nun se pudo cargar la configuración de los ficheros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nun se pudieron cargar les vistes de los ficheros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear un direutoriu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de la vista actual\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Equí apaecen los ficheros y les carpetes que metas en Favoritos.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Equí apaecen los fichero y les carpetes que modificares apocayá.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Peñerar la llista de ficheros\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nome de la carpeta nun pue tar baleru.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Aniciu\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificóse\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Carpeta nueva\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nome de carpeta nuevu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Equí nun hai nengún ficheru\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nun s'atopó nengún ficheru que concasare cola peñera.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nun hai nengún ficheru que concase\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"De recién\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleicionar toles entraes\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleicionar la entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleicionar la filera de: {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamañu\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Xubi dalgún elementu o sincroniza colos tos preseos!\"] }] }, { \"language\": \"ca\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`No és permès d'usar el caràcter \"{char}\" en un nom.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no és un nom permès.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" no és vàlid com a nom de carpeta.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no és vàlid com a nom de carpeta'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" és un mot reservat i no està permès com a nom.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [`\"/\" no està permès en el nom d'una carpeta.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflicte de fitxers\", \"%n conflictes de fitxers\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n onflicte de fitxers a {dirname}\", \"%n conflictes de fitxers a {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tots els fitxers\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel·lar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel·lar tota l'operació\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tria\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Tria {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Tria %n fitxer\", \"Tria %n fitxers\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirma\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copia\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copia a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No s'ha pogut crear la carpeta nova\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No es poden carregar fitxers de configuració\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No es poden carregar fitxers de vistes\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crea un directori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de visualització actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Escriviu el vostre nom\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versió existent\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"No s'ha pogut desar el sobrenom.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Preferits\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Els fitxers i les carpetes que marqueu com a favorits es mostraran aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Els fitxers i les carpetes recentment modificats es mostraran aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar llistat de fitxers\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nom de la carpeta no pot estar buit.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificació com a convidat\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inici\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nom no vàlid.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data de l'última modificació desconeguda\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Data de modificació\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Desplaça\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Desplaça a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nom\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Els noms poden tenir com a màxim 64 caràcters.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Els noms no poden ser buits.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [`Els noms no poden acabar amb l'extensió \"{extension}\".`] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Els noms no poden començar amb un punt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Crea\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Carpeta nova\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nom de la carpeta nova\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versió\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hi ha cap fitxer\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No s'ha trobat cap fitxer que coincideixi amb el filtre.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hi ha cap fitxer que coincideixi\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Si us plau, escriu un nom amb 2 caràcters com a mínim.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recents\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecciona totes les caselles de selecció\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecciona totes les entrades\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecciona tots els fitxers existents\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecciona tots els fitxers nous\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecciona l'entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecciona la fila per a {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Mida\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omet %n fitxer\", \"Omet %n fitxers\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omet aquest fitxer\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Entreu el nom\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfés\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Pugeu contingut o sincronitzeu-lo amb els vostres dispositius!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quan es selecciona una carpeta entrant, també se sobreescriuran els fitxers que hi entrin en conflicte.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quan es selecciona una carpeta entrant, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quins fitxers voleu conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Actualment se us mostra com a {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Actualment no esteu identificat.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No podeu deixar el nom buit.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Heu de triar com a mínim una solució de conflicte\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Heu de seleccionar com a mínim una versió de cada fitxer per continuar.\"] }] }, { \"language\": \"cs_CZ\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"znak „{char}“ není možné použít uvnitř názvu složky.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ není možné použít uvnitř názvu.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ není možné použít jako název.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ je vyhrazeným názvem a není možné ho používat pro názvy složek.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ je vyhrazeným názvem a není možné ho použít.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n kolize souboru\", \"%n kolize souborů\", \"%n kolizí souborů\", \"%n kolize souborů\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n kolize souborů v {dirname}\", \"%n kolize souborů v {dirname}\", \"%n kolizí souborů v {dirname}\", \"%n kolize souborů v {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Veškeré soubory\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Storno\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Zvolit\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Zvolit {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Zvolte %n soubor\", \"Zvolte %n soubory\", \"Zvolte %n souborů\", \"Zvolte %n soubory\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdit\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Zkopírovat\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Zkopírovat do {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Novou složku se nepodařilo vytvořit\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepodařilo se načíst nastavení pro soubory\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepodařilo se načíst pohledy souborů\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Vytvořit složku\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Výběr stávajícího zobrazení\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Zadejte své jméno\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepodařilo se nastavit přezdívku.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Oblíbené\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Zde se zobrazí soubory a složky, které označíte jako oblíbené.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Zde se zobrazí soubory a složky, které jste nedávno pozměnili.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrovat seznam souborů\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Názvy složek nemohou končit na „{extension}“.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikace hosta\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domů\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, pak k názvu příchozího souboru bude přidáno číslo.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neplatný název složky.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neplatný název.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum poslední změny neznámé\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Změněno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Přesounout\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Přesunout do {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Název\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Je třeba, aby délka jmen nepřesahovala 64 znaků.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Názvy je třeba vyplnit.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Názvy nemohou končit na „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Názvy nemohou začínat tečkou.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nová složka\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Název pro novou složku\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nejsou zde žádné soubory\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenalezeny žádné soubory odpovídající vašemu filtru\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Žádné odpovídající soubory\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Zadejte jméno dlouhé alespoň 2 znaky.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedávné\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vybrat všechny zaškrtávací kolonky\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vybrat všechny položky\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat všechny existující soubory\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat všechny nové soubory\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vybrat položku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vybrat řádek pro {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Velikost\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Přeskočit %n soubor\", \"Přeskočit %n soubory\", \"Přeskočit %n souborů\", \"Přeskočit %n soubory\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Přeskočit tento soubor\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Odeslat jméno\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Zpět\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Nahrajte sem nějaký obsah nebo proveďte synchronizaci se svými zařízeními!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Pokud je vybrána příchozí složka, budou v ní také přepsány jakékoli kolidující soubory.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Pokud je vybrána příchozí složka, je obsah zapsán do existující složky a je provedeno rekurzivní vyřešení kolizí.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory chcete ponechat?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"V tuto chvíli jste identifikováni jako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"V tuto chvíli nejste identifikovaní.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Jméno nelze ponechat nevyplněné.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Je třeba zvolit alespoň jedno z řešení kolize\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] }] }, { \"language\": \"da\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" er ikke tilladt i et navn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" er ikke tilladt i et navn.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" er et ugyldigt mappenavn.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" er ikke et tilladt mappenavn'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" er et reserveret navn og er derfor ikke tilladt.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er ikke tilladt i et mappenavn.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n filkonflikt\", \"%n filer konflikter\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n filkonflikt i {dirname}\", \"%n filkonflikter i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Fortryd\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annullér hele operationen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Vælg\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vælg {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vælg %n fil\", \"Vælg %n filer\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bekræft\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopier til {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunne ikke oprette den nye mappe\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Filindstillingerne kunne ikke indlæses\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunne ikke indlæse filvisninger\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Opret mappe\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuel visningsvælger\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Indtast dit navn\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Forsøg på at gemme kaldenavn mislykkedes.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer og mapper, du markerer som foretrukne, vises her.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer og mapper, du for nylig har ændret, vises her.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer fil liste\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mappenavnet må ikke være tomt.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gæsteidentifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hjem\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ugyldigt navn.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senest ændret dato ukendt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ændret\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flyt\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flyt til {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Navn\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Navne kan højst være 64 tegn lange.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Navne kan ikke være tomt.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Navne må ikke ende på \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Navne skal starte med et punktum.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mappe\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ny mappe navn\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ingen filer here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Der blev ikke fundet nogen filer, der matcher dit filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ingen matchende filer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Indtast et navn med mindst 2 tegn.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Seneste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markér alle afkrydsningsfelter\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vælg alle poster\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vælg post\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vælg rækken for {nodenavn}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Størelse\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Spring %n fil over\", \"Spring %n filer over\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Spring denne fil over\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Indsend navn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Fortryd\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload noget indhold eller synkroniser med dine enheder!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil eventuelle modstridende filer i det også blive overskrevet.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, er indholdet skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du have?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du er i øjeblikket identificeret som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du er ikke identificeret.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan ikke efterlade navnet tomt.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Du skal vælge mindst én konfliktløsning\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] }] }, { \"language\": \"de\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Ordnernamens nicht zulässig.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Namens nicht zulässig.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ist kein zulässiger Name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig für Ordnernamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n Dateikonflikt\", \"%n Dateikonflikte\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n Dateikonflikt in {dirname}\", \"%n Dateikonflikte in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle Dateien\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Auswählen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} auswählen\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n Datei auswählen\", \"%n Dateien auswählen\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bestätigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopieren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Nach {target} kopieren\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Der neue Ordner konnte nicht erstellt werden\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dateieinstellungen konnten nicht geladen werden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dateiansichten konnten nicht geladen werden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Verzeichnis erstellen\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuelle Ansichtsauswahl\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Gib deinen Namen ein\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Spitzname konnte nicht gespeichert werden.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien und Ordner, die du als Favorit markierst, werden hier angezeigt.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien und Ordner, die du kürzlich geändert hast, werden hier angezeigt.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dateiliste filtern\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ordnernamen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gast-Identifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ungültiger Ordnername.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ungültiger Name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geändert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verschieben\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Nach {target} verschieben\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen dürfen maximal 64 Zeichen lang sein.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen dürfen nicht leer sein.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen dürfen nicht mit einem Punkt beginnen.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neuer Ordner\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neuer Ordnername\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Hier sind keine Dateien\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Es wurden keine Dateien gefunden, die deinem Filter entsprechen.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keine passenden Dateien\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Bitte einen Namen mit mindestens zwei Zeichen eingeben.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Neueste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle Einträge auswählen\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Eintrag auswählen\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Die Zeile für {nodename} auswählen.\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Größe\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n Datei überspringen\", \"%n Dateien überspringen\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Namen senden\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Rückgängig machen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lade Inhalte hoch oder synchronisiere diese mit deinen Geräten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien sollen behalten werden?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du bist derzeit als {nickname} identifiziert.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du bist momentan nicht identifiziert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kannst den Namen nicht leer lassen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Es muss mindestens eine Konfliktlösung gewählt werden\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren.\"] }] }, { \"language\": \"de_DE\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Ordnernamens nicht zulässig.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Namens nicht zulässig.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ist kein zulässiger Name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig für Ordnernamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n Dateikonflikt\", \"%n Dateikonflikte\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n Dateikonflikt in {dirname}\", \"%n Dateikonflikte in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle Dateien\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Auswählen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} auswählen\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n Datei auswählen\", \"%n Dateien auswählen\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bestätigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopieren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Nach {target} kopieren\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Der neue Ordner konnte nicht erstellt werden\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dateieinstellungen konnten nicht geladen werden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dateiansichten konnten nicht geladen werden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Verzeichnis erstellen\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuelle Ansichtsauswahl\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Geben Sie Ihren Namen ein\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Spitzname konnte nicht gespeichert werden.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien und Ordner, die Sie als Favorit markieren, werden hier angezeigt.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien und Ordner, die Sie kürzlich geändert haben, werden hier angezeigt.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dateiliste filtern\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ordnernamen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gast-Identifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ungültiger Ordnername.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ungültiger Name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geändert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verschieben\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Nach {target} verschieben\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen dürfen maximal 64 Zeichen lang sein.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen dürfen nicht leer sein.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen dürfen nicht mit einem Punkt beginnen.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neuer Ordner\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neuer Ordnername\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Hier sind keine Dateien\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Es wurden keine Dateien gefunden, die Ihrem Filter entsprechen.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keine passenden Dateien\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Bitte einen Namen mit mindestens zwei Zeichen eingeben.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Neueste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle Einträge auswählen\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Eintrag auswählen\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Die Zeile für {nodename} auswählen.\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Größe\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n Datei überspringen\", \"%n Dateien überspringen\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Namen senden\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Rückgängig machen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Laden Sie Inhalte hoch oder synchronisieren Sie diese mit Ihren Geräten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien sollen behalten werden?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sie sind derzeit als {nickname} identifiziert.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sie sind momentan nicht identifiziert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Sie können den Namen nicht leer lassen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Es muss mindestens eine Konfliktlösung gewählt werden\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren.\"] }] }, { \"language\": \"el\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"Το «{char}» δεν επιτρέπεται μέσα σε όνομα φακέλου.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" δεν επιτρέπεται μέσα σε ένα όνομα.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" δεν είναι επιτρεπτό όνομα.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"Το «{segment}» είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται για ονόματα φακέλων.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n σύγκρουση αρχείου\", \"%n σύγκρουση αρχείων\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n σύγκρουση αρχείου στο {dirname}\", \"%n σύγκρουση αρχείων στο {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Όλα τα αρχεία\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Ακύρωση\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Ακύρωση όλης της διαδικασίας\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Επιλογή\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Επιλέξτε {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Επιλέξτε %n αρχείο\", \"Επιλέξτε %n αρχεία\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Επιβεβαίωση\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Συνέχεια\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Αντιγραφή\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Αντιγραφή στο {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Αδυναμία δημιουργίας νέου φακέλου\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Αδυναμία φόρτωσης ρυθμίσεων αρχείων\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Αδυναμία φόρτωσης προβολών αρχείων\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Δημιουργία καταλόγου\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Επιλογέας τρέχουσας προβολής\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Εισάγετε το όνομά σας\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Υφιστάμενη έκδοση\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Αποτυχία στην ρύθμιση του ψευδώνυμου.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Αγαπημένα\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Τα αρχεία και οι φάκελοι που επισημάνετε ως αγαπημένα θα εμφανίζονται εδώ.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Τα αρχεία και οι φάκελοι που τροποποιήσατε πρόσφατα θα εμφανίζονται εδώ.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Φιλτράρισμα λίστας αρχείων\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Τα ονόματα των φακέλων δεν πρέπει να τελειώνουν με «{extension}».\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Ταυτοποίηση επισκέπτη\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Αρχική\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Εάν επιλέξετε και τις δύο εκδόσεις, στο όνομα του εισερχόμενου αρχείου θα προστεθεί ένας αριθμός.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Μη έγκυρο όνομα φακέλου.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Μη έγκυρο όνομα.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Άγνωστη ημερομηνία τελευταίας τροποποίησης\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Τροποποιήθηκε\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Μετακίνηση\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Μετακίνηση στο {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Όνομα\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Τα ονόματα μπορούν να έχουν μέγιστο μήκος 64 χαρακτήρες.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Τα ονόματα δεν πρέπει να είναι κενά.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Τα ονόματα δεν πρέπει να τελειώνουν με \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Τα ονόματα δεν πρέπει να ξεκινούν με τελεία.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Νέο\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Νέος φάκελος\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Όνομα νέου φακέλου\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Νέα έκδοση\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Δεν υπάρχουν αρχεία εδώ\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Δεν βρέθηκαν αρχεία που να ταιριάζουν με το φίλτρο σας.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Κανένα αρχείο δεν ταιριάζει\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Παρακαλώ εισάγετε ένα όνομα με τουλάχιστον 2 χαρακτήρες.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Πρόσφατα\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Επιλέξτε όλα τα πλαίσια ελέγχου\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Επιλογή όλων των καταχωρήσεων\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Επιλογή όλων των υπάρχοντων αρχείων\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Επιλογή όλων των νέων αρχείων\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Επιλογή εγγραφής\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Επιλέξτε τη γραμμή για το {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Μέγεθος\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Παράλειψη ενός αρχείου\", \"Παράλειψη %n αρχείων\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Παράλειψη αυτού το αρχείου\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Υποβολή ονόματος\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Αναίρεση\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ανεβάστε κάποιο περιεχόμενο ή συγχρονίστε με τις συσκευές σας!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Όταν επιλέγεται ένας φάκελος εισερχομένων, όλα τα αρχεία που βρίσκονται σε σύγκρουση μέσα σε αυτόν θα αντικατασταθούν επίσης.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Όταν επιλέγεται ένας φάκελος εισερχομένων, το περιεχόμενο εγγράφεται στον υπάρχοντα φάκελο και εκτελείται μια αναδρομική επίλυση σύγκρουσης.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ποια αρχεία θέλετε να διατηρήσετε;\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Αυτή τη στιγμή έχετε αναγνωριστεί ως {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Δεν έχετε ταυτοποιηθεί.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Δεν μπορείτε να αφήσετε το όνομα κενό.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία λύση σύγκρουσης\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία έκδοση από κάθε αρχείο για να συνεχίσετε.\"] }] }, { \"language\": \"en_GB\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" is not allowed inside a folder name.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" is not allowed inside a name.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" is not an allowed name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" is a reserved name and cannot be used for folder names.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" is a reserved name and not allowed.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n file conflict\", \"%n files conflict\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n file conflict in {dirname}\", \"%n file conflicts in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"All files\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Choose\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Choose {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Choose %n file\", \"Choose %n files\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirm\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copy\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copy to {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Could not create the new folder\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Could not load files settings\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Could not load files views\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Create directory\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Current view selector\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Enter your name\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Failed to set nickname.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favourites\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Files and folders you mark as favourite will show up here.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Files and folders you recently modified will show up here.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter file list\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Folder names must not end with \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Guest identification\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Invalid folder name.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Invalid name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modified\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Move\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Move to {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Names may be at most 64 characters long.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Names must not be empty.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Names must not end with \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Names must not start with a dot.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"New folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"New folder name\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No files in here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No files matching your filter were found.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No matching files\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Please enter a name with at least 2 characters.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recent\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Select all entries\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Select entry\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Select the row for {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Size\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Skip %n file\", \"Skip %n files\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Skip this file\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Submit name\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Undo\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload some content or sync with your devices!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"You are currently identified as {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"You are currently not identified.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"You cannot leave the name empty.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"You need to choose at least one conflict solution\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] }] }, { \"language\": \"es\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no es un nombre permitido.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" es un nombre de carpeta no válido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no es un nombre de carpeta permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" no está permitido dentro del nombre de una carpeta.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seleccionar\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Seleccionar {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Elige %n archivo\", \"Elige %n archivos\", \"Seleccione %n archivos\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudieron cargar los ajustes de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ingrese su nombre\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Fallo al establecer apodo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nombre de la carpeta no puede estar vacío.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación de invitado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nombre inválido.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Los nombres no deben estar vacíos.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Los nombres no deben terminar con \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Los nombres no deben iniciar con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\" Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nuevo nombre de carpeta\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidiesen con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Por favor, ingrese un nombre con al menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nombre\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Cargue algún contenido o sincronice con sus dispositivos!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Ud. se encuentra identificado actualmente como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Ud. no se encuentra identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No puede dejar el nombre vacío.\"] }] }, { \"language\": \"es_AR\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" es un nombre de carpeta inválido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no es un nombre de carpeta permitido'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" no está permitido en el nombre de una carpeta.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Elegir\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Elija {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Elija %n archivo\", \"Elija %n archivos\", \"Elija %n archivos\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudo cargar la configuración de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nombre de la carpeta no puede estar vacío.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nombre de nueva carpeta\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidan con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Cargue algún contenido o sincronice con sus dispositivos!\"] }] }, { \"language\": \"es_MX\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre de carpeta'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no es un nombre permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido para nombres de carpetas'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflicto de archivo\", \"%n conflicto de archivos\", \"%n conflicto de archivos\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n conflicto de archivo en {dirname}\", \"%n conflictos de archivo en {dirname}\", \"%n conflictos de archivo en {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar la operación completa\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seleccionar\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Seleccionar {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Seleccionar %n archivo\", \"Seleccionar %n archivos\", \"Seleccionar %n archivos\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudo cargar la configuración de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear carpeta\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ingresa tu nombre\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"No se pudo establecer el nickname\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Los nombres para carpeta no deben terminar con \"{extension}\"'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación de invitado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccionas ambas versiones, se le agregará al archivo que se está descargando, un número a su nombre.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nombre de carpeta no válido\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nombre no válido\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Los nombres pueden tener como máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Los nombres no deben estar vacíos.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Los nombres no deben terminar con \"{extension}\"'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Los nombres no deben comenzar con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nombre de nueva carpeta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidan con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Por favor ingrese un nombre con al menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccione todas las casillas de verificación\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccione todos los archivos que aparecen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccione todos los archivos nuevos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omitir %n archivo\", \"Omitir %n archivos\", \"Omitir %n archivos\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este archivo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nombre\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Suba algún contenido o sincronice con sus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando se selecciona una carpeta en descarga, cualquier archivo conflictivo que contenga también se sobrescribirá.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando se selecciona una carpeta en descarga, el contenido se escribe en la carpeta existente y se realiza una resolución de conflicto recursiva.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos deseas conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Actualmente estás identificado como {nickname}\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"No estás identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No puedes dejar el nombre vacío.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Necesitas elegir al menos una solución al conflicto.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Necesitas seleccionar al menos una versión de cada archivo para continuar.\"] }] }, { \"language\": \"et_EE\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"„{char}“ pole kausta nimes lubatud.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ pole nimes lubatud.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ pole lubatud nimi.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ on reserveeritud nimi ja pole kausta nimes lubatud.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ on reserveeritud nimi ja pole kasutamiseks lubatud.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fail on vastuolus\", \"%n faili on omavahel vastuolus\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n fail on {dirname} kaustas vastuolus\", \"%n faili on omavahel {dirname} kaustas vastuolus\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Kõik failid\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Katkesta\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Katkesta kogu tegevus\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tee valik\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vali {file} fail\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vali %n fail\", \"Vali %n faili\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Kinnita\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Jätka\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopeeri\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopeeri sihtkohta „{target}“\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Uut kausta ei saanud luua\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Failide seadistusi ei õnnestunud laadida\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Failide vaatamiskordi ei õnnestunud laadida\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Loo kaust\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Praeguse vaate valija\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Sisesta oma nimi\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemasolev versioon\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Hüüdnime ei õnnestunud lisada\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Lemmikud\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Failid ja kaustad, mida märgistad lemmikuks, kuvatakse siin.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Siin kuvatakse hiljuti muudetud failid ja kaustad.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtreeri faililoendit\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Kausta nime lõpus ei tohi olla „{extension}“.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Külalise tuvastamine\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Avaleht\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Kui valid mõlemad versioonid, siis uue faili nimele lisatakse number.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Vigane kausta nimi.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Vigane nimi.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimase muutmise kuupäev pole teada\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Muudetud\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Teisalda\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Teisalda kausta „{target}“\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nimi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nimed võivad olla vaid kuni 64 tähemärki pikad.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nimi ei saa olla tühi.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Nime lõpus ei tohi olla „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nime alguses ei tohi olla punkt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Uus\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Uus kaust\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Uue kausta nimi\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Uus versioon\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Siin puuduvad failid\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Sinu filtrile vastavaid faile ei leidunud.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Puuduvad sobivad failid\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Palun sisesta vähemalt 2 tähemärki pikk nimi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Hiljutine\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vali kõik märkeruudud\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vali kõik kirjed\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vali kõik olemasolevad failid\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vali kõik uued failid\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vali kirje\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vali rida „{nodename}“ jaoks\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Suurus\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Jäta %n fail vahele\", \"Jäta %n faili vahele\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Jäta see fail vahele\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Lisa nimi\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Tühista\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lisa mingit sisu või sünkrooni see oma seadmetest!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kui uute failide kaust on valitud, siis kõik seal leiduvad vastuolus failid saavad üle kirjutatud.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kui uute failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja korraldatakse rekursiivne failikonfliktide lahendamine.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Missugused failid tahaksid alles jätta?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sa oled hetkel tuvastatav kui {nickname}..\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sa oled hetkel tuvastamata.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Sa ei saa jätte nime tühjaks.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Sa pead valima vähemalt ühe failikonflikti lahenduse.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Jätkamaks pead valima igast failist vähemalt ühe versiooni.\"] }] }, { \"language\": \"fa\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} نام پوشه معتبر نیست\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} نام پوشه مجاز نیست\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" نمی‌تواند در نام پوشه استفاده شود.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"همه فایل‌ها\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"لغو\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"انتخاب\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"انتخاب {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"انتخاب %n فایل\", \"انتخاب %n فایل\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"رونوشت\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"رونوشت از {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"پوشه جدید ایجاد نشد\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"تنظیمات فایل باز نشد\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"نمای فایل‌ها بارگیری نشد\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ایجاد فهرست\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"انتخابگر نماگر فعلی\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"نام خود را وارد کنید\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"تنظیم نام مستعار ناموفق بود.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"علایق\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"فایل‌ها و پوشه‌هایی که به‌عنوان مورد علاقه علامت‌گذاری می‌کنید در اینجا نشان داده می‌شوند.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"فایل‌ها و پوشه‌هایی که اخیراً تغییر داده‌اید در اینجا نمایش داده می‌شوند.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"فیلتر لیست فایل\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"نام پوشه نمی تواند خالی باشد.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"شناسایی مهمان\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"خانه\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"اصلاح شده\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"انتقال\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"انتقال به {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"نام\"] }, { \"msgid\": \"New\", \"msgstr\": [\"جدید\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"پوشه جدید\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"نام پوشه جدید\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"فایلی اینجا نیست\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"هیچ فایلی مطابق با فیلتر شما یافت نشد.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"فایل منطبقی وجود ندارد\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"لطفاً نامی با حداقل ۲ کاراکتر وارد کنید.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"اخیر\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"انتخاب همه ورودی ها\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"انتخاب ورودی\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"انتخاب ردیف برای {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"اندازه\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"ارسال نام\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"بازگردانی\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"مقداری محتوا آپلود کنید یا با دستگاه های خود همگام سازی کنید!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"شما در حال حاضر شناسایی نشده‌اید.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"نمی‌توانید نام را خالی بگذارید.\"] }] }, { \"language\": \"fi_FI\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ei ole sallittu nimessä.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ei ole sallittu nimi.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" on virheellinen kansion nimi.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" ei ole sallittu kansion nimi'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" on varattu nimi eikä se ole sallittu.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ei ole sallittu kansion nimessä.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Kaikki tiedostot\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Valitse\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Valitse {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Valitse %n tiedosto\", \"Valitse %n tiedostoa\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopioi\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopioi sijaintiin {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Uutta kansiota ei voitu luoda\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tiedoston asetuksia ei saa ladattua\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tiedoston näkymiä ei saa ladattua\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Luo kansio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Nykyisen näkymän valinta\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Kirjoita nimesi\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kutsumanimen asettaminen epäonnistui.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Suosikit\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tiedostot ja kansiot, jotka merkitset suosikkeihisi, näkyvät täällä.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Tiedostot ja kansiot, joita muokkasit äskettäin, näkyvät täällä.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Suodata tiedostolistaa\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Kansion nimi ei voi olla tyhjä.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Vieraan tunnistaminen\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Koti\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Virheellinen nimi.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Muokattu\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Siirrä\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Siirrä sijaintiin {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nimi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nimissä voi olla enintään 64 merkkiä.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nimet eivät saa olla tyhjiä.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nimet eivät saa päättyä sanaan \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nimet eivät saa alkaa pisteellä.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Uusi kansio\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Uuden kansion nimi\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Täällä ei ole tiedostoja\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Suodatinta vastaavia tiedostoja ei löytynyt.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ei vastaavia tiedostoja\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kirjoita vähintään kaksi merkkiä sisältävä nimi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Viimeisimmät\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Valitse kaikki tietueet\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Valitse tietue\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Valitse rivi {nodename}:lle\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Koko\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Lähetä nimi\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Kumoa\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lähetä jotain sisältöä tai synkronoi laitteidesi kanssa!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sinut tunnetaan tällä hetkellä nimellä {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sinua ei ole tunnistettu.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nimeä ei voi jättää tyhjäksi.\"] }] }, { \"language\": \"fr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`\"{char}\" n'est pas autorisé dans un nom de dossier.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`\"{char}\" n'est pas autorisé dans un nom.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [`\"{extension}\" n'est pas un nom autorisé.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [`\"{segment}\" est un nom réservé et n'est pas autorisé pour un nom de dossier.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [`\"{segment}\" est un nom réservé et n'est pas autorisé.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflit de fichier\", \"%n conflit de fichiers\", \"%n conflit de fichiers\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%nconflit de fichier dans {dirname}\", \"%n conflit de fichiers dans {dirname}\", \"%nconflit de fichiers dans {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tous les fichiers\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tout annuler \"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Choisir\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Choisir {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Choisir %n fichier\", \"Choisir %n fichiers\", \"Choisir %n fichiers \"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmer\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copier vers {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Impossible de créer le nouveau dossier\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Les paramètres des fichiers n'ont pas pu être chargés\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Impossible de charger les vues des fichiers\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Créer un répertoire\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Sélecteur d'affichage actuel\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Entrez votre nom\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Version actuelle \"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Échec de définition du surnom.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoris\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Les fichiers et répertoires marqués en favoris apparaîtront ici.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Les fichiers et répertoires modifiés récemment apparaîtront ici.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer la liste des fichiers\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Les noms de dossiers ne doivent pas se terminer par \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identification d'invité\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Accueil\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous conservez les deux versions, le fichier reçu sera renommé avec un numéro.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nom de dossier invalide.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nom invalide.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de modification inconnue\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifié\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Déplacer\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Déplacer vers {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nom\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Les noms peuvent comporter au maximum 64 caractères.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Les noms ne peuvent pas être vides.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Les noms ne doivent pas se terminer par \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Les noms ne peuvent pas commencer par un point.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nouveau dossier\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nom du nouveau dossier\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Aucun fichier ici\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Aucun fichier trouvé correspondant à votre filtre.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Aucun fichier correspondant\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Veuillez entrer un nom avec au moins 2 caractères.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Récents\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Tout sélectionner\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Sélectionner une entrée\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Sélectionner la ligne correspondant à {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Taille\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorer %n fichier\", \"Ignorer %n fichiers \", \"Ignorer %n fichiers \"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorer ce fichier\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Envoyer le nom\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Annuler\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Chargez du contenu ou synchronisez avec vos équipements !\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"En sélectionnant un dossier entrant, les fichiers en conflit qu’il contient seront automatiquement écrasés.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsque vous sélectionnez un dossier entrant, son contenu est ajouté au dossier existant et les conflits sont résolus automatiquement.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Vous êtes actuellement identifié comme {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Vous n'êtes pas identifié actuellement.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Vous ne pouvez pas laisser le nom vide.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Vous devez choisir au moins une option pour résoudre le conflit\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sélectionnez au moins une version de chaque fichier pour continuer.\"] }] }, { \"language\": \"ga\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`Ní cheadaítear \"{char}\" laistigh d'ainm fillteáin.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`Ní cheadaítear \"{char}\" laistigh d'ainm.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['Ní ainm ceadaithe é \"{extension}\".'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [`Is ainm curtha in áirithe é \"{segment}\" agus ní cheadaítear é d'ainmneacha fillteán.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['Is ainm curtha in áirithe é \"{segment}\" agus ní cheadaítear é.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n coimhlint comhaid\", \"%n coimhlint comhad\", \"%n coimhlint comhad\", \"%n coimhlint comhad\", \"%n coimhlint comhad\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n coimhlint comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Gach comhad\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht ar fad\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Roghnaigh\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Roghnaigh {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Roghnaigh %n comhad\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Deimhnigh\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Lean ar aghaidh\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Cóip\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Cóipeáil chuig {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Níorbh fhéidir an fillteán nua a chruthú\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Níorbh fhéidir socruithe comhaid a lódáil\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Níorbh fhéidir radhairc comhad a lódáil\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Cruthaigh eolaire\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Roghnóir amhairc reatha\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Cuir isteach d'ainm\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan atá ann cheana féin\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Theip ar leasainm a shocrú.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Ceanáin\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Taispeánfar comhaid agus fillteáin a d'athraigh tú le déanaí anseo.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Scag liosta comhad\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ní féidir ainmneacha fillteán a chríochnú le \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Aitheantas aoi\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Baile\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir le hainm an chomhaid atá ag teacht isteach.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ainm fillteáin neamhbhailí.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ainm neamhbhailí.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta an athraithe dheireanaigh anaithnid\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Athraithe\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Bog\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Bog go{target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ainm\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Ní fhéadfaidh ainmneacha a bheith níos mó ná 64 carachtar ar fhad.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ní féidir ainmneacha a bheith folamh.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ní féidir ainmneacha a chríochnú le \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ní mór ainmneacha a bheith ag tosú le ponc.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Fillteán nua\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ainm fillteáin nua\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Níl aon chomhaid istigh anseo\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Níor aimsíodh aon chomhad a tháinig le do scagaire.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Gan comhaid meaitseála\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Cuir isteach ainm ina bhfuil 2 charachtar ar a laghad.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"le déanaí\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh na boscaí seiceála go léir\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Roghnaigh gach iontráil\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh na comhaid uile atá ann cheana\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Roghnaigh iontráil\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Roghnaigh an ró do {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Méid\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Léim %n comhad\", \"Léim %n comhaid\", \"Léim %n comhaid\", \"Léim %n comhaid\", \"Léim %n comhaid\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Scipeáil an comhad seo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Cuir isteach ainm\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Cealaigh\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Uaslódáil roinnt ábhair nó sioncronaigh le do ghléasanna!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhaid choimhlinteacha ann a athscríobh freisin.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach sa fhillteán atá ann cheana féin agus déantar réiteach coinbhleachta athchúrsach.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Is é {nickname} an ainm atá ort faoi láthair.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Níl aitheantas tugtha duit faoi láthair.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ní féidir leat an t-ainm a fhágáil folamh.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Ní mór duit réiteach coinbhleachta amháin ar a laghad a roghnú\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú le leanúint ar aghaidh.\"] }] }, { \"language\": \"gl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"«{char}» non está permitido no nome dun cartafol.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"«{char}» non está permitido dentro dun nome.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"«{extension}» non é un nome permitido.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"«{segment}» é un nome reservado e non está permitido para nomes de cartafoles.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"«{segment}» é un nome reservado e non está permitido.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ficheiro en conflito\", \"%n ficheiros en conflito\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ficheiro en conflito en {dirname}\", \"%n ficheiros en conflito en {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os ficheiros\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operación\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escoller\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escoller {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escoller %n ficheiro\", \"Escoller %n ficheiros\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar en {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Non foi posíbel crear o novo cartafol\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Non foi posíbel cargar os axustes dos ficheiros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Non foi posíbel cargar as vistas dos ficheiros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear un directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Introduza o seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Produciuse un fallo ao definir o alcume.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os ficheiros e cartafoles que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Os ficheiros e cartafoles que modificou recentemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar a lista de ficheiros\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Os nomes de cartafol non deben rematar en «{extension}».\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación do convidado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"O nome de cartafol non é válido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome incorrecto\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover cara a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes poden ter unha lonxitude máxima de 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Os nomes non deben estar baleiros.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Os nomes non deben rematar en «{extension}».\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Os nomes non deben comezar cun punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Novo cartafol\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome do cartafol\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Aquí non hai ficheiros\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Non se atopou ningún ficheiro que coincida co filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Non hai ficheiros coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Introduza un nome con polo menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas as caixas\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar a entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccionar a fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omitir %n ficheiro\", \"Omitir %n ficheiros\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este ficheiro\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar o nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Enviar algún contido ou sincronizalo cos seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, todos os ficheiros conflitivos dentro dela tamén serán sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e realízase unha resolución recursiva de conflitos.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Vde. está identificado actualmente como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Vde. non está identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Vde. non pode deixar o nome baleiro.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"É necesario escoller polo menos unha solución de conflito\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"É necesario seleccionar polo menos unha versión de cada ficheiro para continuar.\"] }] }, { \"language\": \"hr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"Znak „{char}” nije dopušten u nazivu mape.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"Znak „{char}” nije dopušten u nazivu.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nije dopušten u nazivu.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" je rezervirana riječ i nije dopušten u nazivu mape.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" je rezervirana riječ i nije dopušten.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"Sukobljava se %n datoteka\", \"Sukobljava se %n datoteke\", \"Sukobljava se %n datoteke\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n sukob datoteka u {dirname}\", \"%n sukoba datoteka u {dirname}\", \"%n sukoba datoteka u {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Sve datoteke\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Odustani\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Odustani od cijele operacije\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Odaberi\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Odaberi {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Odaberi %n datoteku\", \"Odaberi %n datoteka\", \"Odaberi %n datoteke\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdi\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Nastavi\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj u {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nije moguće stvoriti novu mapu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nije moguće učitati postavke datoteka\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nije moguće učitati prikaze datoteka\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Stvori mapu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Odabir trenutačnog prikaza\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Unesite vaše ime\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Postojeća verzija\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Neuspjelo postavljanje nadimka.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Ovdje se prikazuju datoteke i mape koje ste označili kao favoriti.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Ovdje se prikazuju datoteke i mape koje ste nedavno ažurirali.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtriranje liste datoteka\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nazivi mapa ne smiju završiti sa \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikacija gosta\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Naslovna\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ako odaberete obje verzije, dolaznoj datoteci bit će dodan broj u nazivu.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neispavan naziv mape.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neispravan naziv.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nepoznat datum zadnjeg ažuriranja\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ažurirano\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premjesti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premjesti u {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naziv\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nazivi mogu imati najviše 64 znaka.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nazivi ne smiju biti prazni.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nazivi ne smiju završiti sa \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nazivi ne smiju započinjati točkom.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova mapa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novi naziv mape\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova verzija\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ovdje nema datoteka\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nisu pronađene datoteke koje odgovaraju vašem filtru.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nema odgovarajućih datoteka.\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Unesite naziv s najmanje 2 znaka.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedavno\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označi sve potvrdne okvire\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Označi sve stavke\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi sve postojeće datoteke\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi sve nove datoteke\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Označi stavku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Označi red za{nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veličina\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Preskoči %n datoteku\", \"Preskoči %n datoteke\", \"Preskoči %n datoteke\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskoči ovu datoteku\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Pošalji naziv\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Poništi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Prenesite neki sadržaj ili sinkronizirajte sa svojim uređajima!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kada je odabrana dolazna mapa, sve datoteke unutar nje koje su u sukobu također će biti prepisane.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kada je odabrana dolazna mapa, sadržaj se upisuje u postojeću mapu i provodi se rekurzivno rješavanje sukoba.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Koje datoteke želite zadržati?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Trenutno ste identificirani kao {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Trenutno niste identificirani.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ne možete ostaviti naziv prazan.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Morate odabrati barem jedno rješenje sukoba\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Morate odabrati barem jednu verziju svake datoteke kako biste nastavili.\"] }] }, { \"language\": \"hu_HU\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"A(z) „{char}” nem engedélyezett egy mappanévben.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"A(z) „{char}” nem engedélyezett egy névben.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"A(z) „{extension}” nem engedélyezett név.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"A(z) „{segment}” foglalt név, és nem engedélyezett a mappanevekben.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"A(z) „{segment}” foglalt név, és nem engedélyezett.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ütköző fájl\", \"%n ütköző fájl\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ütköző fájl ebben: {dirname}\", \"%n ütköző fájl ebben: {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Összes fájl\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Egész művelet megszakítása\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Kiválasztás\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} kiválasztása\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n fájl kiválasztása\", \"%n fájl kiválasztása\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Megerősítés\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Folytatás\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Másolás\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Másolás ide: {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nem lehet létrehozni az új mappát\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nem lehet betölteni a fájlok beállításait\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nem lehet betölteni a fájlok nézeteit\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Mappa létrehozása\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Jelenlegi nézet választója\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Adja meg a nevét\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Meglévő verzió\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nem sikerült a becenév beállítása.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Kedvencek\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"A kedvencként megjelölt fájlok és mappák itt jelennek meg.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"A nemrég módosított fájlok és mappák itt jelennek meg.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fájllista szűrése\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"A mappanevek nem végződhetnek ezzel: „{extension}”.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Vendégazonosítás\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Kezdőlap\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ha mindkét verziót választja, akkor a bejövő fájl nevéhez egy szám lesz hozzáfűzve.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Érvénytelen mappanév.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Érvénytelen név.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Legutóbbi módosítás ideje ismeretlen\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Módosítva\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Áthelyezés\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Áthelyezés ide: {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Név\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"A nevek legfeljebb 64 karakter hosszúak lehetnek.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"A nevek nem lehetnek üresek.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"A nevek nem végződhetnek ezzel: „{extension}”.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"A nevek nem kezdődhetnek ponttal.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Új mappa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Új mappa neve\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Új verzió\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Itt nincsenek fájlok\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nincs a szűrési feltételeknek megfelelő fájl.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nincs ilyen fájl\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Legalább 2 karakteres nevet adjon meg.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Legutóbbi\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Összes jelölőmező bepipálása\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Összes bejegyzés kijelölése\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Összes meglévő fájl kijelölése\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Összes új fájl kijelölése\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Bejegyzés kijelölése\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Válasszon sort a következőnek: {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Méret\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n fájl kihagyása\", \"%n fájl kihagyása\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Fájl kihagyása\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Név beküldése\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Visszavonás\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Töltsön fel tartalmat, vagy szinkronizáljon az eszközeivel!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ha egy bejövő mappa van kijelölve, akkor a benne lévő ütköző fájlok is felül lesznek írva.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ha egy bejövő mappa van kijelölve, akkor a tartalom a meglévő mappába lesz írva, és rekurzív ütközéskezelés lesz végezve.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mely fájlokat akarja megtartani?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Jelenleg ekként van azonosítva: {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Jelenleg nincs azonosítva.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"A nevet nem hagyhatja üresen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Legalább egy ütközéskezelési megoldást kell választania\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"A folytatáshoz az összes fájlnak legalább egy verzióját ki kell választania.\"] }] }, { \"language\": \"hy\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} սխալ թղթապանակի անվանում է\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} համարվում է անթույլատրելի թղթապանակի անվանում\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"/ չի թույլատրվում օգտագործել անվանման մեջ\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Բոլոր ֆայլերը\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Ընտրել\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Ընտրել {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Ընտրել %n ֆայլ\", \"Ընտրել %n ֆայլեր\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Պատճենել\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Պատճենել {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Չստացվեց ստեղծել նոր թղթապանակը\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Չստացվեց բեռնել ֆայլի կարգավորումները\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Չստացվեց բեռնել ֆայլերի դիտումները\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Ստեղծել դիրեկտորիա\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Ընթացիկ դիտման ընտրիչ\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Նախընտրելիներ\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք դուք նշել եք որպես նախընտրելիներ:\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք վերջերս փոխել եք:\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Ֆիլտրել ֆայլերի ցուցակը\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Թղթապանակի անունը չի կարող դատարկ լինել:\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Սկիզբ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Փոփոխված\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Տեղափոխել\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Տեղափոխել {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Անուն\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Նոր\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Նոր թղթապանակ\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Նոր թղթապանակի անվանում\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Այստեղ չկան ֆայլեր\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ձեր ֆիլտրին համապատասխանող ֆայլերը չեն գտնվել:\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Չկան համապատասխան ֆայլեր\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Վերջին\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Ընտրել բոլոր գրառումները\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Ընտրել բոլոր գրառումը\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Ընտրեք տողը {nodename}-ի համար \"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Չափ\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ետարկել\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ներբեռնեք որոշ բովանդակություն կամ համաժամացրեք այն ձեր սարքերի հետ:\"] }] }, { \"language\": \"id\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" tidak diizinkan di dalam nama folder.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" tidak diizinkan di dalam nama.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" bukan nama yang diizinkan.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" adalah nama yang dicadangkan dan tidak diizinkan untuk nama folder.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" adalah nama yang dicadangkan dan tidak diizinkan.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n konflik file\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konflik file di {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Semua berkas\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Batal\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Batalkan seluruh operasi\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pilih\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pilih {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pilih %n file\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Konfirmasi\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Salin\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Salin ke {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Tidak dapat membuat folder baru\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tidak dapat memuat pengaturan file\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tidak dapat memuat tampilan file\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Buat direktori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Pemilih tampilan saat ini\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Masukkan nama Anda\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Gagal menetapkan nama panggilan.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorit\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Berkas dan folder yang Anda tandai sebagai favorit akan muncul di sini.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Berkas dan folder yang Anda ubah baru-baru ini akan muncul di sini.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Saring daftar berkas\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nama folder tidak boleh diakhiri dengan \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikasi tamu\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Beranda\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, file yang masuk akan ditambahkan angka pada namanya.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nama folder tidak valid.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nama tidak valid.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal modifikasi terakhir tidak diketahui\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Diubah\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Pindahkan\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Pindahkan ke {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nama\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Panjang nama maksimal 64 karakter.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nama tidak boleh kosong.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nama tidak boleh diakhiri dengan \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nama tidak boleh diawali dengan titik.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Folder baru\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nama folder baru\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tidak ada berkas di sini\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Tidak ada berkas yang cocok dengan penyaringan Anda.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Tidak ada berkas yang cocok\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Silakan masukkan nama dengan minimal 2 karakter.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Terkini\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Pilih semua entri\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua file yang ada\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua file baru\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Pilih entri\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Pilih baris untuk {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Ukuran\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Lewati %n file\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Lewati file ini\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Kirim nama\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Tidak jadi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Unggah beberapa konten atau sinkronkan dengan perangkat Anda!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Saat folder yang masuk dipilih, semua file yang konflik di dalamnya juga akan ditimpa.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Saat folder yang masuk dipilih, konten ditulis ke dalam folder yang ada dan penyelesaian konflik rekursif dilakukan.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"File mana yang ingin Anda pertahankan?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Saat ini Anda teridentifikasi sebagai {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Saat ini Anda tidak teridentifikasi.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Anda tidak dapat membiarkan nama kosong.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Anda perlu memilih setidaknya satu solusi konflik\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda perlu memilih setidaknya satu versi dari setiap file untuk melanjutkan.\"] }] }, { \"language\": \"is\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" er ógilt möppuheiti.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" er ekki leyfilegt möppuheiti'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er er ekki leyfilegt innan í skráarheiti.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Allar skrár\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Veldu\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Veldu {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Veldu %n skrá\", \"Veldu %n skrár\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Afrita\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Afrita í {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Get ekki búið til nýju möppuna\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tókst ekki að hlaða inn stillingum skráa\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tókst ekki að hlaða inn sýnum skráa\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Búa til möppu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Núverandi val sýnar\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Eftirlæti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Skrár og möppur sem þú merkir sem eftirlæti birtast hér.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Skrár og möppur sem þú breyttir nýlega birtast hér.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Sía skráalista\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Möppuheiti má ekki vera tómt.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Heim\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Breytt\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Færa\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Færa í {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Heiti\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ný mappa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Heiti nýrrar möppu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Engar skrár hér\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Engar skrár fundust sem passa við síuna.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Engar samsvarandi skrár\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nýlegt\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Velja allar færslur\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Velja færslu\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Veldu röðina fyrir {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Stærð\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Afturkalla\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Sendu inn eitthvað efni eða samstilltu við tækin þín!\"] }] }, { \"language\": \"it\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`\"{char}\" non è consentito all'interno di un nome di cartella.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`\"{char}\" non è consentito all'interno di un nome.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" non è un nome consentito'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" è un nome riservato e non consentito per i nomi delle cartelle.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" è un nome riservato e non consentito.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n file in conflitto\", \"%n file in conflitto\", \"%n file in conflitto\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n file in conflitto in {dirname}\", \"%n file in conflitto in {dirname}\", \"%n file in conflitto in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tutti i file\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Scegli\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Scegli {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Scegli %n file\", \"Scegli %n file\", \"Scegli %n file\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Conferma\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copia\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copia in {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Impossibile creare la nuova cartella\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Impossibile caricare le impostazioni dei file\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Impossibile caricare le visualizzazioni dei file\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crea cartella\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selettore della vista attuale\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Inserisci il tuo nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Impossibile impostare lo pseudonimo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Preferiti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"I file e le cartelle contrassegnate come preferite saranno mostrate qui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"I file e le cartelle che hai modificato di recente saranno mostrate qui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtra l'elenco dei file\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['I nomi delle cartelle devono finire con \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificazione ospiti\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, al nome del file in arrivo verrà aggiunto un numero.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nome cartella non valido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome non valido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data di ultima modifica sconosciuta\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificato\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Sposta\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Sposta in {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"I nomi dovrebbero avere una lunghezza massima di 64 caratteri.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"I nomi non devono essere vuoti.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['I nomi devono finire con \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"I nomi non possono iniziare con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nuova cartella\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nome della nuova cartella\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nessun file qui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nessun file che corrisponde al tuo filtro è stato trovato.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nessun file corrispondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Digita un nome con almeno 2 caratteri.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Scegli tutte le voci\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleziona la voce\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleziona la riga per {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Dimensioni\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Salta %n file\", \"Salta %n file\", \"Salta %n file\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Salta questo file\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Invia nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Annulla\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Carica qualche contenuto o sincronizza con i tuoi dispositivi!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno saranno sovrascritti.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi conservare?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sei attualmente identificato come {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Attualmente non sei identificato.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Non puoi lasciare il nome vuoto.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Devi scegliere almeno una soluzione al conflitto\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Per continuare, è necessario selezionare almeno una versione di ciascun file.\"] }] }, { \"language\": \"ja_JP\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['フォルダー名に \"{char}\" を使用することはできません。'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['名前に \"{char}\" を使用することはできません。'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" は許可された名前ではありません。'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" は予約名のため、使用できません。'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" は予約名のため、使用できません。'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%nファイルが競合しています\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%nディレクトリ{dirname}内のファイル競合\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"すべてのファイル\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセル\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選択\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} を選択\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n 個のファイルを選択\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"確認\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"続行\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"コピー\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target} にコピー\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"新しいフォルダーを作成できませんでした\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"ファイル設定を読み込めませんでした\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"ファイルビューを読み込めませんでした\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ディレクトリを作成\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"現在のビュー選択\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"名前を入力してください\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"現行バージョン\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"ニックネームの設定に失敗しました。\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"お気に入り\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"お気に入りとしてマークしたファイルとフォルダーがここに表示されます。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"最近変更したファイルとフォルダーがここに表示されます。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"ファイルのリストをフィルター\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['フォルダー名の末尾に \"{extension}\" を使用できません。'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"ゲスト識別\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"ホーム\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイル名には番号が追加されます。\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"フォルダー名が無効です。\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"無効な名前です。\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"変更済み\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target} に移動\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名前\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"名前は最大64文字です。\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"名前は空にできません。\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['名前の末尾に \"{extension}\" を使用できません。'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"ドットで始まる名前は使用できません。\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新しいフォルダー\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新しいフォルダーの名前\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"新バージョン\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"ファイルがありません\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"フィルターに一致するファイルは見つかりませんでした。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"一致するファイルはありません\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"名前は2文字以上を入力してください。\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべてのチェックボックスを選択\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"すべてのエントリを選択\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"既存のファイルをすべて選択\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"エントリを選択\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} の行を選択\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"サイズ\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n 個のファイルをスキップ\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"このファイルをスキップ\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"名前を送信する\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"元に戻す\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"コンテンツをアップロードするか、デバイスと同期してください!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダーを選択すると、そのフォルダー内の競合ファイルも上書きされます。\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダーを選択すると、内容は既存のフォルダーに書き込まれ、再帰的な競合解決が実行されます。\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを残しますか?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"現在、{nickname}として識別されています。\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"現在あなたは識別されていません。\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"名前を空にすることはできません。\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"少なくとも1つの競合ソリューションを選択する必要があります\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルのバージョンを少なくとも1つ選択する必要があります。\"] }] }, { \"language\": \"ko\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"문자 '{char}'은(는) 폴더 이름에 사용할 수 없습니다.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"문자 '{char}'은(는) 이름에 사용할 수 없습니다.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"'{extension}'은(는) 사용 불가능한 이름입니다.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"'{segment}'은(는) 예약된 이름이므로 폴더 이름으로 사용할 수 없습니다.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"'{segment}'은(는) 예약된 이름이므로 사용할 수 없습니다.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n개의 파일이 충돌함\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname}에서 %n개의 파일이 충돌함\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"모든 파일\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업 취소\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"선택\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} 선택\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"파일 %n개 선택\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"확인\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"계속\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"복사\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target}(으)로 복사\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"새 폴더를 만들 수 없음\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"파일 설정을 불러오지 못함\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"파일 보기를 불러오지 못함\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"디렉토리 만들기\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"현재 보기 방식\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"이름을 입력하세요\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"기존 버전\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"닉네임을 설정하지 못했습니다.\\n \"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"즐겨찾기\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"즐겨찾기 한 파일 및 폴더가 이곳에 표시됩니다.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"최근 수정된 파일 및 폴더가 이곳에 표시됩니다.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"파일 목록 필터링\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"폴더 이름은 '{extension}'(으)로 끝날 수 없습니다.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"게스트 확인\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"홈\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"두 버전을 모두 선택할 경우 새로 추가되는 파일의 이름에 숫자가 붙게 됩니다.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"잘못된 폴더 이름입니다.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"잘못된 이름입니다. \"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정일 알 수 없음\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"수정됨\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"이동\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target}(으)로 이동\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"이름\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"이름은 최대 64글자까지 지정할 수 있습니다.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"이름은 비어 있을 수 없습니다.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"이름은 '{extension}'(으)로 끝날 수 없습니다.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"이름은 마침표로 시작될 수 없습니다.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"새 폴더\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"새 폴더명\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"새로운 버전\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"파일이 없습니다\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"선택된 필터에 해당하는 파일이 없습니다.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"해당하는 파일 없음\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"최소 두 글자 이상의 이름을 입력해주세요.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"최근\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"체크박스 모두 선택\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"모두 선택\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"기존 파일 모두 선택\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"새 파일 모두 선택\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"항목 선택\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename}의 행 선택\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"크기\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n개 파일 건너뛰기\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"이 파일 건너뛰기\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"이름 제출\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"되돌리기\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"기기에서 파일을 업로드 또는 동기화하세요!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"새 폴더를 선택할 경우, 해당 폴더 내의 충돌 파일들도 덮어쓰기 됩니다.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"새 폴더를 선택할 경우 내용물이 기존 폴더에 기록되며 재귀적 충돌 해결이 수행됩니다.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일들을 유지하시겠습니까?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"{nickname}(으)로 인증된 상태 입니다.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"현재 인증 정보가 없습니다.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"이름은 비워 둘 수 없습니다. \"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"최소한 하나의 충돌 해결 방안을 선택해야 합니다.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다.\"] }] }, { \"language\": \"lb\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} ass en ongëlteg Dossier\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} ass net en erlaabten Dossiernumm\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ass net an engem Dossier Numm erlaabt'] }, { \"msgid\": \"All files\", \"msgstr\": [\"All Dateien\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Wielt\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Wielt {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Wielt %n Fichieren\", \"Wielt %n Fichier\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopie\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopie op {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Konnt den neien Dossier net erstellen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Konnt d'Dateienastellungen net lueden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Konnt d'Dateien net lueden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Erstellt Verzeechnes\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuell Vue selector\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien an Ordner, déi Dir als Favorit markéiert, ginn hei gewisen\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien an Ordner déi Dir viru kuerzem geännert hutt ginn hei op\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter Datei Lëscht\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Dossier Numm kann net eidel sinn\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Wëllkomm\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geännert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Plënne\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Plënneren {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Numm\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nei\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neien dossier\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neien dossier numm\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Kee fichier hei\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Kee fichier deen äre filter passt gouf fonnt\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keng passende dateien\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Rezent\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Wielt all entréen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Wielt entrée\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Wielt d'zeil fir {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Gréisst\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Undoen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Luet en inhalt erop oder synchroniséiert mat ären apparater\"] }] }, { \"language\": \"lo\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ບໍ່ອະນຸຍາດໃຫ້ມີຢູ່ໃນຊື່ໂຟນເດີ.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"{char}\" ພາຍໃນຊື່.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ບໍ່ແມ່ນຊື່ທີ່ໄດ້ຮັບອະນຸຍາດ.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ເປັນຊື່ໂຟນເດີ.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ໄດ້ຮັບອະນຸຍາດ.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"ໄຟລ໌ຂັດກັນ %n ລາຍການ\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"ໄຟລ໌ຂັດກັນ %n ລາຍການໃນ {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"ໄຟລ໌ທັງໝົດ\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"ຍົກເລີກ\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"ຍົກເລີກການດຳເນີນການທັງໝົດ\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"ເລືອກ\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"ເລືອກ {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"ເລືອກ %n ໄຟລ໌\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"ຢືນຢັນ\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"ດຳເນີນການຕໍ່\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"ຄັດລອກ\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"ຄັດລອກໄປທີ່ {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"ບໍ່ສາມາດສ້າງໂຟນເດີໃໝ່ໄດ້\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"ບໍ່ສາມາດໂຫຼດການຕັ້ງຄ່າໄຟລ໌ໄດ້\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"ບໍ່ສາມາດໂຫຼດມຸມມອງໄຟລ໌ໄດ້\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ສ້າງໄດເຣັກທໍຣີ\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"ຕົວເລືອກມຸມມອງປັດຈຸບັນ\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"ປ້ອນຊື່ຂອງທ່ານ\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"ເວີຊັນທີ່ມີຢູ່\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"ຕັ້ງຊື່ຫຼິ້ນບໍ່ສຳເລັດ.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"ລາຍການທີ່ມັກ\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານໝາຍວ່າເປັນລາຍການທີ່ມັກຈະສະແດງຢູ່ບ່ອນນີ້.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານແກ້ໄຂລ່າສຸດຈະສະແດງຢູ່ບ່ອນນີ້.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"ກັ່ນຕອງລາຍການໄຟລ໌\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['ຊື່ໂຟນເດີຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"ການລະບຸຕົວຕົນຂອງແຂກ\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"ໜ້າຫຼັກ\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"ຖ້າທ່ານເລືອກທັງສອງເວີຊັນ, ໄຟລ໌ທີ່ເຂົ້າມາຈະມີຕົວເລກເພີ່ມໃສ່ຊື່ຂອງມັນ.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"ຊື່ໂຟນເດີບໍ່ຖືກຕ້ອງ.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"ຊື່ບໍ່ຖືກຕ້ອງ.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"ບໍ່ຮູ້ວັນທີແກ້ໄຂລ່າສຸດ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"ແກ້ໄຂເມື່ອ\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"ຍ້າຍ\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"ຍ້າຍໄປທີ່ {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"ຊື່\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"ຊື່ອາດມີຄວາມຍາວສູງສຸດ 64 ຕົວອັກສອນ.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"ຊື່ຕ້ອງບໍ່ຫວ່າງເປົ່າ.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['ຊື່ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"ຊື່ຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຈຸດ.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"ໃໝ່\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"ໂຟນເດີໃໝ່\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"ຊື່ໂຟນເດີໃໝ່\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"ເວີຊັນໃໝ່\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"ບໍ່ມີໄຟລ໌ຢູ່ບ່ອນນີ້\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"ບໍ່ພົບໄຟລ໌ທີ່ກົງກັບການກັ່ນຕອງຂອງທ່ານ.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"ບໍ່ມີໄຟລ໌ທີ່ກົງກັນ\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"ກະລຸນາປ້ອນຊື່ທີ່ມີຢ່າງໜ້ອຍ 2 ຕົວອັກສອນ.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"ລ່າສຸດ\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"ເລືອກກ່ອງໝາຍທັງໝົດ\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"ເລືອກທຸກລາຍການ\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"ເລືອກໄຟລ໌ທີ່ມີຢູ່ທັງໝົດ\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"ເລືອກລາຍການ\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"ເລືອກແຖວສຳລັບ {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"ຂະໜາດ\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"ຂ້າມ %n ໄຟລ໌\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"ຂ້າມໄຟລ໌ນີ້\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"ສົ່ງຊື່\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"ເອົາຄືນ\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"ອັບໂຫຼດເນື້ອຫາ ຫຼື ຊິງຄ໌ກັບອຸປະກອນຂອງທ່ານ!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ໄຟລ໌ໃດໆທີ່ຂັດກັນພາຍໃນໂຟນເດີນັ້ນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟນເດີທີ່ມີຢູ່ ແລະ ຈະມີການແກ້ໄຂຂໍ້ຂັດແຍ່ງແບບຕໍ່ເນື່ອງ.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"ຕອນນີ້ທ່ານຖືກລະບຸວ່າເປັນ {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"ຕອນນີ້ທ່ານຍັງບໍ່ໄດ້ຖືກລະບຸຕົວຕົນ.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"ທ່ານບໍ່ສາມາດປະຊື່ໃຫ້ຫວ່າງເປົ່າໄດ້.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກວິທີແກ້ໄຂຂໍ້ຂັດແຍ່ງຢ່າງໜ້ອຍໜຶ່ງຢ່າງ\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງເວີຊັນຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່.\"] }] }, { \"language\": \"lt_LT\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"„{char}“ negalima naudoti aplanko pavadinime.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ negalima naudoti vardo sudėtyje.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ nėra leidžiamas vardas.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ yra rezervuotas vardas, kurio negalima naudoti aplankų pavadinimuose.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ yra rezervuotas vardas, todėl jo naudoti negalima.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n failo konfliktas\", \"%n failų konfliktas\", \"%n failų konfliktas\", \"%n failų konfliktas\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n failo konfliktas {dirname}\", \"%n failų konfliktas {dirname}\", \"%n failų konfliktas {dirname}\", \"%n failų konfliktas {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Visi failai\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Atsisakyti\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Atsisakyti visos operacijos\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pasirinkti\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pasirinkti {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pasirinkti %n failą\", \"Pasirinkti %n failus\", \"Pasirinkti %n failų\", \"Pasirinkti %n failą\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Patvirtinti\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Tęsti\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopijuoti\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopijuoti į {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nepavyko sukurti naujo aplanko\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepavyko įkelti failų nustatymų\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepavyko įkelti failų peržiūrų\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Sukurti katalogą\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Dabartinis peržiūros pasirinkimas\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Įrašykite savo vardą\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Esama versija\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepavyko nustatyti slapyvardžio\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Populiariausi\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Failai ir aplankai, kuriuos pažymėsite kaip mėgstamiausius, bus rodomi čia.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Čia bus rodomi failai ir aplankai, kuriuos neseniai pakeitėte.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtruoti failų sąrašą\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Aplankų pavadinimai neturi baigtis simboliu „{extension}“.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Svečio identifikacija\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Pradžia\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jei pasirinksite abi versijas, prie gaunamo failo pavadinimo bus pridėtas numeris.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Netinkamas aplanko pavadinimas.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Netinkamas pavadinimas.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Paskutinio atnaujinimo data nežinoma\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Pakeista\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Perkelti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Perkelti į {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Vardas\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Vardų ilgis negali viršyti 64 simbolių.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Pavadinimai negali būti tušti.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Vardai neturi baigtis simboliu „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Vardai negali prasidėti tašku.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Naujas\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Naujas aplankas\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Naujas aplanko pavadinimas\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nauja versija\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Čia failų nėra\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nepavyko rasti failų pagal filtro nustatymus\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nėra atitinkančių failų\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Įrašykite vardą iš mažiausiai dviejų ženklų.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nauji\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pažymėti visus langelius\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Žymėti visus įrašus\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pažymėti visus esamus failus\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pažymėti visus naujus failus\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Žymėti įrašą\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Pasirinkite eilutę {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Dydis\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Praleisti %n failą\", \"Praleisti %n failus\", \"Praleisti %n failų\", \"Praleisti %n failą\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Praleisti šį failą\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Pateikti pavadinimą\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Atšaukti\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Įkelkite turinio arba sinchronizuokite su savo įrenginiais!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Pasirinkus įeinančių failų aplanką, jame esantys failai, su kuriais kyla konfliktas, taip pat bus perrašyti.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Pasirinkus įeinančių failų aplanką, jo turinys įrašomas į esamą aplanką ir atliekamas rekursyvus konfliktų sprendimas.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Kokius failus norite išsaugoti?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Šiuo metu esate identifikuotas kaip {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Šiuo metu nesate identifikuotas.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Negalite palikti tuščio vardo lauko.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Turite pasirinkti bent vieną konflikto sprendimo būdą\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Norėdami tęsti, turite pasirinkti bent vieną kiekvieno failo versiją.\"] }] }, { \"language\": \"lv\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" nav derīgs mapes nosaukums.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nav atļauts mapes nosaukums'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" nav atļauts mapes nosaukuma izmantošanā.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Visas datnes\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izvēlieties\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izvēlieties {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izvēlēties %n datņu\", \"Izvēlēties %n datni\", \"Izvēlēties %n datnes\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopēt\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopēt uz {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nevarēja izveidot jaunu mapi\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nevarēja ielādēt datņu iestatījumus\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nevarēja ielādēt datņu apskatījumus\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Izveidot direktoriju\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Pašreizēja skata atlasītājs\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorīti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Šeit parādīsies datnes un mapes, kas tiks atzīmētas kā iecienītas.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Šeit parādīsies datnes un mapes, kuras nesen tika izmainītas.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Atlasīt datņu sarakstu\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mapes nosaukums nevar būt tukšs.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Sākums\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Izmaninīta\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Pārvietot\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Pārvietot uz {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nosaukums\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Jauns\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Jauna mape\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Jaunas mapes nosaukums\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Šeit nav datņu\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Netika atrasta neviena datne, kas atbilst atlasei.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nav atbilstošu datņu\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nesenās\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Atlasīt visus ierakstus\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Atlasīt ierakstu\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Atlasīt rindu {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Izmērs\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Atsaukt\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Augšupielādē kādu saturu vai sinhronizē savās iekārtās!\"] }] }, { \"language\": \"mk\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" не е дозволен во име на папка.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не е дозволено во име.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" не е дозволено име.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" е резервирано име и не е дозволено за име на папка.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" е резервирано име и не е дозволено.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n конфликт со датотекa\", \"%n конфликти со датотеки\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n конфликт со датотека во {dirname}\", \"%n конфликти со датотеки vo {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Сите датотеки\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Прекини ја целата операција\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Избери\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Избери {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Избери %n датотека\", \"Избери %n датотеки\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Потврди\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжи\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копирај\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копирај во {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Неможе да се креира нова папка\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Неможе да се вчиаат параметрите за датотеките\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Неможе да се вчитаат погледите за датотеките\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Креирај папка\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Избирач на тековен приказ\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Внесете го вашето име\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Моментална верзија\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Неуспешно поставување прекар.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Фаворити\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Датотеките и папките кој ќе ги означите за омилени ќе се појават овде.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Датотеките и папките кој неодамна сте ги измениле ќе се појават овде.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Филтрирај листа на датотеки\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Имињата на папките неможе да завршуваат со \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Гостинска идентификација\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Почетна\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако ги избереш двете верзии, влезната датотека ќе добие број додаден на нејзиното име.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Невалидно име на папка.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Невалидно име.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Датумот на последна измена е непознат\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Променето\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Премести\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Премести во {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Име\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Имињата можат да бидат најмногу со 64 карактери.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имињата неможе да бидат празни.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Имињата неможе да завршуваат со \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имињата неможе да започнуваат со точка.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Нова\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Нова папка\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ново име на папка\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Овде нема датотеки\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Не се пронајдени датотеки што одговараат на вашиот филтер.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нема датотеки што се совпаѓаат\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Внесете име со најмалку 2 карактери.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Неодамнешни\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Избери ги сите полиња за избор\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Изберете ги сите записи\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изберете ги сите постоечки датотеки\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изберете ги сите нови датотеки\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Избери запис\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Избери ред за {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Големина\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Прескокни %n датотека\", \"Прескокни %n датотеки\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескокни ја оваа датотека\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Испрати име\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Врати\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Прикачи содржина или синхронизирај со ваши уреди!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Кога е избрана влезна папка, сите конфликтни датотеки во неа исто така ќе бидат препишани.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Кога е избрана влезна папка, содржината се запишува во постоечката папка и се извршува рекурсивно решавање на конфликти.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Кој датотеки сакаш да ги зачуваш?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Моментално сте идентификувани како {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Моментално не сте идентификувани.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Не можете да го оставите името празно.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Треба да избереш најмалку едно решение за конфликт\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба да избереш најмалку една верзија за секоја датотека за да продолжи.\"] }] }, { \"language\": \"ms_MY\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" adalah nama folder yang tidak sesuai '] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nama folder yang tidak dibenarkan'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" tidak dibenarkan dalam nama folder'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Semua fail\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pilih\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pilih {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pilih fail %n\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"menyalin\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"menyalin ke {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Tidak dapat mewujudkan folder baharu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tidak dapat memuatkan tetapan fail\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tidak dapat memuatkan paparan fail\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"mewujudkan direktori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"pemilih pandangan semasa\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Pilihan\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Fail dan folder yang anda tanda sebagai pilihan akan dipaparkan di sini.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Fail dan folder yang anda telah ubah suai baru-baru ini dipaparkan di sini.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Menapis senarai fail\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Nama folder tidak boleh kosong.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Utama\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ubah suai\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"pindah\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"pindah ke {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nama\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Folder Baharu\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nama folder baharu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tiada fail di sini\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Tiada fail yang sepadan dengan tapisan anda.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Tiada fail yang sepadan\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"baru-baru ini\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Pilih semua entri\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Pilih entri\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"memilih baris {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Saiz\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"buat asal\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Muat naik beberapa kandungan atau selaras dengan peranti anda!\"] }] }, { \"language\": \"nb_NO\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" er ikke tillatt i et navn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" er ikke et tillatt navn.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» er ikke et gyldig mappenavn.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» er ikke et tillatt mappenavn.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" er et reservert navn og er ikke tillatt.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er ikke tillatt inne i et mappenavn.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Velg\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Velg {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Velg %n fil\", \"Velg %n filer\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopier til {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunne ikke opprette den nye mappen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kunne ikke laste filinnstillinger\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunne ikke laste filvisninger\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Opprett mappe\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Nåværende visningsvelger\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Skriv inn navnet ditt\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kunne ikke lagre kallenavnet.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer og mapper du markerer som favoritter vil vises her.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer og mapper du nylig har endret, vil vises her.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer filliste\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mappenavn kan ikke være tomt.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gjesteidentifikasjon\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hjem\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ugyldig navn.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifisert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flytt\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flytt til {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Navn\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Navn kan ikke være tomme.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Navn kan ikke ende med \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Navn kan ikke starte med et punktum.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mappe\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nytt mappenavn\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ingen filer her\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ingen filer funnet med ditt filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ingen filer samsvarer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Vennligst angi et navn som har minst 2 tegn.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nylige\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Velg alle oppføringer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Velg oppføring\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Velg raden for {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Størrelse\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Bekreft navn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Angre\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Last opp innhold eller synkroniser med enhetene dine!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du er akkurat nå identifisert som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du er akkurat nå ikke identifisert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan ikke la navnet være blankt.\"] }] }, { \"language\": \"nl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"{char}is niet toegestaan in een mapnaam.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" kan niet gebruikt worden in de benaming.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" is geen toegestane naam.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" is een gereserveerde naam en niet toegestaan in mapnamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" is een gereserveerde naam en niet toegestaan.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n bestanden conflicteren\", \"%nbestand bestanden conflicteren\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n bestand conflicteerd in {dirname}\", \"%nbestanden conflicteert in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle bestanden\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuleren\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuleer de hele bewerking\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Kiezen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Kies {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Kies %n bestand\", \"Kies %n bestanden\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bevestigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Doorgaan\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiëren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiëren naar {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kon de nieuwe map niet maken\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kon de bestandsinstellingen niet laden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kon de bestandsweergaves niet laden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Map aanmaken\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Huidige weergave keuze\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Voer je naam in\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Bestaande versie\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kon geen bijnaam instellen.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorieten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Bestanden en mappen die je als favoriet markeert, verschijnen hier.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Bestanden en mappen die je recentelijk hebt gewijzigd, verschijnen hier.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Bestandslijst filteren\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Mapnamen mogen niet eindigen op \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gastenidentificatie\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Thuis\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Als u beide versies selecteert wordt een nummer toegevoegd aan de naam van het binnenkomende bestand.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ongeldige mapnaam.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ongeldige naam.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Laatste wijzigingsdatum onbekend\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Gewijzigd\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verplaatsen\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Verplaatsen naar {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naam\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen mogen maximaal 64 tekens lang zijn.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen mogen niet leeg zijn.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen mogen niet eindigen met \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen mogen niet begonnen met een punt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nieuw\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nieuwe map\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nieuwe mapnaam\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nieuwe versie\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Geen bestanden hier\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Geen bestanden gevonden die voldoen aan je filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Geen overeenkomende bestanden\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Voer een naam in met minimaal 2 tekens.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recent\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecteer alle aanvinkopties\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle invoer selecteren\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecteer alle bestaande bestanden\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecteer alle nieuwe bestanden\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Invoer selecteren\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecteer de rij voor {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Grootte\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Sla %n bestand over\", \"Sla %n bestanden over\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Sla dit bestand over\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Naam indienen\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ongedaan maken\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload inhoud of synchroniseer met je apparaten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Als een inkomende map wordt geselecteerd, worden alle conflicterende bestanden daarin overschreven.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Als een inkomende map wordt geselecteerd, wordt de inhoud naar de bestaande map geschreven en wordt een recursieve conflict-oplossing uitgevoerd.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welke bestanden wilt u bewaren?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Je wordt momenteel geïdentificeerd als {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Je bent momenteel niet geïdentificeerd.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Je kunt de naam niet leeg laten.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"U moet in elk geval een conflictoplossing kiezen\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"U moet minstens een versie van elk bestand kiezen om door te gaan. \"] }] }, { \"language\": \"pl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['Znak \"{char}\" nie jest dozwolony w nazwie folderu.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nie jest dozwolone w nazwie.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nie jest dozwoloną nazwą.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" jest nazwą zastrzeżoną i nie jest dozwolona jako nazwa folderu.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" jest zastrzeżoną nazwą i nie jest dozwolone.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"Konflikt pliku\", \"Konflikt %n plików\", \"Konflikt %n plików\", \"Konflikt %n plików\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konfliktów pliku w {dirname}\", \"%n konfliktów plików w {dirname}\", \"%n konfliktów plików w {dirname}\", \"%n konfliktów plików w {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Wszystkie pliki\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Wybierz\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Wybierz {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Wybierz %n plik\", \"Wybierz %n pliki\", \"Wybierz %n plików\", \"Wybierz %n plików\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potwierdź\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiuj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Skopiuj do {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nie można utworzyć nowego folderu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nie można wczytać ustawień plików\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nie można wczytać widoków plików\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Utwórz katalog\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Bieżący selektor widoku\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Wprowadź nazwę\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nie udało się utworzyć pseudonimu.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Ulubione\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Pliki i foldery które oznaczysz jako ulubione będą wyświetlały się tutaj\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Pliki i foldery które ostatnio modyfikowałeś będą wyświetlały się tutaj\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtruj listę plików\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nazwy folderów nie mogą kończyć się na \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identyfikacja gościa\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Strona główna\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy przychodzącego pliku zostanie dodany numer.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nieprawidłowa nazwa folderu.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nieprawidłowa nazwa.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data ostatniej modyfikacji nieznana\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Zmodyfikowano\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Przenieś\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Przejdź do {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nazwa\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nazwy mogą mieć maksymalnie 64 znaki.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nazwy nie mogą być puste.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nazwy nie mogą kończyć się na \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nazwy nie mogą zaczynać się od kropki.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nowy folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nowa nazwa folderu\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Brak plików\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nie znaleziono plików spełniających warunki filtru\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Brak pasujących plików\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Wprowadź nazwę zawierającą minimum 2 znaki.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Ostatni\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Wybierz wszystkie wpisy\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Wybierz wpis\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Wybierz wiersz dla {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Rozmiar\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Pomiń %n plik\", \"Pomiń %n plików\", \"Pomiń %n plików\", \"Pomiń %n plików\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Pomiń ten plik\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Zatwierdź nazwę\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Cofnij\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Wyślij zawartość lub zsynchronizuj ze swoimi urządzeniami!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu przychodzącego folderu wszystkie konfliktujące pliki w jego obrębie również zostaną nadpisane.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu przychodzącego folderu jego zawartość zostanie zapisana w istniejącym folderze i zostanie przeprowadzone rekursywne rozwiązywanie konfliktów.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Obecnie jesteś zidentyfikowany jako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Użytkownik nie został uwierzytelniony.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nazwa nie może być pusta.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Musisz wybrać co najmniej jedno rozwiązanie konfliktu\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] }] }, { \"language\": \"pt_BR\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome de pasta.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" não é um nome permitido.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" é um nome reservado e não permitido para nomes de pasta.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" é um nome reservado e não permitido.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n arquivo conflita\", \"%n de arquivos conflitam\", \"%n arquivos conflitam\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n conflito de arquivo em {dirname}\", \"%n de conflitos de arquivos em {dirname}\", \"%n conflitos de arquivos em {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os arquivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operação\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escolher\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escolher {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escolher %n arquivo\", \"Escolher %n arquivos\", \"Escolher %n arquivos\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar para {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Não foi possível criar a nova pasta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Não foi possível carregar configurações de arquivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Não foi possível carregar visualições de arquivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Criar diretório\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Seletor de visualização atual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Digite seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Falha ao definir apelido.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os arquivos e pastas que você marca como favoritos aparecerão aqui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Arquivos e pastas que você modificou recentemente aparecerão aqui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de arquivos\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nomes de pasta não podem terminar com \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificação de convidados\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Início\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, um número será adicionado ao nome do arquivo recebido.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nome de pasta inválido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome inválido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover para {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes podem ter no máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nomes não podem estar vazios.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nomes não podem terminar com \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nomes não podem começar com um ponto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova pasta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome de pasta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nenhum arquivo aqui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenhum arquivo correspondente ao seu filtro foi encontrado.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nenhum arquivo correspondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Digite um nome com pelo menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecione todas as caixas de seleção\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os arquivos existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos arquivos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecionar a linha para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamanho\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorar %n arquivo\", \"Ignorar %n de arquivos\", \"Ignorar %n arquivos\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este arquivo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfazer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Faça upload de algum conteúdo ou sincronize com seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta de entrada, quaisquer arquivos conflitantes dentro dela também serão sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução recursiva de conflitos é realizada.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Você está atualmente identificado como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"No momento, você não está identificado.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Você não pode deixar o nome vazio.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Você precisa escolher pelo menos uma solução para o conflito\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] }] }, { \"language\": \"pt_PT\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome de pasta.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" não é um nome permitido.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" é um nome reservado e não é permitido para nomes de pasta.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" é um nome reservado e não é permitido.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ficheiro em conflito\", \"%n ficheiros em conflito\", \"%n ficheiros em conflito\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ficheiro em conflito em {dirname}\", \"%n ficheiros em conflito em {dirname}\", \"%n ficheiros em conflito em {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os ficheiros\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operação\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escolher\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escolher {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escolha %n ficheiro\", \"Escolha %n ficheiros\", \"Escolha %n ficheiros\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar para {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Não foi possível criar a nova pasta \"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Não foi possível carregar as definições dos ficheiros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Não foi possível carregar as visualizações dos ficheiros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Criar pasta\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Seletor de visualização atual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Introduza o seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Falha ao definir o nome alternativo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os ficheiros e as pastas que marcar como favoritos aparecerão aqui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Os ficheiros e as pastas que modificou recentemente aparecerão aqui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de ficheiros\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nomes de pasta não podem terminar em \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificação de convidado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Início\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, um número será adicionado ao nome do ficheiro recebido.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nome de pasta inválido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome inválido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover para {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes podem ter no máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"O nome não pode ficar em branco.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nomes não podem terminar em \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Os nomes não podem começar por um ponto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova pasta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome da pasta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Sem ficheiros aqui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Não foi encontrado nenhum ficheiro correspondente ao seu filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nenhum ficheiro correspondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Introduza um nome com, pelo menos, 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recentes\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecione todas as caixas de seleção\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os ficheiros existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos ficheiros\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecione a linha para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamanho\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorar %n ficheiro\", \"Ignorar %n ficheiros\", \"Ignorar %n ficheiros\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este ficheiro\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Submeter nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Anular\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Envie algum conteúdo ou sincronize com os seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta de entrada, quaisquer ficheiros conflituantes dentro da mesma serão também sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e é realizada uma resolução recursiva de conflitos.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais os ficheiros que deseja manter?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Atualmente está identificado como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Atualmente, não está identificado.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Não pode deixar o nome em branco.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"É preciso escolher pelo menos uma solução para o conflito.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"É necessário selecionar pelo menos uma versão de cada ficheiro para continuar.\"] }] }, { \"language\": \"ro\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" este un nume de director invalid.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nu este un nume de director permis'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" nu este permis în numele unui director.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Toate fișierele\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Alege\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Alege {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Alege %n fișier\", \"Alege %n fișiere\", \"Alege %n fișiere\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiază\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiază în {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nu s-a putut crea noul director\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nu s-au putut încărca setările fișierelor\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nu s-au putut încărca vizualizările fișierelor\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Creează director\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selectorul curent al vizualizării\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorite\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Fișiere și directoare pe care le marcați ca favorite vor apărea aici.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Fișiere și directoare pe care le-ați modificat recent vor apărea aici.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrează lista de fișiere\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Numele de director nu poate fi necompletat.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Acasă\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificat\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mută\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mută către {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nume\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nou\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Director nou\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Numele noului director\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nu există fișiere\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nu există fișiere potrivite pentru filtrul selectat\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nu există fișiere potrivite\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selectează toate înregistrările\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selectează înregistrarea\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selectează rândul pentru {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Mărime\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Anulează\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Încărcați conținut sau sincronizați cu dispozitivele dumneavoastră!\"] }] }, { \"language\": \"ru\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" не допускается в названии папки.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не допускается внутри имени.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" это не допустимое имя.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" это зарезервированное имя и не допустимо для имени папки.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" это зарезервированное имя и не допустимо.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n конфликт файла\", \"%n конфликта файлов\", \"%n конфликтов файлов\", \"%n конфликтов файлов\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n конфликт файлов в {dirname}\", \"%n конфликта файлов в {dirname}\", \"%n конфликтов файлов в {dirname}\", \"%n конфликтов файлов в {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Все файлы\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Отмена\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отмена операции\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Выбрать\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Выбрать «{file}»\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Выбрать %n файл\", \"Выбрать %n файла\", \"Выбрать %n файлов\", \"Выбрать %n файлов\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Подтвердить\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжить\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копировать\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копировать в «{target}»\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Не удалось создать новую папку\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не удалось загрузить настройки файлов\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не удалось загрузить конфигурацию просмотра файлов\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Создать папку\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Переключатель текущего вида\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Введите ваше имя\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Текущая версия\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Не удалось задать никнейм.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Избранное\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Здесь будут отображаться файлы и папки, которые вы пометили как избранные.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Здесь будут отображаться файлы и папки, которые вы недавно изменили.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фильтровать список файлов\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Имена папок не могут оканчиваться на \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Гостевая идентификация\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Домой\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Если вы выберете обе версии, к имени входящего файла будет добавлен номер.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Недопустимое имя папки.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Неверное имя.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата последнего изменения неизвестна\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Изменен\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Переместить\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Переместить в «{target}»\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Имя\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Имена не могут быть длинее 64 символов.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имена не могут быть пустыми.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Имена не могут оканчиваться на \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имена должны начинаться с точки.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Новая папка\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Имя новой папки\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Новая версия\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Здесь нет файлов\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Файлы, соответствующие вашему фильтру, не найдены.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нет подходящих файлов\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Введите имя длиной не менее 2 символов.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Недавний\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Выбрать все флажки\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Выбрать все записи\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Выбрать все существующие файлы\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Выбрать все новые файлы\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Выбрать запись\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Выбрать строку для «{nodename}»\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Размер\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Пропустить %n файл\", \"Пропустить %n файла\", \"Пропустить %n файлов\", \"Пропустить %n файлов\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустить файл\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Отправить имя\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Отменить\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Загрузите контент или синхронизируйте его со своими устройствами!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Какие файлы вы хотите сохранить?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Вы идентифицированы как {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"В данный момент вы не идентифицированы.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Вы не можете оставить имя пустым.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Вам нужно выбрать хотя бы одно решение конфликта\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продолжения вам нужно выбрать хотя бы одну версию каждого файла.\"] }] }, { \"language\": \"sk_SK\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" nie je povolené v názve priečinka.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nie je povolené v rámci mena.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nie je povolený názov.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ je rezervované meno a nie je povolené na názvy priečinkov.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" je rezervované meno a nie je povolené.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n konflikt súborov\", \"%n konflikty súborov\", \"%n konfliktov súborov\", \"%n konflikty súborov\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konflikt súborov v {dirname}\", \"%n konflikty súborov v {dirname}\", \"%n konfliktov súborov v {dirname}\", \"%n konfliktov súborov v {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Všetky súbory\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušiť\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušiť celú operáciu\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Vybrať\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vybrať {súbor}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vybraný %n súbor\", \"Vybrané %n súbory\", \"Vybraných %n súborov\", \"Vybraných %n súborov\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdiť\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovať\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopírovať\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopírovať do {umiestnenia}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nepodarilo sa vytvoriť nový priečinok\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepodarilo sa načítať nastavenia súborov\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepodarilo sa načítať pohľady súborov\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Vytvoriť adresár\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Výber aktuálneho zobrazenia\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Zadajte svoje meno\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existujúca verzia\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepodarilo sa nastaviť prezývku.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Obľúbené\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tu sa zobrazia súbory a priečinky, ktoré označíte ako obľúbené.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Tu sa zobrazia súbory a priečinky, ktoré ste nedávno upravili.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrovať zoznam súborov\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Názvy priečinkov nesmú končiť na \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikácia hosťa\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domov\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ak vyberiete obe verzie, prichádzajúci súbor bude mať k svojmu názvu pridané číslo.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neplatný názov priečinka.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neplatné meno.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Posledná zmena dátumu neznáma\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Upravené\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Prejsť\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Prejsť na {umiestnenie}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Názov\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Mená môžu mať maximálne 64 znakov.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Mená nesmú byť prázdne.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Mená nesmú končiť \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Mená nesmú začínať bodkou.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Pridať\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Pridať priečinok\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Pridať názov priečinka\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nová verzia\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nie sú tu žiadne súbory\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenašli sa žiadne súbory zodpovedajúce vášmu filtru.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Žiadne zodpovedajúce súbory\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Zadajte meno s aspoň 2 znakmi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedávne\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vyberte všetky zaškrtávacie políčka\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vybrať všetky položky\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrať všetky existujúce súbory\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrať všetky nové súbory\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vybrať položku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vyberte riadok pre {názov uzla}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veľkosť\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Preskočiť %n súbor\", \"Preskočiť %n súbory\", \"Preskočiť %n súborov\", \"Preskočiť %n súbory\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskočiť tento súbor\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Zadať meno\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Späť\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Nahrajte nejaký obsah alebo synchronizujte so svojimi zariadeniami!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Keď je vybraná prichádzajúca složka, všetky konfliktné súbory v nej budú taktiež prepísané.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Keď je vybraná prichádzajúca zložka, obsah sa zapíše do existujúcej zložky a vykoná sa rekurzívne riešenie konfliktov.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ktoré súbory chcete zachovať?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Momentálne ste identifikovaný ako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Momentálne nie ste identifikovaný.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nemôžete nechať meno prázdne.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Musíte si vybrať aspoň jedno riešenie konfliktu.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Musíte vybrať aspoň jednu verziu každého súboru, aby ste mohli pokračovať.\"] }] }, { \"language\": \"sl\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} je neveljavno ime mape.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} ni dovoljeno ime mape\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ni dovoljen v imenu mape.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Vse datoteke\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izberi\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izberi {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izberi %n datoteko\", \"Izberi %n datoteki\", \"Izberi %n datotek\", \"Izberi %n datotek\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj v {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nisem mogel ustvariti nove mape\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"NIsem mogel naložiti nastavitev datotek\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nisem mogel naložiti pogledov datotek\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Ustvari mapo\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Izbirnik trenutnega pogleda\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Priljubljene\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Datoteke in mape ki jih označite kot priljubljene se bodo prikazale tukaj.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Daoteke in mape ki ste jih pred kratkim spremenili se bodo prikazale tukaj.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtriraj seznam datotek\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Ime mape ne more biti prazno\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domov\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Spremenjeno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premakni\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premakni v {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ime\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova mapa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo ime mape\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tukaj ni datotek\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ni bilo najdenih ujemajočih datotek glede na vaš filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ni ujemajočih datotek\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedavne\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Izberi vse vnose\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Izberi vnos\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Izberi vrstico za {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Velikost\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Razveljavi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Naloži nekaj vsebine ali sinhroniziraj s svojimi napravami!\"] }] }, { \"language\": \"sr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}” није дозвољено унутар имена.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}” није дозвољено име.\"] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” није исправно име фолдера.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” није дозвољено име за фолдер.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}” је резервисано име и није дозвољено.\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” није дозвољено унутар имена фолдера.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Сви фајлови\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Изаберите\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Изаберите {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Изаберите %n фајл\", \"Изаберите %n фајла\", \"Изаберите %n фајлова\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копирај\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копирај у {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Није могао да се креира нови фолдер\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не могу да се учитају подешавања фајлова\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не могу да се учитају прикази фајлова\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Креирај директоријум\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Бирач тренутног приказа\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Унесите своје име\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Није успело постављање надимка.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Омиљено\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Овде ће се појавити фајлови и фолдери које сте означили као омиљене.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Овде ће се појавити фајлови и фолдери који се се недавно изменили.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фитрирање листе фајлова\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Име фолдера не може бити празно.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Идентификација госта\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Почетак\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Неисправно име.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Измењено\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Премести\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Премести у {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Име\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Највећа дужина имена може бити 64 карактера.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имена не смеју да буду празна.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Имена не смеју да се завршавају на „{extension}”.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имена не смеју да почињу тачком.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Нови фолдер\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Име новог фолдера\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Овде нема фајлова\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Није пронађен ниједан фајл који задовољава ваш филтер.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нема таквих фајлова\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Молимо вас да унесете име од барем два карактера.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Скорашње\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Изаберите све ставке\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Изаберите ставку\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Изаберите ред за {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Величина\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Предај име\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Поништи\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Отпремите нешто или синхронизујте са својим уређајима!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Тренутно се идентификујете као {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Тренутно немате идентификацију.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Име не можете да оставите празно.\"] }] }, { \"language\": \"sr@latin\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” je neispravan naziv foldera.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” je nedozvoljen naziv foldera.\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” se ne može koristiti unutar naziva foldera.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Svi fajlovi\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izaberite\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izaberite {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izaberite %n fajl\", \"Izaberite %n fajla\", \"Izaberite %n fajlova\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj u {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Neuspešno kreiranje novog foldera\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Neuspešno učitavanje podešavanja fajlova\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Neuspešno učitavanje prikaza fajlova\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Kreiraj direktorijum\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Birač trenutnog prikaza\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Omiljeno\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Lista omiljenih fajlova i foldera.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Lista fajlova i foldera sa skorašnjim izmenama.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fitriranje liste fajlova\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Naziv foldera ne može biti prazan.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Početak\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Izmenjeno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premesti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premesti u {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naziv\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Novi folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Naziv novog foldera\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Bez fajlova\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nema fajlova koji zadovoljavaju uslove filtera.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nema takvih fajlova\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Skorašnje\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Izaberite sve stavke\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Izaberite stavku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Izaberite red za {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veličina\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Vrati\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Otpremite sadržaj ili sinhronizujte sa svojim uređajima!\"] }] }, { \"language\": \"sv\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" är inte tillåtet i ett mappnamn.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" är inte tillåtet i ett namn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" är inte ett tillåtet namn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" är ett reserverat namn och inte tillåtet mappnamn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" är ett reserverat namn och inte tillåtet.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fil är i konflikt\", \"%n filer är i konflikt\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n fil är i konflikt i {dirname}\", \"%n filer är i konflikt i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alla filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Välj\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Välj {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Välj %n fil\", \"Välj %n filer\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bekräfta\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiera\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiera till {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunde inte skapa den nya mappen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kunde inte ladda filinställningar\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunde inte ladda filvyer\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Skapa katalog\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuell vyväljare\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ange ditt namn\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kunde inte ställa in smeknamn.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer och mappar som du markerar som favorit kommer att visas här.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer och mappar som du nyligen ändrat kommer att visas här.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrera fillistan\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Mappnamn får inte sluta med \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gästidentifiering\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hem\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att få ett nummer tillagt i sitt namn.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ogiltigt mappnamn.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ogiltigt namn.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ändrad\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flytta\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flytta till {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Namn\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namnen kan vara högst 64 tecken långa.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namn får inte vara tomt.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namn får inte sluta med \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namn får inte börja med en punkt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mapp\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nytt mappnamn\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Inga filer här\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Inga filer som matchar ditt filter hittades.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Inga matchande filer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Ange ett namn med minst 2 tecken.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nyligen\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Välj alla poster\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Välj post\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Välj raden för {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Storlek\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Hoppa över %n fil\", \"Hoppa över %n filer\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hoppa över den här filen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Skicka namn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ångra\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ladda upp lite innehåll eller synkronisera med dina enheter!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs kommer eventuella konflikterande filer i den också att skrivas över.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du är för närvarande identifierad som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du är för närvarande inte identifierad.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan inte lämna namnet tomt.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Du måste välja minst en konfliktlösning\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] }] }, { \"language\": \"tr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" karakteri bir klasör adında kullanılamaz.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['Bir ad içinde \"{char}\" karakteri kullanılamaz.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" adına izin verilmiyor.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" adı sistem için ayrılmış olduğundan klasör adlarında kullanılamaz.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" adı sistem için ayrılmış olduğundan kullanılamaz.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n dosya çakışıyor\", \"%n dosya çakışıyor\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} içindeki %n dosya çakışıyor\", \"{dirname} içindeki %n dosya çakışıyor\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tüm dosyalar\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seçin\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} seçin\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n dosya seçin\", \"%n dosya seçin\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Onayla\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopyala\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target} üzerine kopyala\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Yeni klasör oluşturulamadı\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dosyalar uygulamasının ayarları yüklenemedi\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dosyalar uygulamasının görünümleri yüklenemedi\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Klasör oluştur\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Geçerli görünüm seçici\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Adınızı yazın\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Takma ad ayarlanamadı.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Sık kullanılanlar\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Sık kullanılan olarak seçtiğiniz dosyalar burada görüntülenir.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Son zamanlarda değiştirdiğiniz dosya ve klasörler burada görüntülenir.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dosya listesini süz\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Klasör adları \"{extension}\" ile bitemez.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Konuk kimliği\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Giriş\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Klasör adı geçersiz.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ad geçersiz.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Değiştirilme\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Taşı\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target} üzerine taşı\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ad\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Adlar en fazla 64 karakter uzunluğunda olabilir.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ad boş olamaz.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ad \"{extension}\" ile bitemez.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ad nokta karakteri ile başlayamaz.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Yeni klasör\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Yeni klasör adı\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Burada herhangi bir dosya yok\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Süzgece uyan bir dosya bulunamadı.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Eşleşen bir dosya yok\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Ad en az 2 karakter uzunluğunda olmalıdır.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Son kullanılanlar\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Tüm kayıtları seç\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Kaydı seç\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} satırını seçin\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Boyut\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n dosyayı atla\", \"%n dosyayı atla\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bu dosyayı atla\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Adı gönder\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Geri al\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Bazı içerikler yükleyin ya da aygıtlarınızla eşitleyin!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içerik var olan klasöre yazılır ve alt klasörlerle bir çakışma çözümü uygulanır.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"{nickname} olarak tanınıyorsunuz.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Henüz kendinizi tanıtmadınız.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ad boş bırakılamaz.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"En az bir çakışma çözümü seçmelisiniz\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosaynın en az bir sürümünü seçmelisiniz.\"] }] }, { \"language\": \"uk\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"{char} не дозволено всередині назви каталогу.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не дозволено всередині імени.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [`\"{extension}\" недозволене ім'я.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"{segment} є зарезервованим ім'ям і не дозволено для назви каталогу.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [`\"{segment}\" зарезервоване ім'я і не дозволено для використання.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n конфлікт файлів\", \"%n конфлікти файлів\", \"%n конфліктів файлів\", \"%n конфліктів файлів\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n конфлікт файлів у каталозі {dirname}\", \"%n конфлікти файлів у каталозі {dirname}\", \"%n конфліктів файлів у каталозі {dirname}\", \"%n конфліктів файлів у каталозі {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Всі файли\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати всю операцію\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Вибрати\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Вибрати {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Вибрати %n файл\", \"Вибрати %n файли\", \"Вибрати %n файлів\", \"Вибрати %n файлів\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Підтвердити\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копіювати\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копіювати до {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Не вдалося створити новий каталог\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не вдалося завантажити налаштування файлів\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не вдалося завантажити подання файлів\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Створити каталог\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Вибір подання\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Зазначте ваше ім'я\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Наявна версія\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Не вдалося встановити псевдо.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Із зірочкою\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Тут показуватимуться файли та каталоги, які ви позначите зірочкою.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Тут показуватимуться файли та каталоги, які було нещодавно змінено.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фільтрувати список файлів\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [`Ім'я каталогу не може закінчуватися на \"{extension}\".`] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Ім'я для гостя\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Домівка\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо вибрати обидві версії, до назви вхідного файлу буде додано цифру. \"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Недійсне ім'я каталогу.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Недійсне ім'я.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Змінено\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Перемістити\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Перемістити до {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ім'я\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Імена мають мати довжину не більше 64 символів.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ім'я не може бути порожнє.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [`Ім'я не може закінчуватися на \"{extension}\".`] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ім'я не може починатися з крапки.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Новий\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Новий каталог\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ім'я нового каталогу\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Тут відсутні файли\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Відсутні збіги за фільтром.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Відсутні збіги файлів.\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Зазначте ім'я довжиною не менше 2 символів\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Останні\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати всі прапорці\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Вибрати всі записи\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати всі наявні файли\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати всі нові файли\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Вибрати запис\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Вибрати рядок для {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Розмір\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Пропустити %n файл\", \"Пропустити %n файли\", \"Пропустити %n файлів\", \"Пропустити %n файлів\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустити цей файл\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Встановити ім'я\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Повернути\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Завантажте вміст або синхронізуйте з вашим пристроєм!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Коли вибрано вхідний каталог, будь-які файли з конфліктами буде також перезаписано.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Коли вибрано вхідний каталог, вміст буде записано до існуючого каталогу, а також виконано вирішення конфліктів всередині каталогу.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Вас визначено як {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Вас не ідентифіковано.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Потрібно зазначити ім'я.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Треб вибрати щонайменше одне рішення конфлікту\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба вибрати щонайменше одну версію кожного файлу, щоби продовжити.\"] }] }, { \"language\": \"uz\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['Papka nomi ichida \"{char}\" ga ruxsat berilmaydi.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['Nom ichida \"{char}\" ga ruxsat berilmagan.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ruxsat etilgan nom emas.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [`\"{segment}\" ajratilgan nom bo'lib, papka nomlari uchun ruxsat berilmagan.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" - zaxiralangan nom va ruxsat berilmaydi.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fayl ziddiyatli\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} da %n fayl ziddiyati\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Barcha fayllar\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Bekor qilish\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Butun operatsiyani bekor qiling\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tanlang\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Tanlang {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Tanlang %n faylni\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Tasdiqlang\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Davom eting\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Nusxa\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\" {target} ga nusxa\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Yangi jild yaratib bo‘lmadi\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Fayl sozlamalari yuklanmadi\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Fayllarni koʻrishni yuklab boʻlmadi\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Katalog yaratish\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Joriy ko'rinish selektori\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ismingizni kiriting\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Mavjud versiya\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Taxallusni o‘rnatib bo‘lmadi.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Tanlanganlar\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tanlangan deb belgilagan fayl va papkalar shu yerda koʻrinadi.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Siz yaqinda oʻzgartirgan fayl va papkalar shu yerda koʻrinadi.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fayl ro'yxatini filtrlash\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Papka nomlari \"{extension}\" bilan tugamasligi kerak.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Foydalanuvchini identifikatsiyalash\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Uy\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Jild nomi noto'g'ri.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nomi noto‘g‘ri.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Oxirgi tahrirlangan sana noma'lum\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifikatsiyalangan\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Ko'chirish\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\" {target} ga ko'chirish\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nomi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Ismlar ko'pi bilan 64 ta belgidan iborat bo'lishi mumkin.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ismlar bo'sh bo'lmasligi kerak.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ismlar \"{extension}\" bilan tugamasligi kerak.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ismlar nuqta bilan boshlanmasligi kerak.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Yangi\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Yangi jild\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Yangi jild nomi\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Yangi versiya\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Fayl mavjud emas\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Filtringizga mos keladigan fayl topilmadi.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Mos fayllar yo'q\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kamida 2 ta belgidan iborat nom kiriting.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Yaqinda\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Barcha katakchalarni belgilang\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Barcha yozuvlarni tanlang\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Barcha mavjud fayllarni tanlang\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Barcha yangi fayllarni tanlang\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Yozuvni tanlang\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} uchun qatorni tanlang\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"O`lcham\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n faylni oʻtkazib yuborish\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ushbu faylni o'tkazib yuboring\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Ismni tasdiqlang\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Bekor qilish\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Qurilmangizga ba'zi kontentni yuklang yoki sinxronlang!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kiruvchi papka tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kiruvchi papka tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Qaysi fayllarni saqlamoqchisiz?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Siz hozirda {nickname} sifatida aniqlangansiz.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Siz hozirda identifikatsiyadan o'tmagansiz\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ism katagini bo'sh qoldirib bo'lmaydi.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Siz kamida bitta mojaro yechimini tanlashingiz kerak\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak.\"] }] }, { \"language\": \"vi\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" là tên thư mục không hợp lệ.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"1{name}\"không phải là tên thư mục được cho phép'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\"không được phép đặt trong tên thư mục.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tất cả tệp\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Chọn\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Chọn {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Chọn %n tệp\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Sao chép\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Sao chép đến {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Không thể tạo thư mục mới\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Không thể tải tập tin cài đặt\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Không thể tải xuống tệp xem\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Tạo thư mục\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Hiện tại chế độ xem của bộ chọn\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Yêu cầu thích\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Các tập tin và thư mục bạn đánh dấu yêu thích sẽ hiển thị ở đây.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Các tập tin và thư mục bạn sửa đổi gần đây sẽ hiển thị ở đây.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter list file\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Thư mục tên không được để trống.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Trang chủ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Đã sửa đổi\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Di chuyển\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Di chuyển đến{target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Tên\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Mới\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"New thư mục\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"New thư mục tên\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No file at here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Không tìm thấy tệp nào phù hợp với bộ lọc của bạn.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No file phù hợp\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Gần đây\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Choose all items\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Chọn mục nhập\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Choose hang cho{nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Kích cỡ\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Hoàn tác\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Tải lên một số nội dung hoặc đồng bộ hóa với thiết bị của bạn!\"] }] }, { \"language\": \"zh_CN\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"“{name}” 是无效的文件夹名称。\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"“{name}” 不是允许的文件夹名称\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"文件夹名称中不允许包含 “/”。\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有文件\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"选择\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"选择 {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"选择 %n 个文件\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"复制\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"复制到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"无法创建新文件夹\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"无法加载文件设置\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"无法加载文件视图\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"创建目录\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"当前视图选择器\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最爱\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您标记为最爱的文件与文件夹会显示在这里\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的文件与文件夹会显示在这里\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"过滤文件列表\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"文件夹名称不能为空。\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"主目录\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移动\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移动至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名称\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新文件夹\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新文件夹名称\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此处无文件\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您过滤条件的文件\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"无符合的文件\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"选择所有条目\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"选择条目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"选择 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\" 撤消\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上传一些项目或与您的设备同步!\"] }] }, { \"language\": \"zh_HK\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"資料夾名稱中不允許使用「{char}」。\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['名稱中不能使用 \"{char}\"。'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"「{extension}」並非允許的名稱。\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"「{segment}」為保留名稱,不能用作資料夾名稱。\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"「{segment}」是一個保留名稱,不能使用。\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n 檔案衝突\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 %n 個檔案衝突\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有檔案\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選擇\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"選擇 {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"選擇 %n 個檔案\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"確認\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"複製\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"複製到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"無法建立新資料夾\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"無法載入檔案設定\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"無法載入檔案視圖\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"建立目錄\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"目前視圖選擇器\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"輸入您的名字\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"現有的版本\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"無法設置暱稱。\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最愛\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您標記為最愛的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"過濾檔案清單\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"資料夾名稱不得以「{extension}」結尾。\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"訪客身份識別\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"首頁\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果您選擇兩個版本,傳入的檔案名稱將會附加一個數字。\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"無效的資料夾名稱。\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"無效的名字。\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後的修改日期不詳\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移動至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名稱\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"名稱長度最多為 64 個字元。\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"名稱不能為空。\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"名稱不得以「{extension}」結尾。\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"名稱不得以點開頭。\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新資料夾\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新資料夾名稱\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此處無檔案\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您過濾條件的檔案。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"沒有匹配的檔案\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"請輸入至少 2 個字符的名稱。\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選擇所有復選框\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"選擇所有項目\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選擇所有現有的檔案\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"選擇所有新檔案\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"選擇項目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"選擇 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"跳過 %n 個檔案\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"跳過此檔案\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"遞交名字\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"還原\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上傳一些內容或與您的裝置同步!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾時,其中任何衝突的檔案也將被覆蓋。\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"當選取傳入資料夾時,內容將寫入現有資料夾,並執行遞歸衝突解決。\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你想保留哪些檔案?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"您目前被識別為 {nickname}。\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"您目前尚未被識別。\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"名稱不能留空。\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"你需要選擇至少一種衝突解決方案。\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須選擇每個文件的至少一個版本才能繼續。\"] }] }, { \"language\": \"zh_TW\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid file name.', \"msgstr\": [\"「{name}」是無效的檔案名稱。\"] }, { \"msgid\": '\"{name}\" is not an allowed filetype', \"msgstr\": [\"「{name}」並非允許的檔案類型\"] }, { \"msgid\": '\"/\" is not allowed inside a file name.', \"msgstr\": [\"檔案名稱中不允許使用「/」。\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有檔案\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選擇\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"選擇 {file}\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"複製\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"複製到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"無法建立新資料夾\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"建立目錄\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"目前檢視選取器\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最愛\"] }, { \"msgid\": \"File name cannot be empty.\", \"msgstr\": [\"檔案名稱不能為空。\"] }, { \"msgid\": \"Filepicker sections\", \"msgstr\": [\"檔案挑選器選取\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您標記為最愛的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"過濾檔案清單\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"家\"] }, { \"msgid\": \"Mime type {mime}\", \"msgstr\": [\"Mime type {mime}\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移動至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名稱\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新資料夾\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新資料夾名稱\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此處無檔案\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您過濾條件的檔案。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"無符合的檔案\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"選取所有條目\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"選取條目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"選取 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"復原\"] }, { \"msgid\": \"unknown\", \"msgstr\": [\"未知\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上傳一些內容或與您的裝置同步\"] }] }]) {\n const { language, translations } = data;\n const bundle = {\n headers: {},\n translations: {\n \"\": Object.fromEntries(translations.map((translation) => [translation.msgid, translation]))\n }\n };\n gtBuilder.addTranslation(language, bundle);\n}\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/dialogs\").detectLogLevel().build();\nvar FilePickerType = /* @__PURE__ */ ((FilePickerType2) => {\n FilePickerType2[FilePickerType2[\"Choose\"] = 1] = \"Choose\";\n FilePickerType2[FilePickerType2[\"Move\"] = 2] = \"Move\";\n FilePickerType2[FilePickerType2[\"Copy\"] = 3] = \"Copy\";\n FilePickerType2[FilePickerType2[\"CopyMove\"] = 4] = \"CopyMove\";\n FilePickerType2[FilePickerType2[\"Custom\"] = 5] = \"Custom\";\n return FilePickerType2;\n})(FilePickerType || {});\nclass FilePickerClosed extends Error {\n}\nclass FilePicker {\n title;\n multiSelect;\n mimeTypeFilter;\n directoriesAllowed;\n noMenu;\n buttons;\n path;\n filter;\n canPick;\n container;\n disabledNavigation;\n constructor(title, multiSelect, mimeTypeFilter, directoriesAllowed, noMenu, buttons, path, filter, canPick, container, disabledNavigation = false) {\n this.title = title;\n this.multiSelect = multiSelect;\n this.mimeTypeFilter = mimeTypeFilter;\n this.directoriesAllowed = directoriesAllowed;\n this.noMenu = noMenu;\n this.path = path;\n this.filter = filter;\n this.canPick = canPick;\n this.buttons = buttons;\n this.container = container;\n this.disabledNavigation = disabledNavigation;\n }\n /**\n * Pick files using the FilePicker.\n *\n * @return Promise with array of picked files or rejected promise on close without picking\n */\n async pickNodes() {\n const { default: FilePickerVue } = await import(\"./FilePicker-DWYoSaVg.mjs\");\n const nodes = await spawnDialog(FilePickerVue, {\n allowPickDirectory: this.directoriesAllowed,\n noMenu: this.noMenu,\n buttons: this.buttons,\n name: this.title,\n path: this.path,\n mimetypeFilter: this.mimeTypeFilter,\n multiselect: this.multiSelect,\n filterFn: this.filter,\n canPickFn: this.canPick,\n disabledNavigation: this.disabledNavigation\n }, {\n container: this.container\n });\n if (!Array.isArray(nodes) || nodes.length === 0) {\n throw new FilePickerClosed(\"FilePicker: No nodes selected\");\n }\n return nodes;\n }\n /**\n * Pick files using the FilePicker\n *\n * @return Promise with array of paths of picked files or rejected promise on close without picking\n */\n async pick() {\n const nodes = await this.pickNodes();\n if (this.multiSelect) {\n return nodes.map((node) => node.path);\n }\n const path = nodes[0]?.path ?? \"/\";\n return path;\n }\n}\nclass FilePickerBuilder {\n title;\n multiSelect = false;\n mimeTypeFilter = [];\n directoriesAllowed = false;\n noMenu = false;\n path;\n filter;\n canPick;\n buttons = [];\n container;\n disabledNavigation = false;\n /**\n * Construct a new FilePicker\n *\n * @param title Title of the FilePicker\n */\n constructor(title) {\n this.title = title;\n }\n /**\n * Set the container where the FilePicker will be mounted\n * By default 'body' is used\n *\n * @param container The dialog container\n */\n setContainer(container) {\n this.container = container;\n return this;\n }\n /**\n * Enable or disable picking multiple files\n *\n * @param ms True to enable picking multiple files, false otherwise\n */\n setMultiSelect(ms) {\n this.multiSelect = ms;\n return this;\n }\n /**\n * Add allowed MIME type\n *\n * @param filter MIME type to allow\n */\n addMimeTypeFilter(filter) {\n this.mimeTypeFilter.push(filter);\n return this;\n }\n /**\n * Set allowed MIME types\n *\n * @param filter Array of allowed MIME types\n */\n setMimeTypeFilter(filter) {\n this.mimeTypeFilter = filter;\n return this;\n }\n /**\n * Add a button to the FilePicker\n * Note: This overrides any previous `setButtonFactory` call\n *\n * @param button The button\n */\n addButton(button) {\n if (typeof this.buttons === \"function\") {\n logger.warn(\"FilePicker buttons were set to factory, now overwritten with button object.\");\n this.buttons = [];\n }\n this.buttons.push(button);\n return this;\n }\n /**\n * Set the button factory which is used to generate buttons from current view, path and selected nodes\n * Note: This overrides any previous `addButton` call\n *\n * @param factory The button factory\n */\n setButtonFactory(factory) {\n this.buttons = factory;\n return this;\n }\n /**\n * Set FilePicker type based on legacy file picker types\n *\n * @param type The legacy filepicker type to emulate\n * @deprecated Use `addButton` or `setButtonFactory` instead as with setType you do not know which button was pressed\n */\n setType(type) {\n this.buttons = (nodes, path) => {\n const buttons = [];\n const node = nodes[0];\n const target = node?.displayname || basename(path);\n if (type === 1) {\n let label = t(\"Choose\");\n if (nodes.length === 1) {\n label = t(\"Choose {file}\", { file: target });\n } else if (this.multiSelect) {\n label = n(\"Choose %n file\", \"Choose %n files\", nodes.length);\n }\n buttons.push({\n callback: () => {\n },\n label,\n variant: \"primary\"\n });\n }\n if (type === 4 || type === 3) {\n buttons.push({\n callback: () => {\n },\n label: target ? t(\"Copy to {target}\", { target }) : t(\"Copy\"),\n icon: IconCopy,\n variant: type === 3 ? \"primary\" : \"secondary\"\n });\n }\n if (type === 4 || type === 2) {\n buttons.push({\n callback: () => {\n },\n label: target ? t(\"Move to {target}\", { target }) : t(\"Move\"),\n icon: IconMove,\n variant: \"primary\"\n // move is always primary - also on copy-move\n });\n }\n return buttons;\n };\n return this;\n }\n /**\n * Allow to pick directories besides files\n *\n * @param allow True to allow picking directories\n */\n allowDirectories(allow = true) {\n this.directoriesAllowed = allow;\n return this;\n }\n /**\n * Allow to create New folders\n *\n * @param noMenu True to hide menu\n */\n setNoMenu(noMenu = true) {\n this.noMenu = noMenu;\n return this;\n }\n /**\n * Set starting path of the FilePicker\n *\n * @param path Path to start from picking\n */\n startAt(path) {\n this.path = path;\n return this;\n }\n /**\n * Add filter function to filter file list of FilePicker\n *\n * @param filter Filter function to apply\n */\n setFilter(filter) {\n this.filter = filter;\n return this;\n }\n /**\n * Add function to allow or not picking a node\n *\n * @param canPick Function to decide if a node can be picked\n */\n setCanPick(canPick) {\n this.canPick = canPick;\n return this;\n }\n /**\n * Disable navigation (view selection)\n */\n disableNavigation() {\n this.disabledNavigation = true;\n return this;\n }\n /**\n * Construct the configured FilePicker\n */\n build() {\n return new FilePicker(\n this.title,\n this.multiSelect,\n this.mimeTypeFilter,\n this.directoriesAllowed,\n this.noMenu,\n this.buttons,\n this.path,\n this.filter,\n this.canPick,\n this.container,\n this.disabledNavigation\n );\n }\n}\nfunction getFilePickerBuilder(title) {\n return new FilePickerBuilder(title);\n}\nasync function showGuestUserPrompt(props) {\n const name = await spawnDialog(\n defineAsyncComponent(() => import(\"./PublicAuthPrompt-CxPJPSnh.mjs\")),\n props\n );\n return name;\n}\nconst LoaderSvg = '\\n\t\\n\t\\n\\n';\nvar ToastType = /* @__PURE__ */ ((ToastType2) => {\n ToastType2[\"ERROR\"] = \"toast-error\";\n ToastType2[\"WARNING\"] = \"toast-warning\";\n ToastType2[\"INFO\"] = \"toast-info\";\n ToastType2[\"SUCCESS\"] = \"toast-success\";\n ToastType2[\"UNDO\"] = \"toast-undo\";\n ToastType2[\"LOADING\"] = \"toast-loading\";\n return ToastType2;\n})(ToastType || {});\nconst TOAST_ARIA_LIVE_OFF = \"off\";\nconst TOAST_ARIA_LIVE_POLITE = \"polite\";\nconst TOAST_ARIA_LIVE_ASSERTIVE = \"assertive\";\nvar ToastAriaLive = /* @__PURE__ */ ((ToastAriaLive2) => {\n ToastAriaLive2[ToastAriaLive2[\"OFF\"] = TOAST_ARIA_LIVE_OFF] = \"OFF\";\n ToastAriaLive2[ToastAriaLive2[\"POLITE\"] = TOAST_ARIA_LIVE_POLITE] = \"POLITE\";\n ToastAriaLive2[ToastAriaLive2[\"ASSERTIVE\"] = TOAST_ARIA_LIVE_ASSERTIVE] = \"ASSERTIVE\";\n return ToastAriaLive2;\n})(ToastAriaLive || {});\nconst TOAST_UNDO_TIMEOUT = 1e4;\nconst TOAST_DEFAULT_TIMEOUT = 7e3;\nconst TOAST_PERMANENT_TIMEOUT = -1;\nfunction showMessage(data, options) {\n options = {\n timeout: TOAST_DEFAULT_TIMEOUT,\n isHTML: false,\n type: void 0,\n // An undefined selector defaults to the body element\n selector: void 0,\n onRemove: () => {\n },\n onClick: void 0,\n close: true,\n ...options\n };\n if (typeof data === \"string\" && !options.isHTML) {\n const element = document.createElement(\"div\");\n element.innerHTML = data;\n data = element.innerText;\n }\n let classes = options.type ?? \"\";\n if (typeof options.onClick === \"function\") {\n classes += \" toast-with-click \";\n }\n const isNode = data instanceof Node;\n let ariaLive = ToastAriaLive.POLITE;\n if (options.ariaLive) {\n ariaLive = options.ariaLive;\n } else if (options.type === \"toast-error\" || options.type === \"toast-undo\") {\n ariaLive = ToastAriaLive.ASSERTIVE;\n }\n const toast = Toastify({\n [!isNode ? \"text\" : \"node\"]: data,\n duration: options.timeout,\n callback: options.onRemove,\n onClick: options.onClick,\n close: options.close,\n gravity: \"top\",\n selector: options.selector,\n position: \"right\",\n backgroundColor: \"\",\n className: \"dialogs \" + classes,\n escapeMarkup: !options.isHTML,\n ariaLive\n });\n toast.showToast();\n return toast;\n}\nfunction showError(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-error\"\n /* ERROR */\n });\n}\nfunction showWarning(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-warning\"\n /* WARNING */\n });\n}\nfunction showInfo(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-info\"\n /* INFO */\n });\n}\nfunction showSuccess(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-success\"\n /* SUCCESS */\n });\n}\nfunction showLoading(text, options) {\n const loader = document.createElement(\"span\");\n loader.innerHTML = LoaderSvg;\n loader.classList.add(\"toast-loader\");\n const loaderContent = document.createElement(\"span\");\n loaderContent.classList.add(\"toast-loader-container\");\n loaderContent.innerText = text;\n loaderContent.appendChild(loader);\n return showMessage(loaderContent, {\n ...options,\n close: false,\n timeout: TOAST_PERMANENT_TIMEOUT,\n type: \"toast-loading\"\n /* LOADING */\n });\n}\nfunction showUndo(text, onUndo, options) {\n if (!(onUndo instanceof Function)) {\n throw new Error(\"Please provide a valid onUndo method\");\n }\n options = Object.assign(options || {}, {\n // force 10 seconds of timeout\n timeout: TOAST_UNDO_TIMEOUT\n });\n const undoContent = document.createElement(\"span\");\n const undoButton = document.createElement(\"button\");\n undoContent.classList.add(\"toast-undo-container\");\n undoButton.classList.add(\"toast-undo-button\");\n undoButton.innerText = t(\"Undo\");\n undoContent.innerText = text;\n undoContent.appendChild(undoButton);\n const toast = showMessage(undoContent, {\n ...options,\n type: \"toast-undo\"\n /* UNDO */\n });\n undoButton.addEventListener(\"click\", function(event) {\n event.stopPropagation();\n onUndo(event);\n if (toast?.hideToast instanceof Function) {\n toast.hideToast();\n }\n });\n return toast;\n}\nconst _hoisted_1 = [\"textContent\"];\nconst _hoisted_2 = [\"innerHTML\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"GenericDialog\",\n props: {\n name: {},\n text: {},\n html: {},\n buttons: {},\n severity: {}\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const dialogButtons = computed(() => props.buttons?.map((button) => ({\n ...button,\n callback() {\n button.callback();\n emit(\"close\", true);\n }\n })));\n const handleUnload = () => `${props.name}: ${props.text}`;\n onMounted(() => window.addEventListener(\"unload\", handleUnload));\n onUnmounted(() => window.removeEventListener(\"unload\", handleUnload));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n dialogClasses: \"nc-generic-dialog\",\n buttons: dialogButtons.value,\n name: __props.name,\n message: __props.text,\n \"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"close\", false))\n }, {\n default: withCtx(() => [\n __props.severity ? (openBlock(), createBlock(unref(NcNoteCard), {\n key: 0,\n type: __props.severity\n }, {\n default: withCtx(() => [\n createElementVNode(\"p\", {\n textContent: toDisplayString(__props.text)\n }, null, 8, _hoisted_1)\n ]),\n _: 1\n }, 8, [\"type\"])) : createCommentVNode(\"\", true),\n __props.html ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n innerHTML: __props.html\n }, null, 8, _hoisted_2)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"buttons\", \"name\", \"message\"]);\n };\n }\n});\nclass Dialog {\n #name;\n #text;\n #buttons;\n #severity;\n constructor(name, text, buttons = [], severity) {\n this.#name = name;\n this.#text = text;\n this.#buttons = buttons;\n this.#severity = severity;\n }\n /**\n * Spawn and show the dialog - if already open the previous instance will be destroyed\n *\n * @return Promise that resolves when the dialog is answered successfully and rejects on close\n */\n async show() {\n const result = await spawnDialog(\n _sfc_main,\n {\n buttons: this.#buttons,\n name: this.#name,\n text: this.#text,\n severity: this.#severity\n }\n );\n if (!result) {\n throw new Error(\"Dialog closed\");\n }\n }\n}\nclass DialogBuilder {\n #severity;\n #text;\n #name;\n #buttons;\n constructor(name) {\n this.#severity = void 0;\n this.#text = \"\";\n this.#name = name ?? \"\";\n this.#buttons = [];\n }\n /**\n * Set dialog name\n *\n * @param name The name or headline of the dialog\n */\n setName(name) {\n this.#name = name;\n return this;\n }\n /**\n * Set the dialog text\n *\n * @param text Main text of the dialog\n */\n setText(text) {\n this.#text = text;\n return this;\n }\n /**\n * Set the severity of the dialog\n *\n * @param severity Severity of the dialog\n */\n setSeverity(severity) {\n this.#severity = severity;\n return this;\n }\n /**\n * Set buttons from array\n *\n * @param buttons Either an array of dialog buttons\n */\n setButtons(buttons) {\n if (this.#buttons.length > 0) {\n logger.warn(\"[@nextcloud/dialogs] Dialog buttons are already set - this overrides previous buttons.\");\n }\n this.#buttons = buttons;\n return this;\n }\n /**\n * Add a single button\n *\n * @param button Button to add\n */\n addButton(button) {\n this.#buttons.push(button);\n return this;\n }\n build() {\n return new Dialog(this.#name, this.#text, this.#buttons, this.#severity);\n }\n}\nfunction getDialogBuilder(name) {\n return new DialogBuilder(name);\n}\nasync function showConfirmation(options) {\n options = {\n labelConfirm: t(\"Confirm\"),\n ...options\n };\n const { promise, resolve } = Promise.withResolvers();\n const buttons = [{\n label: options.labelConfirm,\n variant: \"primary\",\n callback() {\n resolve(true);\n }\n }];\n if (options.labelReject) {\n buttons.unshift({\n label: options.labelReject,\n callback() {\n resolve(false);\n }\n });\n }\n const dialog = new Dialog(\n options.name,\n options.text,\n buttons,\n options.severity\n );\n await dialog.show();\n return promise;\n}\nexport {\n Dialog as D,\n FilePicker as F,\n TOAST_ARIA_LIVE_ASSERTIVE as T,\n DialogBuilder as a,\n FilePickerBuilder as b,\n FilePickerClosed as c,\n FilePickerType as d,\n TOAST_ARIA_LIVE_OFF as e,\n TOAST_ARIA_LIVE_POLITE as f,\n TOAST_DEFAULT_TIMEOUT as g,\n TOAST_PERMANENT_TIMEOUT as h,\n TOAST_UNDO_TIMEOUT as i,\n ToastAriaLive as j,\n ToastType as k,\n logger as l,\n getDialogBuilder as m,\n n,\n getFilePickerBuilder as o,\n openConflictPicker as p,\n showConfirmation as q,\n showGuestUserPrompt as r,\n showError as s,\n t,\n showInfo as u,\n showLoading as v,\n showMessage as w,\n showSuccess as x,\n showUndo as y,\n showWarning as z\n};\n//# sourceMappingURL=index-DL1yHC1K.mjs.map\n"],"file":"index-DL1yHC1K-DSbqJ9Gy.chunk.mjs"} \ No newline at end of file diff --git a/dist/index-mH69OG7L.chunk.mjs b/dist/index-mH69OG7L.chunk.mjs new file mode 100644 index 0000000000000..d6762c51afe03 --- /dev/null +++ b/dist/index-mH69OG7L.chunk.mjs @@ -0,0 +1,11 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/FilePicker-0pVFI2AM.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/index-BGv_Bbjs.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-YFFzfmzN.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/common-NcDateTime-b9UhLDij.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/ShareType-suoNfd7y.chunk.mjs'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcBreadcrumbs-B4eyDS9i-BknLVeOm.chunk.css'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/dav-DpOWisxz.chunk.mjs'),window.OC.filePath('', '', 'dist/index-D5zm-WFT.chunk.mjs')])))=>i.map(i=>d[i]); +import{b as j,S as M,ai as I,o as x,c as p,w as D,u as A,g as Y,t as P,h as w,f as _,v as V,_ as W}from"./Web-DYqXJUev.chunk.mjs";import{s as y,N as U}from"./index-CmDAUQql.chunk.mjs";import{t as T,g as L,l as q}from"./index-Cp0kcsps.chunk.mjs";import{l as K}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as O}from"./mdi-B6W_Xvj-.chunk.mjs";var v={exports:{}},H=v.exports,k;function R(){return k||(k=1,(function(i){(function(e,s){i.exports?i.exports=s():e.Toastify=s()})(H,function(e){var s=function(u){return new s.lib.init(u)},t="1.12.0";s.defaults={oldestFirst:!0,text:"Toastify is awesome!",node:void 0,duration:3e3,selector:void 0,callback:function(){},destination:void 0,newWindow:!1,close:!1,gravity:"toastify-top",positionLeft:!1,position:"",backgroundColor:"",avatar:"",className:"",stopOnFocus:!0,onClick:function(){},offset:{x:0,y:0},escapeMarkup:!0,ariaLive:"polite",style:{background:""}},s.lib=s.prototype={toastify:t,constructor:s,init:function(u){return u||(u={}),this.options={},this.toastElement=null,this.options.text=u.text||s.defaults.text,this.options.node=u.node||s.defaults.node,this.options.duration=u.duration===0?0:u.duration||s.defaults.duration,this.options.selector=u.selector||s.defaults.selector,this.options.callback=u.callback||s.defaults.callback,this.options.destination=u.destination||s.defaults.destination,this.options.newWindow=u.newWindow||s.defaults.newWindow,this.options.close=u.close||s.defaults.close,this.options.gravity=u.gravity==="bottom"?"toastify-bottom":s.defaults.gravity,this.options.positionLeft=u.positionLeft||s.defaults.positionLeft,this.options.position=u.position||s.defaults.position,this.options.backgroundColor=u.backgroundColor||s.defaults.backgroundColor,this.options.avatar=u.avatar||s.defaults.avatar,this.options.className=u.className||s.defaults.className,this.options.stopOnFocus=u.stopOnFocus===void 0?s.defaults.stopOnFocus:u.stopOnFocus,this.options.onClick=u.onClick||s.defaults.onClick,this.options.offset=u.offset||s.defaults.offset,this.options.escapeMarkup=u.escapeMarkup!==void 0?u.escapeMarkup:s.defaults.escapeMarkup,this.options.ariaLive=u.ariaLive||s.defaults.ariaLive,this.options.style=u.style||s.defaults.style,u.backgroundColor&&(this.options.style.background=u.backgroundColor),this},buildToast:function(){if(!this.options)throw"Toastify is not initialized";var u=document.createElement("div");u.className="toastify on "+this.options.className,this.options.position?u.className+=" toastify-"+this.options.position:this.options.positionLeft===!0?(u.className+=" toastify-left",console.warn("Property `positionLeft` will be depreciated in further versions. Please use `position` instead.")):u.className+=" toastify-right",u.className+=" "+this.options.gravity,this.options.backgroundColor&&console.warn('DEPRECATION NOTICE: "backgroundColor" is being deprecated. Please use the "style.background" property.');for(var a in this.options.style)u.style[a]=this.options.style[a];if(this.options.ariaLive&&u.setAttribute("aria-live",this.options.ariaLive),this.options.node&&this.options.node.nodeType===Node.ELEMENT_NODE)u.appendChild(this.options.node);else if(this.options.escapeMarkup?u.innerText=this.options.text:u.innerHTML=this.options.text,this.options.avatar!==""){var g=document.createElement("img");g.src=this.options.avatar,g.className="toastify-avatar",this.options.position=="left"||this.options.positionLeft===!0?u.appendChild(g):u.insertAdjacentElement("afterbegin",g)}if(this.options.close===!0){var o=document.createElement("button");o.type="button",o.setAttribute("aria-label","Close"),o.className="toast-close",o.innerHTML="✖",o.addEventListener("click",function(C){C.stopPropagation(),this.removeElement(this.toastElement),window.clearTimeout(this.toastElement.timeOutValue)}.bind(this));var m=window.innerWidth>0?window.innerWidth:screen.width;(this.options.position=="left"||this.options.positionLeft===!0)&&m>360?u.insertAdjacentElement("afterbegin",o):u.appendChild(o)}if(this.options.stopOnFocus&&this.options.duration>0){var d=this;u.addEventListener("mouseover",function(C){window.clearTimeout(u.timeOutValue)}),u.addEventListener("mouseleave",function(){u.timeOutValue=window.setTimeout(function(){d.removeElement(u)},d.options.duration)})}if(typeof this.options.destination<"u"&&u.addEventListener("click",function(C){C.stopPropagation(),this.options.newWindow===!0?window.open(this.options.destination,"_blank"):window.location=this.options.destination}.bind(this)),typeof this.options.onClick=="function"&&typeof this.options.destination>"u"&&u.addEventListener("click",function(C){C.stopPropagation(),this.options.onClick()}.bind(this)),typeof this.options.offset=="object"){var E=n("x",this.options),c=n("y",this.options),B=this.options.position=="left"?E:"-"+E,S=this.options.gravity=="toastify-top"?c:"-"+c;u.style.transform="translate("+B+","+S+")"}return u},showToast:function(){this.toastElement=this.buildToast();var u;if(typeof this.options.selector=="string"?u=document.getElementById(this.options.selector):this.options.selector instanceof HTMLElement||typeof ShadowRoot<"u"&&this.options.selector instanceof ShadowRoot?u=this.options.selector:u=document.body,!u)throw"Root element is not defined";var a=s.defaults.oldestFirst?u.firstChild:u.lastChild;return u.insertBefore(this.toastElement,a),s.reposition(),this.options.duration>0&&(this.toastElement.timeOutValue=window.setTimeout(function(){this.removeElement(this.toastElement)}.bind(this),this.options.duration)),this},hideToast:function(){this.toastElement.timeOutValue&&clearTimeout(this.toastElement.timeOutValue),this.removeElement(this.toastElement)},removeElement:function(u){u.className=u.className.replace(" on",""),window.setTimeout(function(){this.options.node&&this.options.node.parentNode&&this.options.node.parentNode.removeChild(this.options.node),u.parentNode&&u.parentNode.removeChild(u),this.options.callback.call(u),s.reposition()}.bind(this),400)}},s.reposition=function(){for(var u={top:15,bottom:15},a={top:15,bottom:15},g={top:15,bottom:15},o=document.getElementsByClassName("toastify"),m,d=0;d0?window.innerWidth:screen.width;B<=360?(o[d].style[m]=g[m]+"px",g[m]+=E+c):r(o[d],"toastify-left")===!0?(o[d].style[m]=u[m]+"px",u[m]+=E+c):(o[d].style[m]=a[m]+"px",a[m]+=E+c)}return this};function n(u,a){return a.offset[u]?isNaN(a.offset[u])?a.offset[u]:a.offset[u]+"px":"0px"}function r(u,a){return!u||typeof a!="string"?!1:!!(u.className&&u.className.trim().split(/\s+/gi).indexOf(a)>-1)}return s.lib.init.prototype=s.lib,s})})(v)),v.exports}var G=R();const Z=T(G),J='',Q='',b=K().detectLanguage();for(const i of[{language:"ar",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" لا يصلح كاسم مجلد.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" غير مسموح به كاسم مجلد']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" غير مسموح به داخل اسم مجلد.']},{msgid:"All files",msgstr:["كل الملفات"]},{msgid:"Choose",msgstr:["إختَر"]},{msgid:"Choose {file}",msgstr:["إختر {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["إختَر %n ملف","إختَر %n ملف","إختَر %n ملف","إختَر %n ملفات","إختَر %n ملف","إختر %n ملف"]},{msgid:"Copy",msgstr:["نسخ"]},{msgid:"Copy to {target}",msgstr:["نسخ إلى {target}"]},{msgid:"Could not create the new folder",msgstr:["تعذّر إنشاء المجلد الجديد"]},{msgid:"Could not load files settings",msgstr:["يتعذّر تحميل إعدادات الملفات"]},{msgid:"Could not load files views",msgstr:["تعذر تحميل عرض الملفات"]},{msgid:"Create directory",msgstr:["إنشاء مجلد"]},{msgid:"Current view selector",msgstr:["محدد العرض الحالي"]},{msgid:"Favorites",msgstr:["المفضلة"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["الملفات والمجلدات التي تحددها كمفضلة ستظهر هنا."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["الملفات و المجلدات التي قمت مؤخراً بتعديلها سوف تظهر هنا."]},{msgid:"Filter file list",msgstr:["تصفية قائمة الملفات"]},{msgid:"Folder name cannot be empty.",msgstr:["اسم المجلد لا يمكن أن يكون فارغاً."]},{msgid:"Home",msgstr:["البداية"]},{msgid:"Modified",msgstr:["التعديل"]},{msgid:"Move",msgstr:["نقل"]},{msgid:"Move to {target}",msgstr:["نقل إلى {target}"]},{msgid:"Name",msgstr:["الاسم"]},{msgid:"New",msgstr:["جديد"]},{msgid:"New folder",msgstr:["مجلد جديد"]},{msgid:"New folder name",msgstr:["اسم المجلد الجديد"]},{msgid:"No files in here",msgstr:["لا توجد ملفات هنا"]},{msgid:"No files matching your filter were found.",msgstr:["لا توجد ملفات تتطابق مع عامل التصفية الذي وضعته"]},{msgid:"No matching files",msgstr:["لا توجد ملفات مطابقة"]},{msgid:"Recent",msgstr:["الحالي"]},{msgid:"Select all entries",msgstr:["حدد جميع الإدخالات"]},{msgid:"Select entry",msgstr:["إختَر المدخل"]},{msgid:"Select the row for {nodename}",msgstr:["إختر سطر الـ {nodename}"]},{msgid:"Size",msgstr:["الحجم"]},{msgid:"Undo",msgstr:["تراجع"]},{msgid:"Upload some content or sync with your devices!",msgstr:["قم برفع بعض المحتوى أو المزامنة مع أجهزتك!"]}]},{language:"ast",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["«{name}» ye un nome de carpeta inválidu."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["«{name}» ye un nome de carpeta inválidu"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["Nun se permite'l caráuter «/» dientro'l nome de les carpetes."]},{msgid:"All files",msgstr:["Tolos ficheros"]},{msgid:"Choose",msgstr:["Escoyer"]},{msgid:"Choose {file}",msgstr:["Escoyer «{ficheru}»"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escoyer %n ficheru","Escoyer %n ficheros"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar en: {target}"]},{msgid:"Could not create the new folder",msgstr:["Nun se pudo crear la carpeta"]},{msgid:"Could not load files settings",msgstr:["Nun se pudo cargar la configuración de los ficheros"]},{msgid:"Could not load files views",msgstr:["Nun se pudieron cargar les vistes de los ficheros"]},{msgid:"Create directory",msgstr:["Crear un direutoriu"]},{msgid:"Current view selector",msgstr:["Selector de la vista actual"]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Equí apaecen los ficheros y les carpetes que metas en Favoritos."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Equí apaecen los fichero y les carpetes que modificares apocayá."]},{msgid:"Filter file list",msgstr:["Peñerar la llista de ficheros"]},{msgid:"Folder name cannot be empty.",msgstr:["El nome de la carpeta nun pue tar baleru."]},{msgid:"Home",msgstr:["Aniciu"]},{msgid:"Modified",msgstr:["Modificóse"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"New",msgstr:["Nuevu"]},{msgid:"New folder",msgstr:["Carpeta nueva"]},{msgid:"New folder name",msgstr:["Nome de carpeta nuevu"]},{msgid:"No files in here",msgstr:["Equí nun hai nengún ficheru"]},{msgid:"No files matching your filter were found.",msgstr:["Nun s'atopó nengún ficheru que concasare cola peñera."]},{msgid:"No matching files",msgstr:["Nun hai nengún ficheru que concase"]},{msgid:"Recent",msgstr:["De recién"]},{msgid:"Select all entries",msgstr:["Seleicionar toles entraes"]},{msgid:"Select entry",msgstr:["Seleicionar la entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleicionar la filera de: {nodename}"]},{msgid:"Size",msgstr:["Tamañu"]},{msgid:"Undo",msgstr:["Desfacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Xubi dalgún elementu o sincroniza colos tos preseos!"]}]},{language:"ca",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:[`No és permès d'usar el caràcter "{char}" en un nom.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" no és un nom permès.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" no és vàlid com a nom de carpeta.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" no és vàlid com a nom de carpeta']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" és un mot reservat i no està permès com a nom.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:[`"/" no està permès en el nom d'una carpeta.`]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n conflicte de fitxers","%n conflictes de fitxers"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n onflicte de fitxers a {dirname}","%n conflictes de fitxers a {dirname}"]},{msgid:"All files",msgstr:["Tots els fitxers"]},{msgid:"Cancel",msgstr:["Cancel·lar"]},{msgid:"Cancel the entire operation",msgstr:["Cancel·lar tota l'operació"]},{msgid:"Choose",msgstr:["Tria"]},{msgid:"Choose {file}",msgstr:["Tria {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Tria %n fitxer","Tria %n fitxers"]},{msgid:"Confirm",msgstr:["Confirma"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copia"]},{msgid:"Copy to {target}",msgstr:["Copia a {target}"]},{msgid:"Could not create the new folder",msgstr:["No s'ha pogut crear la carpeta nova"]},{msgid:"Could not load files settings",msgstr:["No es poden carregar fitxers de configuració"]},{msgid:"Could not load files views",msgstr:["No es poden carregar fitxers de vistes"]},{msgid:"Create directory",msgstr:["Crea un directori"]},{msgid:"Current view selector",msgstr:["Selector de visualització actual"]},{msgid:"Enter your name",msgstr:["Escriviu el vostre nom"]},{msgid:"Existing version",msgstr:["Versió existent"]},{msgid:"Failed to set nickname.",msgstr:["No s'ha pogut desar el sobrenom."]},{msgid:"Favorites",msgstr:["Preferits"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Els fitxers i les carpetes que marqueu com a favorits es mostraran aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Els fitxers i les carpetes recentment modificats es mostraran aquí."]},{msgid:"Filter file list",msgstr:["Filtrar llistat de fitxers"]},{msgid:"Folder name cannot be empty.",msgstr:["El nom de la carpeta no pot estar buit."]},{msgid:"Guest identification",msgstr:["Identificació com a convidat"]},{msgid:"Home",msgstr:["Inici"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom."]},{msgid:"Invalid name.",msgstr:["Nom no vàlid."]},{msgid:"Last modified date unknown",msgstr:["Data de l'última modificació desconeguda"]},{msgid:"Modified",msgstr:["Data de modificació"]},{msgid:"Move",msgstr:["Desplaça"]},{msgid:"Move to {target}",msgstr:["Desplaça a {target}"]},{msgid:"Name",msgstr:["Nom"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Els noms poden tenir com a màxim 64 caràcters."]},{msgid:"Names must not be empty.",msgstr:["Els noms no poden ser buits."]},{msgid:'Names must not end with "{extension}".',msgstr:[`Els noms no poden acabar amb l'extensió "{extension}".`]},{msgid:"Names must not start with a dot.",msgstr:["Els noms no poden començar amb un punt."]},{msgid:"New",msgstr:["Crea"]},{msgid:"New folder",msgstr:["Carpeta nova"]},{msgid:"New folder name",msgstr:["Nom de la carpeta nova"]},{msgid:"New version",msgstr:["Nova versió"]},{msgid:"No files in here",msgstr:["No hi ha cap fitxer"]},{msgid:"No files matching your filter were found.",msgstr:["No s'ha trobat cap fitxer que coincideixi amb el filtre."]},{msgid:"No matching files",msgstr:["No hi ha cap fitxer que coincideixi"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Si us plau, escriu un nom amb 2 caràcters com a mínim."]},{msgid:"Recent",msgstr:["Recents"]},{msgid:"Select all checkboxes",msgstr:["Selecciona totes les caselles de selecció"]},{msgid:"Select all entries",msgstr:["Selecciona totes les entrades"]},{msgid:"Select all existing files",msgstr:["Selecciona tots els fitxers existents"]},{msgid:"Select all new files",msgstr:["Selecciona tots els fitxers nous"]},{msgid:"Select entry",msgstr:["Selecciona l'entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Selecciona la fila per a {nodename}"]},{msgid:"Size",msgstr:["Mida"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Omet %n fitxer","Omet %n fitxers"]},{msgid:"Skip this file",msgstr:["Omet aquest fitxer"]},{msgid:"Submit name",msgstr:["Entreu el nom"]},{msgid:"Undo",msgstr:["Desfés"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Pugeu contingut o sincronitzeu-lo amb els vostres dispositius!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Quan es selecciona una carpeta entrant, també se sobreescriuran els fitxers que hi entrin en conflicte."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quan es selecciona una carpeta entrant, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes."]},{msgid:"Which files do you want to keep?",msgstr:["Quins fitxers voleu conservar?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Actualment se us mostra com a {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Actualment no esteu identificat."]},{msgid:"You cannot leave the name empty.",msgstr:["No podeu deixar el nom buit."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Heu de triar com a mínim una solució de conflicte"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Heu de seleccionar com a mínim una versió de cada fitxer per continuar."]}]},{language:"cs_CZ",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["znak „{char}“ není možné použít uvnitř názvu složky."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["„{char}“ není možné použít uvnitř názvu."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["„{extension}“ není možné použít jako název."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["„{segment}“ je vyhrazeným názvem a není možné ho používat pro názvy složek."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["„{segment}“ je vyhrazeným názvem a není možné ho použít."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n kolize souboru","%n kolize souborů","%n kolizí souborů","%n kolize souborů"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n kolize souborů v {dirname}","%n kolize souborů v {dirname}","%n kolizí souborů v {dirname}","%n kolize souborů v {dirname}"]},{msgid:"All files",msgstr:["Veškeré soubory"]},{msgid:"Cancel",msgstr:["Storno"]},{msgid:"Cancel the entire operation",msgstr:["Zrušit celou operaci"]},{msgid:"Choose",msgstr:["Zvolit"]},{msgid:"Choose {file}",msgstr:["Zvolit {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Zvolte %n soubor","Zvolte %n soubory","Zvolte %n souborů","Zvolte %n soubory"]},{msgid:"Confirm",msgstr:["Potvrdit"]},{msgid:"Continue",msgstr:["Pokračovat"]},{msgid:"Copy",msgstr:["Zkopírovat"]},{msgid:"Copy to {target}",msgstr:["Zkopírovat do {target}"]},{msgid:"Could not create the new folder",msgstr:["Novou složku se nepodařilo vytvořit"]},{msgid:"Could not load files settings",msgstr:["Nepodařilo se načíst nastavení pro soubory"]},{msgid:"Could not load files views",msgstr:["Nepodařilo se načíst pohledy souborů"]},{msgid:"Create directory",msgstr:["Vytvořit složku"]},{msgid:"Current view selector",msgstr:["Výběr stávajícího zobrazení"]},{msgid:"Enter your name",msgstr:["Zadejte své jméno"]},{msgid:"Existing version",msgstr:["Existující verze"]},{msgid:"Failed to set nickname.",msgstr:["Nepodařilo se nastavit přezdívku."]},{msgid:"Favorites",msgstr:["Oblíbené"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Zde se zobrazí soubory a složky, které označíte jako oblíbené."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Zde se zobrazí soubory a složky, které jste nedávno pozměnili."]},{msgid:"Filter file list",msgstr:["Filtrovat seznam souborů"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Názvy složek nemohou končit na „{extension}“."]},{msgid:"Guest identification",msgstr:["Identifikace hosta"]},{msgid:"Home",msgstr:["Domů"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Pokud vyberete obě verze, pak k názvu příchozího souboru bude přidáno číslo."]},{msgid:"Invalid folder name.",msgstr:["Neplatný název složky."]},{msgid:"Invalid name.",msgstr:["Neplatný název."]},{msgid:"Last modified date unknown",msgstr:["Datum poslední změny neznámé"]},{msgid:"Modified",msgstr:["Změněno"]},{msgid:"Move",msgstr:["Přesounout"]},{msgid:"Move to {target}",msgstr:["Přesunout do {target}"]},{msgid:"Name",msgstr:["Název"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Je třeba, aby délka jmen nepřesahovala 64 znaků."]},{msgid:"Names must not be empty.",msgstr:["Názvy je třeba vyplnit."]},{msgid:'Names must not end with "{extension}".',msgstr:["Názvy nemohou končit na „{extension}“."]},{msgid:"Names must not start with a dot.",msgstr:["Názvy nemohou začínat tečkou."]},{msgid:"New",msgstr:["Nové"]},{msgid:"New folder",msgstr:["Nová složka"]},{msgid:"New folder name",msgstr:["Název pro novou složku"]},{msgid:"New version",msgstr:["Nová verze"]},{msgid:"No files in here",msgstr:["Nejsou zde žádné soubory"]},{msgid:"No files matching your filter were found.",msgstr:["Nenalezeny žádné soubory odpovídající vašemu filtru"]},{msgid:"No matching files",msgstr:["Žádné odpovídající soubory"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Zadejte jméno dlouhé alespoň 2 znaky."]},{msgid:"Recent",msgstr:["Nedávné"]},{msgid:"Select all checkboxes",msgstr:["Vybrat všechny zaškrtávací kolonky"]},{msgid:"Select all entries",msgstr:["Vybrat všechny položky"]},{msgid:"Select all existing files",msgstr:["Vybrat všechny existující soubory"]},{msgid:"Select all new files",msgstr:["Vybrat všechny nové soubory"]},{msgid:"Select entry",msgstr:["Vybrat položku"]},{msgid:"Select the row for {nodename}",msgstr:["Vybrat řádek pro {nodename}"]},{msgid:"Size",msgstr:["Velikost"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Přeskočit %n soubor","Přeskočit %n soubory","Přeskočit %n souborů","Přeskočit %n soubory"]},{msgid:"Skip this file",msgstr:["Přeskočit tento soubor"]},{msgid:"Submit name",msgstr:["Odeslat jméno"]},{msgid:"Undo",msgstr:["Zpět"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Nahrajte sem nějaký obsah nebo proveďte synchronizaci se svými zařízeními!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Pokud je vybrána příchozí složka, budou v ní také přepsány jakékoli kolidující soubory."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Když je vybrána příchozí složka, jakékoli soubory v ní budou také přepsány."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Pokud je vybrána příchozí složka, je obsah zapsán do existující složky a je provedeno rekurzivní vyřešení kolizí."]},{msgid:"Which files do you want to keep?",msgstr:["Které soubory chcete ponechat?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["V tuto chvíli jste identifikováni jako {nickname}."]},{msgid:"You are currently not identified.",msgstr:["V tuto chvíli nejste identifikovaní."]},{msgid:"You cannot leave the name empty.",msgstr:["Jméno nelze ponechat nevyplněné."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Je třeba zvolit alespoň jedno z řešení kolize"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru."]}]},{language:"da",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" er ikke tilladt i et navn.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" er ikke tilladt i et navn.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" er et ugyldigt mappenavn.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" er ikke et tilladt mappenavn']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" er et reserveret navn og er derfor ikke tilladt.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" er ikke tilladt i et mappenavn.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n filkonflikt","%n filer konflikter"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n filkonflikt i {dirname}","%n filkonflikter i {dirname}"]},{msgid:"All files",msgstr:["Alle filer"]},{msgid:"Cancel",msgstr:["Fortryd"]},{msgid:"Cancel the entire operation",msgstr:["Annullér hele operationen"]},{msgid:"Choose",msgstr:["Vælg"]},{msgid:"Choose {file}",msgstr:["Vælg {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Vælg %n fil","Vælg %n filer"]},{msgid:"Confirm",msgstr:["Bekræft"]},{msgid:"Continue",msgstr:["Fortsæt"]},{msgid:"Copy",msgstr:["Kopier"]},{msgid:"Copy to {target}",msgstr:["Kopier til {target}"]},{msgid:"Could not create the new folder",msgstr:["Kunne ikke oprette den nye mappe"]},{msgid:"Could not load files settings",msgstr:["Filindstillingerne kunne ikke indlæses"]},{msgid:"Could not load files views",msgstr:["Kunne ikke indlæse filvisninger"]},{msgid:"Create directory",msgstr:["Opret mappe"]},{msgid:"Current view selector",msgstr:["Aktuel visningsvælger"]},{msgid:"Enter your name",msgstr:["Indtast dit navn"]},{msgid:"Existing version",msgstr:["Eksisterende version"]},{msgid:"Failed to set nickname.",msgstr:["Forsøg på at gemme kaldenavn mislykkedes."]},{msgid:"Favorites",msgstr:["Favoritter"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Filer og mapper, du markerer som foretrukne, vises her."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Filer og mapper, du for nylig har ændret, vises her."]},{msgid:"Filter file list",msgstr:["Filtrer fil liste"]},{msgid:"Folder name cannot be empty.",msgstr:["Mappenavnet må ikke være tomt."]},{msgid:"Guest identification",msgstr:["Gæsteidentifikation"]},{msgid:"Home",msgstr:["Hjem"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn."]},{msgid:"Invalid name.",msgstr:["Ugyldigt navn."]},{msgid:"Last modified date unknown",msgstr:["Senest ændret dato ukendt"]},{msgid:"Modified",msgstr:["Ændret"]},{msgid:"Move",msgstr:["Flyt"]},{msgid:"Move to {target}",msgstr:["Flyt til {target}"]},{msgid:"Name",msgstr:["Navn"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Navne kan højst være 64 tegn lange."]},{msgid:"Names must not be empty.",msgstr:["Navne kan ikke være tomt."]},{msgid:'Names must not end with "{extension}".',msgstr:['Navne må ikke ende på "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Navne skal starte med et punktum."]},{msgid:"New",msgstr:["Ny"]},{msgid:"New folder",msgstr:["Ny mappe"]},{msgid:"New folder name",msgstr:["Ny mappe navn"]},{msgid:"New version",msgstr:["Ny version"]},{msgid:"No files in here",msgstr:["Ingen filer here"]},{msgid:"No files matching your filter were found.",msgstr:["Der blev ikke fundet nogen filer, der matcher dit filter."]},{msgid:"No matching files",msgstr:["Ingen matchende filer"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Indtast et navn med mindst 2 tegn."]},{msgid:"Recent",msgstr:["Seneste"]},{msgid:"Select all checkboxes",msgstr:["Markér alle afkrydsningsfelter"]},{msgid:"Select all entries",msgstr:["Vælg alle poster"]},{msgid:"Select all existing files",msgstr:["Vælg alle eksisterende filer"]},{msgid:"Select all new files",msgstr:["Vælg alle nye filer"]},{msgid:"Select entry",msgstr:["Vælg post"]},{msgid:"Select the row for {nodename}",msgstr:["Vælg rækken for {nodenavn}"]},{msgid:"Size",msgstr:["Størelse"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Spring %n fil over","Spring %n filer over"]},{msgid:"Skip this file",msgstr:["Spring denne fil over"]},{msgid:"Submit name",msgstr:["Indsend navn"]},{msgid:"Undo",msgstr:["Fortryd"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Upload noget indhold eller synkroniser med dine enheder!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Når en indkommende mappe er valgt, vil eventuelle modstridende filer i det også blive overskrevet."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Når en indkommende mappe er valgt, er indholdet skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres."]},{msgid:"Which files do you want to keep?",msgstr:["Hvilke filer vil du have?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du er i øjeblikket identificeret som {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Du er ikke identificeret."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kan ikke efterlade navnet tomt."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Du skal vælge mindst én konfliktløsning"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du skal vælge mindst én version af hver fil for at fortsætte."]}]},{language:"de",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" ist innerhalb eines Ordnernamens nicht zulässig.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" ist innerhalb eines Namens nicht zulässig.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ist kein zulässiger Name.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig für Ordnernamen.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n Dateikonflikt","%n Dateikonflikte"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n Dateikonflikt in {dirname}","%n Dateikonflikte in {dirname}"]},{msgid:"All files",msgstr:["Alle Dateien"]},{msgid:"Cancel",msgstr:["Abbrechen"]},{msgid:"Cancel the entire operation",msgstr:["Den gesamten Vorgang abbrechen"]},{msgid:"Choose",msgstr:["Auswählen"]},{msgid:"Choose {file}",msgstr:["{file} auswählen"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n Datei auswählen","%n Dateien auswählen"]},{msgid:"Confirm",msgstr:["Bestätigen"]},{msgid:"Continue",msgstr:["Fortsetzen"]},{msgid:"Copy",msgstr:["Kopieren"]},{msgid:"Copy to {target}",msgstr:["Nach {target} kopieren"]},{msgid:"Could not create the new folder",msgstr:["Der neue Ordner konnte nicht erstellt werden"]},{msgid:"Could not load files settings",msgstr:["Dateieinstellungen konnten nicht geladen werden"]},{msgid:"Could not load files views",msgstr:["Dateiansichten konnten nicht geladen werden"]},{msgid:"Create directory",msgstr:["Verzeichnis erstellen"]},{msgid:"Current view selector",msgstr:["Aktuelle Ansichtsauswahl"]},{msgid:"Enter your name",msgstr:["Gib deinen Namen ein"]},{msgid:"Existing version",msgstr:["Vorhandene Version"]},{msgid:"Failed to set nickname.",msgstr:["Spitzname konnte nicht gespeichert werden."]},{msgid:"Favorites",msgstr:["Favoriten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Dateien und Ordner, die du als Favorit markierst, werden hier angezeigt."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Dateien und Ordner, die du kürzlich geändert hast, werden hier angezeigt."]},{msgid:"Filter file list",msgstr:["Dateiliste filtern"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Ordnernamen dürfen nicht mit "{extension}" enden.']},{msgid:"Guest identification",msgstr:["Gast-Identifikation"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt."]},{msgid:"Invalid folder name.",msgstr:["Ungültiger Ordnername."]},{msgid:"Invalid name.",msgstr:["Ungültiger Name."]},{msgid:"Last modified date unknown",msgstr:["Datum der letzten Änderung unbekannt"]},{msgid:"Modified",msgstr:["Geändert"]},{msgid:"Move",msgstr:["Verschieben"]},{msgid:"Move to {target}",msgstr:["Nach {target} verschieben"]},{msgid:"Name",msgstr:["Name"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namen dürfen maximal 64 Zeichen lang sein."]},{msgid:"Names must not be empty.",msgstr:["Namen dürfen nicht leer sein."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namen dürfen nicht mit "{extension}" enden.']},{msgid:"Names must not start with a dot.",msgstr:["Namen dürfen nicht mit einem Punkt beginnen."]},{msgid:"New",msgstr:["Neu"]},{msgid:"New folder",msgstr:["Neuer Ordner"]},{msgid:"New folder name",msgstr:["Neuer Ordnername"]},{msgid:"New version",msgstr:["Neue Version"]},{msgid:"No files in here",msgstr:["Hier sind keine Dateien"]},{msgid:"No files matching your filter were found.",msgstr:["Es wurden keine Dateien gefunden, die deinem Filter entsprechen."]},{msgid:"No matching files",msgstr:["Keine passenden Dateien"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Bitte einen Namen mit mindestens zwei Zeichen eingeben."]},{msgid:"Recent",msgstr:["Neueste"]},{msgid:"Select all checkboxes",msgstr:["Alle Kontrollkästchen aktivieren"]},{msgid:"Select all entries",msgstr:["Alle Einträge auswählen"]},{msgid:"Select all existing files",msgstr:["Alle vorhandenen Dateien auswählen"]},{msgid:"Select all new files",msgstr:["Alle neuen Dateien auswählen"]},{msgid:"Select entry",msgstr:["Eintrag auswählen"]},{msgid:"Select the row for {nodename}",msgstr:["Die Zeile für {nodename} auswählen."]},{msgid:"Size",msgstr:["Größe"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n Datei überspringen","%n Dateien überspringen"]},{msgid:"Skip this file",msgstr:["Diese Datei überspringen"]},{msgid:"Submit name",msgstr:["Namen senden"]},{msgid:"Undo",msgstr:["Rückgängig machen"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Lade Inhalte hoch oder synchronisiere diese mit deinen Geräten!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien überschrieben."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt."]},{msgid:"Which files do you want to keep?",msgstr:["Welche Dateien sollen behalten werden?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du bist derzeit als {nickname} identifiziert."]},{msgid:"You are currently not identified.",msgstr:["Du bist momentan nicht identifiziert."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kannst den Namen nicht leer lassen."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Es muss mindestens eine Konfliktlösung gewählt werden"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren."]}]},{language:"de_DE",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" ist innerhalb eines Ordnernamens nicht zulässig.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" ist innerhalb eines Namens nicht zulässig.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ist kein zulässiger Name.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig für Ordnernamen.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n Dateikonflikt","%n Dateikonflikte"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n Dateikonflikt in {dirname}","%n Dateikonflikte in {dirname}"]},{msgid:"All files",msgstr:["Alle Dateien"]},{msgid:"Cancel",msgstr:["Abbrechen"]},{msgid:"Cancel the entire operation",msgstr:["Den gesamten Vorgang abbrechen"]},{msgid:"Choose",msgstr:["Auswählen"]},{msgid:"Choose {file}",msgstr:["{file} auswählen"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n Datei auswählen","%n Dateien auswählen"]},{msgid:"Confirm",msgstr:["Bestätigen"]},{msgid:"Continue",msgstr:["Fortsetzen"]},{msgid:"Copy",msgstr:["Kopieren"]},{msgid:"Copy to {target}",msgstr:["Nach {target} kopieren"]},{msgid:"Could not create the new folder",msgstr:["Der neue Ordner konnte nicht erstellt werden"]},{msgid:"Could not load files settings",msgstr:["Dateieinstellungen konnten nicht geladen werden"]},{msgid:"Could not load files views",msgstr:["Dateiansichten konnten nicht geladen werden"]},{msgid:"Create directory",msgstr:["Verzeichnis erstellen"]},{msgid:"Current view selector",msgstr:["Aktuelle Ansichtsauswahl"]},{msgid:"Enter your name",msgstr:["Geben Sie Ihren Namen ein"]},{msgid:"Existing version",msgstr:["Vorhandene Version"]},{msgid:"Failed to set nickname.",msgstr:["Spitzname konnte nicht gespeichert werden."]},{msgid:"Favorites",msgstr:["Favoriten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Dateien und Ordner, die Sie als Favorit markieren, werden hier angezeigt."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Dateien und Ordner, die Sie kürzlich geändert haben, werden hier angezeigt."]},{msgid:"Filter file list",msgstr:["Dateiliste filtern"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Ordnernamen dürfen nicht mit "{extension}" enden.']},{msgid:"Guest identification",msgstr:["Gast-Identifikation"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt."]},{msgid:"Invalid folder name.",msgstr:["Ungültiger Ordnername."]},{msgid:"Invalid name.",msgstr:["Ungültiger Name."]},{msgid:"Last modified date unknown",msgstr:["Datum der letzten Änderung unbekannt"]},{msgid:"Modified",msgstr:["Geändert"]},{msgid:"Move",msgstr:["Verschieben"]},{msgid:"Move to {target}",msgstr:["Nach {target} verschieben"]},{msgid:"Name",msgstr:["Name"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namen dürfen maximal 64 Zeichen lang sein."]},{msgid:"Names must not be empty.",msgstr:["Namen dürfen nicht leer sein."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namen dürfen nicht mit "{extension}" enden.']},{msgid:"Names must not start with a dot.",msgstr:["Namen dürfen nicht mit einem Punkt beginnen."]},{msgid:"New",msgstr:["Neu"]},{msgid:"New folder",msgstr:["Neuer Ordner"]},{msgid:"New folder name",msgstr:["Neuer Ordnername"]},{msgid:"New version",msgstr:["Neue Version"]},{msgid:"No files in here",msgstr:["Hier sind keine Dateien"]},{msgid:"No files matching your filter were found.",msgstr:["Es wurden keine Dateien gefunden, die Ihrem Filter entsprechen."]},{msgid:"No matching files",msgstr:["Keine passenden Dateien"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Bitte einen Namen mit mindestens zwei Zeichen eingeben."]},{msgid:"Recent",msgstr:["Neueste"]},{msgid:"Select all checkboxes",msgstr:["Alle Kontrollkästchen aktivieren"]},{msgid:"Select all entries",msgstr:["Alle Einträge auswählen"]},{msgid:"Select all existing files",msgstr:["Alle vorhandenen Dateien auswählen"]},{msgid:"Select all new files",msgstr:["Alle neuen Dateien auswählen"]},{msgid:"Select entry",msgstr:["Eintrag auswählen"]},{msgid:"Select the row for {nodename}",msgstr:["Die Zeile für {nodename} auswählen."]},{msgid:"Size",msgstr:["Größe"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n Datei überspringen","%n Dateien überspringen"]},{msgid:"Skip this file",msgstr:["Diese Datei überspringen"]},{msgid:"Submit name",msgstr:["Namen senden"]},{msgid:"Undo",msgstr:["Rückgängig machen"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Laden Sie Inhalte hoch oder synchronisieren Sie diese mit Ihren Geräten!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien überschrieben."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt."]},{msgid:"Which files do you want to keep?",msgstr:["Welche Dateien sollen behalten werden?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sie sind derzeit als {nickname} identifiziert."]},{msgid:"You are currently not identified.",msgstr:["Sie sind momentan nicht identifiziert."]},{msgid:"You cannot leave the name empty.",msgstr:["Sie können den Namen nicht leer lassen."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Es muss mindestens eine Konfliktlösung gewählt werden"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren."]}]},{language:"el",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["Το «{char}» δεν επιτρέπεται μέσα σε όνομα φακέλου."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" δεν επιτρέπεται μέσα σε ένα όνομα.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" δεν είναι επιτρεπτό όνομα.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["Το «{segment}» είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται για ονόματα φακέλων."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n σύγκρουση αρχείου","%n σύγκρουση αρχείων"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n σύγκρουση αρχείου στο {dirname}","%n σύγκρουση αρχείων στο {dirname}"]},{msgid:"All files",msgstr:["Όλα τα αρχεία"]},{msgid:"Cancel",msgstr:["Ακύρωση"]},{msgid:"Cancel the entire operation",msgstr:["Ακύρωση όλης της διαδικασίας"]},{msgid:"Choose",msgstr:["Επιλογή"]},{msgid:"Choose {file}",msgstr:["Επιλέξτε {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Επιλέξτε %n αρχείο","Επιλέξτε %n αρχεία"]},{msgid:"Confirm",msgstr:["Επιβεβαίωση"]},{msgid:"Continue",msgstr:["Συνέχεια"]},{msgid:"Copy",msgstr:["Αντιγραφή"]},{msgid:"Copy to {target}",msgstr:["Αντιγραφή στο {target}"]},{msgid:"Could not create the new folder",msgstr:["Αδυναμία δημιουργίας νέου φακέλου"]},{msgid:"Could not load files settings",msgstr:["Αδυναμία φόρτωσης ρυθμίσεων αρχείων"]},{msgid:"Could not load files views",msgstr:["Αδυναμία φόρτωσης προβολών αρχείων"]},{msgid:"Create directory",msgstr:["Δημιουργία καταλόγου"]},{msgid:"Current view selector",msgstr:["Επιλογέας τρέχουσας προβολής"]},{msgid:"Enter your name",msgstr:["Εισάγετε το όνομά σας"]},{msgid:"Existing version",msgstr:["Υφιστάμενη έκδοση"]},{msgid:"Failed to set nickname.",msgstr:["Αποτυχία στην ρύθμιση του ψευδώνυμου."]},{msgid:"Favorites",msgstr:["Αγαπημένα"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Τα αρχεία και οι φάκελοι που επισημάνετε ως αγαπημένα θα εμφανίζονται εδώ."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Τα αρχεία και οι φάκελοι που τροποποιήσατε πρόσφατα θα εμφανίζονται εδώ."]},{msgid:"Filter file list",msgstr:["Φιλτράρισμα λίστας αρχείων"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Τα ονόματα των φακέλων δεν πρέπει να τελειώνουν με «{extension}»."]},{msgid:"Guest identification",msgstr:["Ταυτοποίηση επισκέπτη"]},{msgid:"Home",msgstr:["Αρχική"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Εάν επιλέξετε και τις δύο εκδόσεις, στο όνομα του εισερχόμενου αρχείου θα προστεθεί ένας αριθμός."]},{msgid:"Invalid folder name.",msgstr:["Μη έγκυρο όνομα φακέλου."]},{msgid:"Invalid name.",msgstr:["Μη έγκυρο όνομα."]},{msgid:"Last modified date unknown",msgstr:["Άγνωστη ημερομηνία τελευταίας τροποποίησης"]},{msgid:"Modified",msgstr:["Τροποποιήθηκε"]},{msgid:"Move",msgstr:["Μετακίνηση"]},{msgid:"Move to {target}",msgstr:["Μετακίνηση στο {target}"]},{msgid:"Name",msgstr:["Όνομα"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Τα ονόματα μπορούν να έχουν μέγιστο μήκος 64 χαρακτήρες."]},{msgid:"Names must not be empty.",msgstr:["Τα ονόματα δεν πρέπει να είναι κενά."]},{msgid:'Names must not end with "{extension}".',msgstr:['Τα ονόματα δεν πρέπει να τελειώνουν με "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Τα ονόματα δεν πρέπει να ξεκινούν με τελεία."]},{msgid:"New",msgstr:["Νέο"]},{msgid:"New folder",msgstr:["Νέος φάκελος"]},{msgid:"New folder name",msgstr:["Όνομα νέου φακέλου"]},{msgid:"New version",msgstr:["Νέα έκδοση"]},{msgid:"No files in here",msgstr:["Δεν υπάρχουν αρχεία εδώ"]},{msgid:"No files matching your filter were found.",msgstr:["Δεν βρέθηκαν αρχεία που να ταιριάζουν με το φίλτρο σας."]},{msgid:"No matching files",msgstr:["Κανένα αρχείο δεν ταιριάζει"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Παρακαλώ εισάγετε ένα όνομα με τουλάχιστον 2 χαρακτήρες."]},{msgid:"Recent",msgstr:["Πρόσφατα"]},{msgid:"Select all checkboxes",msgstr:["Επιλέξτε όλα τα πλαίσια ελέγχου"]},{msgid:"Select all entries",msgstr:["Επιλογή όλων των καταχωρήσεων"]},{msgid:"Select all existing files",msgstr:["Επιλογή όλων των υπάρχοντων αρχείων"]},{msgid:"Select all new files",msgstr:["Επιλογή όλων των νέων αρχείων"]},{msgid:"Select entry",msgstr:["Επιλογή εγγραφής"]},{msgid:"Select the row for {nodename}",msgstr:["Επιλέξτε τη γραμμή για το {nodename}"]},{msgid:"Size",msgstr:["Μέγεθος"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Παράλειψη ενός αρχείου","Παράλειψη %n αρχείων"]},{msgid:"Skip this file",msgstr:["Παράλειψη αυτού το αρχείου"]},{msgid:"Submit name",msgstr:["Υποβολή ονόματος"]},{msgid:"Undo",msgstr:["Αναίρεση"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Ανεβάστε κάποιο περιεχόμενο ή συγχρονίστε με τις συσκευές σας!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Όταν επιλέγεται ένας φάκελος εισερχομένων, όλα τα αρχεία που βρίσκονται σε σύγκρουση μέσα σε αυτόν θα αντικατασταθούν επίσης."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Όταν επιλέγεται ένας φάκελος εισερχομένων, το περιεχόμενο εγγράφεται στον υπάρχοντα φάκελο και εκτελείται μια αναδρομική επίλυση σύγκρουσης."]},{msgid:"Which files do you want to keep?",msgstr:["Ποια αρχεία θέλετε να διατηρήσετε;"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Αυτή τη στιγμή έχετε αναγνωριστεί ως {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Δεν έχετε ταυτοποιηθεί."]},{msgid:"You cannot leave the name empty.",msgstr:["Δεν μπορείτε να αφήσετε το όνομα κενό."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Πρέπει να επιλέξετε τουλάχιστον μία λύση σύγκρουσης"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Πρέπει να επιλέξετε τουλάχιστον μία έκδοση από κάθε αρχείο για να συνεχίσετε."]}]},{language:"en_GB",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" is not allowed inside a folder name.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" is not allowed inside a name.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" is not an allowed name.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" is a reserved name and cannot be used for folder names.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" is a reserved name and not allowed.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n file conflict","%n files conflict"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n file conflict in {dirname}","%n file conflicts in {dirname}"]},{msgid:"All files",msgstr:["All files"]},{msgid:"Cancel",msgstr:["Cancel"]},{msgid:"Cancel the entire operation",msgstr:["Cancel the entire operation"]},{msgid:"Choose",msgstr:["Choose"]},{msgid:"Choose {file}",msgstr:["Choose {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Choose %n file","Choose %n files"]},{msgid:"Confirm",msgstr:["Confirm"]},{msgid:"Continue",msgstr:["Continue"]},{msgid:"Copy",msgstr:["Copy"]},{msgid:"Copy to {target}",msgstr:["Copy to {target}"]},{msgid:"Could not create the new folder",msgstr:["Could not create the new folder"]},{msgid:"Could not load files settings",msgstr:["Could not load files settings"]},{msgid:"Could not load files views",msgstr:["Could not load files views"]},{msgid:"Create directory",msgstr:["Create directory"]},{msgid:"Current view selector",msgstr:["Current view selector"]},{msgid:"Enter your name",msgstr:["Enter your name"]},{msgid:"Existing version",msgstr:["Existing version"]},{msgid:"Failed to set nickname.",msgstr:["Failed to set nickname."]},{msgid:"Favorites",msgstr:["Favourites"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Files and folders you mark as favourite will show up here."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Files and folders you recently modified will show up here."]},{msgid:"Filter file list",msgstr:["Filter file list"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Folder names must not end with "{extension}".']},{msgid:"Guest identification",msgstr:["Guest identification"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["If you select both versions, the incoming file will have a number added to its name."]},{msgid:"Invalid folder name.",msgstr:["Invalid folder name."]},{msgid:"Invalid name.",msgstr:["Invalid name."]},{msgid:"Last modified date unknown",msgstr:["Last modified date unknown"]},{msgid:"Modified",msgstr:["Modified"]},{msgid:"Move",msgstr:["Move"]},{msgid:"Move to {target}",msgstr:["Move to {target}"]},{msgid:"Name",msgstr:["Name"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Names may be at most 64 characters long."]},{msgid:"Names must not be empty.",msgstr:["Names must not be empty."]},{msgid:'Names must not end with "{extension}".',msgstr:['Names must not end with "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Names must not start with a dot."]},{msgid:"New",msgstr:["New"]},{msgid:"New folder",msgstr:["New folder"]},{msgid:"New folder name",msgstr:["New folder name"]},{msgid:"New version",msgstr:["New version"]},{msgid:"No files in here",msgstr:["No files in here"]},{msgid:"No files matching your filter were found.",msgstr:["No files matching your filter were found."]},{msgid:"No matching files",msgstr:["No matching files"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Please enter a name with at least 2 characters."]},{msgid:"Recent",msgstr:["Recent"]},{msgid:"Select all checkboxes",msgstr:["Select all checkboxes"]},{msgid:"Select all entries",msgstr:["Select all entries"]},{msgid:"Select all existing files",msgstr:["Select all existing files"]},{msgid:"Select all new files",msgstr:["Select all new files"]},{msgid:"Select entry",msgstr:["Select entry"]},{msgid:"Select the row for {nodename}",msgstr:["Select the row for {nodename}"]},{msgid:"Size",msgstr:["Size"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Skip %n file","Skip %n files"]},{msgid:"Skip this file",msgstr:["Skip this file"]},{msgid:"Submit name",msgstr:["Submit name"]},{msgid:"Undo",msgstr:["Undo"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Upload some content or sync with your devices!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["When an incoming folder is selected, any conflicting files within it will also be overwritten."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["When an incoming folder is selected, any files within it will also be overwritten."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed."]},{msgid:"Which files do you want to keep?",msgstr:["Which files do you want to keep?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["You are currently identified as {nickname}."]},{msgid:"You are currently not identified.",msgstr:["You are currently not identified."]},{msgid:"You cannot leave the name empty.",msgstr:["You cannot leave the name empty."]},{msgid:"You need to choose at least one conflict solution",msgstr:["You need to choose at least one conflict solution"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["You need to select at least one version of each file to continue."]}]},{language:"es",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" no está permitido dentro de un nombre.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" no es un nombre permitido.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" es un nombre de carpeta no válido.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" no es un nombre de carpeta permitido']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" es un nombre reservado y no está permitido.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" no está permitido dentro del nombre de una carpeta.']},{msgid:"All files",msgstr:["Todos los archivos"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Choose",msgstr:["Seleccionar"]},{msgid:"Choose {file}",msgstr:["Seleccionar {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Elige %n archivo","Elige %n archivos","Seleccione %n archivos"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar a {target}"]},{msgid:"Could not create the new folder",msgstr:["No se pudo crear la nueva carpeta"]},{msgid:"Could not load files settings",msgstr:["No se pudieron cargar los ajustes de archivos"]},{msgid:"Could not load files views",msgstr:["No se pudieron cargar las vistas de los archivos"]},{msgid:"Create directory",msgstr:["Crear directorio"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Enter your name",msgstr:["Ingrese su nombre"]},{msgid:"Failed to set nickname.",msgstr:["Fallo al establecer apodo."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Los archivos y carpetas que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Los archivos y carpetas que modificó recientemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar lista de archivos"]},{msgid:"Folder name cannot be empty.",msgstr:["El nombre de la carpeta no puede estar vacío."]},{msgid:"Guest identification",msgstr:["Identificación de invitado"]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"Invalid name.",msgstr:["Nombre inválido."]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nombre"]},{msgid:"Names must not be empty.",msgstr:["Los nombres no deben estar vacíos."]},{msgid:'Names must not end with "{extension}".',msgstr:['Los nombres no deben terminar con "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Los nombres no deben iniciar con un punto."]},{msgid:"New",msgstr:["Nuevo"]},{msgid:"New folder",msgstr:[" Nueva carpeta"]},{msgid:"New folder name",msgstr:["Nuevo nombre de carpeta"]},{msgid:"No files in here",msgstr:["No hay archivos aquí"]},{msgid:"No files matching your filter were found.",msgstr:["No se encontraron archivos que coincidiesen con su filtro."]},{msgid:"No matching files",msgstr:["No hay archivos coincidentes"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Por favor, ingrese un nombre con al menos 2 caracteres."]},{msgid:"Recent",msgstr:["Reciente"]},{msgid:"Select all entries",msgstr:["Seleccionar todas las entradas"]},{msgid:"Select entry",msgstr:["Seleccionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccione la fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Submit name",msgstr:["Enviar nombre"]},{msgid:"Undo",msgstr:["Deshacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Cargue algún contenido o sincronice con sus dispositivos!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Ud. se encuentra identificado actualmente como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Ud. no se encuentra identificado actualmente."]},{msgid:"You cannot leave the name empty.",msgstr:["No puede dejar el nombre vacío."]}]},{language:"es_AR",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" es un nombre de carpeta inválido.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" no es un nombre de carpeta permitido']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" no está permitido en el nombre de una carpeta.']},{msgid:"All files",msgstr:["Todos los archivos"]},{msgid:"Choose",msgstr:["Elegir"]},{msgid:"Choose {file}",msgstr:["Elija {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Elija %n archivo","Elija %n archivos","Elija %n archivos"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar a {target}"]},{msgid:"Could not create the new folder",msgstr:["No se pudo crear la nueva carpeta"]},{msgid:"Could not load files settings",msgstr:["No se pudo cargar la configuración de archivos"]},{msgid:"Could not load files views",msgstr:["No se pudieron cargar las vistas de los archivos"]},{msgid:"Create directory",msgstr:["Crear directorio"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Los archivos y carpetas que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Los archivos y carpetas que modificó recientemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar lista de archivos"]},{msgid:"Folder name cannot be empty.",msgstr:["El nombre de la carpeta no puede estar vacío."]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nombre"]},{msgid:"New",msgstr:["Nuevo"]},{msgid:"New folder",msgstr:["Nueva carpeta"]},{msgid:"New folder name",msgstr:["Nombre de nueva carpeta"]},{msgid:"No files in here",msgstr:["No hay archivos aquí"]},{msgid:"No files matching your filter were found.",msgstr:["No se encontraron archivos que coincidan con su filtro."]},{msgid:"No matching files",msgstr:["No hay archivos coincidentes"]},{msgid:"Recent",msgstr:["Reciente"]},{msgid:"Select all entries",msgstr:["Seleccionar todas las entradas"]},{msgid:"Select entry",msgstr:["Seleccionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccione la fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Undo",msgstr:["Deshacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Cargue algún contenido o sincronice con sus dispositivos!"]}]},{language:"es_MX",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" no está permitido dentro de un nombre de carpeta']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" no está permitido dentro de un nombre']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" no es un nombre permitido']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" es un nombre reservado y no está permitido para nombres de carpetas']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" es un nombre reservado y no está permitido']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n conflicto de archivo","%n conflicto de archivos","%n conflicto de archivos"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n conflicto de archivo en {dirname}","%n conflictos de archivo en {dirname}","%n conflictos de archivo en {dirname}"]},{msgid:"All files",msgstr:["Todos los archivos"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar la operación completa"]},{msgid:"Choose",msgstr:["Seleccionar"]},{msgid:"Choose {file}",msgstr:["Seleccionar {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Seleccionar %n archivo","Seleccionar %n archivos","Seleccionar %n archivos"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar a {target}"]},{msgid:"Could not create the new folder",msgstr:["No se pudo crear la nueva carpeta"]},{msgid:"Could not load files settings",msgstr:["No se pudo cargar la configuración de archivos"]},{msgid:"Could not load files views",msgstr:["No se pudieron cargar las vistas de los archivos"]},{msgid:"Create directory",msgstr:["Crear carpeta"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Enter your name",msgstr:["Ingresa tu nombre"]},{msgid:"Existing version",msgstr:["Versión existente"]},{msgid:"Failed to set nickname.",msgstr:["No se pudo establecer el nickname"]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Los archivos y carpetas que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Los archivos y carpetas que modificó recientemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar lista de archivos"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Los nombres para carpeta no deben terminar con "{extension}"']},{msgid:"Guest identification",msgstr:["Identificación de invitado"]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si seleccionas ambas versiones, se le agregará al archivo que se está descargando, un número a su nombre."]},{msgid:"Invalid folder name.",msgstr:["Nombre de carpeta no válido"]},{msgid:"Invalid name.",msgstr:["Nombre no válido"]},{msgid:"Last modified date unknown",msgstr:["Última fecha de modificación desconocida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nombre"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Los nombres pueden tener como máximo 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["Los nombres no deben estar vacíos."]},{msgid:'Names must not end with "{extension}".',msgstr:['Los nombres no deben terminar con "{extension}"']},{msgid:"Names must not start with a dot.",msgstr:["Los nombres no deben comenzar con un punto."]},{msgid:"New",msgstr:["Nuevo"]},{msgid:"New folder",msgstr:["Nueva carpeta"]},{msgid:"New folder name",msgstr:["Nombre de nueva carpeta"]},{msgid:"New version",msgstr:["Versión nueva"]},{msgid:"No files in here",msgstr:["No hay archivos aquí"]},{msgid:"No files matching your filter were found.",msgstr:["No se encontraron archivos que coincidan con su filtro."]},{msgid:"No matching files",msgstr:["No hay archivos coincidentes"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Por favor ingrese un nombre con al menos 2 caracteres."]},{msgid:"Recent",msgstr:["Reciente"]},{msgid:"Select all checkboxes",msgstr:["Seleccione todas las casillas de verificación"]},{msgid:"Select all entries",msgstr:["Seleccionar todas las entradas"]},{msgid:"Select all existing files",msgstr:["Seleccione todos los archivos que aparecen"]},{msgid:"Select all new files",msgstr:["Seleccione todos los archivos nuevos"]},{msgid:"Select entry",msgstr:["Seleccionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccione la fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Omitir %n archivo","Omitir %n archivos","Omitir %n archivos"]},{msgid:"Skip this file",msgstr:["Omitir este archivo"]},{msgid:"Submit name",msgstr:["Enviar nombre"]},{msgid:"Undo",msgstr:["Deshacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Suba algún contenido o sincronice con sus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cuando se selecciona una carpeta en descarga, cualquier archivo conflictivo que contenga también se sobrescribirá."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cuando se selecciona una carpeta en descarga, el contenido se escribe en la carpeta existente y se realiza una resolución de conflicto recursiva."]},{msgid:"Which files do you want to keep?",msgstr:["¿Qué archivos deseas conservar?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Actualmente estás identificado como {nickname}"]},{msgid:"You are currently not identified.",msgstr:["No estás identificado actualmente."]},{msgid:"You cannot leave the name empty.",msgstr:["No puedes dejar el nombre vacío."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Necesitas elegir al menos una solución al conflicto."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Necesitas seleccionar al menos una versión de cada archivo para continuar."]}]},{language:"et_EE",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["„{char}“ pole kausta nimes lubatud."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["„{char}“ pole nimes lubatud."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["„{extension}“ pole lubatud nimi."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["„{segment}“ on reserveeritud nimi ja pole kausta nimes lubatud."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["„{segment}“ on reserveeritud nimi ja pole kasutamiseks lubatud."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n fail on vastuolus","%n faili on omavahel vastuolus"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n fail on {dirname} kaustas vastuolus","%n faili on omavahel {dirname} kaustas vastuolus"]},{msgid:"All files",msgstr:["Kõik failid"]},{msgid:"Cancel",msgstr:["Katkesta"]},{msgid:"Cancel the entire operation",msgstr:["Katkesta kogu tegevus"]},{msgid:"Choose",msgstr:["Tee valik"]},{msgid:"Choose {file}",msgstr:["Vali {file} fail"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Vali %n fail","Vali %n faili"]},{msgid:"Confirm",msgstr:["Kinnita"]},{msgid:"Continue",msgstr:["Jätka"]},{msgid:"Copy",msgstr:["Kopeeri"]},{msgid:"Copy to {target}",msgstr:["Kopeeri sihtkohta „{target}“"]},{msgid:"Could not create the new folder",msgstr:["Uue kausta loomine ei õnnestunud"]},{msgid:"Could not load files settings",msgstr:["Failide seadistusi ei õnnestunud laadida"]},{msgid:"Could not load files views",msgstr:["Failide vaatamiskordi ei õnnestunud laadida"]},{msgid:"Create directory",msgstr:["Loo kaust"]},{msgid:"Current view selector",msgstr:["Praeguse vaate valija"]},{msgid:"Enter your name",msgstr:["Sisesta oma nimi"]},{msgid:"Existing version",msgstr:["Olemasolev versioon"]},{msgid:"Failed to set nickname.",msgstr:["Hüüdnime sisestamine ei õnnestunud."]},{msgid:"Favorites",msgstr:["Lemmikud"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Failid ja kaustad, mida märgid lemmikuks, kuvatakse siin."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Siin kuvatakse hiljuti muudetud failid ja kaustad."]},{msgid:"Filter file list",msgstr:["Filtreeri faililoendit"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Kausta nime lõpus ei tohi olla „{extension}“."]},{msgid:"Guest identification",msgstr:["Külalise tuvastamine"]},{msgid:"Home",msgstr:["Avaleht"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Kui valid mõlemad versioonid, siis uue faili nimele lisatakse number."]},{msgid:"Invalid folder name.",msgstr:["Vigane kausta nimi."]},{msgid:"Invalid name.",msgstr:["Vigane nimi."]},{msgid:"Last modified date unknown",msgstr:["Viimase muutmise kuupäev pole teada"]},{msgid:"Modified",msgstr:["Muudetud"]},{msgid:"Move",msgstr:["Teisalda"]},{msgid:"Move to {target}",msgstr:["Teisalda kausta „{target}“"]},{msgid:"Name",msgstr:["Nimi"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nimed võivad olla vaid kuni 64 tähemärki pikad."]},{msgid:"Names must not be empty.",msgstr:["Nimi ei saa olla tühi."]},{msgid:'Names must not end with "{extension}".',msgstr:["Nime lõpus ei tohi olla „{extension}“."]},{msgid:"Names must not start with a dot.",msgstr:["Nime alguses ei tohi olla punkti."]},{msgid:"New",msgstr:["Uus"]},{msgid:"New folder",msgstr:["Uus kaust"]},{msgid:"New folder name",msgstr:["Uue kausta nimi"]},{msgid:"New version",msgstr:["Uus versioon"]},{msgid:"No files in here",msgstr:["Siin pole faile"]},{msgid:"No files matching your filter were found.",msgstr:["Sinu filtrile vastavaid faile ei leidunud."]},{msgid:"No matching files",msgstr:["Puuduvad sobivad failid"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Palun sisesta vähemalt 2 tähemärki pikk nimi."]},{msgid:"Recent",msgstr:["Hiljutine"]},{msgid:"Select all checkboxes",msgstr:["Vali kõik märkeruudud"]},{msgid:"Select all entries",msgstr:["Vali kõik kirjed"]},{msgid:"Select all existing files",msgstr:["Vali kõik olemasolevad failid"]},{msgid:"Select all new files",msgstr:["Vali kõik uued failid"]},{msgid:"Select entry",msgstr:["Vali kirje"]},{msgid:"Select the row for {nodename}",msgstr:["Vali rida „{nodename}“ jaoks"]},{msgid:"Size",msgstr:["Suurus"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Jäta %n fail vahele","Jäta %n faili vahele"]},{msgid:"Skip this file",msgstr:["Jäta see fail vahele"]},{msgid:"Submit name",msgstr:["Lisa nimi"]},{msgid:"Undo",msgstr:["Tühista"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Lisa mingit sisu või sünkrooni see oma seadmetest!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Kui uute failide kaust on valitud, siis kõik seal leiduvad vastuolus failid saavad üle kirjutatud."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Kui uute (saabuvate) failide kaust on valitud, siis kõik seal leiduvad failid saavad samuti üle kirjutatud."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Kui uute failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja korraldatakse rekursiivne failikonfliktide lahendamine."]},{msgid:"Which files do you want to keep?",msgstr:["Missugused failid tahaksid alles jätta?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sa oled hetkel tuvastatav kui {nickname}.."]},{msgid:"You are currently not identified.",msgstr:["Sa oled hetkel tuvastamata."]},{msgid:"You cannot leave the name empty.",msgstr:["Sa ei saa jätta nime tühjaks."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Sa pead valima vähemalt ühe failikonflikti lahenduse."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Jätkamaks pead valima igast failist vähemalt ühe versiooni."]}]},{language:"fa",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} نام پوشه معتبر نیست"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} نام پوشه مجاز نیست"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" نمی‌تواند در نام پوشه استفاده شود.']},{msgid:"All files",msgstr:["همه فایل‌ها"]},{msgid:"Cancel",msgstr:["لغو"]},{msgid:"Choose",msgstr:["انتخاب"]},{msgid:"Choose {file}",msgstr:["انتخاب {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["انتخاب %n فایل","انتخاب %n فایل"]},{msgid:"Copy",msgstr:["رونوشت"]},{msgid:"Copy to {target}",msgstr:["رونوشت از {target}"]},{msgid:"Could not create the new folder",msgstr:["پوشه جدید ایجاد نشد"]},{msgid:"Could not load files settings",msgstr:["تنظیمات فایل باز نشد"]},{msgid:"Could not load files views",msgstr:["نمای فایل‌ها بارگیری نشد"]},{msgid:"Create directory",msgstr:["ایجاد فهرست"]},{msgid:"Current view selector",msgstr:["انتخابگر نماگر فعلی"]},{msgid:"Enter your name",msgstr:["نام خود را وارد کنید"]},{msgid:"Failed to set nickname.",msgstr:["تنظیم نام مستعار ناموفق بود."]},{msgid:"Favorites",msgstr:["علایق"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["فایل‌ها و پوشه‌هایی که به‌عنوان مورد علاقه علامت‌گذاری می‌کنید در اینجا نشان داده می‌شوند."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["فایل‌ها و پوشه‌هایی که اخیراً تغییر داده‌اید در اینجا نمایش داده می‌شوند."]},{msgid:"Filter file list",msgstr:["فیلتر لیست فایل"]},{msgid:"Folder name cannot be empty.",msgstr:["نام پوشه نمی تواند خالی باشد."]},{msgid:"Guest identification",msgstr:["شناسایی مهمان"]},{msgid:"Home",msgstr:["خانه"]},{msgid:"Modified",msgstr:["اصلاح شده"]},{msgid:"Move",msgstr:["انتقال"]},{msgid:"Move to {target}",msgstr:["انتقال به {target}"]},{msgid:"Name",msgstr:["نام"]},{msgid:"New",msgstr:["جدید"]},{msgid:"New folder",msgstr:["پوشه جدید"]},{msgid:"New folder name",msgstr:["نام پوشه جدید"]},{msgid:"No files in here",msgstr:["فایلی اینجا نیست"]},{msgid:"No files matching your filter were found.",msgstr:["هیچ فایلی مطابق با فیلتر شما یافت نشد."]},{msgid:"No matching files",msgstr:["فایل منطبقی وجود ندارد"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["لطفاً نامی با حداقل ۲ کاراکتر وارد کنید."]},{msgid:"Recent",msgstr:["اخیر"]},{msgid:"Select all entries",msgstr:["انتخاب همه ورودی ها"]},{msgid:"Select entry",msgstr:["انتخاب ورودی"]},{msgid:"Select the row for {nodename}",msgstr:["انتخاب ردیف برای {nodename}"]},{msgid:"Size",msgstr:["اندازه"]},{msgid:"Submit name",msgstr:["ارسال نام"]},{msgid:"Undo",msgstr:["بازگردانی"]},{msgid:"Upload some content or sync with your devices!",msgstr:["مقداری محتوا آپلود کنید یا با دستگاه های خود همگام سازی کنید!"]},{msgid:"You are currently not identified.",msgstr:["شما در حال حاضر شناسایی نشده‌اید."]},{msgid:"You cannot leave the name empty.",msgstr:["نمی‌توانید نام را خالی بگذارید."]}]},{language:"fi_FI",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" ei ole sallittu nimessä.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ei ole sallittu nimi.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" on virheellinen kansion nimi.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" ei ole sallittu kansion nimi']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" on varattu nimi eikä se ole sallittu.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" ei ole sallittu kansion nimessä.']},{msgid:"All files",msgstr:["Kaikki tiedostot"]},{msgid:"Cancel",msgstr:["Peruuta"]},{msgid:"Choose",msgstr:["Valitse"]},{msgid:"Choose {file}",msgstr:["Valitse {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Valitse %n tiedosto","Valitse %n tiedostoa"]},{msgid:"Copy",msgstr:["Kopioi"]},{msgid:"Copy to {target}",msgstr:["Kopioi sijaintiin {target}"]},{msgid:"Could not create the new folder",msgstr:["Uutta kansiota ei voitu luoda"]},{msgid:"Could not load files settings",msgstr:["Tiedoston asetuksia ei saa ladattua"]},{msgid:"Could not load files views",msgstr:["Tiedoston näkymiä ei saa ladattua"]},{msgid:"Create directory",msgstr:["Luo kansio"]},{msgid:"Current view selector",msgstr:["Nykyisen näkymän valinta"]},{msgid:"Enter your name",msgstr:["Kirjoita nimesi"]},{msgid:"Failed to set nickname.",msgstr:["Kutsumanimen asettaminen epäonnistui."]},{msgid:"Favorites",msgstr:["Suosikit"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Tiedostot ja kansiot, jotka merkitset suosikkeihisi, näkyvät täällä."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Tiedostot ja kansiot, joita muokkasit äskettäin, näkyvät täällä."]},{msgid:"Filter file list",msgstr:["Suodata tiedostolistaa"]},{msgid:"Folder name cannot be empty.",msgstr:["Kansion nimi ei voi olla tyhjä."]},{msgid:"Guest identification",msgstr:["Vieraan tunnistaminen"]},{msgid:"Home",msgstr:["Koti"]},{msgid:"Invalid name.",msgstr:["Virheellinen nimi."]},{msgid:"Modified",msgstr:["Muokattu"]},{msgid:"Move",msgstr:["Siirrä"]},{msgid:"Move to {target}",msgstr:["Siirrä sijaintiin {target}"]},{msgid:"Name",msgstr:["Nimi"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nimissä voi olla enintään 64 merkkiä."]},{msgid:"Names must not be empty.",msgstr:["Nimet eivät saa olla tyhjiä."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nimet eivät saa päättyä sanaan "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nimet eivät saa alkaa pisteellä."]},{msgid:"New",msgstr:["Uusi"]},{msgid:"New folder",msgstr:["Uusi kansio"]},{msgid:"New folder name",msgstr:["Uuden kansion nimi"]},{msgid:"No files in here",msgstr:["Täällä ei ole tiedostoja"]},{msgid:"No files matching your filter were found.",msgstr:["Suodatinta vastaavia tiedostoja ei löytynyt."]},{msgid:"No matching files",msgstr:["Ei vastaavia tiedostoja"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Kirjoita vähintään kaksi merkkiä sisältävä nimi."]},{msgid:"Recent",msgstr:["Viimeisimmät"]},{msgid:"Select all entries",msgstr:["Valitse kaikki tietueet"]},{msgid:"Select entry",msgstr:["Valitse tietue"]},{msgid:"Select the row for {nodename}",msgstr:["Valitse rivi {nodename}:lle"]},{msgid:"Size",msgstr:["Koko"]},{msgid:"Submit name",msgstr:["Lähetä nimi"]},{msgid:"Undo",msgstr:["Kumoa"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Lähetä jotain sisältöä tai synkronoi laitteidesi kanssa!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sinut tunnetaan tällä hetkellä nimellä {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Sinua ei ole tunnistettu."]},{msgid:"You cannot leave the name empty.",msgstr:["Nimeä ei voi jättää tyhjäksi."]}]},{language:"fr",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:[`"{char}" n'est pas autorisé dans un nom de dossier.`]},{msgid:'"{char}" is not allowed inside a name.',msgstr:[`"{char}" n'est pas autorisé dans un nom.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:[`"{extension}" n'est pas un nom autorisé.`]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:[`"{segment}" est un nom réservé et n'est pas autorisé pour un nom de dossier.`]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:[`"{segment}" est un nom réservé et n'est pas autorisé.`]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n conflit de fichier","%n conflit de fichiers","%n conflit de fichiers"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%nconflit de fichier dans {dirname}","%n conflit de fichiers dans {dirname}","%nconflit de fichiers dans {dirname}"]},{msgid:"All files",msgstr:["Tous les fichiers"]},{msgid:"Cancel",msgstr:["Annuler"]},{msgid:"Cancel the entire operation",msgstr:["Tout annuler "]},{msgid:"Choose",msgstr:["Choisir"]},{msgid:"Choose {file}",msgstr:["Choisir {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Choisir %n fichier","Choisir %n fichiers","Choisir %n fichiers "]},{msgid:"Confirm",msgstr:["Confirmer"]},{msgid:"Continue",msgstr:["Continuer"]},{msgid:"Copy",msgstr:["Copier"]},{msgid:"Copy to {target}",msgstr:["Copier vers {target}"]},{msgid:"Could not create the new folder",msgstr:["Impossible de créer le nouveau dossier"]},{msgid:"Could not load files settings",msgstr:["Les paramètres des fichiers n'ont pas pu être chargés"]},{msgid:"Could not load files views",msgstr:["Impossible de charger les vues des fichiers"]},{msgid:"Create directory",msgstr:["Créer un répertoire"]},{msgid:"Current view selector",msgstr:["Sélecteur d'affichage actuel"]},{msgid:"Enter your name",msgstr:["Entrez votre nom"]},{msgid:"Existing version",msgstr:["Version actuelle "]},{msgid:"Failed to set nickname.",msgstr:["Échec de définition du surnom."]},{msgid:"Favorites",msgstr:["Favoris"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Les fichiers et répertoires marqués en favoris apparaîtront ici."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Les fichiers et répertoires modifiés récemment apparaîtront ici."]},{msgid:"Filter file list",msgstr:["Filtrer la liste des fichiers"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Les noms de dossiers ne doivent pas se terminer par "{extension}".']},{msgid:"Guest identification",msgstr:["Identification d'invité"]},{msgid:"Home",msgstr:["Accueil"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si vous conservez les deux versions, le fichier reçu sera renommé avec un numéro."]},{msgid:"Invalid folder name.",msgstr:["Nom de dossier invalide."]},{msgid:"Invalid name.",msgstr:["Nom invalide."]},{msgid:"Last modified date unknown",msgstr:["Date de modification inconnue"]},{msgid:"Modified",msgstr:["Modifié"]},{msgid:"Move",msgstr:["Déplacer"]},{msgid:"Move to {target}",msgstr:["Déplacer vers {target}"]},{msgid:"Name",msgstr:["Nom"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Les noms peuvent comporter au maximum 64 caractères."]},{msgid:"Names must not be empty.",msgstr:["Les noms ne peuvent pas être vides."]},{msgid:'Names must not end with "{extension}".',msgstr:['Les noms ne doivent pas se terminer par "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Les noms ne peuvent pas commencer par un point."]},{msgid:"New",msgstr:["Nouveau"]},{msgid:"New folder",msgstr:["Nouveau dossier"]},{msgid:"New folder name",msgstr:["Nom du nouveau dossier"]},{msgid:"New version",msgstr:["Nouvelle version"]},{msgid:"No files in here",msgstr:["Aucun fichier ici"]},{msgid:"No files matching your filter were found.",msgstr:["Aucun fichier trouvé correspondant à votre filtre."]},{msgid:"No matching files",msgstr:["Aucun fichier correspondant"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Veuillez entrer un nom avec au moins 2 caractères."]},{msgid:"Recent",msgstr:["Récents"]},{msgid:"Select all checkboxes",msgstr:["Sélectionner toutes les cases à cocher"]},{msgid:"Select all entries",msgstr:["Tout sélectionner"]},{msgid:"Select all existing files",msgstr:["Sélectionner tous les fichiers existants"]},{msgid:"Select all new files",msgstr:["Sélectionner tous les nouveaux fichiers"]},{msgid:"Select entry",msgstr:["Sélectionner une entrée"]},{msgid:"Select the row for {nodename}",msgstr:["Sélectionner la ligne correspondant à {nodename}"]},{msgid:"Size",msgstr:["Taille"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Ignorer %n fichier","Ignorer %n fichiers ","Ignorer %n fichiers "]},{msgid:"Skip this file",msgstr:["Ignorer ce fichier"]},{msgid:"Submit name",msgstr:["Envoyer le nom"]},{msgid:"Undo",msgstr:["Annuler"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Chargez du contenu ou synchronisez avec vos équipements !"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["En sélectionnant un dossier entrant, les fichiers en conflit qu’il contient seront automatiquement écrasés."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Suite à la sélection d'un dossier en entrée, tout fichier présent dans ce dossier sera alors écrasé. "]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Lorsque vous sélectionnez un dossier entrant, son contenu est ajouté au dossier existant et les conflits sont résolus automatiquement."]},{msgid:"Which files do you want to keep?",msgstr:["Quels fichiers souhaitez-vous conserver ?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Vous êtes actuellement identifié comme {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Vous n'êtes pas identifié actuellement."]},{msgid:"You cannot leave the name empty.",msgstr:["Vous ne pouvez pas laisser le nom vide."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Vous devez choisir au moins une option pour résoudre le conflit"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Sélectionnez au moins une version de chaque fichier pour continuer."]}]},{language:"ga",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:[`Ní cheadaítear "{char}" laistigh d'ainm fillteáin.`]},{msgid:'"{char}" is not allowed inside a name.',msgstr:[`Ní cheadaítear "{char}" laistigh d'ainm.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:['Ní ainm ceadaithe é "{extension}".']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:[`Is ainm curtha in áirithe é "{segment}" agus ní cheadaítear é d'ainmneacha fillteán.`]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['Is ainm curtha in áirithe é "{segment}" agus ní cheadaítear é.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n coimhlint comhaid","%n coimhlint comhad","%n coimhlint comhad","%n coimhlint comhad","%n coimhlint comhad"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n coimhlint comhaid i {dirname}","%n coimhlintí comhaid i {dirname}","%n coimhlintí comhaid i {dirname}","%n coimhlintí comhaid i {dirname}","%n coimhlintí comhaid i {dirname}"]},{msgid:"All files",msgstr:["Gach comhad"]},{msgid:"Cancel",msgstr:["Cealaigh"]},{msgid:"Cancel the entire operation",msgstr:["Cealaigh an oibríocht ar fad"]},{msgid:"Choose",msgstr:["Roghnaigh"]},{msgid:"Choose {file}",msgstr:["Roghnaigh {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Roghnaigh %n comhad","Roghnaigh %n comhaid","Roghnaigh %n comhaid","Roghnaigh %n comhaid","Roghnaigh %n comhaid"]},{msgid:"Confirm",msgstr:["Deimhnigh"]},{msgid:"Continue",msgstr:["Lean ar aghaidh"]},{msgid:"Copy",msgstr:["Cóip"]},{msgid:"Copy to {target}",msgstr:["Cóipeáil chuig {target}"]},{msgid:"Could not create the new folder",msgstr:["Níorbh fhéidir an fillteán nua a chruthú"]},{msgid:"Could not load files settings",msgstr:["Níorbh fhéidir socruithe comhaid a lódáil"]},{msgid:"Could not load files views",msgstr:["Níorbh fhéidir radhairc comhad a lódáil"]},{msgid:"Create directory",msgstr:["Cruthaigh eolaire"]},{msgid:"Current view selector",msgstr:["Roghnóir amhairc reatha"]},{msgid:"Enter your name",msgstr:["Cuir isteach d'ainm"]},{msgid:"Existing version",msgstr:["Leagan atá ann cheana féin"]},{msgid:"Failed to set nickname.",msgstr:["Theip ar leasainm a shocrú."]},{msgid:"Favorites",msgstr:["Ceanáin"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Taispeánfar comhaid agus fillteáin a d'athraigh tú le déanaí anseo."]},{msgid:"Filter file list",msgstr:["Scag liosta comhad"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Ní féidir ainmneacha fillteán a chríochnú le "{extension}".']},{msgid:"Guest identification",msgstr:["Aitheantas aoi"]},{msgid:"Home",msgstr:["Baile"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Má roghnaíonn tú an dá leagan, cuirfear uimhir le hainm an chomhaid atá ag teacht isteach."]},{msgid:"Invalid folder name.",msgstr:["Ainm fillteáin neamhbhailí."]},{msgid:"Invalid name.",msgstr:["Ainm neamhbhailí."]},{msgid:"Last modified date unknown",msgstr:["Dáta an athraithe dheireanaigh anaithnid"]},{msgid:"Modified",msgstr:["Athraithe"]},{msgid:"Move",msgstr:["Bog"]},{msgid:"Move to {target}",msgstr:["Bog go{target}"]},{msgid:"Name",msgstr:["Ainm"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Ní fhéadfaidh ainmneacha a bheith níos mó ná 64 carachtar ar fhad."]},{msgid:"Names must not be empty.",msgstr:["Ní féidir ainmneacha a bheith folamh."]},{msgid:'Names must not end with "{extension}".',msgstr:['Ní féidir ainmneacha a chríochnú le "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Ní mór ainmneacha a bheith ag tosú le ponc."]},{msgid:"New",msgstr:["Nua"]},{msgid:"New folder",msgstr:["Fillteán nua"]},{msgid:"New folder name",msgstr:["Ainm fillteáin nua"]},{msgid:"New version",msgstr:["Leagan nua"]},{msgid:"No files in here",msgstr:["Níl aon chomhaid istigh anseo"]},{msgid:"No files matching your filter were found.",msgstr:["Níor aimsíodh aon chomhad a tháinig le do scagaire."]},{msgid:"No matching files",msgstr:["Gan comhaid meaitseála"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Cuir isteach ainm ina bhfuil 2 charachtar ar a laghad."]},{msgid:"Recent",msgstr:["le déanaí"]},{msgid:"Select all checkboxes",msgstr:["Roghnaigh na boscaí seiceála go léir"]},{msgid:"Select all entries",msgstr:["Roghnaigh gach iontráil"]},{msgid:"Select all existing files",msgstr:["Roghnaigh na comhaid uile atá ann cheana"]},{msgid:"Select all new files",msgstr:["Roghnaigh gach comhad nua"]},{msgid:"Select entry",msgstr:["Roghnaigh iontráil"]},{msgid:"Select the row for {nodename}",msgstr:["Roghnaigh an ró do {nodename}"]},{msgid:"Size",msgstr:["Méid"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Léim %n comhad","Léim %n comhaid","Léim %n comhaid","Léim %n comhaid","Léim %n comhaid"]},{msgid:"Skip this file",msgstr:["Scipeáil an comhad seo"]},{msgid:"Submit name",msgstr:["Cuir isteach ainm"]},{msgid:"Undo",msgstr:["Cealaigh"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Uaslódáil roinnt ábhair nó sioncronaigh le do ghléasanna!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Nuair a roghnaítear fillteán isteach, déanfar aon chomhaid choimhlinteacha ann a athscríobh freisin."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Nuair a roghnaítear fillteán isteach, déanfar aon chomhaid laistigh de a athscríobh freisin."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach sa fhillteán atá ann cheana féin agus déantar réiteach coinbhleachta athchúrsach."]},{msgid:"Which files do you want to keep?",msgstr:["Cé na comhaid ar mhaith leat a choinneáil?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Is é {nickname} an ainm atá ort faoi láthair."]},{msgid:"You are currently not identified.",msgstr:["Níl aitheantas tugtha duit faoi láthair."]},{msgid:"You cannot leave the name empty.",msgstr:["Ní féidir leat an t-ainm a fhágáil folamh."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Ní mór duit réiteach coinbhleachta amháin ar a laghad a roghnú"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú le leanúint ar aghaidh."]}]},{language:"gl",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["«{char}» non está permitido no nome dun cartafol."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["«{char}» non está permitido dentro dun nome."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["«{extension}» non é un nome permitido."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["«{segment}» é un nome reservado e non está permitido para nomes de cartafoles."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["«{segment}» é un nome reservado e non está permitido."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n ficheiro en conflito","%n ficheiros en conflito"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n ficheiro en conflito en {dirname}","%n ficheiros en conflito en {dirname}"]},{msgid:"All files",msgstr:["Todos os ficheiros"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar toda a operación"]},{msgid:"Choose",msgstr:["Escoller"]},{msgid:"Choose {file}",msgstr:["Escoller {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escoller %n ficheiro","Escoller %n ficheiros"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar en {target}"]},{msgid:"Could not create the new folder",msgstr:["Non foi posíbel crear o novo cartafol"]},{msgid:"Could not load files settings",msgstr:["Non foi posíbel cargar os axustes dos ficheiros"]},{msgid:"Could not load files views",msgstr:["Non foi posíbel cargar as vistas dos ficheiros"]},{msgid:"Create directory",msgstr:["Crear un directorio"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Enter your name",msgstr:["Introduza o seu nome"]},{msgid:"Existing version",msgstr:["Versión existente"]},{msgid:"Failed to set nickname.",msgstr:["Produciuse un fallo ao definir o alcume."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Os ficheiros e cartafoles que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Os ficheiros e cartafoles que modificou recentemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar a lista de ficheiros"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Os nomes de cartafol non deben rematar en «{extension}»."]},{msgid:"Guest identification",msgstr:["Identificación do convidado"]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome."]},{msgid:"Invalid folder name.",msgstr:["O nome de cartafol non é válido."]},{msgid:"Invalid name.",msgstr:["Nome incorrecto"]},{msgid:"Last modified date unknown",msgstr:["Data da última modificación descoñecida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover cara a {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Os nomes poden ter unha lonxitude máxima de 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["Os nomes non deben estar baleiros."]},{msgid:'Names must not end with "{extension}".',msgstr:["Os nomes non deben rematar en «{extension}»."]},{msgid:"Names must not start with a dot.",msgstr:["Os nomes non deben comezar cun punto."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Novo cartafol"]},{msgid:"New folder name",msgstr:["Novo nome do cartafol"]},{msgid:"New version",msgstr:["Nova versión"]},{msgid:"No files in here",msgstr:["Aquí non hai ficheiros"]},{msgid:"No files matching your filter were found.",msgstr:["Non se atopou ningún ficheiro que coincida co filtro."]},{msgid:"No matching files",msgstr:["Non hai ficheiros coincidentes"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Introduza un nome con polo menos 2 caracteres."]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all checkboxes",msgstr:["Seleccionar todas as caixas"]},{msgid:"Select all entries",msgstr:["Seleccionar todas as entradas"]},{msgid:"Select all existing files",msgstr:["Seleccionar todos os ficheiros existentes"]},{msgid:"Select all new files",msgstr:["Seleccionar todos os ficheiros novos"]},{msgid:"Select entry",msgstr:["Seleccionar a entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccionar a fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Omitir %n ficheiro","Omitir %n ficheiros"]},{msgid:"Skip this file",msgstr:["Omitir este ficheiro"]},{msgid:"Submit name",msgstr:["Enviar o nome"]},{msgid:"Undo",msgstr:["Desfacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Enviar algún contido ou sincronizalo cos seus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cando se selecciona un cartafol entrante, todos os ficheiros conflitivos dentro dela tamén serán sobrescritos."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e realízase unha resolución recursiva de conflitos."]},{msgid:"Which files do you want to keep?",msgstr:["Que ficheiros quere conservar?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Vde. está identificado actualmente como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Vde. non está identificado actualmente."]},{msgid:"You cannot leave the name empty.",msgstr:["Vde. non pode deixar o nome baleiro."]},{msgid:"You need to choose at least one conflict solution",msgstr:["É necesario escoller polo menos unha solución de conflito"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["É necesario seleccionar polo menos unha versión de cada ficheiro para continuar."]}]},{language:"hr",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["Znak „{char}” nije dopušten u nazivu mape."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["Znak „{char}” nije dopušten u nazivu."]},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" nije dopušten u nazivu.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" je rezervirana riječ i nije dopušten u nazivu mape.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" je rezervirana riječ i nije dopušten.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["Sukobljava se %n datoteka","Sukobljava se %n datoteke","Sukobljava se %n datoteke"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n sukob datoteka u {dirname}","%n sukoba datoteka u {dirname}","%n sukoba datoteka u {dirname}"]},{msgid:"All files",msgstr:["Sve datoteke"]},{msgid:"Cancel",msgstr:["Odustani"]},{msgid:"Cancel the entire operation",msgstr:["Odustani od cijele operacije"]},{msgid:"Choose",msgstr:["Odaberi"]},{msgid:"Choose {file}",msgstr:["Odaberi {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Odaberi %n datoteku","Odaberi %n datoteka","Odaberi %n datoteke"]},{msgid:"Confirm",msgstr:["Potvrdi"]},{msgid:"Continue",msgstr:["Nastavi"]},{msgid:"Copy",msgstr:["Kopiraj"]},{msgid:"Copy to {target}",msgstr:["Kopiraj u {target}"]},{msgid:"Could not create the new folder",msgstr:["Nije moguće stvoriti novu mapu"]},{msgid:"Could not load files settings",msgstr:["Nije moguće učitati postavke datoteka"]},{msgid:"Could not load files views",msgstr:["Nije moguće učitati prikaze datoteka"]},{msgid:"Create directory",msgstr:["Stvori mapu"]},{msgid:"Current view selector",msgstr:["Odabir trenutačnog prikaza"]},{msgid:"Enter your name",msgstr:["Unesite vaše ime"]},{msgid:"Existing version",msgstr:["Postojeća verzija"]},{msgid:"Failed to set nickname.",msgstr:["Neuspjelo postavljanje nadimka."]},{msgid:"Favorites",msgstr:["Favoriti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Ovdje se prikazuju datoteke i mape koje ste označili kao favoriti."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Ovdje se prikazuju datoteke i mape koje ste nedavno ažurirali."]},{msgid:"Filter file list",msgstr:["Filtriranje liste datoteka"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nazivi mapa ne smiju završiti sa "{extension}".']},{msgid:"Guest identification",msgstr:["Identifikacija gosta"]},{msgid:"Home",msgstr:["Naslovna"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ako odaberete obje verzije, dolaznoj datoteci bit će dodan broj u nazivu."]},{msgid:"Invalid folder name.",msgstr:["Neispavan naziv mape."]},{msgid:"Invalid name.",msgstr:["Neispravan naziv."]},{msgid:"Last modified date unknown",msgstr:["Nepoznat datum zadnjeg ažuriranja"]},{msgid:"Modified",msgstr:["Ažurirano"]},{msgid:"Move",msgstr:["Premjesti"]},{msgid:"Move to {target}",msgstr:["Premjesti u {target}"]},{msgid:"Name",msgstr:["Naziv"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nazivi mogu imati najviše 64 znaka."]},{msgid:"Names must not be empty.",msgstr:["Nazivi ne smiju biti prazni."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nazivi ne smiju završiti sa "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nazivi ne smiju započinjati točkom."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Nova mapa"]},{msgid:"New folder name",msgstr:["Novi naziv mape"]},{msgid:"New version",msgstr:["Nova verzija"]},{msgid:"No files in here",msgstr:["Ovdje nema datoteka"]},{msgid:"No files matching your filter were found.",msgstr:["Nisu pronađene datoteke koje odgovaraju vašem filtru."]},{msgid:"No matching files",msgstr:["Nema odgovarajućih datoteka."]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Unesite naziv s najmanje 2 znaka."]},{msgid:"Recent",msgstr:["Nedavno"]},{msgid:"Select all checkboxes",msgstr:["Označi sve potvrdne okvire"]},{msgid:"Select all entries",msgstr:["Označi sve stavke"]},{msgid:"Select all existing files",msgstr:["Označi sve postojeće datoteke"]},{msgid:"Select all new files",msgstr:["Označi sve nove datoteke"]},{msgid:"Select entry",msgstr:["Označi stavku"]},{msgid:"Select the row for {nodename}",msgstr:["Označi red za{nodename}"]},{msgid:"Size",msgstr:["Veličina"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Preskoči %n datoteku","Preskoči %n datoteke","Preskoči %n datoteke"]},{msgid:"Skip this file",msgstr:["Preskoči ovu datoteku"]},{msgid:"Submit name",msgstr:["Pošalji naziv"]},{msgid:"Undo",msgstr:["Poništi"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Prenesite neki sadržaj ili sinkronizirajte sa svojim uređajima!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Kada je odabrana dolazna mapa, sve datoteke unutar nje koje su u sukobu također će biti prepisane."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Kada je odabrana dolazna mapa, sadržaj se upisuje u postojeću mapu i provodi se rekurzivno rješavanje sukoba."]},{msgid:"Which files do you want to keep?",msgstr:["Koje datoteke želite zadržati?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Trenutno ste identificirani kao {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Trenutno niste identificirani."]},{msgid:"You cannot leave the name empty.",msgstr:["Ne možete ostaviti naziv prazan."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Morate odabrati barem jedno rješenje sukoba"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Morate odabrati barem jednu verziju svake datoteke kako biste nastavili."]}]},{language:"hu_HU",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["A(z) „{char}” nem engedélyezett egy mappanévben."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["A(z) „{char}” nem engedélyezett egy névben."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["A(z) „{extension}” nem engedélyezett név."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["A(z) „{segment}” foglalt név, és nem engedélyezett a mappanevekben."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["A(z) „{segment}” foglalt név, és nem engedélyezett."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n ütköző fájl","%n ütköző fájl"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n ütköző fájl ebben: {dirname}","%n ütköző fájl ebben: {dirname}"]},{msgid:"All files",msgstr:["Összes fájl"]},{msgid:"Cancel",msgstr:["Mégse"]},{msgid:"Cancel the entire operation",msgstr:["Egész művelet megszakítása"]},{msgid:"Choose",msgstr:["Kiválasztás"]},{msgid:"Choose {file}",msgstr:["{file} kiválasztása"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n fájl kiválasztása","%n fájl kiválasztása"]},{msgid:"Confirm",msgstr:["Megerősítés"]},{msgid:"Continue",msgstr:["Folytatás"]},{msgid:"Copy",msgstr:["Másolás"]},{msgid:"Copy to {target}",msgstr:["Másolás ide: {target}"]},{msgid:"Could not create the new folder",msgstr:["Nem lehet létrehozni az új mappát"]},{msgid:"Could not load files settings",msgstr:["Nem lehet betölteni a fájlok beállításait"]},{msgid:"Could not load files views",msgstr:["Nem lehet betölteni a fájlok nézeteit"]},{msgid:"Create directory",msgstr:["Mappa létrehozása"]},{msgid:"Current view selector",msgstr:["Jelenlegi nézet választója"]},{msgid:"Enter your name",msgstr:["Adja meg a nevét"]},{msgid:"Existing version",msgstr:["Meglévő verzió"]},{msgid:"Failed to set nickname.",msgstr:["Nem sikerült a becenév beállítása."]},{msgid:"Favorites",msgstr:["Kedvencek"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["A kedvencként megjelölt fájlok és mappák itt jelennek meg."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["A nemrég módosított fájlok és mappák itt jelennek meg."]},{msgid:"Filter file list",msgstr:["Fájllista szűrése"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["A mappanevek nem végződhetnek ezzel: „{extension}”."]},{msgid:"Guest identification",msgstr:["Vendégazonosítás"]},{msgid:"Home",msgstr:["Kezdőlap"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ha mindkét verziót választja, akkor a bejövő fájl nevéhez egy szám lesz hozzáfűzve."]},{msgid:"Invalid folder name.",msgstr:["Érvénytelen mappanév."]},{msgid:"Invalid name.",msgstr:["Érvénytelen név."]},{msgid:"Last modified date unknown",msgstr:["Legutóbbi módosítás ideje ismeretlen"]},{msgid:"Modified",msgstr:["Módosítva"]},{msgid:"Move",msgstr:["Áthelyezés"]},{msgid:"Move to {target}",msgstr:["Áthelyezés ide: {target}"]},{msgid:"Name",msgstr:["Név"]},{msgid:"Names may be at most 64 characters long.",msgstr:["A nevek legfeljebb 64 karakter hosszúak lehetnek."]},{msgid:"Names must not be empty.",msgstr:["A nevek nem lehetnek üresek."]},{msgid:'Names must not end with "{extension}".',msgstr:["A nevek nem végződhetnek ezzel: „{extension}”."]},{msgid:"Names must not start with a dot.",msgstr:["A nevek nem kezdődhetnek ponttal."]},{msgid:"New",msgstr:["Új"]},{msgid:"New folder",msgstr:["Új mappa"]},{msgid:"New folder name",msgstr:["Új mappa neve"]},{msgid:"New version",msgstr:["Új verzió"]},{msgid:"No files in here",msgstr:["Itt nincsenek fájlok"]},{msgid:"No files matching your filter were found.",msgstr:["Nincs a szűrési feltételeknek megfelelő fájl."]},{msgid:"No matching files",msgstr:["Nincs ilyen fájl"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Legalább 2 karakteres nevet adjon meg."]},{msgid:"Recent",msgstr:["Legutóbbi"]},{msgid:"Select all checkboxes",msgstr:["Összes jelölőmező bepipálása"]},{msgid:"Select all entries",msgstr:["Összes bejegyzés kijelölése"]},{msgid:"Select all existing files",msgstr:["Összes meglévő fájl kijelölése"]},{msgid:"Select all new files",msgstr:["Összes új fájl kijelölése"]},{msgid:"Select entry",msgstr:["Bejegyzés kijelölése"]},{msgid:"Select the row for {nodename}",msgstr:["Válasszon sort a következőnek: {nodename}"]},{msgid:"Size",msgstr:["Méret"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n fájl kihagyása","%n fájl kihagyása"]},{msgid:"Skip this file",msgstr:["Fájl kihagyása"]},{msgid:"Submit name",msgstr:["Név beküldése"]},{msgid:"Undo",msgstr:["Visszavonás"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Töltsön fel tartalmat, vagy szinkronizáljon az eszközeivel!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ha egy bejövő mappa van kijelölve, akkor a benne lévő ütköző fájlok is felül lesznek írva."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Amikor egy bejövő mappát kiválaszt, a benne lévő fájlok is felülíródnak."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Ha egy bejövő mappa van kijelölve, akkor a tartalom a meglévő mappába lesz írva, és rekurzív ütközéskezelés lesz végezve."]},{msgid:"Which files do you want to keep?",msgstr:["Mely fájlokat akarja megtartani?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Jelenleg ekként van azonosítva: {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Jelenleg nincs azonosítva."]},{msgid:"You cannot leave the name empty.",msgstr:["A nevet nem hagyhatja üresen."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Legalább egy ütközéskezelési megoldást kell választania"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["A folytatáshoz az összes fájlnak legalább egy verzióját ki kell választania."]}]},{language:"hy",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} սխալ թղթապանակի անվանում է"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} համարվում է անթույլատրելի թղթապանակի անվանում"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["/ չի թույլատրվում օգտագործել անվանման մեջ"]},{msgid:"All files",msgstr:["Բոլոր ֆայլերը"]},{msgid:"Choose",msgstr:["Ընտրել"]},{msgid:"Choose {file}",msgstr:["Ընտրել {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Ընտրել %n ֆայլ","Ընտրել %n ֆայլեր"]},{msgid:"Copy",msgstr:["Պատճենել"]},{msgid:"Copy to {target}",msgstr:["Պատճենել {target}"]},{msgid:"Could not create the new folder",msgstr:["Չստացվեց ստեղծել նոր թղթապանակը"]},{msgid:"Could not load files settings",msgstr:["Չստացվեց բեռնել ֆայլի կարգավորումները"]},{msgid:"Could not load files views",msgstr:["Չստացվեց բեռնել ֆայլերի դիտումները"]},{msgid:"Create directory",msgstr:["Ստեղծել դիրեկտորիա"]},{msgid:"Current view selector",msgstr:["Ընթացիկ դիտման ընտրիչ"]},{msgid:"Favorites",msgstr:["Նախընտրելիներ"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք դուք նշել եք որպես նախընտրելիներ:"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք վերջերս փոխել եք:"]},{msgid:"Filter file list",msgstr:["Ֆիլտրել ֆայլերի ցուցակը"]},{msgid:"Folder name cannot be empty.",msgstr:["Թղթապանակի անունը չի կարող դատարկ լինել:"]},{msgid:"Home",msgstr:["Սկիզբ"]},{msgid:"Modified",msgstr:["Փոփոխված"]},{msgid:"Move",msgstr:["Տեղափոխել"]},{msgid:"Move to {target}",msgstr:["Տեղափոխել {target}"]},{msgid:"Name",msgstr:["Անուն"]},{msgid:"New",msgstr:["Նոր"]},{msgid:"New folder",msgstr:["Նոր թղթապանակ"]},{msgid:"New folder name",msgstr:["Նոր թղթապանակի անվանում"]},{msgid:"No files in here",msgstr:["Այստեղ չկան ֆայլեր"]},{msgid:"No files matching your filter were found.",msgstr:["Ձեր ֆիլտրին համապատասխանող ֆայլերը չեն գտնվել:"]},{msgid:"No matching files",msgstr:["Չկան համապատասխան ֆայլեր"]},{msgid:"Recent",msgstr:["Վերջին"]},{msgid:"Select all entries",msgstr:["Ընտրել բոլոր գրառումները"]},{msgid:"Select entry",msgstr:["Ընտրել բոլոր գրառումը"]},{msgid:"Select the row for {nodename}",msgstr:["Ընտրեք տողը {nodename}-ի համար "]},{msgid:"Size",msgstr:["Չափ"]},{msgid:"Undo",msgstr:["Ետարկել"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Ներբեռնեք որոշ բովանդակություն կամ համաժամացրեք այն ձեր սարքերի հետ:"]}]},{language:"id",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" tidak diizinkan di dalam nama folder.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" tidak diizinkan di dalam nama.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" bukan nama yang diizinkan.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" adalah nama yang dicadangkan dan tidak diizinkan untuk nama folder.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" adalah nama yang dicadangkan dan tidak diizinkan.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n konflik file"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n konflik file di {dirname}"]},{msgid:"All files",msgstr:["Semua berkas"]},{msgid:"Cancel",msgstr:["Batal"]},{msgid:"Cancel the entire operation",msgstr:["Batalkan seluruh operasi"]},{msgid:"Choose",msgstr:["Pilih"]},{msgid:"Choose {file}",msgstr:["Pilih {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Pilih %n file"]},{msgid:"Confirm",msgstr:["Konfirmasi"]},{msgid:"Continue",msgstr:["Lanjutkan"]},{msgid:"Copy",msgstr:["Salin"]},{msgid:"Copy to {target}",msgstr:["Salin ke {target}"]},{msgid:"Could not create the new folder",msgstr:["Tidak dapat membuat folder baru"]},{msgid:"Could not load files settings",msgstr:["Tidak dapat memuat pengaturan file"]},{msgid:"Could not load files views",msgstr:["Tidak dapat memuat tampilan file"]},{msgid:"Create directory",msgstr:["Buat direktori"]},{msgid:"Current view selector",msgstr:["Pemilih tampilan saat ini"]},{msgid:"Enter your name",msgstr:["Masukkan nama Anda"]},{msgid:"Existing version",msgstr:["Versi yang ada"]},{msgid:"Failed to set nickname.",msgstr:["Gagal menetapkan nama panggilan."]},{msgid:"Favorites",msgstr:["Favorit"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Berkas dan folder yang Anda tandai sebagai favorit akan muncul di sini."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Berkas dan folder yang Anda ubah baru-baru ini akan muncul di sini."]},{msgid:"Filter file list",msgstr:["Saring daftar berkas"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nama folder tidak boleh diakhiri dengan "{extension}".']},{msgid:"Guest identification",msgstr:["Identifikasi tamu"]},{msgid:"Home",msgstr:["Beranda"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jika Anda memilih kedua versi, file yang masuk akan ditambahkan angka pada namanya."]},{msgid:"Invalid folder name.",msgstr:["Nama folder tidak valid."]},{msgid:"Invalid name.",msgstr:["Nama tidak valid."]},{msgid:"Last modified date unknown",msgstr:["Tanggal modifikasi terakhir tidak diketahui"]},{msgid:"Modified",msgstr:["Diubah"]},{msgid:"Move",msgstr:["Pindahkan"]},{msgid:"Move to {target}",msgstr:["Pindahkan ke {target}"]},{msgid:"Name",msgstr:["Nama"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Panjang nama maksimal 64 karakter."]},{msgid:"Names must not be empty.",msgstr:["Nama tidak boleh kosong."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nama tidak boleh diakhiri dengan "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nama tidak boleh diawali dengan titik."]},{msgid:"New",msgstr:["Baru"]},{msgid:"New folder",msgstr:["Folder baru"]},{msgid:"New folder name",msgstr:["Nama folder baru"]},{msgid:"New version",msgstr:["Versi baru"]},{msgid:"No files in here",msgstr:["Tidak ada berkas di sini"]},{msgid:"No files matching your filter were found.",msgstr:["Tidak ada berkas yang cocok dengan penyaringan Anda."]},{msgid:"No matching files",msgstr:["Tidak ada berkas yang cocok"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Silakan masukkan nama dengan minimal 2 karakter."]},{msgid:"Recent",msgstr:["Terkini"]},{msgid:"Select all checkboxes",msgstr:["Pilih semua kotak centang"]},{msgid:"Select all entries",msgstr:["Pilih semua entri"]},{msgid:"Select all existing files",msgstr:["Pilih semua file yang ada"]},{msgid:"Select all new files",msgstr:["Pilih semua file baru"]},{msgid:"Select entry",msgstr:["Pilih entri"]},{msgid:"Select the row for {nodename}",msgstr:["Pilih baris untuk {nodename}"]},{msgid:"Size",msgstr:["Ukuran"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Lewati %n file"]},{msgid:"Skip this file",msgstr:["Lewati file ini"]},{msgid:"Submit name",msgstr:["Kirim nama"]},{msgid:"Undo",msgstr:["Tidak jadi"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Unggah beberapa konten atau sinkronkan dengan perangkat Anda!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Saat folder yang masuk dipilih, semua file yang konflik di dalamnya juga akan ditimpa."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Saat folder yang masuk dipilih, konten ditulis ke dalam folder yang ada dan penyelesaian konflik rekursif dilakukan."]},{msgid:"Which files do you want to keep?",msgstr:["File mana yang ingin Anda pertahankan?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Saat ini Anda teridentifikasi sebagai {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Saat ini Anda tidak teridentifikasi."]},{msgid:"You cannot leave the name empty.",msgstr:["Anda tidak dapat membiarkan nama kosong."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Anda perlu memilih setidaknya satu solusi konflik"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Anda perlu memilih setidaknya satu versi dari setiap file untuk melanjutkan."]}]},{language:"is",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" er ógilt möppuheiti.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" er ekki leyfilegt möppuheiti']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" er er ekki leyfilegt innan í skráarheiti.']},{msgid:"All files",msgstr:["Allar skrár"]},{msgid:"Choose",msgstr:["Veldu"]},{msgid:"Choose {file}",msgstr:["Veldu {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Veldu %n skrá","Veldu %n skrár"]},{msgid:"Copy",msgstr:["Afrita"]},{msgid:"Copy to {target}",msgstr:["Afrita í {target}"]},{msgid:"Could not create the new folder",msgstr:["Get ekki búið til nýju möppuna"]},{msgid:"Could not load files settings",msgstr:["Tókst ekki að hlaða inn stillingum skráa"]},{msgid:"Could not load files views",msgstr:["Tókst ekki að hlaða inn sýnum skráa"]},{msgid:"Create directory",msgstr:["Búa til möppu"]},{msgid:"Current view selector",msgstr:["Núverandi val sýnar"]},{msgid:"Favorites",msgstr:["Eftirlæti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Skrár og möppur sem þú merkir sem eftirlæti birtast hér."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Skrár og möppur sem þú breyttir nýlega birtast hér."]},{msgid:"Filter file list",msgstr:["Sía skráalista"]},{msgid:"Folder name cannot be empty.",msgstr:["Möppuheiti má ekki vera tómt."]},{msgid:"Home",msgstr:["Heim"]},{msgid:"Modified",msgstr:["Breytt"]},{msgid:"Move",msgstr:["Færa"]},{msgid:"Move to {target}",msgstr:["Færa í {target}"]},{msgid:"Name",msgstr:["Heiti"]},{msgid:"New",msgstr:["Nýtt"]},{msgid:"New folder",msgstr:["Ný mappa"]},{msgid:"New folder name",msgstr:["Heiti nýrrar möppu"]},{msgid:"No files in here",msgstr:["Engar skrár hér"]},{msgid:"No files matching your filter were found.",msgstr:["Engar skrár fundust sem passa við síuna."]},{msgid:"No matching files",msgstr:["Engar samsvarandi skrár"]},{msgid:"Recent",msgstr:["Nýlegt"]},{msgid:"Select all entries",msgstr:["Velja allar færslur"]},{msgid:"Select entry",msgstr:["Velja færslu"]},{msgid:"Select the row for {nodename}",msgstr:["Veldu röðina fyrir {nodename}"]},{msgid:"Size",msgstr:["Stærð"]},{msgid:"Undo",msgstr:["Afturkalla"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Sendu inn eitthvað efni eða samstilltu við tækin þín!"]}]},{language:"it",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:[`"{char}" non è consentito all'interno di un nome di cartella.`]},{msgid:'"{char}" is not allowed inside a name.',msgstr:[`"{char}" non è consentito all'interno di un nome.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" non è un nome consentito']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" è un nome riservato e non consentito per i nomi delle cartelle.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" è un nome riservato e non consentito.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n file in conflitto","%n file in conflitto","%n file in conflitto"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n file in conflitto in {dirname}","%n file in conflitto in {dirname}","%n file in conflitto in {dirname}"]},{msgid:"All files",msgstr:["Tutti i file"]},{msgid:"Cancel",msgstr:["Annulla"]},{msgid:"Cancel the entire operation",msgstr:["Annulla l'intera operazione"]},{msgid:"Choose",msgstr:["Scegli"]},{msgid:"Choose {file}",msgstr:["Scegli {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Scegli %n file","Scegli %n file","Scegli %n file"]},{msgid:"Confirm",msgstr:["Conferma"]},{msgid:"Continue",msgstr:["Continua"]},{msgid:"Copy",msgstr:["Copia"]},{msgid:"Copy to {target}",msgstr:["Copia in {target}"]},{msgid:"Could not create the new folder",msgstr:["Impossibile creare la nuova cartella"]},{msgid:"Could not load files settings",msgstr:["Impossibile caricare le impostazioni dei file"]},{msgid:"Could not load files views",msgstr:["Impossibile caricare le visualizzazioni dei file"]},{msgid:"Create directory",msgstr:["Crea cartella"]},{msgid:"Current view selector",msgstr:["Selettore della vista attuale"]},{msgid:"Enter your name",msgstr:["Inserisci il tuo nome"]},{msgid:"Existing version",msgstr:["Versione esistente"]},{msgid:"Failed to set nickname.",msgstr:["Impossibile impostare lo pseudonimo."]},{msgid:"Favorites",msgstr:["Preferiti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["I file e le cartelle contrassegnate come preferite saranno mostrate qui."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["I file e le cartelle che hai modificato di recente saranno mostrate qui."]},{msgid:"Filter file list",msgstr:["Filtra l'elenco dei file"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['I nomi delle cartelle devono finire con "{extension}".']},{msgid:"Guest identification",msgstr:["Identificazione ospiti"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se selezioni entrambe le versioni, al nome del file in arrivo verrà aggiunto un numero."]},{msgid:"Invalid folder name.",msgstr:["Nome cartella non valido."]},{msgid:"Invalid name.",msgstr:["Nome non valido."]},{msgid:"Last modified date unknown",msgstr:["Data di ultima modifica sconosciuta"]},{msgid:"Modified",msgstr:["Modificato"]},{msgid:"Move",msgstr:["Sposta"]},{msgid:"Move to {target}",msgstr:["Sposta in {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["I nomi dovrebbero avere una lunghezza massima di 64 caratteri."]},{msgid:"Names must not be empty.",msgstr:["I nomi non devono essere vuoti."]},{msgid:'Names must not end with "{extension}".',msgstr:['I nomi devono finire con "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["I nomi non possono iniziare con un punto."]},{msgid:"New",msgstr:["Nuovo"]},{msgid:"New folder",msgstr:["Nuova cartella"]},{msgid:"New folder name",msgstr:["Nome della nuova cartella"]},{msgid:"New version",msgstr:["Nuova versione"]},{msgid:"No files in here",msgstr:["Nessun file qui"]},{msgid:"No files matching your filter were found.",msgstr:["Nessun file che corrisponde al tuo filtro è stato trovato."]},{msgid:"No matching files",msgstr:["Nessun file corrispondente"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Digita un nome con almeno 2 caratteri."]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all checkboxes",msgstr:["Seleziona tutte le caselle"]},{msgid:"Select all entries",msgstr:["Scegli tutte le voci"]},{msgid:"Select all existing files",msgstr:["Seleziona tutti i file esistenti"]},{msgid:"Select all new files",msgstr:["Seleziona tutti i nuovi file"]},{msgid:"Select entry",msgstr:["Seleziona la voce"]},{msgid:"Select the row for {nodename}",msgstr:["Seleziona la riga per {nodename}"]},{msgid:"Size",msgstr:["Dimensioni"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Salta %n file","Salta %n file","Salta %n file"]},{msgid:"Skip this file",msgstr:["Salta questo file"]},{msgid:"Submit name",msgstr:["Invia nome"]},{msgid:"Undo",msgstr:["Annulla"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Carica qualche contenuto o sincronizza con i tuoi dispositivi!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno saranno sovrascritti."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Quando si seleziona una cartella in arrivo, anche i documenti all'interno verranno sovrascritti."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti."]},{msgid:"Which files do you want to keep?",msgstr:["Quali file vuoi conservare?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sei attualmente identificato come {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Attualmente non sei identificato."]},{msgid:"You cannot leave the name empty.",msgstr:["Non puoi lasciare il nome vuoto."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Devi scegliere almeno una soluzione al conflitto"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Per continuare, è necessario selezionare almeno una versione di ciascun file."]}]},{language:"ja_JP",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['フォルダー名に "{char}" を使用することはできません。']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['名前に "{char}" を使用することはできません。']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" は許可された名前ではありません。']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" は予約名のため、使用できません。']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" は予約名のため、使用できません。']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%nファイルが競合しています"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%nディレクトリ{dirname}内のファイル競合"]},{msgid:"All files",msgstr:["すべてのファイル"]},{msgid:"Cancel",msgstr:["キャンセル"]},{msgid:"Cancel the entire operation",msgstr:["すべての操作をキャンセル"]},{msgid:"Choose",msgstr:["選択"]},{msgid:"Choose {file}",msgstr:["{file} を選択"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n 個のファイルを選択"]},{msgid:"Confirm",msgstr:["確認"]},{msgid:"Continue",msgstr:["続行"]},{msgid:"Copy",msgstr:["コピー"]},{msgid:"Copy to {target}",msgstr:["{target} にコピー"]},{msgid:"Could not create the new folder",msgstr:["新しいフォルダーを作成できませんでした"]},{msgid:"Could not load files settings",msgstr:["ファイル設定を読み込めませんでした"]},{msgid:"Could not load files views",msgstr:["ファイルビューを読み込めませんでした"]},{msgid:"Create directory",msgstr:["ディレクトリを作成"]},{msgid:"Current view selector",msgstr:["現在のビュー選択"]},{msgid:"Enter your name",msgstr:["名前を入力してください"]},{msgid:"Existing version",msgstr:["現行バージョン"]},{msgid:"Failed to set nickname.",msgstr:["ニックネームの設定に失敗しました。"]},{msgid:"Favorites",msgstr:["お気に入り"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["お気に入りとしてマークしたファイルとフォルダーがここに表示されます。"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["最近変更したファイルとフォルダーがここに表示されます。"]},{msgid:"Filter file list",msgstr:["ファイルのリストをフィルター"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['フォルダー名の末尾に "{extension}" を使用できません。']},{msgid:"Guest identification",msgstr:["ゲスト識別"]},{msgid:"Home",msgstr:["ホーム"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["両方のバージョンを選択した場合、受信ファイル名には番号が追加されます。"]},{msgid:"Invalid folder name.",msgstr:["フォルダー名が無効です。"]},{msgid:"Invalid name.",msgstr:["無効な名前です。"]},{msgid:"Last modified date unknown",msgstr:["最終更新日不明"]},{msgid:"Modified",msgstr:["変更済み"]},{msgid:"Move",msgstr:["移動"]},{msgid:"Move to {target}",msgstr:["{target} に移動"]},{msgid:"Name",msgstr:["名前"]},{msgid:"Names may be at most 64 characters long.",msgstr:["名前は最大64文字です。"]},{msgid:"Names must not be empty.",msgstr:["名前は空にできません。"]},{msgid:'Names must not end with "{extension}".',msgstr:['名前の末尾に "{extension}" を使用できません。']},{msgid:"Names must not start with a dot.",msgstr:["ドットで始まる名前は使用できません。"]},{msgid:"New",msgstr:["新規作成"]},{msgid:"New folder",msgstr:["新しいフォルダー"]},{msgid:"New folder name",msgstr:["新しいフォルダーの名前"]},{msgid:"New version",msgstr:["新バージョン"]},{msgid:"No files in here",msgstr:["ファイルがありません"]},{msgid:"No files matching your filter were found.",msgstr:["フィルターに一致するファイルは見つかりませんでした。"]},{msgid:"No matching files",msgstr:["一致するファイルはありません"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["名前は2文字以上を入力してください。"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all checkboxes",msgstr:["すべてのチェックボックスを選択"]},{msgid:"Select all entries",msgstr:["すべてのエントリを選択"]},{msgid:"Select all existing files",msgstr:["既存のファイルをすべて選択"]},{msgid:"Select all new files",msgstr:["すべての新規ファイルを選択"]},{msgid:"Select entry",msgstr:["エントリを選択"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename} の行を選択"]},{msgid:"Size",msgstr:["サイズ"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n 個のファイルをスキップ"]},{msgid:"Skip this file",msgstr:["このファイルをスキップ"]},{msgid:"Submit name",msgstr:["名前を送信する"]},{msgid:"Undo",msgstr:["元に戻す"]},{msgid:"Upload some content or sync with your devices!",msgstr:["コンテンツをアップロードするか、デバイスと同期してください!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["受信フォルダーを選択すると、そのフォルダー内の競合ファイルも上書きされます。"]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["受信フォルダを選択すると、その中のファイルも上書きされます。"]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["受信フォルダーを選択すると、内容は既存のフォルダーに書き込まれ、再帰的な競合解決が実行されます。"]},{msgid:"Which files do you want to keep?",msgstr:["どのファイルを残しますか?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["現在、{nickname}として識別されています。"]},{msgid:"You are currently not identified.",msgstr:["現在あなたは識別されていません。"]},{msgid:"You cannot leave the name empty.",msgstr:["名前を空にすることはできません。"]},{msgid:"You need to choose at least one conflict solution",msgstr:["少なくとも1つの競合ソリューションを選択する必要があります"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["続行するには、各ファイルのバージョンを少なくとも1つ選択する必要があります。"]}]},{language:"ko",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["문자 '{char}'은(는) 폴더 이름에 사용할 수 없습니다."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["문자 '{char}'은(는) 이름에 사용할 수 없습니다."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["'{extension}'은(는) 사용 불가능한 이름입니다."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["'{segment}'은(는) 예약된 이름이므로 폴더 이름으로 사용할 수 없습니다."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["'{segment}'은(는) 예약된 이름이므로 사용할 수 없습니다."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n개의 파일이 충돌함"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname}에서 %n개의 파일이 충돌함"]},{msgid:"All files",msgstr:["모든 파일"]},{msgid:"Cancel",msgstr:["취소"]},{msgid:"Cancel the entire operation",msgstr:["전체 작업 취소"]},{msgid:"Choose",msgstr:["선택"]},{msgid:"Choose {file}",msgstr:["{file} 선택"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["파일 %n개 선택"]},{msgid:"Confirm",msgstr:["확인"]},{msgid:"Continue",msgstr:["계속"]},{msgid:"Copy",msgstr:["복사"]},{msgid:"Copy to {target}",msgstr:["{target}(으)로 복사"]},{msgid:"Could not create the new folder",msgstr:["새 폴더를 만들 수 없음"]},{msgid:"Could not load files settings",msgstr:["파일 설정을 불러오지 못함"]},{msgid:"Could not load files views",msgstr:["파일 보기를 불러오지 못함"]},{msgid:"Create directory",msgstr:["디렉토리 만들기"]},{msgid:"Current view selector",msgstr:["현재 보기 방식"]},{msgid:"Enter your name",msgstr:["이름을 입력하세요"]},{msgid:"Existing version",msgstr:["기존 버전"]},{msgid:"Failed to set nickname.",msgstr:[`닉네임을 설정하지 못했습니다. + `]},{msgid:"Favorites",msgstr:["즐겨찾기"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["즐겨찾기 한 파일 및 폴더가 이곳에 표시됩니다."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["최근 수정된 파일 및 폴더가 이곳에 표시됩니다."]},{msgid:"Filter file list",msgstr:["파일 목록 필터링"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["폴더 이름은 '{extension}'(으)로 끝날 수 없습니다."]},{msgid:"Guest identification",msgstr:["게스트 확인"]},{msgid:"Home",msgstr:["홈"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["두 버전을 모두 선택할 경우 새로 추가되는 파일의 이름에 숫자가 붙게 됩니다."]},{msgid:"Invalid folder name.",msgstr:["잘못된 폴더 이름입니다."]},{msgid:"Invalid name.",msgstr:["잘못된 이름입니다. "]},{msgid:"Last modified date unknown",msgstr:["최근 수정일 알 수 없음"]},{msgid:"Modified",msgstr:["수정됨"]},{msgid:"Move",msgstr:["이동"]},{msgid:"Move to {target}",msgstr:["{target}(으)로 이동"]},{msgid:"Name",msgstr:["이름"]},{msgid:"Names may be at most 64 characters long.",msgstr:["이름은 최대 64글자까지 지정할 수 있습니다."]},{msgid:"Names must not be empty.",msgstr:["이름은 비어 있을 수 없습니다."]},{msgid:'Names must not end with "{extension}".',msgstr:["이름은 '{extension}'(으)로 끝날 수 없습니다."]},{msgid:"Names must not start with a dot.",msgstr:["이름은 마침표로 시작될 수 없습니다."]},{msgid:"New",msgstr:["새로 만들기"]},{msgid:"New folder",msgstr:["새 폴더"]},{msgid:"New folder name",msgstr:["새 폴더명"]},{msgid:"New version",msgstr:["새로운 버전"]},{msgid:"No files in here",msgstr:["파일이 없습니다"]},{msgid:"No files matching your filter were found.",msgstr:["선택된 필터에 해당하는 파일이 없습니다."]},{msgid:"No matching files",msgstr:["해당하는 파일 없음"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["최소 두 글자 이상의 이름을 입력해주세요."]},{msgid:"Recent",msgstr:["최근"]},{msgid:"Select all checkboxes",msgstr:["체크박스 모두 선택"]},{msgid:"Select all entries",msgstr:["모두 선택"]},{msgid:"Select all existing files",msgstr:["기존 파일 모두 선택"]},{msgid:"Select all new files",msgstr:["새 파일 모두 선택"]},{msgid:"Select entry",msgstr:["항목 선택"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename}의 행 선택"]},{msgid:"Size",msgstr:["크기"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n개 파일 건너뛰기"]},{msgid:"Skip this file",msgstr:["이 파일 건너뛰기"]},{msgid:"Submit name",msgstr:["이름 제출"]},{msgid:"Undo",msgstr:["되돌리기"]},{msgid:"Upload some content or sync with your devices!",msgstr:["기기에서 파일을 업로드 또는 동기화하세요!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["새 폴더를 선택할 경우, 해당 폴더 내의 충돌 파일들도 덮어쓰기 됩니다."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["새 폴더를 선택할 경우 내용물이 기존 폴더에 기록되며 재귀적 충돌 해결이 수행됩니다."]},{msgid:"Which files do you want to keep?",msgstr:["어떤 파일들을 유지하시겠습니까?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["{nickname}(으)로 인증된 상태 입니다."]},{msgid:"You are currently not identified.",msgstr:["현재 인증 정보가 없습니다."]},{msgid:"You cannot leave the name empty.",msgstr:["이름은 비워 둘 수 없습니다. "]},{msgid:"You need to choose at least one conflict solution",msgstr:["최소한 하나의 충돌 해결 방안을 선택해야 합니다."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다."]}]},{language:"lb",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} ass en ongëlteg Dossier"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} ass net en erlaabten Dossiernumm"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" ass net an engem Dossier Numm erlaabt']},{msgid:"All files",msgstr:["All Dateien"]},{msgid:"Choose",msgstr:["Wielt"]},{msgid:"Choose {file}",msgstr:["Wielt {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Wielt %n Fichieren","Wielt %n Fichier"]},{msgid:"Copy",msgstr:["Kopie"]},{msgid:"Copy to {target}",msgstr:["Kopie op {target}"]},{msgid:"Could not create the new folder",msgstr:["Konnt den neien Dossier net erstellen"]},{msgid:"Could not load files settings",msgstr:["Konnt d'Dateienastellungen net lueden"]},{msgid:"Could not load files views",msgstr:["Konnt d'Dateien net lueden"]},{msgid:"Create directory",msgstr:["Erstellt Verzeechnes"]},{msgid:"Current view selector",msgstr:["Aktuell Vue selector"]},{msgid:"Favorites",msgstr:["Favoritten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Dateien an Ordner, déi Dir als Favorit markéiert, ginn hei gewisen"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Dateien an Ordner déi Dir viru kuerzem geännert hutt ginn hei op"]},{msgid:"Filter file list",msgstr:["Filter Datei Lëscht"]},{msgid:"Folder name cannot be empty.",msgstr:["Dossier Numm kann net eidel sinn"]},{msgid:"Home",msgstr:["Wëllkomm"]},{msgid:"Modified",msgstr:["Geännert"]},{msgid:"Move",msgstr:["Plënne"]},{msgid:"Move to {target}",msgstr:["Plënneren {target}"]},{msgid:"Name",msgstr:["Numm"]},{msgid:"New",msgstr:["Nei"]},{msgid:"New folder",msgstr:["Neien dossier"]},{msgid:"New folder name",msgstr:["Neien dossier numm"]},{msgid:"No files in here",msgstr:["Kee fichier hei"]},{msgid:"No files matching your filter were found.",msgstr:["Kee fichier deen äre filter passt gouf fonnt"]},{msgid:"No matching files",msgstr:["Keng passende dateien"]},{msgid:"Recent",msgstr:["Rezent"]},{msgid:"Select all entries",msgstr:["Wielt all entréen"]},{msgid:"Select entry",msgstr:["Wielt entrée"]},{msgid:"Select the row for {nodename}",msgstr:["Wielt d'zeil fir {nodename}"]},{msgid:"Size",msgstr:["Gréisst"]},{msgid:"Undo",msgstr:["Undoen"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Luet en inhalt erop oder synchroniséiert mat ären apparater"]}]},{language:"lo",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" ບໍ່ອະນຸຍາດໃຫ້ມີຢູ່ໃນຊື່ໂຟນເດີ.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['ບໍ່ອະນຸຍາດໃຫ້ມີ "{char}" ພາຍໃນຊື່.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ບໍ່ແມ່ນຊື່ທີ່ໄດ້ຮັບອະນຸຍາດ.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ເປັນຊື່ໂຟນເດີ.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ໄດ້ຮັບອະນຸຍາດ.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["ໄຟລ໌ຂັດກັນ %n ລາຍການ"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["ໄຟລ໌ຂັດກັນ %n ລາຍການໃນ {dirname}"]},{msgid:"All files",msgstr:["ໄຟລ໌ທັງໝົດ"]},{msgid:"Cancel",msgstr:["ຍົກເລີກ"]},{msgid:"Cancel the entire operation",msgstr:["ຍົກເລີກການດຳເນີນການທັງໝົດ"]},{msgid:"Choose",msgstr:["ເລືອກ"]},{msgid:"Choose {file}",msgstr:["ເລືອກ {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["ເລືອກ %n ໄຟລ໌"]},{msgid:"Confirm",msgstr:["ຢືນຢັນ"]},{msgid:"Continue",msgstr:["ດຳເນີນການຕໍ່"]},{msgid:"Copy",msgstr:["ຄັດລອກ"]},{msgid:"Copy to {target}",msgstr:["ຄັດລອກໄປທີ່ {target}"]},{msgid:"Could not create the new folder",msgstr:["ບໍ່ສາມາດສ້າງໂຟນເດີໃໝ່ໄດ້"]},{msgid:"Could not load files settings",msgstr:["ບໍ່ສາມາດໂຫຼດການຕັ້ງຄ່າໄຟລ໌ໄດ້"]},{msgid:"Could not load files views",msgstr:["ບໍ່ສາມາດໂຫຼດມຸມມອງໄຟລ໌ໄດ້"]},{msgid:"Create directory",msgstr:["ສ້າງໄດເຣັກທໍຣີ"]},{msgid:"Current view selector",msgstr:["ຕົວເລືອກມຸມມອງປັດຈຸບັນ"]},{msgid:"Enter your name",msgstr:["ປ້ອນຊື່ຂອງທ່ານ"]},{msgid:"Existing version",msgstr:["ເວີຊັນທີ່ມີຢູ່"]},{msgid:"Failed to set nickname.",msgstr:["ຕັ້ງຊື່ຫຼິ້ນບໍ່ສຳເລັດ."]},{msgid:"Favorites",msgstr:["ລາຍການທີ່ມັກ"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານໝາຍວ່າເປັນລາຍການທີ່ມັກຈະສະແດງຢູ່ບ່ອນນີ້."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານແກ້ໄຂລ່າສຸດຈະສະແດງຢູ່ບ່ອນນີ້."]},{msgid:"Filter file list",msgstr:["ກັ່ນຕອງລາຍການໄຟລ໌"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['ຊື່ໂຟນເດີຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ "{extension}".']},{msgid:"Guest identification",msgstr:["ການລະບຸຕົວຕົນຂອງແຂກ"]},{msgid:"Home",msgstr:["ໜ້າຫຼັກ"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["ຖ້າທ່ານເລືອກທັງສອງເວີຊັນ, ໄຟລ໌ທີ່ເຂົ້າມາຈະມີຕົວເລກເພີ່ມໃສ່ຊື່ຂອງມັນ."]},{msgid:"Invalid folder name.",msgstr:["ຊື່ໂຟນເດີບໍ່ຖືກຕ້ອງ."]},{msgid:"Invalid name.",msgstr:["ຊື່ບໍ່ຖືກຕ້ອງ."]},{msgid:"Last modified date unknown",msgstr:["ບໍ່ຮູ້ວັນທີແກ້ໄຂລ່າສຸດ"]},{msgid:"Modified",msgstr:["ແກ້ໄຂເມື່ອ"]},{msgid:"Move",msgstr:["ຍ້າຍ"]},{msgid:"Move to {target}",msgstr:["ຍ້າຍໄປທີ່ {target}"]},{msgid:"Name",msgstr:["ຊື່"]},{msgid:"Names may be at most 64 characters long.",msgstr:["ຊື່ອາດມີຄວາມຍາວສູງສຸດ 64 ຕົວອັກສອນ."]},{msgid:"Names must not be empty.",msgstr:["ຊື່ຕ້ອງບໍ່ຫວ່າງເປົ່າ."]},{msgid:'Names must not end with "{extension}".',msgstr:['ຊື່ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["ຊື່ຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຈຸດ."]},{msgid:"New",msgstr:["ໃໝ່"]},{msgid:"New folder",msgstr:["ໂຟນເດີໃໝ່"]},{msgid:"New folder name",msgstr:["ຊື່ໂຟນເດີໃໝ່"]},{msgid:"New version",msgstr:["ເວີຊັນໃໝ່"]},{msgid:"No files in here",msgstr:["ບໍ່ມີໄຟລ໌ຢູ່ບ່ອນນີ້"]},{msgid:"No files matching your filter were found.",msgstr:["ບໍ່ພົບໄຟລ໌ທີ່ກົງກັບການກັ່ນຕອງຂອງທ່ານ."]},{msgid:"No matching files",msgstr:["ບໍ່ມີໄຟລ໌ທີ່ກົງກັນ"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["ກະລຸນາປ້ອນຊື່ທີ່ມີຢ່າງໜ້ອຍ 2 ຕົວອັກສອນ."]},{msgid:"Recent",msgstr:["ລ່າສຸດ"]},{msgid:"Select all checkboxes",msgstr:["ເລືອກກ່ອງໝາຍທັງໝົດ"]},{msgid:"Select all entries",msgstr:["ເລືອກທຸກລາຍການ"]},{msgid:"Select all existing files",msgstr:["ເລືອກໄຟລ໌ທີ່ມີຢູ່ທັງໝົດ"]},{msgid:"Select all new files",msgstr:["ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ"]},{msgid:"Select entry",msgstr:["ເລືອກລາຍການ"]},{msgid:"Select the row for {nodename}",msgstr:["ເລືອກແຖວສຳລັບ {nodename}"]},{msgid:"Size",msgstr:["ຂະໜາດ"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["ຂ້າມ %n ໄຟລ໌"]},{msgid:"Skip this file",msgstr:["ຂ້າມໄຟລ໌ນີ້"]},{msgid:"Submit name",msgstr:["ສົ່ງຊື່"]},{msgid:"Undo",msgstr:["ເອົາຄືນ"]},{msgid:"Upload some content or sync with your devices!",msgstr:["ອັບໂຫຼດເນື້ອຫາ ຫຼື ຊິງຄ໌ກັບອຸປະກອນຂອງທ່ານ!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ໄຟລ໌ໃດໆທີ່ຂັດກັນພາຍໃນໂຟນເດີນັ້ນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟນເດີທີ່ມີຢູ່ ແລະ ຈະມີການແກ້ໄຂຂໍ້ຂັດແຍ່ງແບບຕໍ່ເນື່ອງ."]},{msgid:"Which files do you want to keep?",msgstr:["ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["ຕອນນີ້ທ່ານຖືກລະບຸວ່າເປັນ {nickname}."]},{msgid:"You are currently not identified.",msgstr:["ຕອນນີ້ທ່ານຍັງບໍ່ໄດ້ຖືກລະບຸຕົວຕົນ."]},{msgid:"You cannot leave the name empty.",msgstr:["ທ່ານບໍ່ສາມາດປະຊື່ໃຫ້ຫວ່າງເປົ່າໄດ້."]},{msgid:"You need to choose at least one conflict solution",msgstr:["ທ່ານຈຳເປັນຕ້ອງເລືອກວິທີແກ້ໄຂຂໍ້ຂັດແຍ່ງຢ່າງໜ້ອຍໜຶ່ງຢ່າງ"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງເວີຊັນຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່."]}]},{language:"lt_LT",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["„{char}“ negalima naudoti aplanko pavadinime."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["„{char}“ negalima naudoti vardo sudėtyje."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["„{extension}“ nėra leidžiamas vardas."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["„{segment}“ yra rezervuotas vardas, kurio negalima naudoti aplankų pavadinimuose."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["„{segment}“ yra rezervuotas vardas, todėl jo naudoti negalima."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n failo konfliktas","%n failų konfliktas","%n failų konfliktas","%n failų konfliktas"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n failo konfliktas {dirname}","%n failų konfliktas {dirname}","%n failų konfliktas {dirname}","%n failų konfliktas {dirname}"]},{msgid:"All files",msgstr:["Visi failai"]},{msgid:"Cancel",msgstr:["Atsisakyti"]},{msgid:"Cancel the entire operation",msgstr:["Atsisakyti visos operacijos"]},{msgid:"Choose",msgstr:["Pasirinkti"]},{msgid:"Choose {file}",msgstr:["Pasirinkti {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Pasirinkti %n failą","Pasirinkti %n failus","Pasirinkti %n failų","Pasirinkti %n failą"]},{msgid:"Confirm",msgstr:["Patvirtinti"]},{msgid:"Continue",msgstr:["Tęsti"]},{msgid:"Copy",msgstr:["Kopijuoti"]},{msgid:"Copy to {target}",msgstr:["Kopijuoti į {target}"]},{msgid:"Could not create the new folder",msgstr:["Nepavyko sukurti naujo aplanko"]},{msgid:"Could not load files settings",msgstr:["Nepavyko įkelti failų nustatymų"]},{msgid:"Could not load files views",msgstr:["Nepavyko įkelti failų peržiūrų"]},{msgid:"Create directory",msgstr:["Sukurti katalogą"]},{msgid:"Current view selector",msgstr:["Dabartinis peržiūros pasirinkimas"]},{msgid:"Enter your name",msgstr:["Įrašykite savo vardą"]},{msgid:"Existing version",msgstr:["Esama versija"]},{msgid:"Failed to set nickname.",msgstr:["Nepavyko nustatyti slapyvardžio"]},{msgid:"Favorites",msgstr:["Populiariausi"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Failai ir aplankai, kuriuos pažymėsite kaip mėgstamiausius, bus rodomi čia."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Čia bus rodomi failai ir aplankai, kuriuos neseniai pakeitėte."]},{msgid:"Filter file list",msgstr:["Filtruoti failų sąrašą"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Aplankų pavadinimai neturi baigtis simboliu „{extension}“."]},{msgid:"Guest identification",msgstr:["Svečio identifikacija"]},{msgid:"Home",msgstr:["Pradžia"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jei pasirinksite abi versijas, prie gaunamo failo pavadinimo bus pridėtas numeris."]},{msgid:"Invalid folder name.",msgstr:["Netinkamas aplanko pavadinimas."]},{msgid:"Invalid name.",msgstr:["Netinkamas pavadinimas."]},{msgid:"Last modified date unknown",msgstr:["Paskutinio atnaujinimo data nežinoma"]},{msgid:"Modified",msgstr:["Pakeista"]},{msgid:"Move",msgstr:["Perkelti"]},{msgid:"Move to {target}",msgstr:["Perkelti į {target}"]},{msgid:"Name",msgstr:["Vardas"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Vardų ilgis negali viršyti 64 simbolių."]},{msgid:"Names must not be empty.",msgstr:["Pavadinimai negali būti tušti."]},{msgid:'Names must not end with "{extension}".',msgstr:["Vardai neturi baigtis simboliu „{extension}“."]},{msgid:"Names must not start with a dot.",msgstr:["Vardai negali prasidėti tašku."]},{msgid:"New",msgstr:["Naujas"]},{msgid:"New folder",msgstr:["Naujas aplankas"]},{msgid:"New folder name",msgstr:["Naujas aplanko pavadinimas"]},{msgid:"New version",msgstr:["Nauja versija"]},{msgid:"No files in here",msgstr:["Čia failų nėra"]},{msgid:"No files matching your filter were found.",msgstr:["Nepavyko rasti failų pagal filtro nustatymus"]},{msgid:"No matching files",msgstr:["Nėra atitinkančių failų"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Įrašykite vardą iš mažiausiai dviejų ženklų."]},{msgid:"Recent",msgstr:["Nauji"]},{msgid:"Select all checkboxes",msgstr:["Pažymėti visus langelius"]},{msgid:"Select all entries",msgstr:["Žymėti visus įrašus"]},{msgid:"Select all existing files",msgstr:["Pažymėti visus esamus failus"]},{msgid:"Select all new files",msgstr:["Pažymėti visus naujus failus"]},{msgid:"Select entry",msgstr:["Žymėti įrašą"]},{msgid:"Select the row for {nodename}",msgstr:["Pasirinkite eilutę {nodename}"]},{msgid:"Size",msgstr:["Dydis"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Praleisti %n failą","Praleisti %n failus","Praleisti %n failų","Praleisti %n failą"]},{msgid:"Skip this file",msgstr:["Praleisti šį failą"]},{msgid:"Submit name",msgstr:["Pateikti pavadinimą"]},{msgid:"Undo",msgstr:["Atšaukti"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Įkelkite turinio arba sinchronizuokite su savo įrenginiais!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Pasirinkus įeinančių failų aplanką, jame esantys failai, su kuriais kyla konfliktas, taip pat bus perrašyti."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Pasirinkus gaunamų laiškų aplanką, visi jame esantys failai taip pat bus perrašyti."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Pasirinkus įeinančių failų aplanką, jo turinys įrašomas į esamą aplanką ir atliekamas rekursyvus konfliktų sprendimas."]},{msgid:"Which files do you want to keep?",msgstr:["Kokius failus norite išsaugoti?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Šiuo metu esate identifikuotas kaip {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Šiuo metu nesate identifikuotas."]},{msgid:"You cannot leave the name empty.",msgstr:["Negalite palikti tuščio vardo lauko."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Turite pasirinkti bent vieną konflikto sprendimo būdą"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Norėdami tęsti, turite pasirinkti bent vieną kiekvieno failo versiją."]}]},{language:"lv",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" nav derīgs mapes nosaukums.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" nav atļauts mapes nosaukums']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" nav atļauts mapes nosaukuma izmantošanā.']},{msgid:"All files",msgstr:["Visas datnes"]},{msgid:"Choose",msgstr:["Izvēlieties"]},{msgid:"Choose {file}",msgstr:["Izvēlieties {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Izvēlēties %n datņu","Izvēlēties %n datni","Izvēlēties %n datnes"]},{msgid:"Copy",msgstr:["Kopēt"]},{msgid:"Copy to {target}",msgstr:["Kopēt uz {target}"]},{msgid:"Could not create the new folder",msgstr:["Nevarēja izveidot jaunu mapi"]},{msgid:"Could not load files settings",msgstr:["Nevarēja ielādēt datņu iestatījumus"]},{msgid:"Could not load files views",msgstr:["Nevarēja ielādēt datņu apskatījumus"]},{msgid:"Create directory",msgstr:["Izveidot direktoriju"]},{msgid:"Current view selector",msgstr:["Pašreizēja skata atlasītājs"]},{msgid:"Favorites",msgstr:["Favorīti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Šeit parādīsies datnes un mapes, kas tiks atzīmētas kā iecienītas."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Šeit parādīsies datnes un mapes, kuras nesen tika izmainītas."]},{msgid:"Filter file list",msgstr:["Atlasīt datņu sarakstu"]},{msgid:"Folder name cannot be empty.",msgstr:["Mapes nosaukums nevar būt tukšs."]},{msgid:"Home",msgstr:["Sākums"]},{msgid:"Modified",msgstr:["Izmaninīta"]},{msgid:"Move",msgstr:["Pārvietot"]},{msgid:"Move to {target}",msgstr:["Pārvietot uz {target}"]},{msgid:"Name",msgstr:["Nosaukums"]},{msgid:"New",msgstr:["Jauns"]},{msgid:"New folder",msgstr:["Jauna mape"]},{msgid:"New folder name",msgstr:["Jaunas mapes nosaukums"]},{msgid:"No files in here",msgstr:["Šeit nav datņu"]},{msgid:"No files matching your filter were found.",msgstr:["Netika atrasta neviena datne, kas atbilst atlasei."]},{msgid:"No matching files",msgstr:["Nav atbilstošu datņu"]},{msgid:"Recent",msgstr:["Nesenās"]},{msgid:"Select all entries",msgstr:["Atlasīt visus ierakstus"]},{msgid:"Select entry",msgstr:["Atlasīt ierakstu"]},{msgid:"Select the row for {nodename}",msgstr:["Atlasīt rindu {nodename}"]},{msgid:"Size",msgstr:["Izmērs"]},{msgid:"Undo",msgstr:["Atsaukt"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Augšupielādē kādu saturu vai sinhronizē savās iekārtās!"]}]},{language:"mk",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" не е дозволен во име на папка.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" не е дозволено во име.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" не е дозволено име.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" е резервирано име и не е дозволено за име на папка.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" е резервирано име и не е дозволено.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n конфликт со датотекa","%n конфликти со датотеки"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n конфликт со датотека во {dirname}","%n конфликти со датотеки vo {dirname}"]},{msgid:"All files",msgstr:["Сите датотеки"]},{msgid:"Cancel",msgstr:["Откажи"]},{msgid:"Cancel the entire operation",msgstr:["Прекини ја целата операција"]},{msgid:"Choose",msgstr:["Избери"]},{msgid:"Choose {file}",msgstr:["Избери {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Избери %n датотека","Избери %n датотеки"]},{msgid:"Confirm",msgstr:["Потврди"]},{msgid:"Continue",msgstr:["Продолжи"]},{msgid:"Copy",msgstr:["Копирај"]},{msgid:"Copy to {target}",msgstr:["Копирај во {target}"]},{msgid:"Could not create the new folder",msgstr:["Неможе да се креира нова папка"]},{msgid:"Could not load files settings",msgstr:["Неможе да се вчиаат параметрите за датотеките"]},{msgid:"Could not load files views",msgstr:["Неможе да се вчитаат погледите за датотеките"]},{msgid:"Create directory",msgstr:["Креирај папка"]},{msgid:"Current view selector",msgstr:["Избирач на тековен приказ"]},{msgid:"Enter your name",msgstr:["Внесете го вашето име"]},{msgid:"Existing version",msgstr:["Моментална верзија"]},{msgid:"Failed to set nickname.",msgstr:["Неуспешно поставување прекар."]},{msgid:"Favorites",msgstr:["Фаворити"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Датотеките и папките кој ќе ги означите за омилени ќе се појават овде."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Датотеките и папките кој неодамна сте ги измениле ќе се појават овде."]},{msgid:"Filter file list",msgstr:["Филтрирај листа на датотеки"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Имињата на папките неможе да завршуваат со "{extension}".']},{msgid:"Guest identification",msgstr:["Гостинска идентификација"]},{msgid:"Home",msgstr:["Почетна"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ако ги избереш двете верзии, влезната датотека ќе добие број додаден на нејзиното име."]},{msgid:"Invalid folder name.",msgstr:["Невалидно име на папка."]},{msgid:"Invalid name.",msgstr:["Невалидно име."]},{msgid:"Last modified date unknown",msgstr:["Датумот на последна измена е непознат"]},{msgid:"Modified",msgstr:["Променето"]},{msgid:"Move",msgstr:["Премести"]},{msgid:"Move to {target}",msgstr:["Премести во {target}"]},{msgid:"Name",msgstr:["Име"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Имињата можат да бидат најмногу со 64 карактери."]},{msgid:"Names must not be empty.",msgstr:["Имињата неможе да бидат празни."]},{msgid:'Names must not end with "{extension}".',msgstr:['Имињата неможе да завршуваат со "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Имињата неможе да започнуваат со точка."]},{msgid:"New",msgstr:["Нова"]},{msgid:"New folder",msgstr:["Нова папка"]},{msgid:"New folder name",msgstr:["Ново име на папка"]},{msgid:"New version",msgstr:["Нова верзија"]},{msgid:"No files in here",msgstr:["Овде нема датотеки"]},{msgid:"No files matching your filter were found.",msgstr:["Не се пронајдени датотеки што одговараат на вашиот филтер."]},{msgid:"No matching files",msgstr:["Нема датотеки што се совпаѓаат"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Внесете име со најмалку 2 карактери."]},{msgid:"Recent",msgstr:["Неодамнешни"]},{msgid:"Select all checkboxes",msgstr:["Избери ги сите полиња за избор"]},{msgid:"Select all entries",msgstr:["Изберете ги сите записи"]},{msgid:"Select all existing files",msgstr:["Изберете ги сите постоечки датотеки"]},{msgid:"Select all new files",msgstr:["Изберете ги сите нови датотеки"]},{msgid:"Select entry",msgstr:["Избери запис"]},{msgid:"Select the row for {nodename}",msgstr:["Избери ред за {nodename}"]},{msgid:"Size",msgstr:["Големина"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Прескокни %n датотека","Прескокни %n датотеки"]},{msgid:"Skip this file",msgstr:["Прескокни ја оваа датотека"]},{msgid:"Submit name",msgstr:["Испрати име"]},{msgid:"Undo",msgstr:["Врати"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Прикачи содржина или синхронизирај со ваши уреди!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Кога е избрана влезна папка, сите конфликтни датотеки во неа исто така ќе бидат препишани."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Кога е избрана влезна папка, содржината се запишува во постоечката папка и се извршува рекурсивно решавање на конфликти."]},{msgid:"Which files do you want to keep?",msgstr:["Кој датотеки сакаш да ги зачуваш?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Моментално сте идентификувани како {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Моментално не сте идентификувани."]},{msgid:"You cannot leave the name empty.",msgstr:["Не можете да го оставите името празно."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Треба да избереш најмалку едно решение за конфликт"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Треба да избереш најмалку една верзија за секоја датотека за да продолжи."]}]},{language:"ms_MY",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" adalah nama folder yang tidak sesuai ']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" nama folder yang tidak dibenarkan']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" tidak dibenarkan dalam nama folder']},{msgid:"All files",msgstr:["Semua fail"]},{msgid:"Choose",msgstr:["Pilih"]},{msgid:"Choose {file}",msgstr:["Pilih {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Pilih fail %n"]},{msgid:"Copy",msgstr:["menyalin"]},{msgid:"Copy to {target}",msgstr:["menyalin ke {target}"]},{msgid:"Could not create the new folder",msgstr:["Tidak dapat mewujudkan folder baharu"]},{msgid:"Could not load files settings",msgstr:["Tidak dapat memuatkan tetapan fail"]},{msgid:"Could not load files views",msgstr:["Tidak dapat memuatkan paparan fail"]},{msgid:"Create directory",msgstr:["mewujudkan direktori"]},{msgid:"Current view selector",msgstr:["pemilih pandangan semasa"]},{msgid:"Favorites",msgstr:["Pilihan"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Fail dan folder yang anda tanda sebagai pilihan akan dipaparkan di sini."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Fail dan folder yang anda telah ubah suai baru-baru ini dipaparkan di sini."]},{msgid:"Filter file list",msgstr:["Menapis senarai fail"]},{msgid:"Folder name cannot be empty.",msgstr:["Nama folder tidak boleh kosong."]},{msgid:"Home",msgstr:["Utama"]},{msgid:"Modified",msgstr:["Ubah suai"]},{msgid:"Move",msgstr:["pindah"]},{msgid:"Move to {target}",msgstr:["pindah ke {target}"]},{msgid:"Name",msgstr:["Nama"]},{msgid:"New",msgstr:["Baru"]},{msgid:"New folder",msgstr:["Folder Baharu"]},{msgid:"New folder name",msgstr:["Nama folder baharu"]},{msgid:"No files in here",msgstr:["Tiada fail di sini"]},{msgid:"No files matching your filter were found.",msgstr:["Tiada fail yang sepadan dengan tapisan anda."]},{msgid:"No matching files",msgstr:["Tiada fail yang sepadan"]},{msgid:"Recent",msgstr:["baru-baru ini"]},{msgid:"Select all entries",msgstr:["Pilih semua entri"]},{msgid:"Select entry",msgstr:["Pilih entri"]},{msgid:"Select the row for {nodename}",msgstr:["memilih baris {nodename}"]},{msgid:"Size",msgstr:["Saiz"]},{msgid:"Undo",msgstr:["buat asal"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Muat naik beberapa kandungan atau selaras dengan peranti anda!"]}]},{language:"nb_NO",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" er ikke tillatt i et mappenavn.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" er ikke tillatt i et navn.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" er ikke et tillatt navn.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" er et reservert navn og er ikke tillatt for mappenavn.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" er et reservert navn og er ikke tillatt.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n filkonflikt","%n files conflict"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n fil konflikter i {dirname}","%n fil konflikter i {dirname}"]},{msgid:"All files",msgstr:["Alle filer"]},{msgid:"Cancel",msgstr:["Avbryt"]},{msgid:"Cancel the entire operation",msgstr:["Avbryt hele operasjonen"]},{msgid:"Choose",msgstr:["Velg"]},{msgid:"Choose {file}",msgstr:["Velg {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Velg %n fil","Velg %n filer"]},{msgid:"Confirm",msgstr:["Bekreft"]},{msgid:"Continue",msgstr:["Fortsett"]},{msgid:"Copy",msgstr:["Kopier"]},{msgid:"Copy to {target}",msgstr:["Kopier til {target}"]},{msgid:"Could not create the new folder",msgstr:["Kunne ikke opprette den nye mappen"]},{msgid:"Could not load files settings",msgstr:["Kunne ikke laste filinnstillinger"]},{msgid:"Could not load files views",msgstr:["Kunne ikke laste filvisninger"]},{msgid:"Create directory",msgstr:["Opprett mappe"]},{msgid:"Current view selector",msgstr:["Nåværende visningsvelger"]},{msgid:"Enter your name",msgstr:["Skriv inn navnet ditt"]},{msgid:"Existing version",msgstr:["Eksisterende versjon"]},{msgid:"Failed to set nickname.",msgstr:["Kunne ikke lagre kallenavnet."]},{msgid:"Favorites",msgstr:["Favoritter"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Filer og mapper du markerer som favoritter vil vises her."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Filer og mapper du nylig har endret, vil vises her."]},{msgid:"Filter file list",msgstr:["Filtrer filliste"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Mappenavn må ikke slutte med "{extension}".']},{msgid:"Guest identification",msgstr:["Gjesteidentifikasjon"]},{msgid:"Home",msgstr:["Hjem"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Hvis du velger begge versjonene, vil den innkommende filen få et nummer lagt til navnet sitt."]},{msgid:"Invalid folder name.",msgstr:["Ugyldig mappenavn."]},{msgid:"Invalid name.",msgstr:["Ugyldig navn."]},{msgid:"Last modified date unknown",msgstr:["Sist endret dato ukjent"]},{msgid:"Modified",msgstr:["Modifisert"]},{msgid:"Move",msgstr:["Flytt"]},{msgid:"Move to {target}",msgstr:["Flytt til {target}"]},{msgid:"Name",msgstr:["Navn"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Navn kan maksimalt være 64 tegn lange."]},{msgid:"Names must not be empty.",msgstr:["Navn kan ikke være tomme."]},{msgid:'Names must not end with "{extension}".',msgstr:['Navn kan ikke ende med "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Navn kan ikke starte med et punktum."]},{msgid:"New",msgstr:["Ny"]},{msgid:"New folder",msgstr:["Ny mappe"]},{msgid:"New folder name",msgstr:["Nytt mappenavn"]},{msgid:"New version",msgstr:["Ny versjon"]},{msgid:"No files in here",msgstr:["Ingen filer her"]},{msgid:"No files matching your filter were found.",msgstr:["Ingen filer funnet med ditt filter."]},{msgid:"No matching files",msgstr:["Ingen filer samsvarer"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Vennligst angi et navn som har minst 2 tegn."]},{msgid:"Recent",msgstr:["Nylige"]},{msgid:"Select all checkboxes",msgstr:["Merk av i alle avmerkingsboksene"]},{msgid:"Select all entries",msgstr:["Velg alle oppføringer"]},{msgid:"Select all existing files",msgstr:["Velg alle eksisterende filer"]},{msgid:"Select all new files",msgstr:["Velg alle nye filer"]},{msgid:"Select entry",msgstr:["Velg oppføring"]},{msgid:"Select the row for {nodename}",msgstr:["Velg raden for {nodename}"]},{msgid:"Size",msgstr:["Størrelse"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Hopp over %n fil","Hopp over %nfiler"]},{msgid:"Skip this file",msgstr:["Hopp over denne filen"]},{msgid:"Submit name",msgstr:["Bekreft navn"]},{msgid:"Undo",msgstr:["Angre"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Last opp innhold eller synkroniser med enhetene dine!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Når en innkommende mappe velges, vil eventuelle motstridende filer i den også bli overskrevet."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Når en innkommende mappe velges, vil eventuelle filer i den også bli overskrevet."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres."]},{msgid:"Which files do you want to keep?",msgstr:["Hvilke filer vil du beholde?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du er akkurat nå identifisert som {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Du er akkurat nå ikke identifisert."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kan ikke la navnet være blankt."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Du må velge minst én konfliktløsning"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du må velge minst én versjon av hver fil for å fortsette."]}]},{language:"nl",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" is niet toegestaan in een mapnaam.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" kan niet gebruikt worden in de benaming.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" is geen toegestane naam.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" is een gereserveerde naam en niet toegestaan in mapnamen.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" is een gereserveerde naam en niet toegestaan.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n bestanden conflicteren","%nbestand bestanden conflicteren"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n bestand conflicteerd in {dirname}","%nbestanden conflicteert in {dirname}"]},{msgid:"All files",msgstr:["Alle bestanden"]},{msgid:"Cancel",msgstr:["Annuleren"]},{msgid:"Cancel the entire operation",msgstr:["Annuleer de hele bewerking"]},{msgid:"Choose",msgstr:["Kiezen"]},{msgid:"Choose {file}",msgstr:["Kies {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Kies %n bestand","Kies %n bestanden"]},{msgid:"Confirm",msgstr:["Bevestigen"]},{msgid:"Continue",msgstr:["Doorgaan"]},{msgid:"Copy",msgstr:["Kopiëren"]},{msgid:"Copy to {target}",msgstr:["Kopiëren naar {target}"]},{msgid:"Could not create the new folder",msgstr:["Kon de nieuwe map niet maken"]},{msgid:"Could not load files settings",msgstr:["Kon de bestandsinstellingen niet laden"]},{msgid:"Could not load files views",msgstr:["Kon de bestandsweergaves niet laden"]},{msgid:"Create directory",msgstr:["Map aanmaken"]},{msgid:"Current view selector",msgstr:["Huidige weergave keuze"]},{msgid:"Enter your name",msgstr:["Voer je naam in"]},{msgid:"Existing version",msgstr:["Bestaande versie"]},{msgid:"Failed to set nickname.",msgstr:["Kon geen bijnaam instellen."]},{msgid:"Favorites",msgstr:["Favorieten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Bestanden en mappen die je als favoriet markeert, verschijnen hier."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Bestanden en mappen die je recentelijk hebt gewijzigd, verschijnen hier."]},{msgid:"Filter file list",msgstr:["Bestandslijst filteren"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Mapnamen mogen niet eindigen op "{extension}".']},{msgid:"Guest identification",msgstr:["Gastenidentificatie"]},{msgid:"Home",msgstr:["Thuis"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Als u beide versies selecteert wordt een nummer toegevoegd aan de naam van het binnenkomende bestand."]},{msgid:"Invalid folder name.",msgstr:["Ongeldige mapnaam."]},{msgid:"Invalid name.",msgstr:["Ongeldige naam."]},{msgid:"Last modified date unknown",msgstr:["Laatste wijzigingsdatum onbekend"]},{msgid:"Modified",msgstr:["Gewijzigd"]},{msgid:"Move",msgstr:["Verplaatsen"]},{msgid:"Move to {target}",msgstr:["Verplaatsen naar {target}"]},{msgid:"Name",msgstr:["Naam"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namen mogen maximaal 64 tekens lang zijn."]},{msgid:"Names must not be empty.",msgstr:["Namen mogen niet leeg zijn."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namen mogen niet eindigen met "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Namen mogen niet begonnen met een punt."]},{msgid:"New",msgstr:["Nieuw"]},{msgid:"New folder",msgstr:["Nieuwe map"]},{msgid:"New folder name",msgstr:["Nieuwe mapnaam"]},{msgid:"New version",msgstr:["Nieuwe versie"]},{msgid:"No files in here",msgstr:["Geen bestanden hier"]},{msgid:"No files matching your filter were found.",msgstr:["Geen bestanden gevonden die voldoen aan je filter."]},{msgid:"No matching files",msgstr:["Geen overeenkomende bestanden"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Voer een naam in met minimaal 2 tekens."]},{msgid:"Recent",msgstr:["Recent"]},{msgid:"Select all checkboxes",msgstr:["Selecteer alle aanvinkopties"]},{msgid:"Select all entries",msgstr:["Alle invoer selecteren"]},{msgid:"Select all existing files",msgstr:["Selecteer alle bestaande bestanden"]},{msgid:"Select all new files",msgstr:["Selecteer alle nieuwe bestanden"]},{msgid:"Select entry",msgstr:["Invoer selecteren"]},{msgid:"Select the row for {nodename}",msgstr:["Selecteer de rij voor {nodename}"]},{msgid:"Size",msgstr:["Grootte"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Sla %n bestand over","Sla %n bestanden over"]},{msgid:"Skip this file",msgstr:["Sla dit bestand over"]},{msgid:"Submit name",msgstr:["Naam indienen"]},{msgid:"Undo",msgstr:["Ongedaan maken"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Upload inhoud of synchroniseer met je apparaten!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Als een inkomende map wordt geselecteerd, worden alle conflicterende bestanden daarin overschreven."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Wanneer een inkomende folder is geselecteerd, worden bestanden in deze folder ook overschreven."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Als een inkomende map wordt geselecteerd, wordt de inhoud naar de bestaande map geschreven en wordt een recursieve conflict-oplossing uitgevoerd."]},{msgid:"Which files do you want to keep?",msgstr:["Welke bestanden wilt u bewaren?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Je wordt momenteel geïdentificeerd als {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Je bent momenteel niet geïdentificeerd."]},{msgid:"You cannot leave the name empty.",msgstr:["Je kunt de naam niet leeg laten."]},{msgid:"You need to choose at least one conflict solution",msgstr:["U moet in elk geval een conflictoplossing kiezen"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["U moet minstens een versie van elk bestand kiezen om door te gaan. "]}]},{language:"pl",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['Znak "{char}" nie jest dozwolony w nazwie folderu.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" nie jest dozwolone w nazwie.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" nie jest dozwoloną nazwą.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" jest nazwą zastrzeżoną i nie jest dozwolona jako nazwa folderu.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" jest zastrzeżoną nazwą i nie jest dozwolone.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["Konflikt pliku","Konflikt %n plików","Konflikt %n plików","Konflikt %n plików"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n konfliktów pliku w {dirname}","%n konfliktów plików w {dirname}","%n konfliktów plików w {dirname}","%n konfliktów plików w {dirname}"]},{msgid:"All files",msgstr:["Wszystkie pliki"]},{msgid:"Cancel",msgstr:["Anuluj"]},{msgid:"Cancel the entire operation",msgstr:["Anuluj całą operację"]},{msgid:"Choose",msgstr:["Wybierz"]},{msgid:"Choose {file}",msgstr:["Wybierz {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Wybierz %n plik","Wybierz %n pliki","Wybierz %n plików","Wybierz %n plików"]},{msgid:"Confirm",msgstr:["Potwierdź"]},{msgid:"Continue",msgstr:["Kontynuuj"]},{msgid:"Copy",msgstr:["Kopiuj"]},{msgid:"Copy to {target}",msgstr:["Skopiuj do {target}"]},{msgid:"Could not create the new folder",msgstr:["Nie można utworzyć nowego folderu"]},{msgid:"Could not load files settings",msgstr:["Nie można wczytać ustawień plików"]},{msgid:"Could not load files views",msgstr:["Nie można wczytać widoków plików"]},{msgid:"Create directory",msgstr:["Utwórz katalog"]},{msgid:"Current view selector",msgstr:["Bieżący selektor widoku"]},{msgid:"Enter your name",msgstr:["Wprowadź nazwę"]},{msgid:"Existing version",msgstr:["Istniejąca wersja"]},{msgid:"Failed to set nickname.",msgstr:["Nie udało się utworzyć pseudonimu."]},{msgid:"Favorites",msgstr:["Ulubione"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Pliki i foldery które oznaczysz jako ulubione będą wyświetlały się tutaj"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Pliki i foldery które ostatnio modyfikowałeś będą wyświetlały się tutaj"]},{msgid:"Filter file list",msgstr:["Filtruj listę plików"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nazwy folderów nie mogą kończyć się na "{extension}".']},{msgid:"Guest identification",msgstr:["Identyfikacja gościa"]},{msgid:"Home",msgstr:["Strona główna"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jeśli wybierzesz obie wersje, do nazwy przychodzącego pliku zostanie dodany numer."]},{msgid:"Invalid folder name.",msgstr:["Nieprawidłowa nazwa folderu."]},{msgid:"Invalid name.",msgstr:["Nieprawidłowa nazwa."]},{msgid:"Last modified date unknown",msgstr:["Data ostatniej modyfikacji nieznana"]},{msgid:"Modified",msgstr:["Zmodyfikowano"]},{msgid:"Move",msgstr:["Przenieś"]},{msgid:"Move to {target}",msgstr:["Przejdź do {target}"]},{msgid:"Name",msgstr:["Nazwa"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nazwy mogą mieć maksymalnie 64 znaki."]},{msgid:"Names must not be empty.",msgstr:["Nazwy nie mogą być puste."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nazwy nie mogą kończyć się na "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nazwy nie mogą zaczynać się od kropki."]},{msgid:"New",msgstr:["Nowy"]},{msgid:"New folder",msgstr:["Nowy folder"]},{msgid:"New folder name",msgstr:["Nowa nazwa folderu"]},{msgid:"New version",msgstr:["Nowa wersja"]},{msgid:"No files in here",msgstr:["Brak plików"]},{msgid:"No files matching your filter were found.",msgstr:["Nie znaleziono plików spełniających warunki filtru"]},{msgid:"No matching files",msgstr:["Brak pasujących plików"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Wprowadź nazwę zawierającą minimum 2 znaki."]},{msgid:"Recent",msgstr:["Ostatni"]},{msgid:"Select all checkboxes",msgstr:["Zaznacz wszystkie pola wyboru"]},{msgid:"Select all entries",msgstr:["Wybierz wszystkie wpisy"]},{msgid:"Select all existing files",msgstr:["Zaznacz wszystkie istniejące pliki"]},{msgid:"Select all new files",msgstr:["Zaznacz wszystkie nowe pliki"]},{msgid:"Select entry",msgstr:["Wybierz wpis"]},{msgid:"Select the row for {nodename}",msgstr:["Wybierz wiersz dla {nodename}"]},{msgid:"Size",msgstr:["Rozmiar"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Pomiń %n plik","Pomiń %n plików","Pomiń %n plików","Pomiń %n plików"]},{msgid:"Skip this file",msgstr:["Pomiń ten plik"]},{msgid:"Submit name",msgstr:["Zatwierdź nazwę"]},{msgid:"Undo",msgstr:["Cofnij"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Wyślij zawartość lub zsynchronizuj ze swoimi urządzeniami!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Po wybraniu przychodzącego folderu wszystkie konfliktujące pliki w jego obrębie również zostaną nadpisane."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Po wybraniu przychodzącego folderu jego zawartość zostanie zapisana w istniejącym folderze i zostanie przeprowadzone rekursywne rozwiązywanie konfliktów."]},{msgid:"Which files do you want to keep?",msgstr:["Które pliki chcesz zachować?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Obecnie jesteś zidentyfikowany jako {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Użytkownik nie został uwierzytelniony."]},{msgid:"You cannot leave the name empty.",msgstr:["Nazwa nie może być pusta."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Musisz wybrać co najmniej jedno rozwiązanie konfliktu"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku."]}]},{language:"pt_BR",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" não é permitido dentro de um nome de pasta.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" não é permitido dentro de um nome.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" não é um nome permitido.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" é um nome reservado e não permitido para nomes de pasta.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" é um nome reservado e não permitido.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n arquivo conflita","%n de arquivos conflitam","%n arquivos conflitam"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n conflito de arquivo em {dirname}","%n de conflitos de arquivos em {dirname}","%n conflitos de arquivos em {dirname}"]},{msgid:"All files",msgstr:["Todos os arquivos"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar toda a operação"]},{msgid:"Choose",msgstr:["Escolher"]},{msgid:"Choose {file}",msgstr:["Escolher {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escolher %n arquivo","Escolher %n arquivos","Escolher %n arquivos"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar para {target}"]},{msgid:"Could not create the new folder",msgstr:["Não foi possível criar a nova pasta"]},{msgid:"Could not load files settings",msgstr:["Não foi possível carregar configurações de arquivos"]},{msgid:"Could not load files views",msgstr:["Não foi possível carregar visualições de arquivos"]},{msgid:"Create directory",msgstr:["Criar diretório"]},{msgid:"Current view selector",msgstr:["Seletor de visualização atual"]},{msgid:"Enter your name",msgstr:["Digite seu nome"]},{msgid:"Existing version",msgstr:["Versão existente"]},{msgid:"Failed to set nickname.",msgstr:["Falha ao definir apelido."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Os arquivos e pastas que você marca como favoritos aparecerão aqui."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Arquivos e pastas que você modificou recentemente aparecerão aqui."]},{msgid:"Filter file list",msgstr:["Filtrar lista de arquivos"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nomes de pasta não podem terminar com "{extension}".']},{msgid:"Guest identification",msgstr:["Identificação de convidados"]},{msgid:"Home",msgstr:["Início"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se você selecionar ambas as versões, um número será adicionado ao nome do arquivo recebido."]},{msgid:"Invalid folder name.",msgstr:["Nome de pasta inválido."]},{msgid:"Invalid name.",msgstr:["Nome inválido."]},{msgid:"Last modified date unknown",msgstr:["Data da última modificação desconhecida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover para {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Os nomes podem ter no máximo 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["Nomes não podem estar vazios."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nomes não podem terminar com "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nomes não podem começar com um ponto."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Nova pasta"]},{msgid:"New folder name",msgstr:["Novo nome de pasta"]},{msgid:"New version",msgstr:["Nova versão"]},{msgid:"No files in here",msgstr:["Nenhum arquivo aqui"]},{msgid:"No files matching your filter were found.",msgstr:["Nenhum arquivo correspondente ao seu filtro foi encontrado."]},{msgid:"No matching files",msgstr:["Nenhum arquivo correspondente"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Digite um nome com pelo menos 2 caracteres."]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all checkboxes",msgstr:["Selecione todas as caixas de seleção"]},{msgid:"Select all entries",msgstr:["Selecionar todas as entradas"]},{msgid:"Select all existing files",msgstr:["Selecione todos os arquivos existentes"]},{msgid:"Select all new files",msgstr:["Selecione todos os novos arquivos"]},{msgid:"Select entry",msgstr:["Selecionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Selecionar a linha para {nodename}"]},{msgid:"Size",msgstr:["Tamanho"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Ignorar %n arquivo","Ignorar %n de arquivos","Ignorar %n arquivos"]},{msgid:"Skip this file",msgstr:["Ignorar este arquivo"]},{msgid:"Submit name",msgstr:["Enviar nome"]},{msgid:"Undo",msgstr:["Desfazer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Faça upload de algum conteúdo ou sincronize com seus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ao selecionar uma pasta de entrada, quaisquer arquivos conflitantes dentro dela também serão sobrescritos."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Quando uma pasta de entrada for selecionada, todos os arquivos nela contidos também serão substituídos."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução recursiva de conflitos é realizada."]},{msgid:"Which files do you want to keep?",msgstr:["Quais arquivos você deseja manter?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Você está atualmente identificado como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["No momento, você não está identificado."]},{msgid:"You cannot leave the name empty.",msgstr:["Você não pode deixar o nome vazio."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Você precisa escolher pelo menos uma solução para o conflito"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Você precisa selecionar pelo menos uma versão de cada arquivo para continuar."]}]},{language:"pt_PT",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" não é permitido dentro de um nome de pasta.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" não é permitido dentro de um nome.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" não é um nome permitido.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" é um nome reservado e não é permitido para nomes de pasta.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" é um nome reservado e não é permitido.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n ficheiro em conflito","%n ficheiros em conflito","%n ficheiros em conflito"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n ficheiro em conflito em {dirname}","%n ficheiros em conflito em {dirname}","%n ficheiros em conflito em {dirname}"]},{msgid:"All files",msgstr:["Todos os ficheiros"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar toda a operação"]},{msgid:"Choose",msgstr:["Escolher"]},{msgid:"Choose {file}",msgstr:["Escolher {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escolha %n ficheiro","Escolha %n ficheiros","Escolha %n ficheiros"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar para {target}"]},{msgid:"Could not create the new folder",msgstr:["Não foi possível criar a nova pasta "]},{msgid:"Could not load files settings",msgstr:["Não foi possível carregar as definições dos ficheiros"]},{msgid:"Could not load files views",msgstr:["Não foi possível carregar as visualizações dos ficheiros"]},{msgid:"Create directory",msgstr:["Criar pasta"]},{msgid:"Current view selector",msgstr:["Seletor de visualização atual"]},{msgid:"Enter your name",msgstr:["Introduza o seu nome"]},{msgid:"Existing version",msgstr:["Versão existente"]},{msgid:"Failed to set nickname.",msgstr:["Falha ao definir o nome alternativo."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Os ficheiros e as pastas que marcar como favoritos aparecerão aqui."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Os ficheiros e as pastas que modificou recentemente aparecerão aqui."]},{msgid:"Filter file list",msgstr:["Filtrar lista de ficheiros"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nomes de pasta não podem terminar em "{extension}".']},{msgid:"Guest identification",msgstr:["Identificação de convidado"]},{msgid:"Home",msgstr:["Início"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se você selecionar ambas as versões, um número será adicionado ao nome do ficheiro recebido."]},{msgid:"Invalid folder name.",msgstr:["Nome de pasta inválido."]},{msgid:"Invalid name.",msgstr:["Nome inválido."]},{msgid:"Last modified date unknown",msgstr:["Data da última modificação desconhecida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover para {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Os nomes podem ter no máximo 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["O nome não pode ficar em branco."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nomes não podem terminar em "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Os nomes não podem começar por um ponto."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Nova pasta"]},{msgid:"New folder name",msgstr:["Novo nome da pasta"]},{msgid:"New version",msgstr:["Nova versão"]},{msgid:"No files in here",msgstr:["Sem ficheiros aqui"]},{msgid:"No files matching your filter were found.",msgstr:["Não foi encontrado nenhum ficheiro correspondente ao seu filtro."]},{msgid:"No matching files",msgstr:["Nenhum ficheiro correspondente"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Introduza um nome com, pelo menos, 2 caracteres."]},{msgid:"Recent",msgstr:["Recentes"]},{msgid:"Select all checkboxes",msgstr:["Selecione todas as caixas de seleção"]},{msgid:"Select all entries",msgstr:["Selecionar todas as entradas"]},{msgid:"Select all existing files",msgstr:["Selecione todos os ficheiros existentes"]},{msgid:"Select all new files",msgstr:["Selecione todos os novos ficheiros"]},{msgid:"Select entry",msgstr:["Selecionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Selecione a linha para {nodename}"]},{msgid:"Size",msgstr:["Tamanho"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Ignorar %n ficheiro","Ignorar %n ficheiros","Ignorar %n ficheiros"]},{msgid:"Skip this file",msgstr:["Ignorar este ficheiro"]},{msgid:"Submit name",msgstr:["Submeter nome"]},{msgid:"Undo",msgstr:["Anular"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Envie algum conteúdo ou sincronize com os seus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ao selecionar uma pasta de entrada, quaisquer ficheiros conflituantes dentro da mesma serão também sobrescritos."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Ao selecionar uma pasta de entrada, todos os ficheiros nela contidos serão também sobrescritos."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e é realizada uma resolução recursiva de conflitos."]},{msgid:"Which files do you want to keep?",msgstr:["Quais os ficheiros que deseja manter?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Atualmente está identificado como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Atualmente, não está identificado."]},{msgid:"You cannot leave the name empty.",msgstr:["Não pode deixar o nome em branco."]},{msgid:"You need to choose at least one conflict solution",msgstr:["É preciso escolher pelo menos uma solução para o conflito."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["É necessário selecionar pelo menos uma versão de cada ficheiro para continuar."]}]},{language:"ro",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" este un nume de director invalid.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" nu este un nume de director permis']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" nu este permis în numele unui director.']},{msgid:"All files",msgstr:["Toate fișierele"]},{msgid:"Choose",msgstr:["Alege"]},{msgid:"Choose {file}",msgstr:["Alege {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Alege %n fișier","Alege %n fișiere","Alege %n fișiere"]},{msgid:"Copy",msgstr:["Copiază"]},{msgid:"Copy to {target}",msgstr:["Copiază în {target}"]},{msgid:"Could not create the new folder",msgstr:["Nu s-a putut crea noul director"]},{msgid:"Could not load files settings",msgstr:["Nu s-au putut încărca setările fișierelor"]},{msgid:"Could not load files views",msgstr:["Nu s-au putut încărca vizualizările fișierelor"]},{msgid:"Create directory",msgstr:["Creează director"]},{msgid:"Current view selector",msgstr:["Selectorul curent al vizualizării"]},{msgid:"Favorites",msgstr:["Favorite"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Fișiere și directoare pe care le marcați ca favorite vor apărea aici."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Fișiere și directoare pe care le-ați modificat recent vor apărea aici."]},{msgid:"Filter file list",msgstr:["Filtrează lista de fișiere"]},{msgid:"Folder name cannot be empty.",msgstr:["Numele de director nu poate fi necompletat."]},{msgid:"Home",msgstr:["Acasă"]},{msgid:"Modified",msgstr:["Modificat"]},{msgid:"Move",msgstr:["Mută"]},{msgid:"Move to {target}",msgstr:["Mută către {target}"]},{msgid:"Name",msgstr:["Nume"]},{msgid:"New",msgstr:["Nou"]},{msgid:"New folder",msgstr:["Director nou"]},{msgid:"New folder name",msgstr:["Numele noului director"]},{msgid:"No files in here",msgstr:["Nu există fișiere"]},{msgid:"No files matching your filter were found.",msgstr:["Nu există fișiere potrivite pentru filtrul selectat"]},{msgid:"No matching files",msgstr:["Nu există fișiere potrivite"]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all entries",msgstr:["Selectează toate înregistrările"]},{msgid:"Select entry",msgstr:["Selectează înregistrarea"]},{msgid:"Select the row for {nodename}",msgstr:["Selectează rândul pentru {nodename}"]},{msgid:"Size",msgstr:["Mărime"]},{msgid:"Undo",msgstr:["Anulează"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Încărcați conținut sau sincronizați cu dispozitivele dumneavoastră!"]}]},{language:"ru",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" не допускается в названии папки.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" не допускается внутри имени.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" — недопустимое имя.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" — зарезервированное имя, недопустимое для имени папки.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" — зарезервированное и недопустимое имя.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n конфликт файла","%n конфликта файлов","%n конфликтов файлов","%n конфликтов файлов"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n конфликт файлов в {dirname}","%n конфликта файлов в {dirname}","%n конфликтов файлов в {dirname}","%n конфликтов файлов в {dirname}"]},{msgid:"All files",msgstr:["Все файлы"]},{msgid:"Cancel",msgstr:["Отмена"]},{msgid:"Cancel the entire operation",msgstr:["Отменить всю операцию"]},{msgid:"Choose",msgstr:["Выбрать"]},{msgid:"Choose {file}",msgstr:["Выбрать «{file}»"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Выбрать %n файл","Выбрать %n файла","Выбрать %n файлов","Выбрать %n файлов"]},{msgid:"Confirm",msgstr:["Подтвердить"]},{msgid:"Continue",msgstr:["Продолжить"]},{msgid:"Copy",msgstr:["Копировать"]},{msgid:"Copy to {target}",msgstr:["Копировать в «{target}»"]},{msgid:"Could not create the new folder",msgstr:["Не удалось создать новую папку"]},{msgid:"Could not load files settings",msgstr:["Не удалось загрузить настройки файлов"]},{msgid:"Could not load files views",msgstr:["Не удалось загрузить конфигурацию просмотра файлов"]},{msgid:"Create directory",msgstr:["Создать папку"]},{msgid:"Current view selector",msgstr:["Переключатель текущего вида"]},{msgid:"Enter your name",msgstr:["Введите ваше имя"]},{msgid:"Existing version",msgstr:["Текущая версия"]},{msgid:"Failed to set nickname.",msgstr:["Не удалось задать никнейм."]},{msgid:"Favorites",msgstr:["Избранное"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Здесь будут отображаться файлы и папки, которые вы пометили как избранные."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Здесь будут отображаться файлы и папки, которые вы недавно изменили."]},{msgid:"Filter file list",msgstr:["Фильтровать список файлов"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Имена папок не могут оканчиваться на "{extension}".']},{msgid:"Guest identification",msgstr:["Гостевая идентификация"]},{msgid:"Home",msgstr:["Домой"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Если вы выберете обе версии, к имени входящего файла будет добавлен номер."]},{msgid:"Invalid folder name.",msgstr:["Недопустимое имя папки."]},{msgid:"Invalid name.",msgstr:["Недопустимое имя."]},{msgid:"Last modified date unknown",msgstr:["Дата последнего изменения неизвестна"]},{msgid:"Modified",msgstr:["Изменен"]},{msgid:"Move",msgstr:["Переместить"]},{msgid:"Move to {target}",msgstr:["Переместить в «{target}»"]},{msgid:"Name",msgstr:["Имя"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Имена не могут быть длиннее 64 символов."]},{msgid:"Names must not be empty.",msgstr:["Имена не могут быть пустыми."]},{msgid:'Names must not end with "{extension}".',msgstr:['Имена не могут оканчиваться на "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Имена не должны начинаться с точки."]},{msgid:"New",msgstr:["Новый"]},{msgid:"New folder",msgstr:["Новая папка"]},{msgid:"New folder name",msgstr:["Имя новой папки"]},{msgid:"New version",msgstr:["Новая версия"]},{msgid:"No files in here",msgstr:["Здесь нет файлов"]},{msgid:"No files matching your filter were found.",msgstr:["Файлы, соответствующие вашему фильтру, не найдены."]},{msgid:"No matching files",msgstr:["Нет подходящих файлов"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Введите имя длиной не менее 2 символов."]},{msgid:"Recent",msgstr:["Недавний"]},{msgid:"Select all checkboxes",msgstr:["Выбрать все флажки"]},{msgid:"Select all entries",msgstr:["Выбрать все записи"]},{msgid:"Select all existing files",msgstr:["Выбрать все существующие файлы"]},{msgid:"Select all new files",msgstr:["Выбрать все новые файлы"]},{msgid:"Select entry",msgstr:["Выбрать запись"]},{msgid:"Select the row for {nodename}",msgstr:["Выбрать строку для «{nodename}»"]},{msgid:"Size",msgstr:["Размер"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Пропустить %n файл","Пропустить %n файла","Пропустить %n файлов","Пропустить %n файлов"]},{msgid:"Skip this file",msgstr:["Пропустить файл"]},{msgid:"Submit name",msgstr:["Отправить имя"]},{msgid:"Undo",msgstr:["Отменить"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Загрузите контент или синхронизируйте его со своими устройствами!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Когда выбрана входящая папка, все файлы в ней также будут перезаписаны."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов."]},{msgid:"Which files do you want to keep?",msgstr:["Какие файлы вы хотите сохранить?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Вы идентифицированы как {nickname}."]},{msgid:"You are currently not identified.",msgstr:["В данный момент вы не идентифицированы."]},{msgid:"You cannot leave the name empty.",msgstr:["Вы не можете оставить имя пустым."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Вам нужно выбрать хотя бы одно решение конфликта"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Для продолжения вам нужно выбрать хотя бы одну версию каждого файла."]}]},{language:"sk_SK",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" nie je povolené v názve priečinka.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" nie je povolené v rámci mena.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" nie je povolený názov.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["„{segment}“ je rezervované meno a nie je povolené na názvy priečinkov."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" je rezervované meno a nie je povolené.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n konflikt súborov","%n konflikty súborov","%n konfliktov súborov","%n konflikty súborov"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n konflikt súborov v {dirname}","%n konflikty súborov v {dirname}","%n konfliktov súborov v {dirname}","%n konfliktov súborov v {dirname}"]},{msgid:"All files",msgstr:["Všetky súbory"]},{msgid:"Cancel",msgstr:["Zrušiť"]},{msgid:"Cancel the entire operation",msgstr:["Zrušiť celú operáciu"]},{msgid:"Choose",msgstr:["Vybrať"]},{msgid:"Choose {file}",msgstr:["Vybrať {súbor}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Vybraný %n súbor","Vybrané %n súbory","Vybraných %n súborov","Vybraných %n súborov"]},{msgid:"Confirm",msgstr:["Potvrdiť"]},{msgid:"Continue",msgstr:["Pokračovať"]},{msgid:"Copy",msgstr:["Kopírovať"]},{msgid:"Copy to {target}",msgstr:["Kopírovať do {umiestnenia}"]},{msgid:"Could not create the new folder",msgstr:["Nepodarilo sa vytvoriť nový priečinok"]},{msgid:"Could not load files settings",msgstr:["Nepodarilo sa načítať nastavenia súborov"]},{msgid:"Could not load files views",msgstr:["Nepodarilo sa načítať pohľady súborov"]},{msgid:"Create directory",msgstr:["Vytvoriť adresár"]},{msgid:"Current view selector",msgstr:["Výber aktuálneho zobrazenia"]},{msgid:"Enter your name",msgstr:["Zadajte svoje meno"]},{msgid:"Existing version",msgstr:["Existujúca verzia"]},{msgid:"Failed to set nickname.",msgstr:["Nepodarilo sa nastaviť prezývku."]},{msgid:"Favorites",msgstr:["Obľúbené"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Tu sa zobrazia súbory a priečinky, ktoré označíte ako obľúbené."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Tu sa zobrazia súbory a priečinky, ktoré ste nedávno upravili."]},{msgid:"Filter file list",msgstr:["Filtrovať zoznam súborov"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Názvy priečinkov nesmú končiť na "{extension}".']},{msgid:"Guest identification",msgstr:["Identifikácia hosťa"]},{msgid:"Home",msgstr:["Domov"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ak vyberiete obe verzie, prichádzajúci súbor bude mať k svojmu názvu pridané číslo."]},{msgid:"Invalid folder name.",msgstr:["Neplatný názov priečinka."]},{msgid:"Invalid name.",msgstr:["Neplatné meno."]},{msgid:"Last modified date unknown",msgstr:["Posledná zmena dátumu neznáma"]},{msgid:"Modified",msgstr:["Upravené"]},{msgid:"Move",msgstr:["Prejsť"]},{msgid:"Move to {target}",msgstr:["Prejsť na {umiestnenie}"]},{msgid:"Name",msgstr:["Názov"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Mená môžu mať maximálne 64 znakov."]},{msgid:"Names must not be empty.",msgstr:["Mená nesmú byť prázdne."]},{msgid:'Names must not end with "{extension}".',msgstr:['Mená nesmú končiť "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Mená nesmú začínať bodkou."]},{msgid:"New",msgstr:["Pridať"]},{msgid:"New folder",msgstr:["Pridať priečinok"]},{msgid:"New folder name",msgstr:["Pridať názov priečinka"]},{msgid:"New version",msgstr:["Nová verzia"]},{msgid:"No files in here",msgstr:["Nie sú tu žiadne súbory"]},{msgid:"No files matching your filter were found.",msgstr:["Nenašli sa žiadne súbory zodpovedajúce vášmu filtru."]},{msgid:"No matching files",msgstr:["Žiadne zodpovedajúce súbory"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Zadajte meno s aspoň 2 znakmi."]},{msgid:"Recent",msgstr:["Nedávne"]},{msgid:"Select all checkboxes",msgstr:["Vyberte všetky zaškrtávacie políčka"]},{msgid:"Select all entries",msgstr:["Vybrať všetky položky"]},{msgid:"Select all existing files",msgstr:["Vybrať všetky existujúce súbory"]},{msgid:"Select all new files",msgstr:["Vybrať všetky nové súbory"]},{msgid:"Select entry",msgstr:["Vybrať položku"]},{msgid:"Select the row for {nodename}",msgstr:["Vyberte riadok pre {názov uzla}"]},{msgid:"Size",msgstr:["Veľkosť"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Preskočiť %n súbor","Preskočiť %n súbory","Preskočiť %n súborov","Preskočiť %n súbory"]},{msgid:"Skip this file",msgstr:["Preskočiť tento súbor"]},{msgid:"Submit name",msgstr:["Zadať meno"]},{msgid:"Undo",msgstr:["Späť"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Nahrajte nejaký obsah alebo synchronizujte so svojimi zariadeniami!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Keď je vybraná prichádzajúca složka, všetky konfliktné súbory v nej budú taktiež prepísané."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Keď je vybraná prichádzajúca zložka, obsah sa zapíše do existujúcej zložky a vykoná sa rekurzívne riešenie konfliktov."]},{msgid:"Which files do you want to keep?",msgstr:["Ktoré súbory chcete zachovať?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Momentálne ste identifikovaný ako {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Momentálne nie ste identifikovaný."]},{msgid:"You cannot leave the name empty.",msgstr:["Nemôžete nechať meno prázdne."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Musíte si vybrať aspoň jedno riešenie konfliktu."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Musíte vybrať aspoň jednu verziu každého súboru, aby ste mohli pokračovať."]}]},{language:"sl",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} je neveljavno ime mape."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} ni dovoljeno ime mape"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" ni dovoljen v imenu mape.']},{msgid:"All files",msgstr:["Vse datoteke"]},{msgid:"Choose",msgstr:["Izberi"]},{msgid:"Choose {file}",msgstr:["Izberi {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Izberi %n datoteko","Izberi %n datoteki","Izberi %n datotek","Izberi %n datotek"]},{msgid:"Copy",msgstr:["Kopiraj"]},{msgid:"Copy to {target}",msgstr:["Kopiraj v {target}"]},{msgid:"Could not create the new folder",msgstr:["Nisem mogel ustvariti nove mape"]},{msgid:"Could not load files settings",msgstr:["NIsem mogel naložiti nastavitev datotek"]},{msgid:"Could not load files views",msgstr:["Nisem mogel naložiti pogledov datotek"]},{msgid:"Create directory",msgstr:["Ustvari mapo"]},{msgid:"Current view selector",msgstr:["Izbirnik trenutnega pogleda"]},{msgid:"Favorites",msgstr:["Priljubljene"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Datoteke in mape ki jih označite kot priljubljene se bodo prikazale tukaj."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Daoteke in mape ki ste jih pred kratkim spremenili se bodo prikazale tukaj."]},{msgid:"Filter file list",msgstr:["Filtriraj seznam datotek"]},{msgid:"Folder name cannot be empty.",msgstr:["Ime mape ne more biti prazno"]},{msgid:"Home",msgstr:["Domov"]},{msgid:"Modified",msgstr:["Spremenjeno"]},{msgid:"Move",msgstr:["Premakni"]},{msgid:"Move to {target}",msgstr:["Premakni v {target}"]},{msgid:"Name",msgstr:["Ime"]},{msgid:"New",msgstr:["Nov"]},{msgid:"New folder",msgstr:["Nova mapa"]},{msgid:"New folder name",msgstr:["Novo ime mape"]},{msgid:"No files in here",msgstr:["Tukaj ni datotek"]},{msgid:"No files matching your filter were found.",msgstr:["Ni bilo najdenih ujemajočih datotek glede na vaš filter."]},{msgid:"No matching files",msgstr:["Ni ujemajočih datotek"]},{msgid:"Recent",msgstr:["Nedavne"]},{msgid:"Select all entries",msgstr:["Izberi vse vnose"]},{msgid:"Select entry",msgstr:["Izberi vnos"]},{msgid:"Select the row for {nodename}",msgstr:["Izberi vrstico za {nodename}"]},{msgid:"Size",msgstr:["Velikost"]},{msgid:"Undo",msgstr:["Razveljavi"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Naloži nekaj vsebine ali sinhroniziraj s svojimi napravami!"]}]},{language:"sr",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:["„{char}” није дозвољено унутар имена."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["„{extension}” није дозвољено име."]},{msgid:'"{name}" is an invalid folder name.',msgstr:["„{name}” није исправно име фолдера."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["„{name}” није дозвољено име за фолдер."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["„{segment}” је резервисано име и није дозвољено."]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["„/” није дозвољено унутар имена фолдера."]},{msgid:"All files",msgstr:["Сви фајлови"]},{msgid:"Cancel",msgstr:["Откажи"]},{msgid:"Choose",msgstr:["Изаберите"]},{msgid:"Choose {file}",msgstr:["Изаберите {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Изаберите %n фајл","Изаберите %n фајла","Изаберите %n фајлова"]},{msgid:"Copy",msgstr:["Копирај"]},{msgid:"Copy to {target}",msgstr:["Копирај у {target}"]},{msgid:"Could not create the new folder",msgstr:["Није могао да се креира нови фолдер"]},{msgid:"Could not load files settings",msgstr:["Не могу да се учитају подешавања фајлова"]},{msgid:"Could not load files views",msgstr:["Не могу да се учитају прикази фајлова"]},{msgid:"Create directory",msgstr:["Креирај директоријум"]},{msgid:"Current view selector",msgstr:["Бирач тренутног приказа"]},{msgid:"Enter your name",msgstr:["Унесите своје име"]},{msgid:"Failed to set nickname.",msgstr:["Није успело постављање надимка."]},{msgid:"Favorites",msgstr:["Омиљено"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Овде ће се појавити фајлови и фолдери које сте означили као омиљене."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Овде ће се појавити фајлови и фолдери који се се недавно изменили."]},{msgid:"Filter file list",msgstr:["Фитрирање листе фајлова"]},{msgid:"Folder name cannot be empty.",msgstr:["Име фолдера не може бити празно."]},{msgid:"Guest identification",msgstr:["Идентификација госта"]},{msgid:"Home",msgstr:["Почетак"]},{msgid:"Invalid name.",msgstr:["Неисправно име."]},{msgid:"Modified",msgstr:["Измењено"]},{msgid:"Move",msgstr:["Премести"]},{msgid:"Move to {target}",msgstr:["Премести у {target}"]},{msgid:"Name",msgstr:["Име"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Највећа дужина имена може бити 64 карактера."]},{msgid:"Names must not be empty.",msgstr:["Имена не смеју да буду празна."]},{msgid:'Names must not end with "{extension}".',msgstr:["Имена не смеју да се завршавају на „{extension}”."]},{msgid:"Names must not start with a dot.",msgstr:["Имена не смеју да почињу тачком."]},{msgid:"New",msgstr:["Ново"]},{msgid:"New folder",msgstr:["Нови фолдер"]},{msgid:"New folder name",msgstr:["Име новог фолдера"]},{msgid:"No files in here",msgstr:["Овде нема фајлова"]},{msgid:"No files matching your filter were found.",msgstr:["Није пронађен ниједан фајл који задовољава ваш филтер."]},{msgid:"No matching files",msgstr:["Нема таквих фајлова"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Молимо вас да унесете име од барем два карактера."]},{msgid:"Recent",msgstr:["Скорашње"]},{msgid:"Select all entries",msgstr:["Изаберите све ставке"]},{msgid:"Select entry",msgstr:["Изаберите ставку"]},{msgid:"Select the row for {nodename}",msgstr:["Изаберите ред за {nodename}"]},{msgid:"Size",msgstr:["Величина"]},{msgid:"Submit name",msgstr:["Предај име"]},{msgid:"Undo",msgstr:["Поништи"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Отпремите нешто или синхронизујте са својим уређајима!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Тренутно се идентификујете као {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Тренутно немате идентификацију."]},{msgid:"You cannot leave the name empty.",msgstr:["Име не можете да оставите празно."]}]},{language:"sr@latin",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["„{name}” je neispravan naziv foldera."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["„{name}” je nedozvoljen naziv foldera."]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["„/” se ne može koristiti unutar naziva foldera."]},{msgid:"All files",msgstr:["Svi fajlovi"]},{msgid:"Choose",msgstr:["Izaberite"]},{msgid:"Choose {file}",msgstr:["Izaberite {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Izaberite %n fajl","Izaberite %n fajla","Izaberite %n fajlova"]},{msgid:"Copy",msgstr:["Kopiraj"]},{msgid:"Copy to {target}",msgstr:["Kopiraj u {target}"]},{msgid:"Could not create the new folder",msgstr:["Neuspešno kreiranje novog foldera"]},{msgid:"Could not load files settings",msgstr:["Neuspešno učitavanje podešavanja fajlova"]},{msgid:"Could not load files views",msgstr:["Neuspešno učitavanje prikaza fajlova"]},{msgid:"Create directory",msgstr:["Kreiraj direktorijum"]},{msgid:"Current view selector",msgstr:["Birač trenutnog prikaza"]},{msgid:"Favorites",msgstr:["Omiljeno"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Lista omiljenih fajlova i foldera."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Lista fajlova i foldera sa skorašnjim izmenama."]},{msgid:"Filter file list",msgstr:["Fitriranje liste fajlova"]},{msgid:"Folder name cannot be empty.",msgstr:["Naziv foldera ne može biti prazan."]},{msgid:"Home",msgstr:["Početak"]},{msgid:"Modified",msgstr:["Izmenjeno"]},{msgid:"Move",msgstr:["Premesti"]},{msgid:"Move to {target}",msgstr:["Premesti u {target}"]},{msgid:"Name",msgstr:["Naziv"]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Novi folder"]},{msgid:"New folder name",msgstr:["Naziv novog foldera"]},{msgid:"No files in here",msgstr:["Bez fajlova"]},{msgid:"No files matching your filter were found.",msgstr:["Nema fajlova koji zadovoljavaju uslove filtera."]},{msgid:"No matching files",msgstr:["Nema takvih fajlova"]},{msgid:"Recent",msgstr:["Skorašnje"]},{msgid:"Select all entries",msgstr:["Izaberite sve stavke"]},{msgid:"Select entry",msgstr:["Izaberite stavku"]},{msgid:"Select the row for {nodename}",msgstr:["Izaberite red za {nodename}"]},{msgid:"Size",msgstr:["Veličina"]},{msgid:"Undo",msgstr:["Vrati"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Otpremite sadržaj ili sinhronizujte sa svojim uređajima!"]}]},{language:"sv",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" är inte tillåtet i ett mappnamn.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" är inte tillåtet i ett namn.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" är inte ett tillåtet namn.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" är ett reserverat namn och inte tillåtet mappnamn.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" är ett reserverat namn och inte tillåtet.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n fil är i konflikt","%n filer är i konflikt"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n fil är i konflikt i {dirname}","%n filer är i konflikt i {dirname}"]},{msgid:"All files",msgstr:["Alla filer"]},{msgid:"Cancel",msgstr:["Avbryt"]},{msgid:"Cancel the entire operation",msgstr:["Avbryt hela operationen"]},{msgid:"Choose",msgstr:["Välj"]},{msgid:"Choose {file}",msgstr:["Välj {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Välj %n fil","Välj %n filer"]},{msgid:"Confirm",msgstr:["Bekräfta"]},{msgid:"Continue",msgstr:["Fortsätt"]},{msgid:"Copy",msgstr:["Kopiera"]},{msgid:"Copy to {target}",msgstr:["Kopiera till {target}"]},{msgid:"Could not create the new folder",msgstr:["Kunde inte skapa den nya mappen"]},{msgid:"Could not load files settings",msgstr:["Kunde inte ladda filinställningar"]},{msgid:"Could not load files views",msgstr:["Kunde inte ladda filvyer"]},{msgid:"Create directory",msgstr:["Skapa katalog"]},{msgid:"Current view selector",msgstr:["Aktuell vyväljare"]},{msgid:"Enter your name",msgstr:["Ange ditt namn"]},{msgid:"Existing version",msgstr:["Nuvarande version"]},{msgid:"Failed to set nickname.",msgstr:["Kunde inte ställa in smeknamn."]},{msgid:"Favorites",msgstr:["Favoriter"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Filer och mappar som du markerar som favorit kommer att visas här."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Filer och mappar som du nyligen ändrat kommer att visas här."]},{msgid:"Filter file list",msgstr:["Filtrera fillistan"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Mappnamn får inte sluta med "{extension}".']},{msgid:"Guest identification",msgstr:["Gästidentifiering"]},{msgid:"Home",msgstr:["Hem"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Om du väljer båda versionerna kommer den inkommande filen att få ett nummer tillagt i sitt namn."]},{msgid:"Invalid folder name.",msgstr:["Ogiltigt mappnamn."]},{msgid:"Invalid name.",msgstr:["Ogiltigt namn."]},{msgid:"Last modified date unknown",msgstr:["Senaste ändringsdatum okänt"]},{msgid:"Modified",msgstr:["Ändrad"]},{msgid:"Move",msgstr:["Flytta"]},{msgid:"Move to {target}",msgstr:["Flytta till {target}"]},{msgid:"Name",msgstr:["Namn"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namnen kan vara högst 64 tecken långa."]},{msgid:"Names must not be empty.",msgstr:["Namn får inte vara tomt."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namn får inte sluta med "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Namn får inte börja med en punkt."]},{msgid:"New",msgstr:["Ny"]},{msgid:"New folder",msgstr:["Ny mapp"]},{msgid:"New folder name",msgstr:["Nytt mappnamn"]},{msgid:"New version",msgstr:["Ny version"]},{msgid:"No files in here",msgstr:["Inga filer här"]},{msgid:"No files matching your filter were found.",msgstr:["Inga filer som matchar ditt filter hittades."]},{msgid:"No matching files",msgstr:["Inga matchande filer"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Ange ett namn med minst 2 tecken."]},{msgid:"Recent",msgstr:["Nyligen"]},{msgid:"Select all checkboxes",msgstr:["Markera alla kryssrutor"]},{msgid:"Select all entries",msgstr:["Välj alla poster"]},{msgid:"Select all existing files",msgstr:["Välj alla befintliga filer"]},{msgid:"Select all new files",msgstr:["Välj alla nya filer"]},{msgid:"Select entry",msgstr:["Välj post"]},{msgid:"Select the row for {nodename}",msgstr:["Välj raden för {nodename}"]},{msgid:"Size",msgstr:["Storlek"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Hoppa över %n fil","Hoppa över %n filer"]},{msgid:"Skip this file",msgstr:["Hoppa över den här filen"]},{msgid:"Submit name",msgstr:["Skicka namn"]},{msgid:"Undo",msgstr:["Ångra"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Ladda upp lite innehåll eller synkronisera med dina enheter!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["När en inkommande mapp väljs kommer eventuella konflikterande filer i den också att skrivas över."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["När en inkommande mapp väljs kommer även filer i den att skrivas över."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs."]},{msgid:"Which files do you want to keep?",msgstr:["Vilka filer vill du behålla?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du är för närvarande identifierad som {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Du är för närvarande inte identifierad."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kan inte lämna namnet tomt."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Du måste välja minst en konfliktlösning"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du måste välja minst en version av varje fil för att fortsätta."]}]},{language:"tr",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" karakteri bir klasör adında kullanılamaz.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['Bir ad içinde "{char}" karakteri kullanılamaz.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" adına izin verilmiyor.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" adı sistem için ayrılmış olduğundan klasör adlarında kullanılamaz.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" adı sistem için ayrılmış olduğundan kullanılamaz.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n dosya çakışıyor","%n dosya çakışıyor"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname} içindeki %n dosya çakışıyor","{dirname} içindeki %n dosya çakışıyor"]},{msgid:"All files",msgstr:["Tüm dosyalar"]},{msgid:"Cancel",msgstr:["İptal"]},{msgid:"Cancel the entire operation",msgstr:["Tüm işlemi iptal et"]},{msgid:"Choose",msgstr:["Seçin"]},{msgid:"Choose {file}",msgstr:["{file} seçin"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n dosya seçin","%n dosya seçin"]},{msgid:"Confirm",msgstr:["Onayla"]},{msgid:"Continue",msgstr:["İlerle"]},{msgid:"Copy",msgstr:["Kopyala"]},{msgid:"Copy to {target}",msgstr:["{target} üzerine kopyala"]},{msgid:"Could not create the new folder",msgstr:["Yeni klasör oluşturulamadı"]},{msgid:"Could not load files settings",msgstr:["Dosyalar uygulamasının ayarları yüklenemedi"]},{msgid:"Could not load files views",msgstr:["Dosyalar uygulamasının görünümleri yüklenemedi"]},{msgid:"Create directory",msgstr:["Klasör oluştur"]},{msgid:"Current view selector",msgstr:["Geçerli görünüm seçici"]},{msgid:"Enter your name",msgstr:["Adınızı yazın"]},{msgid:"Existing version",msgstr:["Var olan sürüm"]},{msgid:"Failed to set nickname.",msgstr:["Takma ad ayarlanamadı."]},{msgid:"Favorites",msgstr:["Sık kullanılanlar"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Sık kullanılan olarak seçtiğiniz dosyalar burada görüntülenir."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Son zamanlarda değiştirdiğiniz dosya ve klasörler burada görüntülenir."]},{msgid:"Filter file list",msgstr:["Dosya listesini süz"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Klasör adları "{extension}" ile bitemez.']},{msgid:"Guest identification",msgstr:["Konuk kimliği"]},{msgid:"Home",msgstr:["Giriş"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir."]},{msgid:"Invalid folder name.",msgstr:["Klasör adı geçersiz."]},{msgid:"Invalid name.",msgstr:["Ad geçersiz."]},{msgid:"Last modified date unknown",msgstr:["Son değiştirilme tarihi bilinmiyor."]},{msgid:"Modified",msgstr:["Değiştirilme"]},{msgid:"Move",msgstr:["Taşı"]},{msgid:"Move to {target}",msgstr:["{target} üzerine taşı"]},{msgid:"Name",msgstr:["Ad"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Adlar en fazla 64 karakter uzunluğunda olabilir."]},{msgid:"Names must not be empty.",msgstr:["Ad boş olamaz."]},{msgid:'Names must not end with "{extension}".',msgstr:['Ad "{extension}" ile bitemez.']},{msgid:"Names must not start with a dot.",msgstr:["Ad nokta karakteri ile başlayamaz."]},{msgid:"New",msgstr:["Yeni"]},{msgid:"New folder",msgstr:["Yeni klasör"]},{msgid:"New folder name",msgstr:["Yeni klasör adı"]},{msgid:"New version",msgstr:["Yeni sürüm"]},{msgid:"No files in here",msgstr:["Burada herhangi bir dosya yok"]},{msgid:"No files matching your filter were found.",msgstr:["Süzgece uyan bir dosya bulunamadı."]},{msgid:"No matching files",msgstr:["Eşleşen bir dosya yok"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Ad en az 2 karakter uzunluğunda olmalıdır."]},{msgid:"Recent",msgstr:["Son kullanılanlar"]},{msgid:"Select all checkboxes",msgstr:["Tüm kutuları işaretle"]},{msgid:"Select all entries",msgstr:["Tüm kayıtları seç"]},{msgid:"Select all existing files",msgstr:["Tüm var olan dosyaları seç"]},{msgid:"Select all new files",msgstr:["Tüm yeni dosyaları seç"]},{msgid:"Select entry",msgstr:["Kaydı seç"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename} satırını seçin"]},{msgid:"Size",msgstr:["Boyut"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n dosyayı atla","%n dosyayı atla"]},{msgid:"Skip this file",msgstr:["Bu dosyayı atla"]},{msgid:"Submit name",msgstr:["Adı gönder"]},{msgid:"Undo",msgstr:["Geri al"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Bazı içerikler yükleyin ya da aygıtlarınızla eşitleyin!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Bir gelen klasör seçildiğinde, içindeki dosyaların da üzerine yazılır."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bir gelen klasör seçildiğinde, içerik var olan klasöre yazılır ve alt klasörlerle bir çakışma çözümü uygulanır."]},{msgid:"Which files do you want to keep?",msgstr:["Hangi dosyaları tutmak istiyorsunuz?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["{nickname} olarak tanınıyorsunuz."]},{msgid:"You are currently not identified.",msgstr:["Henüz kendinizi tanıtmadınız."]},{msgid:"You cannot leave the name empty.",msgstr:["Ad boş bırakılamaz."]},{msgid:"You need to choose at least one conflict solution",msgstr:["En az bir çakışma çözümü seçmelisiniz"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["İlerlemek için her dosaynın en az bir sürümünü seçmelisiniz."]}]},{language:"uk",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["{char} не дозволено всередині назви каталогу."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" не дозволено всередині імени.']},{msgid:'"{extension}" is not an allowed name.',msgstr:[`"{extension}" недозволене ім'я.`]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["{segment} є зарезервованим ім'ям і не дозволено для назви каталогу."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:[`"{segment}" зарезервоване ім'я і не дозволено для використання.`]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n конфлікт файлів","%n конфлікти файлів","%n конфліктів файлів","%n конфліктів файлів"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n конфлікт файлів у каталозі {dirname}","%n конфлікти файлів у каталозі {dirname}","%n конфліктів файлів у каталозі {dirname}","%n конфліктів файлів у каталозі {dirname}"]},{msgid:"All files",msgstr:["Всі файли"]},{msgid:"Cancel",msgstr:["Скасувати"]},{msgid:"Cancel the entire operation",msgstr:["Скасувати всю операцію"]},{msgid:"Choose",msgstr:["Вибрати"]},{msgid:"Choose {file}",msgstr:["Вибрати {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Вибрати %n файл","Вибрати %n файли","Вибрати %n файлів","Вибрати %n файлів"]},{msgid:"Confirm",msgstr:["Підтвердити"]},{msgid:"Continue",msgstr:["Продовжити"]},{msgid:"Copy",msgstr:["Копіювати"]},{msgid:"Copy to {target}",msgstr:["Копіювати до {target}"]},{msgid:"Could not create the new folder",msgstr:["Не вдалося створити новий каталог"]},{msgid:"Could not load files settings",msgstr:["Не вдалося завантажити налаштування файлів"]},{msgid:"Could not load files views",msgstr:["Не вдалося завантажити подання файлів"]},{msgid:"Create directory",msgstr:["Створити каталог"]},{msgid:"Current view selector",msgstr:["Вибір подання"]},{msgid:"Enter your name",msgstr:["Зазначте ваше ім'я"]},{msgid:"Existing version",msgstr:["Наявна версія"]},{msgid:"Failed to set nickname.",msgstr:["Не вдалося встановити псевдо."]},{msgid:"Favorites",msgstr:["Із зірочкою"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Тут показуватимуться файли та каталоги, які ви позначите зірочкою."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Тут показуватимуться файли та каталоги, які було нещодавно змінено."]},{msgid:"Filter file list",msgstr:["Фільтрувати список файлів"]},{msgid:'Folder names must not end with "{extension}".',msgstr:[`Ім'я каталогу не може закінчуватися на "{extension}".`]},{msgid:"Guest identification",msgstr:["Ім'я для гостя"]},{msgid:"Home",msgstr:["Домівка"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Якщо вибрати обидві версії, до назви вхідного файлу буде додано цифру. "]},{msgid:"Invalid folder name.",msgstr:["Недійсне ім'я каталогу."]},{msgid:"Invalid name.",msgstr:["Недійсне ім'я."]},{msgid:"Last modified date unknown",msgstr:["Дата останньої зміни невідома"]},{msgid:"Modified",msgstr:["Змінено"]},{msgid:"Move",msgstr:["Перемістити"]},{msgid:"Move to {target}",msgstr:["Перемістити до {target}"]},{msgid:"Name",msgstr:["Ім'я"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Імена мають мати довжину не більше 64 символів."]},{msgid:"Names must not be empty.",msgstr:["Ім'я не може бути порожнє."]},{msgid:'Names must not end with "{extension}".',msgstr:[`Ім'я не може закінчуватися на "{extension}".`]},{msgid:"Names must not start with a dot.",msgstr:["Ім'я не може починатися з крапки."]},{msgid:"New",msgstr:["Новий"]},{msgid:"New folder",msgstr:["Новий каталог"]},{msgid:"New folder name",msgstr:["Ім'я нового каталогу"]},{msgid:"New version",msgstr:["Нова версія"]},{msgid:"No files in here",msgstr:["Тут відсутні файли"]},{msgid:"No files matching your filter were found.",msgstr:["Відсутні збіги за фільтром."]},{msgid:"No matching files",msgstr:["Відсутні збіги файлів."]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Зазначте ім'я довжиною не менше 2 символів"]},{msgid:"Recent",msgstr:["Останні"]},{msgid:"Select all checkboxes",msgstr:["Вибрати всі прапорці"]},{msgid:"Select all entries",msgstr:["Вибрати всі записи"]},{msgid:"Select all existing files",msgstr:["Вибрати всі наявні файли"]},{msgid:"Select all new files",msgstr:["Вибрати всі нові файли"]},{msgid:"Select entry",msgstr:["Вибрати запис"]},{msgid:"Select the row for {nodename}",msgstr:["Вибрати рядок для {nodename}"]},{msgid:"Size",msgstr:["Розмір"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Пропустити %n файл","Пропустити %n файли","Пропустити %n файлів","Пропустити %n файлів"]},{msgid:"Skip this file",msgstr:["Пропустити цей файл"]},{msgid:"Submit name",msgstr:["Встановити ім'я"]},{msgid:"Undo",msgstr:["Повернути"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Завантажте вміст або синхронізуйте з вашим пристроєм!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Коли вибрано вхідний каталог, будь-які файли з конфліктами буде також перезаписано."]},{msgid:"When an incoming folder is selected, any files within it will also be overwritten.",msgstr:["Якщо буде вибрано вхідний каталог, будь-який файл в ньому буде також перезаписано."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Коли вибрано вхідний каталог, вміст буде записано до існуючого каталогу, а також виконано вирішення конфліктів всередині каталогу."]},{msgid:"Which files do you want to keep?",msgstr:["Які файли залишити?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Вас визначено як {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Вас не ідентифіковано."]},{msgid:"You cannot leave the name empty.",msgstr:["Потрібно зазначити ім'я."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Треб вибрати щонайменше одне розв'язання конфлікту"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Треба вибрати щонайменше одну версію кожного файлу, щоби продовжити."]}]},{language:"uz",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['Papka nomi ichida "{char}" ga ruxsat berilmaydi.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['Nom ichida "{char}" ga ruxsat berilmagan.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ruxsat etilgan nom emas.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:[`"{segment}" ajratilgan nom bo'lib, papka nomlari uchun ruxsat berilmagan.`]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" - zaxiralangan nom va ruxsat berilmaydi.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n fayl ziddiyatli"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname} da %n fayl ziddiyati"]},{msgid:"All files",msgstr:["Barcha fayllar"]},{msgid:"Cancel",msgstr:["Bekor qilish"]},{msgid:"Cancel the entire operation",msgstr:["Butun operatsiyani bekor qiling"]},{msgid:"Choose",msgstr:["Tanlang"]},{msgid:"Choose {file}",msgstr:["Tanlang {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Tanlang %n faylni"]},{msgid:"Confirm",msgstr:["Tasdiqlang"]},{msgid:"Continue",msgstr:["Davom eting"]},{msgid:"Copy",msgstr:["Nusxa"]},{msgid:"Copy to {target}",msgstr:[" {target} ga nusxa"]},{msgid:"Could not create the new folder",msgstr:["Yangi jild yaratib bo‘lmadi"]},{msgid:"Could not load files settings",msgstr:["Fayl sozlamalari yuklanmadi"]},{msgid:"Could not load files views",msgstr:["Fayllarni koʻrishni yuklab boʻlmadi"]},{msgid:"Create directory",msgstr:["Katalog yaratish"]},{msgid:"Current view selector",msgstr:["Joriy ko'rinish selektori"]},{msgid:"Enter your name",msgstr:["Ismingizni kiriting"]},{msgid:"Existing version",msgstr:["Mavjud versiya"]},{msgid:"Failed to set nickname.",msgstr:["Taxallusni o‘rnatib bo‘lmadi."]},{msgid:"Favorites",msgstr:["Tanlanganlar"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Tanlangan deb belgilagan fayl va papkalar shu yerda koʻrinadi."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Siz yaqinda oʻzgartirgan fayl va papkalar shu yerda koʻrinadi."]},{msgid:"Filter file list",msgstr:["Fayl ro'yxatini filtrlash"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Papka nomlari "{extension}" bilan tugamasligi kerak.']},{msgid:"Guest identification",msgstr:["Foydalanuvchini identifikatsiyalash"]},{msgid:"Home",msgstr:["Uy"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi."]},{msgid:"Invalid folder name.",msgstr:["Jild nomi noto'g'ri."]},{msgid:"Invalid name.",msgstr:["Nomi noto‘g‘ri."]},{msgid:"Last modified date unknown",msgstr:["Oxirgi tahrirlangan sana noma'lum"]},{msgid:"Modified",msgstr:["Modifikatsiyalangan"]},{msgid:"Move",msgstr:["Ko'chirish"]},{msgid:"Move to {target}",msgstr:[" {target} ga ko'chirish"]},{msgid:"Name",msgstr:["Nomi"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Ismlar ko'pi bilan 64 ta belgidan iborat bo'lishi mumkin."]},{msgid:"Names must not be empty.",msgstr:["Ismlar bo'sh bo'lmasligi kerak."]},{msgid:'Names must not end with "{extension}".',msgstr:['Ismlar "{extension}" bilan tugamasligi kerak.']},{msgid:"Names must not start with a dot.",msgstr:["Ismlar nuqta bilan boshlanmasligi kerak."]},{msgid:"New",msgstr:["Yangi"]},{msgid:"New folder",msgstr:["Yangi jild"]},{msgid:"New folder name",msgstr:["Yangi jild nomi"]},{msgid:"New version",msgstr:["Yangi versiya"]},{msgid:"No files in here",msgstr:["Fayl mavjud emas"]},{msgid:"No files matching your filter were found.",msgstr:["Filtringizga mos keladigan fayl topilmadi."]},{msgid:"No matching files",msgstr:["Mos fayllar yo'q"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Kamida 2 ta belgidan iborat nom kiriting."]},{msgid:"Recent",msgstr:["Yaqinda"]},{msgid:"Select all checkboxes",msgstr:["Barcha katakchalarni belgilang"]},{msgid:"Select all entries",msgstr:["Barcha yozuvlarni tanlang"]},{msgid:"Select all existing files",msgstr:["Barcha mavjud fayllarni tanlang"]},{msgid:"Select all new files",msgstr:["Barcha yangi fayllarni tanlang"]},{msgid:"Select entry",msgstr:["Yozuvni tanlang"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename} uchun qatorni tanlang"]},{msgid:"Size",msgstr:["O`lcham"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n faylni oʻtkazib yuborish"]},{msgid:"Skip this file",msgstr:["Ushbu faylni o'tkazib yuboring"]},{msgid:"Submit name",msgstr:["Ismni tasdiqlang"]},{msgid:"Undo",msgstr:["Bekor qilish"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Qurilmangizga ba'zi kontentni yuklang yoki sinxronlang!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Kiruvchi papka tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Kiruvchi papka tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi."]},{msgid:"Which files do you want to keep?",msgstr:["Qaysi fayllarni saqlamoqchisiz?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Siz hozirda {nickname} sifatida aniqlangansiz."]},{msgid:"You are currently not identified.",msgstr:["Siz hozirda identifikatsiyadan o'tmagansiz"]},{msgid:"You cannot leave the name empty.",msgstr:["Ism katagini bo'sh qoldirib bo'lmaydi."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Siz kamida bitta mojaro yechimini tanlashingiz kerak"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak."]}]},{language:"vi",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" là tên thư mục không hợp lệ.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"1{name}"không phải là tên thư mục được cho phép']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/"không được phép đặt trong tên thư mục.']},{msgid:"All files",msgstr:["Tất cả tệp"]},{msgid:"Choose",msgstr:["Chọn"]},{msgid:"Choose {file}",msgstr:["Chọn {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Chọn %n tệp"]},{msgid:"Copy",msgstr:["Sao chép"]},{msgid:"Copy to {target}",msgstr:["Sao chép đến {target}"]},{msgid:"Could not create the new folder",msgstr:["Không thể tạo thư mục mới"]},{msgid:"Could not load files settings",msgstr:["Không thể tải tập tin cài đặt"]},{msgid:"Could not load files views",msgstr:["Không thể tải xuống tệp xem"]},{msgid:"Create directory",msgstr:["Tạo thư mục"]},{msgid:"Current view selector",msgstr:["Hiện tại chế độ xem của bộ chọn"]},{msgid:"Favorites",msgstr:["Yêu cầu thích"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Các tập tin và thư mục bạn đánh dấu yêu thích sẽ hiển thị ở đây."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Các tập tin và thư mục bạn sửa đổi gần đây sẽ hiển thị ở đây."]},{msgid:"Filter file list",msgstr:["Filter list file"]},{msgid:"Folder name cannot be empty.",msgstr:["Thư mục tên không được để trống."]},{msgid:"Home",msgstr:["Trang chủ"]},{msgid:"Modified",msgstr:["Đã sửa đổi"]},{msgid:"Move",msgstr:["Di chuyển"]},{msgid:"Move to {target}",msgstr:["Di chuyển đến{target}"]},{msgid:"Name",msgstr:["Tên"]},{msgid:"New",msgstr:["Mới"]},{msgid:"New folder",msgstr:["New thư mục"]},{msgid:"New folder name",msgstr:["New thư mục tên"]},{msgid:"No files in here",msgstr:["No file at here"]},{msgid:"No files matching your filter were found.",msgstr:["Không tìm thấy tệp nào phù hợp với bộ lọc của bạn."]},{msgid:"No matching files",msgstr:["No file phù hợp"]},{msgid:"Recent",msgstr:["Gần đây"]},{msgid:"Select all entries",msgstr:["Choose all items"]},{msgid:"Select entry",msgstr:["Chọn mục nhập"]},{msgid:"Select the row for {nodename}",msgstr:["Choose hang cho{nodename}"]},{msgid:"Size",msgstr:["Kích cỡ"]},{msgid:"Undo",msgstr:["Hoàn tác"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Tải lên một số nội dung hoặc đồng bộ hóa với thiết bị của bạn!"]}]},{language:"zh_CN",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["“{name}” 是无效的文件夹名称。"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["“{name}” 不是允许的文件夹名称"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["文件夹名称中不允许包含 “/”。"]},{msgid:"All files",msgstr:["所有文件"]},{msgid:"Choose",msgstr:["选择"]},{msgid:"Choose {file}",msgstr:["选择 {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["选择 %n 个文件"]},{msgid:"Copy",msgstr:["复制"]},{msgid:"Copy to {target}",msgstr:["复制到 {target}"]},{msgid:"Could not create the new folder",msgstr:["无法创建新文件夹"]},{msgid:"Could not load files settings",msgstr:["无法加载文件设置"]},{msgid:"Could not load files views",msgstr:["无法加载文件视图"]},{msgid:"Create directory",msgstr:["创建目录"]},{msgid:"Current view selector",msgstr:["当前视图选择器"]},{msgid:"Favorites",msgstr:["最爱"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["您标记为最爱的文件与文件夹会显示在这里"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["您最近修改的文件与文件夹会显示在这里"]},{msgid:"Filter file list",msgstr:["过滤文件列表"]},{msgid:"Folder name cannot be empty.",msgstr:["文件夹名称不能为空。"]},{msgid:"Home",msgstr:["主目录"]},{msgid:"Modified",msgstr:["已修改"]},{msgid:"Move",msgstr:["移动"]},{msgid:"Move to {target}",msgstr:["移动至 {target}"]},{msgid:"Name",msgstr:["名称"]},{msgid:"New",msgstr:["新建"]},{msgid:"New folder",msgstr:["新文件夹"]},{msgid:"New folder name",msgstr:["新文件夹名称"]},{msgid:"No files in here",msgstr:["此处无文件"]},{msgid:"No files matching your filter were found.",msgstr:["找不到符合您过滤条件的文件"]},{msgid:"No matching files",msgstr:["无符合的文件"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all entries",msgstr:["选择所有条目"]},{msgid:"Select entry",msgstr:["选择条目"]},{msgid:"Select the row for {nodename}",msgstr:["选择 {nodename} 的列"]},{msgid:"Size",msgstr:["大小"]},{msgid:"Undo",msgstr:[" 撤消"]},{msgid:"Upload some content or sync with your devices!",msgstr:["上传一些项目或与您的设备同步!"]}]},{language:"zh_HK",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["資料夾名稱中不允許使用「{char}」。"]},{msgid:'"{char}" is not allowed inside a name.',msgstr:['名稱中不能使用 "{char}"。']},{msgid:'"{extension}" is not an allowed name.',msgstr:["「{extension}」並非允許的名稱。"]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["「{segment}」為保留名稱,不能用作資料夾名稱。"]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["「{segment}」是一個保留名稱,不能使用。"]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n 檔案衝突"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname} 中有 %n 個檔案衝突"]},{msgid:"All files",msgstr:["所有檔案"]},{msgid:"Cancel",msgstr:["取消"]},{msgid:"Cancel the entire operation",msgstr:["取消整個操作"]},{msgid:"Choose",msgstr:["選擇"]},{msgid:"Choose {file}",msgstr:["選擇 {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["選擇 %n 個檔案"]},{msgid:"Confirm",msgstr:["確認"]},{msgid:"Continue",msgstr:["繼續"]},{msgid:"Copy",msgstr:["複製"]},{msgid:"Copy to {target}",msgstr:["複製到 {target}"]},{msgid:"Could not create the new folder",msgstr:["無法建立新資料夾"]},{msgid:"Could not load files settings",msgstr:["無法載入檔案設定"]},{msgid:"Could not load files views",msgstr:["無法載入檔案視圖"]},{msgid:"Create directory",msgstr:["建立目錄"]},{msgid:"Current view selector",msgstr:["目前視圖選擇器"]},{msgid:"Enter your name",msgstr:["輸入您的名字"]},{msgid:"Existing version",msgstr:["現有的版本"]},{msgid:"Failed to set nickname.",msgstr:["無法設置暱稱。"]},{msgid:"Favorites",msgstr:["最愛"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["您標記為最愛的檔案與資料夾將會顯示在此處。"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["您最近修改的檔案與資料夾將會顯示在此處。"]},{msgid:"Filter file list",msgstr:["過濾檔案清單"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["資料夾名稱不得以「{extension}」結尾。"]},{msgid:"Guest identification",msgstr:["訪客身份識別"]},{msgid:"Home",msgstr:["首頁"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["如果您選擇兩個版本,傳入的檔案名稱將會附加一個數字。"]},{msgid:"Invalid folder name.",msgstr:["無效的資料夾名稱。"]},{msgid:"Invalid name.",msgstr:["無效的名字。"]},{msgid:"Last modified date unknown",msgstr:["最後的修改日期不詳"]},{msgid:"Modified",msgstr:["已修改"]},{msgid:"Move",msgstr:["移動"]},{msgid:"Move to {target}",msgstr:["移動至 {target}"]},{msgid:"Name",msgstr:["名稱"]},{msgid:"Names may be at most 64 characters long.",msgstr:["名稱長度最多為 64 個字元。"]},{msgid:"Names must not be empty.",msgstr:["名稱不能為空。"]},{msgid:'Names must not end with "{extension}".',msgstr:["名稱不得以「{extension}」結尾。"]},{msgid:"Names must not start with a dot.",msgstr:["名稱不得以點開頭。"]},{msgid:"New",msgstr:["新"]},{msgid:"New folder",msgstr:["新資料夾"]},{msgid:"New folder name",msgstr:["新資料夾名稱"]},{msgid:"New version",msgstr:["新版本"]},{msgid:"No files in here",msgstr:["此處無檔案"]},{msgid:"No files matching your filter were found.",msgstr:["找不到符合您過濾條件的檔案。"]},{msgid:"No matching files",msgstr:["沒有匹配的檔案"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["請輸入至少 2 個字符的名稱。"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all checkboxes",msgstr:["選擇所有復選框"]},{msgid:"Select all entries",msgstr:["選擇所有項目"]},{msgid:"Select all existing files",msgstr:["選擇所有現有的檔案"]},{msgid:"Select all new files",msgstr:["選擇所有新檔案"]},{msgid:"Select entry",msgstr:["選擇項目"]},{msgid:"Select the row for {nodename}",msgstr:["選擇 {nodename} 的列"]},{msgid:"Size",msgstr:["大小"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["跳過 %n 個檔案"]},{msgid:"Skip this file",msgstr:["跳過此檔案"]},{msgid:"Submit name",msgstr:["遞交名字"]},{msgid:"Undo",msgstr:["還原"]},{msgid:"Upload some content or sync with your devices!",msgstr:["上傳一些內容或與您的裝置同步!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["選取傳入資料夾時,其中任何衝突的檔案也將被覆蓋。"]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["當選取傳入資料夾時,內容將寫入現有資料夾,並執行遞歸衝突解決。"]},{msgid:"Which files do you want to keep?",msgstr:["你想保留哪些檔案?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["您目前被識別為 {nickname}。"]},{msgid:"You are currently not identified.",msgstr:["您目前尚未被識別。"]},{msgid:"You cannot leave the name empty.",msgstr:["名稱不能留空。"]},{msgid:"You need to choose at least one conflict solution",msgstr:["你需要選擇至少一種衝突解決方案。"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["您必須選擇每個文件的至少一個版本才能繼續。"]}]},{language:"zh_TW",translations:[{msgid:'"{name}" is an invalid file name.',msgstr:["「{name}」是無效的檔案名稱。"]},{msgid:'"{name}" is not an allowed filetype',msgstr:["「{name}」並非允許的檔案類型"]},{msgid:'"/" is not allowed inside a file name.',msgstr:["檔案名稱中不允許使用「/」。"]},{msgid:"All files",msgstr:["所有檔案"]},{msgid:"Choose",msgstr:["選擇"]},{msgid:"Choose {file}",msgstr:["選擇 {file}"]},{msgid:"Copy",msgstr:["複製"]},{msgid:"Copy to {target}",msgstr:["複製到 {target}"]},{msgid:"Could not create the new folder",msgstr:["無法建立新資料夾"]},{msgid:"Create directory",msgstr:["建立目錄"]},{msgid:"Current view selector",msgstr:["目前檢視選取器"]},{msgid:"Favorites",msgstr:["最愛"]},{msgid:"File name cannot be empty.",msgstr:["檔案名稱不能為空。"]},{msgid:"Filepicker sections",msgstr:["檔案挑選器選取"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["您標記為最愛的檔案與資料夾將會顯示在此處。"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["您最近修改的檔案與資料夾將會顯示在此處。"]},{msgid:"Filter file list",msgstr:["過濾檔案清單"]},{msgid:"Home",msgstr:["家"]},{msgid:"Mime type {mime}",msgstr:["Mime type {mime}"]},{msgid:"Modified",msgstr:["已修改"]},{msgid:"Move",msgstr:["移動"]},{msgid:"Move to {target}",msgstr:["移動至 {target}"]},{msgid:"Name",msgstr:["名稱"]},{msgid:"New",msgstr:["新"]},{msgid:"New folder",msgstr:["新資料夾"]},{msgid:"New folder name",msgstr:["新資料夾名稱"]},{msgid:"No files in here",msgstr:["此處無檔案"]},{msgid:"No files matching your filter were found.",msgstr:["找不到符合您過濾條件的檔案。"]},{msgid:"No matching files",msgstr:["無符合的檔案"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all entries",msgstr:["選取所有條目"]},{msgid:"Select entry",msgstr:["選取條目"]},{msgid:"Select the row for {nodename}",msgstr:["選取 {nodename} 的列"]},{msgid:"Size",msgstr:["大小"]},{msgid:"Undo",msgstr:["復原"]},{msgid:"unknown",msgstr:["未知"]},{msgid:"Upload some content or sync with your devices!",msgstr:["上傳一些內容或與您的裝置同步"]}]}]){const{language:e,translations:s}=i,t={headers:{},translations:{"":Object.fromEntries(s.map(n=>[n.msgid,n]))}};b.addTranslation(e,t)}const h=b.build(),$=h.ngettext.bind(h),l=h.gettext.bind(h),N=L().setApp("@nextcloud/dialogs").detectLogLevel().build();class X extends Error{}class uu{title;multiSelect;mimeTypeFilter;directoriesAllowed;noMenu;buttons;path;filter;canPick;container;disabledNavigation;constructor(e,s,t,n,r,u,a,g,o,m,d=!1){this.title=e,this.multiSelect=s,this.mimeTypeFilter=t,this.directoriesAllowed=n,this.noMenu=r,this.path=a,this.filter=g,this.canPick=o,this.buttons=u,this.container=m,this.disabledNavigation=d}async pickNodes(){const{default:e}=await W(async()=>{const{default:t}=await import("./FilePicker-0pVFI2AM.chunk.mjs");return{default:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),import.meta.url),s=await y(e,{allowPickDirectory:this.directoriesAllowed,noMenu:this.noMenu,buttons:this.buttons,name:this.title,path:this.path,mimetypeFilter:this.mimeTypeFilter,multiselect:this.multiSelect,filterFn:this.filter,canPickFn:this.canPick,disabledNavigation:this.disabledNavigation},{container:this.container});if(!Array.isArray(s)||s.length===0)throw new X("FilePicker: No nodes selected");return s}async pick(){const e=await this.pickNodes();return this.multiSelect?e.map(s=>s.path):e[0]?.path??"/"}}class eu{title;multiSelect=!1;mimeTypeFilter=[];directoriesAllowed=!1;noMenu=!1;path;filter;canPick;buttons=[];container;disabledNavigation=!1;constructor(e){this.title=e}setContainer(e){return this.container=e,this}setMultiSelect(e){return this.multiSelect=e,this}addMimeTypeFilter(e){return this.mimeTypeFilter.push(e),this}setMimeTypeFilter(e){return this.mimeTypeFilter=e,this}addButton(e){return typeof this.buttons=="function"&&(N.warn("FilePicker buttons were set to factory, now overwritten with button object."),this.buttons=[]),this.buttons.push(e),this}setButtonFactory(e){return this.buttons=e,this}setType(e){return this.buttons=(s,t)=>{const n=[],r=s[0]?.displayname||q(t);if(e===1){let u=l("Choose");s.length===1?u=l("Choose {file}",{file:r}):this.multiSelect&&(u=$("Choose %n file","Choose %n files",s.length)),n.push({callback:()=>{},label:u,variant:"primary"})}return(e===4||e===3)&&n.push({callback:()=>{},label:r?l("Copy to {target}",{target:r}):l("Copy"),icon:Q,variant:e===3?"primary":"secondary"}),(e===4||e===2)&&n.push({callback:()=>{},label:r?l("Move to {target}",{target:r}):l("Move"),icon:J,variant:"primary"}),n},this}allowDirectories(e=!0){return this.directoriesAllowed=e,this}setNoMenu(e=!0){return this.noMenu=e,this}startAt(e){return this.path=e,this}setFilter(e){return this.filter=e,this}setCanPick(e){return this.canPick=e,this}disableNavigation(){return this.disabledNavigation=!0,this}build(){return new uu(this.title,this.multiSelect,this.mimeTypeFilter,this.directoriesAllowed,this.noMenu,this.buttons,this.path,this.filter,this.canPick,this.container,this.disabledNavigation)}}function Bu(i){return new eu(i)}const su=` + + + +`,iu="off",tu="polite",nu="assertive";var F=(i=>(i[i.OFF=iu]="OFF",i[i.POLITE=tu]="POLITE",i[i.ASSERTIVE=nu]="ASSERTIVE",i))(F||{});const ru=1e4,au=7e3,mu=-1;function f(i,e){if(e={timeout:au,isHTML:!1,type:void 0,selector:void 0,onRemove:()=>{},onClick:void 0,close:!0,...e},typeof i=="string"&&!e.isHTML){const u=document.createElement("div");u.innerHTML=i,i=u.innerText}let s=e.type??"";typeof e.onClick=="function"&&(s+=" toast-with-click ");const t=i instanceof Node;let n=F.POLITE;e.ariaLive?n=e.ariaLive:(e.type==="toast-error"||e.type==="toast-undo")&&(n=F.ASSERTIVE);const r=Z({[t?"node":"text"]:i,duration:e.timeout,callback:e.onRemove,onClick:e.onClick,close:e.close,gravity:"top",selector:e.selector,position:"right",backgroundColor:"",className:"dialogs "+s,escapeMarkup:!e.isHTML,ariaLive:n});return r.showToast(),r}function xu(i,e){return f(i,{...e,type:"toast-error"})}function vu(i,e){return f(i,{...e,type:"toast-warning"})}function Fu(i,e){return f(i,{...e,type:"toast-info"})}function pu(i,e){return f(i,{...e,type:"toast-success"})}function Du(i,e){const s=document.createElement("span");s.innerHTML=su,s.classList.add("toast-loader");const t=document.createElement("span");return t.classList.add("toast-loader-container"),t.innerText=i,t.appendChild(s),f(t,{...e,close:!1,timeout:mu,type:"toast-loading"})}function Au(i,e,s){if(!(e instanceof Function))throw new Error("Please provide a valid onUndo method");s=Object.assign(s||{},{timeout:ru});const t=document.createElement("span"),n=document.createElement("button");t.classList.add("toast-undo-container"),n.classList.add("toast-undo-button"),n.innerText=l("Undo"),t.innerText=i,t.appendChild(n);const r=f(t,{...s,type:"toast-undo"});return n.addEventListener("click",function(u){u.stopPropagation(),e(u),r?.hideToast instanceof Function&&r.hideToast()}),r}const ou=["textContent"],du=["innerHTML"],gu=j({__name:"GenericDialog",props:{name:{},text:{},html:{},buttons:{},severity:{}},emits:["close"],setup(i,{emit:e}){const s=i,t=e,n=V(()=>s.buttons?.map(u=>({...u,callback(){u.callback(),t("close",!0)}}))),r=()=>`${s.name}: ${s.text}`;return M(()=>window.addEventListener("unload",r)),I(()=>window.removeEventListener("unload",r)),(u,a)=>(x(),p(A(U),{dialogClasses:"nc-generic-dialog",buttons:n.value,name:i.name,message:i.text,"onUpdate:open":a[0]||(a[0]=g=>u.$emit("close",!1))},{default:D(()=>[i.severity?(x(),p(A(O),{key:0,type:i.severity},{default:D(()=>[Y("p",{textContent:P(i.text)},null,8,ou)]),_:1},8,["type"])):w("",!0),i.html?(x(),_("div",{key:1,innerHTML:i.html},null,8,du)):w("",!0)]),_:1},8,["buttons","name","message"]))}});class z{#e;#s;#i;#u;constructor(e,s,t=[],n){this.#e=e,this.#s=s,this.#i=t,this.#u=n}async show(){if(!await y(gu,{buttons:this.#i,name:this.#e,text:this.#s,severity:this.#u}))throw new Error("Dialog closed")}}class lu{#e;#s;#i;#u;constructor(e){this.#e=void 0,this.#s="",this.#i=e??"",this.#u=[]}setName(e){return this.#i=e,this}setText(e){return this.#s=e,this}setSeverity(e){return this.#e=e,this}setButtons(e){return this.#u.length>0&&N.warn("[@nextcloud/dialogs] Dialog buttons are already set - this overrides previous buttons."),this.#u=e,this}addButton(e){return this.#u.push(e),this}build(){return new z(this.#i,this.#s,this.#u,this.#e)}}function wu(i){return new lu(i)}async function ku(i){i={labelConfirm:l("Confirm"),...i};const{promise:e,resolve:s}=Promise.withResolvers(),t=[{label:i.labelConfirm,variant:"primary",callback(){s(!0)}}];return i.labelReject&&t.unshift({label:i.labelReject,callback(){s(!1)}}),await new z(i.name,i.text,t,i.severity).show(),e}export{ru as T,xu as a,Fu as b,Du as c,pu as d,ku as e,Au as f,wu as g,Bu as h,N as l,vu as s,l as t}; +//# sourceMappingURL=index-mH69OG7L.chunk.mjs.map diff --git a/dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.license b/dist/index-mH69OG7L.chunk.mjs.license similarity index 94% rename from dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.license rename to dist/index-mH69OG7L.chunk.mjs.license index aa3c59679ba8f..533d4d6a5463d 100644 --- a/dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.license +++ b/dist/index-mH69OG7L.chunk.mjs.license @@ -5,7 +5,7 @@ SPDX-FileCopyrightText: Varun A P This file is generated from multiple sources. Included packages: - @nextcloud/dialogs - - version: 7.4.0 + - version: 7.4.1 - license: AGPL-3.0-or-later - toastify-js - version: 1.12.0 diff --git a/dist/index-mH69OG7L.chunk.mjs.map b/dist/index-mH69OG7L.chunk.mjs.map new file mode 100644 index 0000000000000..f697204430a38 --- /dev/null +++ b/dist/index-mH69OG7L.chunk.mjs.map @@ -0,0 +1 @@ +{"version":3,"mappings":"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","names":["root","factory","module","this","global","Toastify","options","version","divElement","property","avatarElement","closeElement","event","width","self","x","getAxisOffsetAValue","y","xOffset","yOffset","rootElement","elementToInsert","toastElement","topLeftOffsetSize","topRightOffsetSize","offsetSize","allToasts","classUsed","i","containsClass","height","offset","axis","elem","yourClass","IconMove","IconCopy","gtBuilder","getGettextBuilder","data","language","translations","bundle","translation","gt","n","t","logger","getLoggerBuilder","FilePickerClosed","FilePicker","title","multiSelect","mimeTypeFilter","directoriesAllowed","noMenu","buttons","path","filter","canPick","container","disabledNavigation","FilePickerVue","__vitePreload","nodes","spawnDialog","node","FilePickerBuilder","ms","button","type","target","basename","label","allow","getFilePickerBuilder","LoaderSvg","TOAST_ARIA_LIVE_OFF","TOAST_ARIA_LIVE_POLITE","TOAST_ARIA_LIVE_ASSERTIVE","ToastAriaLive","ToastAriaLive2","TOAST_UNDO_TIMEOUT","TOAST_DEFAULT_TIMEOUT","TOAST_PERMANENT_TIMEOUT","showMessage","element","classes","isNode","ariaLive","toast","showError","text","showWarning","showInfo","showSuccess","showLoading","loader","loaderContent","showUndo","onUndo","undoContent","undoButton","_hoisted_1","_hoisted_2","_sfc_main","defineComponent","__props","__emit","props","emit","dialogButtons","computed","handleUnload","onMounted","onUnmounted","_ctx","_cache","openBlock","createBlock","unref","NcDialog","$event","withCtx","NcNoteCard","createElementVNode","toDisplayString","createCommentVNode","createElementBlock","Dialog","#name","#text","#buttons","#severity","name","severity","DialogBuilder","getDialogBuilder","showConfirmation","promise","resolve"],"ignoreList":[0,1],"sources":["../node_modules/toastify-js/src/toastify.js","../node_modules/@nextcloud/dialogs/dist/chunks/index.mjs"],"sourcesContent":["/*!\n * Toastify js 1.12.0\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Varun A P\n */\n(function(root, factory) {\n if (typeof module === \"object\" && module.exports) {\n module.exports = factory();\n } else {\n root.Toastify = factory();\n }\n})(this, function(global) {\n // Object initialization\n var Toastify = function(options) {\n // Returning a new init object\n return new Toastify.lib.init(options);\n },\n // Library version\n version = \"1.12.0\";\n\n // Set the default global options\n Toastify.defaults = {\n oldestFirst: true,\n text: \"Toastify is awesome!\",\n node: undefined,\n duration: 3000,\n selector: undefined,\n callback: function () {\n },\n destination: undefined,\n newWindow: false,\n close: false,\n gravity: \"toastify-top\",\n positionLeft: false,\n position: '',\n backgroundColor: '',\n avatar: \"\",\n className: \"\",\n stopOnFocus: true,\n onClick: function () {\n },\n offset: {x: 0, y: 0},\n escapeMarkup: true,\n ariaLive: 'polite',\n style: {background: ''}\n };\n\n // Defining the prototype of the object\n Toastify.lib = Toastify.prototype = {\n toastify: version,\n\n constructor: Toastify,\n\n // Initializing the object with required parameters\n init: function(options) {\n // Verifying and validating the input object\n if (!options) {\n options = {};\n }\n\n // Creating the options object\n this.options = {};\n\n this.toastElement = null;\n\n // Validating the options\n this.options.text = options.text || Toastify.defaults.text; // Display message\n this.options.node = options.node || Toastify.defaults.node; // Display content as node\n this.options.duration = options.duration === 0 ? 0 : options.duration || Toastify.defaults.duration; // Display duration\n this.options.selector = options.selector || Toastify.defaults.selector; // Parent selector\n this.options.callback = options.callback || Toastify.defaults.callback; // Callback after display\n this.options.destination = options.destination || Toastify.defaults.destination; // On-click destination\n this.options.newWindow = options.newWindow || Toastify.defaults.newWindow; // Open destination in new window\n this.options.close = options.close || Toastify.defaults.close; // Show toast close icon\n this.options.gravity = options.gravity === \"bottom\" ? \"toastify-bottom\" : Toastify.defaults.gravity; // toast position - top or bottom\n this.options.positionLeft = options.positionLeft || Toastify.defaults.positionLeft; // toast position - left or right\n this.options.position = options.position || Toastify.defaults.position; // toast position - left or right\n this.options.backgroundColor = options.backgroundColor || Toastify.defaults.backgroundColor; // toast background color\n this.options.avatar = options.avatar || Toastify.defaults.avatar; // img element src - url or a path\n this.options.className = options.className || Toastify.defaults.className; // additional class names for the toast\n this.options.stopOnFocus = options.stopOnFocus === undefined ? Toastify.defaults.stopOnFocus : options.stopOnFocus; // stop timeout on focus\n this.options.onClick = options.onClick || Toastify.defaults.onClick; // Callback after click\n this.options.offset = options.offset || Toastify.defaults.offset; // toast offset\n this.options.escapeMarkup = options.escapeMarkup !== undefined ? options.escapeMarkup : Toastify.defaults.escapeMarkup;\n this.options.ariaLive = options.ariaLive || Toastify.defaults.ariaLive;\n this.options.style = options.style || Toastify.defaults.style;\n if(options.backgroundColor) {\n this.options.style.background = options.backgroundColor;\n }\n\n // Returning the current object for chaining functions\n return this;\n },\n\n // Building the DOM element\n buildToast: function() {\n // Validating if the options are defined\n if (!this.options) {\n throw \"Toastify is not initialized\";\n }\n\n // Creating the DOM object\n var divElement = document.createElement(\"div\");\n divElement.className = \"toastify on \" + this.options.className;\n\n // Positioning toast to left or right or center\n if (!!this.options.position) {\n divElement.className += \" toastify-\" + this.options.position;\n } else {\n // To be depreciated in further versions\n if (this.options.positionLeft === true) {\n divElement.className += \" toastify-left\";\n console.warn('Property `positionLeft` will be depreciated in further versions. Please use `position` instead.')\n } else {\n // Default position\n divElement.className += \" toastify-right\";\n }\n }\n\n // Assigning gravity of element\n divElement.className += \" \" + this.options.gravity;\n\n if (this.options.backgroundColor) {\n // This is being deprecated in favor of using the style HTML DOM property\n console.warn('DEPRECATION NOTICE: \"backgroundColor\" is being deprecated. Please use the \"style.background\" property.');\n }\n\n // Loop through our style object and apply styles to divElement\n for (var property in this.options.style) {\n divElement.style[property] = this.options.style[property];\n }\n\n // Announce the toast to screen readers\n if (this.options.ariaLive) {\n divElement.setAttribute('aria-live', this.options.ariaLive)\n }\n\n // Adding the toast message/node\n if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) {\n // If we have a valid node, we insert it\n divElement.appendChild(this.options.node)\n } else {\n if (this.options.escapeMarkup) {\n divElement.innerText = this.options.text;\n } else {\n divElement.innerHTML = this.options.text;\n }\n\n if (this.options.avatar !== \"\") {\n var avatarElement = document.createElement(\"img\");\n avatarElement.src = this.options.avatar;\n\n avatarElement.className = \"toastify-avatar\";\n\n if (this.options.position == \"left\" || this.options.positionLeft === true) {\n // Adding close icon on the left of content\n divElement.appendChild(avatarElement);\n } else {\n // Adding close icon on the right of content\n divElement.insertAdjacentElement(\"afterbegin\", avatarElement);\n }\n }\n }\n\n // Adding a close icon to the toast\n if (this.options.close === true) {\n // Create a span for close element\n var closeElement = document.createElement(\"button\");\n closeElement.type = \"button\";\n closeElement.setAttribute(\"aria-label\", \"Close\");\n closeElement.className = \"toast-close\";\n closeElement.innerHTML = \"✖\";\n\n // Triggering the removal of toast from DOM on close click\n closeElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.removeElement(this.toastElement);\n window.clearTimeout(this.toastElement.timeOutValue);\n }.bind(this)\n );\n\n //Calculating screen width\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Adding the close icon to the toast element\n // Display on the right if screen width is less than or equal to 360px\n if ((this.options.position == \"left\" || this.options.positionLeft === true) && width > 360) {\n // Adding close icon on the left of content\n divElement.insertAdjacentElement(\"afterbegin\", closeElement);\n } else {\n // Adding close icon on the right of content\n divElement.appendChild(closeElement);\n }\n }\n\n // Clear timeout while toast is focused\n if (this.options.stopOnFocus && this.options.duration > 0) {\n var self = this;\n // stop countdown\n divElement.addEventListener(\n \"mouseover\",\n function(event) {\n window.clearTimeout(divElement.timeOutValue);\n }\n )\n // add back the timeout\n divElement.addEventListener(\n \"mouseleave\",\n function() {\n divElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n self.removeElement(divElement);\n },\n self.options.duration\n )\n }\n )\n }\n\n // Adding an on-click destination path\n if (typeof this.options.destination !== \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n if (this.options.newWindow === true) {\n window.open(this.options.destination, \"_blank\");\n } else {\n window.location = this.options.destination;\n }\n }.bind(this)\n );\n }\n\n if (typeof this.options.onClick === \"function\" && typeof this.options.destination === \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.options.onClick();\n }.bind(this)\n );\n }\n\n // Adding offset\n if(typeof this.options.offset === \"object\") {\n\n var x = getAxisOffsetAValue(\"x\", this.options);\n var y = getAxisOffsetAValue(\"y\", this.options);\n\n var xOffset = this.options.position == \"left\" ? x : \"-\" + x;\n var yOffset = this.options.gravity == \"toastify-top\" ? y : \"-\" + y;\n\n divElement.style.transform = \"translate(\" + xOffset + \",\" + yOffset + \")\";\n\n }\n\n // Returning the generated element\n return divElement;\n },\n\n // Displaying the toast\n showToast: function() {\n // Creating the DOM object for the toast\n this.toastElement = this.buildToast();\n\n // Getting the root element to with the toast needs to be added\n var rootElement;\n if (typeof this.options.selector === \"string\") {\n rootElement = document.getElementById(this.options.selector);\n } else if (this.options.selector instanceof HTMLElement || (typeof ShadowRoot !== 'undefined' && this.options.selector instanceof ShadowRoot)) {\n rootElement = this.options.selector;\n } else {\n rootElement = document.body;\n }\n\n // Validating if root element is present in DOM\n if (!rootElement) {\n throw \"Root element is not defined\";\n }\n\n // Adding the DOM element\n var elementToInsert = Toastify.defaults.oldestFirst ? rootElement.firstChild : rootElement.lastChild;\n rootElement.insertBefore(this.toastElement, elementToInsert);\n\n // Repositioning the toasts in case multiple toasts are present\n Toastify.reposition();\n\n if (this.options.duration > 0) {\n this.toastElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n this.removeElement(this.toastElement);\n }.bind(this),\n this.options.duration\n ); // Binding `this` for function invocation\n }\n\n // Supporting function chaining\n return this;\n },\n\n hideToast: function() {\n if (this.toastElement.timeOutValue) {\n clearTimeout(this.toastElement.timeOutValue);\n }\n this.removeElement(this.toastElement);\n },\n\n // Removing the element from the DOM\n removeElement: function(toastElement) {\n // Hiding the element\n // toastElement.classList.remove(\"on\");\n toastElement.className = toastElement.className.replace(\" on\", \"\");\n\n // Removing the element from DOM after transition end\n window.setTimeout(\n function() {\n // remove options node if any\n if (this.options.node && this.options.node.parentNode) {\n this.options.node.parentNode.removeChild(this.options.node);\n }\n\n // Remove the element from the DOM, only when the parent node was not removed before.\n if (toastElement.parentNode) {\n toastElement.parentNode.removeChild(toastElement);\n }\n\n // Calling the callback function\n this.options.callback.call(toastElement);\n\n // Repositioning the toasts again\n Toastify.reposition();\n }.bind(this),\n 400\n ); // Binding `this` for function invocation\n },\n };\n\n // Positioning the toasts on the DOM\n Toastify.reposition = function() {\n\n // Top margins with gravity\n var topLeftOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var topRightOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var offsetSize = {\n top: 15,\n bottom: 15,\n };\n\n // Get all toast messages on the DOM\n var allToasts = document.getElementsByClassName(\"toastify\");\n\n var classUsed;\n\n // Modifying the position of each toast element\n for (var i = 0; i < allToasts.length; i++) {\n // Getting the applied gravity\n if (containsClass(allToasts[i], \"toastify-top\") === true) {\n classUsed = \"toastify-top\";\n } else {\n classUsed = \"toastify-bottom\";\n }\n\n var height = allToasts[i].offsetHeight;\n classUsed = classUsed.substr(9, classUsed.length-1)\n // Spacing between toasts\n var offset = 15;\n\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Show toast in center if screen with less than or equal to 360px\n if (width <= 360) {\n // Setting the position\n allToasts[i].style[classUsed] = offsetSize[classUsed] + \"px\";\n\n offsetSize[classUsed] += height + offset;\n } else {\n if (containsClass(allToasts[i], \"toastify-left\") === true) {\n // Setting the position\n allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + \"px\";\n\n topLeftOffsetSize[classUsed] += height + offset;\n } else {\n // Setting the position\n allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + \"px\";\n\n topRightOffsetSize[classUsed] += height + offset;\n }\n }\n }\n\n // Supporting function chaining\n return this;\n };\n\n // Helper function to get offset.\n function getAxisOffsetAValue(axis, options) {\n\n if(options.offset[axis]) {\n if(isNaN(options.offset[axis])) {\n return options.offset[axis];\n }\n else {\n return options.offset[axis] + 'px';\n }\n }\n\n return '0px';\n\n }\n\n function containsClass(elem, yourClass) {\n if (!elem || typeof yourClass !== \"string\") {\n return false;\n } else if (\n elem.className &&\n elem.className\n .trim()\n .split(/\\s+/gi)\n .indexOf(yourClass) > -1\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n // Setting up the prototype for the init object\n Toastify.lib.init.prototype = Toastify.lib;\n\n // Returning the Toastify function to be assigned to the window object/module\n return Toastify;\n});\n","import { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { defineAsyncComponent, defineComponent, computed, onMounted, onUnmounted, openBlock, createBlock, unref, withCtx, createElementVNode, toDisplayString, createCommentVNode, createElementBlock } from \"vue\";\nimport { basename } from \"@nextcloud/paths\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport Toastify from \"toastify-js\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcNoteCard from \"@nextcloud/vue/components/NcNoteCard\";\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nasync function openConflictPicker(dirname, conflicts, content, options) {\n const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker.mjs\"));\n const incoming = [];\n const existing = [];\n for (const node of content) {\n if (isConflictingNode(node)) {\n existing.push(node);\n incoming.push(conflicts[indexOf(node)]);\n }\n }\n if (conflicts.length === 0 || content.length === 0) {\n throw new Error(\"ConflictPicker: files and conflicts must not be empty\");\n }\n if (conflicts.length !== content.length) {\n throw new Error(\"ConflictPicker: files and conflicts must have the same length. Make sure you filter out non conflicting files from the conflicts array.\");\n }\n return await spawnDialog(ConflictPicker, {\n dirname,\n existing,\n incoming,\n isOverwriting: options?.overwriting === true,\n recursiveUpload: options?.recursive === true\n }, {\n container: options?.container\n });\n function isConflictingNode(node) {\n return conflicts.some((entry) => nodeIsConflict(node, entry));\n }\n function indexOf(node) {\n return conflicts.findIndex((entry) => nodeIsConflict(node, entry));\n }\n function nodeIsConflict(node, conflict) {\n if (\"basename\" in conflict) {\n return conflict.basename === node.basename;\n }\n return conflict.name === node.basename;\n }\n}\nconst IconMove = '';\nconst IconCopy = '';\nconst gtBuilder = getGettextBuilder().detectLanguage();\nfor (const data of [{ \"language\": \"ar\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" لا يصلح كاسم مجلد.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" غير مسموح به كاسم مجلد'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" غير مسموح به داخل اسم مجلد.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"كل الملفات\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"إختَر\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"إختر {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"إختَر %n ملف\", \"إختَر %n ملف\", \"إختَر %n ملف\", \"إختَر %n ملفات\", \"إختَر %n ملف\", \"إختر %n ملف\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"نسخ\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"نسخ إلى {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"تعذّر إنشاء المجلد الجديد\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"يتعذّر تحميل إعدادات الملفات\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"تعذر تحميل عرض الملفات\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"إنشاء مجلد\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"محدد العرض الحالي\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"المفضلة\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"الملفات والمجلدات التي تحددها كمفضلة ستظهر هنا.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"الملفات و المجلدات التي قمت مؤخراً بتعديلها سوف تظهر هنا.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"تصفية قائمة الملفات\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"اسم المجلد لا يمكن أن يكون فارغاً.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"البداية\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"التعديل\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"نقل\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"نقل إلى {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"الاسم\"] }, { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"مجلد جديد\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"اسم المجلد الجديد\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"لا توجد ملفات هنا\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"لا توجد ملفات تتطابق مع عامل التصفية الذي وضعته\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"لا توجد ملفات مطابقة\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"الحالي\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"حدد جميع الإدخالات\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"إختَر المدخل\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"إختر سطر الـ {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"الحجم\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"تراجع\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"قم برفع بعض المحتوى أو المزامنة مع أجهزتك!\"] }] }, { \"language\": \"ast\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» ye un nome de carpeta inválidu.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» ye un nome de carpeta inválidu\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"Nun se permite'l caráuter «/» dientro'l nome de les carpetes.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tolos ficheros\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escoyer\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escoyer «{ficheru}»\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escoyer %n ficheru\", \"Escoyer %n ficheros\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar en: {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nun se pudo crear la carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nun se pudo cargar la configuración de los ficheros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nun se pudieron cargar les vistes de los ficheros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear un direutoriu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de la vista actual\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Equí apaecen los ficheros y les carpetes que metas en Favoritos.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Equí apaecen los fichero y les carpetes que modificares apocayá.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Peñerar la llista de ficheros\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nome de la carpeta nun pue tar baleru.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Aniciu\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificóse\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Carpeta nueva\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nome de carpeta nuevu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Equí nun hai nengún ficheru\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nun s'atopó nengún ficheru que concasare cola peñera.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nun hai nengún ficheru que concase\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"De recién\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleicionar toles entraes\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleicionar la entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleicionar la filera de: {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamañu\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Xubi dalgún elementu o sincroniza colos tos preseos!\"] }] }, { \"language\": \"ca\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`No és permès d'usar el caràcter \"{char}\" en un nom.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no és un nom permès.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" no és vàlid com a nom de carpeta.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no és vàlid com a nom de carpeta'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" és un mot reservat i no està permès com a nom.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [`\"/\" no està permès en el nom d'una carpeta.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflicte de fitxers\", \"%n conflictes de fitxers\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n onflicte de fitxers a {dirname}\", \"%n conflictes de fitxers a {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tots els fitxers\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel·lar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel·lar tota l'operació\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tria\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Tria {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Tria %n fitxer\", \"Tria %n fitxers\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirma\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copia\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copia a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No s'ha pogut crear la carpeta nova\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No es poden carregar fitxers de configuració\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No es poden carregar fitxers de vistes\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crea un directori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de visualització actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Escriviu el vostre nom\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versió existent\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"No s'ha pogut desar el sobrenom.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Preferits\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Els fitxers i les carpetes que marqueu com a favorits es mostraran aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Els fitxers i les carpetes recentment modificats es mostraran aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar llistat de fitxers\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nom de la carpeta no pot estar buit.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificació com a convidat\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inici\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nom no vàlid.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data de l'última modificació desconeguda\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Data de modificació\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Desplaça\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Desplaça a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nom\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Els noms poden tenir com a màxim 64 caràcters.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Els noms no poden ser buits.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [`Els noms no poden acabar amb l'extensió \"{extension}\".`] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Els noms no poden començar amb un punt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Crea\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Carpeta nova\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nom de la carpeta nova\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versió\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hi ha cap fitxer\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No s'ha trobat cap fitxer que coincideixi amb el filtre.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hi ha cap fitxer que coincideixi\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Si us plau, escriu un nom amb 2 caràcters com a mínim.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recents\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecciona totes les caselles de selecció\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecciona totes les entrades\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecciona tots els fitxers existents\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecciona tots els fitxers nous\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecciona l'entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecciona la fila per a {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Mida\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omet %n fitxer\", \"Omet %n fitxers\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omet aquest fitxer\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Entreu el nom\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfés\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Pugeu contingut o sincronitzeu-lo amb els vostres dispositius!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quan es selecciona una carpeta entrant, també se sobreescriuran els fitxers que hi entrin en conflicte.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quan es selecciona una carpeta entrant, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quins fitxers voleu conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Actualment se us mostra com a {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Actualment no esteu identificat.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No podeu deixar el nom buit.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Heu de triar com a mínim una solució de conflicte\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Heu de seleccionar com a mínim una versió de cada fitxer per continuar.\"] }] }, { \"language\": \"cs_CZ\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"znak „{char}“ není možné použít uvnitř názvu složky.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ není možné použít uvnitř názvu.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ není možné použít jako název.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ je vyhrazeným názvem a není možné ho používat pro názvy složek.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ je vyhrazeným názvem a není možné ho použít.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n kolize souboru\", \"%n kolize souborů\", \"%n kolizí souborů\", \"%n kolize souborů\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n kolize souborů v {dirname}\", \"%n kolize souborů v {dirname}\", \"%n kolizí souborů v {dirname}\", \"%n kolize souborů v {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Veškeré soubory\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Storno\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Zvolit\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Zvolit {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Zvolte %n soubor\", \"Zvolte %n soubory\", \"Zvolte %n souborů\", \"Zvolte %n soubory\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdit\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Zkopírovat\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Zkopírovat do {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Novou složku se nepodařilo vytvořit\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepodařilo se načíst nastavení pro soubory\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepodařilo se načíst pohledy souborů\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Vytvořit složku\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Výběr stávajícího zobrazení\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Zadejte své jméno\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepodařilo se nastavit přezdívku.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Oblíbené\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Zde se zobrazí soubory a složky, které označíte jako oblíbené.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Zde se zobrazí soubory a složky, které jste nedávno pozměnili.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrovat seznam souborů\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Názvy složek nemohou končit na „{extension}“.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikace hosta\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domů\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, pak k názvu příchozího souboru bude přidáno číslo.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neplatný název složky.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neplatný název.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum poslední změny neznámé\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Změněno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Přesounout\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Přesunout do {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Název\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Je třeba, aby délka jmen nepřesahovala 64 znaků.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Názvy je třeba vyplnit.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Názvy nemohou končit na „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Názvy nemohou začínat tečkou.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nová složka\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Název pro novou složku\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nejsou zde žádné soubory\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenalezeny žádné soubory odpovídající vašemu filtru\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Žádné odpovídající soubory\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Zadejte jméno dlouhé alespoň 2 znaky.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedávné\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vybrat všechny zaškrtávací kolonky\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vybrat všechny položky\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat všechny existující soubory\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat všechny nové soubory\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vybrat položku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vybrat řádek pro {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Velikost\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Přeskočit %n soubor\", \"Přeskočit %n soubory\", \"Přeskočit %n souborů\", \"Přeskočit %n soubory\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Přeskočit tento soubor\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Odeslat jméno\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Zpět\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Nahrajte sem nějaký obsah nebo proveďte synchronizaci se svými zařízeními!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Pokud je vybrána příchozí složka, budou v ní také přepsány jakékoli kolidující soubory.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Když je vybrána příchozí složka, jakékoli soubory v ní budou také přepsány.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Pokud je vybrána příchozí složka, je obsah zapsán do existující složky a je provedeno rekurzivní vyřešení kolizí.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory chcete ponechat?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"V tuto chvíli jste identifikováni jako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"V tuto chvíli nejste identifikovaní.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Jméno nelze ponechat nevyplněné.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Je třeba zvolit alespoň jedno z řešení kolize\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] }] }, { \"language\": \"da\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" er ikke tilladt i et navn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" er ikke tilladt i et navn.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" er et ugyldigt mappenavn.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" er ikke et tilladt mappenavn'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" er et reserveret navn og er derfor ikke tilladt.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er ikke tilladt i et mappenavn.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n filkonflikt\", \"%n filer konflikter\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n filkonflikt i {dirname}\", \"%n filkonflikter i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Fortryd\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annullér hele operationen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Vælg\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vælg {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vælg %n fil\", \"Vælg %n filer\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bekræft\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopier til {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunne ikke oprette den nye mappe\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Filindstillingerne kunne ikke indlæses\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunne ikke indlæse filvisninger\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Opret mappe\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuel visningsvælger\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Indtast dit navn\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Forsøg på at gemme kaldenavn mislykkedes.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer og mapper, du markerer som foretrukne, vises her.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer og mapper, du for nylig har ændret, vises her.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer fil liste\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mappenavnet må ikke være tomt.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gæsteidentifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hjem\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ugyldigt navn.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senest ændret dato ukendt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ændret\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flyt\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flyt til {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Navn\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Navne kan højst være 64 tegn lange.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Navne kan ikke være tomt.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Navne må ikke ende på \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Navne skal starte med et punktum.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mappe\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ny mappe navn\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ingen filer here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Der blev ikke fundet nogen filer, der matcher dit filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ingen matchende filer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Indtast et navn med mindst 2 tegn.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Seneste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markér alle afkrydsningsfelter\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vælg alle poster\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vælg post\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vælg rækken for {nodenavn}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Størelse\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Spring %n fil over\", \"Spring %n filer over\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Spring denne fil over\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Indsend navn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Fortryd\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload noget indhold eller synkroniser med dine enheder!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil eventuelle modstridende filer i det også blive overskrevet.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, er indholdet skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du have?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du er i øjeblikket identificeret som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du er ikke identificeret.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan ikke efterlade navnet tomt.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Du skal vælge mindst én konfliktløsning\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] }] }, { \"language\": \"de\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Ordnernamens nicht zulässig.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Namens nicht zulässig.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ist kein zulässiger Name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig für Ordnernamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n Dateikonflikt\", \"%n Dateikonflikte\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n Dateikonflikt in {dirname}\", \"%n Dateikonflikte in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle Dateien\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Auswählen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} auswählen\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n Datei auswählen\", \"%n Dateien auswählen\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bestätigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopieren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Nach {target} kopieren\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Der neue Ordner konnte nicht erstellt werden\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dateieinstellungen konnten nicht geladen werden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dateiansichten konnten nicht geladen werden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Verzeichnis erstellen\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuelle Ansichtsauswahl\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Gib deinen Namen ein\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Spitzname konnte nicht gespeichert werden.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien und Ordner, die du als Favorit markierst, werden hier angezeigt.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien und Ordner, die du kürzlich geändert hast, werden hier angezeigt.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dateiliste filtern\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ordnernamen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gast-Identifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ungültiger Ordnername.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ungültiger Name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geändert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verschieben\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Nach {target} verschieben\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen dürfen maximal 64 Zeichen lang sein.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen dürfen nicht leer sein.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen dürfen nicht mit einem Punkt beginnen.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neuer Ordner\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neuer Ordnername\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Hier sind keine Dateien\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Es wurden keine Dateien gefunden, die deinem Filter entsprechen.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keine passenden Dateien\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Bitte einen Namen mit mindestens zwei Zeichen eingeben.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Neueste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle Einträge auswählen\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Eintrag auswählen\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Die Zeile für {nodename} auswählen.\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Größe\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n Datei überspringen\", \"%n Dateien überspringen\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Namen senden\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Rückgängig machen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lade Inhalte hoch oder synchronisiere diese mit deinen Geräten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien sollen behalten werden?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du bist derzeit als {nickname} identifiziert.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du bist momentan nicht identifiziert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kannst den Namen nicht leer lassen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Es muss mindestens eine Konfliktlösung gewählt werden\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren.\"] }] }, { \"language\": \"de_DE\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Ordnernamens nicht zulässig.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Namens nicht zulässig.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ist kein zulässiger Name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig für Ordnernamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n Dateikonflikt\", \"%n Dateikonflikte\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n Dateikonflikt in {dirname}\", \"%n Dateikonflikte in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle Dateien\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Auswählen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} auswählen\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n Datei auswählen\", \"%n Dateien auswählen\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bestätigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopieren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Nach {target} kopieren\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Der neue Ordner konnte nicht erstellt werden\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dateieinstellungen konnten nicht geladen werden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dateiansichten konnten nicht geladen werden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Verzeichnis erstellen\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuelle Ansichtsauswahl\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Geben Sie Ihren Namen ein\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Spitzname konnte nicht gespeichert werden.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien und Ordner, die Sie als Favorit markieren, werden hier angezeigt.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien und Ordner, die Sie kürzlich geändert haben, werden hier angezeigt.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dateiliste filtern\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ordnernamen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gast-Identifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ungültiger Ordnername.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ungültiger Name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geändert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verschieben\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Nach {target} verschieben\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen dürfen maximal 64 Zeichen lang sein.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen dürfen nicht leer sein.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen dürfen nicht mit einem Punkt beginnen.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neuer Ordner\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neuer Ordnername\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Hier sind keine Dateien\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Es wurden keine Dateien gefunden, die Ihrem Filter entsprechen.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keine passenden Dateien\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Bitte einen Namen mit mindestens zwei Zeichen eingeben.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Neueste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle Einträge auswählen\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Eintrag auswählen\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Die Zeile für {nodename} auswählen.\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Größe\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n Datei überspringen\", \"%n Dateien überspringen\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Namen senden\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Rückgängig machen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Laden Sie Inhalte hoch oder synchronisieren Sie diese mit Ihren Geräten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien sollen behalten werden?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sie sind derzeit als {nickname} identifiziert.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sie sind momentan nicht identifiziert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Sie können den Namen nicht leer lassen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Es muss mindestens eine Konfliktlösung gewählt werden\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren.\"] }] }, { \"language\": \"el\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"Το «{char}» δεν επιτρέπεται μέσα σε όνομα φακέλου.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" δεν επιτρέπεται μέσα σε ένα όνομα.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" δεν είναι επιτρεπτό όνομα.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"Το «{segment}» είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται για ονόματα φακέλων.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n σύγκρουση αρχείου\", \"%n σύγκρουση αρχείων\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n σύγκρουση αρχείου στο {dirname}\", \"%n σύγκρουση αρχείων στο {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Όλα τα αρχεία\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Ακύρωση\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Ακύρωση όλης της διαδικασίας\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Επιλογή\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Επιλέξτε {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Επιλέξτε %n αρχείο\", \"Επιλέξτε %n αρχεία\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Επιβεβαίωση\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Συνέχεια\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Αντιγραφή\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Αντιγραφή στο {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Αδυναμία δημιουργίας νέου φακέλου\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Αδυναμία φόρτωσης ρυθμίσεων αρχείων\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Αδυναμία φόρτωσης προβολών αρχείων\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Δημιουργία καταλόγου\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Επιλογέας τρέχουσας προβολής\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Εισάγετε το όνομά σας\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Υφιστάμενη έκδοση\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Αποτυχία στην ρύθμιση του ψευδώνυμου.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Αγαπημένα\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Τα αρχεία και οι φάκελοι που επισημάνετε ως αγαπημένα θα εμφανίζονται εδώ.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Τα αρχεία και οι φάκελοι που τροποποιήσατε πρόσφατα θα εμφανίζονται εδώ.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Φιλτράρισμα λίστας αρχείων\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Τα ονόματα των φακέλων δεν πρέπει να τελειώνουν με «{extension}».\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Ταυτοποίηση επισκέπτη\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Αρχική\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Εάν επιλέξετε και τις δύο εκδόσεις, στο όνομα του εισερχόμενου αρχείου θα προστεθεί ένας αριθμός.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Μη έγκυρο όνομα φακέλου.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Μη έγκυρο όνομα.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Άγνωστη ημερομηνία τελευταίας τροποποίησης\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Τροποποιήθηκε\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Μετακίνηση\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Μετακίνηση στο {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Όνομα\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Τα ονόματα μπορούν να έχουν μέγιστο μήκος 64 χαρακτήρες.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Τα ονόματα δεν πρέπει να είναι κενά.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Τα ονόματα δεν πρέπει να τελειώνουν με \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Τα ονόματα δεν πρέπει να ξεκινούν με τελεία.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Νέο\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Νέος φάκελος\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Όνομα νέου φακέλου\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Νέα έκδοση\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Δεν υπάρχουν αρχεία εδώ\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Δεν βρέθηκαν αρχεία που να ταιριάζουν με το φίλτρο σας.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Κανένα αρχείο δεν ταιριάζει\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Παρακαλώ εισάγετε ένα όνομα με τουλάχιστον 2 χαρακτήρες.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Πρόσφατα\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Επιλέξτε όλα τα πλαίσια ελέγχου\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Επιλογή όλων των καταχωρήσεων\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Επιλογή όλων των υπάρχοντων αρχείων\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Επιλογή όλων των νέων αρχείων\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Επιλογή εγγραφής\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Επιλέξτε τη γραμμή για το {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Μέγεθος\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Παράλειψη ενός αρχείου\", \"Παράλειψη %n αρχείων\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Παράλειψη αυτού το αρχείου\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Υποβολή ονόματος\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Αναίρεση\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ανεβάστε κάποιο περιεχόμενο ή συγχρονίστε με τις συσκευές σας!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Όταν επιλέγεται ένας φάκελος εισερχομένων, όλα τα αρχεία που βρίσκονται σε σύγκρουση μέσα σε αυτόν θα αντικατασταθούν επίσης.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Όταν επιλέγεται ένας φάκελος εισερχομένων, το περιεχόμενο εγγράφεται στον υπάρχοντα φάκελο και εκτελείται μια αναδρομική επίλυση σύγκρουσης.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ποια αρχεία θέλετε να διατηρήσετε;\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Αυτή τη στιγμή έχετε αναγνωριστεί ως {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Δεν έχετε ταυτοποιηθεί.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Δεν μπορείτε να αφήσετε το όνομα κενό.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία λύση σύγκρουσης\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία έκδοση από κάθε αρχείο για να συνεχίσετε.\"] }] }, { \"language\": \"en_GB\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" is not allowed inside a folder name.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" is not allowed inside a name.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" is not an allowed name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" is a reserved name and cannot be used for folder names.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" is a reserved name and not allowed.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n file conflict\", \"%n files conflict\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n file conflict in {dirname}\", \"%n file conflicts in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"All files\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Choose\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Choose {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Choose %n file\", \"Choose %n files\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirm\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copy\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copy to {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Could not create the new folder\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Could not load files settings\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Could not load files views\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Create directory\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Current view selector\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Enter your name\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Failed to set nickname.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favourites\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Files and folders you mark as favourite will show up here.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Files and folders you recently modified will show up here.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter file list\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Folder names must not end with \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Guest identification\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Invalid folder name.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Invalid name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modified\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Move\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Move to {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Names may be at most 64 characters long.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Names must not be empty.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Names must not end with \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Names must not start with a dot.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"New folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"New folder name\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No files in here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No files matching your filter were found.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No matching files\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Please enter a name with at least 2 characters.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recent\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Select all entries\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Select entry\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Select the row for {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Size\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Skip %n file\", \"Skip %n files\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Skip this file\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Submit name\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Undo\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload some content or sync with your devices!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any files within it will also be overwritten.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"You are currently identified as {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"You are currently not identified.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"You cannot leave the name empty.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"You need to choose at least one conflict solution\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] }] }, { \"language\": \"es\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no es un nombre permitido.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" es un nombre de carpeta no válido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no es un nombre de carpeta permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" no está permitido dentro del nombre de una carpeta.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seleccionar\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Seleccionar {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Elige %n archivo\", \"Elige %n archivos\", \"Seleccione %n archivos\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudieron cargar los ajustes de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ingrese su nombre\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Fallo al establecer apodo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nombre de la carpeta no puede estar vacío.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación de invitado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nombre inválido.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Los nombres no deben estar vacíos.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Los nombres no deben terminar con \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Los nombres no deben iniciar con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\" Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nuevo nombre de carpeta\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidiesen con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Por favor, ingrese un nombre con al menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nombre\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Cargue algún contenido o sincronice con sus dispositivos!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Ud. se encuentra identificado actualmente como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Ud. no se encuentra identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No puede dejar el nombre vacío.\"] }] }, { \"language\": \"es_AR\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" es un nombre de carpeta inválido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no es un nombre de carpeta permitido'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" no está permitido en el nombre de una carpeta.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Elegir\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Elija {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Elija %n archivo\", \"Elija %n archivos\", \"Elija %n archivos\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudo cargar la configuración de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nombre de la carpeta no puede estar vacío.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nombre de nueva carpeta\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidan con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Cargue algún contenido o sincronice con sus dispositivos!\"] }] }, { \"language\": \"es_MX\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre de carpeta'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no es un nombre permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido para nombres de carpetas'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflicto de archivo\", \"%n conflicto de archivos\", \"%n conflicto de archivos\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n conflicto de archivo en {dirname}\", \"%n conflictos de archivo en {dirname}\", \"%n conflictos de archivo en {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar la operación completa\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seleccionar\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Seleccionar {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Seleccionar %n archivo\", \"Seleccionar %n archivos\", \"Seleccionar %n archivos\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudo cargar la configuración de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear carpeta\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ingresa tu nombre\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"No se pudo establecer el nickname\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Los nombres para carpeta no deben terminar con \"{extension}\"'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación de invitado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccionas ambas versiones, se le agregará al archivo que se está descargando, un número a su nombre.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nombre de carpeta no válido\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nombre no válido\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Los nombres pueden tener como máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Los nombres no deben estar vacíos.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Los nombres no deben terminar con \"{extension}\"'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Los nombres no deben comenzar con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nombre de nueva carpeta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidan con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Por favor ingrese un nombre con al menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccione todas las casillas de verificación\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccione todos los archivos que aparecen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccione todos los archivos nuevos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omitir %n archivo\", \"Omitir %n archivos\", \"Omitir %n archivos\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este archivo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nombre\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Suba algún contenido o sincronice con sus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando se selecciona una carpeta en descarga, cualquier archivo conflictivo que contenga también se sobrescribirá.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando se selecciona una carpeta en descarga, el contenido se escribe en la carpeta existente y se realiza una resolución de conflicto recursiva.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos deseas conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Actualmente estás identificado como {nickname}\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"No estás identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No puedes dejar el nombre vacío.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Necesitas elegir al menos una solución al conflicto.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Necesitas seleccionar al menos una versión de cada archivo para continuar.\"] }] }, { \"language\": \"et_EE\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"„{char}“ pole kausta nimes lubatud.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ pole nimes lubatud.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ pole lubatud nimi.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ on reserveeritud nimi ja pole kausta nimes lubatud.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ on reserveeritud nimi ja pole kasutamiseks lubatud.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fail on vastuolus\", \"%n faili on omavahel vastuolus\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n fail on {dirname} kaustas vastuolus\", \"%n faili on omavahel {dirname} kaustas vastuolus\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Kõik failid\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Katkesta\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Katkesta kogu tegevus\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tee valik\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vali {file} fail\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vali %n fail\", \"Vali %n faili\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Kinnita\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Jätka\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopeeri\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopeeri sihtkohta „{target}“\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Uue kausta loomine ei õnnestunud\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Failide seadistusi ei õnnestunud laadida\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Failide vaatamiskordi ei õnnestunud laadida\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Loo kaust\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Praeguse vaate valija\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Sisesta oma nimi\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemasolev versioon\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Hüüdnime sisestamine ei õnnestunud.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Lemmikud\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Failid ja kaustad, mida märgid lemmikuks, kuvatakse siin.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Siin kuvatakse hiljuti muudetud failid ja kaustad.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtreeri faililoendit\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Kausta nime lõpus ei tohi olla „{extension}“.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Külalise tuvastamine\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Avaleht\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Kui valid mõlemad versioonid, siis uue faili nimele lisatakse number.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Vigane kausta nimi.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Vigane nimi.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimase muutmise kuupäev pole teada\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Muudetud\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Teisalda\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Teisalda kausta „{target}“\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nimi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nimed võivad olla vaid kuni 64 tähemärki pikad.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nimi ei saa olla tühi.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Nime lõpus ei tohi olla „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nime alguses ei tohi olla punkti.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Uus\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Uus kaust\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Uue kausta nimi\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Uus versioon\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Siin pole faile\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Sinu filtrile vastavaid faile ei leidunud.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Puuduvad sobivad failid\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Palun sisesta vähemalt 2 tähemärki pikk nimi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Hiljutine\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vali kõik märkeruudud\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vali kõik kirjed\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vali kõik olemasolevad failid\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vali kõik uued failid\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vali kirje\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vali rida „{nodename}“ jaoks\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Suurus\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Jäta %n fail vahele\", \"Jäta %n faili vahele\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Jäta see fail vahele\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Lisa nimi\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Tühista\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lisa mingit sisu või sünkrooni see oma seadmetest!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kui uute failide kaust on valitud, siis kõik seal leiduvad vastuolus failid saavad üle kirjutatud.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Kui uute (saabuvate) failide kaust on valitud, siis kõik seal leiduvad failid saavad samuti üle kirjutatud.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kui uute failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja korraldatakse rekursiivne failikonfliktide lahendamine.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Missugused failid tahaksid alles jätta?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sa oled hetkel tuvastatav kui {nickname}..\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sa oled hetkel tuvastamata.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Sa ei saa jätta nime tühjaks.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Sa pead valima vähemalt ühe failikonflikti lahenduse.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Jätkamaks pead valima igast failist vähemalt ühe versiooni.\"] }] }, { \"language\": \"fa\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} نام پوشه معتبر نیست\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} نام پوشه مجاز نیست\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" نمی‌تواند در نام پوشه استفاده شود.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"همه فایل‌ها\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"لغو\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"انتخاب\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"انتخاب {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"انتخاب %n فایل\", \"انتخاب %n فایل\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"رونوشت\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"رونوشت از {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"پوشه جدید ایجاد نشد\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"تنظیمات فایل باز نشد\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"نمای فایل‌ها بارگیری نشد\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ایجاد فهرست\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"انتخابگر نماگر فعلی\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"نام خود را وارد کنید\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"تنظیم نام مستعار ناموفق بود.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"علایق\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"فایل‌ها و پوشه‌هایی که به‌عنوان مورد علاقه علامت‌گذاری می‌کنید در اینجا نشان داده می‌شوند.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"فایل‌ها و پوشه‌هایی که اخیراً تغییر داده‌اید در اینجا نمایش داده می‌شوند.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"فیلتر لیست فایل\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"نام پوشه نمی تواند خالی باشد.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"شناسایی مهمان\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"خانه\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"اصلاح شده\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"انتقال\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"انتقال به {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"نام\"] }, { \"msgid\": \"New\", \"msgstr\": [\"جدید\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"پوشه جدید\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"نام پوشه جدید\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"فایلی اینجا نیست\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"هیچ فایلی مطابق با فیلتر شما یافت نشد.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"فایل منطبقی وجود ندارد\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"لطفاً نامی با حداقل ۲ کاراکتر وارد کنید.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"اخیر\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"انتخاب همه ورودی ها\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"انتخاب ورودی\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"انتخاب ردیف برای {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"اندازه\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"ارسال نام\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"بازگردانی\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"مقداری محتوا آپلود کنید یا با دستگاه های خود همگام سازی کنید!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"شما در حال حاضر شناسایی نشده‌اید.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"نمی‌توانید نام را خالی بگذارید.\"] }] }, { \"language\": \"fi_FI\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ei ole sallittu nimessä.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ei ole sallittu nimi.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" on virheellinen kansion nimi.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" ei ole sallittu kansion nimi'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" on varattu nimi eikä se ole sallittu.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ei ole sallittu kansion nimessä.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Kaikki tiedostot\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Valitse\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Valitse {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Valitse %n tiedosto\", \"Valitse %n tiedostoa\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopioi\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopioi sijaintiin {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Uutta kansiota ei voitu luoda\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tiedoston asetuksia ei saa ladattua\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tiedoston näkymiä ei saa ladattua\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Luo kansio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Nykyisen näkymän valinta\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Kirjoita nimesi\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kutsumanimen asettaminen epäonnistui.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Suosikit\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tiedostot ja kansiot, jotka merkitset suosikkeihisi, näkyvät täällä.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Tiedostot ja kansiot, joita muokkasit äskettäin, näkyvät täällä.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Suodata tiedostolistaa\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Kansion nimi ei voi olla tyhjä.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Vieraan tunnistaminen\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Koti\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Virheellinen nimi.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Muokattu\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Siirrä\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Siirrä sijaintiin {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nimi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nimissä voi olla enintään 64 merkkiä.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nimet eivät saa olla tyhjiä.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nimet eivät saa päättyä sanaan \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nimet eivät saa alkaa pisteellä.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Uusi kansio\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Uuden kansion nimi\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Täällä ei ole tiedostoja\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Suodatinta vastaavia tiedostoja ei löytynyt.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ei vastaavia tiedostoja\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kirjoita vähintään kaksi merkkiä sisältävä nimi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Viimeisimmät\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Valitse kaikki tietueet\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Valitse tietue\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Valitse rivi {nodename}:lle\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Koko\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Lähetä nimi\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Kumoa\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lähetä jotain sisältöä tai synkronoi laitteidesi kanssa!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sinut tunnetaan tällä hetkellä nimellä {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sinua ei ole tunnistettu.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nimeä ei voi jättää tyhjäksi.\"] }] }, { \"language\": \"fr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`\"{char}\" n'est pas autorisé dans un nom de dossier.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`\"{char}\" n'est pas autorisé dans un nom.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [`\"{extension}\" n'est pas un nom autorisé.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [`\"{segment}\" est un nom réservé et n'est pas autorisé pour un nom de dossier.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [`\"{segment}\" est un nom réservé et n'est pas autorisé.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflit de fichier\", \"%n conflit de fichiers\", \"%n conflit de fichiers\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%nconflit de fichier dans {dirname}\", \"%n conflit de fichiers dans {dirname}\", \"%nconflit de fichiers dans {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tous les fichiers\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tout annuler \"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Choisir\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Choisir {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Choisir %n fichier\", \"Choisir %n fichiers\", \"Choisir %n fichiers \"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmer\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copier vers {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Impossible de créer le nouveau dossier\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Les paramètres des fichiers n'ont pas pu être chargés\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Impossible de charger les vues des fichiers\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Créer un répertoire\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Sélecteur d'affichage actuel\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Entrez votre nom\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Version actuelle \"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Échec de définition du surnom.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoris\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Les fichiers et répertoires marqués en favoris apparaîtront ici.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Les fichiers et répertoires modifiés récemment apparaîtront ici.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer la liste des fichiers\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Les noms de dossiers ne doivent pas se terminer par \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identification d'invité\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Accueil\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous conservez les deux versions, le fichier reçu sera renommé avec un numéro.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nom de dossier invalide.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nom invalide.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de modification inconnue\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifié\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Déplacer\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Déplacer vers {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nom\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Les noms peuvent comporter au maximum 64 caractères.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Les noms ne peuvent pas être vides.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Les noms ne doivent pas se terminer par \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Les noms ne peuvent pas commencer par un point.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nouveau dossier\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nom du nouveau dossier\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Aucun fichier ici\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Aucun fichier trouvé correspondant à votre filtre.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Aucun fichier correspondant\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Veuillez entrer un nom avec au moins 2 caractères.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Récents\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Tout sélectionner\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Sélectionner une entrée\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Sélectionner la ligne correspondant à {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Taille\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorer %n fichier\", \"Ignorer %n fichiers \", \"Ignorer %n fichiers \"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorer ce fichier\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Envoyer le nom\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Annuler\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Chargez du contenu ou synchronisez avec vos équipements !\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"En sélectionnant un dossier entrant, les fichiers en conflit qu’il contient seront automatiquement écrasés.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Suite à la sélection d'un dossier en entrée, tout fichier présent dans ce dossier sera alors écrasé. \"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsque vous sélectionnez un dossier entrant, son contenu est ajouté au dossier existant et les conflits sont résolus automatiquement.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Vous êtes actuellement identifié comme {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Vous n'êtes pas identifié actuellement.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Vous ne pouvez pas laisser le nom vide.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Vous devez choisir au moins une option pour résoudre le conflit\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sélectionnez au moins une version de chaque fichier pour continuer.\"] }] }, { \"language\": \"ga\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`Ní cheadaítear \"{char}\" laistigh d'ainm fillteáin.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`Ní cheadaítear \"{char}\" laistigh d'ainm.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['Ní ainm ceadaithe é \"{extension}\".'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [`Is ainm curtha in áirithe é \"{segment}\" agus ní cheadaítear é d'ainmneacha fillteán.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['Is ainm curtha in áirithe é \"{segment}\" agus ní cheadaítear é.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n coimhlint comhaid\", \"%n coimhlint comhad\", \"%n coimhlint comhad\", \"%n coimhlint comhad\", \"%n coimhlint comhad\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n coimhlint comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Gach comhad\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht ar fad\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Roghnaigh\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Roghnaigh {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Roghnaigh %n comhad\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Deimhnigh\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Lean ar aghaidh\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Cóip\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Cóipeáil chuig {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Níorbh fhéidir an fillteán nua a chruthú\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Níorbh fhéidir socruithe comhaid a lódáil\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Níorbh fhéidir radhairc comhad a lódáil\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Cruthaigh eolaire\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Roghnóir amhairc reatha\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Cuir isteach d'ainm\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan atá ann cheana féin\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Theip ar leasainm a shocrú.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Ceanáin\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Taispeánfar comhaid agus fillteáin a d'athraigh tú le déanaí anseo.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Scag liosta comhad\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ní féidir ainmneacha fillteán a chríochnú le \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Aitheantas aoi\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Baile\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir le hainm an chomhaid atá ag teacht isteach.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ainm fillteáin neamhbhailí.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ainm neamhbhailí.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta an athraithe dheireanaigh anaithnid\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Athraithe\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Bog\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Bog go{target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ainm\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Ní fhéadfaidh ainmneacha a bheith níos mó ná 64 carachtar ar fhad.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ní féidir ainmneacha a bheith folamh.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ní féidir ainmneacha a chríochnú le \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ní mór ainmneacha a bheith ag tosú le ponc.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Fillteán nua\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ainm fillteáin nua\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Níl aon chomhaid istigh anseo\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Níor aimsíodh aon chomhad a tháinig le do scagaire.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Gan comhaid meaitseála\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Cuir isteach ainm ina bhfuil 2 charachtar ar a laghad.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"le déanaí\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh na boscaí seiceála go léir\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Roghnaigh gach iontráil\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh na comhaid uile atá ann cheana\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Roghnaigh iontráil\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Roghnaigh an ró do {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Méid\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Léim %n comhad\", \"Léim %n comhaid\", \"Léim %n comhaid\", \"Léim %n comhaid\", \"Léim %n comhaid\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Scipeáil an comhad seo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Cuir isteach ainm\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Cealaigh\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Uaslódáil roinnt ábhair nó sioncronaigh le do ghléasanna!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhaid choimhlinteacha ann a athscríobh freisin.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhaid laistigh de a athscríobh freisin.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach sa fhillteán atá ann cheana féin agus déantar réiteach coinbhleachta athchúrsach.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Is é {nickname} an ainm atá ort faoi láthair.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Níl aitheantas tugtha duit faoi láthair.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ní féidir leat an t-ainm a fhágáil folamh.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Ní mór duit réiteach coinbhleachta amháin ar a laghad a roghnú\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú le leanúint ar aghaidh.\"] }] }, { \"language\": \"gl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"«{char}» non está permitido no nome dun cartafol.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"«{char}» non está permitido dentro dun nome.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"«{extension}» non é un nome permitido.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"«{segment}» é un nome reservado e non está permitido para nomes de cartafoles.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"«{segment}» é un nome reservado e non está permitido.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ficheiro en conflito\", \"%n ficheiros en conflito\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ficheiro en conflito en {dirname}\", \"%n ficheiros en conflito en {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os ficheiros\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operación\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escoller\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escoller {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escoller %n ficheiro\", \"Escoller %n ficheiros\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar en {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Non foi posíbel crear o novo cartafol\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Non foi posíbel cargar os axustes dos ficheiros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Non foi posíbel cargar as vistas dos ficheiros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear un directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Introduza o seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Produciuse un fallo ao definir o alcume.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os ficheiros e cartafoles que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Os ficheiros e cartafoles que modificou recentemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar a lista de ficheiros\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Os nomes de cartafol non deben rematar en «{extension}».\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación do convidado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"O nome de cartafol non é válido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome incorrecto\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover cara a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes poden ter unha lonxitude máxima de 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Os nomes non deben estar baleiros.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Os nomes non deben rematar en «{extension}».\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Os nomes non deben comezar cun punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Novo cartafol\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome do cartafol\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Aquí non hai ficheiros\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Non se atopou ningún ficheiro que coincida co filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Non hai ficheiros coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Introduza un nome con polo menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas as caixas\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar a entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccionar a fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omitir %n ficheiro\", \"Omitir %n ficheiros\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este ficheiro\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar o nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Enviar algún contido ou sincronizalo cos seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, todos os ficheiros conflitivos dentro dela tamén serán sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e realízase unha resolución recursiva de conflitos.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Vde. está identificado actualmente como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Vde. non está identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Vde. non pode deixar o nome baleiro.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"É necesario escoller polo menos unha solución de conflito\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"É necesario seleccionar polo menos unha versión de cada ficheiro para continuar.\"] }] }, { \"language\": \"hr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"Znak „{char}” nije dopušten u nazivu mape.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"Znak „{char}” nije dopušten u nazivu.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nije dopušten u nazivu.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" je rezervirana riječ i nije dopušten u nazivu mape.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" je rezervirana riječ i nije dopušten.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"Sukobljava se %n datoteka\", \"Sukobljava se %n datoteke\", \"Sukobljava se %n datoteke\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n sukob datoteka u {dirname}\", \"%n sukoba datoteka u {dirname}\", \"%n sukoba datoteka u {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Sve datoteke\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Odustani\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Odustani od cijele operacije\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Odaberi\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Odaberi {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Odaberi %n datoteku\", \"Odaberi %n datoteka\", \"Odaberi %n datoteke\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdi\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Nastavi\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj u {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nije moguće stvoriti novu mapu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nije moguće učitati postavke datoteka\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nije moguće učitati prikaze datoteka\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Stvori mapu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Odabir trenutačnog prikaza\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Unesite vaše ime\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Postojeća verzija\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Neuspjelo postavljanje nadimka.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Ovdje se prikazuju datoteke i mape koje ste označili kao favoriti.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Ovdje se prikazuju datoteke i mape koje ste nedavno ažurirali.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtriranje liste datoteka\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nazivi mapa ne smiju završiti sa \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikacija gosta\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Naslovna\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ako odaberete obje verzije, dolaznoj datoteci bit će dodan broj u nazivu.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neispavan naziv mape.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neispravan naziv.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nepoznat datum zadnjeg ažuriranja\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ažurirano\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premjesti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premjesti u {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naziv\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nazivi mogu imati najviše 64 znaka.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nazivi ne smiju biti prazni.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nazivi ne smiju završiti sa \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nazivi ne smiju započinjati točkom.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova mapa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novi naziv mape\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova verzija\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ovdje nema datoteka\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nisu pronađene datoteke koje odgovaraju vašem filtru.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nema odgovarajućih datoteka.\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Unesite naziv s najmanje 2 znaka.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedavno\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označi sve potvrdne okvire\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Označi sve stavke\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi sve postojeće datoteke\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi sve nove datoteke\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Označi stavku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Označi red za{nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veličina\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Preskoči %n datoteku\", \"Preskoči %n datoteke\", \"Preskoči %n datoteke\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskoči ovu datoteku\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Pošalji naziv\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Poništi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Prenesite neki sadržaj ili sinkronizirajte sa svojim uređajima!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kada je odabrana dolazna mapa, sve datoteke unutar nje koje su u sukobu također će biti prepisane.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kada je odabrana dolazna mapa, sadržaj se upisuje u postojeću mapu i provodi se rekurzivno rješavanje sukoba.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Koje datoteke želite zadržati?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Trenutno ste identificirani kao {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Trenutno niste identificirani.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ne možete ostaviti naziv prazan.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Morate odabrati barem jedno rješenje sukoba\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Morate odabrati barem jednu verziju svake datoteke kako biste nastavili.\"] }] }, { \"language\": \"hu_HU\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"A(z) „{char}” nem engedélyezett egy mappanévben.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"A(z) „{char}” nem engedélyezett egy névben.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"A(z) „{extension}” nem engedélyezett név.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"A(z) „{segment}” foglalt név, és nem engedélyezett a mappanevekben.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"A(z) „{segment}” foglalt név, és nem engedélyezett.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ütköző fájl\", \"%n ütköző fájl\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ütköző fájl ebben: {dirname}\", \"%n ütköző fájl ebben: {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Összes fájl\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Egész művelet megszakítása\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Kiválasztás\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} kiválasztása\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n fájl kiválasztása\", \"%n fájl kiválasztása\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Megerősítés\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Folytatás\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Másolás\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Másolás ide: {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nem lehet létrehozni az új mappát\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nem lehet betölteni a fájlok beállításait\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nem lehet betölteni a fájlok nézeteit\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Mappa létrehozása\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Jelenlegi nézet választója\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Adja meg a nevét\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Meglévő verzió\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nem sikerült a becenév beállítása.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Kedvencek\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"A kedvencként megjelölt fájlok és mappák itt jelennek meg.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"A nemrég módosított fájlok és mappák itt jelennek meg.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fájllista szűrése\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"A mappanevek nem végződhetnek ezzel: „{extension}”.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Vendégazonosítás\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Kezdőlap\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ha mindkét verziót választja, akkor a bejövő fájl nevéhez egy szám lesz hozzáfűzve.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Érvénytelen mappanév.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Érvénytelen név.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Legutóbbi módosítás ideje ismeretlen\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Módosítva\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Áthelyezés\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Áthelyezés ide: {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Név\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"A nevek legfeljebb 64 karakter hosszúak lehetnek.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"A nevek nem lehetnek üresek.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"A nevek nem végződhetnek ezzel: „{extension}”.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"A nevek nem kezdődhetnek ponttal.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Új mappa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Új mappa neve\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Új verzió\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Itt nincsenek fájlok\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nincs a szűrési feltételeknek megfelelő fájl.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nincs ilyen fájl\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Legalább 2 karakteres nevet adjon meg.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Legutóbbi\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Összes jelölőmező bepipálása\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Összes bejegyzés kijelölése\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Összes meglévő fájl kijelölése\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Összes új fájl kijelölése\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Bejegyzés kijelölése\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Válasszon sort a következőnek: {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Méret\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n fájl kihagyása\", \"%n fájl kihagyása\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Fájl kihagyása\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Név beküldése\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Visszavonás\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Töltsön fel tartalmat, vagy szinkronizáljon az eszközeivel!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ha egy bejövő mappa van kijelölve, akkor a benne lévő ütköző fájlok is felül lesznek írva.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Amikor egy bejövő mappát kiválaszt, a benne lévő fájlok is felülíródnak.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ha egy bejövő mappa van kijelölve, akkor a tartalom a meglévő mappába lesz írva, és rekurzív ütközéskezelés lesz végezve.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mely fájlokat akarja megtartani?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Jelenleg ekként van azonosítva: {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Jelenleg nincs azonosítva.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"A nevet nem hagyhatja üresen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Legalább egy ütközéskezelési megoldást kell választania\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"A folytatáshoz az összes fájlnak legalább egy verzióját ki kell választania.\"] }] }, { \"language\": \"hy\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} սխալ թղթապանակի անվանում է\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} համարվում է անթույլատրելի թղթապանակի անվանում\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"/ չի թույլատրվում օգտագործել անվանման մեջ\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Բոլոր ֆայլերը\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Ընտրել\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Ընտրել {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Ընտրել %n ֆայլ\", \"Ընտրել %n ֆայլեր\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Պատճենել\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Պատճենել {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Չստացվեց ստեղծել նոր թղթապանակը\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Չստացվեց բեռնել ֆայլի կարգավորումները\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Չստացվեց բեռնել ֆայլերի դիտումները\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Ստեղծել դիրեկտորիա\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Ընթացիկ դիտման ընտրիչ\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Նախընտրելիներ\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք դուք նշել եք որպես նախընտրելիներ:\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք վերջերս փոխել եք:\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Ֆիլտրել ֆայլերի ցուցակը\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Թղթապանակի անունը չի կարող դատարկ լինել:\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Սկիզբ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Փոփոխված\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Տեղափոխել\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Տեղափոխել {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Անուն\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Նոր\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Նոր թղթապանակ\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Նոր թղթապանակի անվանում\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Այստեղ չկան ֆայլեր\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ձեր ֆիլտրին համապատասխանող ֆայլերը չեն գտնվել:\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Չկան համապատասխան ֆայլեր\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Վերջին\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Ընտրել բոլոր գրառումները\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Ընտրել բոլոր գրառումը\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Ընտրեք տողը {nodename}-ի համար \"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Չափ\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ետարկել\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ներբեռնեք որոշ բովանդակություն կամ համաժամացրեք այն ձեր սարքերի հետ:\"] }] }, { \"language\": \"id\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" tidak diizinkan di dalam nama folder.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" tidak diizinkan di dalam nama.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" bukan nama yang diizinkan.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" adalah nama yang dicadangkan dan tidak diizinkan untuk nama folder.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" adalah nama yang dicadangkan dan tidak diizinkan.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n konflik file\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konflik file di {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Semua berkas\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Batal\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Batalkan seluruh operasi\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pilih\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pilih {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pilih %n file\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Konfirmasi\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Salin\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Salin ke {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Tidak dapat membuat folder baru\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tidak dapat memuat pengaturan file\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tidak dapat memuat tampilan file\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Buat direktori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Pemilih tampilan saat ini\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Masukkan nama Anda\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Gagal menetapkan nama panggilan.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorit\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Berkas dan folder yang Anda tandai sebagai favorit akan muncul di sini.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Berkas dan folder yang Anda ubah baru-baru ini akan muncul di sini.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Saring daftar berkas\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nama folder tidak boleh diakhiri dengan \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikasi tamu\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Beranda\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, file yang masuk akan ditambahkan angka pada namanya.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nama folder tidak valid.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nama tidak valid.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal modifikasi terakhir tidak diketahui\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Diubah\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Pindahkan\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Pindahkan ke {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nama\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Panjang nama maksimal 64 karakter.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nama tidak boleh kosong.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nama tidak boleh diakhiri dengan \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nama tidak boleh diawali dengan titik.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Folder baru\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nama folder baru\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tidak ada berkas di sini\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Tidak ada berkas yang cocok dengan penyaringan Anda.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Tidak ada berkas yang cocok\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Silakan masukkan nama dengan minimal 2 karakter.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Terkini\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Pilih semua entri\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua file yang ada\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua file baru\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Pilih entri\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Pilih baris untuk {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Ukuran\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Lewati %n file\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Lewati file ini\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Kirim nama\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Tidak jadi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Unggah beberapa konten atau sinkronkan dengan perangkat Anda!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Saat folder yang masuk dipilih, semua file yang konflik di dalamnya juga akan ditimpa.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Saat folder yang masuk dipilih, konten ditulis ke dalam folder yang ada dan penyelesaian konflik rekursif dilakukan.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"File mana yang ingin Anda pertahankan?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Saat ini Anda teridentifikasi sebagai {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Saat ini Anda tidak teridentifikasi.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Anda tidak dapat membiarkan nama kosong.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Anda perlu memilih setidaknya satu solusi konflik\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda perlu memilih setidaknya satu versi dari setiap file untuk melanjutkan.\"] }] }, { \"language\": \"is\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" er ógilt möppuheiti.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" er ekki leyfilegt möppuheiti'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er er ekki leyfilegt innan í skráarheiti.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Allar skrár\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Veldu\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Veldu {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Veldu %n skrá\", \"Veldu %n skrár\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Afrita\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Afrita í {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Get ekki búið til nýju möppuna\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tókst ekki að hlaða inn stillingum skráa\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tókst ekki að hlaða inn sýnum skráa\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Búa til möppu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Núverandi val sýnar\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Eftirlæti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Skrár og möppur sem þú merkir sem eftirlæti birtast hér.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Skrár og möppur sem þú breyttir nýlega birtast hér.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Sía skráalista\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Möppuheiti má ekki vera tómt.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Heim\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Breytt\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Færa\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Færa í {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Heiti\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ný mappa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Heiti nýrrar möppu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Engar skrár hér\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Engar skrár fundust sem passa við síuna.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Engar samsvarandi skrár\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nýlegt\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Velja allar færslur\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Velja færslu\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Veldu röðina fyrir {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Stærð\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Afturkalla\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Sendu inn eitthvað efni eða samstilltu við tækin þín!\"] }] }, { \"language\": \"it\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`\"{char}\" non è consentito all'interno di un nome di cartella.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`\"{char}\" non è consentito all'interno di un nome.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" non è un nome consentito'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" è un nome riservato e non consentito per i nomi delle cartelle.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" è un nome riservato e non consentito.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n file in conflitto\", \"%n file in conflitto\", \"%n file in conflitto\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n file in conflitto in {dirname}\", \"%n file in conflitto in {dirname}\", \"%n file in conflitto in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tutti i file\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Scegli\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Scegli {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Scegli %n file\", \"Scegli %n file\", \"Scegli %n file\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Conferma\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copia\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copia in {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Impossibile creare la nuova cartella\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Impossibile caricare le impostazioni dei file\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Impossibile caricare le visualizzazioni dei file\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crea cartella\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selettore della vista attuale\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Inserisci il tuo nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Impossibile impostare lo pseudonimo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Preferiti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"I file e le cartelle contrassegnate come preferite saranno mostrate qui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"I file e le cartelle che hai modificato di recente saranno mostrate qui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtra l'elenco dei file\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['I nomi delle cartelle devono finire con \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificazione ospiti\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, al nome del file in arrivo verrà aggiunto un numero.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nome cartella non valido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome non valido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data di ultima modifica sconosciuta\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificato\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Sposta\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Sposta in {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"I nomi dovrebbero avere una lunghezza massima di 64 caratteri.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"I nomi non devono essere vuoti.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['I nomi devono finire con \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"I nomi non possono iniziare con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nuova cartella\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nome della nuova cartella\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nessun file qui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nessun file che corrisponde al tuo filtro è stato trovato.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nessun file corrispondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Digita un nome con almeno 2 caratteri.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Scegli tutte le voci\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleziona la voce\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleziona la riga per {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Dimensioni\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Salta %n file\", \"Salta %n file\", \"Salta %n file\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Salta questo file\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Invia nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Annulla\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Carica qualche contenuto o sincronizza con i tuoi dispositivi!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno saranno sovrascritti.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche i documenti all'interno verranno sovrascritti.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi conservare?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sei attualmente identificato come {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Attualmente non sei identificato.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Non puoi lasciare il nome vuoto.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Devi scegliere almeno una soluzione al conflitto\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Per continuare, è necessario selezionare almeno una versione di ciascun file.\"] }] }, { \"language\": \"ja_JP\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['フォルダー名に \"{char}\" を使用することはできません。'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['名前に \"{char}\" を使用することはできません。'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" は許可された名前ではありません。'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" は予約名のため、使用できません。'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" は予約名のため、使用できません。'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%nファイルが競合しています\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%nディレクトリ{dirname}内のファイル競合\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"すべてのファイル\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセル\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選択\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} を選択\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n 個のファイルを選択\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"確認\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"続行\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"コピー\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target} にコピー\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"新しいフォルダーを作成できませんでした\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"ファイル設定を読み込めませんでした\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"ファイルビューを読み込めませんでした\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ディレクトリを作成\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"現在のビュー選択\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"名前を入力してください\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"現行バージョン\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"ニックネームの設定に失敗しました。\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"お気に入り\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"お気に入りとしてマークしたファイルとフォルダーがここに表示されます。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"最近変更したファイルとフォルダーがここに表示されます。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"ファイルのリストをフィルター\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['フォルダー名の末尾に \"{extension}\" を使用できません。'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"ゲスト識別\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"ホーム\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイル名には番号が追加されます。\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"フォルダー名が無効です。\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"無効な名前です。\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"変更済み\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target} に移動\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名前\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"名前は最大64文字です。\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"名前は空にできません。\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['名前の末尾に \"{extension}\" を使用できません。'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"ドットで始まる名前は使用できません。\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新しいフォルダー\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新しいフォルダーの名前\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"新バージョン\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"ファイルがありません\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"フィルターに一致するファイルは見つかりませんでした。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"一致するファイルはありません\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"名前は2文字以上を入力してください。\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべてのチェックボックスを選択\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"すべてのエントリを選択\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"既存のファイルをすべて選択\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"エントリを選択\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} の行を選択\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"サイズ\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n 個のファイルをスキップ\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"このファイルをスキップ\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"名前を送信する\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"元に戻す\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"コンテンツをアップロードするか、デバイスと同期してください!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダーを選択すると、そのフォルダー内の競合ファイルも上書きされます。\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダを選択すると、その中のファイルも上書きされます。\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダーを選択すると、内容は既存のフォルダーに書き込まれ、再帰的な競合解決が実行されます。\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを残しますか?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"現在、{nickname}として識別されています。\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"現在あなたは識別されていません。\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"名前を空にすることはできません。\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"少なくとも1つの競合ソリューションを選択する必要があります\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルのバージョンを少なくとも1つ選択する必要があります。\"] }] }, { \"language\": \"ko\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"문자 '{char}'은(는) 폴더 이름에 사용할 수 없습니다.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"문자 '{char}'은(는) 이름에 사용할 수 없습니다.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"'{extension}'은(는) 사용 불가능한 이름입니다.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"'{segment}'은(는) 예약된 이름이므로 폴더 이름으로 사용할 수 없습니다.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"'{segment}'은(는) 예약된 이름이므로 사용할 수 없습니다.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n개의 파일이 충돌함\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname}에서 %n개의 파일이 충돌함\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"모든 파일\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업 취소\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"선택\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} 선택\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"파일 %n개 선택\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"확인\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"계속\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"복사\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target}(으)로 복사\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"새 폴더를 만들 수 없음\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"파일 설정을 불러오지 못함\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"파일 보기를 불러오지 못함\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"디렉토리 만들기\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"현재 보기 방식\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"이름을 입력하세요\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"기존 버전\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"닉네임을 설정하지 못했습니다.\\n \"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"즐겨찾기\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"즐겨찾기 한 파일 및 폴더가 이곳에 표시됩니다.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"최근 수정된 파일 및 폴더가 이곳에 표시됩니다.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"파일 목록 필터링\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"폴더 이름은 '{extension}'(으)로 끝날 수 없습니다.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"게스트 확인\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"홈\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"두 버전을 모두 선택할 경우 새로 추가되는 파일의 이름에 숫자가 붙게 됩니다.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"잘못된 폴더 이름입니다.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"잘못된 이름입니다. \"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정일 알 수 없음\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"수정됨\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"이동\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target}(으)로 이동\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"이름\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"이름은 최대 64글자까지 지정할 수 있습니다.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"이름은 비어 있을 수 없습니다.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"이름은 '{extension}'(으)로 끝날 수 없습니다.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"이름은 마침표로 시작될 수 없습니다.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"새 폴더\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"새 폴더명\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"새로운 버전\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"파일이 없습니다\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"선택된 필터에 해당하는 파일이 없습니다.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"해당하는 파일 없음\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"최소 두 글자 이상의 이름을 입력해주세요.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"최근\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"체크박스 모두 선택\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"모두 선택\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"기존 파일 모두 선택\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"새 파일 모두 선택\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"항목 선택\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename}의 행 선택\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"크기\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n개 파일 건너뛰기\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"이 파일 건너뛰기\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"이름 제출\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"되돌리기\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"기기에서 파일을 업로드 또는 동기화하세요!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"새 폴더를 선택할 경우, 해당 폴더 내의 충돌 파일들도 덮어쓰기 됩니다.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"새 폴더를 선택할 경우 내용물이 기존 폴더에 기록되며 재귀적 충돌 해결이 수행됩니다.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일들을 유지하시겠습니까?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"{nickname}(으)로 인증된 상태 입니다.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"현재 인증 정보가 없습니다.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"이름은 비워 둘 수 없습니다. \"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"최소한 하나의 충돌 해결 방안을 선택해야 합니다.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다.\"] }] }, { \"language\": \"lb\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} ass en ongëlteg Dossier\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} ass net en erlaabten Dossiernumm\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ass net an engem Dossier Numm erlaabt'] }, { \"msgid\": \"All files\", \"msgstr\": [\"All Dateien\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Wielt\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Wielt {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Wielt %n Fichieren\", \"Wielt %n Fichier\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopie\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopie op {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Konnt den neien Dossier net erstellen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Konnt d'Dateienastellungen net lueden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Konnt d'Dateien net lueden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Erstellt Verzeechnes\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuell Vue selector\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien an Ordner, déi Dir als Favorit markéiert, ginn hei gewisen\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien an Ordner déi Dir viru kuerzem geännert hutt ginn hei op\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter Datei Lëscht\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Dossier Numm kann net eidel sinn\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Wëllkomm\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geännert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Plënne\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Plënneren {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Numm\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nei\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neien dossier\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neien dossier numm\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Kee fichier hei\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Kee fichier deen äre filter passt gouf fonnt\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keng passende dateien\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Rezent\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Wielt all entréen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Wielt entrée\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Wielt d'zeil fir {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Gréisst\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Undoen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Luet en inhalt erop oder synchroniséiert mat ären apparater\"] }] }, { \"language\": \"lo\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ບໍ່ອະນຸຍາດໃຫ້ມີຢູ່ໃນຊື່ໂຟນເດີ.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"{char}\" ພາຍໃນຊື່.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ບໍ່ແມ່ນຊື່ທີ່ໄດ້ຮັບອະນຸຍາດ.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ເປັນຊື່ໂຟນເດີ.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ໄດ້ຮັບອະນຸຍາດ.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"ໄຟລ໌ຂັດກັນ %n ລາຍການ\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"ໄຟລ໌ຂັດກັນ %n ລາຍການໃນ {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"ໄຟລ໌ທັງໝົດ\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"ຍົກເລີກ\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"ຍົກເລີກການດຳເນີນການທັງໝົດ\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"ເລືອກ\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"ເລືອກ {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"ເລືອກ %n ໄຟລ໌\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"ຢືນຢັນ\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"ດຳເນີນການຕໍ່\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"ຄັດລອກ\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"ຄັດລອກໄປທີ່ {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"ບໍ່ສາມາດສ້າງໂຟນເດີໃໝ່ໄດ້\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"ບໍ່ສາມາດໂຫຼດການຕັ້ງຄ່າໄຟລ໌ໄດ້\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"ບໍ່ສາມາດໂຫຼດມຸມມອງໄຟລ໌ໄດ້\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ສ້າງໄດເຣັກທໍຣີ\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"ຕົວເລືອກມຸມມອງປັດຈຸບັນ\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"ປ້ອນຊື່ຂອງທ່ານ\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"ເວີຊັນທີ່ມີຢູ່\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"ຕັ້ງຊື່ຫຼິ້ນບໍ່ສຳເລັດ.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"ລາຍການທີ່ມັກ\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານໝາຍວ່າເປັນລາຍການທີ່ມັກຈະສະແດງຢູ່ບ່ອນນີ້.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານແກ້ໄຂລ່າສຸດຈະສະແດງຢູ່ບ່ອນນີ້.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"ກັ່ນຕອງລາຍການໄຟລ໌\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['ຊື່ໂຟນເດີຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"ການລະບຸຕົວຕົນຂອງແຂກ\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"ໜ້າຫຼັກ\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"ຖ້າທ່ານເລືອກທັງສອງເວີຊັນ, ໄຟລ໌ທີ່ເຂົ້າມາຈະມີຕົວເລກເພີ່ມໃສ່ຊື່ຂອງມັນ.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"ຊື່ໂຟນເດີບໍ່ຖືກຕ້ອງ.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"ຊື່ບໍ່ຖືກຕ້ອງ.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"ບໍ່ຮູ້ວັນທີແກ້ໄຂລ່າສຸດ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"ແກ້ໄຂເມື່ອ\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"ຍ້າຍ\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"ຍ້າຍໄປທີ່ {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"ຊື່\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"ຊື່ອາດມີຄວາມຍາວສູງສຸດ 64 ຕົວອັກສອນ.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"ຊື່ຕ້ອງບໍ່ຫວ່າງເປົ່າ.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['ຊື່ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"ຊື່ຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຈຸດ.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"ໃໝ່\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"ໂຟນເດີໃໝ່\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"ຊື່ໂຟນເດີໃໝ່\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"ເວີຊັນໃໝ່\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"ບໍ່ມີໄຟລ໌ຢູ່ບ່ອນນີ້\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"ບໍ່ພົບໄຟລ໌ທີ່ກົງກັບການກັ່ນຕອງຂອງທ່ານ.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"ບໍ່ມີໄຟລ໌ທີ່ກົງກັນ\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"ກະລຸນາປ້ອນຊື່ທີ່ມີຢ່າງໜ້ອຍ 2 ຕົວອັກສອນ.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"ລ່າສຸດ\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"ເລືອກກ່ອງໝາຍທັງໝົດ\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"ເລືອກທຸກລາຍການ\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"ເລືອກໄຟລ໌ທີ່ມີຢູ່ທັງໝົດ\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"ເລືອກລາຍການ\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"ເລືອກແຖວສຳລັບ {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"ຂະໜາດ\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"ຂ້າມ %n ໄຟລ໌\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"ຂ້າມໄຟລ໌ນີ້\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"ສົ່ງຊື່\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"ເອົາຄືນ\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"ອັບໂຫຼດເນື້ອຫາ ຫຼື ຊິງຄ໌ກັບອຸປະກອນຂອງທ່ານ!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ໄຟລ໌ໃດໆທີ່ຂັດກັນພາຍໃນໂຟນເດີນັ້ນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟນເດີທີ່ມີຢູ່ ແລະ ຈະມີການແກ້ໄຂຂໍ້ຂັດແຍ່ງແບບຕໍ່ເນື່ອງ.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"ຕອນນີ້ທ່ານຖືກລະບຸວ່າເປັນ {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"ຕອນນີ້ທ່ານຍັງບໍ່ໄດ້ຖືກລະບຸຕົວຕົນ.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"ທ່ານບໍ່ສາມາດປະຊື່ໃຫ້ຫວ່າງເປົ່າໄດ້.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກວິທີແກ້ໄຂຂໍ້ຂັດແຍ່ງຢ່າງໜ້ອຍໜຶ່ງຢ່າງ\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງເວີຊັນຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່.\"] }] }, { \"language\": \"lt_LT\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"„{char}“ negalima naudoti aplanko pavadinime.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ negalima naudoti vardo sudėtyje.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ nėra leidžiamas vardas.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ yra rezervuotas vardas, kurio negalima naudoti aplankų pavadinimuose.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ yra rezervuotas vardas, todėl jo naudoti negalima.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n failo konfliktas\", \"%n failų konfliktas\", \"%n failų konfliktas\", \"%n failų konfliktas\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n failo konfliktas {dirname}\", \"%n failų konfliktas {dirname}\", \"%n failų konfliktas {dirname}\", \"%n failų konfliktas {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Visi failai\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Atsisakyti\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Atsisakyti visos operacijos\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pasirinkti\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pasirinkti {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pasirinkti %n failą\", \"Pasirinkti %n failus\", \"Pasirinkti %n failų\", \"Pasirinkti %n failą\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Patvirtinti\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Tęsti\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopijuoti\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopijuoti į {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nepavyko sukurti naujo aplanko\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepavyko įkelti failų nustatymų\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepavyko įkelti failų peržiūrų\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Sukurti katalogą\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Dabartinis peržiūros pasirinkimas\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Įrašykite savo vardą\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Esama versija\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepavyko nustatyti slapyvardžio\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Populiariausi\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Failai ir aplankai, kuriuos pažymėsite kaip mėgstamiausius, bus rodomi čia.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Čia bus rodomi failai ir aplankai, kuriuos neseniai pakeitėte.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtruoti failų sąrašą\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Aplankų pavadinimai neturi baigtis simboliu „{extension}“.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Svečio identifikacija\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Pradžia\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jei pasirinksite abi versijas, prie gaunamo failo pavadinimo bus pridėtas numeris.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Netinkamas aplanko pavadinimas.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Netinkamas pavadinimas.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Paskutinio atnaujinimo data nežinoma\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Pakeista\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Perkelti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Perkelti į {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Vardas\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Vardų ilgis negali viršyti 64 simbolių.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Pavadinimai negali būti tušti.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Vardai neturi baigtis simboliu „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Vardai negali prasidėti tašku.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Naujas\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Naujas aplankas\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Naujas aplanko pavadinimas\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nauja versija\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Čia failų nėra\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nepavyko rasti failų pagal filtro nustatymus\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nėra atitinkančių failų\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Įrašykite vardą iš mažiausiai dviejų ženklų.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nauji\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pažymėti visus langelius\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Žymėti visus įrašus\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pažymėti visus esamus failus\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pažymėti visus naujus failus\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Žymėti įrašą\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Pasirinkite eilutę {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Dydis\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Praleisti %n failą\", \"Praleisti %n failus\", \"Praleisti %n failų\", \"Praleisti %n failą\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Praleisti šį failą\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Pateikti pavadinimą\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Atšaukti\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Įkelkite turinio arba sinchronizuokite su savo įrenginiais!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Pasirinkus įeinančių failų aplanką, jame esantys failai, su kuriais kyla konfliktas, taip pat bus perrašyti.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Pasirinkus gaunamų laiškų aplanką, visi jame esantys failai taip pat bus perrašyti.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Pasirinkus įeinančių failų aplanką, jo turinys įrašomas į esamą aplanką ir atliekamas rekursyvus konfliktų sprendimas.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Kokius failus norite išsaugoti?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Šiuo metu esate identifikuotas kaip {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Šiuo metu nesate identifikuotas.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Negalite palikti tuščio vardo lauko.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Turite pasirinkti bent vieną konflikto sprendimo būdą\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Norėdami tęsti, turite pasirinkti bent vieną kiekvieno failo versiją.\"] }] }, { \"language\": \"lv\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" nav derīgs mapes nosaukums.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nav atļauts mapes nosaukums'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" nav atļauts mapes nosaukuma izmantošanā.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Visas datnes\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izvēlieties\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izvēlieties {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izvēlēties %n datņu\", \"Izvēlēties %n datni\", \"Izvēlēties %n datnes\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopēt\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopēt uz {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nevarēja izveidot jaunu mapi\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nevarēja ielādēt datņu iestatījumus\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nevarēja ielādēt datņu apskatījumus\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Izveidot direktoriju\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Pašreizēja skata atlasītājs\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorīti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Šeit parādīsies datnes un mapes, kas tiks atzīmētas kā iecienītas.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Šeit parādīsies datnes un mapes, kuras nesen tika izmainītas.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Atlasīt datņu sarakstu\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mapes nosaukums nevar būt tukšs.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Sākums\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Izmaninīta\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Pārvietot\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Pārvietot uz {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nosaukums\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Jauns\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Jauna mape\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Jaunas mapes nosaukums\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Šeit nav datņu\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Netika atrasta neviena datne, kas atbilst atlasei.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nav atbilstošu datņu\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nesenās\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Atlasīt visus ierakstus\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Atlasīt ierakstu\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Atlasīt rindu {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Izmērs\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Atsaukt\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Augšupielādē kādu saturu vai sinhronizē savās iekārtās!\"] }] }, { \"language\": \"mk\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" не е дозволен во име на папка.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не е дозволено во име.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" не е дозволено име.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" е резервирано име и не е дозволено за име на папка.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" е резервирано име и не е дозволено.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n конфликт со датотекa\", \"%n конфликти со датотеки\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n конфликт со датотека во {dirname}\", \"%n конфликти со датотеки vo {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Сите датотеки\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Прекини ја целата операција\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Избери\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Избери {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Избери %n датотека\", \"Избери %n датотеки\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Потврди\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжи\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копирај\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копирај во {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Неможе да се креира нова папка\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Неможе да се вчиаат параметрите за датотеките\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Неможе да се вчитаат погледите за датотеките\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Креирај папка\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Избирач на тековен приказ\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Внесете го вашето име\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Моментална верзија\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Неуспешно поставување прекар.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Фаворити\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Датотеките и папките кој ќе ги означите за омилени ќе се појават овде.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Датотеките и папките кој неодамна сте ги измениле ќе се појават овде.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Филтрирај листа на датотеки\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Имињата на папките неможе да завршуваат со \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Гостинска идентификација\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Почетна\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако ги избереш двете верзии, влезната датотека ќе добие број додаден на нејзиното име.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Невалидно име на папка.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Невалидно име.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Датумот на последна измена е непознат\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Променето\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Премести\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Премести во {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Име\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Имињата можат да бидат најмногу со 64 карактери.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имињата неможе да бидат празни.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Имињата неможе да завршуваат со \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имињата неможе да започнуваат со точка.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Нова\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Нова папка\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ново име на папка\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Овде нема датотеки\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Не се пронајдени датотеки што одговараат на вашиот филтер.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нема датотеки што се совпаѓаат\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Внесете име со најмалку 2 карактери.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Неодамнешни\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Избери ги сите полиња за избор\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Изберете ги сите записи\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изберете ги сите постоечки датотеки\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изберете ги сите нови датотеки\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Избери запис\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Избери ред за {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Големина\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Прескокни %n датотека\", \"Прескокни %n датотеки\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескокни ја оваа датотека\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Испрати име\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Врати\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Прикачи содржина или синхронизирај со ваши уреди!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Кога е избрана влезна папка, сите конфликтни датотеки во неа исто така ќе бидат препишани.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Кога е избрана влезна папка, содржината се запишува во постоечката папка и се извршува рекурсивно решавање на конфликти.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Кој датотеки сакаш да ги зачуваш?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Моментално сте идентификувани како {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Моментално не сте идентификувани.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Не можете да го оставите името празно.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Треба да избереш најмалку едно решение за конфликт\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба да избереш најмалку една верзија за секоја датотека за да продолжи.\"] }] }, { \"language\": \"ms_MY\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" adalah nama folder yang tidak sesuai '] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nama folder yang tidak dibenarkan'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" tidak dibenarkan dalam nama folder'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Semua fail\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pilih\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pilih {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pilih fail %n\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"menyalin\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"menyalin ke {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Tidak dapat mewujudkan folder baharu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tidak dapat memuatkan tetapan fail\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tidak dapat memuatkan paparan fail\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"mewujudkan direktori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"pemilih pandangan semasa\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Pilihan\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Fail dan folder yang anda tanda sebagai pilihan akan dipaparkan di sini.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Fail dan folder yang anda telah ubah suai baru-baru ini dipaparkan di sini.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Menapis senarai fail\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Nama folder tidak boleh kosong.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Utama\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ubah suai\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"pindah\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"pindah ke {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nama\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Folder Baharu\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nama folder baharu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tiada fail di sini\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Tiada fail yang sepadan dengan tapisan anda.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Tiada fail yang sepadan\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"baru-baru ini\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Pilih semua entri\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Pilih entri\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"memilih baris {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Saiz\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"buat asal\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Muat naik beberapa kandungan atau selaras dengan peranti anda!\"] }] }, { \"language\": \"nb_NO\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" er ikke tillatt i et mappenavn.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" er ikke tillatt i et navn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" er ikke et tillatt navn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" er et reservert navn og er ikke tillatt for mappenavn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" er et reservert navn og er ikke tillatt.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n filkonflikt\", \"%n files conflict\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n fil konflikter i {dirname}\", \"%n fil konflikter i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hele operasjonen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Velg\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Velg {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Velg %n fil\", \"Velg %n filer\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bekreft\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsett\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopier til {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunne ikke opprette den nye mappen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kunne ikke laste filinnstillinger\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunne ikke laste filvisninger\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Opprett mappe\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Nåværende visningsvelger\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Skriv inn navnet ditt\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende versjon\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kunne ikke lagre kallenavnet.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer og mapper du markerer som favoritter vil vises her.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer og mapper du nylig har endret, vil vises her.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer filliste\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Mappenavn må ikke slutte med \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gjesteidentifikasjon\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hjem\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du velger begge versjonene, vil den innkommende filen få et nummer lagt til navnet sitt.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ugyldig mappenavn.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ugyldig navn.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Sist endret dato ukjent\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifisert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flytt\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flytt til {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Navn\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Navn kan maksimalt være 64 tegn lange.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Navn kan ikke være tomme.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Navn kan ikke ende med \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Navn kan ikke starte med et punktum.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mappe\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nytt mappenavn\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Ny versjon\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ingen filer her\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ingen filer funnet med ditt filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ingen filer samsvarer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Vennligst angi et navn som har minst 2 tegn.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nylige\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Merk av i alle avmerkingsboksene\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Velg alle oppføringer\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velg alle eksisterende filer\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velg alle nye filer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Velg oppføring\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Velg raden for {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Størrelse\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Hopp over %n fil\", \"Hopp over %nfiler\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hopp over denne filen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Bekreft navn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Angre\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Last opp innhold eller synkroniser med enhetene dine!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en innkommende mappe velges, vil eventuelle motstridende filer i den også bli overskrevet.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Når en innkommende mappe velges, vil eventuelle filer i den også bli overskrevet.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du beholde?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du er akkurat nå identifisert som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du er akkurat nå ikke identifisert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan ikke la navnet være blankt.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Du må velge minst én konfliktløsning\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du må velge minst én versjon av hver fil for å fortsette.\"] }] }, { \"language\": \"nl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" is niet toegestaan in een mapnaam.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" kan niet gebruikt worden in de benaming.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" is geen toegestane naam.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" is een gereserveerde naam en niet toegestaan in mapnamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" is een gereserveerde naam en niet toegestaan.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n bestanden conflicteren\", \"%nbestand bestanden conflicteren\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n bestand conflicteerd in {dirname}\", \"%nbestanden conflicteert in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle bestanden\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuleren\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuleer de hele bewerking\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Kiezen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Kies {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Kies %n bestand\", \"Kies %n bestanden\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bevestigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Doorgaan\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiëren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiëren naar {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kon de nieuwe map niet maken\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kon de bestandsinstellingen niet laden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kon de bestandsweergaves niet laden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Map aanmaken\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Huidige weergave keuze\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Voer je naam in\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Bestaande versie\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kon geen bijnaam instellen.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorieten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Bestanden en mappen die je als favoriet markeert, verschijnen hier.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Bestanden en mappen die je recentelijk hebt gewijzigd, verschijnen hier.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Bestandslijst filteren\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Mapnamen mogen niet eindigen op \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gastenidentificatie\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Thuis\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Als u beide versies selecteert wordt een nummer toegevoegd aan de naam van het binnenkomende bestand.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ongeldige mapnaam.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ongeldige naam.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Laatste wijzigingsdatum onbekend\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Gewijzigd\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verplaatsen\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Verplaatsen naar {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naam\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen mogen maximaal 64 tekens lang zijn.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen mogen niet leeg zijn.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen mogen niet eindigen met \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen mogen niet begonnen met een punt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nieuw\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nieuwe map\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nieuwe mapnaam\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nieuwe versie\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Geen bestanden hier\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Geen bestanden gevonden die voldoen aan je filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Geen overeenkomende bestanden\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Voer een naam in met minimaal 2 tekens.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recent\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecteer alle aanvinkopties\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle invoer selecteren\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecteer alle bestaande bestanden\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecteer alle nieuwe bestanden\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Invoer selecteren\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecteer de rij voor {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Grootte\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Sla %n bestand over\", \"Sla %n bestanden over\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Sla dit bestand over\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Naam indienen\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ongedaan maken\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload inhoud of synchroniseer met je apparaten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Als een inkomende map wordt geselecteerd, worden alle conflicterende bestanden daarin overschreven.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Wanneer een inkomende folder is geselecteerd, worden bestanden in deze folder ook overschreven.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Als een inkomende map wordt geselecteerd, wordt de inhoud naar de bestaande map geschreven en wordt een recursieve conflict-oplossing uitgevoerd.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welke bestanden wilt u bewaren?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Je wordt momenteel geïdentificeerd als {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Je bent momenteel niet geïdentificeerd.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Je kunt de naam niet leeg laten.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"U moet in elk geval een conflictoplossing kiezen\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"U moet minstens een versie van elk bestand kiezen om door te gaan. \"] }] }, { \"language\": \"pl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['Znak \"{char}\" nie jest dozwolony w nazwie folderu.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nie jest dozwolone w nazwie.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nie jest dozwoloną nazwą.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" jest nazwą zastrzeżoną i nie jest dozwolona jako nazwa folderu.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" jest zastrzeżoną nazwą i nie jest dozwolone.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"Konflikt pliku\", \"Konflikt %n plików\", \"Konflikt %n plików\", \"Konflikt %n plików\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konfliktów pliku w {dirname}\", \"%n konfliktów plików w {dirname}\", \"%n konfliktów plików w {dirname}\", \"%n konfliktów plików w {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Wszystkie pliki\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Wybierz\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Wybierz {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Wybierz %n plik\", \"Wybierz %n pliki\", \"Wybierz %n plików\", \"Wybierz %n plików\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potwierdź\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiuj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Skopiuj do {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nie można utworzyć nowego folderu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nie można wczytać ustawień plików\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nie można wczytać widoków plików\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Utwórz katalog\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Bieżący selektor widoku\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Wprowadź nazwę\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nie udało się utworzyć pseudonimu.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Ulubione\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Pliki i foldery które oznaczysz jako ulubione będą wyświetlały się tutaj\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Pliki i foldery które ostatnio modyfikowałeś będą wyświetlały się tutaj\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtruj listę plików\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nazwy folderów nie mogą kończyć się na \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identyfikacja gościa\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Strona główna\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy przychodzącego pliku zostanie dodany numer.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nieprawidłowa nazwa folderu.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nieprawidłowa nazwa.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data ostatniej modyfikacji nieznana\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Zmodyfikowano\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Przenieś\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Przejdź do {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nazwa\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nazwy mogą mieć maksymalnie 64 znaki.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nazwy nie mogą być puste.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nazwy nie mogą kończyć się na \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nazwy nie mogą zaczynać się od kropki.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nowy folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nowa nazwa folderu\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Brak plików\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nie znaleziono plików spełniających warunki filtru\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Brak pasujących plików\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Wprowadź nazwę zawierającą minimum 2 znaki.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Ostatni\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Wybierz wszystkie wpisy\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Wybierz wpis\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Wybierz wiersz dla {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Rozmiar\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Pomiń %n plik\", \"Pomiń %n plików\", \"Pomiń %n plików\", \"Pomiń %n plików\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Pomiń ten plik\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Zatwierdź nazwę\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Cofnij\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Wyślij zawartość lub zsynchronizuj ze swoimi urządzeniami!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu przychodzącego folderu wszystkie konfliktujące pliki w jego obrębie również zostaną nadpisane.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu przychodzącego folderu jego zawartość zostanie zapisana w istniejącym folderze i zostanie przeprowadzone rekursywne rozwiązywanie konfliktów.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Obecnie jesteś zidentyfikowany jako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Użytkownik nie został uwierzytelniony.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nazwa nie może być pusta.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Musisz wybrać co najmniej jedno rozwiązanie konfliktu\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] }] }, { \"language\": \"pt_BR\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome de pasta.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" não é um nome permitido.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" é um nome reservado e não permitido para nomes de pasta.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" é um nome reservado e não permitido.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n arquivo conflita\", \"%n de arquivos conflitam\", \"%n arquivos conflitam\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n conflito de arquivo em {dirname}\", \"%n de conflitos de arquivos em {dirname}\", \"%n conflitos de arquivos em {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os arquivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operação\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escolher\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escolher {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escolher %n arquivo\", \"Escolher %n arquivos\", \"Escolher %n arquivos\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar para {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Não foi possível criar a nova pasta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Não foi possível carregar configurações de arquivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Não foi possível carregar visualições de arquivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Criar diretório\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Seletor de visualização atual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Digite seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Falha ao definir apelido.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os arquivos e pastas que você marca como favoritos aparecerão aqui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Arquivos e pastas que você modificou recentemente aparecerão aqui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de arquivos\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nomes de pasta não podem terminar com \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificação de convidados\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Início\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, um número será adicionado ao nome do arquivo recebido.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nome de pasta inválido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome inválido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover para {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes podem ter no máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nomes não podem estar vazios.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nomes não podem terminar com \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nomes não podem começar com um ponto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova pasta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome de pasta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nenhum arquivo aqui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenhum arquivo correspondente ao seu filtro foi encontrado.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nenhum arquivo correspondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Digite um nome com pelo menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecione todas as caixas de seleção\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os arquivos existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos arquivos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecionar a linha para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamanho\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorar %n arquivo\", \"Ignorar %n de arquivos\", \"Ignorar %n arquivos\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este arquivo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfazer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Faça upload de algum conteúdo ou sincronize com seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta de entrada, quaisquer arquivos conflitantes dentro dela também serão sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Quando uma pasta de entrada for selecionada, todos os arquivos nela contidos também serão substituídos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução recursiva de conflitos é realizada.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Você está atualmente identificado como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"No momento, você não está identificado.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Você não pode deixar o nome vazio.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Você precisa escolher pelo menos uma solução para o conflito\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] }] }, { \"language\": \"pt_PT\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome de pasta.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" não é um nome permitido.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" é um nome reservado e não é permitido para nomes de pasta.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" é um nome reservado e não é permitido.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ficheiro em conflito\", \"%n ficheiros em conflito\", \"%n ficheiros em conflito\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ficheiro em conflito em {dirname}\", \"%n ficheiros em conflito em {dirname}\", \"%n ficheiros em conflito em {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os ficheiros\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operação\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escolher\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escolher {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escolha %n ficheiro\", \"Escolha %n ficheiros\", \"Escolha %n ficheiros\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar para {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Não foi possível criar a nova pasta \"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Não foi possível carregar as definições dos ficheiros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Não foi possível carregar as visualizações dos ficheiros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Criar pasta\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Seletor de visualização atual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Introduza o seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Falha ao definir o nome alternativo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os ficheiros e as pastas que marcar como favoritos aparecerão aqui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Os ficheiros e as pastas que modificou recentemente aparecerão aqui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de ficheiros\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nomes de pasta não podem terminar em \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificação de convidado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Início\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, um número será adicionado ao nome do ficheiro recebido.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nome de pasta inválido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome inválido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover para {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes podem ter no máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"O nome não pode ficar em branco.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nomes não podem terminar em \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Os nomes não podem começar por um ponto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova pasta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome da pasta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Sem ficheiros aqui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Não foi encontrado nenhum ficheiro correspondente ao seu filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nenhum ficheiro correspondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Introduza um nome com, pelo menos, 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recentes\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecione todas as caixas de seleção\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os ficheiros existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos ficheiros\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecione a linha para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamanho\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorar %n ficheiro\", \"Ignorar %n ficheiros\", \"Ignorar %n ficheiros\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este ficheiro\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Submeter nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Anular\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Envie algum conteúdo ou sincronize com os seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta de entrada, quaisquer ficheiros conflituantes dentro da mesma serão também sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta de entrada, todos os ficheiros nela contidos serão também sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e é realizada uma resolução recursiva de conflitos.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais os ficheiros que deseja manter?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Atualmente está identificado como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Atualmente, não está identificado.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Não pode deixar o nome em branco.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"É preciso escolher pelo menos uma solução para o conflito.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"É necessário selecionar pelo menos uma versão de cada ficheiro para continuar.\"] }] }, { \"language\": \"ro\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" este un nume de director invalid.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nu este un nume de director permis'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" nu este permis în numele unui director.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Toate fișierele\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Alege\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Alege {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Alege %n fișier\", \"Alege %n fișiere\", \"Alege %n fișiere\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiază\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiază în {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nu s-a putut crea noul director\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nu s-au putut încărca setările fișierelor\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nu s-au putut încărca vizualizările fișierelor\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Creează director\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selectorul curent al vizualizării\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorite\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Fișiere și directoare pe care le marcați ca favorite vor apărea aici.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Fișiere și directoare pe care le-ați modificat recent vor apărea aici.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrează lista de fișiere\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Numele de director nu poate fi necompletat.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Acasă\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificat\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mută\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mută către {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nume\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nou\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Director nou\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Numele noului director\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nu există fișiere\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nu există fișiere potrivite pentru filtrul selectat\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nu există fișiere potrivite\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selectează toate înregistrările\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selectează înregistrarea\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selectează rândul pentru {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Mărime\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Anulează\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Încărcați conținut sau sincronizați cu dispozitivele dumneavoastră!\"] }] }, { \"language\": \"ru\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" не допускается в названии папки.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не допускается внутри имени.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" — недопустимое имя.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" — зарезервированное имя, недопустимое для имени папки.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" — зарезервированное и недопустимое имя.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n конфликт файла\", \"%n конфликта файлов\", \"%n конфликтов файлов\", \"%n конфликтов файлов\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n конфликт файлов в {dirname}\", \"%n конфликта файлов в {dirname}\", \"%n конфликтов файлов в {dirname}\", \"%n конфликтов файлов в {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Все файлы\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Отмена\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отменить всю операцию\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Выбрать\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Выбрать «{file}»\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Выбрать %n файл\", \"Выбрать %n файла\", \"Выбрать %n файлов\", \"Выбрать %n файлов\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Подтвердить\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжить\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копировать\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копировать в «{target}»\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Не удалось создать новую папку\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не удалось загрузить настройки файлов\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не удалось загрузить конфигурацию просмотра файлов\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Создать папку\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Переключатель текущего вида\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Введите ваше имя\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Текущая версия\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Не удалось задать никнейм.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Избранное\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Здесь будут отображаться файлы и папки, которые вы пометили как избранные.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Здесь будут отображаться файлы и папки, которые вы недавно изменили.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фильтровать список файлов\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Имена папок не могут оканчиваться на \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Гостевая идентификация\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Домой\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Если вы выберете обе версии, к имени входящего файла будет добавлен номер.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Недопустимое имя папки.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Недопустимое имя.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата последнего изменения неизвестна\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Изменен\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Переместить\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Переместить в «{target}»\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Имя\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Имена не могут быть длиннее 64 символов.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имена не могут быть пустыми.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Имена не могут оканчиваться на \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имена не должны начинаться с точки.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Новая папка\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Имя новой папки\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Новая версия\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Здесь нет файлов\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Файлы, соответствующие вашему фильтру, не найдены.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нет подходящих файлов\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Введите имя длиной не менее 2 символов.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Недавний\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Выбрать все флажки\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Выбрать все записи\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Выбрать все существующие файлы\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Выбрать все новые файлы\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Выбрать запись\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Выбрать строку для «{nodename}»\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Размер\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Пропустить %n файл\", \"Пропустить %n файла\", \"Пропустить %n файлов\", \"Пропустить %n файлов\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустить файл\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Отправить имя\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Отменить\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Загрузите контент или синхронизируйте его со своими устройствами!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Когда выбрана входящая папка, все файлы в ней также будут перезаписаны.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Какие файлы вы хотите сохранить?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Вы идентифицированы как {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"В данный момент вы не идентифицированы.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Вы не можете оставить имя пустым.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Вам нужно выбрать хотя бы одно решение конфликта\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продолжения вам нужно выбрать хотя бы одну версию каждого файла.\"] }] }, { \"language\": \"sk_SK\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" nie je povolené v názve priečinka.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nie je povolené v rámci mena.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nie je povolený názov.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ je rezervované meno a nie je povolené na názvy priečinkov.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" je rezervované meno a nie je povolené.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n konflikt súborov\", \"%n konflikty súborov\", \"%n konfliktov súborov\", \"%n konflikty súborov\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konflikt súborov v {dirname}\", \"%n konflikty súborov v {dirname}\", \"%n konfliktov súborov v {dirname}\", \"%n konfliktov súborov v {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Všetky súbory\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušiť\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušiť celú operáciu\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Vybrať\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vybrať {súbor}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vybraný %n súbor\", \"Vybrané %n súbory\", \"Vybraných %n súborov\", \"Vybraných %n súborov\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdiť\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovať\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopírovať\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopírovať do {umiestnenia}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nepodarilo sa vytvoriť nový priečinok\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepodarilo sa načítať nastavenia súborov\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepodarilo sa načítať pohľady súborov\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Vytvoriť adresár\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Výber aktuálneho zobrazenia\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Zadajte svoje meno\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existujúca verzia\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepodarilo sa nastaviť prezývku.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Obľúbené\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tu sa zobrazia súbory a priečinky, ktoré označíte ako obľúbené.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Tu sa zobrazia súbory a priečinky, ktoré ste nedávno upravili.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrovať zoznam súborov\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Názvy priečinkov nesmú končiť na \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikácia hosťa\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domov\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ak vyberiete obe verzie, prichádzajúci súbor bude mať k svojmu názvu pridané číslo.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neplatný názov priečinka.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neplatné meno.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Posledná zmena dátumu neznáma\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Upravené\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Prejsť\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Prejsť na {umiestnenie}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Názov\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Mená môžu mať maximálne 64 znakov.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Mená nesmú byť prázdne.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Mená nesmú končiť \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Mená nesmú začínať bodkou.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Pridať\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Pridať priečinok\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Pridať názov priečinka\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nová verzia\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nie sú tu žiadne súbory\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenašli sa žiadne súbory zodpovedajúce vášmu filtru.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Žiadne zodpovedajúce súbory\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Zadajte meno s aspoň 2 znakmi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedávne\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vyberte všetky zaškrtávacie políčka\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vybrať všetky položky\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrať všetky existujúce súbory\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrať všetky nové súbory\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vybrať položku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vyberte riadok pre {názov uzla}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veľkosť\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Preskočiť %n súbor\", \"Preskočiť %n súbory\", \"Preskočiť %n súborov\", \"Preskočiť %n súbory\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskočiť tento súbor\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Zadať meno\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Späť\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Nahrajte nejaký obsah alebo synchronizujte so svojimi zariadeniami!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Keď je vybraná prichádzajúca složka, všetky konfliktné súbory v nej budú taktiež prepísané.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Keď je vybraná prichádzajúca zložka, obsah sa zapíše do existujúcej zložky a vykoná sa rekurzívne riešenie konfliktov.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ktoré súbory chcete zachovať?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Momentálne ste identifikovaný ako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Momentálne nie ste identifikovaný.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nemôžete nechať meno prázdne.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Musíte si vybrať aspoň jedno riešenie konfliktu.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Musíte vybrať aspoň jednu verziu každého súboru, aby ste mohli pokračovať.\"] }] }, { \"language\": \"sl\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} je neveljavno ime mape.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} ni dovoljeno ime mape\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ni dovoljen v imenu mape.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Vse datoteke\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izberi\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izberi {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izberi %n datoteko\", \"Izberi %n datoteki\", \"Izberi %n datotek\", \"Izberi %n datotek\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj v {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nisem mogel ustvariti nove mape\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"NIsem mogel naložiti nastavitev datotek\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nisem mogel naložiti pogledov datotek\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Ustvari mapo\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Izbirnik trenutnega pogleda\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Priljubljene\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Datoteke in mape ki jih označite kot priljubljene se bodo prikazale tukaj.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Daoteke in mape ki ste jih pred kratkim spremenili se bodo prikazale tukaj.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtriraj seznam datotek\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Ime mape ne more biti prazno\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domov\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Spremenjeno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premakni\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premakni v {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ime\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova mapa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo ime mape\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tukaj ni datotek\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ni bilo najdenih ujemajočih datotek glede na vaš filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ni ujemajočih datotek\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedavne\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Izberi vse vnose\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Izberi vnos\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Izberi vrstico za {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Velikost\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Razveljavi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Naloži nekaj vsebine ali sinhroniziraj s svojimi napravami!\"] }] }, { \"language\": \"sr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}” није дозвољено унутар имена.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}” није дозвољено име.\"] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” није исправно име фолдера.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” није дозвољено име за фолдер.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}” је резервисано име и није дозвољено.\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” није дозвољено унутар имена фолдера.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Сви фајлови\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Изаберите\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Изаберите {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Изаберите %n фајл\", \"Изаберите %n фајла\", \"Изаберите %n фајлова\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копирај\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копирај у {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Није могао да се креира нови фолдер\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не могу да се учитају подешавања фајлова\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не могу да се учитају прикази фајлова\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Креирај директоријум\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Бирач тренутног приказа\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Унесите своје име\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Није успело постављање надимка.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Омиљено\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Овде ће се појавити фајлови и фолдери које сте означили као омиљене.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Овде ће се појавити фајлови и фолдери који се се недавно изменили.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фитрирање листе фајлова\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Име фолдера не може бити празно.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Идентификација госта\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Почетак\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Неисправно име.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Измењено\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Премести\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Премести у {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Име\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Највећа дужина имена може бити 64 карактера.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имена не смеју да буду празна.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Имена не смеју да се завршавају на „{extension}”.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имена не смеју да почињу тачком.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Нови фолдер\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Име новог фолдера\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Овде нема фајлова\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Није пронађен ниједан фајл који задовољава ваш филтер.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нема таквих фајлова\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Молимо вас да унесете име од барем два карактера.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Скорашње\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Изаберите све ставке\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Изаберите ставку\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Изаберите ред за {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Величина\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Предај име\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Поништи\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Отпремите нешто или синхронизујте са својим уређајима!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Тренутно се идентификујете као {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Тренутно немате идентификацију.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Име не можете да оставите празно.\"] }] }, { \"language\": \"sr@latin\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” je neispravan naziv foldera.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” je nedozvoljen naziv foldera.\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” se ne može koristiti unutar naziva foldera.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Svi fajlovi\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izaberite\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izaberite {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izaberite %n fajl\", \"Izaberite %n fajla\", \"Izaberite %n fajlova\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj u {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Neuspešno kreiranje novog foldera\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Neuspešno učitavanje podešavanja fajlova\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Neuspešno učitavanje prikaza fajlova\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Kreiraj direktorijum\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Birač trenutnog prikaza\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Omiljeno\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Lista omiljenih fajlova i foldera.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Lista fajlova i foldera sa skorašnjim izmenama.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fitriranje liste fajlova\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Naziv foldera ne može biti prazan.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Početak\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Izmenjeno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premesti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premesti u {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naziv\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Novi folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Naziv novog foldera\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Bez fajlova\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nema fajlova koji zadovoljavaju uslove filtera.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nema takvih fajlova\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Skorašnje\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Izaberite sve stavke\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Izaberite stavku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Izaberite red za {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veličina\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Vrati\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Otpremite sadržaj ili sinhronizujte sa svojim uređajima!\"] }] }, { \"language\": \"sv\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" är inte tillåtet i ett mappnamn.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" är inte tillåtet i ett namn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" är inte ett tillåtet namn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" är ett reserverat namn och inte tillåtet mappnamn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" är ett reserverat namn och inte tillåtet.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fil är i konflikt\", \"%n filer är i konflikt\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n fil är i konflikt i {dirname}\", \"%n filer är i konflikt i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alla filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Välj\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Välj {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Välj %n fil\", \"Välj %n filer\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bekräfta\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiera\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiera till {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunde inte skapa den nya mappen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kunde inte ladda filinställningar\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunde inte ladda filvyer\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Skapa katalog\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuell vyväljare\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ange ditt namn\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kunde inte ställa in smeknamn.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer och mappar som du markerar som favorit kommer att visas här.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer och mappar som du nyligen ändrat kommer att visas här.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrera fillistan\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Mappnamn får inte sluta med \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gästidentifiering\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hem\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att få ett nummer tillagt i sitt namn.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ogiltigt mappnamn.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ogiltigt namn.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ändrad\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flytta\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flytta till {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Namn\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namnen kan vara högst 64 tecken långa.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namn får inte vara tomt.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namn får inte sluta med \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namn får inte börja med en punkt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mapp\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nytt mappnamn\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Inga filer här\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Inga filer som matchar ditt filter hittades.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Inga matchande filer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Ange ett namn med minst 2 tecken.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nyligen\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Välj alla poster\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Välj post\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Välj raden för {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Storlek\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Hoppa över %n fil\", \"Hoppa över %n filer\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hoppa över den här filen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Skicka namn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ångra\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ladda upp lite innehåll eller synkronisera med dina enheter!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs kommer eventuella konflikterande filer i den också att skrivas över.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs kommer även filer i den att skrivas över.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du är för närvarande identifierad som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du är för närvarande inte identifierad.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan inte lämna namnet tomt.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Du måste välja minst en konfliktlösning\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] }] }, { \"language\": \"tr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" karakteri bir klasör adında kullanılamaz.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['Bir ad içinde \"{char}\" karakteri kullanılamaz.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" adına izin verilmiyor.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" adı sistem için ayrılmış olduğundan klasör adlarında kullanılamaz.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" adı sistem için ayrılmış olduğundan kullanılamaz.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n dosya çakışıyor\", \"%n dosya çakışıyor\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} içindeki %n dosya çakışıyor\", \"{dirname} içindeki %n dosya çakışıyor\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tüm dosyalar\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seçin\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} seçin\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n dosya seçin\", \"%n dosya seçin\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Onayla\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopyala\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target} üzerine kopyala\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Yeni klasör oluşturulamadı\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dosyalar uygulamasının ayarları yüklenemedi\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dosyalar uygulamasının görünümleri yüklenemedi\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Klasör oluştur\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Geçerli görünüm seçici\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Adınızı yazın\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Takma ad ayarlanamadı.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Sık kullanılanlar\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Sık kullanılan olarak seçtiğiniz dosyalar burada görüntülenir.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Son zamanlarda değiştirdiğiniz dosya ve klasörler burada görüntülenir.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dosya listesini süz\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Klasör adları \"{extension}\" ile bitemez.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Konuk kimliği\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Giriş\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Klasör adı geçersiz.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ad geçersiz.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Değiştirilme\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Taşı\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target} üzerine taşı\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ad\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Adlar en fazla 64 karakter uzunluğunda olabilir.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ad boş olamaz.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ad \"{extension}\" ile bitemez.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ad nokta karakteri ile başlayamaz.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Yeni klasör\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Yeni klasör adı\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Burada herhangi bir dosya yok\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Süzgece uyan bir dosya bulunamadı.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Eşleşen bir dosya yok\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Ad en az 2 karakter uzunluğunda olmalıdır.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Son kullanılanlar\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Tüm kayıtları seç\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Kaydı seç\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} satırını seçin\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Boyut\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n dosyayı atla\", \"%n dosyayı atla\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bu dosyayı atla\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Adı gönder\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Geri al\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Bazı içerikler yükleyin ya da aygıtlarınızla eşitleyin!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki dosyaların da üzerine yazılır.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içerik var olan klasöre yazılır ve alt klasörlerle bir çakışma çözümü uygulanır.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"{nickname} olarak tanınıyorsunuz.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Henüz kendinizi tanıtmadınız.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ad boş bırakılamaz.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"En az bir çakışma çözümü seçmelisiniz\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosaynın en az bir sürümünü seçmelisiniz.\"] }] }, { \"language\": \"uk\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"{char} не дозволено всередині назви каталогу.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не дозволено всередині імени.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [`\"{extension}\" недозволене ім'я.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"{segment} є зарезервованим ім'ям і не дозволено для назви каталогу.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [`\"{segment}\" зарезервоване ім'я і не дозволено для використання.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n конфлікт файлів\", \"%n конфлікти файлів\", \"%n конфліктів файлів\", \"%n конфліктів файлів\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n конфлікт файлів у каталозі {dirname}\", \"%n конфлікти файлів у каталозі {dirname}\", \"%n конфліктів файлів у каталозі {dirname}\", \"%n конфліктів файлів у каталозі {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Всі файли\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати всю операцію\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Вибрати\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Вибрати {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Вибрати %n файл\", \"Вибрати %n файли\", \"Вибрати %n файлів\", \"Вибрати %n файлів\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Підтвердити\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копіювати\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копіювати до {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Не вдалося створити новий каталог\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не вдалося завантажити налаштування файлів\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не вдалося завантажити подання файлів\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Створити каталог\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Вибір подання\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Зазначте ваше ім'я\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Наявна версія\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Не вдалося встановити псевдо.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Із зірочкою\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Тут показуватимуться файли та каталоги, які ви позначите зірочкою.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Тут показуватимуться файли та каталоги, які було нещодавно змінено.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фільтрувати список файлів\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [`Ім'я каталогу не може закінчуватися на \"{extension}\".`] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Ім'я для гостя\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Домівка\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо вибрати обидві версії, до назви вхідного файлу буде додано цифру. \"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Недійсне ім'я каталогу.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Недійсне ім'я.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Змінено\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Перемістити\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Перемістити до {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ім'я\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Імена мають мати довжину не більше 64 символів.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ім'я не може бути порожнє.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [`Ім'я не може закінчуватися на \"{extension}\".`] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ім'я не може починатися з крапки.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Новий\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Новий каталог\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ім'я нового каталогу\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Тут відсутні файли\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Відсутні збіги за фільтром.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Відсутні збіги файлів.\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Зазначте ім'я довжиною не менше 2 символів\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Останні\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати всі прапорці\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Вибрати всі записи\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати всі наявні файли\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати всі нові файли\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Вибрати запис\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Вибрати рядок для {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Розмір\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Пропустити %n файл\", \"Пропустити %n файли\", \"Пропустити %n файлів\", \"Пропустити %n файлів\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустити цей файл\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Встановити ім'я\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Повернути\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Завантажте вміст або синхронізуйте з вашим пристроєм!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Коли вибрано вхідний каталог, будь-які файли з конфліктами буде також перезаписано.\"] }, { \"msgid\": \"When an incoming folder is selected, any files within it will also be overwritten.\", \"msgstr\": [\"Якщо буде вибрано вхідний каталог, будь-який файл в ньому буде також перезаписано.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Коли вибрано вхідний каталог, вміст буде записано до існуючого каталогу, а також виконано вирішення конфліктів всередині каталогу.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Вас визначено як {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Вас не ідентифіковано.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Потрібно зазначити ім'я.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Треб вибрати щонайменше одне розв'язання конфлікту\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба вибрати щонайменше одну версію кожного файлу, щоби продовжити.\"] }] }, { \"language\": \"uz\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['Papka nomi ichida \"{char}\" ga ruxsat berilmaydi.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['Nom ichida \"{char}\" ga ruxsat berilmagan.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ruxsat etilgan nom emas.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [`\"{segment}\" ajratilgan nom bo'lib, papka nomlari uchun ruxsat berilmagan.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" - zaxiralangan nom va ruxsat berilmaydi.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fayl ziddiyatli\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} da %n fayl ziddiyati\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Barcha fayllar\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Bekor qilish\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Butun operatsiyani bekor qiling\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tanlang\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Tanlang {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Tanlang %n faylni\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Tasdiqlang\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Davom eting\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Nusxa\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\" {target} ga nusxa\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Yangi jild yaratib bo‘lmadi\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Fayl sozlamalari yuklanmadi\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Fayllarni koʻrishni yuklab boʻlmadi\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Katalog yaratish\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Joriy ko'rinish selektori\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ismingizni kiriting\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Mavjud versiya\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Taxallusni o‘rnatib bo‘lmadi.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Tanlanganlar\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tanlangan deb belgilagan fayl va papkalar shu yerda koʻrinadi.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Siz yaqinda oʻzgartirgan fayl va papkalar shu yerda koʻrinadi.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fayl ro'yxatini filtrlash\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Papka nomlari \"{extension}\" bilan tugamasligi kerak.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Foydalanuvchini identifikatsiyalash\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Uy\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Jild nomi noto'g'ri.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nomi noto‘g‘ri.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Oxirgi tahrirlangan sana noma'lum\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifikatsiyalangan\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Ko'chirish\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\" {target} ga ko'chirish\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nomi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Ismlar ko'pi bilan 64 ta belgidan iborat bo'lishi mumkin.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ismlar bo'sh bo'lmasligi kerak.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ismlar \"{extension}\" bilan tugamasligi kerak.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ismlar nuqta bilan boshlanmasligi kerak.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Yangi\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Yangi jild\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Yangi jild nomi\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Yangi versiya\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Fayl mavjud emas\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Filtringizga mos keladigan fayl topilmadi.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Mos fayllar yo'q\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kamida 2 ta belgidan iborat nom kiriting.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Yaqinda\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Barcha katakchalarni belgilang\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Barcha yozuvlarni tanlang\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Barcha mavjud fayllarni tanlang\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Barcha yangi fayllarni tanlang\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Yozuvni tanlang\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} uchun qatorni tanlang\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"O`lcham\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n faylni oʻtkazib yuborish\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ushbu faylni o'tkazib yuboring\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Ismni tasdiqlang\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Bekor qilish\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Qurilmangizga ba'zi kontentni yuklang yoki sinxronlang!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kiruvchi papka tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kiruvchi papka tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Qaysi fayllarni saqlamoqchisiz?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Siz hozirda {nickname} sifatida aniqlangansiz.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Siz hozirda identifikatsiyadan o'tmagansiz\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ism katagini bo'sh qoldirib bo'lmaydi.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Siz kamida bitta mojaro yechimini tanlashingiz kerak\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak.\"] }] }, { \"language\": \"vi\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" là tên thư mục không hợp lệ.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"1{name}\"không phải là tên thư mục được cho phép'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\"không được phép đặt trong tên thư mục.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tất cả tệp\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Chọn\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Chọn {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Chọn %n tệp\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Sao chép\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Sao chép đến {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Không thể tạo thư mục mới\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Không thể tải tập tin cài đặt\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Không thể tải xuống tệp xem\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Tạo thư mục\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Hiện tại chế độ xem của bộ chọn\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Yêu cầu thích\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Các tập tin và thư mục bạn đánh dấu yêu thích sẽ hiển thị ở đây.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Các tập tin và thư mục bạn sửa đổi gần đây sẽ hiển thị ở đây.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter list file\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Thư mục tên không được để trống.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Trang chủ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Đã sửa đổi\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Di chuyển\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Di chuyển đến{target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Tên\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Mới\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"New thư mục\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"New thư mục tên\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No file at here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Không tìm thấy tệp nào phù hợp với bộ lọc của bạn.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No file phù hợp\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Gần đây\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Choose all items\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Chọn mục nhập\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Choose hang cho{nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Kích cỡ\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Hoàn tác\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Tải lên một số nội dung hoặc đồng bộ hóa với thiết bị của bạn!\"] }] }, { \"language\": \"zh_CN\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"“{name}” 是无效的文件夹名称。\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"“{name}” 不是允许的文件夹名称\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"文件夹名称中不允许包含 “/”。\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有文件\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"选择\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"选择 {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"选择 %n 个文件\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"复制\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"复制到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"无法创建新文件夹\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"无法加载文件设置\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"无法加载文件视图\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"创建目录\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"当前视图选择器\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最爱\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您标记为最爱的文件与文件夹会显示在这里\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的文件与文件夹会显示在这里\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"过滤文件列表\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"文件夹名称不能为空。\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"主目录\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移动\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移动至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名称\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新文件夹\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新文件夹名称\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此处无文件\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您过滤条件的文件\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"无符合的文件\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"选择所有条目\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"选择条目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"选择 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\" 撤消\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上传一些项目或与您的设备同步!\"] }] }, { \"language\": \"zh_HK\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"資料夾名稱中不允許使用「{char}」。\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['名稱中不能使用 \"{char}\"。'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"「{extension}」並非允許的名稱。\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"「{segment}」為保留名稱,不能用作資料夾名稱。\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"「{segment}」是一個保留名稱,不能使用。\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n 檔案衝突\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 %n 個檔案衝突\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有檔案\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選擇\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"選擇 {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"選擇 %n 個檔案\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"確認\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"複製\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"複製到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"無法建立新資料夾\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"無法載入檔案設定\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"無法載入檔案視圖\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"建立目錄\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"目前視圖選擇器\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"輸入您的名字\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"現有的版本\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"無法設置暱稱。\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最愛\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您標記為最愛的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"過濾檔案清單\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"資料夾名稱不得以「{extension}」結尾。\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"訪客身份識別\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"首頁\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果您選擇兩個版本,傳入的檔案名稱將會附加一個數字。\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"無效的資料夾名稱。\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"無效的名字。\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後的修改日期不詳\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移動至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名稱\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"名稱長度最多為 64 個字元。\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"名稱不能為空。\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"名稱不得以「{extension}」結尾。\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"名稱不得以點開頭。\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新資料夾\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新資料夾名稱\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此處無檔案\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您過濾條件的檔案。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"沒有匹配的檔案\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"請輸入至少 2 個字符的名稱。\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選擇所有復選框\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"選擇所有項目\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選擇所有現有的檔案\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"選擇所有新檔案\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"選擇項目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"選擇 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"跳過 %n 個檔案\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"跳過此檔案\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"遞交名字\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"還原\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上傳一些內容或與您的裝置同步!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾時,其中任何衝突的檔案也將被覆蓋。\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"當選取傳入資料夾時,內容將寫入現有資料夾,並執行遞歸衝突解決。\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你想保留哪些檔案?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"您目前被識別為 {nickname}。\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"您目前尚未被識別。\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"名稱不能留空。\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"你需要選擇至少一種衝突解決方案。\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須選擇每個文件的至少一個版本才能繼續。\"] }] }, { \"language\": \"zh_TW\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid file name.', \"msgstr\": [\"「{name}」是無效的檔案名稱。\"] }, { \"msgid\": '\"{name}\" is not an allowed filetype', \"msgstr\": [\"「{name}」並非允許的檔案類型\"] }, { \"msgid\": '\"/\" is not allowed inside a file name.', \"msgstr\": [\"檔案名稱中不允許使用「/」。\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有檔案\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選擇\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"選擇 {file}\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"複製\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"複製到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"無法建立新資料夾\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"建立目錄\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"目前檢視選取器\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最愛\"] }, { \"msgid\": \"File name cannot be empty.\", \"msgstr\": [\"檔案名稱不能為空。\"] }, { \"msgid\": \"Filepicker sections\", \"msgstr\": [\"檔案挑選器選取\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您標記為最愛的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"過濾檔案清單\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"家\"] }, { \"msgid\": \"Mime type {mime}\", \"msgstr\": [\"Mime type {mime}\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移動至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名稱\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新資料夾\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新資料夾名稱\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此處無檔案\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您過濾條件的檔案。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"無符合的檔案\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"選取所有條目\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"選取條目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"選取 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"復原\"] }, { \"msgid\": \"unknown\", \"msgstr\": [\"未知\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上傳一些內容或與您的裝置同步\"] }] }]) {\n const { language, translations } = data;\n const bundle = {\n headers: {},\n translations: {\n \"\": Object.fromEntries(translations.map((translation) => [translation.msgid, translation]))\n }\n };\n gtBuilder.addTranslation(language, bundle);\n}\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/dialogs\").detectLogLevel().build();\nvar FilePickerType = /* @__PURE__ */ ((FilePickerType2) => {\n FilePickerType2[FilePickerType2[\"Choose\"] = 1] = \"Choose\";\n FilePickerType2[FilePickerType2[\"Move\"] = 2] = \"Move\";\n FilePickerType2[FilePickerType2[\"Copy\"] = 3] = \"Copy\";\n FilePickerType2[FilePickerType2[\"CopyMove\"] = 4] = \"CopyMove\";\n FilePickerType2[FilePickerType2[\"Custom\"] = 5] = \"Custom\";\n return FilePickerType2;\n})(FilePickerType || {});\nclass FilePickerClosed extends Error {\n}\nclass FilePicker {\n title;\n multiSelect;\n mimeTypeFilter;\n directoriesAllowed;\n noMenu;\n buttons;\n path;\n filter;\n canPick;\n container;\n disabledNavigation;\n constructor(title, multiSelect, mimeTypeFilter, directoriesAllowed, noMenu, buttons, path, filter, canPick, container, disabledNavigation = false) {\n this.title = title;\n this.multiSelect = multiSelect;\n this.mimeTypeFilter = mimeTypeFilter;\n this.directoriesAllowed = directoriesAllowed;\n this.noMenu = noMenu;\n this.path = path;\n this.filter = filter;\n this.canPick = canPick;\n this.buttons = buttons;\n this.container = container;\n this.disabledNavigation = disabledNavigation;\n }\n /**\n * Pick files using the FilePicker.\n *\n * @return Promise with array of picked files or rejected promise on close without picking\n */\n async pickNodes() {\n const { default: FilePickerVue } = await import(\"./FilePicker.mjs\");\n const nodes = await spawnDialog(FilePickerVue, {\n allowPickDirectory: this.directoriesAllowed,\n noMenu: this.noMenu,\n buttons: this.buttons,\n name: this.title,\n path: this.path,\n mimetypeFilter: this.mimeTypeFilter,\n multiselect: this.multiSelect,\n filterFn: this.filter,\n canPickFn: this.canPick,\n disabledNavigation: this.disabledNavigation\n }, {\n container: this.container\n });\n if (!Array.isArray(nodes) || nodes.length === 0) {\n throw new FilePickerClosed(\"FilePicker: No nodes selected\");\n }\n return nodes;\n }\n /**\n * Pick files using the FilePicker\n *\n * @return Promise with array of paths of picked files or rejected promise on close without picking\n */\n async pick() {\n const nodes = await this.pickNodes();\n if (this.multiSelect) {\n return nodes.map((node) => node.path);\n }\n const path = nodes[0]?.path ?? \"/\";\n return path;\n }\n}\nclass FilePickerBuilder {\n title;\n multiSelect = false;\n mimeTypeFilter = [];\n directoriesAllowed = false;\n noMenu = false;\n path;\n filter;\n canPick;\n buttons = [];\n container;\n disabledNavigation = false;\n /**\n * Construct a new FilePicker\n *\n * @param title Title of the FilePicker\n */\n constructor(title) {\n this.title = title;\n }\n /**\n * Set the container where the FilePicker will be mounted\n * By default 'body' is used\n *\n * @param container The dialog container\n */\n setContainer(container) {\n this.container = container;\n return this;\n }\n /**\n * Enable or disable picking multiple files\n *\n * @param ms True to enable picking multiple files, false otherwise\n */\n setMultiSelect(ms) {\n this.multiSelect = ms;\n return this;\n }\n /**\n * Add allowed MIME type\n *\n * @param filter MIME type to allow\n */\n addMimeTypeFilter(filter) {\n this.mimeTypeFilter.push(filter);\n return this;\n }\n /**\n * Set allowed MIME types\n *\n * @param filter Array of allowed MIME types\n */\n setMimeTypeFilter(filter) {\n this.mimeTypeFilter = filter;\n return this;\n }\n /**\n * Add a button to the FilePicker\n * Note: This overrides any previous `setButtonFactory` call\n *\n * @param button The button\n */\n addButton(button) {\n if (typeof this.buttons === \"function\") {\n logger.warn(\"FilePicker buttons were set to factory, now overwritten with button object.\");\n this.buttons = [];\n }\n this.buttons.push(button);\n return this;\n }\n /**\n * Set the button factory which is used to generate buttons from current view, path and selected nodes\n * Note: This overrides any previous `addButton` call\n *\n * @param factory The button factory\n */\n setButtonFactory(factory) {\n this.buttons = factory;\n return this;\n }\n /**\n * Set FilePicker type based on legacy file picker types\n *\n * @param type The legacy filepicker type to emulate\n * @deprecated Use `addButton` or `setButtonFactory` instead as with setType you do not know which button was pressed\n */\n setType(type) {\n this.buttons = (nodes, path) => {\n const buttons = [];\n const node = nodes[0];\n const target = node?.displayname || basename(path);\n if (type === 1) {\n let label = t(\"Choose\");\n if (nodes.length === 1) {\n label = t(\"Choose {file}\", { file: target });\n } else if (this.multiSelect) {\n label = n(\"Choose %n file\", \"Choose %n files\", nodes.length);\n }\n buttons.push({\n callback: () => {\n },\n label,\n variant: \"primary\"\n });\n }\n if (type === 4 || type === 3) {\n buttons.push({\n callback: () => {\n },\n label: target ? t(\"Copy to {target}\", { target }) : t(\"Copy\"),\n icon: IconCopy,\n variant: type === 3 ? \"primary\" : \"secondary\"\n });\n }\n if (type === 4 || type === 2) {\n buttons.push({\n callback: () => {\n },\n label: target ? t(\"Move to {target}\", { target }) : t(\"Move\"),\n icon: IconMove,\n variant: \"primary\"\n // move is always primary - also on copy-move\n });\n }\n return buttons;\n };\n return this;\n }\n /**\n * Allow to pick directories besides files\n *\n * @param allow True to allow picking directories\n */\n allowDirectories(allow = true) {\n this.directoriesAllowed = allow;\n return this;\n }\n /**\n * Allow to create New folders\n *\n * @param noMenu True to hide menu\n */\n setNoMenu(noMenu = true) {\n this.noMenu = noMenu;\n return this;\n }\n /**\n * Set starting path of the FilePicker\n *\n * @param path Path to start from picking\n */\n startAt(path) {\n this.path = path;\n return this;\n }\n /**\n * Add filter function to filter file list of FilePicker\n *\n * @param filter Filter function to apply\n */\n setFilter(filter) {\n this.filter = filter;\n return this;\n }\n /**\n * Add function to allow or not picking a node\n *\n * @param canPick Function to decide if a node can be picked\n */\n setCanPick(canPick) {\n this.canPick = canPick;\n return this;\n }\n /**\n * Disable navigation (view selection)\n */\n disableNavigation() {\n this.disabledNavigation = true;\n return this;\n }\n /**\n * Construct the configured FilePicker\n */\n build() {\n return new FilePicker(\n this.title,\n this.multiSelect,\n this.mimeTypeFilter,\n this.directoriesAllowed,\n this.noMenu,\n this.buttons,\n this.path,\n this.filter,\n this.canPick,\n this.container,\n this.disabledNavigation\n );\n }\n}\nfunction getFilePickerBuilder(title) {\n return new FilePickerBuilder(title);\n}\nasync function showGuestUserPrompt(props) {\n const name = await spawnDialog(\n defineAsyncComponent(() => import(\"./PublicAuthPrompt.mjs\")),\n props\n );\n return name;\n}\nconst LoaderSvg = '\\n\t\\n\t\\n\\n';\nvar ToastType = /* @__PURE__ */ ((ToastType2) => {\n ToastType2[\"ERROR\"] = \"toast-error\";\n ToastType2[\"WARNING\"] = \"toast-warning\";\n ToastType2[\"INFO\"] = \"toast-info\";\n ToastType2[\"SUCCESS\"] = \"toast-success\";\n ToastType2[\"UNDO\"] = \"toast-undo\";\n ToastType2[\"LOADING\"] = \"toast-loading\";\n return ToastType2;\n})(ToastType || {});\nconst TOAST_ARIA_LIVE_OFF = \"off\";\nconst TOAST_ARIA_LIVE_POLITE = \"polite\";\nconst TOAST_ARIA_LIVE_ASSERTIVE = \"assertive\";\nvar ToastAriaLive = /* @__PURE__ */ ((ToastAriaLive2) => {\n ToastAriaLive2[ToastAriaLive2[\"OFF\"] = TOAST_ARIA_LIVE_OFF] = \"OFF\";\n ToastAriaLive2[ToastAriaLive2[\"POLITE\"] = TOAST_ARIA_LIVE_POLITE] = \"POLITE\";\n ToastAriaLive2[ToastAriaLive2[\"ASSERTIVE\"] = TOAST_ARIA_LIVE_ASSERTIVE] = \"ASSERTIVE\";\n return ToastAriaLive2;\n})(ToastAriaLive || {});\nconst TOAST_UNDO_TIMEOUT = 1e4;\nconst TOAST_DEFAULT_TIMEOUT = 7e3;\nconst TOAST_PERMANENT_TIMEOUT = -1;\nfunction showMessage(data, options) {\n options = {\n timeout: TOAST_DEFAULT_TIMEOUT,\n isHTML: false,\n type: void 0,\n // An undefined selector defaults to the body element\n selector: void 0,\n onRemove: () => {\n },\n onClick: void 0,\n close: true,\n ...options\n };\n if (typeof data === \"string\" && !options.isHTML) {\n const element = document.createElement(\"div\");\n element.innerHTML = data;\n data = element.innerText;\n }\n let classes = options.type ?? \"\";\n if (typeof options.onClick === \"function\") {\n classes += \" toast-with-click \";\n }\n const isNode = data instanceof Node;\n let ariaLive = ToastAriaLive.POLITE;\n if (options.ariaLive) {\n ariaLive = options.ariaLive;\n } else if (options.type === \"toast-error\" || options.type === \"toast-undo\") {\n ariaLive = ToastAriaLive.ASSERTIVE;\n }\n const toast = Toastify({\n [!isNode ? \"text\" : \"node\"]: data,\n duration: options.timeout,\n callback: options.onRemove,\n onClick: options.onClick,\n close: options.close,\n gravity: \"top\",\n selector: options.selector,\n position: \"right\",\n backgroundColor: \"\",\n className: \"dialogs \" + classes,\n escapeMarkup: !options.isHTML,\n ariaLive\n });\n toast.showToast();\n return toast;\n}\nfunction showError(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-error\"\n /* ERROR */\n });\n}\nfunction showWarning(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-warning\"\n /* WARNING */\n });\n}\nfunction showInfo(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-info\"\n /* INFO */\n });\n}\nfunction showSuccess(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-success\"\n /* SUCCESS */\n });\n}\nfunction showLoading(text, options) {\n const loader = document.createElement(\"span\");\n loader.innerHTML = LoaderSvg;\n loader.classList.add(\"toast-loader\");\n const loaderContent = document.createElement(\"span\");\n loaderContent.classList.add(\"toast-loader-container\");\n loaderContent.innerText = text;\n loaderContent.appendChild(loader);\n return showMessage(loaderContent, {\n ...options,\n close: false,\n timeout: TOAST_PERMANENT_TIMEOUT,\n type: \"toast-loading\"\n /* LOADING */\n });\n}\nfunction showUndo(text, onUndo, options) {\n if (!(onUndo instanceof Function)) {\n throw new Error(\"Please provide a valid onUndo method\");\n }\n options = Object.assign(options || {}, {\n // force 10 seconds of timeout\n timeout: TOAST_UNDO_TIMEOUT\n });\n const undoContent = document.createElement(\"span\");\n const undoButton = document.createElement(\"button\");\n undoContent.classList.add(\"toast-undo-container\");\n undoButton.classList.add(\"toast-undo-button\");\n undoButton.innerText = t(\"Undo\");\n undoContent.innerText = text;\n undoContent.appendChild(undoButton);\n const toast = showMessage(undoContent, {\n ...options,\n type: \"toast-undo\"\n /* UNDO */\n });\n undoButton.addEventListener(\"click\", function(event) {\n event.stopPropagation();\n onUndo(event);\n if (toast?.hideToast instanceof Function) {\n toast.hideToast();\n }\n });\n return toast;\n}\nconst _hoisted_1 = [\"textContent\"];\nconst _hoisted_2 = [\"innerHTML\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"GenericDialog\",\n props: {\n name: {},\n text: {},\n html: {},\n buttons: {},\n severity: {}\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const dialogButtons = computed(() => props.buttons?.map((button) => ({\n ...button,\n callback() {\n button.callback();\n emit(\"close\", true);\n }\n })));\n const handleUnload = () => `${props.name}: ${props.text}`;\n onMounted(() => window.addEventListener(\"unload\", handleUnload));\n onUnmounted(() => window.removeEventListener(\"unload\", handleUnload));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n dialogClasses: \"nc-generic-dialog\",\n buttons: dialogButtons.value,\n name: __props.name,\n message: __props.text,\n \"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"close\", false))\n }, {\n default: withCtx(() => [\n __props.severity ? (openBlock(), createBlock(unref(NcNoteCard), {\n key: 0,\n type: __props.severity\n }, {\n default: withCtx(() => [\n createElementVNode(\"p\", {\n textContent: toDisplayString(__props.text)\n }, null, 8, _hoisted_1)\n ]),\n _: 1\n }, 8, [\"type\"])) : createCommentVNode(\"\", true),\n __props.html ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n innerHTML: __props.html\n }, null, 8, _hoisted_2)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"buttons\", \"name\", \"message\"]);\n };\n }\n});\nclass Dialog {\n #name;\n #text;\n #buttons;\n #severity;\n constructor(name, text, buttons = [], severity) {\n this.#name = name;\n this.#text = text;\n this.#buttons = buttons;\n this.#severity = severity;\n }\n /**\n * Spawn and show the dialog - if already open the previous instance will be destroyed\n *\n * @return Promise that resolves when the dialog is answered successfully and rejects on close\n */\n async show() {\n const result = await spawnDialog(\n _sfc_main,\n {\n buttons: this.#buttons,\n name: this.#name,\n text: this.#text,\n severity: this.#severity\n }\n );\n if (!result) {\n throw new Error(\"Dialog closed\");\n }\n }\n}\nclass DialogBuilder {\n #severity;\n #text;\n #name;\n #buttons;\n constructor(name) {\n this.#severity = void 0;\n this.#text = \"\";\n this.#name = name ?? \"\";\n this.#buttons = [];\n }\n /**\n * Set dialog name\n *\n * @param name The name or headline of the dialog\n */\n setName(name) {\n this.#name = name;\n return this;\n }\n /**\n * Set the dialog text\n *\n * @param text Main text of the dialog\n */\n setText(text) {\n this.#text = text;\n return this;\n }\n /**\n * Set the severity of the dialog\n *\n * @param severity Severity of the dialog\n */\n setSeverity(severity) {\n this.#severity = severity;\n return this;\n }\n /**\n * Set buttons from array\n *\n * @param buttons Either an array of dialog buttons\n */\n setButtons(buttons) {\n if (this.#buttons.length > 0) {\n logger.warn(\"[@nextcloud/dialogs] Dialog buttons are already set - this overrides previous buttons.\");\n }\n this.#buttons = buttons;\n return this;\n }\n /**\n * Add a single button\n *\n * @param button Button to add\n */\n addButton(button) {\n this.#buttons.push(button);\n return this;\n }\n build() {\n return new Dialog(this.#name, this.#text, this.#buttons, this.#severity);\n }\n}\nfunction getDialogBuilder(name) {\n return new DialogBuilder(name);\n}\nasync function showConfirmation(options) {\n options = {\n labelConfirm: t(\"Confirm\"),\n ...options\n };\n const { promise, resolve } = Promise.withResolvers();\n const buttons = [{\n label: options.labelConfirm,\n variant: \"primary\",\n callback() {\n resolve(true);\n }\n }];\n if (options.labelReject) {\n buttons.unshift({\n label: options.labelReject,\n callback() {\n resolve(false);\n }\n });\n }\n const dialog = new Dialog(\n options.name,\n options.text,\n buttons,\n options.severity\n );\n await dialog.show();\n return promise;\n}\nexport {\n Dialog as D,\n FilePicker as F,\n TOAST_ARIA_LIVE_ASSERTIVE as T,\n DialogBuilder as a,\n FilePickerBuilder as b,\n FilePickerClosed as c,\n FilePickerType as d,\n TOAST_ARIA_LIVE_OFF as e,\n TOAST_ARIA_LIVE_POLITE as f,\n TOAST_DEFAULT_TIMEOUT as g,\n TOAST_PERMANENT_TIMEOUT as h,\n TOAST_UNDO_TIMEOUT as i,\n ToastAriaLive as j,\n ToastType as k,\n logger as l,\n getDialogBuilder as m,\n n,\n getFilePickerBuilder as o,\n openConflictPicker as p,\n showConfirmation as q,\n showGuestUserPrompt as r,\n showError as s,\n t,\n showInfo as u,\n showLoading as v,\n showMessage as w,\n showSuccess as x,\n showUndo as y,\n showWarning as z\n};\n//# sourceMappingURL=index.mjs.map\n"],"file":"index-mH69OG7L.chunk.mjs"} \ No newline at end of file diff --git a/dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.map.license b/dist/index-mH69OG7L.chunk.mjs.map.license similarity index 94% rename from dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.map.license rename to dist/index-mH69OG7L.chunk.mjs.map.license index aa3c59679ba8f..533d4d6a5463d 100644 --- a/dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs.map.license +++ b/dist/index-mH69OG7L.chunk.mjs.map.license @@ -5,7 +5,7 @@ SPDX-FileCopyrightText: Varun A P This file is generated from multiple sources. Included packages: - @nextcloud/dialogs - - version: 7.4.0 + - version: 7.4.1 - license: AGPL-3.0-or-later - toastify-js - version: 1.12.0 diff --git a/dist/profile-main.mjs b/dist/profile-main.mjs index f8d624211d670..2774daa680964 100644 --- a/dist/profile-main.mjs +++ b/dist/profile-main.mjs @@ -1,2 +1,2 @@ -import{o as i,f as o,g as a,t,h as l,m as M,b as z,c as d,C as E,y as $,l as S,A as O,S as V,U as T,w as n,k as h,u as e,j as m,L as j,F as k,B as P,v as q,e as F}from"./Web-DYqXJUev.chunk.mjs";import{a as Y,b as Z,s as D,u as G}from"./index-Cp0kcsps.chunk.mjs";import{a as H}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{_ as w,l as N}from"./public-C1mLBHT3.chunk.mjs";import{t as y}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as J}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{b as K}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{N as L,a as Q}from"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as R}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{N as b}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as W}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{b as X}from"./index-D9CqvIri.chunk.mjs";import{A as ee,l as se}from"./logger-CAmJUPDJ.chunk.mjs";import{P as ie}from"./PencilOutline-DhyEf5vr.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";const ae={name:"MapMarkerIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},re=["aria-hidden","aria-label"],oe=["fill","width","height"],te={d:"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"},le={key:0};function ne(c,s,r,v,A,p){return i(),o("span",M(c.$attrs,{"aria-hidden":r.title?null:"true","aria-label":r.title,class:"material-design-icon map-marker-icon",role:"img",onClick:s[0]||(s[0]=u=>c.$emit("click",u))}),[(i(),o("svg",{fill:r.fillColor,class:"material-design-icon__svg",width:r.size,height:r.size,viewBox:"0 0 24 24"},[a("path",te,[r.title?(i(),o("title",le,t(r.title),1)):l("",!0)])],8,oe))],16,re)}const de=w(ae,[["render",ne]]),ce=z({__name:"ProfileSection",props:{section:{},userId:{}},setup(c){return(s,r)=>(i(),o("div",{class:$(s.$style.profileSection)},[(i(),d(E(c.section.tagName),M(c.section.params,{".user":c.userId}),null,48,[".user"]))],2))}}),pe="_profileSection_1o17g_2",ue={profileSection:pe},fe={$style:ue},_e=w(ce,[["__cssModules",fe]]),me={class:"profile__header"},he={class:"profile__header__container"},ye={class:"profile__header__container__displayname"},ve={key:0},ge={key:1,class:"profile__header__container__pronouns"},ke={class:"profile__wrapper"},be={class:"profile__content"},we={class:"profile__sidebar"},Ae={class:"user-actions"},Ie=["src"],Ce=["src"],Se={class:"profile__blocks"},Pe={key:0,class:"profile__blocks-details"},Ne={key:0,class:"detail"},Me={key:0},ze={key:1,class:"detail"},$e={key:0,class:"profile__blocks-headline"},xe=z({__name:"ProfileApp",setup(c){const s=N("profile","profileParameters",{userId:void 0,displayname:void 0,address:void 0,organisation:void 0,role:void 0,headline:void 0,biography:void 0,actions:[],isUserAvatarVisible:!1,pronouns:void 0}),r=S(N("profile","status",{})),v=S([]),A=q(()=>[...v.value].sort((f,g)=>g.order-f.order));O(()=>{v.value=window.OCA.Profile.ProfileSections.getSections()});const p=Y()?.uid===s.userId,u=s.actions[0],x=s.actions.slice(1),U=Z("/settings/user"),B=p?y("profile","You have not added any info yet"):y("profile","{user} has not added any info yet",{user:s.displayname||s.userId||""});V(()=>{document.title=`${s.displayname||s.userId} - ${document.title}`,D("user_status:status.updated",I)}),T(()=>{G("user_status:status.updated",I)});function I(f){p&&f.userId===s.userId&&(r.value=f)}function C(){if(!p)return;const f=document.querySelector(".user-status-menu-item");f?f.click():H(y("profile","Error opening the user status modal, try hard refreshing the page"))}return(f,g)=>(i(),d(e(Q),{appName:"profile"},{default:n(()=>[h(e(L),null,{default:n(()=>[a("div",me,[a("div",he,[g[0]||(g[0]=a("div",{class:"profile__header__container__placeholder"},null,-1)),a("div",ye,[a("h2",null,t(e(s).displayname||e(s).userId),1),e(s).pronouns?(i(),o("span",ve,"·")):l("",!0),e(s).pronouns?(i(),o("span",ge,t(e(s).pronouns),1)):l("",!0),p?(i(),d(e(b),{key:2,variant:"primary",href:e(U)},{icon:n(()=>[h(ie,{size:20})]),default:n(()=>[m(" "+t(e(y)("profile","Edit Profile")),1)]),_:1},8,["href"])):l("",!0)]),r.value.icon||r.value.message?(i(),d(e(b),{key:0,disabled:!p,variant:p?"tertiary":"tertiary-no-background",onClick:C},{default:n(()=>[m(t(r.value.icon)+" "+t(r.value.message),1)]),_:1},8,["disabled","variant"])):l("",!0)])]),a("div",ke,[a("div",be,[a("div",we,[h(e(R),{class:$(["avatar",{interactive:p}]),user:e(s).userId,size:180,disableMenu:!0,disableTooltip:!0,isNoUser:!e(s).isUserAvatarVisible,onClick:j(C,["prevent","stop"])},null,8,["class","user","isNoUser"]),a("div",Ae,[e(u)?(i(),d(e(b),{key:0,variant:"primary",class:"user-actions__primary",href:e(u).target,icon:e(u).icon,target:e(u).id==="phone"?"_self":"_blank"},{icon:n(()=>[a("img",{src:e(u).icon,alt:"",class:"user-actions__primary__icon"},null,8,Ie)]),default:n(()=>[m(" "+t(e(u).title),1)]),_:1},8,["href","icon","target"])):l("",!0),h(e(K),{class:"user-actions__other",inline:4},{default:n(()=>[(i(!0),o(k,null,P(e(x),_=>(i(),d(e(J),{key:_.id,closeAfterClick:!0,href:_.target,target:_.id==="phone"?"_self":"_blank"},{icon:n(()=>[a("img",{src:_.icon,alt:"",class:"user-actions__other__icon"},null,8,Ce)]),default:n(()=>[m(" "+t(_.title),1)]),_:2},1032,["href","target"]))),128))]),_:1})])]),a("div",Se,[e(s).organisation||e(s).role||e(s).address?(i(),o("div",Pe,[e(s).organisation||e(s).role?(i(),o("div",Ne,[a("p",null,[m(t(e(s).organisation)+" ",1),e(s).organisation&&e(s).role?(i(),o("span",Me,"•")):l("",!0),m(" "+t(e(s).role),1)])])):l("",!0),e(s).address?(i(),o("div",ze,[a("p",null,[h(de,{class:"map-icon",size:16}),m(" "+t(e(s).address),1)])])):l("",!0)])):l("",!0),e(s).headline||e(s).biography||v.value.length>0?(i(),o(k,{key:1},[e(s).headline?(i(),o("h3",$e,t(e(s).headline),1)):l("",!0),e(s).biography?(i(),d(e(X),{key:1,text:e(s).biography,useExtendedMarkdown:""},null,8,["text"])):l("",!0),(i(!0),o(k,null,P(A.value,_=>(i(),d(_e,{key:_.id,section:_,userId:e(s).userId},null,8,["section","userId"]))),128))],64)):(i(),d(e(W),{key:2,class:"profile__blocks-empty-info",name:e(B),description:e(y)("profile","The headline and about sections will show up here")},{icon:n(()=>[h(ee,{size:60})]),_:1},8,["name","description"]))])])])]),_:1})]),_:1}))}}),Ue=w(xe,[["__scopeId","data-v-596d11e3"]]);class Be{#e;constructor(){this.#e=new Map}registerSection(s){this.#e.has(s.id)&&se.warn(`Profile section with id '${s.id}' is already registered.`),this.#e.set(s.id,s)}getSections(){return[...this.#e.values()]}}window.OCA.Profile??={},window.OCA.Profile.ProfileSections=new Be;const Ee=F(Ue);Ee.mount("#content"); +import{o as i,f as o,g as a,t,h as l,m as M,b as z,c as d,C as E,y as $,l as S,A as O,S as V,U as T,w as n,k as h,u as e,j as m,L as j,F as k,B as P,v as q,e as F}from"./Web-DYqXJUev.chunk.mjs";import{a as Y,b as Z,s as D,u as G}from"./index-Cp0kcsps.chunk.mjs";import{a as H}from"./index-mH69OG7L.chunk.mjs";import{_ as w,l as N}from"./public-C1mLBHT3.chunk.mjs";import{t as y}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as J}from"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import{b as K}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{N as L,a as Q}from"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as R}from"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import{N as b}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as W}from"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import{b as X}from"./index-D9CqvIri.chunk.mjs";import{A as ee,l as se}from"./logger-CAmJUPDJ.chunk.mjs";import{P as ie}from"./PencilOutline-DhyEf5vr.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./index-BDlLVKOD.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";const ae={name:"MapMarkerIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},re=["aria-hidden","aria-label"],oe=["fill","width","height"],te={d:"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"},le={key:0};function ne(c,s,r,v,A,p){return i(),o("span",M(c.$attrs,{"aria-hidden":r.title?null:"true","aria-label":r.title,class:"material-design-icon map-marker-icon",role:"img",onClick:s[0]||(s[0]=u=>c.$emit("click",u))}),[(i(),o("svg",{fill:r.fillColor,class:"material-design-icon__svg",width:r.size,height:r.size,viewBox:"0 0 24 24"},[a("path",te,[r.title?(i(),o("title",le,t(r.title),1)):l("",!0)])],8,oe))],16,re)}const de=w(ae,[["render",ne]]),ce=z({__name:"ProfileSection",props:{section:{},userId:{}},setup(c){return(s,r)=>(i(),o("div",{class:$(s.$style.profileSection)},[(i(),d(E(c.section.tagName),M(c.section.params,{".user":c.userId}),null,48,[".user"]))],2))}}),pe="_profileSection_1o17g_2",ue={profileSection:pe},fe={$style:ue},_e=w(ce,[["__cssModules",fe]]),me={class:"profile__header"},he={class:"profile__header__container"},ye={class:"profile__header__container__displayname"},ve={key:0},ge={key:1,class:"profile__header__container__pronouns"},ke={class:"profile__wrapper"},be={class:"profile__content"},we={class:"profile__sidebar"},Ae={class:"user-actions"},Ie=["src"],Ce=["src"],Se={class:"profile__blocks"},Pe={key:0,class:"profile__blocks-details"},Ne={key:0,class:"detail"},Me={key:0},ze={key:1,class:"detail"},$e={key:0,class:"profile__blocks-headline"},xe=z({__name:"ProfileApp",setup(c){const s=N("profile","profileParameters",{userId:void 0,displayname:void 0,address:void 0,organisation:void 0,role:void 0,headline:void 0,biography:void 0,actions:[],isUserAvatarVisible:!1,pronouns:void 0}),r=S(N("profile","status",{})),v=S([]),A=q(()=>[...v.value].sort((f,g)=>g.order-f.order));O(()=>{v.value=window.OCA.Profile.ProfileSections.getSections()});const p=Y()?.uid===s.userId,u=s.actions[0],x=s.actions.slice(1),U=Z("/settings/user"),B=p?y("profile","You have not added any info yet"):y("profile","{user} has not added any info yet",{user:s.displayname||s.userId||""});V(()=>{document.title=`${s.displayname||s.userId} - ${document.title}`,D("user_status:status.updated",I)}),T(()=>{G("user_status:status.updated",I)});function I(f){p&&f.userId===s.userId&&(r.value=f)}function C(){if(!p)return;const f=document.querySelector(".user-status-menu-item");f?f.click():H(y("profile","Error opening the user status modal, try hard refreshing the page"))}return(f,g)=>(i(),d(e(Q),{appName:"profile"},{default:n(()=>[h(e(L),null,{default:n(()=>[a("div",me,[a("div",he,[g[0]||(g[0]=a("div",{class:"profile__header__container__placeholder"},null,-1)),a("div",ye,[a("h2",null,t(e(s).displayname||e(s).userId),1),e(s).pronouns?(i(),o("span",ve,"·")):l("",!0),e(s).pronouns?(i(),o("span",ge,t(e(s).pronouns),1)):l("",!0),p?(i(),d(e(b),{key:2,variant:"primary",href:e(U)},{icon:n(()=>[h(ie,{size:20})]),default:n(()=>[m(" "+t(e(y)("profile","Edit Profile")),1)]),_:1},8,["href"])):l("",!0)]),r.value.icon||r.value.message?(i(),d(e(b),{key:0,disabled:!p,variant:p?"tertiary":"tertiary-no-background",onClick:C},{default:n(()=>[m(t(r.value.icon)+" "+t(r.value.message),1)]),_:1},8,["disabled","variant"])):l("",!0)])]),a("div",ke,[a("div",be,[a("div",we,[h(e(R),{class:$(["avatar",{interactive:p}]),user:e(s).userId,size:180,disableMenu:!0,disableTooltip:!0,isNoUser:!e(s).isUserAvatarVisible,onClick:j(C,["prevent","stop"])},null,8,["class","user","isNoUser"]),a("div",Ae,[e(u)?(i(),d(e(b),{key:0,variant:"primary",class:"user-actions__primary",href:e(u).target,icon:e(u).icon,target:e(u).id==="phone"?"_self":"_blank"},{icon:n(()=>[a("img",{src:e(u).icon,alt:"",class:"user-actions__primary__icon"},null,8,Ie)]),default:n(()=>[m(" "+t(e(u).title),1)]),_:1},8,["href","icon","target"])):l("",!0),h(e(K),{class:"user-actions__other",inline:4},{default:n(()=>[(i(!0),o(k,null,P(e(x),_=>(i(),d(e(J),{key:_.id,closeAfterClick:!0,href:_.target,target:_.id==="phone"?"_self":"_blank"},{icon:n(()=>[a("img",{src:_.icon,alt:"",class:"user-actions__other__icon"},null,8,Ce)]),default:n(()=>[m(" "+t(_.title),1)]),_:2},1032,["href","target"]))),128))]),_:1})])]),a("div",Se,[e(s).organisation||e(s).role||e(s).address?(i(),o("div",Pe,[e(s).organisation||e(s).role?(i(),o("div",Ne,[a("p",null,[m(t(e(s).organisation)+" ",1),e(s).organisation&&e(s).role?(i(),o("span",Me,"•")):l("",!0),m(" "+t(e(s).role),1)])])):l("",!0),e(s).address?(i(),o("div",ze,[a("p",null,[h(de,{class:"map-icon",size:16}),m(" "+t(e(s).address),1)])])):l("",!0)])):l("",!0),e(s).headline||e(s).biography||v.value.length>0?(i(),o(k,{key:1},[e(s).headline?(i(),o("h3",$e,t(e(s).headline),1)):l("",!0),e(s).biography?(i(),d(e(X),{key:1,text:e(s).biography,useExtendedMarkdown:""},null,8,["text"])):l("",!0),(i(!0),o(k,null,P(A.value,_=>(i(),d(_e,{key:_.id,section:_,userId:e(s).userId},null,8,["section","userId"]))),128))],64)):(i(),d(e(W),{key:2,class:"profile__blocks-empty-info",name:e(B),description:e(y)("profile","The headline and about sections will show up here")},{icon:n(()=>[h(ee,{size:60})]),_:1},8,["name","description"]))])])])]),_:1})]),_:1}))}}),Ue=w(xe,[["__scopeId","data-v-596d11e3"]]);class Be{#e;constructor(){this.#e=new Map}registerSection(s){this.#e.has(s.id)&&se.warn(`Profile section with id '${s.id}' is already registered.`),this.#e.set(s.id,s)}getSections(){return[...this.#e.values()]}}window.OCA.Profile??={},window.OCA.Profile.ProfileSections=new Be;const Ee=F(Ue);Ee.mount("#content"); //# sourceMappingURL=profile-main.mjs.map diff --git a/dist/profile-main.mjs.map b/dist/profile-main.mjs.map index d54310884789c..d4735f6ea8c66 100644 --- a/dist/profile-main.mjs.map +++ b/dist/profile-main.mjs.map @@ -1 +1 @@ -{"version":3,"file":"profile-main.mjs","sources":["../node_modules/vue-material-design-icons/MapMarker.vue","../build/frontend/apps/profile/src/components/ProfileSection.vue","../build/frontend/apps/profile/src/views/ProfileApp.vue","../build/frontend/apps/profile/src/services/ProfileSections.ts","../build/frontend/apps/profile/src/main.ts"],"sourcesContent":["\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { logger } from './logger.ts'\n\nexport interface IProfileSection {\n\t/**\n\t * Unique identifier for the section\n\t */\n\tid: string\n\t/**\n\t * The order in which the section should appear\n\t */\n\torder: number\n\t/**\n\t * The custom element tag name to be used for this section\n\t *\n\t * The custom element must have been registered beforehand,\n\t * and must have the a `user` property of type `string | undefined`.\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_components\n\t */\n\ttagName: string\n\t/**\n\t * Static parameters to be passed to the custom web component\n\t */\n\tparams?: Record\n}\n\nexport default class ProfileSections {\n\t#sections: Map\n\n\tconstructor() {\n\t\tthis.#sections = new Map()\n\t}\n\n\t/**\n\t * @param section To be called to mount the section to the profile page\n\t */\n\tregisterSection(section: IProfileSection) {\n\t\tif (this.#sections.has(section.id)) {\n\t\t\tlogger.warn(`Profile section with id '${section.id}' is already registered.`)\n\t\t}\n\t\tthis.#sections.set(section.id, section)\n\t}\n\n\tgetSections() {\n\t\treturn [...this.#sections.values()]\n\t}\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport ProfileApp from './views/ProfileApp.vue'\nimport ProfileSections from './services/ProfileSections.js'\n\nimport 'vite/modulepreload-polyfill'\n\nwindow.OCA.Profile ??= {}\nwindow.OCA.Profile.ProfileSections = new ProfileSections()\n\nconst app = createApp(ProfileApp)\napp.mount('#content')\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","_normalizeClass","$style","_createBlock","_resolveDynamicComponent","__props","profileParameters","loadState","userStatus","ref","sections","sortedSections","computed","a","b","onBeforeMount","isCurrentUser","getCurrentUser","primaryAction","otherActions","settingsUrl","generateUrl","emptyProfileMessage","t","onMounted","subscribe","handleStatusUpdate","onBeforeUnmount","unsubscribe","status","openStatusModal","statusMenuItem","showError","_unref","NcContent","_createVNode","NcAppContent","_hoisted_1","_hoisted_2","_hoisted_5","_toDisplayString","NcButton","PencilIcon","_createTextVNode","_hoisted_6","_hoisted_7","_hoisted_8","NcAvatar","_hoisted_9","NcActions","_Fragment","_renderList","action","NcActionLink","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_16","MapMarkerIcon","_hoisted_17","NcRichText","section","ProfileSection","NcEmptyContent","AccountIcon","ProfileSections","#sections","logger","app","createApp","ProfileApp"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"profile-main.mjs","sources":["../node_modules/vue-material-design-icons/MapMarker.vue","../build/frontend/apps/profile/src/components/ProfileSection.vue","../build/frontend/apps/profile/src/views/ProfileApp.vue","../build/frontend/apps/profile/src/services/ProfileSections.ts","../build/frontend/apps/profile/src/main.ts"],"sourcesContent":["\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { logger } from './logger.ts'\n\nexport interface IProfileSection {\n\t/**\n\t * Unique identifier for the section\n\t */\n\tid: string\n\t/**\n\t * The order in which the section should appear\n\t */\n\torder: number\n\t/**\n\t * The custom element tag name to be used for this section\n\t *\n\t * The custom element must have been registered beforehand,\n\t * and must have the a `user` property of type `string | undefined`.\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_components\n\t */\n\ttagName: string\n\t/**\n\t * Static parameters to be passed to the custom web component\n\t */\n\tparams?: Record\n}\n\nexport default class ProfileSections {\n\t#sections: Map\n\n\tconstructor() {\n\t\tthis.#sections = new Map()\n\t}\n\n\t/**\n\t * @param section To be called to mount the section to the profile page\n\t */\n\tregisterSection(section: IProfileSection) {\n\t\tif (this.#sections.has(section.id)) {\n\t\t\tlogger.warn(`Profile section with id '${section.id}' is already registered.`)\n\t\t}\n\t\tthis.#sections.set(section.id, section)\n\t}\n\n\tgetSections() {\n\t\treturn [...this.#sections.values()]\n\t}\n}\n","/*\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport ProfileApp from './views/ProfileApp.vue'\nimport ProfileSections from './services/ProfileSections.js'\n\nimport 'vite/modulepreload-polyfill'\n\nwindow.OCA.Profile ??= {}\nwindow.OCA.Profile.ProfileSections = new ProfileSections()\n\nconst app = createApp(ProfileApp)\napp.mount('#content')\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","_normalizeClass","$style","_createBlock","_resolveDynamicComponent","__props","profileParameters","loadState","userStatus","ref","sections","sortedSections","computed","a","b","onBeforeMount","isCurrentUser","getCurrentUser","primaryAction","otherActions","settingsUrl","generateUrl","emptyProfileMessage","t","onMounted","subscribe","handleStatusUpdate","onBeforeUnmount","unsubscribe","status","openStatusModal","statusMenuItem","showError","_unref","NcContent","_createVNode","NcAppContent","_hoisted_1","_hoisted_2","_hoisted_5","_toDisplayString","NcButton","PencilIcon","_createTextVNode","_hoisted_6","_hoisted_7","_hoisted_8","NcAvatar","_hoisted_9","NcActions","_Fragment","_renderList","action","NcActionLink","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_16","MapMarkerIcon","_hoisted_17","NcRichText","section","ProfileSection","NcEmptyContent","AccountIcon","ProfileSections","#sections","logger","app","createApp","ProfileApp"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/sharebymail-admin-settings.mjs b/dist/sharebymail-admin-settings.mjs index 9cd0855d34e34..3516e9c054a68 100644 --- a/dist/sharebymail-admin-settings.mjs +++ b/dist/sharebymail-admin-settings.mjs @@ -1,2 +1,2 @@ -import{r as p,o as u,c as b,w as i,k as l,j as m,t as d,e as f}from"./Web-DYqXJUev.chunk.mjs";import{c as w}from"./index-CkGt55pS.chunk.mjs";import{a as g}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{_ as S,l as c}from"./public-C1mLBHT3.chunk.mjs";import{t as h}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as I}from"./index-BgrtITOq.chunk.mjs";import{g as k,c as M}from"./index-Cp0kcsps.chunk.mjs";import{N}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as R}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";const T=k().detectLogLevel().setApp("sharebymail").build(),V={name:"AdminSettings",components:{NcCheckboxRadioSwitch:N,NcSettingsSection:R},setup(){return{t:h}},data(){return{sendPasswordMail:c("sharebymail","sendPasswordMail"),replyToInitiator:c("sharebymail","replyToInitiator")}},watch:{sendPasswordMail(t){this.update("sendpasswordmail",t)},replyToInitiator(t){this.update("replyToInitiator",t)}},methods:{async update(t,a){await I();const s=M("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"sharebymail",key:t}),o=a?"yes":"no";try{const{data:e}=await w.post(s,{value:o});this.handleResponse({status:e.ocs?.meta?.status})}catch(e){this.handleResponse({errorMessage:h("sharebymail","Unable to update share by mail config"),error:e})}},async handleResponse({status:t,errorMessage:a,error:s}){t!=="ok"&&(g(a),T.error(a,{error:s}))}}};function v(t,a,s,o,e,x){const n=p("NcCheckboxRadioSwitch"),y=p("NcSettingsSection");return u(),b(y,{name:o.t("sharebymail","Share by mail"),description:o.t("sharebymail","Allows people to share a personalized link to a file or folder by putting in an email address.")},{default:i(()=>[l(n,{modelValue:e.sendPasswordMail,"onUpdate:modelValue":a[0]||(a[0]=r=>e.sendPasswordMail=r),type:"switch"},{default:i(()=>[m(d(o.t("sharebymail","Send password by mail")),1)]),_:1},8,["modelValue"]),l(n,{modelValue:e.replyToInitiator,"onUpdate:modelValue":a[1]||(a[1]=r=>e.replyToInitiator=r),type:"switch"},{default:i(()=>[m(d(o.t("sharebymail","Reply to initiator")),1)]),_:1},8,["modelValue"])]),_:1},8,["name","description"])}const P=S(V,[["render",v]]),_=f(P);_.mount("#vue-admin-sharebymail"); +import{r as p,o as u,c as b,w as i,k as l,j as m,t as d,e as f}from"./Web-DYqXJUev.chunk.mjs";import{c as w}from"./index-CkGt55pS.chunk.mjs";import{a as g}from"./index-mH69OG7L.chunk.mjs";import{_ as S,l as c}from"./public-C1mLBHT3.chunk.mjs";import{t as h}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as I}from"./index-BgrtITOq.chunk.mjs";import{g as k,c as M}from"./index-Cp0kcsps.chunk.mjs";import{N}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as R}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";const T=k().detectLogLevel().setApp("sharebymail").build(),V={name:"AdminSettings",components:{NcCheckboxRadioSwitch:N,NcSettingsSection:R},setup(){return{t:h}},data(){return{sendPasswordMail:c("sharebymail","sendPasswordMail"),replyToInitiator:c("sharebymail","replyToInitiator")}},watch:{sendPasswordMail(t){this.update("sendpasswordmail",t)},replyToInitiator(t){this.update("replyToInitiator",t)}},methods:{async update(t,a){await I();const s=M("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"sharebymail",key:t}),o=a?"yes":"no";try{const{data:e}=await w.post(s,{value:o});this.handleResponse({status:e.ocs?.meta?.status})}catch(e){this.handleResponse({errorMessage:h("sharebymail","Unable to update share by mail config"),error:e})}},async handleResponse({status:t,errorMessage:a,error:s}){t!=="ok"&&(g(a),T.error(a,{error:s}))}}};function v(t,a,s,o,e,x){const n=p("NcCheckboxRadioSwitch"),y=p("NcSettingsSection");return u(),b(y,{name:o.t("sharebymail","Share by mail"),description:o.t("sharebymail","Allows people to share a personalized link to a file or folder by putting in an email address.")},{default:i(()=>[l(n,{modelValue:e.sendPasswordMail,"onUpdate:modelValue":a[0]||(a[0]=r=>e.sendPasswordMail=r),type:"switch"},{default:i(()=>[m(d(o.t("sharebymail","Send password by mail")),1)]),_:1},8,["modelValue"]),l(n,{modelValue:e.replyToInitiator,"onUpdate:modelValue":a[1]||(a[1]=r=>e.replyToInitiator=r),type:"switch"},{default:i(()=>[m(d(o.t("sharebymail","Reply to initiator")),1)]),_:1},8,["modelValue"])]),_:1},8,["name","description"])}const P=S(V,[["render",v]]),_=f(P);_.mount("#vue-admin-sharebymail"); //# sourceMappingURL=sharebymail-admin-settings.mjs.map diff --git a/dist/sharebymail-admin-settings.mjs.map b/dist/sharebymail-admin-settings.mjs.map index 3b6f3019b9902..1683d576d3469 100644 --- a/dist/sharebymail-admin-settings.mjs.map +++ b/dist/sharebymail-admin-settings.mjs.map @@ -1 +1 @@ -{"version":3,"file":"sharebymail-admin-settings.mjs","sources":["../build/frontend/apps/sharebymail/src/logger.ts","../build/frontend/apps/sharebymail/src/components/AdminSettings.vue","../build/frontend/apps/sharebymail/src/settings-admin.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.detectLogLevel()\n\t.setApp('sharebymail')\n\t.build()\n","\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport AdminSettings from './components/AdminSettings.vue'\n\nconst app = createApp(AdminSettings)\napp.mount('#vue-admin-sharebymail')\n"],"names":["logger","getLoggerBuilder","_sfc_main","NcCheckboxRadioSwitch","NcSettingsSection","t","loadState","newValue","key","value","confirmPassword","url","generateOcsUrl","stringValue","data","axios","e","status","errorMessage","error","showError","_createBlock","_component_NcSettingsSection","$setup","_createVNode","_component_NcCheckboxRadioSwitch","$data","$event","app","createApp","AdminSettings"],"mappings":"o6BAOO,MAAMA,EAASC,IACpB,eAAA,EACA,OAAO,aAAa,EACpB,MAAA,ECoBGC,EAAU,CACd,KAAM,gBACN,WAAY,CACX,sBAAAC,EACA,kBAAAC,GAGD,OAAQ,CACP,MAAO,GAAEC,CAAA,CACV,EAEA,MAAO,CACN,MAAO,CACN,iBAAkBC,EAAU,cAAe,kBAAkB,EAC7D,iBAAkBA,EAAU,cAAe,kBAAkB,CAC9D,CACD,EAEA,MAAO,CACN,iBAAiBC,EAAU,CAC1B,KAAK,OAAO,mBAAoBA,CAAQ,CACzC,EAEA,iBAAiBA,EAAU,CAC1B,KAAK,OAAO,mBAAoBA,CAAQ,CACzC,GAGD,QAAS,CACR,MAAM,OAAOC,EAAKC,EAAO,CACxB,MAAMC,EAAe,EACrB,MAAMC,EAAMC,EAAe,0DAA2D,CACrF,MAAO,cACP,IAAAJ,EACA,EACKK,EAAcJ,EAAQ,MAAQ,KACpC,GAAI,CACH,KAAM,CAAE,KAAAK,CAAG,EAAM,MAAMC,EAAM,KAAKJ,EAAK,CACtC,MAAOE,EACP,EACD,KAAK,eAAe,CACnB,OAAQC,EAAK,KAAK,MAAM,OACxB,CACF,OAASE,EAAG,CACX,KAAK,eAAe,CACnB,aAAcX,EAAE,cAAe,uCAAuC,EACtE,MAAOW,EACP,CACF,CACD,EAEA,MAAM,eAAe,CAAE,OAAAC,EAAQ,aAAAC,EAAc,MAAAC,CAAI,EAAK,CACjDF,IAAW,OACdG,EAAUF,CAAY,EACtBlB,EAAO,MAAMkB,EAAc,CAAE,MAAAC,EAAO,EAEtC,EAEF,iGAlFCE,EAUoBC,EAAA,CATlB,KAAMC,EAAA,EAAC,cAAA,eAAA,EACP,YAAaA,EAAA,EAAC,cAAA,gGAAA,cACf,IAEwB,CAFxBC,EAEwBC,EAAA,YAFQC,EAAA,sDAAAA,EAAA,iBAAgBC,GAAE,KAAK,qBACtD,IAA+C,KAA5CJ,EAAA,EAAC,cAAA,uBAAA,CAAA,EAAA,CAAA,2BAGLC,EAEwBC,EAAA,YAFQC,EAAA,sDAAAA,EAAA,iBAAgBC,GAAE,KAAK,qBACtD,IAA4C,KAAzCJ,EAAA,EAAC,cAAA,oBAAA,CAAA,EAAA,CAAA,wFCNDK,EAAMC,EAAUC,CAAa,EACnCF,EAAI,MAAM,wBAAwB"} \ No newline at end of file +{"version":3,"file":"sharebymail-admin-settings.mjs","sources":["../build/frontend/apps/sharebymail/src/logger.ts","../build/frontend/apps/sharebymail/src/components/AdminSettings.vue","../build/frontend/apps/sharebymail/src/settings-admin.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.detectLogLevel()\n\t.setApp('sharebymail')\n\t.build()\n","\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport AdminSettings from './components/AdminSettings.vue'\n\nconst app = createApp(AdminSettings)\napp.mount('#vue-admin-sharebymail')\n"],"names":["logger","getLoggerBuilder","_sfc_main","NcCheckboxRadioSwitch","NcSettingsSection","t","loadState","newValue","key","value","confirmPassword","url","generateOcsUrl","stringValue","data","axios","e","status","errorMessage","error","showError","_createBlock","_component_NcSettingsSection","$setup","_createVNode","_component_NcCheckboxRadioSwitch","$data","$event","app","createApp","AdminSettings"],"mappings":"25BAOO,MAAMA,EAASC,IACpB,eAAA,EACA,OAAO,aAAa,EACpB,MAAA,ECoBGC,EAAU,CACd,KAAM,gBACN,WAAY,CACX,sBAAAC,EACA,kBAAAC,GAGD,OAAQ,CACP,MAAO,GAAEC,CAAA,CACV,EAEA,MAAO,CACN,MAAO,CACN,iBAAkBC,EAAU,cAAe,kBAAkB,EAC7D,iBAAkBA,EAAU,cAAe,kBAAkB,CAC9D,CACD,EAEA,MAAO,CACN,iBAAiBC,EAAU,CAC1B,KAAK,OAAO,mBAAoBA,CAAQ,CACzC,EAEA,iBAAiBA,EAAU,CAC1B,KAAK,OAAO,mBAAoBA,CAAQ,CACzC,GAGD,QAAS,CACR,MAAM,OAAOC,EAAKC,EAAO,CACxB,MAAMC,EAAe,EACrB,MAAMC,EAAMC,EAAe,0DAA2D,CACrF,MAAO,cACP,IAAAJ,EACA,EACKK,EAAcJ,EAAQ,MAAQ,KACpC,GAAI,CACH,KAAM,CAAE,KAAAK,CAAG,EAAM,MAAMC,EAAM,KAAKJ,EAAK,CACtC,MAAOE,EACP,EACD,KAAK,eAAe,CACnB,OAAQC,EAAK,KAAK,MAAM,OACxB,CACF,OAASE,EAAG,CACX,KAAK,eAAe,CACnB,aAAcX,EAAE,cAAe,uCAAuC,EACtE,MAAOW,EACP,CACF,CACD,EAEA,MAAM,eAAe,CAAE,OAAAC,EAAQ,aAAAC,EAAc,MAAAC,CAAI,EAAK,CACjDF,IAAW,OACdG,EAAUF,CAAY,EACtBlB,EAAO,MAAMkB,EAAc,CAAE,MAAAC,EAAO,EAEtC,EAEF,iGAlFCE,EAUoBC,EAAA,CATlB,KAAMC,EAAA,EAAC,cAAA,eAAA,EACP,YAAaA,EAAA,EAAC,cAAA,gGAAA,cACf,IAEwB,CAFxBC,EAEwBC,EAAA,YAFQC,EAAA,sDAAAA,EAAA,iBAAgBC,GAAE,KAAK,qBACtD,IAA+C,KAA5CJ,EAAA,EAAC,cAAA,uBAAA,CAAA,EAAA,CAAA,2BAGLC,EAEwBC,EAAA,YAFQC,EAAA,sDAAAA,EAAA,iBAAgBC,GAAE,KAAK,qBACtD,IAA4C,KAAzCJ,EAAA,EAAC,cAAA,oBAAA,CAAA,EAAA,CAAA,wFCNDK,EAAMC,EAAUC,CAAa,EACnCF,EAAI,MAAM,wBAAwB"} \ No newline at end of file diff --git a/dist/systemtags-admin.mjs b/dist/systemtags-admin.mjs index 3ceb16e459e59..e341125f2595c 100644 --- a/dist/systemtags-admin.mjs +++ b/dist/systemtags-admin.mjs @@ -1,2 +1,2 @@ -import{b as A,p as J,z as K,o as _,f as k,g,t as n,u as t,k as b,w as V,j as I,c as T,F as Q,h as W,L as X,l as f,v as h,A as Y,e as Z}from"./Web-DYqXJUev.chunk.mjs";import{d as S,a as U}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as j}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as $}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{N}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as ee}from"./index-BDlLVKOD.chunk.mjs";import{N as ae}from"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import{_ as te}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{c as se,d as le,u as ie,a as oe,b as ue,l as x,f as re}from"./api-CqKbR_Nj.chunk.mjs";import{_ as ne,l as de}from"./public-C1mLBHT3.chunk.mjs";import{N as me}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./dav-DpOWisxz.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";import"./folder-29HuacU_-YFFzfmzN.chunk.mjs";const ge=["disabled"],ce={id:"system-tag-form-heading"},ve={class:"system-tag-form__group"},ye={for:"system-tags-input"},pe={class:"system-tag-form__group"},be={for:"system-tag-name"},fe={class:"system-tag-form__group"},_e={for:"system-tag-level"},he={class:"system-tag-form__row"},Ve=A({__name:"SystemTagForm",props:{tags:{}},emits:["tag:created","tag:updated","tag:deleted"],setup(w,{emit:c}){const r=w,y=c,d=[{id:"Public",label:e("systemtags","Public")},{id:"Restricted",label:e("systemtags","Restricted")},{id:"Invisible",label:e("systemtags","Invisible")}],i=J("tagNameInput"),a=f(!1),o=f(""),u=f(""),p=f("Public"),l=f(null);K(l,s=>{u.value=s?s.displayName:"",p.value=s?F(s.userVisible,s.userAssignable):"Public"});const C=h(()=>l.value===null),D=h(()=>u.value===""),L=h(()=>u.value===""||l.value?.displayName===u.value&&F(l.value?.userVisible,l.value?.userAssignable)===p.value),z=h(()=>C.value?u.value===""&&p.value==="Public":l.value===null),O=h(()=>({Public:!0,Restricted:!0,Invisible:!1})[p.value]),M=h(()=>({Public:!0,Restricted:!1,Invisible:!1})[p.value]),P=h(()=>({displayName:u.value,userVisible:O.value,userAssignable:M.value}));function q(s){const m=r.tags.find(v=>v.id===s)||null;l.value=m}async function B(){if(C.value){await E();return}await G()}async function E(){const s={...le,...P.value};a.value=!0;try{const m=await se(s),v={...s,id:m};y("tag:created",v),S(e("systemtags","Created tag")),R()}catch{o.value=e("systemtags","Failed to create tag")}a.value=!1}async function G(){if(l.value===null)return;const s={...l.value,...P.value};a.value=!0;try{await ie(s),l.value=s,y("tag:updated",s),S(e("systemtags","Updated tag")),i.value?.focus()}catch{o.value=e("systemtags","Failed to update tag")}a.value=!1}async function H(){if(l.value!==null){a.value=!0;try{await oe(l.value),y("tag:deleted",l.value),S(e("systemtags","Deleted tag")),R()}catch{o.value=e("systemtags","Failed to delete tag")}a.value=!1}}function R(){l.value=null,o.value="",u.value="",p.value="Public",i.value?.focus()}function F(s,m){return{[[!0,!0].join(",")]:"Public",[[!0,!1].join(",")]:"Restricted",[[!1,!1].join(",")]:"Invisible"}[[s,m].join(",")]}return(s,m)=>(_(),k("form",{class:"system-tag-form",disabled:a.value,"aria-labelledby":"system-tag-form-heading",onSubmit:X(B,["prevent"]),onReset:R},[g("h4",ce,n(t(e)("systemtags","Create or edit tags")),1),g("div",ve,[g("label",ye,n(t(e)("systemtags","Search for a tag to edit")),1),b(t(ae),{modelValue:l.value,inputId:"system-tags-input",placeholder:t(e)("systemtags","Collaborative tags …"),fetchTags:!1,options:w.tags,multiple:!1,labelOutside:"","onUpdate:modelValue":q},{"no-options":V(()=>[I(n(t(e)("systemtags","No tags to select")),1)]),_:1},8,["modelValue","placeholder","options"])]),g("div",pe,[g("label",be,n(t(e)("systemtags","Tag name")),1),b(t(te),{id:"system-tag-name",ref:"tagNameInput",modelValue:u.value,"onUpdate:modelValue":m[0]||(m[0]=v=>u.value=v),error:!!o.value,helperText:o.value,labelOutside:""},null,8,["modelValue","error","helperText"])]),g("div",fe,[g("label",_e,n(t(e)("systemtags","Tag level")),1),b(t(ee),{modelValue:p.value,"onUpdate:modelValue":m[1]||(m[1]=v=>p.value=v),inputId:"system-tag-level",options:d,reduce:v=>v.id,clearable:!1,disabled:a.value,labelOutside:""},null,8,["modelValue","reduce","disabled"])]),g("div",he,[C.value?(_(),T(t(N),{key:0,type:"submit",disabled:D.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Create")),1)]),_:1},8,["disabled"])):(_(),k(Q,{key:1},[b(t(N),{type:"submit",disabled:L.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Update")),1)]),_:1},8,["disabled"]),b(t(N),{disabled:a.value,onClick:H},{default:V(()=>[I(n(t(e)("systemtags","Delete")),1)]),_:1},8,["disabled"])],64)),b(t(N),{type:"reset",disabled:z.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Reset")),1)]),_:1},8,["disabled"]),a.value?(_(),T(t(j),{key:2,name:t(e)("systemtags","Loading …"),size:32},null,8,["name"])):W("",!0)])],40,ge))}}),Ie=ne(Ve,[["__scopeId","data-v-88ba4be0"]]),Te={id:"system-tags-creation-control"},we={class:"inlineblock"},Ne={class:"settings-hint"},Se=A({__name:"SystemTagsCreationControl",setup(w){const c=f(de("systemtags","restrictSystemTagsCreationToAdmin",!1));async function r(d){try{const i=await ue(d);x.debug("updateSystemTagsDefault",{responseData:i}),y({isRestricted:d,status:i.ocs?.meta?.status})}catch(i){y({errorMessage:e("systemtags","Unable to update setting"),error:i})}}function y({isRestricted:d,status:i,errorMessage:a,error:o}){if(i==="ok"){c.value=!!d,S(d?e("systemtags","System tag creation is now restricted to administrators"):e("systemtags","System tag creation is now allowed for everybody"));return}a&&(U(a),x.error(a,{error:o}))}return(d,i)=>(_(),k("div",Te,[g("h4",we,n(t(e)("systemtags","System tag management")),1),g("p",Ne,n(t(e)("systemtags","If enabled, only administrators can create and edit tags. Accounts can still assign and remove them from files.")),1),b(t(me),{modelValue:c.value,"onUpdate:modelValue":[i[0]||(i[0]=a=>c.value=a),r],type:"switch"},{default:V(()=>[I(n(t(e)("systemtags","Restrict tag creation and editing to administrators")),1)]),_:1},8,["modelValue"])]))}}),Ce=A({__name:"SystemTagsSection",setup(w){const c=f(!1),r=f([]);Y(async()=>{c.value=!0;try{r.value=await re()}catch(a){U(e("systemtags","Failed to load tags")),x.error("Failed to load tags",{error:a})}c.value=!1});function y(a){r.value.unshift(a)}function d(a){const o=r.value.findIndex(u=>u.id===a.id);r.value.splice(o,1),r.value.unshift(a)}function i(a){const o=r.value.findIndex(u=>u.id===a.id);r.value.splice(o,1)}return(a,o)=>(_(),T(t($),{name:t(e)("systemtags","Collaborative tags"),description:t(e)("systemtags","Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them.")},{default:V(()=>[b(Se),c.value?(_(),T(t(j),{key:0,name:t(e)("systemtags","Loading collaborative tags …"),size:32},null,8,["name"])):(_(),T(Ie,{key:1,tags:r.value,"onTag:created":y,"onTag:updated":d,"onTag:deleted":i},null,8,["tags"]))]),_:1},8,["name","description"]))}}),Re=Z(Ce);Re.mount("#vue-admin-systemtags"); +import{b as A,p as J,z as K,o as _,f as k,g,t as n,u as t,k as b,w as V,j as I,c as T,F as Q,h as W,L as X,l as f,v as h,A as Y,e as Z}from"./Web-DYqXJUev.chunk.mjs";import{d as S,a as U}from"./index-mH69OG7L.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{N as j}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{N as $}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{N}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as ee}from"./index-BDlLVKOD.chunk.mjs";import{N as ae}from"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import{_ as te}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{c as se,d as le,u as ie,a as oe,b as ue,l as x,f as re}from"./api-CqKbR_Nj.chunk.mjs";import{_ as ne,l as de}from"./public-C1mLBHT3.chunk.mjs";import{N as me}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./index-Cp0kcsps.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./dav-DpOWisxz.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";import"./folder-29HuacU_-YFFzfmzN.chunk.mjs";const ge=["disabled"],ce={id:"system-tag-form-heading"},ve={class:"system-tag-form__group"},ye={for:"system-tags-input"},pe={class:"system-tag-form__group"},be={for:"system-tag-name"},fe={class:"system-tag-form__group"},_e={for:"system-tag-level"},he={class:"system-tag-form__row"},Ve=A({__name:"SystemTagForm",props:{tags:{}},emits:["tag:created","tag:updated","tag:deleted"],setup(w,{emit:c}){const r=w,y=c,d=[{id:"Public",label:e("systemtags","Public")},{id:"Restricted",label:e("systemtags","Restricted")},{id:"Invisible",label:e("systemtags","Invisible")}],i=J("tagNameInput"),a=f(!1),o=f(""),u=f(""),p=f("Public"),l=f(null);K(l,s=>{u.value=s?s.displayName:"",p.value=s?F(s.userVisible,s.userAssignable):"Public"});const C=h(()=>l.value===null),D=h(()=>u.value===""),L=h(()=>u.value===""||l.value?.displayName===u.value&&F(l.value?.userVisible,l.value?.userAssignable)===p.value),z=h(()=>C.value?u.value===""&&p.value==="Public":l.value===null),O=h(()=>({Public:!0,Restricted:!0,Invisible:!1})[p.value]),M=h(()=>({Public:!0,Restricted:!1,Invisible:!1})[p.value]),P=h(()=>({displayName:u.value,userVisible:O.value,userAssignable:M.value}));function q(s){const m=r.tags.find(v=>v.id===s)||null;l.value=m}async function B(){if(C.value){await E();return}await G()}async function E(){const s={...le,...P.value};a.value=!0;try{const m=await se(s),v={...s,id:m};y("tag:created",v),S(e("systemtags","Created tag")),R()}catch{o.value=e("systemtags","Failed to create tag")}a.value=!1}async function G(){if(l.value===null)return;const s={...l.value,...P.value};a.value=!0;try{await ie(s),l.value=s,y("tag:updated",s),S(e("systemtags","Updated tag")),i.value?.focus()}catch{o.value=e("systemtags","Failed to update tag")}a.value=!1}async function H(){if(l.value!==null){a.value=!0;try{await oe(l.value),y("tag:deleted",l.value),S(e("systemtags","Deleted tag")),R()}catch{o.value=e("systemtags","Failed to delete tag")}a.value=!1}}function R(){l.value=null,o.value="",u.value="",p.value="Public",i.value?.focus()}function F(s,m){return{[[!0,!0].join(",")]:"Public",[[!0,!1].join(",")]:"Restricted",[[!1,!1].join(",")]:"Invisible"}[[s,m].join(",")]}return(s,m)=>(_(),k("form",{class:"system-tag-form",disabled:a.value,"aria-labelledby":"system-tag-form-heading",onSubmit:X(B,["prevent"]),onReset:R},[g("h4",ce,n(t(e)("systemtags","Create or edit tags")),1),g("div",ve,[g("label",ye,n(t(e)("systemtags","Search for a tag to edit")),1),b(t(ae),{modelValue:l.value,inputId:"system-tags-input",placeholder:t(e)("systemtags","Collaborative tags …"),fetchTags:!1,options:w.tags,multiple:!1,labelOutside:"","onUpdate:modelValue":q},{"no-options":V(()=>[I(n(t(e)("systemtags","No tags to select")),1)]),_:1},8,["modelValue","placeholder","options"])]),g("div",pe,[g("label",be,n(t(e)("systemtags","Tag name")),1),b(t(te),{id:"system-tag-name",ref:"tagNameInput",modelValue:u.value,"onUpdate:modelValue":m[0]||(m[0]=v=>u.value=v),error:!!o.value,helperText:o.value,labelOutside:""},null,8,["modelValue","error","helperText"])]),g("div",fe,[g("label",_e,n(t(e)("systemtags","Tag level")),1),b(t(ee),{modelValue:p.value,"onUpdate:modelValue":m[1]||(m[1]=v=>p.value=v),inputId:"system-tag-level",options:d,reduce:v=>v.id,clearable:!1,disabled:a.value,labelOutside:""},null,8,["modelValue","reduce","disabled"])]),g("div",he,[C.value?(_(),T(t(N),{key:0,type:"submit",disabled:D.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Create")),1)]),_:1},8,["disabled"])):(_(),k(Q,{key:1},[b(t(N),{type:"submit",disabled:L.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Update")),1)]),_:1},8,["disabled"]),b(t(N),{disabled:a.value,onClick:H},{default:V(()=>[I(n(t(e)("systemtags","Delete")),1)]),_:1},8,["disabled"])],64)),b(t(N),{type:"reset",disabled:z.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Reset")),1)]),_:1},8,["disabled"]),a.value?(_(),T(t(j),{key:2,name:t(e)("systemtags","Loading …"),size:32},null,8,["name"])):W("",!0)])],40,ge))}}),Ie=ne(Ve,[["__scopeId","data-v-88ba4be0"]]),Te={id:"system-tags-creation-control"},we={class:"inlineblock"},Ne={class:"settings-hint"},Se=A({__name:"SystemTagsCreationControl",setup(w){const c=f(de("systemtags","restrictSystemTagsCreationToAdmin",!1));async function r(d){try{const i=await ue(d);x.debug("updateSystemTagsDefault",{responseData:i}),y({isRestricted:d,status:i.ocs?.meta?.status})}catch(i){y({errorMessage:e("systemtags","Unable to update setting"),error:i})}}function y({isRestricted:d,status:i,errorMessage:a,error:o}){if(i==="ok"){c.value=!!d,S(d?e("systemtags","System tag creation is now restricted to administrators"):e("systemtags","System tag creation is now allowed for everybody"));return}a&&(U(a),x.error(a,{error:o}))}return(d,i)=>(_(),k("div",Te,[g("h4",we,n(t(e)("systemtags","System tag management")),1),g("p",Ne,n(t(e)("systemtags","If enabled, only administrators can create and edit tags. Accounts can still assign and remove them from files.")),1),b(t(me),{modelValue:c.value,"onUpdate:modelValue":[i[0]||(i[0]=a=>c.value=a),r],type:"switch"},{default:V(()=>[I(n(t(e)("systemtags","Restrict tag creation and editing to administrators")),1)]),_:1},8,["modelValue"])]))}}),Ce=A({__name:"SystemTagsSection",setup(w){const c=f(!1),r=f([]);Y(async()=>{c.value=!0;try{r.value=await re()}catch(a){U(e("systemtags","Failed to load tags")),x.error("Failed to load tags",{error:a})}c.value=!1});function y(a){r.value.unshift(a)}function d(a){const o=r.value.findIndex(u=>u.id===a.id);r.value.splice(o,1),r.value.unshift(a)}function i(a){const o=r.value.findIndex(u=>u.id===a.id);r.value.splice(o,1)}return(a,o)=>(_(),T(t($),{name:t(e)("systemtags","Collaborative tags"),description:t(e)("systemtags","Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them.")},{default:V(()=>[b(Se),c.value?(_(),T(t(j),{key:0,name:t(e)("systemtags","Loading collaborative tags …"),size:32},null,8,["name"])):(_(),T(Ie,{key:1,tags:r.value,"onTag:created":y,"onTag:updated":d,"onTag:deleted":i},null,8,["tags"]))]),_:1},8,["name","description"]))}}),Re=Z(Ce);Re.mount("#vue-admin-systemtags"); //# sourceMappingURL=systemtags-admin.mjs.map diff --git a/dist/systemtags-admin.mjs.map b/dist/systemtags-admin.mjs.map index 4bfa8ac3cf8df..726b8087f3418 100644 --- a/dist/systemtags-admin.mjs.map +++ b/dist/systemtags-admin.mjs.map @@ -1 +1 @@ -{"version":3,"file":"systemtags-admin.mjs","sources":["../build/frontend/apps/systemtags/src/components/SystemTagForm.vue","../build/frontend/apps/systemtags/src/components/SystemTagsCreationControl.vue","../build/frontend/apps/systemtags/src/views/SystemTagsSection.vue","../build/frontend/apps/systemtags/src/admin.ts"],"sourcesContent":["\n\n\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport SystemTagsSection from './views/SystemTagsSection.vue'\n\nconst app = createApp(SystemTagsSection)\napp.mount('#vue-admin-systemtags')\n"],"names":["props","__props","emit","__emit","tagLevelOptions","t","tagNameInputElement","useTemplateRef","loading","ref","errorMessage","tagName","tagLevel","selectedTag","watch","tag","getTagLevel","isCreating","computed","isCreateDisabled","isUpdateDisabled","isResetDisabled","userVisible","userAssignable","tagProperties","onSelectTag","tagId","search","handleSubmit","create","update","defaultBaseTag","id","createTag","createdTag","showSuccess","reset","updateTag","handleDelete","deleteTag","_createElementBlock","_createElementVNode","_hoisted_2","_toDisplayString","_unref","_hoisted_3","_hoisted_4","_createVNode","NcSelectTags","_hoisted_5","_hoisted_6","NcTextField","$event","_hoisted_7","_hoisted_8","NcSelect","level","_hoisted_9","_createBlock","NcButton","_Fragment","NcLoadingIcon","systemTagsCreationRestrictedToAdmin","loadState","updateSystemTagsDefault","isRestricted","responseData","updateSystemTagsAdminRestriction","logger","handleResponse","e","status","error","showError","_openBlock","_hoisted_1","NcCheckboxRadioSwitch","loadingTags","tags","onBeforeMount","fetchTags","handleCreate","handleUpdate","tagIndex","currTag","NcSettingsSection","SystemTagsCreationControl","SystemTagForm","app","createApp","SystemTagsSection"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"systemtags-admin.mjs","sources":["../build/frontend/apps/systemtags/src/components/SystemTagForm.vue","../build/frontend/apps/systemtags/src/components/SystemTagsCreationControl.vue","../build/frontend/apps/systemtags/src/views/SystemTagsSection.vue","../build/frontend/apps/systemtags/src/admin.ts"],"sourcesContent":["\n\n\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport SystemTagsSection from './views/SystemTagsSection.vue'\n\nconst app = createApp(SystemTagsSection)\napp.mount('#vue-admin-systemtags')\n"],"names":["props","__props","emit","__emit","tagLevelOptions","t","tagNameInputElement","useTemplateRef","loading","ref","errorMessage","tagName","tagLevel","selectedTag","watch","tag","getTagLevel","isCreating","computed","isCreateDisabled","isUpdateDisabled","isResetDisabled","userVisible","userAssignable","tagProperties","onSelectTag","tagId","search","handleSubmit","create","update","defaultBaseTag","id","createTag","createdTag","showSuccess","reset","updateTag","handleDelete","deleteTag","_createElementBlock","_createElementVNode","_hoisted_2","_toDisplayString","_unref","_hoisted_3","_hoisted_4","_createVNode","NcSelectTags","_hoisted_5","_hoisted_6","NcTextField","$event","_hoisted_7","_hoisted_8","NcSelect","level","_hoisted_9","_createBlock","NcButton","_Fragment","NcLoadingIcon","systemTagsCreationRestrictedToAdmin","loadState","updateSystemTagsDefault","isRestricted","responseData","updateSystemTagsAdminRestriction","logger","handleResponse","e","status","error","showError","_openBlock","_hoisted_1","NcCheckboxRadioSwitch","loadingTags","tags","onBeforeMount","fetchTags","handleCreate","handleUpdate","tagIndex","currTag","NcSettingsSection","SystemTagsCreationControl","SystemTagForm","app","createApp","SystemTagsSection"],"mappings":"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"} \ No newline at end of file diff --git a/dist/systemtags-init.mjs b/dist/systemtags-init.mjs index 9e042a02bec15..7163f1d4fb99d 100644 --- a/dist/systemtags-init.mjs +++ b/dist/systemtags-init.mjs @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/SystemTagPicker-BHM6bOgM.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/Plus-Cvoorj3T.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/common-Plus-Som-mR4B.chunk.css'),window.OC.filePath('', '', 'dist/index-BRPJrOcF.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/api-CqKbR_Nj.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgrtITOq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/dav-DpOWisxz.chunk.mjs'),window.OC.filePath('', '', 'dist/index-D5zm-WFT.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-YFFzfmzN.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BGv_Bbjs.chunk.mjs'),window.OC.filePath('', '', 'dist/systemtags-SystemTagPicker-Cuy1CuD9.chunk.css')])))=>i.map(i=>d[i]); -import{d as re,b as te,V as oe,D as ae,a as C}from"./index-BGv_Bbjs.chunk.mjs";import{g as se,e as R,f as le,r as ie,a as ce,b as ue,c as he}from"./dav-DpOWisxz.chunk.mjs";import{a as U,_ as H}from"./Web-DYqXJUev.chunk.mjs";import{P,b as B,F as D}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import{t as w}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{i as de}from"./public-C1mLBHT3.chunk.mjs";import{s as J}from"./index-CmDAUQql.chunk.mjs";import{s as O,a as Z}from"./index-Cp0kcsps.chunk.mjs";import{e as ge,f as W,l as be}from"./api-CqKbR_Nj.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";const Y='';async function T({nodes:e}){const n=await J(U(()=>H(()=>import("./SystemTagPicker-BHM6bOgM.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42]),import.meta.url)),{nodes:e});return Array(e.length).fill(n)}const fe={id:"systemtags:bulk",displayName:()=>w("systemtags","Manage tags"),iconSvgInline:()=>Y,enabled({nodes:e}){return de()||e.length===0||e.some(n=>!n.isDavResource)?!1:!e.some(n=>(n.permissions&P.UPDATE)===0)},async exec(e){const[n]=await T(e);return n},execBatch:T,hotkey:{description:w("systemtags","Manage tags"),key:"t"}},me='';function pe(){re({id:"systemtags",order:20,displayName(){return w("systemtags","Add tags")},enabled(){return!0},iconSvgInline(){return me},onClick({node:e}){return J(U(()=>H(()=>import("./SystemTagPicker-BHM6bOgM.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42]),import.meta.url)),{nodes:[e]})}})}const E={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(const e in E)Object.freeze(E[e]);const N=Object.freeze(E),G=Object.create(null);for(const e in N)Object.hasOwn(N,e)&&(G[N[e]]=e);const b={to:{},get:{}};b.get=function(e){const n=e.slice(0,3).toLowerCase();let r,t;switch(n){case"hsl":{r=b.get.hsl(e),t="hsl";break}case"hwb":{r=b.get.hwb(e),t="hwb";break}default:{r=b.get.rgb(e),t="rgb";break}}return r?{model:t,value:r}:null},b.get.rgb=function(e){if(!e)return null;const n=/^#([a-f\d]{3,4})$/i,r=/^#([a-f\d]{6})([a-f\d]{2})?$/i,t=/^rgba?\(\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)\s*(?:[\s,|/]\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(%?)\s*)?\)$/i,o=/^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/i,a=/^(\w+)$/;let s=[0,0,0,1],l,i,u;if(l=e.match(r)){for(u=l[2],l=l[1],i=0;i<3;i++){const m=i*2;s[i]=Number.parseInt(l.slice(m,m+2),16)}u&&(s[3]=Number.parseInt(u,16)/255)}else if(l=e.match(n)){for(l=l[1],u=l[3],i=0;i<3;i++)s[i]=Number.parseInt(l[i]+l[i],16);u&&(s[3]=Number.parseInt(u+u,16)/255)}else if(l=e.match(t)){for(i=0;i<3;i++)s[i]=Number.parseFloat(l[i+1]);l[4]&&(s[3]=l[5]?Number.parseFloat(l[4])*.01:Number.parseFloat(l[4]))}else if(l=e.match(o)){for(i=0;i<3;i++)s[i]=Math.round(Number.parseFloat(l[i+1])*2.55);l[4]&&(s[3]=l[5]?Number.parseFloat(l[4])*.01:Number.parseFloat(l[4]))}else return(l=e.toLowerCase().match(a))?l[1]==="transparent"?[0,0,0,0]:Object.hasOwn(N,l[1])?(s=N[l[1]].slice(),s[3]=1,s):null:null;for(i=0;i<3;i++)s[i]=k(s[i],0,255);return s[3]=k(s[3],0,1),s},b.get.hsl=function(e){if(!e)return null;const n=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,r=e.match(n);if(r){const t=Number.parseFloat(r[4]),o=(Number.parseFloat(r[1])%360+360)%360,a=k(Number.parseFloat(r[2]),0,100),s=k(Number.parseFloat(r[3]),0,100),l=k(Number.isNaN(t)?1:t,0,1);return[o,a,s,l]}return null},b.get.hwb=function(e){if(!e)return null;const n=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*[\s,]\s*([+-]?[\d.]+)%\s*[\s,]\s*([+-]?[\d.]+)%\s*(?:[\s,]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,r=e.match(n);if(r){const t=Number.parseFloat(r[4]),o=(Number.parseFloat(r[1])%360+360)%360,a=k(Number.parseFloat(r[2]),0,100),s=k(Number.parseFloat(r[3]),0,100),l=k(Number.isNaN(t)?1:t,0,1);return[o,a,s,l]}return null},b.to.hex=function(...e){return"#"+j(e[0])+j(e[1])+j(e[2])+(e[3]<1?j(Math.round(e[3]*255)):"")},b.to.rgb=function(...e){return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},b.to.rgb.percent=function(...e){const n=Math.round(e[0]/255*100),r=Math.round(e[1]/255*100),t=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+n+"%, "+r+"%, "+t+"%)":"rgba("+n+"%, "+r+"%, "+t+"%, "+e[3]+")"},b.to.hsl=function(...e){return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},b.to.hwb=function(...e){let n="";return e.length>=4&&e[3]!==1&&(n=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+n+")"},b.to.keyword=function(...e){return G[e.slice(0,3)]};function k(e,n,r){return Math.min(Math.max(n,e),r)}function j(e){const n=Math.round(e).toString(16).toUpperCase();return n.length<2?"0"+n:n}const q={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(const e in q)Object.freeze(q[e]);const A=Object.freeze(q),K={};for(const e of Object.keys(A))K[A[e]]=e;const c={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},oklab:{channels:3,labels:["okl","oka","okb"]},lch:{channels:3,labels:"lch"},oklch:{channels:3,labels:["okl","okc","okh"]},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}},y=(6/29)**3;function M(e){const n=e>.0031308?1.055*e**.4166666666666667-.055:e*12.92;return Math.min(Math.max(0,n),1)}function x(e){return e>.04045?((e+.055)/1.055)**2.4:e/12.92}for(const e of Object.keys(c)){if(!("channels"in c[e]))throw new Error("missing channels property: "+e);if(!("labels"in c[e]))throw new Error("missing channel labels property: "+e);if(c[e].labels.length!==c[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:n,labels:r}=c[e];delete c[e].channels,delete c[e].labels,Object.defineProperty(c[e],"channels",{value:n}),Object.defineProperty(c[e],"labels",{value:r})}c.rgb.hsl=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.min(n,r,t),a=Math.max(n,r,t),s=a-o;let l,i;switch(a){case o:{l=0;break}case n:{l=(r-t)/s;break}case r:{l=2+(t-n)/s;break}case t:{l=4+(n-r)/s;break}}l=Math.min(l*60,360),l<0&&(l+=360);const u=(o+a)/2;return a===o?i=0:u<=.5?i=s/(a+o):i=s/(2-a-o),[l,i*100,u*100]},c.rgb.hsv=function(e){let n,r,t,o,a;const s=e[0]/255,l=e[1]/255,i=e[2]/255,u=Math.max(s,l,i),m=u-Math.min(s,l,i),p=function(ne){return(u-ne)/6/m+1/2};if(m===0)o=0,a=0;else{switch(a=m/u,n=p(s),r=p(l),t=p(i),u){case s:{o=t-r;break}case l:{o=1/3+n-t;break}case i:{o=2/3+r-n;break}}o<0?o+=1:o>1&&(o-=1)}return[o*360,a*100,u*100]},c.rgb.hwb=function(e){const n=e[0],r=e[1];let t=e[2];const o=c.rgb.hsl(e)[0],a=1/255*Math.min(n,Math.min(r,t));return t=1-1/255*Math.max(n,Math.max(r,t)),[o,a*100,t*100]},c.rgb.oklab=function(e){const n=x(e[0]/255),r=x(e[1]/255),t=x(e[2]/255),o=Math.cbrt(.4122214708*n+.5363325363*r+.0514459929*t),a=Math.cbrt(.2119034982*n+.6806995451*r+.1073969566*t),s=Math.cbrt(.0883024619*n+.2817188376*r+.6299787005*t),l=.2104542553*o+.793617785*a-.0040720468*s,i=1.9779984951*o-2.428592205*a+.4505937099*s,u=.0259040371*o+.7827717662*a-.808675766*s;return[l*100,i*100,u*100]},c.rgb.cmyk=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.min(1-n,1-r,1-t),a=(1-n-o)/(1-o)||0,s=(1-r-o)/(1-o)||0,l=(1-t-o)/(1-o)||0;return[a*100,s*100,l*100,o*100]};function ye(e,n){return(e[0]-n[0])**2+(e[1]-n[1])**2+(e[2]-n[2])**2}c.rgb.keyword=function(e){const n=K[e];if(n)return n;let r=Number.POSITIVE_INFINITY,t;for(const o of Object.keys(A)){const a=A[o],s=ye(e,a);sy?r**(1/3):7.787*r+16/116,t=t>y?t**(1/3):7.787*t+16/116,o=o>y?o**(1/3):7.787*o+16/116;const a=116*t-16,s=500*(r-t),l=200*(t-o);return[a,s,l]},c.hsl.rgb=function(e){const n=e[0]/360,r=e[1]/100,t=e[2]/100;let o,a;if(r===0)return a=t*255,[a,a,a];const s=t<.5?t*(1+r):t+r-t*r,l=2*t-s,i=[0,0,0];for(let u=0;u<3;u++)o=n+1/3*-(u-1),o<0&&o++,o>1&&o--,6*o<1?a=l+(s-l)*6*o:2*o<1?a=s:3*o<2?a=l+(s-l)*(2/3-o)*6:a=l,i[u]=a*255;return i},c.hsl.hsv=function(e){const n=e[0];let r=e[1]/100,t=e[2]/100,o=r;const a=Math.max(t,.01);t*=2,r*=t<=1?t:2-t,o*=a<=1?a:2-a;const s=(t+r)/2,l=t===0?2*o/(a+o):2*r/(t+r);return[n,l*100,s*100]},c.hsv.rgb=function(e){const n=e[0]/60,r=e[1]/100;let t=e[2]/100;const o=Math.floor(n)%6,a=n-Math.floor(n),s=255*t*(1-r),l=255*t*(1-r*a),i=255*t*(1-r*(1-a));switch(t*=255,o){case 0:return[t,i,s];case 1:return[l,t,s];case 2:return[s,t,i];case 3:return[s,l,t];case 4:return[i,s,t];case 5:return[t,s,l]}},c.hsv.hsl=function(e){const n=e[0],r=e[1]/100,t=e[2]/100,o=Math.max(t,.01);let a,s;s=(2-r)*t;const l=(2-r)*o;return a=r*o,a/=l<=1?l:2-l,a=a||0,s/=2,[n,a*100,s*100]},c.hwb.rgb=function(e){const n=e[0]/360;let r=e[1]/100,t=e[2]/100;const o=r+t;let a;o>1&&(r/=o,t/=o);const s=Math.floor(6*n),l=1-t;a=6*n-s,(s&1)!==0&&(a=1-a);const i=r+a*(l-r);let u,m,p;switch(s){default:case 6:case 0:{u=l,m=i,p=r;break}case 1:{u=i,m=l,p=r;break}case 2:{u=r,m=l,p=i;break}case 3:{u=r,m=i,p=l;break}case 4:{u=i,m=r,p=l;break}case 5:{u=l,m=r,p=i;break}}return[u*255,m*255,p*255]},c.cmyk.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=e[3]/100,a=1-Math.min(1,n*(1-o)+o),s=1-Math.min(1,r*(1-o)+o),l=1-Math.min(1,t*(1-o)+o);return[a*255,s*255,l*255]},c.xyz.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100;let o,a,s;return o=n*3.2404542+r*-1.5371385+t*-.4985314,a=n*-.969266+r*1.8760108+t*.041556,s=n*.0556434+r*-.2040259+t*1.0572252,o=M(o),a=M(a),s=M(s),[o*255,a*255,s*255]},c.xyz.lab=function(e){let n=e[0],r=e[1],t=e[2];n/=95.047,r/=100,t/=108.883,n=n>y?n**(1/3):7.787*n+16/116,r=r>y?r**(1/3):7.787*r+16/116,t=t>y?t**(1/3):7.787*t+16/116;const o=116*r-16,a=500*(n-r),s=200*(r-t);return[o,a,s]},c.xyz.oklab=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=Math.cbrt(.8189330101*n+.3618667424*r-.1288597137*t),a=Math.cbrt(.0329845436*n+.9293118715*r+.0361456387*t),s=Math.cbrt(.0482003018*n+.2643662691*r+.633851707*t),l=.2104542553*o+.793617785*a-.0040720468*s,i=1.9779984951*o-2.428592205*a+.4505937099*s,u=.0259040371*o+.7827717662*a-.808675766*s;return[l*100,i*100,u*100]},c.oklab.oklch=function(e){return c.lab.lch(e)},c.oklab.xyz=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=(.999999998*n+.396337792*r+.215803758*t)**3,a=(1.000000008*n-.105561342*r-.063854175*t)**3,s=(1.000000055*n-.089484182*r-1.291485538*t)**3,l=1.227013851*o-.55779998*a+.281256149*s,i=-.040580178*o+1.11225687*a-.071676679*s,u=-.076381285*o-.421481978*a+1.58616322*s;return[l*100,i*100,u*100]},c.oklab.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=(n+.3963377774*r+.2158037573*t)**3,a=(n-.1055613458*r-.0638541728*t)**3,s=(n-.0894841775*r-1.291485548*t)**3,l=M(4.0767416621*o-3.3077115913*a+.2309699292*s),i=M(-1.2684380046*o+2.6097574011*a-.3413193965*s),u=M(-.0041960863*o-.7034186147*a+1.707614701*s);return[l*255,i*255,u*255]},c.oklch.oklab=function(e){return c.lch.lab(e)},c.lab.xyz=function(e){const n=e[0],r=e[1],t=e[2];let o,a,s;a=(n+16)/116,o=r/500+a,s=a-t/200;const l=a**3,i=o**3,u=s**3;return a=l>y?l:(a-16/116)/7.787,o=i>y?i:(o-16/116)/7.787,s=u>y?u:(s-16/116)/7.787,o*=95.047,a*=100,s*=108.883,[o,a,s]},c.lab.lch=function(e){const n=e[0],r=e[1],t=e[2];let o;o=Math.atan2(t,r)*360/2/Math.PI,o<0&&(o+=360);const a=Math.sqrt(r*r+t*t);return[n,a,o]},c.lch.lab=function(e){const n=e[0],r=e[1],t=e[2]/360*2*Math.PI,o=r*Math.cos(t),a=r*Math.sin(t);return[n,o,a]},c.rgb.ansi16=function(e,n=null){const[r,t,o]=e;let a=n===null?c.rgb.hsv(e)[2]:n;if(a=Math.round(a/50),a===0)return 30;let s=30+(Math.round(o/255)<<2|Math.round(t/255)<<1|Math.round(r/255));return a===2&&(s+=60),s},c.hsv.ansi16=function(e){return c.rgb.ansi16(c.hsv.rgb(e),e[2])},c.rgb.ansi256=function(e){const n=e[0],r=e[1],t=e[2];return n>>4===r>>4&&r>>4===t>>4?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(t/255*5)},c.ansi16.rgb=function(e){e=e[0];let n=e%10;if(n===0||n===7)return e>50&&(n+=3.5),n=n/10.5*255,[n,n,n];const r=(Math.trunc(e>50)+1)*.5,t=(n&1)*r*255,o=(n>>1&1)*r*255,a=(n>>2&1)*r*255;return[t,o,a]},c.ansi256.rgb=function(e){if(e=e[0],e>=232){const a=(e-232)*10+8;return[a,a,a]}e-=16;let n;const r=Math.floor(e/36)/5*255,t=Math.floor((n=e%36)/6)/5*255,o=n%6/5*255;return[r,t,o]},c.rgb.hex=function(e){const n=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".slice(n.length)+n},c.hex.rgb=function(e){const n=e.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!n)return[0,0,0];let r=n[0];n[0].length===3&&(r=[...r].map(l=>l+l).join(""));const t=Number.parseInt(r,16),o=t>>16&255,a=t>>8&255,s=t&255;return[o,a,s]},c.rgb.hcg=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.max(Math.max(n,r),t),a=Math.min(Math.min(n,r),t),s=o-a;let l;const i=s<1?a/(1-s):0;return s<=0?l=0:o===n?l=(r-t)/s%6:o===r?l=2+(t-n)/s:l=4+(n-r)/s,l/=6,l%=1,[l*360,s*100,i*100]},c.hsl.hcg=function(e){const n=e[1]/100,r=e[2]/100,t=r<.5?2*n*r:2*n*(1-r);let o=0;return t<1&&(o=(r-.5*t)/(1-t)),[e[0],t*100,o*100]},c.hsv.hcg=function(e){const n=e[1]/100,r=e[2]/100,t=n*r;let o=0;return t<1&&(o=(r-t)/(1-t)),[e[0],t*100,o*100]},c.hcg.rgb=function(e){const n=e[0]/360,r=e[1]/100,t=e[2]/100;if(r===0)return[t*255,t*255,t*255];const o=[0,0,0],a=n%1*6,s=a%1,l=1-s;let i=0;switch(Math.floor(a)){case 0:{o[0]=1,o[1]=s,o[2]=0;break}case 1:{o[0]=l,o[1]=1,o[2]=0;break}case 2:{o[0]=0,o[1]=1,o[2]=s;break}case 3:{o[0]=0,o[1]=l,o[2]=1;break}case 4:{o[0]=s,o[1]=0,o[2]=1;break}default:o[0]=1,o[1]=0,o[2]=l}return i=(1-r)*t,[(r*o[0]+i)*255,(r*o[1]+i)*255,(r*o[2]+i)*255]},c.hcg.hsv=function(e){const n=e[1]/100,r=e[2]/100,t=n+r*(1-n);let o=0;return t>0&&(o=n/t),[e[0],o*100,t*100]},c.hcg.hsl=function(e){const n=e[1]/100,r=e[2]/100*(1-n)+.5*n;let t=0;return r>0&&r<.5?t=n/(2*r):r>=.5&&r<1&&(t=n/(2*(1-r))),[e[0],t*100,r*100]},c.hcg.hwb=function(e){const n=e[1]/100,r=e[2]/100,t=n+r*(1-n);return[e[0],(t-n)*100,(1-t)*100]},c.hwb.hcg=function(e){const n=e[1]/100,r=1-e[2]/100,t=r-n;let o=0;return t<1&&(o=(r-t)/(1-t)),[e[0],t*100,o*100]},c.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},c.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},c.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},c.gray.hsl=function(e){return[0,0,e[0]]},c.gray.hsv=c.gray.hsl,c.gray.hwb=function(e){return[0,100,e[0]]},c.gray.cmyk=function(e){return[0,0,0,e[0]]},c.gray.lab=function(e){return[e[0],0,0]},c.gray.hex=function(e){const n=Math.round(e[0]/100*255)&255,r=((n<<16)+(n<<8)+n).toString(16).toUpperCase();return"000000".slice(r.length)+r},c.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};function we(){const e={},n=Object.keys(c);for(let{length:r}=n,t=0;t0;){const t=r.pop(),o=Object.keys(c[t]);for(let{length:a}=o,s=0;s1&&(r=t),e(r))};return"conversion"in e&&(n.conversion=e.conversion),n}function Oe(e){const n=function(...r){const t=r[0];if(t==null)return t;t.length>1&&(r=t);const o=e(r);if(typeof o=="object")for(let{length:a}=o,s=0;s0){this.model=n||"rgb",t=f[this.model].channels;const o=Array.prototype.slice.call(e,0,t);this.color=z(o,t),this.valpha=typeof e[t]=="number"?e[t]:1}else if(typeof e=="number")this.model="rgb",this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;const o=Object.keys(e);"alpha"in e&&(o.splice(o.indexOf("alpha"),1),this.valpha=typeof e.alpha=="number"?e.alpha:0);const a=o.sort().join("");if(!(a in F))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=F[a];const{labels:s}=f[this.model],l=[];for(r=0;r(e%360+360)%360),saturationl:h("hsl",1,g(100)),lightness:h("hsl",2,g(100)),saturationv:h("hsv",1,g(100)),value:h("hsv",2,g(100)),chroma:h("hcg",1,g(100)),gray:h("hcg",2,g(100)),white:h("hwb",1,g(100)),wblack:h("hwb",2,g(100)),cyan:h("cmyk",0,g(100)),magenta:h("cmyk",1,g(100)),yellow:h("cmyk",2,g(100)),black:h("cmyk",3,g(100)),x:h("xyz",0,g(95.047)),y:h("xyz",1,g(100)),z:h("xyz",2,g(108.833)),l:h("lab",0,g(100)),a:h("lab",1),b:h("lab",2),keyword(e){return e!==void 0?new d(e):f[this.model].keyword(this.color)},hex(e){return e!==void 0?new d(e):b.to.hex(...this.rgb().round().color)},hexa(e){if(e!==void 0)return new d(e);const n=this.rgb().round().color;let r=Math.round(this.valpha*255).toString(16).toUpperCase();return r.length===1&&(r="0"+r),b.to.hex(...n)+r},rgbNumber(){const e=this.rgb().color;return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255},luminosity(){const e=this.rgb().color,n=[];for(const[r,t]of e.entries()){const o=t/255;n[r]=o<=.04045?o/12.92:((o+.055)/1.055)**2.4}return .2126*n[0]+.7152*n[1]+.0722*n[2]},contrast(e){const n=this.luminosity(),r=e.luminosity();return n>r?(n+.05)/(r+.05):(r+.05)/(n+.05)},level(e){const n=this.contrast(e);return n>=7?"AAA":n>=4.5?"AA":""},isDark(){const e=this.rgb().color;return(e[0]*2126+e[1]*7152+e[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){const e=this.rgb();for(let n=0;n<3;n++)e.color[n]=255-e.color[n];return e},lighten(e){const n=this.hsl();return n.color[2]+=n.color[2]*e,n},darken(e){const n=this.hsl();return n.color[2]-=n.color[2]*e,n},saturate(e){const n=this.hsl();return n.color[1]+=n.color[1]*e,n},desaturate(e){const n=this.hsl();return n.color[1]-=n.color[1]*e,n},whiten(e){const n=this.hwb();return n.color[1]+=n.color[1]*e,n},blacken(e){const n=this.hwb();return n.color[2]+=n.color[2]*e,n},grayscale(){const e=this.rgb().color,n=e[0]*.3+e[1]*.59+e[2]*.11;return d.rgb(n,n,n)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){const n=this.hsl();let r=n.color[0];return r=(r+e)%360,r=r<0?360+r:r,n.color[0]=r,n},mix(e,n){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);const r=e.rgb(),t=this.rgb(),o=n===void 0?.5:n,a=2*o-1,s=r.alpha()-t.alpha(),l=((a*s===-1?a:(a+s)/(1+a*s))+1)/2,i=1-l;return d.rgb(l*r.red()+i*t.red(),l*r.green()+i*t.green(),l*r.blue()+i*t.blue(),r.alpha()*o+t.alpha()*(1-o))}};for(const e of Object.keys(f)){if(Q.includes(e))continue;const{channels:n}=f[e];d.prototype[e]=function(...r){return this.model===e?new d(this):r.length>0?new d(r,e):new d([...Ie(f[this.model][e].raw(this.color)),this.valpha],e)},d[e]=function(...r){let t=r[0];return typeof t=="number"&&(t=z(r,n)),new d(t,e)}}function je(e,n){return Number(e.toFixed(n))}function Le(e){return function(n){return je(n,e)}}function h(e,n,r){e=Array.isArray(e)?e:[e];for(const t of e)(S[t]||=[])[n]=r;return e=e[0],function(t){let o;return t!==void 0?(r&&(t=r(t)),o=this[e](),o.color[n]=t,o):(o=this[e]().color[n],r&&(o=r(o)),o)}}function g(e){return function(n){return Math.max(0,Math.min(e,n))}}function Ie(e){return Array.isArray(e)?e:[e]}function z(e,n){for(let r=0;r.6}function Fe(e,n){const r=qe(n),t=Se(n,r?e:"#ffffff",66);let o=_(e,t);const a=Ee()?5.6:3.2;let s=0,l=e;const i=(r?-100:100)/255;for(;o(a/=255,a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4))),[r,t,o]=n;return .2126*r+.7152*t+.0722*o}function _(e,n){const r=$(e)+.05,t=$(n)+.05;return Math.max(r,t)/Math.min(r,t)}function ze(e){return new d(e).rgb().array()}function $e(e){const n=new d(e).hsl();return{h:n.color[0],s:n.color[1],l:n.color[2]}}function _e(e){return new d(e).hex()}const v=[],Pe={id:"system-tags",displayName:()=>"",iconSvgInline:()=>"",enabled({nodes:e}){return e.length===1},async exec(){return null},async renderInline({nodes:e}){return e.length!==1||!e[0]?null:await X(e[0])},order:0};O("systemtags:node:updated",De),O("systemtags:tag:created",Te),O("systemtags:tag:deleted",Ve),O("systemtags:tag:updated",Re);async function De(e){const n=await X(e),r=document.querySelectorAll(`[data-systemtags-fileid="${e.id}"]`);for(const t of r)t.replaceWith(n)}function Te(e){v.push(e)}function Ve(e){v.splice(v.findIndex(n=>n.id===e.id),1)}function Re(e){const n=v.findIndex(r=>r.id===e.id);n!==-1&&(v[n]=e),Ue(e)}function Ue(e){document.querySelectorAll(`[data-systemtag-name="${e.displayName}"]`).forEach(n=>{n.style.setProperty("--systemtag-color",`#${e.color}`)})}function L(e,n=!1){const r=document.createElement("li");r.classList.add("files-list__system-tag"),r.setAttribute("data-systemtag-name",e),r.textContent=e;const t=v.find(o=>o.displayName===e);if(t?.color){const o=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||(Ce()?"000000":"ffffff"),a=Fe(`#${t.color}`,`#${o}`);r.style.setProperty("--systemtag-color",a),r.setAttribute("data-systemtag-color","true")}return n&&r.classList.add("files-list__system-tag--more"),r}async function X(e){const n=ge(e),r=document.createElement("div");if(r.setAttribute("data-systemtags-fileid",e.id||""),n.length>0){const t=document.createElement("ul");if(t.classList.add("files-list__system-tags"),t.setAttribute("aria-label",w("files","Assigned collaborative tags")),r.appendChild(t),v.length===0)try{v.push(...await W())}catch(o){be.error("Failed to fetch tags",{error:o})}if(t.append(L(n[0])),n.length===2)t.append(L(n[1]));else if(n.length>1){const o=L("+"+(n.length-1),!0);o.setAttribute("title",n.slice(1).join(", ")),o.setAttribute("aria-hidden","true"),o.setAttribute("role","presentation"),t.append(o);for(const a of n.slice(1)){const s=L(a);s.classList.add("hidden-visually"),t.append(s)}}}return r}const I="/systemtags",He=se();function Be(e){return` +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/SystemTagPicker-Bys_E8hA.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/index-mH69OG7L.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcCheckboxRadioSwitch-DVdt5Hkq-Ct9ZGMmH.chunk.css'),window.OC.filePath('', '', 'dist/Plus-Cvoorj3T.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DhyEf5vr.chunk.mjs'),window.OC.filePath('', '', 'dist/common-PencilOutline-B3DMd8SU.chunk.css'),window.OC.filePath('', '', 'dist/common-Plus-Som-mR4B.chunk.css'),window.OC.filePath('', '', 'dist/index-BRPJrOcF.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcEmptyContent-CGAPqk4S-Don1d5Bd.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/api-CqKbR_Nj.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgrtITOq.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcPasswordField-BFyzHTOO-Crp_EMfV.chunk.css'),window.OC.filePath('', '', 'dist/dav-DpOWisxz.chunk.mjs'),window.OC.filePath('', '', 'dist/index-D5zm-WFT.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-YFFzfmzN.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BGv_Bbjs.chunk.mjs'),window.OC.filePath('', '', 'dist/systemtags-SystemTagPicker-Cuy1CuD9.chunk.css')])))=>i.map(i=>d[i]); +import{d as re,b as te,V as oe,D as ae,a as C}from"./index-BGv_Bbjs.chunk.mjs";import{g as se,e as R,f as le,r as ie,a as ce,b as ue,c as he}from"./dav-DpOWisxz.chunk.mjs";import{a as U,_ as H}from"./Web-DYqXJUev.chunk.mjs";import{P,b as B,F as D}from"./folder-29HuacU_-YFFzfmzN.chunk.mjs";import{t as w}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{i as de}from"./public-C1mLBHT3.chunk.mjs";import{s as J}from"./index-CmDAUQql.chunk.mjs";import{s as O,a as Z}from"./index-Cp0kcsps.chunk.mjs";import{e as ge,f as W,l as be}from"./api-CqKbR_Nj.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-D5zm-WFT.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./index-CkGt55pS.chunk.mjs";import"./index-BgrtITOq.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";const Y='';async function T({nodes:e}){const n=await J(U(()=>H(()=>import("./SystemTagPicker-Bys_E8hA.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42]),import.meta.url)),{nodes:e});return Array(e.length).fill(n)}const fe={id:"systemtags:bulk",displayName:()=>w("systemtags","Manage tags"),iconSvgInline:()=>Y,enabled({nodes:e}){return de()||e.length===0||e.some(n=>!n.isDavResource)?!1:!e.some(n=>(n.permissions&P.UPDATE)===0)},async exec(e){const[n]=await T(e);return n},execBatch:T,hotkey:{description:w("systemtags","Manage tags"),key:"t"}},me='';function pe(){re({id:"systemtags",order:20,displayName(){return w("systemtags","Add tags")},enabled(){return!0},iconSvgInline(){return me},onClick({node:e}){return J(U(()=>H(()=>import("./SystemTagPicker-Bys_E8hA.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42]),import.meta.url)),{nodes:[e]})}})}const E={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(const e in E)Object.freeze(E[e]);const N=Object.freeze(E),G=Object.create(null);for(const e in N)Object.hasOwn(N,e)&&(G[N[e]]=e);const b={to:{},get:{}};b.get=function(e){const n=e.slice(0,3).toLowerCase();let r,t;switch(n){case"hsl":{r=b.get.hsl(e),t="hsl";break}case"hwb":{r=b.get.hwb(e),t="hwb";break}default:{r=b.get.rgb(e),t="rgb";break}}return r?{model:t,value:r}:null},b.get.rgb=function(e){if(!e)return null;const n=/^#([a-f\d]{3,4})$/i,r=/^#([a-f\d]{6})([a-f\d]{2})?$/i,t=/^rgba?\(\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)\s*(?:[\s,|/]\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(%?)\s*)?\)$/i,o=/^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/i,a=/^(\w+)$/;let s=[0,0,0,1],l,i,u;if(l=e.match(r)){for(u=l[2],l=l[1],i=0;i<3;i++){const m=i*2;s[i]=Number.parseInt(l.slice(m,m+2),16)}u&&(s[3]=Number.parseInt(u,16)/255)}else if(l=e.match(n)){for(l=l[1],u=l[3],i=0;i<3;i++)s[i]=Number.parseInt(l[i]+l[i],16);u&&(s[3]=Number.parseInt(u+u,16)/255)}else if(l=e.match(t)){for(i=0;i<3;i++)s[i]=Number.parseFloat(l[i+1]);l[4]&&(s[3]=l[5]?Number.parseFloat(l[4])*.01:Number.parseFloat(l[4]))}else if(l=e.match(o)){for(i=0;i<3;i++)s[i]=Math.round(Number.parseFloat(l[i+1])*2.55);l[4]&&(s[3]=l[5]?Number.parseFloat(l[4])*.01:Number.parseFloat(l[4]))}else return(l=e.toLowerCase().match(a))?l[1]==="transparent"?[0,0,0,0]:Object.hasOwn(N,l[1])?(s=N[l[1]].slice(),s[3]=1,s):null:null;for(i=0;i<3;i++)s[i]=k(s[i],0,255);return s[3]=k(s[3],0,1),s},b.get.hsl=function(e){if(!e)return null;const n=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,r=e.match(n);if(r){const t=Number.parseFloat(r[4]),o=(Number.parseFloat(r[1])%360+360)%360,a=k(Number.parseFloat(r[2]),0,100),s=k(Number.parseFloat(r[3]),0,100),l=k(Number.isNaN(t)?1:t,0,1);return[o,a,s,l]}return null},b.get.hwb=function(e){if(!e)return null;const n=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*[\s,]\s*([+-]?[\d.]+)%\s*[\s,]\s*([+-]?[\d.]+)%\s*(?:[\s,]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,r=e.match(n);if(r){const t=Number.parseFloat(r[4]),o=(Number.parseFloat(r[1])%360+360)%360,a=k(Number.parseFloat(r[2]),0,100),s=k(Number.parseFloat(r[3]),0,100),l=k(Number.isNaN(t)?1:t,0,1);return[o,a,s,l]}return null},b.to.hex=function(...e){return"#"+j(e[0])+j(e[1])+j(e[2])+(e[3]<1?j(Math.round(e[3]*255)):"")},b.to.rgb=function(...e){return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},b.to.rgb.percent=function(...e){const n=Math.round(e[0]/255*100),r=Math.round(e[1]/255*100),t=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+n+"%, "+r+"%, "+t+"%)":"rgba("+n+"%, "+r+"%, "+t+"%, "+e[3]+")"},b.to.hsl=function(...e){return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},b.to.hwb=function(...e){let n="";return e.length>=4&&e[3]!==1&&(n=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+n+")"},b.to.keyword=function(...e){return G[e.slice(0,3)]};function k(e,n,r){return Math.min(Math.max(n,e),r)}function j(e){const n=Math.round(e).toString(16).toUpperCase();return n.length<2?"0"+n:n}const q={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(const e in q)Object.freeze(q[e]);const A=Object.freeze(q),K={};for(const e of Object.keys(A))K[A[e]]=e;const c={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},oklab:{channels:3,labels:["okl","oka","okb"]},lch:{channels:3,labels:"lch"},oklch:{channels:3,labels:["okl","okc","okh"]},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}},y=(6/29)**3;function M(e){const n=e>.0031308?1.055*e**.4166666666666667-.055:e*12.92;return Math.min(Math.max(0,n),1)}function x(e){return e>.04045?((e+.055)/1.055)**2.4:e/12.92}for(const e of Object.keys(c)){if(!("channels"in c[e]))throw new Error("missing channels property: "+e);if(!("labels"in c[e]))throw new Error("missing channel labels property: "+e);if(c[e].labels.length!==c[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:n,labels:r}=c[e];delete c[e].channels,delete c[e].labels,Object.defineProperty(c[e],"channels",{value:n}),Object.defineProperty(c[e],"labels",{value:r})}c.rgb.hsl=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.min(n,r,t),a=Math.max(n,r,t),s=a-o;let l,i;switch(a){case o:{l=0;break}case n:{l=(r-t)/s;break}case r:{l=2+(t-n)/s;break}case t:{l=4+(n-r)/s;break}}l=Math.min(l*60,360),l<0&&(l+=360);const u=(o+a)/2;return a===o?i=0:u<=.5?i=s/(a+o):i=s/(2-a-o),[l,i*100,u*100]},c.rgb.hsv=function(e){let n,r,t,o,a;const s=e[0]/255,l=e[1]/255,i=e[2]/255,u=Math.max(s,l,i),m=u-Math.min(s,l,i),p=function(ne){return(u-ne)/6/m+1/2};if(m===0)o=0,a=0;else{switch(a=m/u,n=p(s),r=p(l),t=p(i),u){case s:{o=t-r;break}case l:{o=1/3+n-t;break}case i:{o=2/3+r-n;break}}o<0?o+=1:o>1&&(o-=1)}return[o*360,a*100,u*100]},c.rgb.hwb=function(e){const n=e[0],r=e[1];let t=e[2];const o=c.rgb.hsl(e)[0],a=1/255*Math.min(n,Math.min(r,t));return t=1-1/255*Math.max(n,Math.max(r,t)),[o,a*100,t*100]},c.rgb.oklab=function(e){const n=x(e[0]/255),r=x(e[1]/255),t=x(e[2]/255),o=Math.cbrt(.4122214708*n+.5363325363*r+.0514459929*t),a=Math.cbrt(.2119034982*n+.6806995451*r+.1073969566*t),s=Math.cbrt(.0883024619*n+.2817188376*r+.6299787005*t),l=.2104542553*o+.793617785*a-.0040720468*s,i=1.9779984951*o-2.428592205*a+.4505937099*s,u=.0259040371*o+.7827717662*a-.808675766*s;return[l*100,i*100,u*100]},c.rgb.cmyk=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.min(1-n,1-r,1-t),a=(1-n-o)/(1-o)||0,s=(1-r-o)/(1-o)||0,l=(1-t-o)/(1-o)||0;return[a*100,s*100,l*100,o*100]};function ye(e,n){return(e[0]-n[0])**2+(e[1]-n[1])**2+(e[2]-n[2])**2}c.rgb.keyword=function(e){const n=K[e];if(n)return n;let r=Number.POSITIVE_INFINITY,t;for(const o of Object.keys(A)){const a=A[o],s=ye(e,a);sy?r**(1/3):7.787*r+16/116,t=t>y?t**(1/3):7.787*t+16/116,o=o>y?o**(1/3):7.787*o+16/116;const a=116*t-16,s=500*(r-t),l=200*(t-o);return[a,s,l]},c.hsl.rgb=function(e){const n=e[0]/360,r=e[1]/100,t=e[2]/100;let o,a;if(r===0)return a=t*255,[a,a,a];const s=t<.5?t*(1+r):t+r-t*r,l=2*t-s,i=[0,0,0];for(let u=0;u<3;u++)o=n+1/3*-(u-1),o<0&&o++,o>1&&o--,6*o<1?a=l+(s-l)*6*o:2*o<1?a=s:3*o<2?a=l+(s-l)*(2/3-o)*6:a=l,i[u]=a*255;return i},c.hsl.hsv=function(e){const n=e[0];let r=e[1]/100,t=e[2]/100,o=r;const a=Math.max(t,.01);t*=2,r*=t<=1?t:2-t,o*=a<=1?a:2-a;const s=(t+r)/2,l=t===0?2*o/(a+o):2*r/(t+r);return[n,l*100,s*100]},c.hsv.rgb=function(e){const n=e[0]/60,r=e[1]/100;let t=e[2]/100;const o=Math.floor(n)%6,a=n-Math.floor(n),s=255*t*(1-r),l=255*t*(1-r*a),i=255*t*(1-r*(1-a));switch(t*=255,o){case 0:return[t,i,s];case 1:return[l,t,s];case 2:return[s,t,i];case 3:return[s,l,t];case 4:return[i,s,t];case 5:return[t,s,l]}},c.hsv.hsl=function(e){const n=e[0],r=e[1]/100,t=e[2]/100,o=Math.max(t,.01);let a,s;s=(2-r)*t;const l=(2-r)*o;return a=r*o,a/=l<=1?l:2-l,a=a||0,s/=2,[n,a*100,s*100]},c.hwb.rgb=function(e){const n=e[0]/360;let r=e[1]/100,t=e[2]/100;const o=r+t;let a;o>1&&(r/=o,t/=o);const s=Math.floor(6*n),l=1-t;a=6*n-s,(s&1)!==0&&(a=1-a);const i=r+a*(l-r);let u,m,p;switch(s){default:case 6:case 0:{u=l,m=i,p=r;break}case 1:{u=i,m=l,p=r;break}case 2:{u=r,m=l,p=i;break}case 3:{u=r,m=i,p=l;break}case 4:{u=i,m=r,p=l;break}case 5:{u=l,m=r,p=i;break}}return[u*255,m*255,p*255]},c.cmyk.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=e[3]/100,a=1-Math.min(1,n*(1-o)+o),s=1-Math.min(1,r*(1-o)+o),l=1-Math.min(1,t*(1-o)+o);return[a*255,s*255,l*255]},c.xyz.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100;let o,a,s;return o=n*3.2404542+r*-1.5371385+t*-.4985314,a=n*-.969266+r*1.8760108+t*.041556,s=n*.0556434+r*-.2040259+t*1.0572252,o=M(o),a=M(a),s=M(s),[o*255,a*255,s*255]},c.xyz.lab=function(e){let n=e[0],r=e[1],t=e[2];n/=95.047,r/=100,t/=108.883,n=n>y?n**(1/3):7.787*n+16/116,r=r>y?r**(1/3):7.787*r+16/116,t=t>y?t**(1/3):7.787*t+16/116;const o=116*r-16,a=500*(n-r),s=200*(r-t);return[o,a,s]},c.xyz.oklab=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=Math.cbrt(.8189330101*n+.3618667424*r-.1288597137*t),a=Math.cbrt(.0329845436*n+.9293118715*r+.0361456387*t),s=Math.cbrt(.0482003018*n+.2643662691*r+.633851707*t),l=.2104542553*o+.793617785*a-.0040720468*s,i=1.9779984951*o-2.428592205*a+.4505937099*s,u=.0259040371*o+.7827717662*a-.808675766*s;return[l*100,i*100,u*100]},c.oklab.oklch=function(e){return c.lab.lch(e)},c.oklab.xyz=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=(.999999998*n+.396337792*r+.215803758*t)**3,a=(1.000000008*n-.105561342*r-.063854175*t)**3,s=(1.000000055*n-.089484182*r-1.291485538*t)**3,l=1.227013851*o-.55779998*a+.281256149*s,i=-.040580178*o+1.11225687*a-.071676679*s,u=-.076381285*o-.421481978*a+1.58616322*s;return[l*100,i*100,u*100]},c.oklab.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=(n+.3963377774*r+.2158037573*t)**3,a=(n-.1055613458*r-.0638541728*t)**3,s=(n-.0894841775*r-1.291485548*t)**3,l=M(4.0767416621*o-3.3077115913*a+.2309699292*s),i=M(-1.2684380046*o+2.6097574011*a-.3413193965*s),u=M(-.0041960863*o-.7034186147*a+1.707614701*s);return[l*255,i*255,u*255]},c.oklch.oklab=function(e){return c.lch.lab(e)},c.lab.xyz=function(e){const n=e[0],r=e[1],t=e[2];let o,a,s;a=(n+16)/116,o=r/500+a,s=a-t/200;const l=a**3,i=o**3,u=s**3;return a=l>y?l:(a-16/116)/7.787,o=i>y?i:(o-16/116)/7.787,s=u>y?u:(s-16/116)/7.787,o*=95.047,a*=100,s*=108.883,[o,a,s]},c.lab.lch=function(e){const n=e[0],r=e[1],t=e[2];let o;o=Math.atan2(t,r)*360/2/Math.PI,o<0&&(o+=360);const a=Math.sqrt(r*r+t*t);return[n,a,o]},c.lch.lab=function(e){const n=e[0],r=e[1],t=e[2]/360*2*Math.PI,o=r*Math.cos(t),a=r*Math.sin(t);return[n,o,a]},c.rgb.ansi16=function(e,n=null){const[r,t,o]=e;let a=n===null?c.rgb.hsv(e)[2]:n;if(a=Math.round(a/50),a===0)return 30;let s=30+(Math.round(o/255)<<2|Math.round(t/255)<<1|Math.round(r/255));return a===2&&(s+=60),s},c.hsv.ansi16=function(e){return c.rgb.ansi16(c.hsv.rgb(e),e[2])},c.rgb.ansi256=function(e){const n=e[0],r=e[1],t=e[2];return n>>4===r>>4&&r>>4===t>>4?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(t/255*5)},c.ansi16.rgb=function(e){e=e[0];let n=e%10;if(n===0||n===7)return e>50&&(n+=3.5),n=n/10.5*255,[n,n,n];const r=(Math.trunc(e>50)+1)*.5,t=(n&1)*r*255,o=(n>>1&1)*r*255,a=(n>>2&1)*r*255;return[t,o,a]},c.ansi256.rgb=function(e){if(e=e[0],e>=232){const a=(e-232)*10+8;return[a,a,a]}e-=16;let n;const r=Math.floor(e/36)/5*255,t=Math.floor((n=e%36)/6)/5*255,o=n%6/5*255;return[r,t,o]},c.rgb.hex=function(e){const n=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".slice(n.length)+n},c.hex.rgb=function(e){const n=e.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!n)return[0,0,0];let r=n[0];n[0].length===3&&(r=[...r].map(l=>l+l).join(""));const t=Number.parseInt(r,16),o=t>>16&255,a=t>>8&255,s=t&255;return[o,a,s]},c.rgb.hcg=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.max(Math.max(n,r),t),a=Math.min(Math.min(n,r),t),s=o-a;let l;const i=s<1?a/(1-s):0;return s<=0?l=0:o===n?l=(r-t)/s%6:o===r?l=2+(t-n)/s:l=4+(n-r)/s,l/=6,l%=1,[l*360,s*100,i*100]},c.hsl.hcg=function(e){const n=e[1]/100,r=e[2]/100,t=r<.5?2*n*r:2*n*(1-r);let o=0;return t<1&&(o=(r-.5*t)/(1-t)),[e[0],t*100,o*100]},c.hsv.hcg=function(e){const n=e[1]/100,r=e[2]/100,t=n*r;let o=0;return t<1&&(o=(r-t)/(1-t)),[e[0],t*100,o*100]},c.hcg.rgb=function(e){const n=e[0]/360,r=e[1]/100,t=e[2]/100;if(r===0)return[t*255,t*255,t*255];const o=[0,0,0],a=n%1*6,s=a%1,l=1-s;let i=0;switch(Math.floor(a)){case 0:{o[0]=1,o[1]=s,o[2]=0;break}case 1:{o[0]=l,o[1]=1,o[2]=0;break}case 2:{o[0]=0,o[1]=1,o[2]=s;break}case 3:{o[0]=0,o[1]=l,o[2]=1;break}case 4:{o[0]=s,o[1]=0,o[2]=1;break}default:o[0]=1,o[1]=0,o[2]=l}return i=(1-r)*t,[(r*o[0]+i)*255,(r*o[1]+i)*255,(r*o[2]+i)*255]},c.hcg.hsv=function(e){const n=e[1]/100,r=e[2]/100,t=n+r*(1-n);let o=0;return t>0&&(o=n/t),[e[0],o*100,t*100]},c.hcg.hsl=function(e){const n=e[1]/100,r=e[2]/100*(1-n)+.5*n;let t=0;return r>0&&r<.5?t=n/(2*r):r>=.5&&r<1&&(t=n/(2*(1-r))),[e[0],t*100,r*100]},c.hcg.hwb=function(e){const n=e[1]/100,r=e[2]/100,t=n+r*(1-n);return[e[0],(t-n)*100,(1-t)*100]},c.hwb.hcg=function(e){const n=e[1]/100,r=1-e[2]/100,t=r-n;let o=0;return t<1&&(o=(r-t)/(1-t)),[e[0],t*100,o*100]},c.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},c.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},c.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},c.gray.hsl=function(e){return[0,0,e[0]]},c.gray.hsv=c.gray.hsl,c.gray.hwb=function(e){return[0,100,e[0]]},c.gray.cmyk=function(e){return[0,0,0,e[0]]},c.gray.lab=function(e){return[e[0],0,0]},c.gray.hex=function(e){const n=Math.round(e[0]/100*255)&255,r=((n<<16)+(n<<8)+n).toString(16).toUpperCase();return"000000".slice(r.length)+r},c.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};function we(){const e={},n=Object.keys(c);for(let{length:r}=n,t=0;t0;){const t=r.pop(),o=Object.keys(c[t]);for(let{length:a}=o,s=0;s1&&(r=t),e(r))};return"conversion"in e&&(n.conversion=e.conversion),n}function Oe(e){const n=function(...r){const t=r[0];if(t==null)return t;t.length>1&&(r=t);const o=e(r);if(typeof o=="object")for(let{length:a}=o,s=0;s0){this.model=n||"rgb",t=f[this.model].channels;const o=Array.prototype.slice.call(e,0,t);this.color=z(o,t),this.valpha=typeof e[t]=="number"?e[t]:1}else if(typeof e=="number")this.model="rgb",this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;const o=Object.keys(e);"alpha"in e&&(o.splice(o.indexOf("alpha"),1),this.valpha=typeof e.alpha=="number"?e.alpha:0);const a=o.sort().join("");if(!(a in F))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=F[a];const{labels:s}=f[this.model],l=[];for(r=0;r(e%360+360)%360),saturationl:h("hsl",1,g(100)),lightness:h("hsl",2,g(100)),saturationv:h("hsv",1,g(100)),value:h("hsv",2,g(100)),chroma:h("hcg",1,g(100)),gray:h("hcg",2,g(100)),white:h("hwb",1,g(100)),wblack:h("hwb",2,g(100)),cyan:h("cmyk",0,g(100)),magenta:h("cmyk",1,g(100)),yellow:h("cmyk",2,g(100)),black:h("cmyk",3,g(100)),x:h("xyz",0,g(95.047)),y:h("xyz",1,g(100)),z:h("xyz",2,g(108.833)),l:h("lab",0,g(100)),a:h("lab",1),b:h("lab",2),keyword(e){return e!==void 0?new d(e):f[this.model].keyword(this.color)},hex(e){return e!==void 0?new d(e):b.to.hex(...this.rgb().round().color)},hexa(e){if(e!==void 0)return new d(e);const n=this.rgb().round().color;let r=Math.round(this.valpha*255).toString(16).toUpperCase();return r.length===1&&(r="0"+r),b.to.hex(...n)+r},rgbNumber(){const e=this.rgb().color;return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255},luminosity(){const e=this.rgb().color,n=[];for(const[r,t]of e.entries()){const o=t/255;n[r]=o<=.04045?o/12.92:((o+.055)/1.055)**2.4}return .2126*n[0]+.7152*n[1]+.0722*n[2]},contrast(e){const n=this.luminosity(),r=e.luminosity();return n>r?(n+.05)/(r+.05):(r+.05)/(n+.05)},level(e){const n=this.contrast(e);return n>=7?"AAA":n>=4.5?"AA":""},isDark(){const e=this.rgb().color;return(e[0]*2126+e[1]*7152+e[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){const e=this.rgb();for(let n=0;n<3;n++)e.color[n]=255-e.color[n];return e},lighten(e){const n=this.hsl();return n.color[2]+=n.color[2]*e,n},darken(e){const n=this.hsl();return n.color[2]-=n.color[2]*e,n},saturate(e){const n=this.hsl();return n.color[1]+=n.color[1]*e,n},desaturate(e){const n=this.hsl();return n.color[1]-=n.color[1]*e,n},whiten(e){const n=this.hwb();return n.color[1]+=n.color[1]*e,n},blacken(e){const n=this.hwb();return n.color[2]+=n.color[2]*e,n},grayscale(){const e=this.rgb().color,n=e[0]*.3+e[1]*.59+e[2]*.11;return d.rgb(n,n,n)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){const n=this.hsl();let r=n.color[0];return r=(r+e)%360,r=r<0?360+r:r,n.color[0]=r,n},mix(e,n){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);const r=e.rgb(),t=this.rgb(),o=n===void 0?.5:n,a=2*o-1,s=r.alpha()-t.alpha(),l=((a*s===-1?a:(a+s)/(1+a*s))+1)/2,i=1-l;return d.rgb(l*r.red()+i*t.red(),l*r.green()+i*t.green(),l*r.blue()+i*t.blue(),r.alpha()*o+t.alpha()*(1-o))}};for(const e of Object.keys(f)){if(Q.includes(e))continue;const{channels:n}=f[e];d.prototype[e]=function(...r){return this.model===e?new d(this):r.length>0?new d(r,e):new d([...Ie(f[this.model][e].raw(this.color)),this.valpha],e)},d[e]=function(...r){let t=r[0];return typeof t=="number"&&(t=z(r,n)),new d(t,e)}}function je(e,n){return Number(e.toFixed(n))}function Le(e){return function(n){return je(n,e)}}function h(e,n,r){e=Array.isArray(e)?e:[e];for(const t of e)(S[t]||=[])[n]=r;return e=e[0],function(t){let o;return t!==void 0?(r&&(t=r(t)),o=this[e](),o.color[n]=t,o):(o=this[e]().color[n],r&&(o=r(o)),o)}}function g(e){return function(n){return Math.max(0,Math.min(e,n))}}function Ie(e){return Array.isArray(e)?e:[e]}function z(e,n){for(let r=0;r.6}function Fe(e,n){const r=qe(n),t=Se(n,r?e:"#ffffff",66);let o=_(e,t);const a=Ee()?5.6:3.2;let s=0,l=e;const i=(r?-100:100)/255;for(;o(a/=255,a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4))),[r,t,o]=n;return .2126*r+.7152*t+.0722*o}function _(e,n){const r=$(e)+.05,t=$(n)+.05;return Math.max(r,t)/Math.min(r,t)}function ze(e){return new d(e).rgb().array()}function $e(e){const n=new d(e).hsl();return{h:n.color[0],s:n.color[1],l:n.color[2]}}function _e(e){return new d(e).hex()}const v=[],Pe={id:"system-tags",displayName:()=>"",iconSvgInline:()=>"",enabled({nodes:e}){return e.length===1},async exec(){return null},async renderInline({nodes:e}){return e.length!==1||!e[0]?null:await X(e[0])},order:0};O("systemtags:node:updated",De),O("systemtags:tag:created",Te),O("systemtags:tag:deleted",Ve),O("systemtags:tag:updated",Re);async function De(e){const n=await X(e),r=document.querySelectorAll(`[data-systemtags-fileid="${e.id}"]`);for(const t of r)t.replaceWith(n)}function Te(e){v.push(e)}function Ve(e){v.splice(v.findIndex(n=>n.id===e.id),1)}function Re(e){const n=v.findIndex(r=>r.id===e.id);n!==-1&&(v[n]=e),Ue(e)}function Ue(e){document.querySelectorAll(`[data-systemtag-name="${e.displayName}"]`).forEach(n=>{n.style.setProperty("--systemtag-color",`#${e.color}`)})}function L(e,n=!1){const r=document.createElement("li");r.classList.add("files-list__system-tag"),r.setAttribute("data-systemtag-name",e),r.textContent=e;const t=v.find(o=>o.displayName===e);if(t?.color){const o=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||(Ce()?"000000":"ffffff"),a=Fe(`#${t.color}`,`#${o}`);r.style.setProperty("--systemtag-color",a),r.setAttribute("data-systemtag-color","true")}return n&&r.classList.add("files-list__system-tag--more"),r}async function X(e){const n=ge(e),r=document.createElement("div");if(r.setAttribute("data-systemtags-fileid",e.id||""),n.length>0){const t=document.createElement("ul");if(t.classList.add("files-list__system-tags"),t.setAttribute("aria-label",w("files","Assigned collaborative tags")),r.appendChild(t),v.length===0)try{v.push(...await W())}catch(o){be.error("Failed to fetch tags",{error:o})}if(t.append(L(n[0])),n.length===2)t.append(L(n[1]));else if(n.length>1){const o=L("+"+(n.length-1),!0);o.setAttribute("title",n.slice(1).join(", ")),o.setAttribute("aria-hidden","true"),o.setAttribute("role","presentation"),t.append(o);for(const a of n.slice(1)){const s=L(a);s.classList.add("hidden-visually"),t.append(s)}}}return r}const I="/systemtags",He=se();function Be(e){return` ${ue()} diff --git a/dist/theming-settings-admin.mjs b/dist/theming-settings-admin.mjs index 9b69a285b2f58..0ec86e0cbf3aa 100644 --- a/dist/theming-settings-admin.mjs +++ b/dist/theming-settings-admin.mjs @@ -1,2 +1,2 @@ -import{b as x,R as X,l as v,z as $,o as p,c as _,w as g,g as b,t as f,u as e,k as m,j as T,f as C,h as M,a8 as j,a9 as H,Z as te,aa as ne,q as ie,a5 as O,y as k,O as oe,i as se,v as Y,a7 as re,p as ue,F as J,e as de}from"./Web-DYqXJUev.chunk.mjs";import{l as V,_ as A}from"./public-C1mLBHT3.chunk.mjs";import{n as me,o as ee,p as ce,N as pe}from"./mdi-B6W_Xvj-.chunk.mjs";import{c as F,i as D}from"./index-CkGt55pS.chunk.mjs";import{a as U}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{t as l}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{b as w}from"./index-Cp0kcsps.chunk.mjs";import{N as q}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as ge}from"./index-BDlLVKOD.chunk.mjs";import{N as G}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{A as he,l as W,g as fe,r as S}from"./refreshStyles-BSZrKhKf.chunk.mjs";import{N as E}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{_ as ye}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{w as ae}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{N as z}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import ve from"./index-BRPJrOcF.chunk.mjs";import{N as R}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";const be={class:"info-note"},_e=["aria-labelledby"],ke=["id"],we={class:"info-note"},Ve=x({__name:"AdminSectionAppMenu",setup(n){const d=X(),{defaultApps:a}=V("theming","adminThemingParameters"),i=V("core","apps").map(({id:t,name:r,icon:u})=>({label:r,id:t,icon:u})),o=v(a.map(t=>i.find(r=>r.id===t)).filter(Boolean));$(o,async t=>{try{await c("defaultApps",t.map(r=>r.id))}catch(r){W.error("Could not set global default apps",{error:r}),U(l("theming","Could not set global default apps"))}});const s=v(a.length>0);$(s,t=>{o.value=t?i.filter(r=>["dashboard","files"].includes(r.id)):[]});async function c(t,r){const u=w("/apps/theming/ajax/updateAppMenu");return await F.put(u,{setting:t,value:r})}return(t,r)=>(p(),_(e(G),{name:e(l)("theming","Navigation bar settings")},{default:g(()=>[b("h3",null,f(e(l)("theming","Default app")),1),b("p",be,f(e(l)("theming","The default app is the app that is e.g. opened after login or when the logo in the menu is clicked.")),1),m(e(q),{modelValue:s.value,"onUpdate:modelValue":r[0]||(r[0]=u=>s.value=u),type:"switch"},{default:g(()=>[T(f(e(l)("theming","Use custom default app")),1)]),_:1},8,["modelValue"]),s.value?(p(),C("section",{key:0,"aria-labelledby":e(d)},[b("h4",{id:e(d)},f(e(l)("theming","Global default app")),9,ke),m(e(ge),{modelValue:o.value,"onUpdate:modelValue":r[1]||(r[1]=u=>o.value=u),keepOpen:"",multiple:"",placeholder:e(l)("theming","Global default apps"),options:e(i)},null,8,["modelValue","placeholder","options"]),b("h5",null,f(e(l)("theming","Default app priority")),1),b("p",we,f(e(l)("theming","If an app is not enabled for a user, the next app with lower priority is used.")),1),m(he,{modelValue:o.value,"onUpdate:modelValue":r[2]||(r[2]=u=>o.value=u)},null,8,["modelValue"])],8,_e)):M("",!0)]),_:1},8,["name"]))}}),Fe=A(Ve,[["__scopeId","data-v-a9baec70"]]);function Z(n,d,a){let i=!1;const o=v(!1),s=v(!1);ae(d,async()=>{if(!o.value){if(i){i=!1;return}o.value=!0,s.value=!1;try{await Te(j(n),j(d)),s.value=!0,window.setTimeout(()=>{s.value=!1},2e3)}finally{o.value=!1}}},{debounce:800,flush:"sync"});async function c(){o.value=!0,s.value=!1;try{const t=await Ue(j(n));t&&te(a)&&!ne(a)&&(a.value=t),i=!0,d.value=j(a)}finally{o.value=!1}}return{isSaving:H(o),isSaved:H(s),reset:c}}async function Te(n,d){const a=w("/apps/theming/ajax/updateStylesheet");try{await F.post(a,{setting:n,value:String(d)})}catch(i){throw W.error("Failed to save changes",{error:i,setting:n,value:d}),D(i)&&i.response?.data?.data?.message&&U(i.response.data.data.message),i}}async function Ue(n){const d=w("/apps/theming/ajax/undoChanges");try{const{data:a}=await F.post(d,{setting:n});return a.data.value}catch(a){if(W.error("Failed to reset theming value",{error:a,setting:n}),D(a)&&a.response?.data?.data?.message)return U(a.response.data.data.message),!1;throw a}}const I=x({__name:"TextField",props:{name:{},label:{},defaultValue:{},type:{default:"text"}},setup(n){const d=n,a=v(V("theming","adminThemingParameters")[d.name].toString()),{isSaving:i,isSaved:o,reset:s}=Z(O(()=>d.name),a,O(()=>d.defaultValue));return ae(a,c=>{if(d.type==="url"&&c.includes('"'))try{const t=new URL(c);t.pathname=t.pathname.replaceAll(/"/g,"%22"),a.value=t.href}catch{return}},{debounce:600}),(c,t)=>(p(),_(e(ye),{modelValue:a.value,"onUpdate:modelValue":t[0]||(t[0]=r=>a.value=r),label:n.label,readonly:e(i),success:e(o),type:n.type,showTrailingButton:a.value!==n.defaultValue,trailingButtonIcon:n.defaultValue?"undo":"close",onTrailingButtonClick:e(s)},ie({_:2},[e(i)?{name:"icon",fn:g(()=>[m(e(E))]),key:"0"}:void 0]),1032,["modelValue","label","readonly","success","type","showTrailingButton","trailingButtonIcon","onTrailingButtonClick"]))}}),xe=x({__name:"AdminSectionTheming",setup(n){const d=V("theming","adminThemingInfo");return(a,i)=>(p(),_(e(G),{name:e(l)("theming","Theming"),description:e(l)("theming","Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users."),docUrl:e(d).docUrl,"data-admin-theming-settings":""},{default:g(()=>[b("div",{class:k(a.$style.adminSectionTheming)},[m(I,{name:"name",label:e(l)("theming","Name"),defaultValue:"Nextcloud",maxlength:"250"},null,8,["label"]),m(I,{name:"url",label:e(l)("theming","Web link"),defaultValue:"https://nextcloud.com",placeholder:"https://…",type:"url",maxlength:"500"},null,8,["label"]),m(I,{name:"slogan",label:e(l)("theming","Slogan"),defaultValue:e(l)("settings","a safe home for all your data"),maxlength:"500"},null,8,["label","defaultValue"]),i[0]||(i[0]=b("hr",null,null,-1)),m(I,{name:"legalNoticeUrl",label:e(l)("theming","Legal notice link"),defaultValue:"",type:"url",placeholder:"https://…",maxlength:"500"},null,8,["label"]),m(I,{name:"privacyPolicyUrl",label:e(l)("theming","Privacy policy link"),defaultValue:"",type:"url",placeholder:"https://…",maxlength:"500"},null,8,["label"])],2)]),_:1},8,["name","description","docUrl"]))}}),Pe="_adminSectionTheming_1p8pd_2",Se={adminSectionTheming:Pe},Ce={$style:Se},Ie=A(xe,[["__cssModules",Ce]]),$e=x({__name:"ColorPickerField",props:{name:{},label:{},defaultValue:{}},emits:["updated"],setup(n,{emit:d}){const a=n,i=d,o=X(),s=v(V("theming","adminThemingParameters")[a.name]),c=v(s.value);$(s,h=>{c.value=h});const{isSaving:t,reset:r}=Z(()=>a.name,s,O(a,"defaultValue"));$(t,h=>!h&&i("updated"));const u=Y(()=>fe(c.value));return(h,P)=>(p(),C("div",{class:k(h.$style.colorPickerField)},[b("div",{class:k(h.$style.colorPickerField__row)},[m(e(ve),{id:e(o),modelValue:c.value,"onUpdate:modelValue":P[0]||(P[0]=y=>c.value=y),advancedFields:"",onSubmit:P[1]||(P[1]=y=>s.value=y)},{default:g(()=>[m(e(z),{class:k(h.$style.colorPickerField__button),size:"large",variant:"primary",style:oe({"--color-primary-element":c.value,"--color-primary-element-text":u.value,"--color-primary-element-hover":"color-mix(in srgb, var(--color-primary-element) 70%, var(--color-primary-element-text))"})},{icon:g(()=>[e(t)?(p(),_(e(E),{key:0,appearance:u.value==="#ffffff"?"light":"dark"},null,8,["appearance"])):(p(),_(e(R),{key:1,path:e(me)},null,8,["path"]))]),default:g(()=>[T(" "+f(n.label),1)]),_:1},8,["class","style"])]),_:1},8,["id","modelValue"]),s.value!==n.defaultValue?(p(),_(e(z),{key:0,variant:"tertiary","aria-label":e(l)("theming","Reset to default"),title:e(l)("theming","Reset to default"),onClick:e(r)},{icon:g(()=>[m(e(R),{path:e(ee)},null,8,["path"])]),_:1},8,["aria-label","title","onClick"])):M("",!0)],2),b("p",{class:k(h.$style.colorPickerField__description)},[se(h.$slots,"description")],2)],2))}}),Ae="_colorPickerField_o0yey_2",Ne="_colorPickerField__row_o0yey_7",je="_colorPickerField__button_o0yey_14",Be="_colorPickerField__description_o0yey_18",Me={colorPickerField:Ae,colorPickerField__row:Ne,colorPickerField__button:je,colorPickerField__description:Be},ze={$style:Me},K=A($e,[["__cssModules",ze]]),Re=["aria-label"],De=["disabled","name"],We=x({__name:"FileInputField",props:{name:{},label:{},disabled:{type:Boolean}},emits:["updated"],setup(n,{emit:d}){re(y=>({v6c51c3da:r.value}));const a=n,i=d,o=v(!1),s=v(V("theming","adminThemingParameters")[a.name+"Mime"]),c=v(Date.now()),t=ue("input"),r=Y(()=>`url(${w("/apps/theming/image/{key}",{key:a.name})}?v=${c.value}&m=${encodeURIComponent(s.value)})`);function u(){o.value||(t.value.files=null,t.value.click())}async function h(){if(!t.value.files?.[0])return;const y=t.value.files[0];if(y.type&&!y.type.startsWith("image/")){U(l("theming","Non image file selected"));return}o.value=!0;const N=new FormData;N.append("image",y),N.append("key",a.name);try{await F.post(w("/apps/theming/ajax/uploadImage"),N,{headers:{"Content-Type":"multipart/form-data"}}),s.value=y.type,c.value=Date.now(),i("updated")}catch(L){if(D(L)&&L.response?.status===422){const le=L.response.data?.data?.message;U(le||l("theming","Failed to upload image"))}else U(l("theming","Failed to upload image"))}finally{o.value=!1,t.value.value=""}}async function P(){if(!o.value){o.value=!0;try{await F.post(w("/apps/theming/ajax/undoChanges"),{setting:a.name}),s.value="",i("updated")}finally{o.value=!1}}}return(y,N)=>(p(),C("div",{class:k(y.$style.fileInputField)},[m(e(z),{class:k(y.$style.fileInputField__button),alignment:"start",disabled:n.disabled,size:"large",onClick:u},{icon:g(()=>[o.value?(p(),_(e(E),{key:0})):(p(),_(e(R),{key:1,path:e(ce)},null,8,["path"]))]),default:g(()=>[T(" "+f(n.label),1)]),_:1},8,["class","disabled"]),s.value.startsWith("image/")?(p(),C("div",{key:0,class:k(y.$style.fileInputField__preview),role:"img","aria-label":e(l)("theming","Preview of the selected image")},null,10,Re)):M("",!0),s.value&&!n.disabled?(p(),_(e(z),{key:1,"aria-label":e(l)("theming","Reset to default"),title:e(l)("theming","Reset to default"),size:"large",variant:"tertiary",onClick:P},{icon:g(()=>[m(e(R),{path:e(ee)},null,8,["path"])]),_:1},8,["aria-label","title"])):M("",!0),b("input",{ref:"input",class:"hidden-visually","aria-hidden":"true",disabled:n.disabled,type:"file",accept:"image/*",name:n.name,onChange:h},null,40,De)],2))}}),Le="_fileInputField_1u7zs_2",Oe="_fileInputField__button_1u7zs_10",qe="_fileInputField__preview_1u7zs_14",Ge={fileInputField:Le,fileInputField__button:Oe,fileInputField__preview:qe},Ee={$style:Ge},B=A(We,[["__cssModules",Ee]]),Ze=x({__name:"AdminSectionThemingAdvanced",setup(n){const{defaultBackgroundColor:d}=V("theming","adminThemingInfo"),a=V("theming","adminThemingParameters"),i=v(a.disableUserTheming),{isSaving:o}=Z("disableUserTheming",i,!1),s=v(!1),c=v(a.backgroundMime==="backgroundColor");$(c,t);async function t(r){s.value=!0;try{r?(await F.post(w("/apps/theming/ajax/undoChanges"),{setting:"background"}),await F.post(w("/apps/theming/ajax/updateStylesheet"),{setting:"backgroundMime",value:"backgroundColor"})):await F.post(w("/apps/theming/ajax/undoChanges"),{setting:"backgroundMime"}),await S()}catch(u){if(W.error("Failed to remove background image",{error:u}),D(u)&&u.response?.data?.data?.message){U(u.response.data.data.message);return}throw u}finally{s.value=!1}}return(r,u)=>(p(),_(e(G),{name:e(l)("theming","Background and color")},{default:g(()=>[b("div",{class:k(r.$style.adminSectionThemingAdvanced)},[m(K,{name:"primaryColor",label:e(l)("theming","Primary color"),defaultValue:"#00679e",onUpdated:e(S)},{description:g(()=>[T(f(e(l)("theming","Set the default primary color, used to highlight important elements."))+" "+f(e(l)("theming","The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements.")),1)]),_:1},8,["label","onUpdated"]),m(K,{name:"backgroundColor",label:e(l)("theming","Background color"),defaultValue:e(d),onUpdated:e(S)},{description:g(()=>[T(f(e(l)("theming","When no background image is set the background color will be used."))+" "+f(e(l)("theming","Otherwise the background color is by default generated from the background image, but can be adjusted to fine tune the color of the navigation icons.")),1)]),_:1},8,["label","defaultValue","onUpdated"]),m(e(q),{modelValue:c.value,"onUpdate:modelValue":u[0]||(u[0]=h=>c.value=h),type:"switch",loading:s.value,description:e(l)("theming","Use a plain background color instead of a background image.")},{default:g(()=>[T(f(e(l)("theming","Remove background image")),1)]),_:1},8,["modelValue","loading","description"]),m(B,{name:"background",disabled:c.value,label:e(l)("theming","Background image"),onUpdated:e(S)},null,8,["disabled","label","onUpdated"]),m(B,{name:"favicon",label:e(l)("theming","Favicon")},null,8,["label"]),m(B,{name:"logo",label:e(l)("theming","Logo"),onUpdated:e(S)},null,8,["label","onUpdated"]),m(B,{name:"logoheader",label:e(l)("theming","Navigation bar logo"),onUpdated:e(S)},null,8,["label","onUpdated"]),u[2]||(u[2]=b("hr",null,null,-1)),m(e(q),{modelValue:i.value,"onUpdate:modelValue":u[1]||(u[1]=h=>i.value=h),type:"switch",loading:e(o),description:e(l)("theming","Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.")},{default:g(()=>[T(f(e(l)("theming","Disable user theming")),1)]),_:1},8,["modelValue","loading","description"])],2)]),_:1},8,["name"]))}}),He="_adminSectionThemingAdvanced_dyaj4_2",Je={adminSectionThemingAdvanced:He},Ke={$style:Je},Qe=A(Ze,[["__cssModules",Ke]]),Xe=x({__name:"AdminTheming",setup(n){const{isThemeable:d,notThemeableErrorMessage:a}=V("theming","adminThemingInfo");return(i,o)=>(p(),C(J,null,[e(d)?(p(),C(J,{key:1},[m(Ie),m(Qe)],64)):(p(),_(e(pe),{key:0,text:e(a),showAlert:"",type:"error"},null,8,["text"])),m(Fe)],64))}}),Q=de(Xe);Q.config.idPrefix="settings",Q.mount("#settings-admin-theming"); +import{b as x,R as X,l as v,z as $,o as p,c as _,w as g,g as b,t as f,u as e,k as m,j as T,f as C,h as M,a8 as j,a9 as H,Z as te,aa as ne,q as ie,a5 as O,y as k,O as oe,i as se,v as Y,a7 as re,p as ue,F as J,e as de}from"./Web-DYqXJUev.chunk.mjs";import{l as V,_ as A}from"./public-C1mLBHT3.chunk.mjs";import{n as me,o as ee,p as ce,N as pe}from"./mdi-B6W_Xvj-.chunk.mjs";import{c as F,i as D}from"./index-CkGt55pS.chunk.mjs";import{a as U}from"./index-mH69OG7L.chunk.mjs";import{t as l}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{b as w}from"./index-Cp0kcsps.chunk.mjs";import{N as q}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as ge}from"./index-BDlLVKOD.chunk.mjs";import{N as G}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{A as he,l as W,g as fe,r as S}from"./refreshStyles-BSZrKhKf.chunk.mjs";import{N as E}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{_ as ye}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import{w as ae}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import{N as z}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import ve from"./index-BRPJrOcF.chunk.mjs";import{N as R}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";const be={class:"info-note"},_e=["aria-labelledby"],ke=["id"],we={class:"info-note"},Ve=x({__name:"AdminSectionAppMenu",setup(n){const d=X(),{defaultApps:a}=V("theming","adminThemingParameters"),i=V("core","apps").map(({id:t,name:r,icon:u})=>({label:r,id:t,icon:u})),o=v(a.map(t=>i.find(r=>r.id===t)).filter(Boolean));$(o,async t=>{try{await c("defaultApps",t.map(r=>r.id))}catch(r){W.error("Could not set global default apps",{error:r}),U(l("theming","Could not set global default apps"))}});const s=v(a.length>0);$(s,t=>{o.value=t?i.filter(r=>["dashboard","files"].includes(r.id)):[]});async function c(t,r){const u=w("/apps/theming/ajax/updateAppMenu");return await F.put(u,{setting:t,value:r})}return(t,r)=>(p(),_(e(G),{name:e(l)("theming","Navigation bar settings")},{default:g(()=>[b("h3",null,f(e(l)("theming","Default app")),1),b("p",be,f(e(l)("theming","The default app is the app that is e.g. opened after login or when the logo in the menu is clicked.")),1),m(e(q),{modelValue:s.value,"onUpdate:modelValue":r[0]||(r[0]=u=>s.value=u),type:"switch"},{default:g(()=>[T(f(e(l)("theming","Use custom default app")),1)]),_:1},8,["modelValue"]),s.value?(p(),C("section",{key:0,"aria-labelledby":e(d)},[b("h4",{id:e(d)},f(e(l)("theming","Global default app")),9,ke),m(e(ge),{modelValue:o.value,"onUpdate:modelValue":r[1]||(r[1]=u=>o.value=u),keepOpen:"",multiple:"",placeholder:e(l)("theming","Global default apps"),options:e(i)},null,8,["modelValue","placeholder","options"]),b("h5",null,f(e(l)("theming","Default app priority")),1),b("p",we,f(e(l)("theming","If an app is not enabled for a user, the next app with lower priority is used.")),1),m(he,{modelValue:o.value,"onUpdate:modelValue":r[2]||(r[2]=u=>o.value=u)},null,8,["modelValue"])],8,_e)):M("",!0)]),_:1},8,["name"]))}}),Fe=A(Ve,[["__scopeId","data-v-a9baec70"]]);function Z(n,d,a){let i=!1;const o=v(!1),s=v(!1);ae(d,async()=>{if(!o.value){if(i){i=!1;return}o.value=!0,s.value=!1;try{await Te(j(n),j(d)),s.value=!0,window.setTimeout(()=>{s.value=!1},2e3)}finally{o.value=!1}}},{debounce:800,flush:"sync"});async function c(){o.value=!0,s.value=!1;try{const t=await Ue(j(n));t&&te(a)&&!ne(a)&&(a.value=t),i=!0,d.value=j(a)}finally{o.value=!1}}return{isSaving:H(o),isSaved:H(s),reset:c}}async function Te(n,d){const a=w("/apps/theming/ajax/updateStylesheet");try{await F.post(a,{setting:n,value:String(d)})}catch(i){throw W.error("Failed to save changes",{error:i,setting:n,value:d}),D(i)&&i.response?.data?.data?.message&&U(i.response.data.data.message),i}}async function Ue(n){const d=w("/apps/theming/ajax/undoChanges");try{const{data:a}=await F.post(d,{setting:n});return a.data.value}catch(a){if(W.error("Failed to reset theming value",{error:a,setting:n}),D(a)&&a.response?.data?.data?.message)return U(a.response.data.data.message),!1;throw a}}const I=x({__name:"TextField",props:{name:{},label:{},defaultValue:{},type:{default:"text"}},setup(n){const d=n,a=v(V("theming","adminThemingParameters")[d.name].toString()),{isSaving:i,isSaved:o,reset:s}=Z(O(()=>d.name),a,O(()=>d.defaultValue));return ae(a,c=>{if(d.type==="url"&&c.includes('"'))try{const t=new URL(c);t.pathname=t.pathname.replaceAll(/"/g,"%22"),a.value=t.href}catch{return}},{debounce:600}),(c,t)=>(p(),_(e(ye),{modelValue:a.value,"onUpdate:modelValue":t[0]||(t[0]=r=>a.value=r),label:n.label,readonly:e(i),success:e(o),type:n.type,showTrailingButton:a.value!==n.defaultValue,trailingButtonIcon:n.defaultValue?"undo":"close",onTrailingButtonClick:e(s)},ie({_:2},[e(i)?{name:"icon",fn:g(()=>[m(e(E))]),key:"0"}:void 0]),1032,["modelValue","label","readonly","success","type","showTrailingButton","trailingButtonIcon","onTrailingButtonClick"]))}}),xe=x({__name:"AdminSectionTheming",setup(n){const d=V("theming","adminThemingInfo");return(a,i)=>(p(),_(e(G),{name:e(l)("theming","Theming"),description:e(l)("theming","Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users."),docUrl:e(d).docUrl,"data-admin-theming-settings":""},{default:g(()=>[b("div",{class:k(a.$style.adminSectionTheming)},[m(I,{name:"name",label:e(l)("theming","Name"),defaultValue:"Nextcloud",maxlength:"250"},null,8,["label"]),m(I,{name:"url",label:e(l)("theming","Web link"),defaultValue:"https://nextcloud.com",placeholder:"https://…",type:"url",maxlength:"500"},null,8,["label"]),m(I,{name:"slogan",label:e(l)("theming","Slogan"),defaultValue:e(l)("settings","a safe home for all your data"),maxlength:"500"},null,8,["label","defaultValue"]),i[0]||(i[0]=b("hr",null,null,-1)),m(I,{name:"legalNoticeUrl",label:e(l)("theming","Legal notice link"),defaultValue:"",type:"url",placeholder:"https://…",maxlength:"500"},null,8,["label"]),m(I,{name:"privacyPolicyUrl",label:e(l)("theming","Privacy policy link"),defaultValue:"",type:"url",placeholder:"https://…",maxlength:"500"},null,8,["label"])],2)]),_:1},8,["name","description","docUrl"]))}}),Pe="_adminSectionTheming_1p8pd_2",Se={adminSectionTheming:Pe},Ce={$style:Se},Ie=A(xe,[["__cssModules",Ce]]),$e=x({__name:"ColorPickerField",props:{name:{},label:{},defaultValue:{}},emits:["updated"],setup(n,{emit:d}){const a=n,i=d,o=X(),s=v(V("theming","adminThemingParameters")[a.name]),c=v(s.value);$(s,h=>{c.value=h});const{isSaving:t,reset:r}=Z(()=>a.name,s,O(a,"defaultValue"));$(t,h=>!h&&i("updated"));const u=Y(()=>fe(c.value));return(h,P)=>(p(),C("div",{class:k(h.$style.colorPickerField)},[b("div",{class:k(h.$style.colorPickerField__row)},[m(e(ve),{id:e(o),modelValue:c.value,"onUpdate:modelValue":P[0]||(P[0]=y=>c.value=y),advancedFields:"",onSubmit:P[1]||(P[1]=y=>s.value=y)},{default:g(()=>[m(e(z),{class:k(h.$style.colorPickerField__button),size:"large",variant:"primary",style:oe({"--color-primary-element":c.value,"--color-primary-element-text":u.value,"--color-primary-element-hover":"color-mix(in srgb, var(--color-primary-element) 70%, var(--color-primary-element-text))"})},{icon:g(()=>[e(t)?(p(),_(e(E),{key:0,appearance:u.value==="#ffffff"?"light":"dark"},null,8,["appearance"])):(p(),_(e(R),{key:1,path:e(me)},null,8,["path"]))]),default:g(()=>[T(" "+f(n.label),1)]),_:1},8,["class","style"])]),_:1},8,["id","modelValue"]),s.value!==n.defaultValue?(p(),_(e(z),{key:0,variant:"tertiary","aria-label":e(l)("theming","Reset to default"),title:e(l)("theming","Reset to default"),onClick:e(r)},{icon:g(()=>[m(e(R),{path:e(ee)},null,8,["path"])]),_:1},8,["aria-label","title","onClick"])):M("",!0)],2),b("p",{class:k(h.$style.colorPickerField__description)},[se(h.$slots,"description")],2)],2))}}),Ae="_colorPickerField_o0yey_2",Ne="_colorPickerField__row_o0yey_7",je="_colorPickerField__button_o0yey_14",Be="_colorPickerField__description_o0yey_18",Me={colorPickerField:Ae,colorPickerField__row:Ne,colorPickerField__button:je,colorPickerField__description:Be},ze={$style:Me},K=A($e,[["__cssModules",ze]]),Re=["aria-label"],De=["disabled","name"],We=x({__name:"FileInputField",props:{name:{},label:{},disabled:{type:Boolean}},emits:["updated"],setup(n,{emit:d}){re(y=>({v6c51c3da:r.value}));const a=n,i=d,o=v(!1),s=v(V("theming","adminThemingParameters")[a.name+"Mime"]),c=v(Date.now()),t=ue("input"),r=Y(()=>`url(${w("/apps/theming/image/{key}",{key:a.name})}?v=${c.value}&m=${encodeURIComponent(s.value)})`);function u(){o.value||(t.value.files=null,t.value.click())}async function h(){if(!t.value.files?.[0])return;const y=t.value.files[0];if(y.type&&!y.type.startsWith("image/")){U(l("theming","Non image file selected"));return}o.value=!0;const N=new FormData;N.append("image",y),N.append("key",a.name);try{await F.post(w("/apps/theming/ajax/uploadImage"),N,{headers:{"Content-Type":"multipart/form-data"}}),s.value=y.type,c.value=Date.now(),i("updated")}catch(L){if(D(L)&&L.response?.status===422){const le=L.response.data?.data?.message;U(le||l("theming","Failed to upload image"))}else U(l("theming","Failed to upload image"))}finally{o.value=!1,t.value.value=""}}async function P(){if(!o.value){o.value=!0;try{await F.post(w("/apps/theming/ajax/undoChanges"),{setting:a.name}),s.value="",i("updated")}finally{o.value=!1}}}return(y,N)=>(p(),C("div",{class:k(y.$style.fileInputField)},[m(e(z),{class:k(y.$style.fileInputField__button),alignment:"start",disabled:n.disabled,size:"large",onClick:u},{icon:g(()=>[o.value?(p(),_(e(E),{key:0})):(p(),_(e(R),{key:1,path:e(ce)},null,8,["path"]))]),default:g(()=>[T(" "+f(n.label),1)]),_:1},8,["class","disabled"]),s.value.startsWith("image/")?(p(),C("div",{key:0,class:k(y.$style.fileInputField__preview),role:"img","aria-label":e(l)("theming","Preview of the selected image")},null,10,Re)):M("",!0),s.value&&!n.disabled?(p(),_(e(z),{key:1,"aria-label":e(l)("theming","Reset to default"),title:e(l)("theming","Reset to default"),size:"large",variant:"tertiary",onClick:P},{icon:g(()=>[m(e(R),{path:e(ee)},null,8,["path"])]),_:1},8,["aria-label","title"])):M("",!0),b("input",{ref:"input",class:"hidden-visually","aria-hidden":"true",disabled:n.disabled,type:"file",accept:"image/*",name:n.name,onChange:h},null,40,De)],2))}}),Le="_fileInputField_1u7zs_2",Oe="_fileInputField__button_1u7zs_10",qe="_fileInputField__preview_1u7zs_14",Ge={fileInputField:Le,fileInputField__button:Oe,fileInputField__preview:qe},Ee={$style:Ge},B=A(We,[["__cssModules",Ee]]),Ze=x({__name:"AdminSectionThemingAdvanced",setup(n){const{defaultBackgroundColor:d}=V("theming","adminThemingInfo"),a=V("theming","adminThemingParameters"),i=v(a.disableUserTheming),{isSaving:o}=Z("disableUserTheming",i,!1),s=v(!1),c=v(a.backgroundMime==="backgroundColor");$(c,t);async function t(r){s.value=!0;try{r?(await F.post(w("/apps/theming/ajax/undoChanges"),{setting:"background"}),await F.post(w("/apps/theming/ajax/updateStylesheet"),{setting:"backgroundMime",value:"backgroundColor"})):await F.post(w("/apps/theming/ajax/undoChanges"),{setting:"backgroundMime"}),await S()}catch(u){if(W.error("Failed to remove background image",{error:u}),D(u)&&u.response?.data?.data?.message){U(u.response.data.data.message);return}throw u}finally{s.value=!1}}return(r,u)=>(p(),_(e(G),{name:e(l)("theming","Background and color")},{default:g(()=>[b("div",{class:k(r.$style.adminSectionThemingAdvanced)},[m(K,{name:"primaryColor",label:e(l)("theming","Primary color"),defaultValue:"#00679e",onUpdated:e(S)},{description:g(()=>[T(f(e(l)("theming","Set the default primary color, used to highlight important elements."))+" "+f(e(l)("theming","The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements.")),1)]),_:1},8,["label","onUpdated"]),m(K,{name:"backgroundColor",label:e(l)("theming","Background color"),defaultValue:e(d),onUpdated:e(S)},{description:g(()=>[T(f(e(l)("theming","When no background image is set the background color will be used."))+" "+f(e(l)("theming","Otherwise the background color is by default generated from the background image, but can be adjusted to fine tune the color of the navigation icons.")),1)]),_:1},8,["label","defaultValue","onUpdated"]),m(e(q),{modelValue:c.value,"onUpdate:modelValue":u[0]||(u[0]=h=>c.value=h),type:"switch",loading:s.value,description:e(l)("theming","Use a plain background color instead of a background image.")},{default:g(()=>[T(f(e(l)("theming","Remove background image")),1)]),_:1},8,["modelValue","loading","description"]),m(B,{name:"background",disabled:c.value,label:e(l)("theming","Background image"),onUpdated:e(S)},null,8,["disabled","label","onUpdated"]),m(B,{name:"favicon",label:e(l)("theming","Favicon")},null,8,["label"]),m(B,{name:"logo",label:e(l)("theming","Logo"),onUpdated:e(S)},null,8,["label","onUpdated"]),m(B,{name:"logoheader",label:e(l)("theming","Navigation bar logo"),onUpdated:e(S)},null,8,["label","onUpdated"]),u[2]||(u[2]=b("hr",null,null,-1)),m(e(q),{modelValue:i.value,"onUpdate:modelValue":u[1]||(u[1]=h=>i.value=h),type:"switch",loading:e(o),description:e(l)("theming","Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.")},{default:g(()=>[T(f(e(l)("theming","Disable user theming")),1)]),_:1},8,["modelValue","loading","description"])],2)]),_:1},8,["name"]))}}),He="_adminSectionThemingAdvanced_dyaj4_2",Je={adminSectionThemingAdvanced:He},Ke={$style:Je},Qe=A(Ze,[["__cssModules",Ke]]),Xe=x({__name:"AdminTheming",setup(n){const{isThemeable:d,notThemeableErrorMessage:a}=V("theming","adminThemingInfo");return(i,o)=>(p(),C(J,null,[e(d)?(p(),C(J,{key:1},[m(Ie),m(Qe)],64)):(p(),_(e(pe),{key:0,text:e(a),showAlert:"",type:"error"},null,8,["text"])),m(Fe)],64))}}),Q=de(Xe);Q.config.idPrefix="settings",Q.mount("#settings-admin-theming"); //# sourceMappingURL=theming-settings-admin.mjs.map diff --git a/dist/theming-settings-admin.mjs.map b/dist/theming-settings-admin.mjs.map index 11aa7b3724b54..0af20768e557a 100644 --- a/dist/theming-settings-admin.mjs.map +++ b/dist/theming-settings-admin.mjs.map @@ -1 +1 @@ -{"version":3,"file":"theming-settings-admin.mjs","sources":["../build/frontend/apps/theming/src/components/AdminSectionAppMenu.vue","../build/frontend/apps/theming/src/composables/useAdminThemingValue.ts","../build/frontend/apps/theming/src/components/admin/TextField.vue","../build/frontend/apps/theming/src/components/AdminSectionTheming.vue","../build/frontend/apps/theming/src/components/admin/ColorPickerField.vue","../build/frontend/apps/theming/src/components/admin/FileInputField.vue","../build/frontend/apps/theming/src/components/AdminSectionThemingAdvanced.vue","../build/frontend/apps/theming/src/views/AdminTheming.vue","../build/frontend/apps/theming/src/settings-admin.ts"],"sourcesContent":["\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRef, MaybeRefOrGetter, Ref } from 'vue'\n\nimport axios, { isAxiosError } from '@nextcloud/axios'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateUrl } from '@nextcloud/router'\nimport { watchDebounced } from '@vueuse/core'\nimport { isReadonly, isRef, readonly, ref, toValue } from 'vue'\nimport { logger } from '../utils/logger.ts'\n\n/**\n * @param name - The property name\n * @param modelValue - The model value\n * @param defaultValue - The default value\n */\nexport function useAdminThemingValue(name: MaybeRefOrGetter, modelValue: Ref, defaultValue: MaybeRef) {\n\tlet resetted = false\n\tconst isSaving = ref(false)\n\tconst isSaved = ref(false)\n\n\twatchDebounced(modelValue, async () => {\n\t\tif (isSaving.value) {\n\t\t\treturn\n\t\t}\n\n\t\tif (resetted) {\n\t\t\tresetted = false\n\t\t\treturn\n\t\t}\n\n\t\tisSaving.value = true\n\t\tisSaved.value = false\n\t\ttry {\n\t\t\tawait setValue(toValue(name), toValue(modelValue))\n\t\t\tisSaved.value = true\n\t\t\twindow.setTimeout(() => {\n\t\t\t\tisSaved.value = false\n\t\t\t}, 2000)\n\t\t} finally {\n\t\t\tisSaving.value = false\n\t\t}\n\t}, { debounce: 800, flush: 'sync' })\n\n\t/**\n\t * Reset to default value\n\t */\n\tasync function reset() {\n\t\tisSaving.value = true\n\t\tisSaved.value = false\n\t\ttry {\n\t\t\tconst result = await resetValue(toValue(name))\n\t\t\tif (result && isRef(defaultValue) && !isReadonly(defaultValue)) {\n\t\t\t\tdefaultValue.value = result as T\n\t\t\t}\n\t\t\tresetted = true\n\t\t\tmodelValue.value = toValue(defaultValue)\n\t\t} finally {\n\t\t\tisSaving.value = false\n\t\t}\n\t}\n\n\treturn {\n\t\tisSaving: readonly(isSaving),\n\t\tisSaved: readonly(isSaved),\n\t\treset,\n\t}\n}\n\n/**\n * @param setting - The setting name\n * @param value - The setting value\n */\nasync function setValue(setting: string, value: unknown) {\n\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\ttry {\n\t\tawait axios.post(url, {\n\t\t\tsetting,\n\t\t\tvalue: String(value),\n\t\t})\n\t} catch (error) {\n\t\tlogger.error('Failed to save changes', { error, setting, value })\n\t\tif (isAxiosError(error) && error.response?.data?.data?.message) {\n\t\t\tshowError(error.response.data.data.message)\n\t\t}\n\t\tthrow error\n\t}\n}\n\n/**\n * Reset theming value for a given setting\n *\n * @param setting - The setting name\n */\nasync function resetValue(setting: string) {\n\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\ttry {\n\t\tconst { data } = await axios.post<{ data: { value?: string } }>(url, { setting })\n\t\treturn data.data.value\n\t} catch (error) {\n\t\tlogger.error('Failed to reset theming value', { error, setting })\n\t\tif (isAxiosError(error) && error.response?.data?.data?.message) {\n\t\t\tshowError(error.response.data.data.message)\n\t\t\treturn false\n\t\t}\n\t\tthrow error\n\t}\n}\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport AdminTheming from './views/AdminTheming.vue'\n\nimport 'vite/modulepreload-polyfill'\n\nconst app = createApp(AdminTheming)\napp.config.idPrefix = 'settings'\napp.mount('#settings-admin-theming')\n"],"names":["idGlobalDefaultApp","useId","defaultApps","loadState","allApps","id","name","icon","selectedApps","ref","app","watch","value","saveSetting","error","logger","showError","t","hasCustomDefaultApp","checked","key","url","generateUrl","axios","_createBlock","_unref","NcSettingsSection","_createElementVNode","_hoisted_1","_toDisplayString","_createVNode","NcCheckboxRadioSwitch","$event","_createElementBlock","_hoisted_3","NcSelect","_hoisted_4","AppOrderSelector","useAdminThemingValue","modelValue","defaultValue","resetted","isSaving","isSaved","watchDebounced","setValue","toValue","reset","result","resetValue","isRef","isReadonly","readonly","setting","isAxiosError","data","props","__props","toRef","NcTextField","NcLoadingIcon","ADMIN_INFO","_normalizeClass","$style","TextField","emit","__emit","previewColor","v","textColor","computed","getTextColor","NcColorPicker","_cache","NcButton","_normalizeStyle","NcIconSvgWrapper","mdiPaletteOutline","_createTextVNode","mdiUndo","_renderSlot","_ctx","mime","cacheKey","inputElement","useTemplateRef","background","pickFile","onChange","file","formData","serverMessage","resetToDefault","mdiImageOutline","defaultBackgroundColor","adminThemingParameters","userThemingDisabled","isRemovingBackgroundImage","removeBackgroundImage","toggleBackground","refreshStyles","ColorPickerField","FileInputField","isThemeable","notThemeableErrorMessage","_Fragment","AdminSectionTheming","AdminSectionThemingAdvanced","NcNoteCard","AdminSectionAppMenu","createApp","AdminTheming"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"theming-settings-admin.mjs","sources":["../build/frontend/apps/theming/src/components/AdminSectionAppMenu.vue","../build/frontend/apps/theming/src/composables/useAdminThemingValue.ts","../build/frontend/apps/theming/src/components/admin/TextField.vue","../build/frontend/apps/theming/src/components/AdminSectionTheming.vue","../build/frontend/apps/theming/src/components/admin/ColorPickerField.vue","../build/frontend/apps/theming/src/components/admin/FileInputField.vue","../build/frontend/apps/theming/src/components/AdminSectionThemingAdvanced.vue","../build/frontend/apps/theming/src/views/AdminTheming.vue","../build/frontend/apps/theming/src/settings-admin.ts"],"sourcesContent":["\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRef, MaybeRefOrGetter, Ref } from 'vue'\n\nimport axios, { isAxiosError } from '@nextcloud/axios'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateUrl } from '@nextcloud/router'\nimport { watchDebounced } from '@vueuse/core'\nimport { isReadonly, isRef, readonly, ref, toValue } from 'vue'\nimport { logger } from '../utils/logger.ts'\n\n/**\n * @param name - The property name\n * @param modelValue - The model value\n * @param defaultValue - The default value\n */\nexport function useAdminThemingValue(name: MaybeRefOrGetter, modelValue: Ref, defaultValue: MaybeRef) {\n\tlet resetted = false\n\tconst isSaving = ref(false)\n\tconst isSaved = ref(false)\n\n\twatchDebounced(modelValue, async () => {\n\t\tif (isSaving.value) {\n\t\t\treturn\n\t\t}\n\n\t\tif (resetted) {\n\t\t\tresetted = false\n\t\t\treturn\n\t\t}\n\n\t\tisSaving.value = true\n\t\tisSaved.value = false\n\t\ttry {\n\t\t\tawait setValue(toValue(name), toValue(modelValue))\n\t\t\tisSaved.value = true\n\t\t\twindow.setTimeout(() => {\n\t\t\t\tisSaved.value = false\n\t\t\t}, 2000)\n\t\t} finally {\n\t\t\tisSaving.value = false\n\t\t}\n\t}, { debounce: 800, flush: 'sync' })\n\n\t/**\n\t * Reset to default value\n\t */\n\tasync function reset() {\n\t\tisSaving.value = true\n\t\tisSaved.value = false\n\t\ttry {\n\t\t\tconst result = await resetValue(toValue(name))\n\t\t\tif (result && isRef(defaultValue) && !isReadonly(defaultValue)) {\n\t\t\t\tdefaultValue.value = result as T\n\t\t\t}\n\t\t\tresetted = true\n\t\t\tmodelValue.value = toValue(defaultValue)\n\t\t} finally {\n\t\t\tisSaving.value = false\n\t\t}\n\t}\n\n\treturn {\n\t\tisSaving: readonly(isSaving),\n\t\tisSaved: readonly(isSaved),\n\t\treset,\n\t}\n}\n\n/**\n * @param setting - The setting name\n * @param value - The setting value\n */\nasync function setValue(setting: string, value: unknown) {\n\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\ttry {\n\t\tawait axios.post(url, {\n\t\t\tsetting,\n\t\t\tvalue: String(value),\n\t\t})\n\t} catch (error) {\n\t\tlogger.error('Failed to save changes', { error, setting, value })\n\t\tif (isAxiosError(error) && error.response?.data?.data?.message) {\n\t\t\tshowError(error.response.data.data.message)\n\t\t}\n\t\tthrow error\n\t}\n}\n\n/**\n * Reset theming value for a given setting\n *\n * @param setting - The setting name\n */\nasync function resetValue(setting: string) {\n\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\ttry {\n\t\tconst { data } = await axios.post<{ data: { value?: string } }>(url, { setting })\n\t\treturn data.data.value\n\t} catch (error) {\n\t\tlogger.error('Failed to reset theming value', { error, setting })\n\t\tif (isAxiosError(error) && error.response?.data?.data?.message) {\n\t\t\tshowError(error.response.data.data.message)\n\t\t\treturn false\n\t\t}\n\t\tthrow error\n\t}\n}\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport AdminTheming from './views/AdminTheming.vue'\n\nimport 'vite/modulepreload-polyfill'\n\nconst app = createApp(AdminTheming)\napp.config.idPrefix = 'settings'\napp.mount('#settings-admin-theming')\n"],"names":["idGlobalDefaultApp","useId","defaultApps","loadState","allApps","id","name","icon","selectedApps","ref","app","watch","value","saveSetting","error","logger","showError","t","hasCustomDefaultApp","checked","key","url","generateUrl","axios","_createBlock","_unref","NcSettingsSection","_createElementVNode","_hoisted_1","_toDisplayString","_createVNode","NcCheckboxRadioSwitch","$event","_createElementBlock","_hoisted_3","NcSelect","_hoisted_4","AppOrderSelector","useAdminThemingValue","modelValue","defaultValue","resetted","isSaving","isSaved","watchDebounced","setValue","toValue","reset","result","resetValue","isRef","isReadonly","readonly","setting","isAxiosError","data","props","__props","toRef","NcTextField","NcLoadingIcon","ADMIN_INFO","_normalizeClass","$style","TextField","emit","__emit","previewColor","v","textColor","computed","getTextColor","NcColorPicker","_cache","NcButton","_normalizeStyle","NcIconSvgWrapper","mdiPaletteOutline","_createTextVNode","mdiUndo","_renderSlot","_ctx","mime","cacheKey","inputElement","useTemplateRef","background","pickFile","onChange","file","formData","serverMessage","resetToDefault","mdiImageOutline","defaultBackgroundColor","adminThemingParameters","userThemingDisabled","isRemovingBackgroundImage","removeBackgroundImage","toggleBackground","refreshStyles","ColorPickerField","FileInputField","isThemeable","notThemeableErrorMessage","_Fragment","AdminSectionTheming","AdminSectionThemingAdvanced","NcNoteCard","AdminSectionAppMenu","createApp","AdminTheming"],"mappings":"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"} \ No newline at end of file diff --git a/dist/theming-settings-personal.mjs b/dist/theming-settings-personal.mjs index 8f6d038951507..256d9fea1be41 100644 --- a/dist/theming-settings-personal.mjs +++ b/dist/theming-settings-personal.mjs @@ -1,2 +1,2 @@ -import{b as K,n as Ve,o as c,f as S,y as x,g as h,O as F,t as v,u as n,h as j,J as Ue,K as Pe,k as I,w,j as L,s as xe,v as q,m as oe,l as H,c as _,a7 as He,F as O,B as ne,z as Ce,p as we,D as Te,e as Le}from"./Web-DYqXJUev.chunk.mjs";import{c as N,i as Be}from"./index-CkGt55pS.chunk.mjs";import{a as X,h as De}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{_ as z,l as M}from"./public-C1mLBHT3.chunk.mjs";import{t as d}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{r as Se,c as E,b as Z,d as qe}from"./index-Cp0kcsps.chunk.mjs";import{N as le}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as ie,q as G,r as ze,n as Ee,o as je}from"./mdi-B6W_Xvj-.chunk.mjs";import{N as W}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{N as Ie}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{A as Ke,l as ee,g as se,r as ue}from"./refreshStyles-BSZrKhKf.chunk.mjs";import $e from"./index-BRPJrOcF.chunk.mjs";import{N as J}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as Q}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";const Oe={class:"theming__preview-description"},Fe={class:"theming__preview-explanation"},Re={key:0,class:"theming__preview-warning",role:"note"},We=K({__name:"ThemePreviewItem",props:xe({enforced:{type:Boolean},theme:{},type:{},unique:{type:Boolean}},{selected:{type:Boolean,required:!0},selectedModifiers:{}}),emits:["update:selected"],setup(t){const e=Ve(t,"selected"),a=t,r=q(()=>a.unique?"switch":"radio"),i=q(()=>a.unique?null:a.type),s=q(()=>Se("theming","img",a.theme.id+".jpg")),o=q({get(){return e.value},set(p){a.enforced||(e.value=a.unique?p:!0)}});function m(){if(!a.enforced){if(r.value==="radio"){o.value=!0;return}o.value=!o.value}}return(p,$)=>(c(),S("div",{class:x(["theming__preview--"+t.theme.id,"theming__preview"])},[h("div",{class:"theming__preview-image",style:F({backgroundImage:"url("+s.value+")"}),onClick:m},null,4),h("div",Oe,[h("h3",null,v(t.theme.title),1),h("p",Fe,v(t.theme.description),1),t.enforced?(c(),S("span",Re,v(n(d)("theming","Theme selection is enforced")),1)):j("",!0),Ue(I(n(le),{modelValue:o.value,"onUpdate:modelValue":$[0]||($[0]=U=>o.value=U),class:"theming__preview-toggle",disabled:t.enforced,name:i.value,type:r.value},{default:w(()=>[L(v(t.theme.enableLabel),1)]),_:1},8,["modelValue","disabled","name","type"]),[[Pe,!t.enforced]])])],2))}}),de=z(We,[["__scopeId","data-v-13bf6aae"]]),Ze={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ge=["aria-hidden","aria-label"],Je=["fill","width","height"],Ye={d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"},Qe={key:0};function Xe(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon undo-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",Ye,[a.title?(c(),S("title",Qe,v(a.title),1)):j("",!0)])],8,Je))],16,Ge)}const et=z(Ze,[["render",Xe]]),ce="theming-apporder-changed-infocard",pe="theming-apporder-changed-infocard",tt=K({__name:"UserSectionAppMenu",setup(t){const{userAppOrder:e,enforcedDefaultApp:a}=M("theming","navigationBar"),r=M("core","apps").filter(({type:g})=>g==="link").map(g=>({...g,label:g.name,default:g.default&&g.id===a})),i=H([...r]),s=H(!Array.isArray(e)||Object.values(e).length>0),o=q(()=>r.some(({id:g},y)=>g!==i.value[y]?.id)),m=q(()=>(o.value?`${ce} `:"")+(a?pe:""));async function p(g){const y={};g.forEach(({app:A,id:f},C)=>{y[f]={order:C,app:A}});try{await U("apporder",y),i.value=g,s.value=!0}catch(A){ee.error("Could not set the app order",{error:A}),X(d("theming","Could not set the app order"))}}async function $(){try{await U("apporder",[]),s.value=!1;const{data:g}=await N.get(E("/core/navigation/apps"),{headers:{"OCS-APIRequest":"true"}});i.value=g.ocs.data.map(y=>({...y,label:y.name,default:y.default&&y.app===a}))}catch(g){ee.error("Could not reset the app order",{error:g}),X(d("theming","Could not reset the app order"))}}async function U(g,y){const A=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"core",configKey:g});return await N.post(A,{configValue:JSON.stringify(y)})}return(g,y)=>(c(),_(n(W),{name:n(d)("theming","Navigation bar settings")},{default:w(()=>[h("p",null,v(n(d)("theming","You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo.")),1),n(a)?(c(),_(n(ie),{key:0,id:pe,type:"info"},{default:w(()=>[L(v(n(d)("theming","The default app can not be changed because it was configured by the administrator.")),1)]),_:1})):j("",!0),o.value?(c(),_(n(ie),{key:1,id:ce,type:"info"},{default:w(()=>[L(v(n(d)("theming","The app order was changed, to see it in action you have to reload the page.")),1)]),_:1})):j("",!0),I(Ke,{class:x(g.$style.userSectionAppMenu__selector),"aria-details":m.value,modelValue:i.value,"onUpdate:modelValue":p},null,8,["class","aria-details","modelValue"]),I(n(Ie),{"data-test-id":"btn-apporder-reset",disabled:!s.value,variant:"tertiary",onClick:$},{icon:w(()=>[I(et,{size:20})]),default:w(()=>[L(" "+v(n(d)("theming","Reset default app order")),1)]),_:1},8,["disabled"])]),_:1},8,["name"]))}}),at="_userSectionAppMenu__selector_1hkl7_2",rt={userSectionAppMenu__selector:at},nt={$style:rt},it=z(tt,[["__cssModules",nt]]),ot={class:"hidden-visually"},lt=["aria-disabled","aria-pressed","aria-label","title"],st=["aria-disabled","aria-pressed","aria-label","title"],ut=["aria-disabled","aria-pressed","aria-label","title"],dt={class:"hidden-visually"},ct=["title","aria-label","aria-pressed","onClick"],pt=K({__name:"UserSectionBackground",emits:["refreshStyles"],setup(t,{emit:e}){He(l=>({v68ea64a4:s}));const a=e,r=M("theming","shippedBackgrounds"),i=M("theming","themingDefaults"),s=`url('${i.backgroundImage}')`,o=H(!1),m=H(structuredClone(M("theming","data"))),p=H(M("theming","userBackgroundImage")),$=Object.keys(r).filter(l=>l!==i.defaultShippedBackground||i.backgroundMime!=="").map(l=>({name:l,url:U(l),preview:U("preview/"+l),details:r[l]}));function U(l){return Se("theming","","img/background/")+l}async function g(l){p.value=l.backgroundImage,m.value.backgroundColor=l.backgroundColor,a("refreshStyles"),o.value=!1}async function y(){o.value="default";const l=await N.post(Z("/apps/theming/background/default"));g(l.data)}async function A(l){o.value=l;const b=await N.post(Z("/apps/theming/background/shipped"),{value:l});g(b.data)}async function f(l){o.value="custom";const b=await N.post(Z("/apps/theming/background/custom"),{value:l});g(b.data)}async function C(l){if(!l)return;o.value="color";const{data:b}=await N.post(Z("/apps/theming/background/color"),{color:l||"#0082c9"});g(b)}async function B(){await De(d("theming","Select a background from your files")).allowDirectories(!1).setMimeTypeFilter(["image/*"]).setMultiSelect(!1).addButton({label:d("theming","Select background"),callback:([l])=>{f(l.path)},variant:"primary"}).build().pick()}return(l,b)=>(c(),_(n(W),{class:"background",name:n(d)("theming","Background and color"),description:n(d)("theming","The background can be set to an image from the default set, a custom uploaded image, or a plain color.")},{default:w(()=>[h("fieldset",null,[h("legend",ot,v(n(d)("theming","Background and color")),1),h("div",{class:x(l.$style.backgroundSelect)},[h("button",{"aria-disabled":o.value==="custom","aria-pressed":p.value==="custom","aria-label":n(d)("theming","Custom background"),title:n(d)("theming","Custom background"),class:x(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryFilePicker]]),onClick:B},[o.value==="custom"?(c(),_(n(Q),{key:0})):(c(),_(n(J),{key:1,path:p.value==="custom"?n(G):n(ze)},null,8,["path"]))],10,lt),I(n($e),{modelValue:m.value.backgroundColor,"onUpdate:modelValue":b[0]||(b[0]=u=>m.value.backgroundColor=u),onSubmit:C},{default:w(()=>[h("button",{class:x(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryColor]]),"aria-disabled":o.value==="color","aria-pressed":p.value==="color","aria-label":n(d)("theming","Plain background"),title:n(d)("theming","Plain background"),style:F({backgroundColor:m.value.backgroundColor,"--color-content":n(se)(m.value.backgroundColor)})},[o.value==="color"?(c(),_(n(Q),{key:0})):(c(),_(n(J),{key:1,path:p.value==="color"?n(G):n(Ee)},null,8,["path"]))],14,st)]),_:1},8,["modelValue"]),h("button",{class:x(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryDefault]]),"aria-disabled":o.value==="default","aria-pressed":p.value==="default","aria-label":n(d)("theming","Default background"),title:n(d)("theming","Default background"),style:F({"--color-content":n(se)(n(i).backgroundColor)}),onClick:y},[o.value==="default"?(c(),_(n(Q),{key:0})):(c(),_(n(J),{key:1,path:p.value==="default"?n(G):n(je)},null,8,["path"]))],14,ut)],2),h("fieldset",{class:x(l.$style.backgroundSelect)},[h("label",dt,v(n(d)("theming","Default shipped background images")),1),(c(!0),S(O,null,ne(n($),u=>(c(),S("button",{key:u.name,title:u.details.attribution,"aria-label":u.details.description,"aria-pressed":p.value===u.name,class:x(["button-vue",l.$style.backgroundSelect__entry]),style:F({backgroundImage:"url("+u.preview+")"}),tabindex:"0",onClick:D=>A(u.name)},[p.value===u.name?(c(),_(n(J),{key:0,class:x(l.$style.backgroundSelect__entryIcon),path:n(G)},null,8,["class","path"])):j("",!0)],14,ct))),128))],2)])]),_:1},8,["name","description"]))}}),gt="_backgroundSelect_l1nhm_2",mt="_backgroundSelect__entry_l1nhm_7",ht="_backgroundSelect__entryColor_l1nhm_38",ft="_backgroundSelect__entryFilePicker_l1nhm_42",bt="_backgroundSelect__entryDefault_l1nhm_52",yt={backgroundSelect:gt,backgroundSelect__entry:mt,backgroundSelect__entryColor:ht,backgroundSelect__entryFilePicker:ft,backgroundSelect__entryDefault:bt},vt={$style:yt},_t=z(pt,[["__cssModules",vt]]),kt=K({__name:"UserSectionHotkeys",setup(t){const e=H(M("theming","shortcutsDisabled",!1));Ce(e,a);async function a(){const r=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"});e.value?await N.post(r,{configValue:"yes"}):await N.delete(r)}return(r,i)=>(c(),_(n(W),{name:n(d)("theming","Keyboard shortcuts"),description:n(d)("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")},{default:w(()=>[I(n(le),{modelValue:e.value,"onUpdate:modelValue":i[0]||(i[0]=s=>e.value=s),class:"theming__preview-toggle",type:"switch"},{default:w(()=>[L(v(n(d)("theming","Disable all keyboard shortcuts")),1)]),_:1},8,["modelValue"])]),_:1},8,["name","description"]))}});var Ct={grad:.9,turn:360,rad:360/(2*Math.PI)},T=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},k=function(t,e,a){return e===void 0&&(e=0),a===void 0&&(a=Math.pow(10,e)),Math.round(a*t)/a+0},V=function(t,e,a){return e===void 0&&(e=0),a===void 0&&(a=1),t>a?a:t>e?t:e},Ae=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},ge=function(t){return{r:V(t.r,0,255),g:V(t.g,0,255),b:V(t.b,0,255),a:V(t.a)}},te=function(t){return{r:k(t.r),g:k(t.g),b:k(t.b),a:k(t.a,3)}},wt=/^#([0-9a-f]{3,8})$/i,Y=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},Ne=function(t){var e=t.r,a=t.g,r=t.b,i=t.a,s=Math.max(e,a,r),o=s-Math.min(e,a,r),m=o?s===e?(a-r)/o:s===a?2+(r-e)/o:4+(e-a)/o:0;return{h:60*(m<0?m+6:m),s:s?o/s*100:0,v:s/255*100,a:i}},Me=function(t){var e=t.h,a=t.s,r=t.v,i=t.a;e=e/360*6,a/=100,r/=100;var s=Math.floor(e),o=r*(1-a),m=r*(1-(e-s)*a),p=r*(1-(1-e+s)*a),$=s%6;return{r:255*[r,m,o,o,p,r][$],g:255*[p,r,r,m,o,o][$],b:255*[o,o,p,r,r,m][$],a:i}},me=function(t){return{h:Ae(t.h),s:V(t.s,0,100),l:V(t.l,0,100),a:V(t.a)}},he=function(t){return{h:k(t.h),s:k(t.s),l:k(t.l),a:k(t.a,3)}},fe=function(t){return Me((a=(e=t).s,{h:e.h,s:(a*=((r=e.l)<50?r:100-r)/100)>0?2*a/(r+a)*100:0,v:r+a,a:e.a}));var e,a,r},R=function(t){return{h:(e=Ne(t)).h,s:(i=(200-(a=e.s))*(r=e.v)/100)>0&&i<200?a*r/100/(i<=100?i:200-i)*100:0,l:i/2,a:e.a};var e,a,r,i},St=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,It=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$t=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,At=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,be={string:[[function(t){var e=wt.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?k(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?k(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=$t.exec(t)||At.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:ge({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=St.exec(t)||It.exec(t);if(!e)return null;var a,r,i=me({h:(a=e[1],r=e[2],r===void 0&&(r="deg"),Number(a)*(Ct[r]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return fe(i)},"hsl"]],object:[[function(t){var e=t.r,a=t.g,r=t.b,i=t.a,s=i===void 0?1:i;return T(e)&&T(a)&&T(r)?ge({r:Number(e),g:Number(a),b:Number(r),a:Number(s)}):null},"rgb"],[function(t){var e=t.h,a=t.s,r=t.l,i=t.a,s=i===void 0?1:i;if(!T(e)||!T(a)||!T(r))return null;var o=me({h:Number(e),s:Number(a),l:Number(r),a:Number(s)});return fe(o)},"hsl"],[function(t){var e=t.h,a=t.s,r=t.v,i=t.a,s=i===void 0?1:i;if(!T(e)||!T(a)||!T(r))return null;var o=(function(m){return{h:Ae(m.h),s:V(m.s,0,100),v:V(m.v,0,100),a:V(m.a)}})({h:Number(e),s:Number(a),v:Number(r),a:Number(s)});return Me(o)},"hsv"]]},ye=function(t,e){for(var a=0;a=.5},t.prototype.toHex=function(){return e=te(this.rgba),a=e.r,r=e.g,i=e.b,o=(s=e.a)<1?Y(k(255*s)):"","#"+Y(a)+Y(r)+Y(i)+o;var e,a,r,i,s,o},t.prototype.toRgb=function(){return te(this.rgba)},t.prototype.toRgbString=function(){return e=te(this.rgba),a=e.r,r=e.g,i=e.b,(s=e.a)<1?"rgba("+a+", "+r+", "+i+", "+s+")":"rgb("+a+", "+r+", "+i+")";var e,a,r,i,s},t.prototype.toHsl=function(){return he(R(this.rgba))},t.prototype.toHslString=function(){return e=he(R(this.rgba)),a=e.h,r=e.s,i=e.l,(s=e.a)<1?"hsla("+a+", "+r+"%, "+i+"%, "+s+")":"hsl("+a+", "+r+"%, "+i+"%)";var e,a,r,i,s},t.prototype.toHsv=function(){return e=Ne(this.rgba),{h:k(e.h),s:k(e.s),v:k(e.v),a:k(e.a,3)};var e},t.prototype.invert=function(){return P({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),P(ae(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),P(ae(this.rgba,-e))},t.prototype.grayscale=function(){return P(ae(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),P(ve(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),P(ve(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?P({r:(a=this.rgba).r,g:a.g,b:a.b,a:e}):k(this.rgba.a,3);var a},t.prototype.hue=function(e){var a=R(this.rgba);return typeof e=="number"?P({h:e,s:a.s,l:a.l,a:a.a}):k(a.h)},t.prototype.isEqual=function(e){return this.toHex()===P(e).toHex()},t})(),P=function(t){return t instanceof _e?t:new _e(t)};const Mt={name:"PaletteOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Vt=["aria-hidden","aria-label"],Ut=["fill","width","height"],Pt={d:"M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2C17.5,2 22,6 22,11A6,6 0 0,1 16,17H14.2C13.9,17 13.7,17.2 13.7,17.5C13.7,17.6 13.8,17.7 13.8,17.8C14.2,18.3 14.4,18.9 14.4,19.5C14.5,20.9 13.4,22 12,22M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C12.3,20 12.5,19.8 12.5,19.5C12.5,19.3 12.4,19.2 12.4,19.1C12,18.6 11.8,18.1 11.8,17.5C11.8,16.1 12.9,15 14.3,15H16A4,4 0 0,0 20,11C20,7.1 16.4,4 12,4M6.5,10C7.3,10 8,10.7 8,11.5C8,12.3 7.3,13 6.5,13C5.7,13 5,12.3 5,11.5C5,10.7 5.7,10 6.5,10M9.5,6C10.3,6 11,6.7 11,7.5C11,8.3 10.3,9 9.5,9C8.7,9 8,8.3 8,7.5C8,6.7 8.7,6 9.5,6M14.5,6C15.3,6 16,6.7 16,7.5C16,8.3 15.3,9 14.5,9C13.7,9 13,8.3 13,7.5C13,6.7 13.7,6 14.5,6M17.5,10C18.3,10 19,10.7 19,11.5C19,12.3 18.3,13 17.5,13C16.7,13 16,12.3 16,11.5C16,10.7 16.7,10 17.5,10Z"},xt={key:0};function Ht(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon palette-outline-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",Pt,[a.title?(c(),S("title",xt,v(a.title),1)):j("",!0)])],8,Ut))],16,Vt)}const Tt=z(Mt,[["render",Ht]]),Lt={name:"UndoVariantIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Bt=["aria-hidden","aria-label"],Dt=["fill","width","height"],qt={d:"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z"},zt={key:0};function Et(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon undo-variant-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",qt,[a.title?(c(),S("title",zt,v(a.title),1)):j("",!0)])],8,Dt))],16,Bt)}const jt=z(Lt,[["render",Et]]),Kt=K({__name:"UserSectionPrimaryColor",emits:["refreshStyles"],setup(t,{expose:e,emit:a}){const r=a;e({reload:U});const{primaryColor:i,defaultPrimaryColor:s}=M("theming","data",{primaryColor:"#0082c9",defaultPrimaryColor:"#0082c9"}),o=we("trigger"),m=H(!1),p=H(i);Ce(p,qe(f=>{y(f)},1e3));const $=q(()=>P(p.value).isEqual(P(s)));function U(){let f=window.getComputedStyle(o.value).backgroundColor;const C=f.replaceAll(/\s/g,"").match(/^rgba?\((\d+),(\d+),(\d+)/);C&&(f=`#${A(C[1])}${A(C[2])}${A(C[3])}`),f.toLowerCase()!==p.value.toLowerCase()&&(p.value=f)}function g(){p.value=s,y(null)}async function y(f){m.value=!0;const C=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"primary_color"});try{f?await N.post(C,{configValue:f}):await N.delete(C),r("refreshStyles")}catch(B){ee.error("Could not update primary color",{error:B}),X(d("theming","Could not set primary color"))}m.value=!1}function A(f){return Number.parseInt(f).toString(16).padStart(2,"0")}return(f,C)=>(c(),_(n(W),{name:n(d)("theming","Primary color"),description:n(d)("theming","Set a primary color to highlight important elements. The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements.")},{default:w(()=>[h("div",{class:x(f.$style.userPrimaryColor)},[I(n($e),{modelValue:p.value,"onUpdate:modelValue":C[0]||(C[0]=B=>p.value=B),"data-user-theming-primary-color":""},{default:w(()=>[h("button",{ref:"trigger",class:x(f.$style.userPrimaryColor__trigger),style:F({"background-color":p.value}),"data-user-theming-primary-color-trigger":""},[L(v(n(d)("theming","Primary color"))+" ",1),m.value?(c(),_(n(Q),{key:0})):(c(),_(Tt,{key:1,size:20}))],6)]),_:1},8,["modelValue"]),I(n(Ie),{variant:"tertiary",disabled:$.value,onClick:g},{icon:w(()=>[I(jt,{size:20})]),default:w(()=>[L(" "+v(n(d)("theming","Reset primary color")),1)]),_:1},8,["disabled"])],2)]),_:1},8,["name","description"]))}}),Ot="_userPrimaryColor_3oh6f_1",Ft="_userPrimaryColor__trigger_3oh6f_8",Rt={userPrimaryColor:Ot,userPrimaryColor__trigger:Ft},Wt={$style:Rt},Zt=z(Kt,[["__cssModules",Wt]]),Gt=["innerHTML"],Jt=["innerHTML"],Yt={class:"theming__preview-list"},Qt={class:"theming__preview-list"},Xt=K({__name:"UserTheming",setup(t){const e=M("theming","enforceTheme",""),a=M("theming","isUserThemingDisabled"),r=H(M("theming","enableBlurFilter","")),i=M("theming","themes",[]),s=H(i.filter(l=>l.type===1)),o=H(i.filter(l=>l.type===2)),m=q(()=>s.value.find(l=>l.enabled)||s.value[0]),p=we("primaryColor"),$=d("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.",{linkstart:'
    ',linkend:""},{escape:!1}),U=d("theming","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:'',designteam:'',linkend:""},{escape:!1});async function g(){await ue(),Te(()=>p.value?.reload())}function y(l,b){s.value.forEach(u=>{if(u.id===l&&b){u.enabled=!0;return}u.enabled=!1}),C(),B(b,l)}function A(l,b){o.value.forEach(u=>{if(u.id===l&&b){u.enabled=!0;return}u.enabled=!1}),C(),B(b,l)}async function f(){r.value=r.value==="no"?"yes":"no",await N({url:E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"force_enable_blur_filter"}),data:{configValue:r.value},method:"POST"}),ue()}function C(){const l=s.value.filter(u=>u.enabled===!0).map(u=>u.id),b=o.value.filter(u=>u.enabled===!0).map(u=>u.id);s.value.forEach(u=>{document.body.toggleAttribute(`data-theme-${u.id}`,u.enabled)}),o.value.forEach(u=>{document.body.toggleAttribute(`data-theme-${u.id}`,u.enabled)}),document.body.setAttribute("data-themes",[...l,...b].join(","))}async function B(l,b){try{l?await N({url:E("apps/theming/api/v1/theme/{themeId}/enable",{themeId:b}),method:"PUT"}):await N({url:E("apps/theming/api/v1/theme/{themeId}",{themeId:b}),method:"DELETE"})}catch(u){ee.error("theming: Unable to apply setting.",{error:u});let D=d("theming","Unable to apply the setting.");Be(u)&&u.response?.data.ocs?.meta?.message&&(D=`${u.response.data.ocs.meta.message}. ${D}`),X(D)}}return(l,b)=>(c(),S(O,null,[I(n(W),{name:n(d)("theming","Appearance and accessibility settings"),class:"theming"},{default:w(()=>[h("p",{innerHTML:n($)},null,8,Gt),h("p",{innerHTML:n(U)},null,8,Jt),h("div",Yt,[(c(!0),S(O,null,ne(s.value,u=>(c(),_(de,{key:u.id,enforced:u.id===n(e),selected:m.value.id===u.id,theme:u,unique:s.value.length===1,type:"theme","onUpdate:selected":D=>y(u.id,D)},null,8,["enforced","selected","theme","unique","onUpdate:selected"]))),128))]),h("div",Qt,[(c(!0),S(O,null,ne(o.value,u=>(c(),_(de,{key:u.id,selected:u.enabled,theme:u,unique:o.value.length===1,type:"font","onUpdate:selected":D=>A(u.id,D)},null,8,["selected","theme","unique","onUpdate:selected"]))),128))]),h("h3",null,v(n(d)("theming","Misc accessibility options")),1),I(n(le),{type:"checkbox",modelValue:r.value==="yes",indeterminate:r.value==="","onUpdate:modelValue":f},{default:w(()=>[L(v(n(d)("theming","Enable blur background filter (may increase GPU load)")),1)]),_:1},8,["modelValue","indeterminate"])]),_:1},8,["name"]),n(a)?(c(),_(n(ie),{key:0,type:"info"},{default:w(()=>[L(v(n(d)("theming","Customization has been disabled by your administrator")),1)]),_:1})):(c(),S(O,{key:1},[I(Zt,{ref:"primaryColor",onRefreshStyles:g},null,512),I(_t,{onRefreshStyles:g})],64)),I(kt),I(it)],64))}}),ea=z(Xt,[["__scopeId","data-v-50195b4f"]]),ke=Le(ea);ke.config.idPrefix="settings",ke.mount("#settings-personal-theming"); +import{b as K,n as Ve,o as c,f as S,y as x,g as h,O as F,t as v,u as n,h as j,J as Ue,K as Pe,k as I,w,j as L,s as xe,v as q,m as oe,l as H,c as _,a7 as He,F as O,B as ne,z as Ce,p as we,D as Te,e as Le}from"./Web-DYqXJUev.chunk.mjs";import{c as N,i as Be}from"./index-CkGt55pS.chunk.mjs";import{a as X,h as De}from"./index-mH69OG7L.chunk.mjs";import{_ as z,l as M}from"./public-C1mLBHT3.chunk.mjs";import{t as d}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{r as Se,c as E,b as Z,d as qe}from"./index-Cp0kcsps.chunk.mjs";import{N as le}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{N as ie,q as G,r as ze,n as Ee,o as je}from"./mdi-B6W_Xvj-.chunk.mjs";import{N as W}from"./ContentCopy-B9XOXCFO.chunk.mjs";import{N as Ie}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{A as Ke,l as ee,g as se,r as ue}from"./refreshStyles-BSZrKhKf.chunk.mjs";import $e from"./index-BRPJrOcF.chunk.mjs";import{N as J}from"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{N as Q}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";const Oe={class:"theming__preview-description"},Fe={class:"theming__preview-explanation"},Re={key:0,class:"theming__preview-warning",role:"note"},We=K({__name:"ThemePreviewItem",props:xe({enforced:{type:Boolean},theme:{},type:{},unique:{type:Boolean}},{selected:{type:Boolean,required:!0},selectedModifiers:{}}),emits:["update:selected"],setup(t){const e=Ve(t,"selected"),a=t,r=q(()=>a.unique?"switch":"radio"),i=q(()=>a.unique?null:a.type),s=q(()=>Se("theming","img",a.theme.id+".jpg")),o=q({get(){return e.value},set(p){a.enforced||(e.value=a.unique?p:!0)}});function m(){if(!a.enforced){if(r.value==="radio"){o.value=!0;return}o.value=!o.value}}return(p,$)=>(c(),S("div",{class:x(["theming__preview--"+t.theme.id,"theming__preview"])},[h("div",{class:"theming__preview-image",style:F({backgroundImage:"url("+s.value+")"}),onClick:m},null,4),h("div",Oe,[h("h3",null,v(t.theme.title),1),h("p",Fe,v(t.theme.description),1),t.enforced?(c(),S("span",Re,v(n(d)("theming","Theme selection is enforced")),1)):j("",!0),Ue(I(n(le),{modelValue:o.value,"onUpdate:modelValue":$[0]||($[0]=U=>o.value=U),class:"theming__preview-toggle",disabled:t.enforced,name:i.value,type:r.value},{default:w(()=>[L(v(t.theme.enableLabel),1)]),_:1},8,["modelValue","disabled","name","type"]),[[Pe,!t.enforced]])])],2))}}),de=z(We,[["__scopeId","data-v-13bf6aae"]]),Ze={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ge=["aria-hidden","aria-label"],Je=["fill","width","height"],Ye={d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"},Qe={key:0};function Xe(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon undo-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",Ye,[a.title?(c(),S("title",Qe,v(a.title),1)):j("",!0)])],8,Je))],16,Ge)}const et=z(Ze,[["render",Xe]]),ce="theming-apporder-changed-infocard",pe="theming-apporder-changed-infocard",tt=K({__name:"UserSectionAppMenu",setup(t){const{userAppOrder:e,enforcedDefaultApp:a}=M("theming","navigationBar"),r=M("core","apps").filter(({type:g})=>g==="link").map(g=>({...g,label:g.name,default:g.default&&g.id===a})),i=H([...r]),s=H(!Array.isArray(e)||Object.values(e).length>0),o=q(()=>r.some(({id:g},y)=>g!==i.value[y]?.id)),m=q(()=>(o.value?`${ce} `:"")+(a?pe:""));async function p(g){const y={};g.forEach(({app:A,id:f},C)=>{y[f]={order:C,app:A}});try{await U("apporder",y),i.value=g,s.value=!0}catch(A){ee.error("Could not set the app order",{error:A}),X(d("theming","Could not set the app order"))}}async function $(){try{await U("apporder",[]),s.value=!1;const{data:g}=await N.get(E("/core/navigation/apps"),{headers:{"OCS-APIRequest":"true"}});i.value=g.ocs.data.map(y=>({...y,label:y.name,default:y.default&&y.app===a}))}catch(g){ee.error("Could not reset the app order",{error:g}),X(d("theming","Could not reset the app order"))}}async function U(g,y){const A=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"core",configKey:g});return await N.post(A,{configValue:JSON.stringify(y)})}return(g,y)=>(c(),_(n(W),{name:n(d)("theming","Navigation bar settings")},{default:w(()=>[h("p",null,v(n(d)("theming","You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo.")),1),n(a)?(c(),_(n(ie),{key:0,id:pe,type:"info"},{default:w(()=>[L(v(n(d)("theming","The default app can not be changed because it was configured by the administrator.")),1)]),_:1})):j("",!0),o.value?(c(),_(n(ie),{key:1,id:ce,type:"info"},{default:w(()=>[L(v(n(d)("theming","The app order was changed, to see it in action you have to reload the page.")),1)]),_:1})):j("",!0),I(Ke,{class:x(g.$style.userSectionAppMenu__selector),"aria-details":m.value,modelValue:i.value,"onUpdate:modelValue":p},null,8,["class","aria-details","modelValue"]),I(n(Ie),{"data-test-id":"btn-apporder-reset",disabled:!s.value,variant:"tertiary",onClick:$},{icon:w(()=>[I(et,{size:20})]),default:w(()=>[L(" "+v(n(d)("theming","Reset default app order")),1)]),_:1},8,["disabled"])]),_:1},8,["name"]))}}),at="_userSectionAppMenu__selector_1hkl7_2",rt={userSectionAppMenu__selector:at},nt={$style:rt},it=z(tt,[["__cssModules",nt]]),ot={class:"hidden-visually"},lt=["aria-disabled","aria-pressed","aria-label","title"],st=["aria-disabled","aria-pressed","aria-label","title"],ut=["aria-disabled","aria-pressed","aria-label","title"],dt={class:"hidden-visually"},ct=["title","aria-label","aria-pressed","onClick"],pt=K({__name:"UserSectionBackground",emits:["refreshStyles"],setup(t,{emit:e}){He(l=>({v68ea64a4:s}));const a=e,r=M("theming","shippedBackgrounds"),i=M("theming","themingDefaults"),s=`url('${i.backgroundImage}')`,o=H(!1),m=H(structuredClone(M("theming","data"))),p=H(M("theming","userBackgroundImage")),$=Object.keys(r).filter(l=>l!==i.defaultShippedBackground||i.backgroundMime!=="").map(l=>({name:l,url:U(l),preview:U("preview/"+l),details:r[l]}));function U(l){return Se("theming","","img/background/")+l}async function g(l){p.value=l.backgroundImage,m.value.backgroundColor=l.backgroundColor,a("refreshStyles"),o.value=!1}async function y(){o.value="default";const l=await N.post(Z("/apps/theming/background/default"));g(l.data)}async function A(l){o.value=l;const b=await N.post(Z("/apps/theming/background/shipped"),{value:l});g(b.data)}async function f(l){o.value="custom";const b=await N.post(Z("/apps/theming/background/custom"),{value:l});g(b.data)}async function C(l){if(!l)return;o.value="color";const{data:b}=await N.post(Z("/apps/theming/background/color"),{color:l||"#0082c9"});g(b)}async function B(){await De(d("theming","Select a background from your files")).allowDirectories(!1).setMimeTypeFilter(["image/*"]).setMultiSelect(!1).addButton({label:d("theming","Select background"),callback:([l])=>{f(l.path)},variant:"primary"}).build().pick()}return(l,b)=>(c(),_(n(W),{class:"background",name:n(d)("theming","Background and color"),description:n(d)("theming","The background can be set to an image from the default set, a custom uploaded image, or a plain color.")},{default:w(()=>[h("fieldset",null,[h("legend",ot,v(n(d)("theming","Background and color")),1),h("div",{class:x(l.$style.backgroundSelect)},[h("button",{"aria-disabled":o.value==="custom","aria-pressed":p.value==="custom","aria-label":n(d)("theming","Custom background"),title:n(d)("theming","Custom background"),class:x(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryFilePicker]]),onClick:B},[o.value==="custom"?(c(),_(n(Q),{key:0})):(c(),_(n(J),{key:1,path:p.value==="custom"?n(G):n(ze)},null,8,["path"]))],10,lt),I(n($e),{modelValue:m.value.backgroundColor,"onUpdate:modelValue":b[0]||(b[0]=u=>m.value.backgroundColor=u),onSubmit:C},{default:w(()=>[h("button",{class:x(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryColor]]),"aria-disabled":o.value==="color","aria-pressed":p.value==="color","aria-label":n(d)("theming","Plain background"),title:n(d)("theming","Plain background"),style:F({backgroundColor:m.value.backgroundColor,"--color-content":n(se)(m.value.backgroundColor)})},[o.value==="color"?(c(),_(n(Q),{key:0})):(c(),_(n(J),{key:1,path:p.value==="color"?n(G):n(Ee)},null,8,["path"]))],14,st)]),_:1},8,["modelValue"]),h("button",{class:x(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryDefault]]),"aria-disabled":o.value==="default","aria-pressed":p.value==="default","aria-label":n(d)("theming","Default background"),title:n(d)("theming","Default background"),style:F({"--color-content":n(se)(n(i).backgroundColor)}),onClick:y},[o.value==="default"?(c(),_(n(Q),{key:0})):(c(),_(n(J),{key:1,path:p.value==="default"?n(G):n(je)},null,8,["path"]))],14,ut)],2),h("fieldset",{class:x(l.$style.backgroundSelect)},[h("label",dt,v(n(d)("theming","Default shipped background images")),1),(c(!0),S(O,null,ne(n($),u=>(c(),S("button",{key:u.name,title:u.details.attribution,"aria-label":u.details.description,"aria-pressed":p.value===u.name,class:x(["button-vue",l.$style.backgroundSelect__entry]),style:F({backgroundImage:"url("+u.preview+")"}),tabindex:"0",onClick:D=>A(u.name)},[p.value===u.name?(c(),_(n(J),{key:0,class:x(l.$style.backgroundSelect__entryIcon),path:n(G)},null,8,["class","path"])):j("",!0)],14,ct))),128))],2)])]),_:1},8,["name","description"]))}}),gt="_backgroundSelect_l1nhm_2",mt="_backgroundSelect__entry_l1nhm_7",ht="_backgroundSelect__entryColor_l1nhm_38",ft="_backgroundSelect__entryFilePicker_l1nhm_42",bt="_backgroundSelect__entryDefault_l1nhm_52",yt={backgroundSelect:gt,backgroundSelect__entry:mt,backgroundSelect__entryColor:ht,backgroundSelect__entryFilePicker:ft,backgroundSelect__entryDefault:bt},vt={$style:yt},_t=z(pt,[["__cssModules",vt]]),kt=K({__name:"UserSectionHotkeys",setup(t){const e=H(M("theming","shortcutsDisabled",!1));Ce(e,a);async function a(){const r=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"});e.value?await N.post(r,{configValue:"yes"}):await N.delete(r)}return(r,i)=>(c(),_(n(W),{name:n(d)("theming","Keyboard shortcuts"),description:n(d)("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")},{default:w(()=>[I(n(le),{modelValue:e.value,"onUpdate:modelValue":i[0]||(i[0]=s=>e.value=s),class:"theming__preview-toggle",type:"switch"},{default:w(()=>[L(v(n(d)("theming","Disable all keyboard shortcuts")),1)]),_:1},8,["modelValue"])]),_:1},8,["name","description"]))}});var Ct={grad:.9,turn:360,rad:360/(2*Math.PI)},T=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},k=function(t,e,a){return e===void 0&&(e=0),a===void 0&&(a=Math.pow(10,e)),Math.round(a*t)/a+0},V=function(t,e,a){return e===void 0&&(e=0),a===void 0&&(a=1),t>a?a:t>e?t:e},Ae=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},ge=function(t){return{r:V(t.r,0,255),g:V(t.g,0,255),b:V(t.b,0,255),a:V(t.a)}},te=function(t){return{r:k(t.r),g:k(t.g),b:k(t.b),a:k(t.a,3)}},wt=/^#([0-9a-f]{3,8})$/i,Y=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},Ne=function(t){var e=t.r,a=t.g,r=t.b,i=t.a,s=Math.max(e,a,r),o=s-Math.min(e,a,r),m=o?s===e?(a-r)/o:s===a?2+(r-e)/o:4+(e-a)/o:0;return{h:60*(m<0?m+6:m),s:s?o/s*100:0,v:s/255*100,a:i}},Me=function(t){var e=t.h,a=t.s,r=t.v,i=t.a;e=e/360*6,a/=100,r/=100;var s=Math.floor(e),o=r*(1-a),m=r*(1-(e-s)*a),p=r*(1-(1-e+s)*a),$=s%6;return{r:255*[r,m,o,o,p,r][$],g:255*[p,r,r,m,o,o][$],b:255*[o,o,p,r,r,m][$],a:i}},me=function(t){return{h:Ae(t.h),s:V(t.s,0,100),l:V(t.l,0,100),a:V(t.a)}},he=function(t){return{h:k(t.h),s:k(t.s),l:k(t.l),a:k(t.a,3)}},fe=function(t){return Me((a=(e=t).s,{h:e.h,s:(a*=((r=e.l)<50?r:100-r)/100)>0?2*a/(r+a)*100:0,v:r+a,a:e.a}));var e,a,r},R=function(t){return{h:(e=Ne(t)).h,s:(i=(200-(a=e.s))*(r=e.v)/100)>0&&i<200?a*r/100/(i<=100?i:200-i)*100:0,l:i/2,a:e.a};var e,a,r,i},St=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,It=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$t=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,At=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,be={string:[[function(t){var e=wt.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?k(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?k(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=$t.exec(t)||At.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:ge({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=St.exec(t)||It.exec(t);if(!e)return null;var a,r,i=me({h:(a=e[1],r=e[2],r===void 0&&(r="deg"),Number(a)*(Ct[r]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return fe(i)},"hsl"]],object:[[function(t){var e=t.r,a=t.g,r=t.b,i=t.a,s=i===void 0?1:i;return T(e)&&T(a)&&T(r)?ge({r:Number(e),g:Number(a),b:Number(r),a:Number(s)}):null},"rgb"],[function(t){var e=t.h,a=t.s,r=t.l,i=t.a,s=i===void 0?1:i;if(!T(e)||!T(a)||!T(r))return null;var o=me({h:Number(e),s:Number(a),l:Number(r),a:Number(s)});return fe(o)},"hsl"],[function(t){var e=t.h,a=t.s,r=t.v,i=t.a,s=i===void 0?1:i;if(!T(e)||!T(a)||!T(r))return null;var o=(function(m){return{h:Ae(m.h),s:V(m.s,0,100),v:V(m.v,0,100),a:V(m.a)}})({h:Number(e),s:Number(a),v:Number(r),a:Number(s)});return Me(o)},"hsv"]]},ye=function(t,e){for(var a=0;a=.5},t.prototype.toHex=function(){return e=te(this.rgba),a=e.r,r=e.g,i=e.b,o=(s=e.a)<1?Y(k(255*s)):"","#"+Y(a)+Y(r)+Y(i)+o;var e,a,r,i,s,o},t.prototype.toRgb=function(){return te(this.rgba)},t.prototype.toRgbString=function(){return e=te(this.rgba),a=e.r,r=e.g,i=e.b,(s=e.a)<1?"rgba("+a+", "+r+", "+i+", "+s+")":"rgb("+a+", "+r+", "+i+")";var e,a,r,i,s},t.prototype.toHsl=function(){return he(R(this.rgba))},t.prototype.toHslString=function(){return e=he(R(this.rgba)),a=e.h,r=e.s,i=e.l,(s=e.a)<1?"hsla("+a+", "+r+"%, "+i+"%, "+s+")":"hsl("+a+", "+r+"%, "+i+"%)";var e,a,r,i,s},t.prototype.toHsv=function(){return e=Ne(this.rgba),{h:k(e.h),s:k(e.s),v:k(e.v),a:k(e.a,3)};var e},t.prototype.invert=function(){return P({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),P(ae(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),P(ae(this.rgba,-e))},t.prototype.grayscale=function(){return P(ae(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),P(ve(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),P(ve(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?P({r:(a=this.rgba).r,g:a.g,b:a.b,a:e}):k(this.rgba.a,3);var a},t.prototype.hue=function(e){var a=R(this.rgba);return typeof e=="number"?P({h:e,s:a.s,l:a.l,a:a.a}):k(a.h)},t.prototype.isEqual=function(e){return this.toHex()===P(e).toHex()},t})(),P=function(t){return t instanceof _e?t:new _e(t)};const Mt={name:"PaletteOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Vt=["aria-hidden","aria-label"],Ut=["fill","width","height"],Pt={d:"M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2C17.5,2 22,6 22,11A6,6 0 0,1 16,17H14.2C13.9,17 13.7,17.2 13.7,17.5C13.7,17.6 13.8,17.7 13.8,17.8C14.2,18.3 14.4,18.9 14.4,19.5C14.5,20.9 13.4,22 12,22M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C12.3,20 12.5,19.8 12.5,19.5C12.5,19.3 12.4,19.2 12.4,19.1C12,18.6 11.8,18.1 11.8,17.5C11.8,16.1 12.9,15 14.3,15H16A4,4 0 0,0 20,11C20,7.1 16.4,4 12,4M6.5,10C7.3,10 8,10.7 8,11.5C8,12.3 7.3,13 6.5,13C5.7,13 5,12.3 5,11.5C5,10.7 5.7,10 6.5,10M9.5,6C10.3,6 11,6.7 11,7.5C11,8.3 10.3,9 9.5,9C8.7,9 8,8.3 8,7.5C8,6.7 8.7,6 9.5,6M14.5,6C15.3,6 16,6.7 16,7.5C16,8.3 15.3,9 14.5,9C13.7,9 13,8.3 13,7.5C13,6.7 13.7,6 14.5,6M17.5,10C18.3,10 19,10.7 19,11.5C19,12.3 18.3,13 17.5,13C16.7,13 16,12.3 16,11.5C16,10.7 16.7,10 17.5,10Z"},xt={key:0};function Ht(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon palette-outline-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",Pt,[a.title?(c(),S("title",xt,v(a.title),1)):j("",!0)])],8,Ut))],16,Vt)}const Tt=z(Mt,[["render",Ht]]),Lt={name:"UndoVariantIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Bt=["aria-hidden","aria-label"],Dt=["fill","width","height"],qt={d:"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z"},zt={key:0};function Et(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon undo-variant-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",qt,[a.title?(c(),S("title",zt,v(a.title),1)):j("",!0)])],8,Dt))],16,Bt)}const jt=z(Lt,[["render",Et]]),Kt=K({__name:"UserSectionPrimaryColor",emits:["refreshStyles"],setup(t,{expose:e,emit:a}){const r=a;e({reload:U});const{primaryColor:i,defaultPrimaryColor:s}=M("theming","data",{primaryColor:"#0082c9",defaultPrimaryColor:"#0082c9"}),o=we("trigger"),m=H(!1),p=H(i);Ce(p,qe(f=>{y(f)},1e3));const $=q(()=>P(p.value).isEqual(P(s)));function U(){let f=window.getComputedStyle(o.value).backgroundColor;const C=f.replaceAll(/\s/g,"").match(/^rgba?\((\d+),(\d+),(\d+)/);C&&(f=`#${A(C[1])}${A(C[2])}${A(C[3])}`),f.toLowerCase()!==p.value.toLowerCase()&&(p.value=f)}function g(){p.value=s,y(null)}async function y(f){m.value=!0;const C=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"primary_color"});try{f?await N.post(C,{configValue:f}):await N.delete(C),r("refreshStyles")}catch(B){ee.error("Could not update primary color",{error:B}),X(d("theming","Could not set primary color"))}m.value=!1}function A(f){return Number.parseInt(f).toString(16).padStart(2,"0")}return(f,C)=>(c(),_(n(W),{name:n(d)("theming","Primary color"),description:n(d)("theming","Set a primary color to highlight important elements. The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements.")},{default:w(()=>[h("div",{class:x(f.$style.userPrimaryColor)},[I(n($e),{modelValue:p.value,"onUpdate:modelValue":C[0]||(C[0]=B=>p.value=B),"data-user-theming-primary-color":""},{default:w(()=>[h("button",{ref:"trigger",class:x(f.$style.userPrimaryColor__trigger),style:F({"background-color":p.value}),"data-user-theming-primary-color-trigger":""},[L(v(n(d)("theming","Primary color"))+" ",1),m.value?(c(),_(n(Q),{key:0})):(c(),_(Tt,{key:1,size:20}))],6)]),_:1},8,["modelValue"]),I(n(Ie),{variant:"tertiary",disabled:$.value,onClick:g},{icon:w(()=>[I(jt,{size:20})]),default:w(()=>[L(" "+v(n(d)("theming","Reset primary color")),1)]),_:1},8,["disabled"])],2)]),_:1},8,["name","description"]))}}),Ot="_userPrimaryColor_3oh6f_1",Ft="_userPrimaryColor__trigger_3oh6f_8",Rt={userPrimaryColor:Ot,userPrimaryColor__trigger:Ft},Wt={$style:Rt},Zt=z(Kt,[["__cssModules",Wt]]),Gt=["innerHTML"],Jt=["innerHTML"],Yt={class:"theming__preview-list"},Qt={class:"theming__preview-list"},Xt=K({__name:"UserTheming",setup(t){const e=M("theming","enforceTheme",""),a=M("theming","isUserThemingDisabled"),r=H(M("theming","enableBlurFilter","")),i=M("theming","themes",[]),s=H(i.filter(l=>l.type===1)),o=H(i.filter(l=>l.type===2)),m=q(()=>s.value.find(l=>l.enabled)||s.value[0]),p=we("primaryColor"),$=d("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.",{linkstart:'',linkend:""},{escape:!1}),U=d("theming","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:'',designteam:'',linkend:""},{escape:!1});async function g(){await ue(),Te(()=>p.value?.reload())}function y(l,b){s.value.forEach(u=>{if(u.id===l&&b){u.enabled=!0;return}u.enabled=!1}),C(),B(b,l)}function A(l,b){o.value.forEach(u=>{if(u.id===l&&b){u.enabled=!0;return}u.enabled=!1}),C(),B(b,l)}async function f(){r.value=r.value==="no"?"yes":"no",await N({url:E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"force_enable_blur_filter"}),data:{configValue:r.value},method:"POST"}),ue()}function C(){const l=s.value.filter(u=>u.enabled===!0).map(u=>u.id),b=o.value.filter(u=>u.enabled===!0).map(u=>u.id);s.value.forEach(u=>{document.body.toggleAttribute(`data-theme-${u.id}`,u.enabled)}),o.value.forEach(u=>{document.body.toggleAttribute(`data-theme-${u.id}`,u.enabled)}),document.body.setAttribute("data-themes",[...l,...b].join(","))}async function B(l,b){try{l?await N({url:E("apps/theming/api/v1/theme/{themeId}/enable",{themeId:b}),method:"PUT"}):await N({url:E("apps/theming/api/v1/theme/{themeId}",{themeId:b}),method:"DELETE"})}catch(u){ee.error("theming: Unable to apply setting.",{error:u});let D=d("theming","Unable to apply the setting.");Be(u)&&u.response?.data.ocs?.meta?.message&&(D=`${u.response.data.ocs.meta.message}. ${D}`),X(D)}}return(l,b)=>(c(),S(O,null,[I(n(W),{name:n(d)("theming","Appearance and accessibility settings"),class:"theming"},{default:w(()=>[h("p",{innerHTML:n($)},null,8,Gt),h("p",{innerHTML:n(U)},null,8,Jt),h("div",Yt,[(c(!0),S(O,null,ne(s.value,u=>(c(),_(de,{key:u.id,enforced:u.id===n(e),selected:m.value.id===u.id,theme:u,unique:s.value.length===1,type:"theme","onUpdate:selected":D=>y(u.id,D)},null,8,["enforced","selected","theme","unique","onUpdate:selected"]))),128))]),h("div",Qt,[(c(!0),S(O,null,ne(o.value,u=>(c(),_(de,{key:u.id,selected:u.enabled,theme:u,unique:o.value.length===1,type:"font","onUpdate:selected":D=>A(u.id,D)},null,8,["selected","theme","unique","onUpdate:selected"]))),128))]),h("h3",null,v(n(d)("theming","Misc accessibility options")),1),I(n(le),{type:"checkbox",modelValue:r.value==="yes",indeterminate:r.value==="","onUpdate:modelValue":f},{default:w(()=>[L(v(n(d)("theming","Enable blur background filter (may increase GPU load)")),1)]),_:1},8,["modelValue","indeterminate"])]),_:1},8,["name"]),n(a)?(c(),_(n(ie),{key:0,type:"info"},{default:w(()=>[L(v(n(d)("theming","Customization has been disabled by your administrator")),1)]),_:1})):(c(),S(O,{key:1},[I(Zt,{ref:"primaryColor",onRefreshStyles:g},null,512),I(_t,{onRefreshStyles:g})],64)),I(kt),I(it)],64))}}),ea=z(Xt,[["__scopeId","data-v-50195b4f"]]),ke=Le(ea);ke.config.idPrefix="settings",ke.mount("#settings-personal-theming"); //# sourceMappingURL=theming-settings-personal.mjs.map diff --git a/dist/theming-settings-personal.mjs.map b/dist/theming-settings-personal.mjs.map index b767868aef9b0..9d0b8f2496d59 100644 --- a/dist/theming-settings-personal.mjs.map +++ b/dist/theming-settings-personal.mjs.map @@ -1 +1 @@ -{"version":3,"file":"theming-settings-personal.mjs","sources":["../build/frontend/apps/theming/src/components/ThemePreviewItem.vue","../node_modules/vue-material-design-icons/Undo.vue","../build/frontend/apps/theming/src/components/UserSectionAppMenu.vue","../build/frontend/apps/theming/src/components/UserSectionBackground.vue","../build/frontend/apps/theming/src/components/UserSectionHotkeys.vue","../node_modules/colord/index.mjs","../node_modules/vue-material-design-icons/PaletteOutline.vue","../node_modules/vue-material-design-icons/UndoVariant.vue","../build/frontend/apps/theming/src/components/UserSectionPrimaryColor.vue","../build/frontend/apps/theming/src/views/UserTheming.vue","../build/frontend/apps/theming/src/settings-personal.ts"],"sourcesContent":["\n\n\n\n\n\n\n","\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","\n\n","\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport UserTheming from './views/UserTheming.vue'\n\nimport 'vite/modulepreload-polyfill'\n\nconst app = createApp(UserTheming)\napp.config.idPrefix = 'settings'\napp.mount('#settings-personal-theming')\n"],"names":["selected","_useModel","__props","props","switchType","computed","name","img","generateFilePath","checked","onToggle","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_toDisplayString","_hoisted_2","_hoisted_3","_unref","t","_createVNode","NcCheckboxRadioSwitch","$event","_createTextVNode","_sfc_main","_mergeProps","_ctx","$props","_cache","_openBlock","elementIdAppOrderChanged","elementIdEnforcedDefaultApp","userAppOrder","enforcedDefaultApp","loadState","initialAppOrder","type","app","appOrder","ref","hasCustomAppOrder","hasAppOrderChanged","id","index","ariaDetailsAppOrder","updateAppOrder","value","order","saveSetting","error","logger","showError","resetAppOrder","data","axios","generateOcsUrl","key","url","_createBlock","NcSettingsSection","NcNoteCard","AppOrderSelector","$style","NcButton","IconUndo","emit","__emit","SHIPPED_BACKGROUNDS","THEMING_DEFAULTS","DEFAULT_BACKGROUND_IMAGE","loading","currentTheming","currentBackgroundImage","shippedBackgrounds","background","fileName","prefixWithBaseUrl","update","setDefault","result","generateUrl","setShipped","shipped","setFile","path","pickColor","color","pickFile","getFilePickerBuilder","node","NcLoadingIcon","NcIconSvgWrapper","mdiCheck","mdiImageEditOutline","NcColorPicker","_normalizeStyle","getTextColor","mdiPaletteOutline","mdiUndo","_hoisted_5","_Fragment","_renderList","shippedBackground","shortcutsDisabled","watch","updateHotkeyState","r","n","e","u","a","o","i","s","h","b","g","d","f","c","l","p","v","m","y","N","x","M","H","$","j","w","__expose","reload","initialPrimaryColor","defaultPrimaryColor","triggerElement","useTemplateRef","primaryColor","debounce","newColor","onUpdate","isDefaultPrimaryColor","colord","rgbMatch","numberToHex","onReset","numeric","IconColorPalette","enforceTheme","isUserThemingDisabled","enableBlurFilter","availableThemes","themes","theme","fonts","selectedTheme","primaryColorSection","description","descriptionDetail","refreshGlobalStyles","refreshStyles","nextTick","changeTheme","enabled","updateBodyAttributes","selectItem","changeFont","font","changeEnableBlurFilter","enabledThemesIDs","enabledFontsIDs","themeId","message","isAxiosError","ThemePreviewItem","_hoisted_4","UserSectionPrimaryColor","UserSectionBackground","UserSectionHotkeys","UserSectionAppMenu","createApp","UserTheming"],"mappings":"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","x_google_ignoreList":[1,5,6,7]} \ No newline at end of file +{"version":3,"file":"theming-settings-personal.mjs","sources":["../build/frontend/apps/theming/src/components/ThemePreviewItem.vue","../node_modules/vue-material-design-icons/Undo.vue","../build/frontend/apps/theming/src/components/UserSectionAppMenu.vue","../build/frontend/apps/theming/src/components/UserSectionBackground.vue","../build/frontend/apps/theming/src/components/UserSectionHotkeys.vue","../node_modules/colord/index.mjs","../node_modules/vue-material-design-icons/PaletteOutline.vue","../node_modules/vue-material-design-icons/UndoVariant.vue","../build/frontend/apps/theming/src/components/UserSectionPrimaryColor.vue","../build/frontend/apps/theming/src/views/UserTheming.vue","../build/frontend/apps/theming/src/settings-personal.ts"],"sourcesContent":["\n\n\n\n\n\n\n","\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","\n\n","\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n\n","/*!\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport UserTheming from './views/UserTheming.vue'\n\nimport 'vite/modulepreload-polyfill'\n\nconst app = createApp(UserTheming)\napp.config.idPrefix = 'settings'\napp.mount('#settings-personal-theming')\n"],"names":["selected","_useModel","__props","props","switchType","computed","name","img","generateFilePath","checked","onToggle","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_toDisplayString","_hoisted_2","_hoisted_3","_unref","t","_createVNode","NcCheckboxRadioSwitch","$event","_createTextVNode","_sfc_main","_mergeProps","_ctx","$props","_cache","_openBlock","elementIdAppOrderChanged","elementIdEnforcedDefaultApp","userAppOrder","enforcedDefaultApp","loadState","initialAppOrder","type","app","appOrder","ref","hasCustomAppOrder","hasAppOrderChanged","id","index","ariaDetailsAppOrder","updateAppOrder","value","order","saveSetting","error","logger","showError","resetAppOrder","data","axios","generateOcsUrl","key","url","_createBlock","NcSettingsSection","NcNoteCard","AppOrderSelector","$style","NcButton","IconUndo","emit","__emit","SHIPPED_BACKGROUNDS","THEMING_DEFAULTS","DEFAULT_BACKGROUND_IMAGE","loading","currentTheming","currentBackgroundImage","shippedBackgrounds","background","fileName","prefixWithBaseUrl","update","setDefault","result","generateUrl","setShipped","shipped","setFile","path","pickColor","color","pickFile","getFilePickerBuilder","node","NcLoadingIcon","NcIconSvgWrapper","mdiCheck","mdiImageEditOutline","NcColorPicker","_normalizeStyle","getTextColor","mdiPaletteOutline","mdiUndo","_hoisted_5","_Fragment","_renderList","shippedBackground","shortcutsDisabled","watch","updateHotkeyState","r","n","e","u","a","o","i","s","h","b","g","d","f","c","l","p","v","m","y","N","x","M","H","$","j","w","__expose","reload","initialPrimaryColor","defaultPrimaryColor","triggerElement","useTemplateRef","primaryColor","debounce","newColor","onUpdate","isDefaultPrimaryColor","colord","rgbMatch","numberToHex","onReset","numeric","IconColorPalette","enforceTheme","isUserThemingDisabled","enableBlurFilter","availableThemes","themes","theme","fonts","selectedTheme","primaryColorSection","description","descriptionDetail","refreshGlobalStyles","refreshStyles","nextTick","changeTheme","enabled","updateBodyAttributes","selectItem","changeFont","font","changeEnableBlurFilter","enabledThemesIDs","enabledFontsIDs","themeId","message","isAxiosError","ThemePreviewItem","_hoisted_4","UserSectionPrimaryColor","UserSectionBackground","UserSectionHotkeys","UserSectionAppMenu","createApp","UserTheming"],"mappings":"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","x_google_ignoreList":[1,5,6,7]} \ No newline at end of file diff --git a/dist/twofactor_backupcodes-settings-personal.mjs b/dist/twofactor_backupcodes-settings-personal.mjs index fe6fcd7c6bca5..bbedbffe11874 100644 --- a/dist/twofactor_backupcodes-settings-personal.mjs +++ b/dist/twofactor_backupcodes-settings-personal.mjs @@ -1,3 +1,3 @@ -import{d as U,c as A}from"./pinia-BsumPXOW.chunk.mjs";import{l as _,b as B,o as n,f as l,u as a,c as x,w as k,j as p,t as d,h as E,F as m,g as f,B as I,y as g,k as y,v as N,e as M}from"./Web-DYqXJUev.chunk.mjs";import{g as $,l as R,_ as j}from"./public-C1mLBHT3.chunk.mjs";import{a as P}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{t as o}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as F}from"./index-BgrtITOq.chunk.mjs";import{N as w}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as G}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{g as H,b as q}from"./index-Cp0kcsps.chunk.mjs";import{c as z}from"./index-CkGt55pS.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const D=H().detectLogLevel().setApp("twofactor_backupcodes").build();function J(r){const c=$().theming.name||"Nextcloud",e=window.open("",o("twofactor_backupcodes","{name} backup codes",{name:c}));if(!e)throw P(o("twofactor_backupcodes","Unable to open a new tab for printing")),new Error("Unable to open a new tab for printing");const t=e.document.createElement("h1");t.textContent=o("twofactor_backupcodes","{name} backup codes",{name:c});const s=e.document.createElement("pre");for(const b of r){const u=e.document.createTextNode(b);s.appendChild(u),s.appendChild(e.document.createElement("br"))}e.document.body.innerHTML="",e.document.body.appendChild(t),e.document.body.appendChild(s),e.print(),e.close()}async function K(){const r=q("/apps/twofactor_backupcodes/settings/create"),{data:c}=await z.post(r);return c}const v=R("twofactor_backupcodes","state"),O=U("twofactor_backupcodes",()=>{const r=_(v.enabled),c=_(v.total),e=_(v.used),t=_([]);async function s(){r.value=!1;const{codes:b,state:u}=await K();r.value=u.enabled,c.value=u.total,e.value=u.used,t.value=b}return{enabled:r,total:c,used:e,codes:t,generate:s}}),Q=["aria-label"],V=B({__name:"PersonalSettings",setup(r){const c=$().theming.name??"Nextcloud",e=O(),t=_(!1),s=N(()=>e.codes&&e.codes.length>0),b=c+"-backup-codes.txt",u=N(()=>s.value?"data:text/plain,"+encodeURIComponent(e.codes.reduce((i,C)=>i+C+` +import{d as U,c as A}from"./pinia-BsumPXOW.chunk.mjs";import{l as _,b as B,o as n,f as l,u as a,c as x,w as k,j as p,t as d,h as E,F as m,g as f,B as I,y as g,k as y,v as N,e as M}from"./Web-DYqXJUev.chunk.mjs";import{g as $,l as R,_ as j}from"./public-C1mLBHT3.chunk.mjs";import{a as P}from"./index-mH69OG7L.chunk.mjs";import{t as o}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as F}from"./index-BgrtITOq.chunk.mjs";import{N as w}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as G}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{g as H,b as q}from"./index-Cp0kcsps.chunk.mjs";import{c as z}from"./index-CkGt55pS.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const D=H().detectLogLevel().setApp("twofactor_backupcodes").build();function J(r){const c=$().theming.name||"Nextcloud",e=window.open("",o("twofactor_backupcodes","{name} backup codes",{name:c}));if(!e)throw P(o("twofactor_backupcodes","Unable to open a new tab for printing")),new Error("Unable to open a new tab for printing");const t=e.document.createElement("h1");t.textContent=o("twofactor_backupcodes","{name} backup codes",{name:c});const s=e.document.createElement("pre");for(const b of r){const u=e.document.createTextNode(b);s.appendChild(u),s.appendChild(e.document.createElement("br"))}e.document.body.innerHTML="",e.document.body.appendChild(t),e.document.body.appendChild(s),e.print(),e.close()}async function K(){const r=q("/apps/twofactor_backupcodes/settings/create"),{data:c}=await z.post(r);return c}const v=R("twofactor_backupcodes","state"),O=U("twofactor_backupcodes",()=>{const r=_(v.enabled),c=_(v.total),e=_(v.used),t=_([]);async function s(){r.value=!1;const{codes:b,state:u}=await K();r.value=u.enabled,c.value=u.total,e.value=u.used,t.value=b}return{enabled:r,total:c,used:e,codes:t,generate:s}}),Q=["aria-label"],V=B({__name:"PersonalSettings",setup(r){const c=$().theming.name??"Nextcloud",e=O(),t=_(!1),s=N(()=>e.codes&&e.codes.length>0),b=c+"-backup-codes.txt",u=N(()=>s.value?"data:text/plain,"+encodeURIComponent(e.codes.reduce((i,C)=>i+C+` `,"")):"");async function h(){await F(),t.value=!0;try{await e.generate()}catch(i){D.error("Error generating backup codes",{error:i}),P(o("twofactor_backupcodes","An error occurred while generating your backup codes"))}finally{t.value=!1}}function T(){J(!e.codes||e.codes.length===0?[]:e.codes)}return(i,C)=>(n(),l("div",{class:g(i.$style.backupcodesSettings)},[a(e).enabled?(n(),l(m,{key:1},[f("p",null,[s.value?(n(),l(m,{key:1},[p(d(a(o)("twofactor_backupcodes","These are your backup codes. Please save and/or print them as you will not be able to read the codes again later."))+" ",1),f("ul",{"aria-label":a(o)("twofactor_backupcodes","List of backup codes")},[(n(!0),l(m,null,I(a(e).codes,S=>(n(),l("li",{key:S,class:g(i.$style.backupcodesSettings__code)},d(S),3))),128))],8,Q)],64)):(n(),l(m,{key:0},[p(d(a(o)("twofactor_backupcodes","Backup codes have been generated. {used} of {total} codes have been used.",{used:a(e).used,total:a(e).total})),1)],64))]),f("p",{class:g(i.$style.backupcodesSettings__actions)},[y(a(w),{id:"generate-backup-codes",variant:"error",onClick:h},{default:k(()=>[p(d(a(o)("twofactor_backupcodes","Regenerate backup codes")),1)]),_:1}),s.value?(n(),l(m,{key:0},[y(a(w),{onClick:T},{default:k(()=>[p(d(a(o)("twofactor_backupcodes","Print backup codes")),1)]),_:1}),y(a(w),{href:u.value,download:b,variant:"primary"},{default:k(()=>[p(d(a(o)("twofactor_backupcodes","Save backup codes")),1)]),_:1},8,["href"])],64)):E("",!0)],2),f("p",null,[f("em",null,d(a(o)("twofactor_backupcodes","If you regenerate backup codes, you automatically invalidate old codes.")),1)])],64)):(n(),x(a(w),{key:0,disabled:t.value,variant:"primary",onClick:h},{icon:k(()=>[t.value?(n(),x(a(G),{key:0})):E("",!0)]),default:k(()=>[p(" "+d(a(o)("twofactor_backupcodes","Generate backup codes")),1)]),_:1},8,["disabled"]))],2))}}),W="_backupcodesSettings_bnkw8_2",X="_backupcodesSettings__code_bnkw8_7",Y="_backupcodesSettings__actions_bnkw8_13",Z={backupcodesSettings:W,backupcodesSettings__code:X,backupcodesSettings__actions:Y},ee={$style:Z},ae=j(V,[["__cssModules",ee]]),oe=A(),L=M(ae);L.use(oe),L.mount("#twofactor-backupcodes-settings"); //# sourceMappingURL=twofactor_backupcodes-settings-personal.mjs.map diff --git a/dist/twofactor_backupcodes-settings-personal.mjs.map b/dist/twofactor_backupcodes-settings-personal.mjs.map index 0cc72977665dd..1790d3c3be199 100644 --- a/dist/twofactor_backupcodes-settings-personal.mjs.map +++ b/dist/twofactor_backupcodes-settings-personal.mjs.map @@ -1 +1 @@ -{"version":3,"file":"twofactor_backupcodes-settings-personal.mjs","sources":["../build/frontend/apps/twofactor_backupcodes/src/service/logger.ts","../build/frontend/apps/twofactor_backupcodes/src/service/PrintService.ts","../build/frontend/apps/twofactor_backupcodes/src/service/BackupCodesService.ts","../build/frontend/apps/twofactor_backupcodes/src/store/index.ts","../build/frontend/apps/twofactor_backupcodes/src/views/PersonalSettings.vue","../build/frontend/apps/twofactor_backupcodes/src/settings-personal.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.detectLogLevel()\n\t.setApp('twofactor_backupcodes')\n\t.build()\n","/*!\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { showError } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\n\n/**\n * Open a new tab and print the given backup codes\n *\n * @param data - The backup codes to print\n */\nexport function print(data: string[]): void {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst name = (getCapabilities() as any).theming.name || 'Nextcloud'\n\tconst newTab = window.open('', t('twofactor_backupcodes', '{name} backup codes', { name }))\n\tif (!newTab) {\n\t\tshowError(t('twofactor_backupcodes', 'Unable to open a new tab for printing'))\n\t\tthrow new Error('Unable to open a new tab for printing')\n\t}\n\n\tconst heading = newTab.document.createElement('h1')\n\theading.textContent = t('twofactor_backupcodes', '{name} backup codes', { name })\n\tconst pre = newTab.document.createElement('pre')\n\tfor (const code of data) {\n\t\tconst codeLine = newTab.document.createTextNode(code)\n\t\tpre.appendChild(codeLine)\n\t\tpre.appendChild(newTab.document.createElement('br'))\n\t}\n\n\tnewTab.document.body.innerHTML = ''\n\tnewTab.document.body.appendChild(heading)\n\tnewTab.document.body.appendChild(pre)\n\n\tnewTab.print()\n\tnewTab.close()\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nexport interface ITwoFactorBackupCodesState {\n\tenabled: boolean\n\ttotal: number\n\tused: number\n}\n\nexport interface IApiResponse {\n\tcodes: string[]\n\tstate: ITwoFactorBackupCodesState\n}\n\n/**\n * Generate new backup codes\n */\nexport async function generateCodes(): Promise {\n\tconst url = generateUrl('/apps/twofactor_backupcodes/settings/create')\n\n\tconst { data } = await axios.post(url)\n\treturn data\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ITwoFactorBackupCodesState } from '../service/BackupCodesService.ts'\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { defineStore } from 'pinia'\nimport { ref } from 'vue'\nimport { generateCodes } from '../service/BackupCodesService.ts'\n\nconst initialState = loadState('twofactor_backupcodes', 'state')\n\nexport const useStore = defineStore('twofactor_backupcodes', () => {\n\tconst enabled = ref(initialState.enabled)\n\tconst total = ref(initialState.total)\n\tconst used = ref(initialState.used)\n\tconst codes = ref([])\n\n\t/**\n\t * Generate new backup codes and update the store state\n\t */\n\tasync function generate(): Promise {\n\t\tenabled.value = false\n\n\t\tconst { codes: newCodes, state } = await generateCodes()\n\t\tenabled.value = state.enabled\n\t\ttotal.value = state.total\n\t\tused.value = state.used\n\t\tcodes.value = newCodes\n\t}\n\n\treturn {\n\t\tenabled,\n\t\ttotal,\n\t\tused,\n\t\tcodes,\n\n\t\tgenerate,\n\t}\n})\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createPinia } from 'pinia'\nimport { createApp } from 'vue'\nimport PersonalSettings from './views/PersonalSettings.vue'\n\nconst pinia = createPinia()\nconst app = createApp(PersonalSettings)\napp.use(pinia)\napp.mount('#twofactor-backupcodes-settings')\n"],"names":["logger","getLoggerBuilder","print","data","name","getCapabilities","newTab","t","showError","heading","pre","code","codeLine","generateCodes","url","generateUrl","axios","initialState","loadState","useStore","defineStore","enabled","ref","total","used","codes","generate","newCodes","state","instanceName","store","generatingCodes","hasCodes","computed","downloadFilename","downloadUrl","prev","generateBackupCodes","confirmPassword","error","printCodes","_createElementBlock","_normalizeClass","$style","_unref","_Fragment","_createElementVNode","_createTextVNode","_toDisplayString","_openBlock","_renderList","_createVNode","NcButton","_createBlock","NcLoadingIcon","pinia","createPinia","app","createApp","PersonalSettings"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"twofactor_backupcodes-settings-personal.mjs","sources":["../build/frontend/apps/twofactor_backupcodes/src/service/logger.ts","../build/frontend/apps/twofactor_backupcodes/src/service/PrintService.ts","../build/frontend/apps/twofactor_backupcodes/src/service/BackupCodesService.ts","../build/frontend/apps/twofactor_backupcodes/src/store/index.ts","../build/frontend/apps/twofactor_backupcodes/src/views/PersonalSettings.vue","../build/frontend/apps/twofactor_backupcodes/src/settings-personal.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.detectLogLevel()\n\t.setApp('twofactor_backupcodes')\n\t.build()\n","/*!\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { showError } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\n\n/**\n * Open a new tab and print the given backup codes\n *\n * @param data - The backup codes to print\n */\nexport function print(data: string[]): void {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst name = (getCapabilities() as any).theming.name || 'Nextcloud'\n\tconst newTab = window.open('', t('twofactor_backupcodes', '{name} backup codes', { name }))\n\tif (!newTab) {\n\t\tshowError(t('twofactor_backupcodes', 'Unable to open a new tab for printing'))\n\t\tthrow new Error('Unable to open a new tab for printing')\n\t}\n\n\tconst heading = newTab.document.createElement('h1')\n\theading.textContent = t('twofactor_backupcodes', '{name} backup codes', { name })\n\tconst pre = newTab.document.createElement('pre')\n\tfor (const code of data) {\n\t\tconst codeLine = newTab.document.createTextNode(code)\n\t\tpre.appendChild(codeLine)\n\t\tpre.appendChild(newTab.document.createElement('br'))\n\t}\n\n\tnewTab.document.body.innerHTML = ''\n\tnewTab.document.body.appendChild(heading)\n\tnewTab.document.body.appendChild(pre)\n\n\tnewTab.print()\n\tnewTab.close()\n}\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nexport interface ITwoFactorBackupCodesState {\n\tenabled: boolean\n\ttotal: number\n\tused: number\n}\n\nexport interface IApiResponse {\n\tcodes: string[]\n\tstate: ITwoFactorBackupCodesState\n}\n\n/**\n * Generate new backup codes\n */\nexport async function generateCodes(): Promise {\n\tconst url = generateUrl('/apps/twofactor_backupcodes/settings/create')\n\n\tconst { data } = await axios.post(url)\n\treturn data\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ITwoFactorBackupCodesState } from '../service/BackupCodesService.ts'\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { defineStore } from 'pinia'\nimport { ref } from 'vue'\nimport { generateCodes } from '../service/BackupCodesService.ts'\n\nconst initialState = loadState('twofactor_backupcodes', 'state')\n\nexport const useStore = defineStore('twofactor_backupcodes', () => {\n\tconst enabled = ref(initialState.enabled)\n\tconst total = ref(initialState.total)\n\tconst used = ref(initialState.used)\n\tconst codes = ref([])\n\n\t/**\n\t * Generate new backup codes and update the store state\n\t */\n\tasync function generate(): Promise {\n\t\tenabled.value = false\n\n\t\tconst { codes: newCodes, state } = await generateCodes()\n\t\tenabled.value = state.enabled\n\t\ttotal.value = state.total\n\t\tused.value = state.used\n\t\tcodes.value = newCodes\n\t}\n\n\treturn {\n\t\tenabled,\n\t\ttotal,\n\t\tused,\n\t\tcodes,\n\n\t\tgenerate,\n\t}\n})\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createPinia } from 'pinia'\nimport { createApp } from 'vue'\nimport PersonalSettings from './views/PersonalSettings.vue'\n\nconst pinia = createPinia()\nconst app = createApp(PersonalSettings)\napp.use(pinia)\napp.mount('#twofactor-backupcodes-settings')\n"],"names":["logger","getLoggerBuilder","print","data","name","getCapabilities","newTab","t","showError","heading","pre","code","codeLine","generateCodes","url","generateUrl","axios","initialState","loadState","useStore","defineStore","enabled","ref","total","used","codes","generate","newCodes","state","instanceName","store","generatingCodes","hasCodes","computed","downloadFilename","downloadUrl","prev","generateBackupCodes","confirmPassword","error","printCodes","_createElementBlock","_normalizeClass","$style","_unref","_Fragment","_createElementVNode","_createTextVNode","_toDisplayString","_openBlock","_renderList","_createVNode","NcButton","_createBlock","NcLoadingIcon","pinia","createPinia","app","createApp","PersonalSettings"],"mappings":"u7BAOO,MAAMA,EAASC,IACpB,eAAA,EACA,OAAO,uBAAuB,EAC9B,MAAA,ECIK,SAASC,EAAMC,EAAsB,CAE3C,MAAMC,EAAQC,EAAA,EAA0B,QAAQ,MAAQ,YAClDC,EAAS,OAAO,KAAK,GAAIC,EAAE,wBAAyB,sBAAuB,CAAE,KAAAH,CAAA,CAAM,CAAC,EAC1F,GAAI,CAACE,EACJ,MAAAE,EAAUD,EAAE,wBAAyB,uCAAuC,CAAC,EACvE,IAAI,MAAM,uCAAuC,EAGxD,MAAME,EAAUH,EAAO,SAAS,cAAc,IAAI,EAClDG,EAAQ,YAAcF,EAAE,wBAAyB,sBAAuB,CAAE,KAAAH,EAAM,EAChF,MAAMM,EAAMJ,EAAO,SAAS,cAAc,KAAK,EAC/C,UAAWK,KAAQR,EAAM,CACxB,MAAMS,EAAWN,EAAO,SAAS,eAAeK,CAAI,EACpDD,EAAI,YAAYE,CAAQ,EACxBF,EAAI,YAAYJ,EAAO,SAAS,cAAc,IAAI,CAAC,CACpD,CAEAA,EAAO,SAAS,KAAK,UAAY,GACjCA,EAAO,SAAS,KAAK,YAAYG,CAAO,EACxCH,EAAO,SAAS,KAAK,YAAYI,CAAG,EAEpCJ,EAAO,MAAA,EACPA,EAAO,MAAA,CACR,CChBA,eAAsBO,GAAuC,CAC5D,MAAMC,EAAMC,EAAY,6CAA6C,EAE/D,CAAE,KAAAZ,CAAA,EAAS,MAAMa,EAAM,KAAmBF,CAAG,EACnD,OAAOX,CACR,CCfA,MAAMc,EAAeC,EAAsC,wBAAyB,OAAO,EAE9EC,EAAWC,EAAY,wBAAyB,IAAM,CAClE,MAAMC,EAAUC,EAAIL,EAAa,OAAO,EAClCM,EAAQD,EAAIL,EAAa,KAAK,EAC9BO,EAAOF,EAAIL,EAAa,IAAI,EAC5BQ,EAAQH,EAAc,EAAE,EAK9B,eAAeI,GAA0B,CACxCL,EAAQ,MAAQ,GAEhB,KAAM,CAAE,MAAOM,EAAU,MAAAC,CAAA,EAAU,MAAMf,EAAA,EACzCQ,EAAQ,MAAQO,EAAM,QACtBL,EAAM,MAAQK,EAAM,MACpBJ,EAAK,MAAQI,EAAM,KACnBH,EAAM,MAAQE,CACf,CAEA,MAAO,CACN,QAAAN,EACA,MAAAE,EACA,KAAAC,EACA,MAAAC,EAEA,SAAAC,CAAA,CAEF,CAAC,2DCvBD,MAAMG,EAAgBxB,EAAA,EAA0B,QAAQ,MAAQ,YAE1DyB,EAAQX,EAAA,EACRY,EAAkBT,EAAI,EAAK,EAE3BU,EAAWC,EAAS,IAClBH,EAAM,OAASA,EAAM,MAAM,OAAS,CAC3C,EAEKI,EAAmBL,EAAe,oBAClCM,EAAcF,EAAS,IACvBD,EAAS,MAGP,mBAAqB,mBAAmBF,EAAM,MAAM,OAAO,CAACM,EAAMzB,IACjEyB,EAAOzB,EAAO;AAAA,EACnB,EAAE,CAAC,EAJE,EAKR,EAKD,eAAe0B,GAAsB,CACpC,MAAMC,EAAA,EAENP,EAAgB,MAAQ,GAExB,GAAI,CACH,MAAMD,EAAM,SAAA,CACb,OAASS,EAAO,CACfvC,EAAO,MAAM,gCAAiC,CAAE,MAAAuC,CAAA,CAAO,EACvD/B,EAAUD,EAAE,wBAAyB,sDAAsD,CAAC,CAC7F,QAAA,CACCwB,EAAgB,MAAQ,EACzB,CACD,CAKA,SAASS,GAAa,CACrBtC,EAAM,CAAC4B,EAAM,OAASA,EAAM,MAAM,SAAW,EAAI,CAAA,EAAKA,EAAM,KAAK,CAClE,mBAICW,EAqDM,MAAA,CArDA,MAAKC,EAAEC,EAAAA,OAAO,mBAAmB,CAAA,GAE9BC,EAAAd,CAAA,EAAM,aASdW,EAyCWI,EAAA,CAAA,IAAA,GAAA,CAxCVC,EAeI,IAAA,KAAA,CAdcd,EAAA,WAGjBS,EAUWI,EAAA,CAAA,IAAA,GAAA,CATPE,EAAAC,EAAAJ,EAAArC,CAAA,gJAAkJ,IACrJ,CAAA,EAAAuC,EAOK,KAAA,CAPA,aAAYF,EAAArC,CAAA,EAAC,wBAAA,sBAAA,CAAA,IACjB0C,EAAA,EAAA,EAAAR,EAKKI,EAAA,KAAAK,EAJWN,EAAAd,CAAA,EAAM,MAAdnB,QADR8B,EAKK,KAAA,CAHH,IAAK9B,EACL,MAAK+B,EAAEC,EAAAA,OAAO,yBAAyB,CAAA,IACrChC,CAAI,EAAA,CAAA,2BAVV8B,EAEWI,EAAA,CAAA,IAAA,GAAA,CADPE,EAAAC,EAAAJ,EAAArC,CAAA,4GAAgHqC,EAAAd,CAAA,EAAM,KAAI,MAASc,EAAAd,CAAA,EAAM,KAAA,CAAK,CAAA,EAAA,CAAA,CAAA,SAcnJgB,EAkBI,IAAA,CAlBA,MAAKJ,EAAEC,EAAAA,OAAO,4BAA4B,CAAA,GAC7CQ,EAKWP,EAAAQ,CAAA,EAAA,CAJV,GAAG,wBACH,QAAQ,QACP,QAAOf,CAAA,aACR,IAA2D,KAAxDO,EAAArC,CAAA,EAAC,wBAAA,yBAAA,CAAA,EAAA,CAAA,CAAA,SAEWyB,EAAA,WAAhBS,EAUWI,EAAA,CAAA,IAAA,GAAA,CATVM,EAEWP,EAAAQ,CAAA,EAAA,CAFA,QAAOZ,GAAU,WAC3B,IAAsD,KAAnDI,EAAArC,CAAA,EAAC,wBAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,SAEL4C,EAKWP,EAAAQ,CAAA,EAAA,CAJT,KAAMjB,EAAA,MACN,SAAUD,EACX,QAAQ,SAAA,aACR,IAAqD,KAAlDU,EAAArC,CAAA,EAAC,wBAAA,mBAAA,CAAA,EAAA,CAAA,CAAA,uCAIPuC,EAII,IAAA,KAAA,CAHHA,EAEK,YADDF,EAAArC,CAAA,EAAC,wBAAA,yEAAA,CAAA,EAAA,CAAA,CAAA,cAhDP8C,EASWT,EAAAQ,CAAA,EAAA,OAPT,SAAUrB,EAAA,MACX,QAAQ,UACP,QAAOM,CAAA,GACG,OACV,IAAwC,CAAnBN,EAAA,WAArBsB,EAAwCT,EAAAU,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,wBAC9B,IACX,CADWP,EAAA,MACRH,EAAArC,CAAA,EAAC,wBAAA,uBAAA,CAAA,EAAA,CAAA,CAAA,qRChEDgD,GAAQC,EAAA,EACRC,EAAMC,EAAUC,EAAgB,EACtCF,EAAI,IAAIF,EAAK,EACbE,EAAI,MAAM,iCAAiC"} \ No newline at end of file diff --git a/dist/user_ldap-settings-admin.mjs b/dist/user_ldap-settings-admin.mjs index 0fda4e7235a11..5ab33a46bc612 100644 --- a/dist/user_ldap-settings-admin.mjs +++ b/dist/user_ldap-settings-admin.mjs @@ -1,2 +1,2 @@ -import{l as A,v as I,b as O,o as v,f as V,g as p,t as n,u as e,k as i,w as h,j as w,c as T,h as F,A as X,m as re,z as ee,F as W,y as oe,Z as ie,B as se,e as de}from"./Web-DYqXJUev.chunk.mjs";import{l as ae,g as $,_ as G}from"./public-C1mLBHT3.chunk.mjs";import{t as a,a as ue}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{a as B}from"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as x}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as Y}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{g as ne,c as M}from"./index-Cp0kcsps.chunk.mjs";import{N as k}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{P as pe}from"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import{N as R}from"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{N as ce}from"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import{c as j,i as me}from"./index-CkGt55pS.chunk.mjs";import{_ as b}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import{I as le}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{d as _e,s as Q,c as ge}from"./pinia-BsumPXOW.chunk.mjs";import{a as H,d as te,g as fe,s as ve,b as q}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const S=ne().setApp("LDAP").detectUser().build();async function he(){const u=await j.post(M("apps/user_ldap/api/v1/config"));return S.debug("Created configuration",{configId:u.data.ocs.data.configID}),u.data.ocs.data.configID}async function be(u){const s=new FormData;s.set("copyConfig",u);const m=await j.post(M("apps/user_ldap/api/v1/config/{configId}/copy",{configId:u}),s);return S.debug("Created configuration",{configId:m.data.ocs.data.configID}),m.data.ocs.data.configID}async function we(u){const s=await j.get(M("apps/user_ldap/api/v1/config/{configId}",{configId:u}));return S.debug("Fetched configuration",{configId:u,config:s.data.ocs.data}),s.data.ocs.data}async function ye(u,s){const m=await j.put(M("apps/user_ldap/api/v1/config/{configId}",{configId:u}),{configData:s});return S.debug("Updated configuration",{configId:u,config:s}),m.data.ocs.data}async function Ae(u){try{if(!await J(a("user_ldap","Confirm action"),a("user_ldap","Are you sure you want to permanently delete this LDAP configuration? This cannot be undone.")))return!1;await j.delete(M("apps/user_ldap/api/v1/config/{configId}",{configId:u})),S.debug("Deleted configuration",{configId:u})}catch(s){const m=s.response;H(m?.data.ocs.meta.message||a("user_ldap","Failed to delete config"))}return!0}async function Ve(u){const s=new FormData,m=await j.post(M("apps/user_ldap/api/v1/config/{configId}/test",{configId:u}));return S.debug(`Configuration is ${m.data.ocs.data.success?"valide":"invalide"}`,{configId:u,params:s,response:m}),m.data.ocs.data}async function De(u){if(!await J(a("user_ldap","Confirm action"),a("user_ldap","Are you sure you want to permanently clear the LDAP mapping? This cannot be undone.")))return!1;try{const s=await j.post(M("apps/user_ldap/api/v1/wizard/clearMappings"),{subject:u});return S.debug("Cleared mapping",{subject:u,response:s}),te(a("user_ldap","Mapping cleared")),!0}catch(s){const m=s.response;H(m?.data.ocs.meta.message||a("user_ldap","Failed to clear mapping"))}}async function P(u,s,m={}){const t=new FormData;Object.entries(m).forEach(([o,c])=>{t.set(o,c)});try{const o=await j.post(M("apps/user_ldap/api/v1/wizard/{configId}/{action}",{configId:s,action:u}),t);return S.debug(`Called wizard action: ${u}`,{configId:s,params:t,response:o}),o.data.ocs.data}catch(o){let c=a("user_ldap","An error occurred");throw me(o)&&o.response?.data.ocs.meta.status==="failure"&&o.response.data.ocs.meta.message!==""&&o.response.data.ocs.meta.message!==void 0&&(c=o.response.data.ocs.meta.message),H(c),o}}async function Z(){return await J(a("user_ldap","Mode switch"),a("user_ldap","Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?"))}async function J(u,s){let m=!1;return await fe(u).setText(s).setSeverity("warning").addButton({label:a("user_ldap","Cancel"),callback(){}}).addButton({label:a("user_ldap","Confirm"),variant:"error",callback(){m=!0}}).build().show(),m}const E=_e("ldap-configs",()=>{const u=A(ae("user_ldap","ldapConfigs")),s=A(Object.keys(u.value)[0]),m=I(()=>s.value===void 0?void 0:u.value[s.value]),t=A(0);function o(l,y={}){if(u.value[l]===void 0)throw new Error(`Config with id ${l} does not exist`);return new Proxy(u.value[l],{get(L,C){return L[C]},set(L,C,D){return L[C]=D,(async()=>(t.value++,await ye(l,{[C]:D}),t.value--,y[C]!==void 0&&y[C](L[C])))(),!0}})}async function c(){const l=await he();return u.value[l]=await we(l),s.value=l,l}async function g(l){if(u.value[l]===void 0)throw new Error(`Config with id ${l} does not exist`);const y=await be(l);return u.value[y]={...u.value[l]},s.value=y,y}async function r(l){await Ae(l)===!0&&(Object.keys(u.value).length===1?(s.value=await c(),s.value!==l&&delete u.value[l]):(s.value=Object.keys(u.value).filter(y=>l!==y)[0],delete u.value[l]))}return{ldapConfigs:u,selectedConfigId:s,selectedConfig:m,updatingConfig:t,getConfigProxy:o,create:c,copyConfig:g,removeConfig:r}}),Ue={class:"ldap-wizard__advanced"},Ce={open:"",name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Le={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Ie={class:"tablecell"},Pe={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},xe={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Te=O({__name:"AdvancedTab",props:{configId:{}},setup(u){const s=u,m=E(),t=I(()=>m.getConfigProxy(s.configId)),o=$().theming.name,c={uniqueMember:"uniqueMember",memberUid:"memberUid",member:"member (AD)",gidNumber:"gidNumber",zimbraMailForwardingAddress:"zimbraMailForwardingAddress"};return(g,r)=>(v(),V("fieldset",Ue,[p("details",Ce,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Connection Settings")),1)]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Backup (Replica) Host"),modelValue:t.value.ldapBackupHost,helperText:e(a)("user_ldap","Give an optional backup host. It must be a replica of the main LDAP/AD server."),onChange:r[0]||(r[0]=l=>t.value.ldapBackupHost=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{type:"number",modelValue:t.value.ldapBackupPort,label:e(a)("user_ldap","Backup (Replica) Port"),onChange:r[1]||(r[1]=l=>t.value.ldapBackupPort=l.target.value)},null,8,["modelValue","label"]),i(e(k),{modelValue:t.value.ldapOverrideMainServer==="1",type:"switch","aria-label":e(a)("user_ldap","Only connect to the replica server."),"onUpdate:modelValue":r[2]||(r[2]=l=>t.value.ldapOverrideMainServer=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Disable Main Server")),1)]),_:1},8,["modelValue","aria-label"]),i(e(k),{modelValue:t.value.turnOffCertCheck==="1","aria-label":e(a)("user_ldap","Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your {instanceName} server.",{instanceName:e(o)}),"onUpdate:modelValue":r[3]||(r[3]=l=>t.value.turnOffCertCheck=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Turn off SSL certificate validation.")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{type:"number",label:e(a)("user_ldap","Cache Time-To-Live"),modelValue:t.value.ldapCacheTTL,helperText:e(a)("user_ldap","in seconds. A change empties the cache."),onChange:r[4]||(r[4]=l=>t.value.ldapCacheTTL=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",Le,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Directory Settings")),1)]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapUserDisplayName,label:e(a)("user_ldap","User Display Name Field"),helperText:e(a)("user_ldap","The LDAP attribute to use to generate the user's display name."),onChange:r[5]||(r[5]=l=>t.value.ldapUserDisplayName=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapUserDisplayName2,label:e(a)("user_ldap","2nd User Display Name Field"),helperText:e(a)("user_ldap","Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«."),onChange:r[6]||(r[6]=l=>t.value.ldapUserDisplayName2=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(B),{modelValue:t.value.ldapBaseUsers,placeholder:e(a)("user_ldap","One User Base DN per line"),label:e(a)("user_ldap","Base User Tree"),onChange:r[7]||(r[7]=l=>t.value.ldapBaseUsers=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(B),{modelValue:t.value.ldapAttributesForUserSearch,placeholder:e(a)("user_ldap","Optional; one attribute per line"),label:e(a)("user_ldap","User Search Attributes"),onChange:r[8]||(r[8]=l=>t.value.ldapAttributesForUserSearch=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(k),{modelValue:t.value.markRemnantsAsDisabled==="1","aria-label":e(a)("user_ldap","When switched on, users imported from LDAP which are then missing will be disabled"),"onUpdate:modelValue":r[9]||(r[9]=l=>t.value.markRemnantsAsDisabled=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Disable users missing from LDAP")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapGroupDisplayName,label:e(a)("user_ldap","Group Display Name Field"),title:e(a)("user_ldap","The LDAP attribute to use to generate the groups's display name."),onChange:r[10]||(r[10]=l=>t.value.ldapGroupDisplayName=l.target.value)},null,8,["modelValue","label","title"]),i(e(B),{modelValue:t.value.ldapBaseGroups,placeholder:e(a)("user_ldap","One Group Base DN per line"),label:e(a)("user_ldap","Base Group Tree"),onChange:r[11]||(r[11]=l=>t.value.ldapBaseGroups=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(B),{modelValue:t.value.ldapAttributesForGroupSearch,placeholder:e(a)("user_ldap","Optional; one attribute per line"),label:e(a)("user_ldap","Group Search Attributes"),onChange:r[12]||(r[12]=l=>t.value.ldapAttributesForGroupSearch=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(R),{modelValue:t.value.ldapGroupMemberAssocAttr,"onUpdate:modelValue":r[13]||(r[13]=l=>t.value.ldapGroupMemberAssocAttr=l),options:Object.keys(c),inputLabel:e(a)("user_ldap","Group-Member association")},{option:h(({label:l})=>[w(n(c[l]),1)]),"selected-option":h(({label:l})=>[w(n(c[l]),1)]),_:1},8,["modelValue","options","inputLabel"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Dynamic Group Member URL"),modelValue:t.value.ldapDynamicGroupMemberURL,helperText:e(a)("user_ldap","The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)"),onChange:r[14]||(r[14]=l=>t.value.ldapDynamicGroupMemberURL=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(k),{modelValue:t.value.ldapNestedGroups==="1","aria-label":e(a)("user_ldap","When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)"),"onUpdate:modelValue":r[15]||(r[15]=l=>t.value.ldapNestedGroups=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Nested Groups")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{type:"number",label:e(a)("user_ldap","Paging chunksize"),modelValue:t.value.ldapPagingSize,helperText:e(a)("user_ldap","Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)"),onChange:r[16]||(r[16]=l=>t.value.ldapPagingSize=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(k),{modelValue:t.value.turnOnPasswordChange==="1","aria-label":e(a)("user_ldap","Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server."),"onUpdate:modelValue":r[17]||(r[17]=l=>t.value.turnOnPasswordChange=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Enable LDAP password changes per user")),1)]),_:1},8,["modelValue","aria-label"]),p("span",Ie,n(e(a)("user_ldap","(New password is sent as plain text to LDAP)")),1),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Default password policy DN"),modelValue:t.value.ldapDefaultPPolicyDN,helperText:e(a)("user_ldap","The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling."),onChange:r[18]||(r[18]=l=>t.value.ldapDefaultPPolicyDN=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",Pe,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Special Attributes")),1)]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapQuotaAttribute,label:e(a)("user_ldap","Quota Field"),helperText:e(a)("user_ldap","Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute."),onChange:r[19]||(r[19]=l=>t.value.ldapQuotaAttribute=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapQuotaDefault,label:e(a)("user_ldap","Quota Default"),helperText:e(a)("user_ldap","Override default quota for LDAP users who do not have a quota set in the Quota Field."),onChange:r[20]||(r[20]=l=>t.value.ldapQuotaDefault=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapEmailAttribute,label:e(a)("user_ldap","Email Field"),helperText:e(a)("user_ldap","Set the user's email from their LDAP attribute. Leave it empty for default behaviour."),onChange:r[21]||(r[21]=l=>t.value.ldapEmailAttribute=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","User Home Folder Naming Rule"),modelValue:t.value.homeFolderNamingRule,helperText:e(a)("user_ldap","Leave empty for username (default). Otherwise, specify an LDAP/AD attribute."),onChange:r[22]||(r[22]=l=>t.value.homeFolderNamingRule=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","`$home` Placeholder Field"),modelValue:t.value.ldapExtStorageHomeAttribute,helperText:e(a)("user_ldap","$home in an external storage configuration will be replaced with the value of the specified attribute"),onChange:r[23]||(r[23]=l=>t.value.ldapExtStorageHomeAttribute=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",xe,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","User Profile Attributes")),1)]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Phone Field"),modelValue:t.value.ldapAttributePhone,helperText:e(a)("user_ldap","User profile Phone will be set from the specified attribute"),onChange:r[24]||(r[24]=l=>t.value.ldapAttributePhone=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Website Field"),modelValue:t.value.ldapAttributeWebsite,helperText:e(a)("user_ldap","User profile Website will be set from the specified attribute"),onChange:r[25]||(r[25]=l=>t.value.ldapAttributeWebsite=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Address Field"),modelValue:t.value.ldapAttributeAddress,helperText:e(a)("user_ldap","User profile Address will be set from the specified attribute"),onChange:r[26]||(r[26]=l=>t.value.ldapAttributeAddress=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Twitter Field"),modelValue:t.value.ldapAttributeTwitter,helperText:e(a)("user_ldap","User profile Twitter will be set from the specified attribute"),onChange:r[27]||(r[27]=l=>t.value.ldapAttributeTwitter=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Fediverse Field"),modelValue:t.value.ldapAttributeFediverse,helperText:e(a)("user_ldap","User profile Fediverse will be set from the specified attribute"),onChange:r[28]||(r[28]=l=>t.value.ldapAttributeFediverse=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Organisation Field"),modelValue:t.value.ldapAttributeOrganisation,helperText:e(a)("user_ldap","User profile Organisation will be set from the specified attribute"),onChange:r[29]||(r[29]=l=>t.value.ldapAttributeOrganisation=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Role Field"),modelValue:t.value.ldapAttributeRole,helperText:e(a)("user_ldap","User profile Role will be set from the specified attribute"),onChange:r[30]||(r[30]=l=>t.value.ldapAttributeRole=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Headline Field"),modelValue:t.value.ldapAttributeHeadline,helperText:e(a)("user_ldap","User profile Headline will be set from the specified attribute"),onChange:r[31]||(r[31]=l=>t.value.ldapAttributeHeadline=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Biography Field"),modelValue:t.value.ldapAttributeBiography,helperText:e(a)("user_ldap","User profile Biography will be set from the specified attribute"),onChange:r[32]||(r[32]=l=>t.value.ldapAttributeBiography=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Birthdate Field"),modelValue:t.value.ldapAttributeBirthDate,helperText:e(a)("user_ldap","User profile Date of birth will be set from the specified attribute"),onChange:r[33]||(r[33]=l=>t.value.ldapAttributeBirthDate=l.target.value)},null,8,["label","modelValue","helperText"])])]))}}),Fe=G(Te,[["__scopeId","data-v-270da57a"]]),ke={class:"ldap-wizard__expert"},ze={class:"ldap-wizard__expert__line"},Ne={id:"ldap_expert_username_attr"},Ge={class:"ldap-wizard__expert__line"},Be={id:"ldap_expert_uuid_user_attr"},Oe=O({__name:"ExpertTab",props:{configId:{}},setup(u){const s=u,m=E(),t=I(()=>m.getConfigProxy(s.configId));return(o,c)=>(v(),V("fieldset",ke,[p("div",ze,[p("strong",null,n(e(a)("user_ldap","Internal Username")),1),p("p",Ne,n(e(a)("user_ldap","By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior.")),1),i(e(b),{"aria-describedby":"ldap_expert_username_attr",autocomplete:"off",label:e(a)("user_ldap","Internal Username Attribute:"),modelValue:t.value.ldapExpertUsernameAttr,onChange:c[0]||(c[0]=g=>t.value.ldapExpertUsernameAttr=g.target.value)},null,8,["label","modelValue"])]),p("div",Ge,[p("strong",null,n(e(a)("user_ldap","Override UUID detection")),1),p("p",Be,n(e(a)("user_ldap","By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups.")),1),i(e(b),{"aria-describedby":"ldap_expert_uuid_user_attr",autocomplete:"off",label:e(a)("user_ldap","UUID Attribute for Users"),modelValue:t.value.ldapExpertUUIDUserAttr,onChange:c[1]||(c[1]=g=>t.value.ldapExpertUUIDUserAttr=g.target.value)},null,8,["label","modelValue"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","UUID Attribute for Groups"),modelValue:t.value.ldapExpertUUIDGroupAttr,onChange:c[2]||(c[2]=g=>t.value.ldapExpertUUIDGroupAttr=g.target.value)},null,8,["label","modelValue"])])]))}}),Me=G(Oe,[["__scopeId","data-v-e77b52a4"]]),je={class:"ldap-wizard__groups"},Se={class:"ldap-wizard__groups__line ldap-wizard__groups__filter-selection"},Ee={class:"ldap-wizard__groups__line ldap-wizard__groups__groups-filter"},He={key:0},Re={key:1},Qe={class:"ldap-wizard__groups__line ldap-wizard__groups__groups-count-check"},$e={key:1},qe=O({__name:"GroupsTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapGroupFilterObjectclass:U,ldapGroupFilterGroups:U})),c=$().theming.name,g=A(void 0),r=A([]),l=A([]),y=A(!1),L=I({get(){return o.value.ldapGroupFilterObjectclass.split(";").filter(d=>d!=="")},set(d){o.value.ldapGroupFilterObjectclass=d.join(";")}}),C=I({get(){return o.value.ldapGroupFilterGroups.split(";").filter(d=>d!=="")},set(d){o.value.ldapGroupFilterGroups=d.join(";")}});async function D(){const d=await P("determineGroupObjectClasses",s.configId);r.value=d.options?.ldap_groupfilter_objectclass??[];const _=await P("determineGroupsForGroups",s.configId);l.value=_.options?.ldap_groupfilter_groups??[]}D();async function U(){const d=await P("getGroupFilter",s.configId);t.value[s.configId].ldapGroupFilter=d.changes?.ldap_group_filter??""}async function z(){try{y.value=!0;const d=await P("countGroups",s.configId);g.value=d.changes.ldap_group_count}finally{y.value=!1}}async function f(d){d?o.value.ldapGroupFilterMode="1":o.value.ldapGroupFilterMode=await Z()?"0":"1"}return(d,_)=>(v(),V("fieldset",je,[p("legend",null,n(e(a)("user_ldap","Groups meeting these criteria are available in {instanceName}:",{instanceName:e(c)})),1),p("div",Se,[i(e(R),{modelValue:L.value,"onUpdate:modelValue":_[0]||(_[0]=N=>L.value=N),class:"ldap-wizard__groups__group-filter-groups__select",options:r.value,disabled:o.value.ldapGroupFilterMode==="1",inputLabel:e(a)("user_ldap","Only these object classes:"),multiple:!0},null,8,["modelValue","options","disabled","inputLabel"]),i(e(R),{modelValue:C.value,"onUpdate:modelValue":_[1]||(_[1]=N=>C.value=N),class:"ldap-wizard__groups__group-filter-groups__select",options:l.value,disabled:o.value.ldapGroupFilterMode==="1",inputLabel:e(a)("user_ldap","Only from these groups:"),multiple:!0},null,8,["modelValue","options","disabled","inputLabel"])]),p("div",Ee,[i(e(k),{modelValue:o.value.ldapGroupFilterMode==="1","onUpdate:modelValue":f},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),o.value.ldapGroupFilterMode==="1"?(v(),V("div",He,[i(e(B),{modelValue:o.value.ldapGroupFilter,"onUpdate:modelValue":_[2]||(_[2]=N=>o.value.ldapGroupFilter=N),placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","The filter specifies which LDAP groups shall have access to the {instanceName} instance.",{instanceName:e(c)})},null,8,["modelValue","placeholder","helperText"])])):(v(),V("div",Re,[p("span",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapGroupFilter),1)]))]),p("div",Qe,[i(e(x),{disabled:y.value,onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings and count the groups")),1)]),_:1},8,["disabled"]),y.value?(v(),T(e(Y),{key:0,size:20})):F("",!0),g.value!==void 0&&!y.value?(v(),V("span",$e,n(g.value),1)):F("",!0)])]))}}),We=G(qe,[["__scopeId","data-v-d46b1472"]]),Ye={class:"ldap-wizard__login"},Ze={class:"ldap-wizard__login__line ldap-wizard__login__login-attributes"},Je={class:"ldap-wizard__login__line ldap-wizard__login__user-login-filter"},Ke={key:1},Xe={class:"ldap-wizard__login__line"},ea=O({__name:"LoginTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapLoginFilterAttributes:D,ldapLoginFilterUsername:D,ldapLoginFilterEmail:D})),c=$().theming.name,g=A(""),r=A([]),l=I({get(){return o.value.ldapLoginFilterAttributes.split(";").filter(f=>f!=="")},set(f){o.value.ldapLoginFilterAttributes=f.join(";")}}),y=I(()=>o.value.ldapLoginFilterMode==="1"),L=I(()=>r.value.filter(f=>!l.value.includes(f)));X(C);async function C(){const f=await P("determineAttributes",s.configId);r.value=f.options?.ldap_loginfilter_attributes??[]}async function D(){if(o.value.ldapLoginFilterMode==="0"){const f=await P("getUserLoginFilter",s.configId);t.value[s.configId].ldapLoginFilter=f.changes?.ldap_login_filter??""}}async function U(){try{const f=await P("testLoginName",s.configId,{loginName:g.value}),d=f.changes.ldap_test_loginname,_=f.changes.ldap_test_effective_filter;d<1?H(a("user_ldap","User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): {filter}",{filter:_})):d===1?te(a("user_ldap","User found and settings verified.")):d>1&&ve(a("user_ldap","Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in."))}catch(f){switch(f??a("user_ldap","An unspecified error occurred. Please check log and settings.")){case"Bad search filter":H(a("user_ldap","The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise."));break;case"connection error":H(a("user_ldap","A connection error to LDAP/AD occurred. Please check host, port and credentials."));break;case"missing placeholder":H(a("user_ldap",'The "%uid" placeholder is missing. It will be replaced with the login name when querying LDAP/AD.'));break}}}async function z(f){f?o.value.ldapLoginFilterMode="1":o.value.ldapLoginFilterMode=await Z()?"0":"1"}return(f,d)=>(v(),V("fieldset",Ye,[p("legend",null,n(e(a)("user_ldap","When logging in, {instanceName} will find the user based on the following attributes:",{instanceName:e(c)})),1),i(e(k),{modelValue:o.value.ldapLoginFilterUsername==="1",description:e(a)("user_ldap","Allows login against the LDAP/AD username, which is either 'uid' or 'sAMAccountName' and will be detected."),"onUpdate:modelValue":d[0]||(d[0]=_=>o.value.ldapLoginFilterUsername=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","LDAP/AD Username:")),1)]),_:1},8,["modelValue","description"]),i(e(k),{modelValue:o.value.ldapLoginFilterEmail==="1",description:e(a)("user_ldap","Allows login against an email attribute. 'mail' and 'mailPrimaryAddress' allowed."),"onUpdate:modelValue":d[1]||(d[1]=_=>o.value.ldapLoginFilterEmail=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","LDAP/AD Email Address:")),1)]),_:1},8,["modelValue","description"]),p("div",Ze,[i(e(R),{modelValue:l.value,"onUpdate:modelValue":d[2]||(d[2]=_=>l.value=_),keepOpen:"",disabled:y.value,options:L.value,inputLabel:e(a)("user_ldap","Other Attributes:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"])]),p("div",Je,[i(e(k),{modelValue:y.value,"onUpdate:modelValue":z},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),y.value?(v(),T(e(B),{key:0,modelValue:o.value.ldapLoginFilter,placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","Defines the filter to apply, when login is attempted. `%%uid` replaces the username in the login action. Example: `uid=%%uid`"),onChange:d[3]||(d[3]=_=>o.value.ldapLoginFilter=_.target.value)},null,8,["modelValue","placeholder","helperText"])):(v(),V("div",Ke,[p("span",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapLoginFilter),1)]))]),p("div",Xe,[i(e(b),{modelValue:g.value,"onUpdate:modelValue":d[4]||(d[4]=_=>g.value=_),helperText:e(a)("user_ldap","Attempts to receive a DN for the given login name and the current login filter"),label:e(a)("user_ldap","Test Login name"),autocomplete:"off"},null,8,["modelValue","helperText","label"]),i(e(x),{disabled:g.value.length===0,onClick:U},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings")),1)]),_:1},8,["disabled"])])]))}}),aa=G(ea,[["__scopeId","data-v-72e489d5"]]),la={name:"DeleteIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ta=["aria-hidden","aria-label"],ra=["fill","width","height"],oa={d:"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"},ia={key:0};function sa(u,s,m,t,o,c){return v(),V("span",re(u.$attrs,{"aria-hidden":m.title?null:"true","aria-label":m.title,class:"material-design-icon delete-icon",role:"img",onClick:s[0]||(s[0]=g=>u.$emit("click",g))}),[(v(),V("svg",{fill:m.fillColor,class:"material-design-icon__svg",width:m.size,height:m.size,viewBox:"0 0 24 24"},[p("path",oa,[m.title?(v(),V("title",ia,n(m.title),1)):F("",!0)])],8,ra))],16,ta)}const da=G(la,[["render",sa]]),ua={class:"ldap-wizard__server"},na={class:"ldap-wizard__server__line"},pa={class:"ldap-wizard__server__line"},ca={class:"ldap-wizard__server__host__port"},ma={class:"ldap-wizard__server__line"},_a={class:"ldap-wizard__server__line"},ga={class:"ldap-wizard__server__line"},fa=O({__name:"ServerTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId)),c=A(!1),g=A(!1),r=A(!1),l=A(o.value.ldapAgentName),y=A(o.value.ldapAgentPassword),L=I(()=>o.value.ldapAgentName!==l.value||o.value.ldapAgentPassword!==y.value);ee(o,f=>{l.value=f.ldapAgentName,f.ldapAgentPassword==="***"?y.value="":y.value=f.ldapAgentPassword});function C(){o.value.ldapAgentName=l.value,o.value.ldapAgentPassword=y.value}async function D(){try{c.value=!0;const{changes:f}=await P("guessPortAndTLS",s.configId);t.value[s.configId].ldapPort=f.ldap_port??""}finally{c.value=!1}}async function U(){try{r.value=!0;const{changes:f}=await P("guessBaseDN",s.configId);o.value.ldapBase=f.ldap_base??""}finally{r.value=!1}}async function z(){try{g.value=!0;const{changes:f}=await P("countInBaseDN",s.configId),d=f.ldap_test_base;d<1?q(a("user_ldap","No object found in the given Base DN. Please revise.")):d>1e3?q(a("user_ldap","More than 1,000 directory entries available.")):q(ue("user_ldap","{ldapTestBase} entry available within the provided Base DN","{ldapTestBase} entries available within the provided Base DN",d,{ldapTestBase:d}))}finally{g.value=!1}}return(f,d)=>(v(),V("fieldset",ua,[p("div",na,[i(e(k),{modelValue:o.value.ldapConfigurationActive==="1",type:"switch","aria-label":e(a)("user_ldap","When unchecked, this configuration will be skipped."),"onUpdate:modelValue":d[0]||(d[0]=_=>o.value.ldapConfigurationActive=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Configuration active")),1)]),_:1},8,["modelValue","aria-label"]),i(e(x),{title:e(a)("user_ldap","Copy current configuration into new directory binding"),onClick:d[1]||(d[1]=_=>e(m).copyConfig(u.configId))},{icon:h(()=>[i(le,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Copy configuration")),1)]),_:1},8,["title"]),i(e(x),{variant:"error",onClick:d[2]||(d[2]=_=>e(m).removeConfig(u.configId))},{icon:h(()=>[i(da,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Delete configuration")),1)]),_:1})]),p("div",pa,[i(e(b),{modelValue:o.value.ldapHost,helperText:e(a)("user_ldap","You can omit the protocol, unless you require SSL. If so, start with ldaps://"),label:e(a)("user_ldap","Host"),placeholder:"ldaps://localhost",autocomplete:"off",onChange:d[3]||(d[3]=_=>o.value.ldapHost=_.target.value)},null,8,["modelValue","helperText","label"]),p("div",ca,[i(e(b),{modelValue:o.value.ldapPort,label:e(a)("user_ldap","Port"),placeholder:"389",type:"number",autocomplete:"off",onChange:d[4]||(d[4]=_=>o.value.ldapPort=_.target.value)},null,8,["modelValue","label"]),i(e(x),{disabled:c.value,onClick:D},{default:h(()=>[w(n(e(a)("user_ldap","Detect Port")),1)]),_:1},8,["disabled"])])]),p("div",ma,[i(e(b),{modelValue:l.value,"onUpdate:modelValue":d[5]||(d[5]=_=>l.value=_),helperText:e(a)("user_ldap","The DN of the client user with which the bind shall be done. For anonymous access, leave DN and Password empty."),label:e(a)("user_ldap","User DN"),placeholder:"uid=agent,dc=example,dc=com",autocomplete:"off"},null,8,["modelValue","helperText","label"])]),p("div",_a,[i(e(b),{modelValue:y.value,"onUpdate:modelValue":d[6]||(d[6]=_=>y.value=_),type:"password",helperText:e(a)("user_ldap","For anonymous access, leave DN and Password empty."),label:e(a)("user_ldap","Password"),autocomplete:"off"},null,8,["modelValue","helperText","label"]),i(e(x),{disabled:!L.value,onClick:C},{default:h(()=>[w(n(e(a)("user_ldap","Save credentials")),1)]),_:1},8,["disabled"])]),p("div",ga,[i(e(B),{label:e(a)("user_ldap","Base DN"),modelValue:o.value.ldapBase,placeholder:e(a)("user_ldap","One Base DN per line"),helperText:e(a)("user_ldap","You can specify Base DN for users and groups in the Advanced tab"),onChange:d[7]||(d[7]=_=>o.value.ldapBase=_.target.value)},null,8,["label","modelValue","placeholder","helperText"]),i(e(x),{disabled:r.value||L.value,onClick:U},{default:h(()=>[w(n(e(a)("user_ldap","Detect Base DN")),1)]),_:1},8,["disabled"]),i(e(x),{disabled:g.value||o.value.ldapBase==="",onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Test Base DN")),1)]),_:1},8,["disabled"])])]))}}),va=G(fa,[["__scopeId","data-v-1a7392db"]]),ha={class:"ldap-wizard__users"},ba={class:"ldap-wizard__users__line ldap-wizard__users__user-filter-object-class"},wa={class:"ldap-wizard__users__line ldap-wizard__users__user-filter-groups"},ya={class:"ldap-wizard__users__line ldap-wizard__users__user-filter"},Aa={key:0},Va={key:1},Da={class:"ldap-wizard__users__line ldap-wizard__users__user-count-check"},Ua={key:1},Ca=O({__name:"UsersTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapUserFilterObjectclass:U,ldapUserFilterGroups:U})),c=A(void 0),g=A(!1),r=$().theming.name,l=A([]),y=A([]),L=I({get(){return o.value.ldapUserFilterObjectclass?.split(";").filter(d=>d!=="")??[]},set(d){o.value.ldapUserFilterObjectclass=d.join(";")}}),C=I({get(){return o.value.ldapUserFilterGroups.split(";").filter(d=>d!=="")},set(d){o.value.ldapUserFilterGroups=d.join(";")}});X(D);async function D(){const d=await P("determineUserObjectClasses",s.configId);l.value=d.options?.ldap_userfilter_objectclass??[],t.value[s.configId].ldapUserFilterObjectclass=d.changes?.ldap_userfilter_objectclass?.join(";")??"";const _=await P("determineGroupsForUsers",s.configId);y.value=_.options?.ldap_userfilter_groups??[],t.value[s.configId].ldapUserFilterGroups=_.changes?.ldap_userfilter_groups?.join(";")??""}async function U(){if(o.value.ldapUserFilterMode==="0"){const d=await P("getUserListFilter",s.configId);t.value[s.configId].ldapUserFilter=d.changes?.ldap_userlist_filter??"";const _=await P("getUserLoginFilter",s.configId);t.value[s.configId].ldapLoginFilter=_.changes?.ldap_login_filter??""}}async function z(){try{g.value=!0;const d=await P("countUsers",s.configId);c.value=d.changes.ldap_user_count}finally{g.value=!1}}async function f(d){d?o.value.ldapUserFilterMode="1":o.value.ldapUserFilterMode=await Z()?"0":"1"}return(d,_)=>(v(),V("fieldset",ha,[w(n(e(a)("user_ldap","Listing and searching for users is constrained by these criteria:"))+" ",1),p("div",ba,[i(e(R),{modelValue:L.value,"onUpdate:modelValue":_[0]||(_[0]=N=>L.value=N),disabled:o.value.ldapUserFilterMode==="1",class:"ldap-wizard__users__user-filter-object-class__select",options:l.value,inputLabel:e(a)("user_ldap","Only these object classes:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"]),w(" "+n(e(a)("user_ldap","The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin.")),1)]),p("div",wa,[i(e(R),{modelValue:C.value,"onUpdate:modelValue":_[1]||(_[1]=N=>C.value=N),class:"ldap-wizard__users__user-filter-groups__select",disabled:o.value.ldapUserFilterMode==="1",options:y.value,inputLabel:e(a)("user_ldap","Only from these groups:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"])]),p("div",ya,[i(e(k),{modelValue:o.value.ldapUserFilterMode==="1","onUpdate:modelValue":f},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),o.value.ldapUserFilterMode==="1"?(v(),V("div",Aa,[i(e(B),{modelValue:o.value.ldapUserFilter,"onUpdate:modelValue":_[2]||(_[2]=N=>o.value.ldapUserFilter=N),placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","The filter specifies which LDAP users shall have access to the {instanceName} instance.",{instanceName:e(r)})},null,8,["modelValue","placeholder","helperText"])])):(v(),V("div",Va,[p("label",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapUserFilter),1)]))]),p("div",Da,[i(e(x),{disabled:g.value,onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings and count users")),1)]),_:1},8,["disabled"]),g.value?(v(),T(e(Y),{key:0,size:16})):F("",!0),c.value!==void 0&&!g.value?(v(),V("span",Ua,n(e(a)("user_ldap","User count: {usersCount}",{usersCount:c.value},{escape:!1})),1)):F("",!0)])]))}}),La=G(Ca,[["__scopeId","data-v-8bb498fe"]]),Ia={class:"ldap-wizard__controls"},Pa={class:"ldap-wizard__controls__state_message"},xa=O({__name:"WizardControls",props:{configId:{}},setup(u){const s=u,m=E(),{updatingConfig:t}=Q(m),o=A(!1),c=A(null),g=I(()=>c.value?.success);ee(t,()=>{c.value=null});async function r(){try{o.value=!0,c.value=await Ve(s.configId)}finally{o.value=!1}}return(l,y)=>(v(),V("div",Ia,[i(e(x),{variant:"primary",disabled:o.value,onClick:r},{default:h(()=>[w(n(e(a)("user_ldap","Test Configuration")),1)]),_:1},8,["disabled"]),i(e(x),{variant:"tertiary",href:"https://docs.nextcloud.com/server/stable/go.php?to=admin-ldap",target:"_blank",rel:"noreferrer noopener"},{icon:h(()=>[i(le,{size:20})]),default:h(()=>[p("span",null,n(e(a)("user_ldap","Help")),1)]),_:1}),c.value!==null&&!o.value?(v(),V(W,{key:0},[p("span",{class:oe(["ldap-wizard__controls__state_indicator",{"ldap-wizard__controls__state_indicator--valid":g.value}])},null,2),p("span",Pa,n(c.value.message),1)],64)):F("",!0),o.value?(v(),T(e(Y),{key:1,size:16})):F("",!0)]))}}),Ta=G(xa,[["__scopeId","data-v-4518d86f"]]),Fa={class:"ldap-wizard"},ka={class:"ldap-wizard__config-selection"},za={key:0,class:"ldap-wizard__tab-container"},Na={class:"ldap-wizard__tab-selection-container"},Ga={class:"ldap-wizard__tab-selection"},Ba={class:"ldap-wizard__clear-mapping"},Oa={class:"ldap-wizard__clear-mapping__buttons"},Ma=O({__name:"LDAPSettingsApp",setup(u){const s=ae("user_ldap","ldapModuleInstalled"),m={server:a("user_ldap","Server"),users:a("user_ldap","Users"),login:a("user_ldap","Login Attributes"),groups:a("user_ldap","Groups"),advanced:a("user_ldap","Advanced"),expert:a("user_ldap","Expert")},t=E(),{ldapConfigs:o,selectedConfigId:c,selectedConfig:g}=Q(t),r=A("server"),l=A(!1),y=I(()=>g.value!==void 0&&g.value.ldapHost!==""&&g.value.ldapPort!==""&&g.value.ldapBase!=="");async function L(C){try{l.value=!0,await De(C)}finally{l.value=!1}}return(C,D)=>(v(),V("form",Fa,[p("h2",null,n(e(a)("user_ldap","LDAP/AD integration")),1),e(s)?F("",!0):(v(),T(e(ce),{key:0,type:"warning",text:e(a)("user_ldap","The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it.")},null,8,["text"])),e(s)?(v(),V(W,{key:1},[p("div",ka,[e(c)!==void 0?(v(),T(e(R),{key:0,modelValue:e(c),"onUpdate:modelValue":D[0]||(D[0]=U=>ie(c)?c.value=U:null),options:Object.keys(e(o)),inputLabel:e(a)("user_ldap","Select LDAP Config")},{option:h(({label:U})=>[w(n(`${U}: ${e(o)[U]?.ldapHost??""}`),1)]),"selected-option":h(({label:U})=>[w(n(`${U}: ${e(o)[U]?.ldapHost??""}`),1)]),_:1},8,["modelValue","options","inputLabel"])):F("",!0),i(e(x),{label:e(a)("user_ldap","Create New Config"),class:"ldap-wizard__config-selection__create-button",onClick:e(t).create},{icon:h(()=>[i(pe,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Create configuration")),1)]),_:1},8,["label","onClick"])]),e(c)!==void 0?(v(),V("div",za,[p("div",Na,[p("div",Ga,[(v(),V(W,null,se(m,(U,z)=>i(e(k),{key:z,modelValue:r.value,"onUpdate:modelValue":D[1]||(D[1]=f=>r.value=f),buttonVariant:!0,value:z,type:"radio",disabled:z!=="server"&&!y.value,buttonVariantGrouped:"horizontal"},{default:h(()=>[w(n(U),1)]),_:2},1032,["modelValue","value","disabled"])),64))])]),r.value==="server"?(v(),T(va,{key:0,configId:e(c)},null,8,["configId"])):r.value==="users"?(v(),T(La,{key:1,configId:e(c)},null,8,["configId"])):r.value==="login"?(v(),T(aa,{key:2,configId:e(c)},null,8,["configId"])):r.value==="groups"?(v(),T(We,{key:3,configId:e(c)},null,8,["configId"])):r.value==="expert"?(v(),T(Me,{key:4,configId:e(c)},null,8,["configId"])):r.value==="advanced"?(v(),T(Fe,{key:5,configId:e(c)},null,8,["configId"])):F("",!0),i(Ta,{class:"ldap-wizard__controls",configId:e(c)},null,8,["configId"])])):F("",!0),p("div",Ba,[p("strong",null,n(e(a)("user_ldap","Username-LDAP User Mapping")),1),w(" "+n(e(a)("user_ldap","Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage."))+" ",1),p("div",Oa,[i(e(x),{variant:"error",disabled:l.value,onClick:D[2]||(D[2]=U=>L("user"))},{default:h(()=>[w(n(e(a)("user_ldap","Clear Username-LDAP User Mapping")),1)]),_:1},8,["disabled"]),i(e(x),{variant:"error",disabled:l.value,onClick:D[3]||(D[3]=U=>L("group"))},{default:h(()=>[w(n(e(a)("user_ldap","Clear Groupname-LDAP Group Mapping")),1)]),_:1},8,["disabled"])])])],64)):F("",!0)]))}}),ja=G(Ma,[["__scopeId","data-v-cb2f6989"]]),Sa=ge(),K=de(ja);K.use(Sa),K.mount("#content-ldap-settings"); +import{l as A,v as I,b as O,o as v,f as V,g as p,t as n,u as e,k as i,w as h,j as w,c as T,h as F,A as X,m as re,z as ee,F as W,y as oe,Z as ie,B as se,e as de}from"./Web-DYqXJUev.chunk.mjs";import{l as ae,g as $,_ as G}from"./public-C1mLBHT3.chunk.mjs";import{t as a,a as ue}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import"./PencilOutline-DhyEf5vr.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import{a as B}from"./NcTextArea-Dxzj4zdb-cEtDIZuj.chunk.mjs";import"./NcBreadcrumbs-B4eyDS9i-BkuFqTyn.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-BJuPH7S7-DKsF6FS9.chunk.mjs";import"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";/* empty css */import"./NcAvatar-1KxMUN7V-X_YNB4Fv.chunk.mjs";import"./NcContent-BYh5hWDN-BPQwUlVv.chunk.mjs";import{N as x}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as Y}from"./TrashCanOutline-BU3aqDG_.chunk.mjs";import{g as ne,c as M}from"./index-Cp0kcsps.chunk.mjs";import{N as k}from"./NcCheckboxRadioSwitch-DVdt5Hkq-COYVxuqr.chunk.mjs";import{P as pe}from"./Plus-Cvoorj3T.chunk.mjs";import"./index-BRPJrOcF.chunk.mjs";import"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import"./index-Cdqy7gO-.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import{N as R}from"./index-BDlLVKOD.chunk.mjs";import"./NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs";import"./NcEmptyContent-CGAPqk4S-LFG8iXZZ.chunk.mjs";import"./index-D9CqvIri.chunk.mjs";/* empty css */import"./NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs";import{N as ce}from"./mdi-B6W_Xvj-.chunk.mjs";import"./NcPasswordField-BFyzHTOO-7Y4psNBG.chunk.mjs";import"./index-DueKLP2f.chunk.mjs";import{c as j,i as me}from"./index-CkGt55pS.chunk.mjs";import{_ as b}from"./NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs";import"./NcSelectTags-I2hJaNax-B2PZ_kex.chunk.mjs";import{I as le}from"./ContentCopy-B9XOXCFO.chunk.mjs";import"./NcUserBubble-BXR7vT0V-CXAEWnoj.chunk.mjs";import"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import"./emoji-C8k9NUlo-BQiX-d8c.chunk.mjs";import"./colors-Cv9F-jWS-BFJACjQq.chunk.mjs";import{d as _e,s as Q,c as ge}from"./pinia-BsumPXOW.chunk.mjs";import{a as H,d as te,g as fe,s as ve,b as q}from"./index-mH69OG7L.chunk.mjs";import"./ArrowRight-CSlQTlWs.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const S=ne().setApp("LDAP").detectUser().build();async function he(){const u=await j.post(M("apps/user_ldap/api/v1/config"));return S.debug("Created configuration",{configId:u.data.ocs.data.configID}),u.data.ocs.data.configID}async function be(u){const s=new FormData;s.set("copyConfig",u);const m=await j.post(M("apps/user_ldap/api/v1/config/{configId}/copy",{configId:u}),s);return S.debug("Created configuration",{configId:m.data.ocs.data.configID}),m.data.ocs.data.configID}async function we(u){const s=await j.get(M("apps/user_ldap/api/v1/config/{configId}",{configId:u}));return S.debug("Fetched configuration",{configId:u,config:s.data.ocs.data}),s.data.ocs.data}async function ye(u,s){const m=await j.put(M("apps/user_ldap/api/v1/config/{configId}",{configId:u}),{configData:s});return S.debug("Updated configuration",{configId:u,config:s}),m.data.ocs.data}async function Ae(u){try{if(!await J(a("user_ldap","Confirm action"),a("user_ldap","Are you sure you want to permanently delete this LDAP configuration? This cannot be undone.")))return!1;await j.delete(M("apps/user_ldap/api/v1/config/{configId}",{configId:u})),S.debug("Deleted configuration",{configId:u})}catch(s){const m=s.response;H(m?.data.ocs.meta.message||a("user_ldap","Failed to delete config"))}return!0}async function Ve(u){const s=new FormData,m=await j.post(M("apps/user_ldap/api/v1/config/{configId}/test",{configId:u}));return S.debug(`Configuration is ${m.data.ocs.data.success?"valide":"invalide"}`,{configId:u,params:s,response:m}),m.data.ocs.data}async function De(u){if(!await J(a("user_ldap","Confirm action"),a("user_ldap","Are you sure you want to permanently clear the LDAP mapping? This cannot be undone.")))return!1;try{const s=await j.post(M("apps/user_ldap/api/v1/wizard/clearMappings"),{subject:u});return S.debug("Cleared mapping",{subject:u,response:s}),te(a("user_ldap","Mapping cleared")),!0}catch(s){const m=s.response;H(m?.data.ocs.meta.message||a("user_ldap","Failed to clear mapping"))}}async function P(u,s,m={}){const t=new FormData;Object.entries(m).forEach(([o,c])=>{t.set(o,c)});try{const o=await j.post(M("apps/user_ldap/api/v1/wizard/{configId}/{action}",{configId:s,action:u}),t);return S.debug(`Called wizard action: ${u}`,{configId:s,params:t,response:o}),o.data.ocs.data}catch(o){let c=a("user_ldap","An error occurred");throw me(o)&&o.response?.data.ocs.meta.status==="failure"&&o.response.data.ocs.meta.message!==""&&o.response.data.ocs.meta.message!==void 0&&(c=o.response.data.ocs.meta.message),H(c),o}}async function Z(){return await J(a("user_ldap","Mode switch"),a("user_ldap","Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?"))}async function J(u,s){let m=!1;return await fe(u).setText(s).setSeverity("warning").addButton({label:a("user_ldap","Cancel"),callback(){}}).addButton({label:a("user_ldap","Confirm"),variant:"error",callback(){m=!0}}).build().show(),m}const E=_e("ldap-configs",()=>{const u=A(ae("user_ldap","ldapConfigs")),s=A(Object.keys(u.value)[0]),m=I(()=>s.value===void 0?void 0:u.value[s.value]),t=A(0);function o(l,y={}){if(u.value[l]===void 0)throw new Error(`Config with id ${l} does not exist`);return new Proxy(u.value[l],{get(L,C){return L[C]},set(L,C,D){return L[C]=D,(async()=>(t.value++,await ye(l,{[C]:D}),t.value--,y[C]!==void 0&&y[C](L[C])))(),!0}})}async function c(){const l=await he();return u.value[l]=await we(l),s.value=l,l}async function g(l){if(u.value[l]===void 0)throw new Error(`Config with id ${l} does not exist`);const y=await be(l);return u.value[y]={...u.value[l]},s.value=y,y}async function r(l){await Ae(l)===!0&&(Object.keys(u.value).length===1?(s.value=await c(),s.value!==l&&delete u.value[l]):(s.value=Object.keys(u.value).filter(y=>l!==y)[0],delete u.value[l]))}return{ldapConfigs:u,selectedConfigId:s,selectedConfig:m,updatingConfig:t,getConfigProxy:o,create:c,copyConfig:g,removeConfig:r}}),Ue={class:"ldap-wizard__advanced"},Ce={open:"",name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Le={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Ie={class:"tablecell"},Pe={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},xe={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Te=O({__name:"AdvancedTab",props:{configId:{}},setup(u){const s=u,m=E(),t=I(()=>m.getConfigProxy(s.configId)),o=$().theming.name,c={uniqueMember:"uniqueMember",memberUid:"memberUid",member:"member (AD)",gidNumber:"gidNumber",zimbraMailForwardingAddress:"zimbraMailForwardingAddress"};return(g,r)=>(v(),V("fieldset",Ue,[p("details",Ce,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Connection Settings")),1)]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Backup (Replica) Host"),modelValue:t.value.ldapBackupHost,helperText:e(a)("user_ldap","Give an optional backup host. It must be a replica of the main LDAP/AD server."),onChange:r[0]||(r[0]=l=>t.value.ldapBackupHost=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{type:"number",modelValue:t.value.ldapBackupPort,label:e(a)("user_ldap","Backup (Replica) Port"),onChange:r[1]||(r[1]=l=>t.value.ldapBackupPort=l.target.value)},null,8,["modelValue","label"]),i(e(k),{modelValue:t.value.ldapOverrideMainServer==="1",type:"switch","aria-label":e(a)("user_ldap","Only connect to the replica server."),"onUpdate:modelValue":r[2]||(r[2]=l=>t.value.ldapOverrideMainServer=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Disable Main Server")),1)]),_:1},8,["modelValue","aria-label"]),i(e(k),{modelValue:t.value.turnOffCertCheck==="1","aria-label":e(a)("user_ldap","Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your {instanceName} server.",{instanceName:e(o)}),"onUpdate:modelValue":r[3]||(r[3]=l=>t.value.turnOffCertCheck=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Turn off SSL certificate validation.")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{type:"number",label:e(a)("user_ldap","Cache Time-To-Live"),modelValue:t.value.ldapCacheTTL,helperText:e(a)("user_ldap","in seconds. A change empties the cache."),onChange:r[4]||(r[4]=l=>t.value.ldapCacheTTL=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",Le,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Directory Settings")),1)]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapUserDisplayName,label:e(a)("user_ldap","User Display Name Field"),helperText:e(a)("user_ldap","The LDAP attribute to use to generate the user's display name."),onChange:r[5]||(r[5]=l=>t.value.ldapUserDisplayName=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapUserDisplayName2,label:e(a)("user_ldap","2nd User Display Name Field"),helperText:e(a)("user_ldap","Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«."),onChange:r[6]||(r[6]=l=>t.value.ldapUserDisplayName2=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(B),{modelValue:t.value.ldapBaseUsers,placeholder:e(a)("user_ldap","One User Base DN per line"),label:e(a)("user_ldap","Base User Tree"),onChange:r[7]||(r[7]=l=>t.value.ldapBaseUsers=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(B),{modelValue:t.value.ldapAttributesForUserSearch,placeholder:e(a)("user_ldap","Optional; one attribute per line"),label:e(a)("user_ldap","User Search Attributes"),onChange:r[8]||(r[8]=l=>t.value.ldapAttributesForUserSearch=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(k),{modelValue:t.value.markRemnantsAsDisabled==="1","aria-label":e(a)("user_ldap","When switched on, users imported from LDAP which are then missing will be disabled"),"onUpdate:modelValue":r[9]||(r[9]=l=>t.value.markRemnantsAsDisabled=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Disable users missing from LDAP")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapGroupDisplayName,label:e(a)("user_ldap","Group Display Name Field"),title:e(a)("user_ldap","The LDAP attribute to use to generate the groups's display name."),onChange:r[10]||(r[10]=l=>t.value.ldapGroupDisplayName=l.target.value)},null,8,["modelValue","label","title"]),i(e(B),{modelValue:t.value.ldapBaseGroups,placeholder:e(a)("user_ldap","One Group Base DN per line"),label:e(a)("user_ldap","Base Group Tree"),onChange:r[11]||(r[11]=l=>t.value.ldapBaseGroups=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(B),{modelValue:t.value.ldapAttributesForGroupSearch,placeholder:e(a)("user_ldap","Optional; one attribute per line"),label:e(a)("user_ldap","Group Search Attributes"),onChange:r[12]||(r[12]=l=>t.value.ldapAttributesForGroupSearch=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(R),{modelValue:t.value.ldapGroupMemberAssocAttr,"onUpdate:modelValue":r[13]||(r[13]=l=>t.value.ldapGroupMemberAssocAttr=l),options:Object.keys(c),inputLabel:e(a)("user_ldap","Group-Member association")},{option:h(({label:l})=>[w(n(c[l]),1)]),"selected-option":h(({label:l})=>[w(n(c[l]),1)]),_:1},8,["modelValue","options","inputLabel"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Dynamic Group Member URL"),modelValue:t.value.ldapDynamicGroupMemberURL,helperText:e(a)("user_ldap","The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)"),onChange:r[14]||(r[14]=l=>t.value.ldapDynamicGroupMemberURL=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(k),{modelValue:t.value.ldapNestedGroups==="1","aria-label":e(a)("user_ldap","When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)"),"onUpdate:modelValue":r[15]||(r[15]=l=>t.value.ldapNestedGroups=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Nested Groups")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{type:"number",label:e(a)("user_ldap","Paging chunksize"),modelValue:t.value.ldapPagingSize,helperText:e(a)("user_ldap","Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)"),onChange:r[16]||(r[16]=l=>t.value.ldapPagingSize=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(k),{modelValue:t.value.turnOnPasswordChange==="1","aria-label":e(a)("user_ldap","Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server."),"onUpdate:modelValue":r[17]||(r[17]=l=>t.value.turnOnPasswordChange=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Enable LDAP password changes per user")),1)]),_:1},8,["modelValue","aria-label"]),p("span",Ie,n(e(a)("user_ldap","(New password is sent as plain text to LDAP)")),1),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Default password policy DN"),modelValue:t.value.ldapDefaultPPolicyDN,helperText:e(a)("user_ldap","The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling."),onChange:r[18]||(r[18]=l=>t.value.ldapDefaultPPolicyDN=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",Pe,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Special Attributes")),1)]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapQuotaAttribute,label:e(a)("user_ldap","Quota Field"),helperText:e(a)("user_ldap","Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute."),onChange:r[19]||(r[19]=l=>t.value.ldapQuotaAttribute=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapQuotaDefault,label:e(a)("user_ldap","Quota Default"),helperText:e(a)("user_ldap","Override default quota for LDAP users who do not have a quota set in the Quota Field."),onChange:r[20]||(r[20]=l=>t.value.ldapQuotaDefault=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapEmailAttribute,label:e(a)("user_ldap","Email Field"),helperText:e(a)("user_ldap","Set the user's email from their LDAP attribute. Leave it empty for default behaviour."),onChange:r[21]||(r[21]=l=>t.value.ldapEmailAttribute=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","User Home Folder Naming Rule"),modelValue:t.value.homeFolderNamingRule,helperText:e(a)("user_ldap","Leave empty for username (default). Otherwise, specify an LDAP/AD attribute."),onChange:r[22]||(r[22]=l=>t.value.homeFolderNamingRule=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","`$home` Placeholder Field"),modelValue:t.value.ldapExtStorageHomeAttribute,helperText:e(a)("user_ldap","$home in an external storage configuration will be replaced with the value of the specified attribute"),onChange:r[23]||(r[23]=l=>t.value.ldapExtStorageHomeAttribute=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",xe,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","User Profile Attributes")),1)]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Phone Field"),modelValue:t.value.ldapAttributePhone,helperText:e(a)("user_ldap","User profile Phone will be set from the specified attribute"),onChange:r[24]||(r[24]=l=>t.value.ldapAttributePhone=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Website Field"),modelValue:t.value.ldapAttributeWebsite,helperText:e(a)("user_ldap","User profile Website will be set from the specified attribute"),onChange:r[25]||(r[25]=l=>t.value.ldapAttributeWebsite=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Address Field"),modelValue:t.value.ldapAttributeAddress,helperText:e(a)("user_ldap","User profile Address will be set from the specified attribute"),onChange:r[26]||(r[26]=l=>t.value.ldapAttributeAddress=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Twitter Field"),modelValue:t.value.ldapAttributeTwitter,helperText:e(a)("user_ldap","User profile Twitter will be set from the specified attribute"),onChange:r[27]||(r[27]=l=>t.value.ldapAttributeTwitter=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Fediverse Field"),modelValue:t.value.ldapAttributeFediverse,helperText:e(a)("user_ldap","User profile Fediverse will be set from the specified attribute"),onChange:r[28]||(r[28]=l=>t.value.ldapAttributeFediverse=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Organisation Field"),modelValue:t.value.ldapAttributeOrganisation,helperText:e(a)("user_ldap","User profile Organisation will be set from the specified attribute"),onChange:r[29]||(r[29]=l=>t.value.ldapAttributeOrganisation=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Role Field"),modelValue:t.value.ldapAttributeRole,helperText:e(a)("user_ldap","User profile Role will be set from the specified attribute"),onChange:r[30]||(r[30]=l=>t.value.ldapAttributeRole=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Headline Field"),modelValue:t.value.ldapAttributeHeadline,helperText:e(a)("user_ldap","User profile Headline will be set from the specified attribute"),onChange:r[31]||(r[31]=l=>t.value.ldapAttributeHeadline=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Biography Field"),modelValue:t.value.ldapAttributeBiography,helperText:e(a)("user_ldap","User profile Biography will be set from the specified attribute"),onChange:r[32]||(r[32]=l=>t.value.ldapAttributeBiography=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Birthdate Field"),modelValue:t.value.ldapAttributeBirthDate,helperText:e(a)("user_ldap","User profile Date of birth will be set from the specified attribute"),onChange:r[33]||(r[33]=l=>t.value.ldapAttributeBirthDate=l.target.value)},null,8,["label","modelValue","helperText"])])]))}}),Fe=G(Te,[["__scopeId","data-v-270da57a"]]),ke={class:"ldap-wizard__expert"},ze={class:"ldap-wizard__expert__line"},Ne={id:"ldap_expert_username_attr"},Ge={class:"ldap-wizard__expert__line"},Be={id:"ldap_expert_uuid_user_attr"},Oe=O({__name:"ExpertTab",props:{configId:{}},setup(u){const s=u,m=E(),t=I(()=>m.getConfigProxy(s.configId));return(o,c)=>(v(),V("fieldset",ke,[p("div",ze,[p("strong",null,n(e(a)("user_ldap","Internal Username")),1),p("p",Ne,n(e(a)("user_ldap","By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior.")),1),i(e(b),{"aria-describedby":"ldap_expert_username_attr",autocomplete:"off",label:e(a)("user_ldap","Internal Username Attribute:"),modelValue:t.value.ldapExpertUsernameAttr,onChange:c[0]||(c[0]=g=>t.value.ldapExpertUsernameAttr=g.target.value)},null,8,["label","modelValue"])]),p("div",Ge,[p("strong",null,n(e(a)("user_ldap","Override UUID detection")),1),p("p",Be,n(e(a)("user_ldap","By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups.")),1),i(e(b),{"aria-describedby":"ldap_expert_uuid_user_attr",autocomplete:"off",label:e(a)("user_ldap","UUID Attribute for Users"),modelValue:t.value.ldapExpertUUIDUserAttr,onChange:c[1]||(c[1]=g=>t.value.ldapExpertUUIDUserAttr=g.target.value)},null,8,["label","modelValue"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","UUID Attribute for Groups"),modelValue:t.value.ldapExpertUUIDGroupAttr,onChange:c[2]||(c[2]=g=>t.value.ldapExpertUUIDGroupAttr=g.target.value)},null,8,["label","modelValue"])])]))}}),Me=G(Oe,[["__scopeId","data-v-e77b52a4"]]),je={class:"ldap-wizard__groups"},Se={class:"ldap-wizard__groups__line ldap-wizard__groups__filter-selection"},Ee={class:"ldap-wizard__groups__line ldap-wizard__groups__groups-filter"},He={key:0},Re={key:1},Qe={class:"ldap-wizard__groups__line ldap-wizard__groups__groups-count-check"},$e={key:1},qe=O({__name:"GroupsTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapGroupFilterObjectclass:U,ldapGroupFilterGroups:U})),c=$().theming.name,g=A(void 0),r=A([]),l=A([]),y=A(!1),L=I({get(){return o.value.ldapGroupFilterObjectclass.split(";").filter(d=>d!=="")},set(d){o.value.ldapGroupFilterObjectclass=d.join(";")}}),C=I({get(){return o.value.ldapGroupFilterGroups.split(";").filter(d=>d!=="")},set(d){o.value.ldapGroupFilterGroups=d.join(";")}});async function D(){const d=await P("determineGroupObjectClasses",s.configId);r.value=d.options?.ldap_groupfilter_objectclass??[];const _=await P("determineGroupsForGroups",s.configId);l.value=_.options?.ldap_groupfilter_groups??[]}D();async function U(){const d=await P("getGroupFilter",s.configId);t.value[s.configId].ldapGroupFilter=d.changes?.ldap_group_filter??""}async function z(){try{y.value=!0;const d=await P("countGroups",s.configId);g.value=d.changes.ldap_group_count}finally{y.value=!1}}async function f(d){d?o.value.ldapGroupFilterMode="1":o.value.ldapGroupFilterMode=await Z()?"0":"1"}return(d,_)=>(v(),V("fieldset",je,[p("legend",null,n(e(a)("user_ldap","Groups meeting these criteria are available in {instanceName}:",{instanceName:e(c)})),1),p("div",Se,[i(e(R),{modelValue:L.value,"onUpdate:modelValue":_[0]||(_[0]=N=>L.value=N),class:"ldap-wizard__groups__group-filter-groups__select",options:r.value,disabled:o.value.ldapGroupFilterMode==="1",inputLabel:e(a)("user_ldap","Only these object classes:"),multiple:!0},null,8,["modelValue","options","disabled","inputLabel"]),i(e(R),{modelValue:C.value,"onUpdate:modelValue":_[1]||(_[1]=N=>C.value=N),class:"ldap-wizard__groups__group-filter-groups__select",options:l.value,disabled:o.value.ldapGroupFilterMode==="1",inputLabel:e(a)("user_ldap","Only from these groups:"),multiple:!0},null,8,["modelValue","options","disabled","inputLabel"])]),p("div",Ee,[i(e(k),{modelValue:o.value.ldapGroupFilterMode==="1","onUpdate:modelValue":f},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),o.value.ldapGroupFilterMode==="1"?(v(),V("div",He,[i(e(B),{modelValue:o.value.ldapGroupFilter,"onUpdate:modelValue":_[2]||(_[2]=N=>o.value.ldapGroupFilter=N),placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","The filter specifies which LDAP groups shall have access to the {instanceName} instance.",{instanceName:e(c)})},null,8,["modelValue","placeholder","helperText"])])):(v(),V("div",Re,[p("span",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapGroupFilter),1)]))]),p("div",Qe,[i(e(x),{disabled:y.value,onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings and count the groups")),1)]),_:1},8,["disabled"]),y.value?(v(),T(e(Y),{key:0,size:20})):F("",!0),g.value!==void 0&&!y.value?(v(),V("span",$e,n(g.value),1)):F("",!0)])]))}}),We=G(qe,[["__scopeId","data-v-d46b1472"]]),Ye={class:"ldap-wizard__login"},Ze={class:"ldap-wizard__login__line ldap-wizard__login__login-attributes"},Je={class:"ldap-wizard__login__line ldap-wizard__login__user-login-filter"},Ke={key:1},Xe={class:"ldap-wizard__login__line"},ea=O({__name:"LoginTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapLoginFilterAttributes:D,ldapLoginFilterUsername:D,ldapLoginFilterEmail:D})),c=$().theming.name,g=A(""),r=A([]),l=I({get(){return o.value.ldapLoginFilterAttributes.split(";").filter(f=>f!=="")},set(f){o.value.ldapLoginFilterAttributes=f.join(";")}}),y=I(()=>o.value.ldapLoginFilterMode==="1"),L=I(()=>r.value.filter(f=>!l.value.includes(f)));X(C);async function C(){const f=await P("determineAttributes",s.configId);r.value=f.options?.ldap_loginfilter_attributes??[]}async function D(){if(o.value.ldapLoginFilterMode==="0"){const f=await P("getUserLoginFilter",s.configId);t.value[s.configId].ldapLoginFilter=f.changes?.ldap_login_filter??""}}async function U(){try{const f=await P("testLoginName",s.configId,{loginName:g.value}),d=f.changes.ldap_test_loginname,_=f.changes.ldap_test_effective_filter;d<1?H(a("user_ldap","User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): {filter}",{filter:_})):d===1?te(a("user_ldap","User found and settings verified.")):d>1&&ve(a("user_ldap","Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in."))}catch(f){switch(f??a("user_ldap","An unspecified error occurred. Please check log and settings.")){case"Bad search filter":H(a("user_ldap","The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise."));break;case"connection error":H(a("user_ldap","A connection error to LDAP/AD occurred. Please check host, port and credentials."));break;case"missing placeholder":H(a("user_ldap",'The "%uid" placeholder is missing. It will be replaced with the login name when querying LDAP/AD.'));break}}}async function z(f){f?o.value.ldapLoginFilterMode="1":o.value.ldapLoginFilterMode=await Z()?"0":"1"}return(f,d)=>(v(),V("fieldset",Ye,[p("legend",null,n(e(a)("user_ldap","When logging in, {instanceName} will find the user based on the following attributes:",{instanceName:e(c)})),1),i(e(k),{modelValue:o.value.ldapLoginFilterUsername==="1",description:e(a)("user_ldap","Allows login against the LDAP/AD username, which is either 'uid' or 'sAMAccountName' and will be detected."),"onUpdate:modelValue":d[0]||(d[0]=_=>o.value.ldapLoginFilterUsername=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","LDAP/AD Username:")),1)]),_:1},8,["modelValue","description"]),i(e(k),{modelValue:o.value.ldapLoginFilterEmail==="1",description:e(a)("user_ldap","Allows login against an email attribute. 'mail' and 'mailPrimaryAddress' allowed."),"onUpdate:modelValue":d[1]||(d[1]=_=>o.value.ldapLoginFilterEmail=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","LDAP/AD Email Address:")),1)]),_:1},8,["modelValue","description"]),p("div",Ze,[i(e(R),{modelValue:l.value,"onUpdate:modelValue":d[2]||(d[2]=_=>l.value=_),keepOpen:"",disabled:y.value,options:L.value,inputLabel:e(a)("user_ldap","Other Attributes:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"])]),p("div",Je,[i(e(k),{modelValue:y.value,"onUpdate:modelValue":z},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),y.value?(v(),T(e(B),{key:0,modelValue:o.value.ldapLoginFilter,placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","Defines the filter to apply, when login is attempted. `%%uid` replaces the username in the login action. Example: `uid=%%uid`"),onChange:d[3]||(d[3]=_=>o.value.ldapLoginFilter=_.target.value)},null,8,["modelValue","placeholder","helperText"])):(v(),V("div",Ke,[p("span",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapLoginFilter),1)]))]),p("div",Xe,[i(e(b),{modelValue:g.value,"onUpdate:modelValue":d[4]||(d[4]=_=>g.value=_),helperText:e(a)("user_ldap","Attempts to receive a DN for the given login name and the current login filter"),label:e(a)("user_ldap","Test Login name"),autocomplete:"off"},null,8,["modelValue","helperText","label"]),i(e(x),{disabled:g.value.length===0,onClick:U},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings")),1)]),_:1},8,["disabled"])])]))}}),aa=G(ea,[["__scopeId","data-v-72e489d5"]]),la={name:"DeleteIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ta=["aria-hidden","aria-label"],ra=["fill","width","height"],oa={d:"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"},ia={key:0};function sa(u,s,m,t,o,c){return v(),V("span",re(u.$attrs,{"aria-hidden":m.title?null:"true","aria-label":m.title,class:"material-design-icon delete-icon",role:"img",onClick:s[0]||(s[0]=g=>u.$emit("click",g))}),[(v(),V("svg",{fill:m.fillColor,class:"material-design-icon__svg",width:m.size,height:m.size,viewBox:"0 0 24 24"},[p("path",oa,[m.title?(v(),V("title",ia,n(m.title),1)):F("",!0)])],8,ra))],16,ta)}const da=G(la,[["render",sa]]),ua={class:"ldap-wizard__server"},na={class:"ldap-wizard__server__line"},pa={class:"ldap-wizard__server__line"},ca={class:"ldap-wizard__server__host__port"},ma={class:"ldap-wizard__server__line"},_a={class:"ldap-wizard__server__line"},ga={class:"ldap-wizard__server__line"},fa=O({__name:"ServerTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId)),c=A(!1),g=A(!1),r=A(!1),l=A(o.value.ldapAgentName),y=A(o.value.ldapAgentPassword),L=I(()=>o.value.ldapAgentName!==l.value||o.value.ldapAgentPassword!==y.value);ee(o,f=>{l.value=f.ldapAgentName,f.ldapAgentPassword==="***"?y.value="":y.value=f.ldapAgentPassword});function C(){o.value.ldapAgentName=l.value,o.value.ldapAgentPassword=y.value}async function D(){try{c.value=!0;const{changes:f}=await P("guessPortAndTLS",s.configId);t.value[s.configId].ldapPort=f.ldap_port??""}finally{c.value=!1}}async function U(){try{r.value=!0;const{changes:f}=await P("guessBaseDN",s.configId);o.value.ldapBase=f.ldap_base??""}finally{r.value=!1}}async function z(){try{g.value=!0;const{changes:f}=await P("countInBaseDN",s.configId),d=f.ldap_test_base;d<1?q(a("user_ldap","No object found in the given Base DN. Please revise.")):d>1e3?q(a("user_ldap","More than 1,000 directory entries available.")):q(ue("user_ldap","{ldapTestBase} entry available within the provided Base DN","{ldapTestBase} entries available within the provided Base DN",d,{ldapTestBase:d}))}finally{g.value=!1}}return(f,d)=>(v(),V("fieldset",ua,[p("div",na,[i(e(k),{modelValue:o.value.ldapConfigurationActive==="1",type:"switch","aria-label":e(a)("user_ldap","When unchecked, this configuration will be skipped."),"onUpdate:modelValue":d[0]||(d[0]=_=>o.value.ldapConfigurationActive=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Configuration active")),1)]),_:1},8,["modelValue","aria-label"]),i(e(x),{title:e(a)("user_ldap","Copy current configuration into new directory binding"),onClick:d[1]||(d[1]=_=>e(m).copyConfig(u.configId))},{icon:h(()=>[i(le,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Copy configuration")),1)]),_:1},8,["title"]),i(e(x),{variant:"error",onClick:d[2]||(d[2]=_=>e(m).removeConfig(u.configId))},{icon:h(()=>[i(da,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Delete configuration")),1)]),_:1})]),p("div",pa,[i(e(b),{modelValue:o.value.ldapHost,helperText:e(a)("user_ldap","You can omit the protocol, unless you require SSL. If so, start with ldaps://"),label:e(a)("user_ldap","Host"),placeholder:"ldaps://localhost",autocomplete:"off",onChange:d[3]||(d[3]=_=>o.value.ldapHost=_.target.value)},null,8,["modelValue","helperText","label"]),p("div",ca,[i(e(b),{modelValue:o.value.ldapPort,label:e(a)("user_ldap","Port"),placeholder:"389",type:"number",autocomplete:"off",onChange:d[4]||(d[4]=_=>o.value.ldapPort=_.target.value)},null,8,["modelValue","label"]),i(e(x),{disabled:c.value,onClick:D},{default:h(()=>[w(n(e(a)("user_ldap","Detect Port")),1)]),_:1},8,["disabled"])])]),p("div",ma,[i(e(b),{modelValue:l.value,"onUpdate:modelValue":d[5]||(d[5]=_=>l.value=_),helperText:e(a)("user_ldap","The DN of the client user with which the bind shall be done. For anonymous access, leave DN and Password empty."),label:e(a)("user_ldap","User DN"),placeholder:"uid=agent,dc=example,dc=com",autocomplete:"off"},null,8,["modelValue","helperText","label"])]),p("div",_a,[i(e(b),{modelValue:y.value,"onUpdate:modelValue":d[6]||(d[6]=_=>y.value=_),type:"password",helperText:e(a)("user_ldap","For anonymous access, leave DN and Password empty."),label:e(a)("user_ldap","Password"),autocomplete:"off"},null,8,["modelValue","helperText","label"]),i(e(x),{disabled:!L.value,onClick:C},{default:h(()=>[w(n(e(a)("user_ldap","Save credentials")),1)]),_:1},8,["disabled"])]),p("div",ga,[i(e(B),{label:e(a)("user_ldap","Base DN"),modelValue:o.value.ldapBase,placeholder:e(a)("user_ldap","One Base DN per line"),helperText:e(a)("user_ldap","You can specify Base DN for users and groups in the Advanced tab"),onChange:d[7]||(d[7]=_=>o.value.ldapBase=_.target.value)},null,8,["label","modelValue","placeholder","helperText"]),i(e(x),{disabled:r.value||L.value,onClick:U},{default:h(()=>[w(n(e(a)("user_ldap","Detect Base DN")),1)]),_:1},8,["disabled"]),i(e(x),{disabled:g.value||o.value.ldapBase==="",onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Test Base DN")),1)]),_:1},8,["disabled"])])]))}}),va=G(fa,[["__scopeId","data-v-1a7392db"]]),ha={class:"ldap-wizard__users"},ba={class:"ldap-wizard__users__line ldap-wizard__users__user-filter-object-class"},wa={class:"ldap-wizard__users__line ldap-wizard__users__user-filter-groups"},ya={class:"ldap-wizard__users__line ldap-wizard__users__user-filter"},Aa={key:0},Va={key:1},Da={class:"ldap-wizard__users__line ldap-wizard__users__user-count-check"},Ua={key:1},Ca=O({__name:"UsersTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapUserFilterObjectclass:U,ldapUserFilterGroups:U})),c=A(void 0),g=A(!1),r=$().theming.name,l=A([]),y=A([]),L=I({get(){return o.value.ldapUserFilterObjectclass?.split(";").filter(d=>d!=="")??[]},set(d){o.value.ldapUserFilterObjectclass=d.join(";")}}),C=I({get(){return o.value.ldapUserFilterGroups.split(";").filter(d=>d!=="")},set(d){o.value.ldapUserFilterGroups=d.join(";")}});X(D);async function D(){const d=await P("determineUserObjectClasses",s.configId);l.value=d.options?.ldap_userfilter_objectclass??[],t.value[s.configId].ldapUserFilterObjectclass=d.changes?.ldap_userfilter_objectclass?.join(";")??"";const _=await P("determineGroupsForUsers",s.configId);y.value=_.options?.ldap_userfilter_groups??[],t.value[s.configId].ldapUserFilterGroups=_.changes?.ldap_userfilter_groups?.join(";")??""}async function U(){if(o.value.ldapUserFilterMode==="0"){const d=await P("getUserListFilter",s.configId);t.value[s.configId].ldapUserFilter=d.changes?.ldap_userlist_filter??"";const _=await P("getUserLoginFilter",s.configId);t.value[s.configId].ldapLoginFilter=_.changes?.ldap_login_filter??""}}async function z(){try{g.value=!0;const d=await P("countUsers",s.configId);c.value=d.changes.ldap_user_count}finally{g.value=!1}}async function f(d){d?o.value.ldapUserFilterMode="1":o.value.ldapUserFilterMode=await Z()?"0":"1"}return(d,_)=>(v(),V("fieldset",ha,[w(n(e(a)("user_ldap","Listing and searching for users is constrained by these criteria:"))+" ",1),p("div",ba,[i(e(R),{modelValue:L.value,"onUpdate:modelValue":_[0]||(_[0]=N=>L.value=N),disabled:o.value.ldapUserFilterMode==="1",class:"ldap-wizard__users__user-filter-object-class__select",options:l.value,inputLabel:e(a)("user_ldap","Only these object classes:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"]),w(" "+n(e(a)("user_ldap","The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin.")),1)]),p("div",wa,[i(e(R),{modelValue:C.value,"onUpdate:modelValue":_[1]||(_[1]=N=>C.value=N),class:"ldap-wizard__users__user-filter-groups__select",disabled:o.value.ldapUserFilterMode==="1",options:y.value,inputLabel:e(a)("user_ldap","Only from these groups:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"])]),p("div",ya,[i(e(k),{modelValue:o.value.ldapUserFilterMode==="1","onUpdate:modelValue":f},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),o.value.ldapUserFilterMode==="1"?(v(),V("div",Aa,[i(e(B),{modelValue:o.value.ldapUserFilter,"onUpdate:modelValue":_[2]||(_[2]=N=>o.value.ldapUserFilter=N),placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","The filter specifies which LDAP users shall have access to the {instanceName} instance.",{instanceName:e(r)})},null,8,["modelValue","placeholder","helperText"])])):(v(),V("div",Va,[p("label",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapUserFilter),1)]))]),p("div",Da,[i(e(x),{disabled:g.value,onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings and count users")),1)]),_:1},8,["disabled"]),g.value?(v(),T(e(Y),{key:0,size:16})):F("",!0),c.value!==void 0&&!g.value?(v(),V("span",Ua,n(e(a)("user_ldap","User count: {usersCount}",{usersCount:c.value},{escape:!1})),1)):F("",!0)])]))}}),La=G(Ca,[["__scopeId","data-v-8bb498fe"]]),Ia={class:"ldap-wizard__controls"},Pa={class:"ldap-wizard__controls__state_message"},xa=O({__name:"WizardControls",props:{configId:{}},setup(u){const s=u,m=E(),{updatingConfig:t}=Q(m),o=A(!1),c=A(null),g=I(()=>c.value?.success);ee(t,()=>{c.value=null});async function r(){try{o.value=!0,c.value=await Ve(s.configId)}finally{o.value=!1}}return(l,y)=>(v(),V("div",Ia,[i(e(x),{variant:"primary",disabled:o.value,onClick:r},{default:h(()=>[w(n(e(a)("user_ldap","Test Configuration")),1)]),_:1},8,["disabled"]),i(e(x),{variant:"tertiary",href:"https://docs.nextcloud.com/server/stable/go.php?to=admin-ldap",target:"_blank",rel:"noreferrer noopener"},{icon:h(()=>[i(le,{size:20})]),default:h(()=>[p("span",null,n(e(a)("user_ldap","Help")),1)]),_:1}),c.value!==null&&!o.value?(v(),V(W,{key:0},[p("span",{class:oe(["ldap-wizard__controls__state_indicator",{"ldap-wizard__controls__state_indicator--valid":g.value}])},null,2),p("span",Pa,n(c.value.message),1)],64)):F("",!0),o.value?(v(),T(e(Y),{key:1,size:16})):F("",!0)]))}}),Ta=G(xa,[["__scopeId","data-v-4518d86f"]]),Fa={class:"ldap-wizard"},ka={class:"ldap-wizard__config-selection"},za={key:0,class:"ldap-wizard__tab-container"},Na={class:"ldap-wizard__tab-selection-container"},Ga={class:"ldap-wizard__tab-selection"},Ba={class:"ldap-wizard__clear-mapping"},Oa={class:"ldap-wizard__clear-mapping__buttons"},Ma=O({__name:"LDAPSettingsApp",setup(u){const s=ae("user_ldap","ldapModuleInstalled"),m={server:a("user_ldap","Server"),users:a("user_ldap","Users"),login:a("user_ldap","Login Attributes"),groups:a("user_ldap","Groups"),advanced:a("user_ldap","Advanced"),expert:a("user_ldap","Expert")},t=E(),{ldapConfigs:o,selectedConfigId:c,selectedConfig:g}=Q(t),r=A("server"),l=A(!1),y=I(()=>g.value!==void 0&&g.value.ldapHost!==""&&g.value.ldapPort!==""&&g.value.ldapBase!=="");async function L(C){try{l.value=!0,await De(C)}finally{l.value=!1}}return(C,D)=>(v(),V("form",Fa,[p("h2",null,n(e(a)("user_ldap","LDAP/AD integration")),1),e(s)?F("",!0):(v(),T(e(ce),{key:0,type:"warning",text:e(a)("user_ldap","The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it.")},null,8,["text"])),e(s)?(v(),V(W,{key:1},[p("div",ka,[e(c)!==void 0?(v(),T(e(R),{key:0,modelValue:e(c),"onUpdate:modelValue":D[0]||(D[0]=U=>ie(c)?c.value=U:null),options:Object.keys(e(o)),inputLabel:e(a)("user_ldap","Select LDAP Config")},{option:h(({label:U})=>[w(n(`${U}: ${e(o)[U]?.ldapHost??""}`),1)]),"selected-option":h(({label:U})=>[w(n(`${U}: ${e(o)[U]?.ldapHost??""}`),1)]),_:1},8,["modelValue","options","inputLabel"])):F("",!0),i(e(x),{label:e(a)("user_ldap","Create New Config"),class:"ldap-wizard__config-selection__create-button",onClick:e(t).create},{icon:h(()=>[i(pe,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Create configuration")),1)]),_:1},8,["label","onClick"])]),e(c)!==void 0?(v(),V("div",za,[p("div",Na,[p("div",Ga,[(v(),V(W,null,se(m,(U,z)=>i(e(k),{key:z,modelValue:r.value,"onUpdate:modelValue":D[1]||(D[1]=f=>r.value=f),buttonVariant:!0,value:z,type:"radio",disabled:z!=="server"&&!y.value,buttonVariantGrouped:"horizontal"},{default:h(()=>[w(n(U),1)]),_:2},1032,["modelValue","value","disabled"])),64))])]),r.value==="server"?(v(),T(va,{key:0,configId:e(c)},null,8,["configId"])):r.value==="users"?(v(),T(La,{key:1,configId:e(c)},null,8,["configId"])):r.value==="login"?(v(),T(aa,{key:2,configId:e(c)},null,8,["configId"])):r.value==="groups"?(v(),T(We,{key:3,configId:e(c)},null,8,["configId"])):r.value==="expert"?(v(),T(Me,{key:4,configId:e(c)},null,8,["configId"])):r.value==="advanced"?(v(),T(Fe,{key:5,configId:e(c)},null,8,["configId"])):F("",!0),i(Ta,{class:"ldap-wizard__controls",configId:e(c)},null,8,["configId"])])):F("",!0),p("div",Ba,[p("strong",null,n(e(a)("user_ldap","Username-LDAP User Mapping")),1),w(" "+n(e(a)("user_ldap","Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage."))+" ",1),p("div",Oa,[i(e(x),{variant:"error",disabled:l.value,onClick:D[2]||(D[2]=U=>L("user"))},{default:h(()=>[w(n(e(a)("user_ldap","Clear Username-LDAP User Mapping")),1)]),_:1},8,["disabled"]),i(e(x),{variant:"error",disabled:l.value,onClick:D[3]||(D[3]=U=>L("group"))},{default:h(()=>[w(n(e(a)("user_ldap","Clear Groupname-LDAP Group Mapping")),1)]),_:1},8,["disabled"])])])],64)):F("",!0)]))}}),ja=G(Ma,[["__scopeId","data-v-cb2f6989"]]),Sa=ge(),K=de(ja);K.use(Sa),K.mount("#content-ldap-settings"); //# sourceMappingURL=user_ldap-settings-admin.mjs.map diff --git a/dist/user_ldap-settings-admin.mjs.map b/dist/user_ldap-settings-admin.mjs.map index 3372414fe343b..0173013edcfdc 100644 --- a/dist/user_ldap-settings-admin.mjs.map +++ b/dist/user_ldap-settings-admin.mjs.map @@ -1 +1 @@ -{"version":3,"file":"user_ldap-settings-admin.mjs","sources":["../build/frontend/apps/user_ldap/src/services/logger.ts","../build/frontend/apps/user_ldap/src/services/ldapConfigService.ts","../build/frontend/apps/user_ldap/src/store/configs.ts","../build/frontend/apps/user_ldap/src/components/SettingsTabs/AdvancedTab.vue","../build/frontend/apps/user_ldap/src/components/SettingsTabs/ExpertTab.vue","../build/frontend/apps/user_ldap/src/components/SettingsTabs/GroupsTab.vue","../build/frontend/apps/user_ldap/src/components/SettingsTabs/LoginTab.vue","../node_modules/vue-material-design-icons/Delete.vue","../build/frontend/apps/user_ldap/src/components/SettingsTabs/ServerTab.vue","../build/frontend/apps/user_ldap/src/components/SettingsTabs/UsersTab.vue","../build/frontend/apps/user_ldap/src/components/WizardControls.vue","../build/frontend/apps/user_ldap/src/views/LDAPSettingsApp.vue","../build/frontend/apps/user_ldap/src/store/index.ts","../build/frontend/apps/user_ldap/src/settings-admin.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('LDAP')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { AxiosError } from '@nextcloud/axios'\nimport type { AxiosResponse } from '@nextcloud/axios'\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\nimport type { LDAPConfig } from '../models/index.ts'\n\nimport axios, { isAxiosError } from '@nextcloud/axios'\nimport { getDialogBuilder, showError, showSuccess } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport logger from './logger.ts'\n\nexport type WizardAction\n\t= 'guessPortAndTLS'\n\t\t| 'guessBaseDN'\n\t\t| 'detectEmailAttribute'\n\t\t| 'detectUserDisplayNameAttribute'\n\t\t| 'determineGroupMemberAssoc'\n\t\t| 'determineUserObjectClasses'\n\t\t| 'determineGroupObjectClasses'\n\t\t| 'determineGroupsForUsers'\n\t\t| 'determineGroupsForGroups'\n\t\t| 'determineAttributes'\n\t\t| 'getUserListFilter'\n\t\t| 'getUserLoginFilter'\n\t\t| 'getGroupFilter'\n\t\t| 'countUsers'\n\t\t| 'countGroups'\n\t\t| 'countInBaseDN'\n\t\t| 'testLoginName'\n\n/**\n * Create a new LDAP configuration\n */\nexport async function createConfig() {\n\tconst response = await axios.post(generateOcsUrl('apps/user_ldap/api/v1/config')) as AxiosResponse>\n\tlogger.debug('Created configuration', { configId: response.data.ocs.data.configID })\n\treturn response.data.ocs.data.configID\n}\n\n/**\n * Copy an existing LDAP configuration\n *\n * @param configId - ID of the configuration to copy\n */\nexport async function copyConfig(configId: string) {\n\tconst params = new FormData()\n\tparams.set('copyConfig', configId)\n\n\tconst response = await axios.post(\n\t\tgenerateOcsUrl('apps/user_ldap/api/v1/config/{configId}/copy', { configId }),\n\t\tparams,\n\t) as AxiosResponse>\n\n\tlogger.debug('Created configuration', { configId: response.data.ocs.data.configID })\n\treturn response.data.ocs.data.configID\n}\n\n/**\n * Get an LDAP configuration\n *\n * @param configId - ID of the configuration to fetch\n */\nexport async function getConfig(configId: string): Promise {\n\tconst response = await axios.get(generateOcsUrl('apps/user_ldap/api/v1/config/{configId}', { configId })) as AxiosResponse>\n\tlogger.debug('Fetched configuration', { configId, config: response.data.ocs.data })\n\treturn response.data.ocs.data\n}\n\n/**\n * Update an LDAP configuration\n *\n * @param configId - ID of the configuration to update\n * @param config - Partial configuration data to update\n */\nexport async function updateConfig(configId: string, config: Partial): Promise {\n\tconst response = await axios.put(\n\t\tgenerateOcsUrl('apps/user_ldap/api/v1/config/{configId}', { configId }),\n\t\t{ configData: config },\n\t) as AxiosResponse>\n\n\tlogger.debug('Updated configuration', { configId, config })\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Delete an LDAP configuration\n *\n * @param configId - ID of the configuration to delete\n */\nexport async function deleteConfig(configId: string): Promise {\n\ttry {\n\t\tconst isConfirmed = await confirmOperation(\n\t\t\tt('user_ldap', 'Confirm action'),\n\t\t\tt('user_ldap', 'Are you sure you want to permanently delete this LDAP configuration? This cannot be undone.'),\n\t\t)\n\t\tif (!isConfirmed) {\n\t\t\treturn false\n\t\t}\n\n\t\tawait axios.delete(generateOcsUrl('apps/user_ldap/api/v1/config/{configId}', { configId }))\n\t\tlogger.debug('Deleted configuration', { configId })\n\t} catch (error) {\n\t\tconst errorResponse = (error as AxiosError).response\n\t\tshowError(errorResponse?.data.ocs.meta.message || t('user_ldap', 'Failed to delete config'))\n\t}\n\n\treturn true\n}\n\n/**\n * Test an LDAP configuration\n *\n * @param configId - ID of the configuration to test\n */\nexport async function testConfiguration(configId: string) {\n\tconst params = new FormData()\n\n\tconst response = await axios.post(generateOcsUrl('apps/user_ldap/api/v1/config/{configId}/test', { configId })) as AxiosResponse>\n\n\tlogger.debug(`Configuration is ${response.data.ocs.data.success ? 'valide' : 'invalide'}`, { configId, params, response })\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Clear LDAP mapping\n *\n * @param subject - 'user' or 'group'\n */\nexport async function clearMapping(subject: 'user' | 'group') {\n\tconst isConfirmed = await confirmOperation(\n\t\tt('user_ldap', 'Confirm action'),\n\t\tt('user_ldap', 'Are you sure you want to permanently clear the LDAP mapping? This cannot be undone.'),\n\t)\n\tif (!isConfirmed) {\n\t\treturn false\n\t}\n\n\ttry {\n\t\tconst response = await axios.post(\n\t\t\tgenerateOcsUrl('apps/user_ldap/api/v1/wizard/clearMappings'),\n\t\t\t{ subject },\n\t\t) as AxiosResponse\n\n\t\tlogger.debug('Cleared mapping', { subject, response })\n\t\tshowSuccess(t('user_ldap', 'Mapping cleared'))\n\t\treturn true\n\t} catch (error) {\n\t\tconst errorResponse = (error as AxiosError).response\n\t\tshowError(errorResponse?.data.ocs.meta.message || t('user_ldap', 'Failed to clear mapping'))\n\t}\n}\n\n/**\n * Call wizard action\n *\n * @param action - The wizard action to call\n * @param configId - ID of the configuration\n * @param extraParams - Additional parameters for the wizard action\n */\nexport async function callWizard(action: WizardAction, configId: string, extraParams: Record = {}) {\n\tconst params = new FormData()\n\n\tObject.entries(extraParams).forEach(([key, value]) => {\n\t\tparams.set(key, value)\n\t})\n\n\ttry {\n\t\tconst response = await axios.post(\n\t\t\tgenerateOcsUrl('apps/user_ldap/api/v1/wizard/{configId}/{action}', { configId, action }),\n\t\t\tparams,\n\t\t) as AxiosResponse, options?: Record }>>\n\n\t\tlogger.debug(`Called wizard action: ${action}`, { configId, params, response })\n\n\t\treturn response.data.ocs.data\n\t} catch (error) {\n\t\tlet message = t('user_ldap', 'An error occurred')\n\n\t\tif (isAxiosError(error) && error.response?.data.ocs.meta.status === 'failure') {\n\t\t\tif (error.response.data.ocs.meta.message !== '' && error.response.data.ocs.meta.message !== undefined) {\n\t\t\t\tmessage = error.response.data.ocs.meta.message\n\t\t\t}\n\t\t}\n\n\t\tshowError(message)\n\n\t\tthrow error\n\t}\n}\n\n/**\n * Show info dialog when enabling automatic filter mode\n */\nexport async function showEnableAutomaticFilterInfo() {\n\treturn await confirmOperation(\n\t\tt('user_ldap', 'Mode switch'),\n\t\tt('user_ldap', 'Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?'),\n\t)\n}\n\n/**\n * Show confirmation dialog for dangerous operations\n *\n * @param name - Dialog title\n * @param text - Dialog text\n */\nexport async function confirmOperation(name: string, text: string): Promise {\n\tlet result = false\n\tconst dialog = getDialogBuilder(name)\n\t\t.setText(text)\n\t\t.setSeverity('warning')\n\t\t.addButton({\n\t\t\tlabel: t('user_ldap', 'Cancel'),\n\t\t\tcallback() {},\n\t\t})\n\t\t.addButton({\n\t\t\tlabel: t('user_ldap', 'Confirm'),\n\t\t\tvariant: 'error',\n\t\t\tcallback() {\n\t\t\t\tresult = true\n\t\t\t},\n\t\t})\n\t\t.build()\n\n\tawait dialog.show()\n\treturn result\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { LDAPConfig } from '../models/index.ts'\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport { copyConfig, createConfig, deleteConfig, getConfig, updateConfig } from '../services/ldapConfigService.ts'\n\nexport const useLDAPConfigsStore = defineStore('ldap-configs', () => {\n\tconst ldapConfigs = ref(loadState('user_ldap', 'ldapConfigs') as Record)\n\tconst selectedConfigId = ref(Object.keys(ldapConfigs.value)[0])\n\tconst selectedConfig = computed(() => selectedConfigId.value === undefined ? undefined : ldapConfigs.value[selectedConfigId.value])\n\tconst updatingConfig = ref(0)\n\n\t/**\n\t * Get a proxy for the LDAP configuration that automatically updates the backend on property set\n\t *\n\t * @param configId - ID of the configuration\n\t * @param postSetHooks - Optional hooks to call after a property has been set\n\t */\n\tfunction getConfigProxy(configId: string, postSetHooks: Partial void>> = {}) {\n\t\tif (ldapConfigs.value[configId] === undefined) {\n\t\t\tthrow new Error(`Config with id ${configId} does not exist`)\n\t\t}\n\n\t\treturn new Proxy(ldapConfigs.value[configId], {\n\t\t\tget(target, property) {\n\t\t\t\treturn target[property]\n\t\t\t},\n\t\t\tset(target, property: string, newValue) {\n\t\t\t\ttarget[property] = newValue\n\n\t\t\t\t;(async () => {\n\t\t\t\t\tupdatingConfig.value++\n\t\t\t\t\tawait updateConfig(configId, { [property]: newValue })\n\t\t\t\t\tupdatingConfig.value--\n\n\t\t\t\t\tif (postSetHooks[property] !== undefined) {\n\t\t\t\t\t\tpostSetHooks[property](target[property])\n\t\t\t\t\t}\n\t\t\t\t})()\n\n\t\t\t\treturn true\n\t\t\t},\n\t\t})\n\t}\n\n\t/**\n\t * Create a new LDAP configuration\n\t */\n\tasync function create() {\n\t\tconst configId = await createConfig()\n\t\tldapConfigs.value[configId] = await getConfig(configId)\n\t\tselectedConfigId.value = configId\n\t\treturn configId\n\t}\n\n\t/**\n\t * Copy an existing LDAP configuration\n\t *\n\t * @param fromConfigId - ID of the configuration to copy\n\t */\n\tasync function _copyConfig(fromConfigId: string) {\n\t\tif (ldapConfigs.value[fromConfigId] === undefined) {\n\t\t\tthrow new Error(`Config with id ${fromConfigId} does not exist`)\n\t\t}\n\n\t\tconst configId = await copyConfig(fromConfigId)\n\n\t\tldapConfigs.value[configId] = { ...ldapConfigs.value[fromConfigId] }\n\t\tselectedConfigId.value = configId\n\t\treturn configId\n\t}\n\n\t/**\n\t * Delete an LDAP configuration\n\t *\n\t * @param configId - ID of the configuration to delete\n\t */\n\tasync function removeConfig(configId: string) {\n\t\tconst result = await deleteConfig(configId)\n\n\t\tif (result === true) {\n\t\t\tif (Object.keys(ldapConfigs.value).length === 1) {\n\t\t\t\t// Ensure at least one config exists before deleting the last one\n\t\t\t\tselectedConfigId.value = await create()\n\t\t\t\t// The new config id could be the same as the deleted one, so only delete if different\n\t\t\t\tif (selectedConfigId.value !== configId) {\n\t\t\t\t\tdelete ldapConfigs.value[configId]\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Select the first config that is not the deleted one\n\t\t\t\tselectedConfigId.value = Object.keys(ldapConfigs.value).filter((_configId) => configId !== _configId)[0]\n\t\t\t\tdelete ldapConfigs.value[configId]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tldapConfigs,\n\t\tselectedConfigId,\n\t\tselectedConfig,\n\t\tupdatingConfig,\n\t\tgetConfigProxy,\n\t\tcreate,\n\t\tcopyConfig: _copyConfig,\n\t\tremoveConfig,\n\t}\n})\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createPinia } from 'pinia'\n\nexport const pinia = createPinia()\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport LDAPSettingsApp from './views/LDAPSettingsApp.vue'\nimport { pinia } from './store/index.ts'\n\nconst app = createApp(LDAPSettingsApp)\napp.use(pinia)\napp.mount('#content-ldap-settings')\n"],"names":["logger","getLoggerBuilder","createConfig","response","axios","generateOcsUrl","copyConfig","configId","params","getConfig","updateConfig","config","deleteConfig","confirmOperation","t","error","errorResponse","showError","testConfiguration","clearMapping","subject","showSuccess","callWizard","action","extraParams","key","value","message","isAxiosError","showEnableAutomaticFilterInfo","name","text","result","getDialogBuilder","useLDAPConfigsStore","defineStore","ldapConfigs","ref","loadState","selectedConfigId","selectedConfig","computed","updatingConfig","getConfigProxy","postSetHooks","target","property","newValue","create","_copyConfig","fromConfigId","removeConfig","_configId","props","__props","ldapConfigsStore","ldapConfigProxy","instanceName","getCapabilities","groupMemberAssociation","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_unref","_createVNode","NcTextField","_cache","event","NcCheckboxRadioSwitch","$event","_hoisted_3","NcTextArea","NcSelect","_withCtx","label","_createTextVNode","_toDisplayString","_hoisted_4","_hoisted_5","_hoisted_6","storeToRefs","getGroupFilter","groupsCountLabel","groupObjectClasses","groupGroups","loadingGroupCount","ldapGroupFilterObjectclass","item","ldapGroupFilterGroups","init","response1","response2","countGroups","toggleFilterMode","NcButton","_createBlock","NcLoadingIcon","getUserLoginFilter","testUsername","loginFilterOptions","ldapLoginFilterAttributes","ldapLoginFilterMode","filteredLoginFilterOptions","option","onBeforeMount","verifyLoginName","testLoginName","testEffectiveFilter","showWarning","_sfc_main","_mergeProps","_ctx","$props","loadingGuessPortAndTLS","loadingCountInBaseDN","loadingGuessBaseDN","localLdapAgentName","localLdapAgentPassword","needsToSaveCredentials","watch","newVal","updateCredentials","guessPortAndTLS","changes","guessBaseDN","countInBaseDN","ldapTestBase","showInfo","n","ContentCopy","Delete","_hoisted_7","reloadFilters","usersCount","loadingUserCount","userObjectClasses","userGroups","ldapUserFilterObjectclass","ldapUserFilterGroups","countUsers","_hoisted_8","loading","isValide","testSelectedConfig","Information","_Fragment","_normalizeClass","ldapModuleInstalled","tabs","selectedTab","clearMappingLoading","selectedConfigHasServerInfo","requestClearMapping","NcNoteCard","Plus","_renderList","tabLabel","tabId","ServerTab","UsersTab","LoginTab","GroupsTab","ExpertTab","AdvancedTab","WizardControls","pinia","createPinia","app","createApp","LDAPSettingsApp"],"mappings":"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","x_google_ignoreList":[7]} \ No newline at end of file +{"version":3,"file":"user_ldap-settings-admin.mjs","sources":["../build/frontend/apps/user_ldap/src/services/logger.ts","../build/frontend/apps/user_ldap/src/services/ldapConfigService.ts","../build/frontend/apps/user_ldap/src/store/configs.ts","../build/frontend/apps/user_ldap/src/components/SettingsTabs/AdvancedTab.vue","../build/frontend/apps/user_ldap/src/components/SettingsTabs/ExpertTab.vue","../build/frontend/apps/user_ldap/src/components/SettingsTabs/GroupsTab.vue","../build/frontend/apps/user_ldap/src/components/SettingsTabs/LoginTab.vue","../node_modules/vue-material-design-icons/Delete.vue","../build/frontend/apps/user_ldap/src/components/SettingsTabs/ServerTab.vue","../build/frontend/apps/user_ldap/src/components/SettingsTabs/UsersTab.vue","../build/frontend/apps/user_ldap/src/components/WizardControls.vue","../build/frontend/apps/user_ldap/src/views/LDAPSettingsApp.vue","../build/frontend/apps/user_ldap/src/store/index.ts","../build/frontend/apps/user_ldap/src/settings-admin.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('LDAP')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { AxiosError } from '@nextcloud/axios'\nimport type { AxiosResponse } from '@nextcloud/axios'\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\nimport type { LDAPConfig } from '../models/index.ts'\n\nimport axios, { isAxiosError } from '@nextcloud/axios'\nimport { getDialogBuilder, showError, showSuccess } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport logger from './logger.ts'\n\nexport type WizardAction\n\t= 'guessPortAndTLS'\n\t\t| 'guessBaseDN'\n\t\t| 'detectEmailAttribute'\n\t\t| 'detectUserDisplayNameAttribute'\n\t\t| 'determineGroupMemberAssoc'\n\t\t| 'determineUserObjectClasses'\n\t\t| 'determineGroupObjectClasses'\n\t\t| 'determineGroupsForUsers'\n\t\t| 'determineGroupsForGroups'\n\t\t| 'determineAttributes'\n\t\t| 'getUserListFilter'\n\t\t| 'getUserLoginFilter'\n\t\t| 'getGroupFilter'\n\t\t| 'countUsers'\n\t\t| 'countGroups'\n\t\t| 'countInBaseDN'\n\t\t| 'testLoginName'\n\n/**\n * Create a new LDAP configuration\n */\nexport async function createConfig() {\n\tconst response = await axios.post(generateOcsUrl('apps/user_ldap/api/v1/config')) as AxiosResponse>\n\tlogger.debug('Created configuration', { configId: response.data.ocs.data.configID })\n\treturn response.data.ocs.data.configID\n}\n\n/**\n * Copy an existing LDAP configuration\n *\n * @param configId - ID of the configuration to copy\n */\nexport async function copyConfig(configId: string) {\n\tconst params = new FormData()\n\tparams.set('copyConfig', configId)\n\n\tconst response = await axios.post(\n\t\tgenerateOcsUrl('apps/user_ldap/api/v1/config/{configId}/copy', { configId }),\n\t\tparams,\n\t) as AxiosResponse>\n\n\tlogger.debug('Created configuration', { configId: response.data.ocs.data.configID })\n\treturn response.data.ocs.data.configID\n}\n\n/**\n * Get an LDAP configuration\n *\n * @param configId - ID of the configuration to fetch\n */\nexport async function getConfig(configId: string): Promise {\n\tconst response = await axios.get(generateOcsUrl('apps/user_ldap/api/v1/config/{configId}', { configId })) as AxiosResponse>\n\tlogger.debug('Fetched configuration', { configId, config: response.data.ocs.data })\n\treturn response.data.ocs.data\n}\n\n/**\n * Update an LDAP configuration\n *\n * @param configId - ID of the configuration to update\n * @param config - Partial configuration data to update\n */\nexport async function updateConfig(configId: string, config: Partial): Promise {\n\tconst response = await axios.put(\n\t\tgenerateOcsUrl('apps/user_ldap/api/v1/config/{configId}', { configId }),\n\t\t{ configData: config },\n\t) as AxiosResponse>\n\n\tlogger.debug('Updated configuration', { configId, config })\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Delete an LDAP configuration\n *\n * @param configId - ID of the configuration to delete\n */\nexport async function deleteConfig(configId: string): Promise {\n\ttry {\n\t\tconst isConfirmed = await confirmOperation(\n\t\t\tt('user_ldap', 'Confirm action'),\n\t\t\tt('user_ldap', 'Are you sure you want to permanently delete this LDAP configuration? This cannot be undone.'),\n\t\t)\n\t\tif (!isConfirmed) {\n\t\t\treturn false\n\t\t}\n\n\t\tawait axios.delete(generateOcsUrl('apps/user_ldap/api/v1/config/{configId}', { configId }))\n\t\tlogger.debug('Deleted configuration', { configId })\n\t} catch (error) {\n\t\tconst errorResponse = (error as AxiosError).response\n\t\tshowError(errorResponse?.data.ocs.meta.message || t('user_ldap', 'Failed to delete config'))\n\t}\n\n\treturn true\n}\n\n/**\n * Test an LDAP configuration\n *\n * @param configId - ID of the configuration to test\n */\nexport async function testConfiguration(configId: string) {\n\tconst params = new FormData()\n\n\tconst response = await axios.post(generateOcsUrl('apps/user_ldap/api/v1/config/{configId}/test', { configId })) as AxiosResponse>\n\n\tlogger.debug(`Configuration is ${response.data.ocs.data.success ? 'valide' : 'invalide'}`, { configId, params, response })\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Clear LDAP mapping\n *\n * @param subject - 'user' or 'group'\n */\nexport async function clearMapping(subject: 'user' | 'group') {\n\tconst isConfirmed = await confirmOperation(\n\t\tt('user_ldap', 'Confirm action'),\n\t\tt('user_ldap', 'Are you sure you want to permanently clear the LDAP mapping? This cannot be undone.'),\n\t)\n\tif (!isConfirmed) {\n\t\treturn false\n\t}\n\n\ttry {\n\t\tconst response = await axios.post(\n\t\t\tgenerateOcsUrl('apps/user_ldap/api/v1/wizard/clearMappings'),\n\t\t\t{ subject },\n\t\t) as AxiosResponse\n\n\t\tlogger.debug('Cleared mapping', { subject, response })\n\t\tshowSuccess(t('user_ldap', 'Mapping cleared'))\n\t\treturn true\n\t} catch (error) {\n\t\tconst errorResponse = (error as AxiosError).response\n\t\tshowError(errorResponse?.data.ocs.meta.message || t('user_ldap', 'Failed to clear mapping'))\n\t}\n}\n\n/**\n * Call wizard action\n *\n * @param action - The wizard action to call\n * @param configId - ID of the configuration\n * @param extraParams - Additional parameters for the wizard action\n */\nexport async function callWizard(action: WizardAction, configId: string, extraParams: Record = {}) {\n\tconst params = new FormData()\n\n\tObject.entries(extraParams).forEach(([key, value]) => {\n\t\tparams.set(key, value)\n\t})\n\n\ttry {\n\t\tconst response = await axios.post(\n\t\t\tgenerateOcsUrl('apps/user_ldap/api/v1/wizard/{configId}/{action}', { configId, action }),\n\t\t\tparams,\n\t\t) as AxiosResponse, options?: Record }>>\n\n\t\tlogger.debug(`Called wizard action: ${action}`, { configId, params, response })\n\n\t\treturn response.data.ocs.data\n\t} catch (error) {\n\t\tlet message = t('user_ldap', 'An error occurred')\n\n\t\tif (isAxiosError(error) && error.response?.data.ocs.meta.status === 'failure') {\n\t\t\tif (error.response.data.ocs.meta.message !== '' && error.response.data.ocs.meta.message !== undefined) {\n\t\t\t\tmessage = error.response.data.ocs.meta.message\n\t\t\t}\n\t\t}\n\n\t\tshowError(message)\n\n\t\tthrow error\n\t}\n}\n\n/**\n * Show info dialog when enabling automatic filter mode\n */\nexport async function showEnableAutomaticFilterInfo() {\n\treturn await confirmOperation(\n\t\tt('user_ldap', 'Mode switch'),\n\t\tt('user_ldap', 'Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?'),\n\t)\n}\n\n/**\n * Show confirmation dialog for dangerous operations\n *\n * @param name - Dialog title\n * @param text - Dialog text\n */\nexport async function confirmOperation(name: string, text: string): Promise {\n\tlet result = false\n\tconst dialog = getDialogBuilder(name)\n\t\t.setText(text)\n\t\t.setSeverity('warning')\n\t\t.addButton({\n\t\t\tlabel: t('user_ldap', 'Cancel'),\n\t\t\tcallback() {},\n\t\t})\n\t\t.addButton({\n\t\t\tlabel: t('user_ldap', 'Confirm'),\n\t\t\tvariant: 'error',\n\t\t\tcallback() {\n\t\t\t\tresult = true\n\t\t\t},\n\t\t})\n\t\t.build()\n\n\tawait dialog.show()\n\treturn result\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { LDAPConfig } from '../models/index.ts'\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport { copyConfig, createConfig, deleteConfig, getConfig, updateConfig } from '../services/ldapConfigService.ts'\n\nexport const useLDAPConfigsStore = defineStore('ldap-configs', () => {\n\tconst ldapConfigs = ref(loadState('user_ldap', 'ldapConfigs') as Record)\n\tconst selectedConfigId = ref(Object.keys(ldapConfigs.value)[0])\n\tconst selectedConfig = computed(() => selectedConfigId.value === undefined ? undefined : ldapConfigs.value[selectedConfigId.value])\n\tconst updatingConfig = ref(0)\n\n\t/**\n\t * Get a proxy for the LDAP configuration that automatically updates the backend on property set\n\t *\n\t * @param configId - ID of the configuration\n\t * @param postSetHooks - Optional hooks to call after a property has been set\n\t */\n\tfunction getConfigProxy(configId: string, postSetHooks: Partial void>> = {}) {\n\t\tif (ldapConfigs.value[configId] === undefined) {\n\t\t\tthrow new Error(`Config with id ${configId} does not exist`)\n\t\t}\n\n\t\treturn new Proxy(ldapConfigs.value[configId], {\n\t\t\tget(target, property) {\n\t\t\t\treturn target[property]\n\t\t\t},\n\t\t\tset(target, property: string, newValue) {\n\t\t\t\ttarget[property] = newValue\n\n\t\t\t\t;(async () => {\n\t\t\t\t\tupdatingConfig.value++\n\t\t\t\t\tawait updateConfig(configId, { [property]: newValue })\n\t\t\t\t\tupdatingConfig.value--\n\n\t\t\t\t\tif (postSetHooks[property] !== undefined) {\n\t\t\t\t\t\tpostSetHooks[property](target[property])\n\t\t\t\t\t}\n\t\t\t\t})()\n\n\t\t\t\treturn true\n\t\t\t},\n\t\t})\n\t}\n\n\t/**\n\t * Create a new LDAP configuration\n\t */\n\tasync function create() {\n\t\tconst configId = await createConfig()\n\t\tldapConfigs.value[configId] = await getConfig(configId)\n\t\tselectedConfigId.value = configId\n\t\treturn configId\n\t}\n\n\t/**\n\t * Copy an existing LDAP configuration\n\t *\n\t * @param fromConfigId - ID of the configuration to copy\n\t */\n\tasync function _copyConfig(fromConfigId: string) {\n\t\tif (ldapConfigs.value[fromConfigId] === undefined) {\n\t\t\tthrow new Error(`Config with id ${fromConfigId} does not exist`)\n\t\t}\n\n\t\tconst configId = await copyConfig(fromConfigId)\n\n\t\tldapConfigs.value[configId] = { ...ldapConfigs.value[fromConfigId] }\n\t\tselectedConfigId.value = configId\n\t\treturn configId\n\t}\n\n\t/**\n\t * Delete an LDAP configuration\n\t *\n\t * @param configId - ID of the configuration to delete\n\t */\n\tasync function removeConfig(configId: string) {\n\t\tconst result = await deleteConfig(configId)\n\n\t\tif (result === true) {\n\t\t\tif (Object.keys(ldapConfigs.value).length === 1) {\n\t\t\t\t// Ensure at least one config exists before deleting the last one\n\t\t\t\tselectedConfigId.value = await create()\n\t\t\t\t// The new config id could be the same as the deleted one, so only delete if different\n\t\t\t\tif (selectedConfigId.value !== configId) {\n\t\t\t\t\tdelete ldapConfigs.value[configId]\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Select the first config that is not the deleted one\n\t\t\t\tselectedConfigId.value = Object.keys(ldapConfigs.value).filter((_configId) => configId !== _configId)[0]\n\t\t\t\tdelete ldapConfigs.value[configId]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tldapConfigs,\n\t\tselectedConfigId,\n\t\tselectedConfig,\n\t\tupdatingConfig,\n\t\tgetConfigProxy,\n\t\tcreate,\n\t\tcopyConfig: _copyConfig,\n\t\tremoveConfig,\n\t}\n})\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createPinia } from 'pinia'\n\nexport const pinia = createPinia()\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport LDAPSettingsApp from './views/LDAPSettingsApp.vue'\nimport { pinia } from './store/index.ts'\n\nconst app = createApp(LDAPSettingsApp)\napp.use(pinia)\napp.mount('#content-ldap-settings')\n"],"names":["logger","getLoggerBuilder","createConfig","response","axios","generateOcsUrl","copyConfig","configId","params","getConfig","updateConfig","config","deleteConfig","confirmOperation","t","error","errorResponse","showError","testConfiguration","clearMapping","subject","showSuccess","callWizard","action","extraParams","key","value","message","isAxiosError","showEnableAutomaticFilterInfo","name","text","result","getDialogBuilder","useLDAPConfigsStore","defineStore","ldapConfigs","ref","loadState","selectedConfigId","selectedConfig","computed","updatingConfig","getConfigProxy","postSetHooks","target","property","newValue","create","_copyConfig","fromConfigId","removeConfig","_configId","props","__props","ldapConfigsStore","ldapConfigProxy","instanceName","getCapabilities","groupMemberAssociation","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_unref","_createVNode","NcTextField","_cache","event","NcCheckboxRadioSwitch","$event","_hoisted_3","NcTextArea","NcSelect","_withCtx","label","_createTextVNode","_toDisplayString","_hoisted_4","_hoisted_5","_hoisted_6","storeToRefs","getGroupFilter","groupsCountLabel","groupObjectClasses","groupGroups","loadingGroupCount","ldapGroupFilterObjectclass","item","ldapGroupFilterGroups","init","response1","response2","countGroups","toggleFilterMode","NcButton","_createBlock","NcLoadingIcon","getUserLoginFilter","testUsername","loginFilterOptions","ldapLoginFilterAttributes","ldapLoginFilterMode","filteredLoginFilterOptions","option","onBeforeMount","verifyLoginName","testLoginName","testEffectiveFilter","showWarning","_sfc_main","_mergeProps","_ctx","$props","loadingGuessPortAndTLS","loadingCountInBaseDN","loadingGuessBaseDN","localLdapAgentName","localLdapAgentPassword","needsToSaveCredentials","watch","newVal","updateCredentials","guessPortAndTLS","changes","guessBaseDN","countInBaseDN","ldapTestBase","showInfo","n","ContentCopy","Delete","_hoisted_7","reloadFilters","usersCount","loadingUserCount","userObjectClasses","userGroups","ldapUserFilterObjectclass","ldapUserFilterGroups","countUsers","_hoisted_8","loading","isValide","testSelectedConfig","Information","_Fragment","_normalizeClass","ldapModuleInstalled","tabs","selectedTab","clearMappingLoading","selectedConfigHasServerInfo","requestClearMapping","NcNoteCard","Plus","_renderList","tabLabel","tabId","ServerTab","UsersTab","LoginTab","GroupsTab","ExpertTab","AdvancedTab","WizardControls","pinia","createPinia","app","createApp","LDAPSettingsApp"],"mappings":"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","x_google_ignoreList":[7]} \ No newline at end of file diff --git a/dist/user_status-menu.mjs b/dist/user_status-menu.mjs index ff6d164e10683..dc3eca6a7ebcb 100644 --- a/dist/user_status-menu.mjs +++ b/dist/user_status-menu.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/SetStatusModal-BSp1mmzy.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DL1yHC1K-DSbqJ9Gy.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs'),window.OC.filePath('', '', 'dist/emoji-C8k9NUlo-BQiX-d8c.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BRPJrOcF.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/common-NcEmojiPicker-UTxgju3f-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-Fnpm9Yo9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrayArrowDown-BEbvWlY3.chunk.css'),window.OC.filePath('', '', 'dist/user_status-SetStatusModal-FTEE4Jmr.chunk.css')])))=>i.map(i=>d[i]); -import{g as ft,c as g,a as v,u as mt,d as ht,s as z,f as I}from"./index-Cp0kcsps.chunk.mjs";import{Y as gt,P as _t,z as K,v as yt,r as M,o as O,f as F,c as N,w as C,k as E,y as T,L as G,j as vt,t as bt,h as wt,F as St,a as It,_ as Mt,e as Y}from"./Web-DYqXJUev.chunk.mjs";import{N as Ot}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as At}from"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import{N as kt}from"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import{a as Ct}from"./index-DL1yHC1K-DSbqJ9Gy.chunk.mjs";import{t as h}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as _}from"./index-CkGt55pS.chunk.mjs";import{_ as Et,l as Tt}from"./public-C1mLBHT3.chunk.mjs";import{f as $,n as jt}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const q=ft().detectLogLevel().setApp("user_status").build();function Pt(){return X().__VUE_DEVTOOLS_GLOBAL_HOOK__}function X(){return typeof navigator<"u"&&typeof window<"u"?window:typeof globalThis<"u"?globalThis:{}}const xt=typeof Proxy=="function",Lt="devtools-plugin:setup",Dt="plugin:settings:set";let S,x;function Ut(){var t;return S!==void 0||(typeof window<"u"&&window.performance?(S=!0,x=window.performance):typeof globalThis<"u"&&!((t=globalThis.perf_hooks)===null||t===void 0)&&t.performance?(S=!0,x=globalThis.perf_hooks.performance):S=!1),S}function Ft(){return Ut()?x.now():Date.now()}class Nt{constructor(e,s){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=s;const a={};if(e.settings)for(const o in e.settings){const i=e.settings[o];a[o]=i.defaultValue}const n=`__vue-devtools-plugin-settings__${e.id}`;let r=Object.assign({},a);try{const o=localStorage.getItem(n),i=JSON.parse(o);Object.assign(r,i)}catch{}this.fallbacks={getSettings(){return r},setSettings(o){try{localStorage.setItem(n,JSON.stringify(o))}catch{}r=o},now(){return Ft()}},s&&s.on(Dt,(o,i)=>{o===this.plugin.id&&this.fallbacks.setSettings(i)}),this.proxiedOn=new Proxy({},{get:(o,i)=>this.target?this.target.on[i]:(...u)=>{this.onQueue.push({method:i,args:u})}}),this.proxiedTarget=new Proxy({},{get:(o,i)=>this.target?this.target[i]:i==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(i)?(...u)=>(this.targetQueue.push({method:i,args:u,resolve:()=>{}}),this.fallbacks[i](...u)):(...u)=>new Promise(c=>{this.targetQueue.push({method:i,args:u,resolve:c})})})}async setRealTarget(e){this.target=e;for(const s of this.onQueue)this.target.on[s.method](...s.args);for(const s of this.targetQueue)s.resolve(await this.target[s.method](...s.args))}}function Gt(t,e){const s=t,a=X(),n=Pt(),r=xt&&s.enableEarlyProxy;if(n&&(a.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!r))n.emit(Lt,t,e);else{const o=r?new Nt(s,n):null;(a.__VUE_DEVTOOLS_PLUGINS__=a.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:s,setupFn:e,proxy:o}),o&&e(o.proxiedTarget)}}var $t="store";function w(t,e){Object.keys(t).forEach(function(s){return e(t[s],s)})}function Z(t){return t!==null&&typeof t=="object"}function Bt(t){return t&&typeof t.then=="function"}function Vt(t,e){return function(){return t(e)}}function B(t,e,s){return e.indexOf(t)<0&&(s&&s.prepend?e.unshift(t):e.push(t)),function(){var a=e.indexOf(t);a>-1&&e.splice(a,1)}}function V(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var s=t.state;k(t,s,[],t._modules.root,!0),D(t,s,e)}function D(t,e,s){var a=t._state,n=t._scope;t.getters={},t._makeLocalGettersCache=Object.create(null);var r=t._wrappedGetters,o={},i={},u=gt(!0);u.run(function(){w(r,function(c,l){o[l]=Vt(c,t),i[l]=yt(function(){return o[l]()}),Object.defineProperty(t.getters,l,{get:function(){return i[l].value},enumerable:!0})})}),t._state=_t({data:e}),t._scope=u,t.strict&&Jt(t),a&&s&&t._withCommit(function(){a.data=null}),n&&n.stop()}function k(t,e,s,a,n){var r=!s.length,o=t._modules.getNamespace(s);if(a.namespaced&&(t._modulesNamespaceMap[o],t._modulesNamespaceMap[o]=a),!r&&!n){var i=U(e,s.slice(0,-1)),u=s[s.length-1];t._withCommit(function(){i[u]=a.state})}var c=a.context=Ht(t,o,s);a.forEachMutation(function(l,d){var p=o+d;Qt(t,p,l,c)}),a.forEachAction(function(l,d){var p=l.root?d:o+d,pt=l.handler||l;Rt(t,p,pt,c)}),a.forEachGetter(function(l,d){var p=o+d;Wt(t,p,l,c)}),a.forEachChild(function(l,d){k(t,e,s.concat(d),l,n)})}function Ht(t,e,s){var a=e==="",n={dispatch:a?t.dispatch:function(r,o,i){var u=A(r,o,i),c=u.payload,l=u.options,d=u.type;return(!l||!l.root)&&(d=e+d),t.dispatch(d,c)},commit:a?t.commit:function(r,o,i){var u=A(r,o,i),c=u.payload,l=u.options,d=u.type;(!l||!l.root)&&(d=e+d),t.commit(d,c,l)}};return Object.defineProperties(n,{getters:{get:a?function(){return t.getters}:function(){return tt(t,e)}},state:{get:function(){return U(t.state,s)}}}),n}function tt(t,e){if(!t._makeLocalGettersCache[e]){var s={},a=e.length;Object.keys(t.getters).forEach(function(n){if(n.slice(0,a)===e){var r=n.slice(a);Object.defineProperty(s,r,{get:function(){return t.getters[n]},enumerable:!0})}}),t._makeLocalGettersCache[e]=s}return t._makeLocalGettersCache[e]}function Qt(t,e,s,a){var n=t._mutations[e]||(t._mutations[e]=[]);n.push(function(r){s.call(t,a.state,r)})}function Rt(t,e,s,a){var n=t._actions[e]||(t._actions[e]=[]);n.push(function(r){var o=s.call(t,{dispatch:a.dispatch,commit:a.commit,getters:a.getters,state:a.state,rootGetters:t.getters,rootState:t.state},r);return Bt(o)||(o=Promise.resolve(o)),t._devtoolHook?o.catch(function(i){throw t._devtoolHook.emit("vuex:error",i),i}):o})}function Wt(t,e,s,a){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(n){return s(a.state,a.getters,n.state,n.getters)})}function Jt(t){K(function(){return t._state.data},function(){},{deep:!0,flush:"sync"})}function U(t,e){return e.reduce(function(s,a){return s[a]},t)}function A(t,e,s){return Z(t)&&t.type&&(s=e,e=t,t=t.type),{type:t,payload:e,options:s}}var zt="vuex bindings",H="vuex:mutations",j="vuex:actions",b="vuex",Kt=0;function Yt(t,e){Gt({id:"org.vuejs.vuex",app:t,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:[zt]},function(s){s.addTimelineLayer({id:H,label:"Vuex Mutations",color:Q}),s.addTimelineLayer({id:j,label:"Vuex Actions",color:Q}),s.addInspector({id:b,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),s.on.getInspectorTree(function(a){if(a.app===t&&a.inspectorId===b)if(a.filter){var n=[];nt(n,e._modules.root,a.filter,""),a.rootNodes=n}else a.rootNodes=[at(e._modules.root,"")]}),s.on.getInspectorState(function(a){if(a.app===t&&a.inspectorId===b){var n=a.nodeId;tt(e,n),a.state=Zt(ee(e._modules,n),n==="root"?e.getters:e._makeLocalGettersCache,n)}}),s.on.editInspectorState(function(a){if(a.app===t&&a.inspectorId===b){var n=a.nodeId,r=a.path;n!=="root"&&(r=n.split("/").filter(Boolean).concat(r)),e._withCommit(function(){a.set(e._state.data,r,a.state.value)})}}),e.subscribe(function(a,n){var r={};a.payload&&(r.payload=a.payload),r.state=n,s.notifyComponentUpdate(),s.sendInspectorTree(b),s.sendInspectorState(b),s.addTimelineEvent({layerId:H,event:{time:Date.now(),title:a.type,data:r}})}),e.subscribeAction({before:function(a,n){var r={};a.payload&&(r.payload=a.payload),a._id=Kt++,a._time=Date.now(),r.state=n,s.addTimelineEvent({layerId:j,event:{time:a._time,title:a.type,groupId:a._id,subtitle:"start",data:r}})},after:function(a,n){var r={},o=Date.now()-a._time;r.duration={_custom:{type:"duration",display:o+"ms",tooltip:"Action duration",value:o}},a.payload&&(r.payload=a.payload),r.state=n,s.addTimelineEvent({layerId:j,event:{time:Date.now(),title:a.type,groupId:a._id,subtitle:"end",data:r}})}})})}var Q=8702998,qt=6710886,Xt=16777215,et={label:"namespaced",textColor:Xt,backgroundColor:qt};function st(t){return t&&t!=="root"?t.split("/").slice(-2,-1)[0]:"Root"}function at(t,e){return{id:e||"root",label:st(e),tags:t.namespaced?[et]:[],children:Object.keys(t._children).map(function(s){return at(t._children[s],e+s+"/")})}}function nt(t,e,s,a){a.includes(s)&&t.push({id:a||"root",label:a.endsWith("/")?a.slice(0,a.length-1):a||"Root",tags:e.namespaced?[et]:[]}),Object.keys(e._children).forEach(function(n){nt(t,e._children[n],s,a+n+"/")})}function Zt(t,e,s){e=s==="root"?e:e[s];var a=Object.keys(e),n={state:Object.keys(t.state).map(function(o){return{key:o,editable:!0,value:t.state[o]}})};if(a.length){var r=te(e);n.getters=Object.keys(r).map(function(o){return{key:o.endsWith("/")?st(o):o,editable:!1,value:L(function(){return r[o]})}})}return n}function te(t){var e={};return Object.keys(t).forEach(function(s){var a=s.split("/");if(a.length>1){var n=e,r=a.pop();a.forEach(function(o){n[o]||(n[o]={_custom:{value:{},display:o,tooltip:"Module",abstract:!0}}),n=n[o]._custom.value}),n[r]=L(function(){return t[s]})}else e[s]=L(function(){return t[s]})}),e}function ee(t,e){var s=e.split("/").filter(function(a){return a});return s.reduce(function(a,n,r){var o=a[n];if(!o)throw new Error('Missing module "'+n+'" for path "'+e+'".');return r===s.length-1?o:o._children},e==="root"?t:t.root._children)}function L(t){try{return t()}catch(e){return e}}var m=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var s=t.state;this.state=(typeof s=="function"?s():s)||{}},R={namespaced:{configurable:!0}};R.namespaced.get=function(){return!!this._rawModule.namespaced},m.prototype.addChild=function(t,e){this._children[t]=e},m.prototype.removeChild=function(t){delete this._children[t]},m.prototype.getChild=function(t){return this._children[t]},m.prototype.hasChild=function(t){return t in this._children},m.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},m.prototype.forEachChild=function(t){w(this._children,t)},m.prototype.forEachGetter=function(t){this._rawModule.getters&&w(this._rawModule.getters,t)},m.prototype.forEachAction=function(t){this._rawModule.actions&&w(this._rawModule.actions,t)},m.prototype.forEachMutation=function(t){this._rawModule.mutations&&w(this._rawModule.mutations,t)},Object.defineProperties(m.prototype,R);var y=function(t){this.register([],t,!1)};y.prototype.get=function(t){return t.reduce(function(e,s){return e.getChild(s)},this.root)},y.prototype.getNamespace=function(t){var e=this.root;return t.reduce(function(s,a){return e=e.getChild(a),s+(e.namespaced?a+"/":"")},"")},y.prototype.update=function(t){ot([],this.root,t)},y.prototype.register=function(t,e,s){var a=this;s===void 0&&(s=!0);var n=new m(e,s);if(t.length===0)this.root=n;else{var r=this.get(t.slice(0,-1));r.addChild(t[t.length-1],n)}e.modules&&w(e.modules,function(o,i){a.register(t.concat(i),o,s)})},y.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),s=t[t.length-1],a=e.getChild(s);a&&a.runtime&&e.removeChild(s)},y.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),s=t[t.length-1];return e?e.hasChild(s):!1};function ot(t,e,s){if(e.update(s),s.modules)for(var a in s.modules){if(!e.getChild(a))return;ot(t.concat(a),e.getChild(a),s.modules[a])}}function se(t){return new f(t)}var f=function(t){var e=this;t===void 0&&(t={});var s=t.plugins;s===void 0&&(s=[]);var a=t.strict;a===void 0&&(a=!1);var n=t.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new y(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._scope=null,this._devtools=n;var r=this,o=this,i=o.dispatch,u=o.commit;this.dispatch=function(l,d){return i.call(r,l,d)},this.commit=function(l,d,p){return u.call(r,l,d,p)},this.strict=a;var c=this._modules.root.state;k(this,c,[],this._modules.root),D(this,c),s.forEach(function(l){return l(e)})},P={state:{configurable:!0}};f.prototype.install=function(t,e){t.provide(e||$t,this),t.config.globalProperties.$store=this;var s=this._devtools!==void 0?this._devtools:!1;s&&Yt(t,this)},P.state.get=function(){return this._state.data},P.state.set=function(t){},f.prototype.commit=function(t,e,s){var a=this,n=A(t,e,s),r=n.type,o=n.payload,i={type:r,payload:o},u=this._mutations[r];u&&(this._withCommit(function(){u.forEach(function(c){c(o)})}),this._subscribers.slice().forEach(function(c){return c(i,a.state)}))},f.prototype.dispatch=function(t,e){var s=this,a=A(t,e),n=a.type,r=a.payload,o={type:n,payload:r},i=this._actions[n];if(i){try{this._actionSubscribers.slice().filter(function(c){return c.before}).forEach(function(c){return c.before(o,s.state)})}catch{}var u=i.length>1?Promise.all(i.map(function(c){return c(r)})):i[0](r);return new Promise(function(c,l){u.then(function(d){try{s._actionSubscribers.filter(function(p){return p.after}).forEach(function(p){return p.after(o,s.state)})}catch{}c(d)},function(d){try{s._actionSubscribers.filter(function(p){return p.error}).forEach(function(p){return p.error(o,s.state,d)})}catch{}l(d)})})}},f.prototype.subscribe=function(t,e){return B(t,this._subscribers,e)},f.prototype.subscribeAction=function(t,e){var s=typeof t=="function"?{before:t}:t;return B(s,this._actionSubscribers,e)},f.prototype.watch=function(t,e,s){var a=this;return K(function(){return t(a.state,a.getters)},e,Object.assign({},s))},f.prototype.replaceState=function(t){var e=this;this._withCommit(function(){e._state.data=t})},f.prototype.registerModule=function(t,e,s){s===void 0&&(s={}),typeof t=="string"&&(t=[t]),this._modules.register(t,e),k(this,this.state,t,this._modules.get(t),s.preserveState),D(this,this.state)},f.prototype.unregisterModule=function(t){var e=this;typeof t=="string"&&(t=[t]),this._modules.unregister(t),this._withCommit(function(){var s=U(e.state,t.slice(0,-1));delete s[t[t.length-1]]}),V(this)},f.prototype.hasModule=function(t){return typeof t=="string"&&(t=[t]),this._modules.isRegistered(t)},f.prototype.hotUpdate=function(t){this._modules.update(t),V(this,!0)},f.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(f.prototype,P);var ae=it(function(t,e){var s={};return rt(e).forEach(function(a){var n=a.key,r=a.val;s[n]=function(){var o=this.$store.state,i=this.$store.getters;if(t){var u=ut(this.$store,"mapState",t);if(!u)return;o=u.context.state,i=u.context.getters}return typeof r=="function"?r.call(this,o,i):o[r]},s[n].vuex=!0}),s}),es=it(function(t,e){var s={};return rt(e).forEach(function(a){var n=a.key,r=a.val;r=t+r,s[n]=function(){if(!(t&&!ut(this.$store,"mapGetters",t)))return this.$store.getters[r]},s[n].vuex=!0}),s});function rt(t){return ne(t)?Array.isArray(t)?t.map(function(e){return{key:e,val:e}}):Object.keys(t).map(function(e){return{key:e,val:t[e]}}):[]}function ne(t){return Array.isArray(t)||Z(t)}function it(t){return function(e,s){return typeof e!="string"?(s=e,e=""):e.charAt(e.length-1)!=="/"&&(e+="/"),t(e,s)}}function ut(t,e,s){var a=t._modulesNamespaceMap[s];return a}const oe={computed:{...ae({statusType:t=>t.userStatus.status,statusIsUserDefined:t=>t.userStatus.statusIsUserDefined,customIcon:t=>t.userStatus.icon,customMessage:t=>t.userStatus.message}),visibleMessage(){if(this.customIcon&&this.customMessage)return`${this.customIcon} ${this.customMessage}`;if(this.customMessage)return this.customMessage;if(this.statusIsUserDefined)switch(this.statusType){case"online":return h("user_status","Online");case"away":return h("user_status","Away");case"busy":return h("user_status","Busy");case"dnd":return h("user_status","Do not disturb");case"invisible":return h("user_status","Invisible");case"offline":return h("user_status","Offline")}return h("user_status","Set status")}},methods:{async changeStatus(t){try{await this.$store.dispatch("setStatus",{statusType:t})}catch(e){Ct(h("user_status","There was an error saving the new status")),q.debug(e)}}}};async function re(t){const e=g("apps/user_status/api/v1/heartbeat?format=json");return(await _.put(e,{status:t?"away":"online"})).data.ocs.data}const ie="_userStatusMenuItem_1rva6_1",ue="_userStatusIcon_1rva6_6",ce={userStatusMenuItem:ie,userStatusIcon:ue},le={name:"UserStatus",components:{NcButton:Ot,NcListItem:At,NcUserStatusIcon:kt,SetStatusModal:It(()=>Mt(()=>import("./SetStatusModal-BSp1mmzy.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]),import.meta.url))},mixins:[oe],props:{inline:{type:Boolean,default:!1}},data(){return{heartbeatInterval:null,isAway:!1,isModalOpen:!1,mouseMoveListener:null,setAwayTimeout:null}},mounted(){this.$store.dispatch("loadStatusFromInitialState"),OC.config.session_keepalive&&(this.heartbeatInterval=setInterval(this._backgroundHeartbeat.bind(this),1e3*60*5),this.setAwayTimeout=()=>{this.isAway=!0},this.mouseMoveListener=ht(()=>{const t=this.isAway;this.isAway=!1,clearTimeout(this.setAwayTimeout),setTimeout(this.setAwayTimeout,1e3*60*2),t&&this._backgroundHeartbeat()},1e3*2,{immediate:!0}),window.addEventListener("mousemove",this.mouseMoveListener,{capture:!0,passive:!0}),this._backgroundHeartbeat()),z("user_status:status.updated",this.handleUserStatusUpdated)},beforeUnmount(){window.removeEventListener("mouseMove",this.mouseMoveListener),clearInterval(this.heartbeatInterval),mt("user_status:status.updated",this.handleUserStatusUpdated)},methods:{openModal(){this.isModalOpen=!0},closeModal(){this.isModalOpen=!1},async _backgroundHeartbeat(){try{const t=await re(this.isAway);t?.userId?this.$store.dispatch("setStatusFromHeartbeat",t):await this.$store.dispatch("reFetchStatusFromServer")}catch(t){q.debug("Failed sending heartbeat, got: "+t.response?.status)}},handleUserStatusUpdated(t){v()?.uid===t.userId&&this.$store.dispatch("setStatusFromObject",{status:t.status,icon:t.icon,message:t.message})}}},de={key:1};function pe(t,e,s,a,n,r){const o=M("NcUserStatusIcon"),i=M("NcListItem"),u=M("NcButton"),c=M("SetStatusModal");return O(),F(St,null,[s.inline?(O(),F("div",de,[E(u,{onClick:G(r.openModal,["stop"])},{icon:C(()=>[E(o,{class:T(t.$style.userStatusIcon),status:t.statusType,"aria-hidden":"true"},null,8,["class","status"])]),default:C(()=>[vt(" "+bt(t.visibleMessage),1)]),_:1},8,["onClick"])])):(O(),N(i,{key:0,class:T(t.$style.userStatusMenuItem),compact:"",name:t.visibleMessage,onClick:G(r.openModal,["stop"])},{icon:C(()=>[E(o,{class:T(t.$style.userStatusIcon),status:t.statusType,"aria-hidden":"true"},null,8,["class","status"])]),_:1},8,["class","name","onClick"])),n.isModalOpen?(O(),N(c,{key:2,inline:s.inline,onClose:r.closeModal},null,8,["inline","onClose"])):wt("",!0)],64)}const fe={$style:ce},ct=Et(le,[["render",pe],["__cssModules",fe]]);async function me(){const t=g("apps/user_status/api/v1/predefined_statuses?format=json");return(await _.get(t)).data.ocs.data}const he=()=>({predefinedStatuses:[]}),ge={addPredefinedStatus(t,e){t.predefinedStatuses=[...t.predefinedStatuses,e]}},_e={statusesHaveLoaded(t){return t.predefinedStatuses.length>0}},ye={async loadAllPredefinedStatuses({state:t,commit:e}){if(t.predefinedStatuses.length>0)return;const s=await me();for(const a of s)e("addPredefinedStatus",a)}},ve={state:he,mutations:ge,getters:_e,actions:ye};async function be(){const t=g("apps/user_status/api/v1/user_status");return(await _.get(t)).data.ocs.data}async function we(t){const e=g("apps/user_status/api/v1/statuses/{userId}",{userId:"_"+t});return(await _.get(e)).data.ocs.data}async function Se(t){const e=g("apps/user_status/api/v1/user_status/status");await _.put(e,{statusType:t})}async function Ie(t,e=null){const s=g("apps/user_status/api/v1/user_status/message/predefined?format=json");await _.put(s,{messageId:t,clearAt:e})}async function Me(t,e=null,s=null){const a=g("apps/user_status/api/v1/user_status/message/custom?format=json");await _.put(a,{message:t,statusIcon:e,clearAt:s})}async function Oe(){const t=g("apps/user_status/api/v1/user_status/message?format=json");await _.delete(t)}async function Ae(t){const e=g("apps/user_status/api/v1/user_status/revert/{messageId}",{messageId:t});return(await _.delete(e)).data.ocs.data}const ke=()=>({status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null}),Ce={loadBackupStatusFromServer(t,{status:e,statusIsUserDefined:s,message:a,icon:n,clearAt:r,messageIsPredefined:o,messageId:i}){t.status=e,t.message=a,t.icon=n,typeof s<"u"&&(t.statusIsUserDefined=s),typeof r<"u"&&(t.clearAt=r),typeof o<"u"&&(t.messageIsPredefined=o),typeof i<"u"&&(t.messageId=i)}},Ee={},Te={async fetchBackupFromServer({commit:t}){try{const e=await we(v()?.uid);t("loadBackupStatusFromServer",e)}catch{}},async revertBackupFromServer({commit:t},{messageId:e}){const s=await Ae(e);s&&(t("loadBackupStatusFromServer",{}),t("loadStatusFromServer",s),I("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:v()?.uid}))}},je={state:ke,mutations:Ce,getters:Ee,actions:Te};function Pe(){return new Date}function W(t){if(t===null)return null;const e=Pe();if(t.type==="period")return e.setSeconds(e.getSeconds()+t.time),Math.floor(e.getTime()/1e3);if(t.type==="end-of")switch(t.time){case"day":return Math.floor(lt(e).getTime()/1e3);case"week":return Math.floor(xe(e).getTime()/1e3)}return t.type==="_time"?t.time:null}function ss(t){if(t===null)return h("user_status","Don't clear");if(t.type==="end-of")switch(t.time){case"day":return h("user_status","Today");case"week":return h("user_status","This week");default:return null}return t.type==="period"?$(Date.now()+t.time*1e3):t.type==="_time"?$(t.time*1e3):null}function lt(t){const e=new Date(t);return e.setHours(23,59,59,999),e}function xe(t){const e=lt(t);return e.setDate(t.getDate()+(jt()-1-e.getDay()+7)%7),e}const Le=()=>({status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null}),De={setStatus(t,{statusType:e}){t.status=e,t.statusIsUserDefined=!0},setPredefinedMessage(t,{messageId:e,clearAt:s,message:a,icon:n}){t.messageId=e,t.messageIsPredefined=!0,t.message=a,t.icon=n,t.clearAt=s},setCustomMessage(t,{message:e,icon:s,clearAt:a}){t.messageId=null,t.messageIsPredefined=!1,t.message=e,t.icon=s,t.clearAt=a},clearMessage(t){t.messageId=null,t.messageIsPredefined=!1,t.message=null,t.icon=null,t.clearAt=null},loadStatusFromServer(t,{status:e,statusIsUserDefined:s,message:a,icon:n,clearAt:r,messageIsPredefined:o,messageId:i}){t.status=e,t.message=a,t.icon=n,typeof s<"u"&&(t.statusIsUserDefined=s),typeof r<"u"&&(t.clearAt=r),typeof o<"u"&&(t.messageIsPredefined=o),typeof i<"u"&&(t.messageId=i)}},Ue={},Fe={async setStatus({commit:t,state:e},{statusType:s}){await Se(s),t("setStatus",{statusType:s}),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async setStatusFromObject({commit:t},e){t("loadStatusFromServer",e)},async setPredefinedMessage({commit:t,rootState:e,state:s},{messageId:a,clearAt:n}){const r=W(n);await Ie(a,r);const o=e.predefinedStatuses.predefinedStatuses.find(c=>c.id===a),{message:i,icon:u}=o;t("setPredefinedMessage",{messageId:a,clearAt:r,message:i,icon:u}),I("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:v()?.uid})},async setCustomMessage({commit:t,state:e},{message:s,icon:a,clearAt:n}){const r=W(n);await Me(s,a,r),t("setCustomMessage",{message:s,icon:a,clearAt:r}),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async clearMessage({commit:t,state:e}){await Oe(),t("clearMessage"),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async reFetchStatusFromServer({commit:t}){const e=await be();t("loadStatusFromServer",e)},async setStatusFromHeartbeat({commit:t},e){t("loadStatusFromServer",e)},loadStatusFromInitialState({commit:t}){const e=Tt("user_status","status");t("loadStatusFromServer",e)}},Ne={state:Le,mutations:De,getters:Ue,actions:Fe},dt=se({modules:{predefinedStatuses:ve,userStatus:Ne,userBackupStatus:je},strict:!0}),Ge=document.getElementById("user_status-menu-entry");function J(){const t=document.getElementById("user_status-menu-entry"),e=document.createElement("div");e.style.display="contents",t.replaceWith(e),Y(ct).use(dt).mount(e)}Ge?J():z("core:user-menu:mounted",J),document.addEventListener("DOMContentLoaded",function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("status",t=>{Y(ct,{inline:!0}).use(dt).mount(t)})});export{oe as O,ae as a,ss as c,q as l,es as m}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/SetStatusModal-B6T5dnOq.chunk.mjs'),window.OC.filePath('', '', 'dist/index-mH69OG7L.chunk.mjs'),window.OC.filePath('', '', 'dist/Web-DYqXJUev.chunk.mjs'),window.OC.filePath('', '', 'dist/public-C1mLBHT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CmDAUQql.chunk.mjs'),window.OC.filePath('', '', 'dist/NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-WOan4U8V.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Cp0kcsps.chunk.mjs'),window.OC.filePath('', '', 'dist/common-createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/common-logger-D3RVzcfQ-Ks0gkIDB.chunk.css'),window.OC.filePath('', '', 'dist/common-NcModal-DiDvgcU8-B-yi1OwC.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-BU3aqDG_.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrashCanOutline-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/common-index-DYA_tnKg.chunk.css'),window.OC.filePath('', '', 'dist/mdi-B6W_Xvj-.chunk.mjs'),window.OC.filePath('', '', 'dist/common-mdi-BWNFKLbC.chunk.css'),window.OC.filePath('', '', 'dist/index-BDlLVKOD.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-BWhNCeJl.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-UTxgju3f-HSbVMwrx.chunk.mjs'),window.OC.filePath('', '', 'dist/emoji-C8k9NUlo-BQiX-d8c.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BRPJrOcF.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-Cv9F-jWS-BFJACjQq.chunk.mjs'),window.OC.filePath('', '', 'dist/common-index-bfXBK-tQ.chunk.css'),window.OC.filePath('', '', 'dist/NcTextField.vue_vue_type_script_setup_true_lang-Bx2esFU2-D61trFet.chunk.mjs'),window.OC.filePath('', '', 'dist/NcInputField-5Sg6EUP6-DXw-ZWiv.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcInputField-5Sg6EUP6-BYHxARP-.chunk.css'),window.OC.filePath('', '', 'dist/common-NcEmojiPicker-UTxgju3f-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CkGt55pS.chunk.mjs'),window.OC.filePath('', '', 'dist/util-DBjHxD9z.chunk.mjs'),window.OC.filePath('', '', 'dist/common-NcUserStatusIcon-BF5OEQFU-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-Fnpm9Yo9.chunk.mjs'),window.OC.filePath('', '', 'dist/common-TrayArrowDown-BEbvWlY3.chunk.css'),window.OC.filePath('', '', 'dist/user_status-SetStatusModal-FTEE4Jmr.chunk.css')])))=>i.map(i=>d[i]); +import{g as ft,c as g,a as v,u as mt,d as ht,s as z,f as I}from"./index-Cp0kcsps.chunk.mjs";import{Y as gt,P as _t,z as K,v as yt,r as M,o as O,f as F,c as N,w as C,k as E,y as T,L as G,j as vt,t as bt,h as wt,F as St,a as It,_ as Mt,e as Y}from"./Web-DYqXJUev.chunk.mjs";import{N as Ot}from"./logger-D3RVzcfQ-Bt9JRPzn.chunk.mjs";import{N as At}from"./TrayArrowDown-Fnpm9Yo9.chunk.mjs";import{N as kt}from"./NcUserStatusIcon-BF5OEQFU-Bh_IaQ_D.chunk.mjs";import{a as Ct}from"./index-mH69OG7L.chunk.mjs";import{t as h}from"./translation-DoG5ZELJ-WOan4U8V.chunk.mjs";import{c as _}from"./index-CkGt55pS.chunk.mjs";import{_ as Et,l as Tt}from"./public-C1mLBHT3.chunk.mjs";import{f as $,n as jt}from"./NcModal-DiDvgcU8-7_SNLMd-.chunk.mjs";import"./createElementId-DhjFt1I9-BmyhoOWk.chunk.mjs";import"./index-CmDAUQql.chunk.mjs";import"./TrashCanOutline-BU3aqDG_.chunk.mjs";import"./mdi-B6W_Xvj-.chunk.mjs";import"./util-DBjHxD9z.chunk.mjs";const q=ft().detectLogLevel().setApp("user_status").build();function Pt(){return X().__VUE_DEVTOOLS_GLOBAL_HOOK__}function X(){return typeof navigator<"u"&&typeof window<"u"?window:typeof globalThis<"u"?globalThis:{}}const xt=typeof Proxy=="function",Lt="devtools-plugin:setup",Dt="plugin:settings:set";let S,x;function Ut(){var t;return S!==void 0||(typeof window<"u"&&window.performance?(S=!0,x=window.performance):typeof globalThis<"u"&&!((t=globalThis.perf_hooks)===null||t===void 0)&&t.performance?(S=!0,x=globalThis.perf_hooks.performance):S=!1),S}function Ft(){return Ut()?x.now():Date.now()}class Nt{constructor(e,s){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=s;const a={};if(e.settings)for(const o in e.settings){const i=e.settings[o];a[o]=i.defaultValue}const n=`__vue-devtools-plugin-settings__${e.id}`;let r=Object.assign({},a);try{const o=localStorage.getItem(n),i=JSON.parse(o);Object.assign(r,i)}catch{}this.fallbacks={getSettings(){return r},setSettings(o){try{localStorage.setItem(n,JSON.stringify(o))}catch{}r=o},now(){return Ft()}},s&&s.on(Dt,(o,i)=>{o===this.plugin.id&&this.fallbacks.setSettings(i)}),this.proxiedOn=new Proxy({},{get:(o,i)=>this.target?this.target.on[i]:(...u)=>{this.onQueue.push({method:i,args:u})}}),this.proxiedTarget=new Proxy({},{get:(o,i)=>this.target?this.target[i]:i==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(i)?(...u)=>(this.targetQueue.push({method:i,args:u,resolve:()=>{}}),this.fallbacks[i](...u)):(...u)=>new Promise(c=>{this.targetQueue.push({method:i,args:u,resolve:c})})})}async setRealTarget(e){this.target=e;for(const s of this.onQueue)this.target.on[s.method](...s.args);for(const s of this.targetQueue)s.resolve(await this.target[s.method](...s.args))}}function Gt(t,e){const s=t,a=X(),n=Pt(),r=xt&&s.enableEarlyProxy;if(n&&(a.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!r))n.emit(Lt,t,e);else{const o=r?new Nt(s,n):null;(a.__VUE_DEVTOOLS_PLUGINS__=a.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:s,setupFn:e,proxy:o}),o&&e(o.proxiedTarget)}}var $t="store";function w(t,e){Object.keys(t).forEach(function(s){return e(t[s],s)})}function Z(t){return t!==null&&typeof t=="object"}function Bt(t){return t&&typeof t.then=="function"}function Vt(t,e){return function(){return t(e)}}function B(t,e,s){return e.indexOf(t)<0&&(s&&s.prepend?e.unshift(t):e.push(t)),function(){var a=e.indexOf(t);a>-1&&e.splice(a,1)}}function V(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var s=t.state;k(t,s,[],t._modules.root,!0),D(t,s,e)}function D(t,e,s){var a=t._state,n=t._scope;t.getters={},t._makeLocalGettersCache=Object.create(null);var r=t._wrappedGetters,o={},i={},u=gt(!0);u.run(function(){w(r,function(c,l){o[l]=Vt(c,t),i[l]=yt(function(){return o[l]()}),Object.defineProperty(t.getters,l,{get:function(){return i[l].value},enumerable:!0})})}),t._state=_t({data:e}),t._scope=u,t.strict&&Jt(t),a&&s&&t._withCommit(function(){a.data=null}),n&&n.stop()}function k(t,e,s,a,n){var r=!s.length,o=t._modules.getNamespace(s);if(a.namespaced&&(t._modulesNamespaceMap[o],t._modulesNamespaceMap[o]=a),!r&&!n){var i=U(e,s.slice(0,-1)),u=s[s.length-1];t._withCommit(function(){i[u]=a.state})}var c=a.context=Ht(t,o,s);a.forEachMutation(function(l,d){var p=o+d;Qt(t,p,l,c)}),a.forEachAction(function(l,d){var p=l.root?d:o+d,pt=l.handler||l;Rt(t,p,pt,c)}),a.forEachGetter(function(l,d){var p=o+d;Wt(t,p,l,c)}),a.forEachChild(function(l,d){k(t,e,s.concat(d),l,n)})}function Ht(t,e,s){var a=e==="",n={dispatch:a?t.dispatch:function(r,o,i){var u=A(r,o,i),c=u.payload,l=u.options,d=u.type;return(!l||!l.root)&&(d=e+d),t.dispatch(d,c)},commit:a?t.commit:function(r,o,i){var u=A(r,o,i),c=u.payload,l=u.options,d=u.type;(!l||!l.root)&&(d=e+d),t.commit(d,c,l)}};return Object.defineProperties(n,{getters:{get:a?function(){return t.getters}:function(){return tt(t,e)}},state:{get:function(){return U(t.state,s)}}}),n}function tt(t,e){if(!t._makeLocalGettersCache[e]){var s={},a=e.length;Object.keys(t.getters).forEach(function(n){if(n.slice(0,a)===e){var r=n.slice(a);Object.defineProperty(s,r,{get:function(){return t.getters[n]},enumerable:!0})}}),t._makeLocalGettersCache[e]=s}return t._makeLocalGettersCache[e]}function Qt(t,e,s,a){var n=t._mutations[e]||(t._mutations[e]=[]);n.push(function(r){s.call(t,a.state,r)})}function Rt(t,e,s,a){var n=t._actions[e]||(t._actions[e]=[]);n.push(function(r){var o=s.call(t,{dispatch:a.dispatch,commit:a.commit,getters:a.getters,state:a.state,rootGetters:t.getters,rootState:t.state},r);return Bt(o)||(o=Promise.resolve(o)),t._devtoolHook?o.catch(function(i){throw t._devtoolHook.emit("vuex:error",i),i}):o})}function Wt(t,e,s,a){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(n){return s(a.state,a.getters,n.state,n.getters)})}function Jt(t){K(function(){return t._state.data},function(){},{deep:!0,flush:"sync"})}function U(t,e){return e.reduce(function(s,a){return s[a]},t)}function A(t,e,s){return Z(t)&&t.type&&(s=e,e=t,t=t.type),{type:t,payload:e,options:s}}var zt="vuex bindings",H="vuex:mutations",j="vuex:actions",b="vuex",Kt=0;function Yt(t,e){Gt({id:"org.vuejs.vuex",app:t,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:[zt]},function(s){s.addTimelineLayer({id:H,label:"Vuex Mutations",color:Q}),s.addTimelineLayer({id:j,label:"Vuex Actions",color:Q}),s.addInspector({id:b,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),s.on.getInspectorTree(function(a){if(a.app===t&&a.inspectorId===b)if(a.filter){var n=[];nt(n,e._modules.root,a.filter,""),a.rootNodes=n}else a.rootNodes=[at(e._modules.root,"")]}),s.on.getInspectorState(function(a){if(a.app===t&&a.inspectorId===b){var n=a.nodeId;tt(e,n),a.state=Zt(ee(e._modules,n),n==="root"?e.getters:e._makeLocalGettersCache,n)}}),s.on.editInspectorState(function(a){if(a.app===t&&a.inspectorId===b){var n=a.nodeId,r=a.path;n!=="root"&&(r=n.split("/").filter(Boolean).concat(r)),e._withCommit(function(){a.set(e._state.data,r,a.state.value)})}}),e.subscribe(function(a,n){var r={};a.payload&&(r.payload=a.payload),r.state=n,s.notifyComponentUpdate(),s.sendInspectorTree(b),s.sendInspectorState(b),s.addTimelineEvent({layerId:H,event:{time:Date.now(),title:a.type,data:r}})}),e.subscribeAction({before:function(a,n){var r={};a.payload&&(r.payload=a.payload),a._id=Kt++,a._time=Date.now(),r.state=n,s.addTimelineEvent({layerId:j,event:{time:a._time,title:a.type,groupId:a._id,subtitle:"start",data:r}})},after:function(a,n){var r={},o=Date.now()-a._time;r.duration={_custom:{type:"duration",display:o+"ms",tooltip:"Action duration",value:o}},a.payload&&(r.payload=a.payload),r.state=n,s.addTimelineEvent({layerId:j,event:{time:Date.now(),title:a.type,groupId:a._id,subtitle:"end",data:r}})}})})}var Q=8702998,qt=6710886,Xt=16777215,et={label:"namespaced",textColor:Xt,backgroundColor:qt};function st(t){return t&&t!=="root"?t.split("/").slice(-2,-1)[0]:"Root"}function at(t,e){return{id:e||"root",label:st(e),tags:t.namespaced?[et]:[],children:Object.keys(t._children).map(function(s){return at(t._children[s],e+s+"/")})}}function nt(t,e,s,a){a.includes(s)&&t.push({id:a||"root",label:a.endsWith("/")?a.slice(0,a.length-1):a||"Root",tags:e.namespaced?[et]:[]}),Object.keys(e._children).forEach(function(n){nt(t,e._children[n],s,a+n+"/")})}function Zt(t,e,s){e=s==="root"?e:e[s];var a=Object.keys(e),n={state:Object.keys(t.state).map(function(o){return{key:o,editable:!0,value:t.state[o]}})};if(a.length){var r=te(e);n.getters=Object.keys(r).map(function(o){return{key:o.endsWith("/")?st(o):o,editable:!1,value:L(function(){return r[o]})}})}return n}function te(t){var e={};return Object.keys(t).forEach(function(s){var a=s.split("/");if(a.length>1){var n=e,r=a.pop();a.forEach(function(o){n[o]||(n[o]={_custom:{value:{},display:o,tooltip:"Module",abstract:!0}}),n=n[o]._custom.value}),n[r]=L(function(){return t[s]})}else e[s]=L(function(){return t[s]})}),e}function ee(t,e){var s=e.split("/").filter(function(a){return a});return s.reduce(function(a,n,r){var o=a[n];if(!o)throw new Error('Missing module "'+n+'" for path "'+e+'".');return r===s.length-1?o:o._children},e==="root"?t:t.root._children)}function L(t){try{return t()}catch(e){return e}}var m=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var s=t.state;this.state=(typeof s=="function"?s():s)||{}},R={namespaced:{configurable:!0}};R.namespaced.get=function(){return!!this._rawModule.namespaced},m.prototype.addChild=function(t,e){this._children[t]=e},m.prototype.removeChild=function(t){delete this._children[t]},m.prototype.getChild=function(t){return this._children[t]},m.prototype.hasChild=function(t){return t in this._children},m.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},m.prototype.forEachChild=function(t){w(this._children,t)},m.prototype.forEachGetter=function(t){this._rawModule.getters&&w(this._rawModule.getters,t)},m.prototype.forEachAction=function(t){this._rawModule.actions&&w(this._rawModule.actions,t)},m.prototype.forEachMutation=function(t){this._rawModule.mutations&&w(this._rawModule.mutations,t)},Object.defineProperties(m.prototype,R);var y=function(t){this.register([],t,!1)};y.prototype.get=function(t){return t.reduce(function(e,s){return e.getChild(s)},this.root)},y.prototype.getNamespace=function(t){var e=this.root;return t.reduce(function(s,a){return e=e.getChild(a),s+(e.namespaced?a+"/":"")},"")},y.prototype.update=function(t){ot([],this.root,t)},y.prototype.register=function(t,e,s){var a=this;s===void 0&&(s=!0);var n=new m(e,s);if(t.length===0)this.root=n;else{var r=this.get(t.slice(0,-1));r.addChild(t[t.length-1],n)}e.modules&&w(e.modules,function(o,i){a.register(t.concat(i),o,s)})},y.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),s=t[t.length-1],a=e.getChild(s);a&&a.runtime&&e.removeChild(s)},y.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),s=t[t.length-1];return e?e.hasChild(s):!1};function ot(t,e,s){if(e.update(s),s.modules)for(var a in s.modules){if(!e.getChild(a))return;ot(t.concat(a),e.getChild(a),s.modules[a])}}function se(t){return new f(t)}var f=function(t){var e=this;t===void 0&&(t={});var s=t.plugins;s===void 0&&(s=[]);var a=t.strict;a===void 0&&(a=!1);var n=t.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new y(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._scope=null,this._devtools=n;var r=this,o=this,i=o.dispatch,u=o.commit;this.dispatch=function(l,d){return i.call(r,l,d)},this.commit=function(l,d,p){return u.call(r,l,d,p)},this.strict=a;var c=this._modules.root.state;k(this,c,[],this._modules.root),D(this,c),s.forEach(function(l){return l(e)})},P={state:{configurable:!0}};f.prototype.install=function(t,e){t.provide(e||$t,this),t.config.globalProperties.$store=this;var s=this._devtools!==void 0?this._devtools:!1;s&&Yt(t,this)},P.state.get=function(){return this._state.data},P.state.set=function(t){},f.prototype.commit=function(t,e,s){var a=this,n=A(t,e,s),r=n.type,o=n.payload,i={type:r,payload:o},u=this._mutations[r];u&&(this._withCommit(function(){u.forEach(function(c){c(o)})}),this._subscribers.slice().forEach(function(c){return c(i,a.state)}))},f.prototype.dispatch=function(t,e){var s=this,a=A(t,e),n=a.type,r=a.payload,o={type:n,payload:r},i=this._actions[n];if(i){try{this._actionSubscribers.slice().filter(function(c){return c.before}).forEach(function(c){return c.before(o,s.state)})}catch{}var u=i.length>1?Promise.all(i.map(function(c){return c(r)})):i[0](r);return new Promise(function(c,l){u.then(function(d){try{s._actionSubscribers.filter(function(p){return p.after}).forEach(function(p){return p.after(o,s.state)})}catch{}c(d)},function(d){try{s._actionSubscribers.filter(function(p){return p.error}).forEach(function(p){return p.error(o,s.state,d)})}catch{}l(d)})})}},f.prototype.subscribe=function(t,e){return B(t,this._subscribers,e)},f.prototype.subscribeAction=function(t,e){var s=typeof t=="function"?{before:t}:t;return B(s,this._actionSubscribers,e)},f.prototype.watch=function(t,e,s){var a=this;return K(function(){return t(a.state,a.getters)},e,Object.assign({},s))},f.prototype.replaceState=function(t){var e=this;this._withCommit(function(){e._state.data=t})},f.prototype.registerModule=function(t,e,s){s===void 0&&(s={}),typeof t=="string"&&(t=[t]),this._modules.register(t,e),k(this,this.state,t,this._modules.get(t),s.preserveState),D(this,this.state)},f.prototype.unregisterModule=function(t){var e=this;typeof t=="string"&&(t=[t]),this._modules.unregister(t),this._withCommit(function(){var s=U(e.state,t.slice(0,-1));delete s[t[t.length-1]]}),V(this)},f.prototype.hasModule=function(t){return typeof t=="string"&&(t=[t]),this._modules.isRegistered(t)},f.prototype.hotUpdate=function(t){this._modules.update(t),V(this,!0)},f.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(f.prototype,P);var ae=it(function(t,e){var s={};return rt(e).forEach(function(a){var n=a.key,r=a.val;s[n]=function(){var o=this.$store.state,i=this.$store.getters;if(t){var u=ut(this.$store,"mapState",t);if(!u)return;o=u.context.state,i=u.context.getters}return typeof r=="function"?r.call(this,o,i):o[r]},s[n].vuex=!0}),s}),es=it(function(t,e){var s={};return rt(e).forEach(function(a){var n=a.key,r=a.val;r=t+r,s[n]=function(){if(!(t&&!ut(this.$store,"mapGetters",t)))return this.$store.getters[r]},s[n].vuex=!0}),s});function rt(t){return ne(t)?Array.isArray(t)?t.map(function(e){return{key:e,val:e}}):Object.keys(t).map(function(e){return{key:e,val:t[e]}}):[]}function ne(t){return Array.isArray(t)||Z(t)}function it(t){return function(e,s){return typeof e!="string"?(s=e,e=""):e.charAt(e.length-1)!=="/"&&(e+="/"),t(e,s)}}function ut(t,e,s){var a=t._modulesNamespaceMap[s];return a}const oe={computed:{...ae({statusType:t=>t.userStatus.status,statusIsUserDefined:t=>t.userStatus.statusIsUserDefined,customIcon:t=>t.userStatus.icon,customMessage:t=>t.userStatus.message}),visibleMessage(){if(this.customIcon&&this.customMessage)return`${this.customIcon} ${this.customMessage}`;if(this.customMessage)return this.customMessage;if(this.statusIsUserDefined)switch(this.statusType){case"online":return h("user_status","Online");case"away":return h("user_status","Away");case"busy":return h("user_status","Busy");case"dnd":return h("user_status","Do not disturb");case"invisible":return h("user_status","Invisible");case"offline":return h("user_status","Offline")}return h("user_status","Set status")}},methods:{async changeStatus(t){try{await this.$store.dispatch("setStatus",{statusType:t})}catch(e){Ct(h("user_status","There was an error saving the new status")),q.debug(e)}}}};async function re(t){const e=g("apps/user_status/api/v1/heartbeat?format=json");return(await _.put(e,{status:t?"away":"online"})).data.ocs.data}const ie="_userStatusMenuItem_1rva6_1",ue="_userStatusIcon_1rva6_6",ce={userStatusMenuItem:ie,userStatusIcon:ue},le={name:"UserStatus",components:{NcButton:Ot,NcListItem:At,NcUserStatusIcon:kt,SetStatusModal:It(()=>Mt(()=>import("./SetStatusModal-B6T5dnOq.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]),import.meta.url))},mixins:[oe],props:{inline:{type:Boolean,default:!1}},data(){return{heartbeatInterval:null,isAway:!1,isModalOpen:!1,mouseMoveListener:null,setAwayTimeout:null}},mounted(){this.$store.dispatch("loadStatusFromInitialState"),OC.config.session_keepalive&&(this.heartbeatInterval=setInterval(this._backgroundHeartbeat.bind(this),1e3*60*5),this.setAwayTimeout=()=>{this.isAway=!0},this.mouseMoveListener=ht(()=>{const t=this.isAway;this.isAway=!1,clearTimeout(this.setAwayTimeout),setTimeout(this.setAwayTimeout,1e3*60*2),t&&this._backgroundHeartbeat()},1e3*2,{immediate:!0}),window.addEventListener("mousemove",this.mouseMoveListener,{capture:!0,passive:!0}),this._backgroundHeartbeat()),z("user_status:status.updated",this.handleUserStatusUpdated)},beforeUnmount(){window.removeEventListener("mouseMove",this.mouseMoveListener),clearInterval(this.heartbeatInterval),mt("user_status:status.updated",this.handleUserStatusUpdated)},methods:{openModal(){this.isModalOpen=!0},closeModal(){this.isModalOpen=!1},async _backgroundHeartbeat(){try{const t=await re(this.isAway);t?.userId?this.$store.dispatch("setStatusFromHeartbeat",t):await this.$store.dispatch("reFetchStatusFromServer")}catch(t){q.debug("Failed sending heartbeat, got: "+t.response?.status)}},handleUserStatusUpdated(t){v()?.uid===t.userId&&this.$store.dispatch("setStatusFromObject",{status:t.status,icon:t.icon,message:t.message})}}},de={key:1};function pe(t,e,s,a,n,r){const o=M("NcUserStatusIcon"),i=M("NcListItem"),u=M("NcButton"),c=M("SetStatusModal");return O(),F(St,null,[s.inline?(O(),F("div",de,[E(u,{onClick:G(r.openModal,["stop"])},{icon:C(()=>[E(o,{class:T(t.$style.userStatusIcon),status:t.statusType,"aria-hidden":"true"},null,8,["class","status"])]),default:C(()=>[vt(" "+bt(t.visibleMessage),1)]),_:1},8,["onClick"])])):(O(),N(i,{key:0,class:T(t.$style.userStatusMenuItem),compact:"",name:t.visibleMessage,onClick:G(r.openModal,["stop"])},{icon:C(()=>[E(o,{class:T(t.$style.userStatusIcon),status:t.statusType,"aria-hidden":"true"},null,8,["class","status"])]),_:1},8,["class","name","onClick"])),n.isModalOpen?(O(),N(c,{key:2,inline:s.inline,onClose:r.closeModal},null,8,["inline","onClose"])):wt("",!0)],64)}const fe={$style:ce},ct=Et(le,[["render",pe],["__cssModules",fe]]);async function me(){const t=g("apps/user_status/api/v1/predefined_statuses?format=json");return(await _.get(t)).data.ocs.data}const he=()=>({predefinedStatuses:[]}),ge={addPredefinedStatus(t,e){t.predefinedStatuses=[...t.predefinedStatuses,e]}},_e={statusesHaveLoaded(t){return t.predefinedStatuses.length>0}},ye={async loadAllPredefinedStatuses({state:t,commit:e}){if(t.predefinedStatuses.length>0)return;const s=await me();for(const a of s)e("addPredefinedStatus",a)}},ve={state:he,mutations:ge,getters:_e,actions:ye};async function be(){const t=g("apps/user_status/api/v1/user_status");return(await _.get(t)).data.ocs.data}async function we(t){const e=g("apps/user_status/api/v1/statuses/{userId}",{userId:"_"+t});return(await _.get(e)).data.ocs.data}async function Se(t){const e=g("apps/user_status/api/v1/user_status/status");await _.put(e,{statusType:t})}async function Ie(t,e=null){const s=g("apps/user_status/api/v1/user_status/message/predefined?format=json");await _.put(s,{messageId:t,clearAt:e})}async function Me(t,e=null,s=null){const a=g("apps/user_status/api/v1/user_status/message/custom?format=json");await _.put(a,{message:t,statusIcon:e,clearAt:s})}async function Oe(){const t=g("apps/user_status/api/v1/user_status/message?format=json");await _.delete(t)}async function Ae(t){const e=g("apps/user_status/api/v1/user_status/revert/{messageId}",{messageId:t});return(await _.delete(e)).data.ocs.data}const ke=()=>({status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null}),Ce={loadBackupStatusFromServer(t,{status:e,statusIsUserDefined:s,message:a,icon:n,clearAt:r,messageIsPredefined:o,messageId:i}){t.status=e,t.message=a,t.icon=n,typeof s<"u"&&(t.statusIsUserDefined=s),typeof r<"u"&&(t.clearAt=r),typeof o<"u"&&(t.messageIsPredefined=o),typeof i<"u"&&(t.messageId=i)}},Ee={},Te={async fetchBackupFromServer({commit:t}){try{const e=await we(v()?.uid);t("loadBackupStatusFromServer",e)}catch{}},async revertBackupFromServer({commit:t},{messageId:e}){const s=await Ae(e);s&&(t("loadBackupStatusFromServer",{}),t("loadStatusFromServer",s),I("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:v()?.uid}))}},je={state:ke,mutations:Ce,getters:Ee,actions:Te};function Pe(){return new Date}function W(t){if(t===null)return null;const e=Pe();if(t.type==="period")return e.setSeconds(e.getSeconds()+t.time),Math.floor(e.getTime()/1e3);if(t.type==="end-of")switch(t.time){case"day":return Math.floor(lt(e).getTime()/1e3);case"week":return Math.floor(xe(e).getTime()/1e3)}return t.type==="_time"?t.time:null}function ss(t){if(t===null)return h("user_status","Don't clear");if(t.type==="end-of")switch(t.time){case"day":return h("user_status","Today");case"week":return h("user_status","This week");default:return null}return t.type==="period"?$(Date.now()+t.time*1e3):t.type==="_time"?$(t.time*1e3):null}function lt(t){const e=new Date(t);return e.setHours(23,59,59,999),e}function xe(t){const e=lt(t);return e.setDate(t.getDate()+(jt()-1-e.getDay()+7)%7),e}const Le=()=>({status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null}),De={setStatus(t,{statusType:e}){t.status=e,t.statusIsUserDefined=!0},setPredefinedMessage(t,{messageId:e,clearAt:s,message:a,icon:n}){t.messageId=e,t.messageIsPredefined=!0,t.message=a,t.icon=n,t.clearAt=s},setCustomMessage(t,{message:e,icon:s,clearAt:a}){t.messageId=null,t.messageIsPredefined=!1,t.message=e,t.icon=s,t.clearAt=a},clearMessage(t){t.messageId=null,t.messageIsPredefined=!1,t.message=null,t.icon=null,t.clearAt=null},loadStatusFromServer(t,{status:e,statusIsUserDefined:s,message:a,icon:n,clearAt:r,messageIsPredefined:o,messageId:i}){t.status=e,t.message=a,t.icon=n,typeof s<"u"&&(t.statusIsUserDefined=s),typeof r<"u"&&(t.clearAt=r),typeof o<"u"&&(t.messageIsPredefined=o),typeof i<"u"&&(t.messageId=i)}},Ue={},Fe={async setStatus({commit:t,state:e},{statusType:s}){await Se(s),t("setStatus",{statusType:s}),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async setStatusFromObject({commit:t},e){t("loadStatusFromServer",e)},async setPredefinedMessage({commit:t,rootState:e,state:s},{messageId:a,clearAt:n}){const r=W(n);await Ie(a,r);const o=e.predefinedStatuses.predefinedStatuses.find(c=>c.id===a),{message:i,icon:u}=o;t("setPredefinedMessage",{messageId:a,clearAt:r,message:i,icon:u}),I("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:v()?.uid})},async setCustomMessage({commit:t,state:e},{message:s,icon:a,clearAt:n}){const r=W(n);await Me(s,a,r),t("setCustomMessage",{message:s,icon:a,clearAt:r}),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async clearMessage({commit:t,state:e}){await Oe(),t("clearMessage"),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async reFetchStatusFromServer({commit:t}){const e=await be();t("loadStatusFromServer",e)},async setStatusFromHeartbeat({commit:t},e){t("loadStatusFromServer",e)},loadStatusFromInitialState({commit:t}){const e=Tt("user_status","status");t("loadStatusFromServer",e)}},Ne={state:Le,mutations:De,getters:Ue,actions:Fe},dt=se({modules:{predefinedStatuses:ve,userStatus:Ne,userBackupStatus:je},strict:!0}),Ge=document.getElementById("user_status-menu-entry");function J(){const t=document.getElementById("user_status-menu-entry"),e=document.createElement("div");e.style.display="contents",t.replaceWith(e),Y(ct).use(dt).mount(e)}Ge?J():z("core:user-menu:mounted",J),document.addEventListener("DOMContentLoaded",function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("status",t=>{Y(ct,{inline:!0}).use(dt).mount(t)})});export{oe as O,ae as a,ss as c,q as l,es as m}; //# sourceMappingURL=user_status-menu.mjs.map diff --git a/dist/user_status-menu.mjs.map b/dist/user_status-menu.mjs.map index a10bb30f2f86b..502bd094f44b2 100644 --- a/dist/user_status-menu.mjs.map +++ b/dist/user_status-menu.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["logger","getLoggerBuilder","getDevtoolsGlobalHook","getTarget","isProxyAvailable","HOOK_SETUP","HOOK_PLUGIN_SETTINGS_SET","supported","perf","isPerformanceSupported","_a","now","ApiProxy","plugin","hook","defaultSettings","id","item","localSettingsSaveId","currentSettings","raw","data","value","pluginId","_target","prop","args","resolve","target","setupDevtoolsPlugin","pluginDescriptor","setupFn","descriptor","enableProxy","proxy","storeKey","forEachValue","obj","fn","key","isObject","isPromise","val","partial","arg","genericSubscribe","subs","options","i","resetStore","store","hot","state","installModule","resetStoreState","oldState","oldScope","wrappedGetters","computedObj","computedCache","scope","effectScope","computed","reactive","enableStrictMode","rootState","path","module","isRoot","namespace","parentState","getNestedState","moduleName","local","makeLocalContext","mutation","namespacedType","registerMutation","action","type","handler","registerAction","getter","registerGetter","child","noNamespace","_type","_payload","_options","unifyObjectStyle","payload","makeLocalGetters","gettersProxy","splitPos","localType","entry","res","err","rawGetter","watch","LABEL_VUEX_BINDINGS","MUTATIONS_LAYER_ID","ACTIONS_LAYER_ID","INSPECTOR_ID","actionId","addDevtools","app","api","COLOR_LIME_500","nodes","flattenStoreForInspectorTree","formatStoreForInspectorTree","modulePath","formatStoreForInspectorState","getStoreModule","duration","COLOR_DARK","COLOR_WHITE","TAG_NAMESPACED","extractNameFromPath","result","filter","getters","gettersKeys","storeState","tree","transformPathsToObjectTree","canThrow","leafKey","p","moduleMap","names","n","cb","Module","rawModule","runtime","rawState","prototypeAccessors$1","ModuleCollection","rawRootModule","update","this$1$1","newModule","parent","rawChildModule","targetModule","createStore","Store","plugins","strict","devtools","ref","dispatch","commit","prototypeAccessors","injectKey","useDevtools","v","sub","reject","error","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","mapGetters","map","isValidMap","helper","OnlineStatusMixin","t","statusType","showError","sendHeartbeat","isAway","url","generateOcsUrl","HttpClient","_sfc_main","NcButton","NcListItem","NcUserStatusIcon","defineAsyncComponent","__vitePreload","debounce","wasAway","subscribe","unsubscribe","status","getCurrentUser","$props","_createElementBlock","_hoisted_1","_createVNode","_component_NcButton","$options","_component_NcUserStatusIcon","_normalizeClass","_ctx","_createTextVNode","_createBlock","_component_NcListItem","$data","_component_SetStatusModal","fetchAllPredefinedStatuses","mutations","actions","statuses","predefinedStatuses","fetchCurrentStatus","fetchBackupStatus","userId","setStatus","setPredefinedMessage","messageId","clearAt","setCustomMessage","message","statusIcon","clearMessage","revertToBackupStatus","statusIsUserDefined","icon","messageIsPredefined","emit","userBackupStatus","dateFactory","getTimestampForClearAt","date","getEndOfDay","getEndOfWeek","clearAtFormat","formatRelativeTime","endOfDay","endOfWeek","getFirstDay","resolvedClearAt","loadState","userStatus","mountPoint","mountMenuEntry","transparentMountPoint","createApp","UserStatus","el"],"ignoreList":[1,2,3,4,5,6],"sources":["../build/frontend/apps/user_status/src/logger.ts","../node_modules/@vue/devtools-api/lib/esm/env.js","../node_modules/@vue/devtools-api/lib/esm/const.js","../node_modules/@vue/devtools-api/lib/esm/time.js","../node_modules/@vue/devtools-api/lib/esm/proxy.js","../node_modules/@vue/devtools-api/lib/esm/index.js","../node_modules/vuex/dist/vuex.esm-bundler.js","../build/frontend/apps/user_status/src/mixins/OnlineStatusMixin.js","../build/frontend/apps/user_status/src/services/heartbeatService.js","../build/frontend/apps/user_status/src/UserStatus.vue","../build/frontend/apps/user_status/src/services/predefinedStatusService.js","../build/frontend/apps/user_status/src/store/predefinedStatuses.js","../build/frontend/apps/user_status/src/services/statusService.js","../build/frontend/apps/user_status/src/store/userBackupStatus.js","../build/frontend/apps/user_status/src/services/dateService.js","../build/frontend/apps/user_status/src/services/clearAtService.js","../build/frontend/apps/user_status/src/store/userStatus.js","../build/frontend/apps/user_status/src/store/index.js","../build/frontend/apps/user_status/src/menu.js"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.detectLogLevel()\n\t.setApp('user_status')\n\t.build()\n","export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-expect-error navigator and windows are not available in all environments\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof globalThis !== 'undefined' && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = globalThis.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return now();\n },\n };\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise((resolve) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n","import { getDevtoolsGlobalHook, getTarget, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy) {\n setupFn(proxy.proxiedTarget);\n }\n }\n}\n","/*!\n * vuex v4.1.0\n * (c) 2022 Evan You\n * @license MIT\n */\nimport { inject, effectScope, reactive, watch, computed } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nvar storeKey = 'store';\n\nfunction useStore (key) {\n if ( key === void 0 ) key = null;\n\n return inject(key !== null ? key : storeKey)\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset state\n resetStoreState(store, state, hot);\n}\n\nfunction resetStoreState (store, state, hot) {\n var oldState = store._state;\n var oldScope = store._scope;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computedObj = {};\n var computedCache = {};\n\n // create a new effect scope and create computed object inside it to avoid\n // getters (computed) getting destroyed on component unmount.\n var scope = effectScope(true);\n\n scope.run(function () {\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldState.\n // using partial to return function with only arguments preserved in closure environment.\n computedObj[key] = partial(fn, store);\n computedCache[key] = computed(function () { return computedObj[key](); });\n Object.defineProperty(store.getters, key, {\n get: function () { return computedCache[key].value; },\n enumerable: true // for local getters\n });\n });\n });\n\n store._state = reactive({\n data: state\n });\n\n // register the newly created effect scope to the store so that we can\n // dispose the effects when this method runs again in the future.\n store._scope = scope;\n\n // enable strict mode for new state\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldState) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldState.data = null;\n });\n }\n }\n\n // dispose previously registered effect scope if there is one.\n if (oldScope) {\n oldScope.stop();\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n parentState[moduleName] = module.state;\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by state update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n watch(function () { return store._state.data; }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, flush: 'sync' });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nvar LABEL_VUEX_BINDINGS = 'vuex bindings';\nvar MUTATIONS_LAYER_ID = 'vuex:mutations';\nvar ACTIONS_LAYER_ID = 'vuex:actions';\nvar INSPECTOR_ID = 'vuex';\n\nvar actionId = 0;\n\nfunction addDevtools (app, store) {\n setupDevtoolsPlugin(\n {\n id: 'org.vuejs.vuex',\n app: app,\n label: 'Vuex',\n homepage: 'https://next.vuex.vuejs.org/',\n logo: 'https://vuejs.org/images/icons/favicon-96x96.png',\n packageName: 'vuex',\n componentStateTypes: [LABEL_VUEX_BINDINGS]\n },\n function (api) {\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: 'Vuex Mutations',\n color: COLOR_LIME_500\n });\n\n api.addTimelineLayer({\n id: ACTIONS_LAYER_ID,\n label: 'Vuex Actions',\n color: COLOR_LIME_500\n });\n\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Vuex',\n icon: 'storage',\n treeFilterPlaceholder: 'Filter stores...'\n });\n\n api.on.getInspectorTree(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n if (payload.filter) {\n var nodes = [];\n flattenStoreForInspectorTree(nodes, store._modules.root, payload.filter, '');\n payload.rootNodes = nodes;\n } else {\n payload.rootNodes = [\n formatStoreForInspectorTree(store._modules.root, '')\n ];\n }\n }\n });\n\n api.on.getInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n makeLocalGetters(store, modulePath);\n payload.state = formatStoreForInspectorState(\n getStoreModule(store._modules, modulePath),\n modulePath === 'root' ? store.getters : store._makeLocalGettersCache,\n modulePath\n );\n }\n });\n\n api.on.editInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n var path = payload.path;\n if (modulePath !== 'root') {\n path = modulePath.split('/').filter(Boolean).concat( path);\n }\n store._withCommit(function () {\n payload.set(store._state.data, path, payload.state.value);\n });\n }\n });\n\n store.subscribe(function (mutation, state) {\n var data = {};\n\n if (mutation.payload) {\n data.payload = mutation.payload;\n }\n\n data.state = state;\n\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: mutation.type,\n data: data\n }\n });\n });\n\n store.subscribeAction({\n before: function (action, state) {\n var data = {};\n if (action.payload) {\n data.payload = action.payload;\n }\n action._id = actionId++;\n action._time = Date.now();\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: action._time,\n title: action.type,\n groupId: action._id,\n subtitle: 'start',\n data: data\n }\n });\n },\n after: function (action, state) {\n var data = {};\n var duration = Date.now() - action._time;\n data.duration = {\n _custom: {\n type: 'duration',\n display: (duration + \"ms\"),\n tooltip: 'Action duration',\n value: duration\n }\n };\n if (action.payload) {\n data.payload = action.payload;\n }\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: action.type,\n groupId: action._id,\n subtitle: 'end',\n data: data\n }\n });\n }\n });\n }\n );\n}\n\n// extracted from tailwind palette\nvar COLOR_LIME_500 = 0x84cc16;\nvar COLOR_DARK = 0x666666;\nvar COLOR_WHITE = 0xffffff;\n\nvar TAG_NAMESPACED = {\n label: 'namespaced',\n textColor: COLOR_WHITE,\n backgroundColor: COLOR_DARK\n};\n\n/**\n * @param {string} path\n */\nfunction extractNameFromPath (path) {\n return path && path !== 'root' ? path.split('/').slice(-2, -1)[0] : 'Root'\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorNode}\n */\nfunction formatStoreForInspectorTree (module, path) {\n return {\n id: path || 'root',\n // all modules end with a `/`, we want the last segment only\n // cart/ -> cart\n // nested/cart/ -> cart\n label: extractNameFromPath(path),\n tags: module.namespaced ? [TAG_NAMESPACED] : [],\n children: Object.keys(module._children).map(function (moduleName) { return formatStoreForInspectorTree(\n module._children[moduleName],\n path + moduleName + '/'\n ); }\n )\n }\n}\n\n/**\n * @param {import('@vue/devtools-api').CustomInspectorNode[]} result\n * @param {*} module\n * @param {string} filter\n * @param {string} path\n */\nfunction flattenStoreForInspectorTree (result, module, filter, path) {\n if (path.includes(filter)) {\n result.push({\n id: path || 'root',\n label: path.endsWith('/') ? path.slice(0, path.length - 1) : path || 'Root',\n tags: module.namespaced ? [TAG_NAMESPACED] : []\n });\n }\n Object.keys(module._children).forEach(function (moduleName) {\n flattenStoreForInspectorTree(result, module._children[moduleName], filter, path + moduleName + '/');\n });\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorState}\n */\nfunction formatStoreForInspectorState (module, getters, path) {\n getters = path === 'root' ? getters : getters[path];\n var gettersKeys = Object.keys(getters);\n var storeState = {\n state: Object.keys(module.state).map(function (key) { return ({\n key: key,\n editable: true,\n value: module.state[key]\n }); })\n };\n\n if (gettersKeys.length) {\n var tree = transformPathsToObjectTree(getters);\n storeState.getters = Object.keys(tree).map(function (key) { return ({\n key: key.endsWith('/') ? extractNameFromPath(key) : key,\n editable: false,\n value: canThrow(function () { return tree[key]; })\n }); });\n }\n\n return storeState\n}\n\nfunction transformPathsToObjectTree (getters) {\n var result = {};\n Object.keys(getters).forEach(function (key) {\n var path = key.split('/');\n if (path.length > 1) {\n var target = result;\n var leafKey = path.pop();\n path.forEach(function (p) {\n if (!target[p]) {\n target[p] = {\n _custom: {\n value: {},\n display: p,\n tooltip: 'Module',\n abstract: true\n }\n };\n }\n target = target[p]._custom.value;\n });\n target[leafKey] = canThrow(function () { return getters[key]; });\n } else {\n result[key] = canThrow(function () { return getters[key]; });\n }\n });\n return result\n}\n\nfunction getStoreModule (moduleMap, path) {\n var names = path.split('/').filter(function (n) { return n; });\n return names.reduce(\n function (module, moduleName, i) {\n var child = module[moduleName];\n if (!child) {\n throw new Error((\"Missing module \\\"\" + moduleName + \"\\\" for path \\\"\" + path + \"\\\".\"))\n }\n return i === names.length - 1 ? child : child._children\n },\n path === 'root' ? moduleMap : moduleMap.root._children\n )\n}\n\nfunction canThrow (cb) {\n try {\n return cb()\n } catch (e) {\n return e\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors$1 = { namespaced: { configurable: true } };\n\nprototypeAccessors$1.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors$1 );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nfunction createStore (options) {\n return new Store(options)\n}\n\nvar Store = function Store (options) {\n var this$1$1 = this;\n if ( options === void 0 ) options = {};\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n var devtools = options.devtools;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._makeLocalGettersCache = Object.create(null);\n\n // EffectScope instance. when registering new getters, we wrap them inside\n // EffectScope so that getters (computed) would not be destroyed on\n // component unmount.\n this._scope = null;\n\n this._devtools = devtools;\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store state, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreState(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1$1); });\n};\n\nvar prototypeAccessors = { state: { configurable: true } };\n\nStore.prototype.install = function install (app, injectKey) {\n app.provide(injectKey || storeKey, this);\n app.config.globalProperties.$store = this;\n\n var useDevtools = this._devtools !== undefined\n ? this._devtools\n : (process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__;\n\n if (useDevtools) {\n addDevtools(app, this);\n }\n};\n\nprototypeAccessors.state.get = function () {\n return this._state.data\n};\n\nprototypeAccessors.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch$1 (getter, cb, options) {\n var this$1$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return watch(function () { return getter(this$1$1.state, this$1$1.getters); }, cb, Object.assign({}, options))\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1$1 = this;\n\n this._withCommit(function () {\n this$1$1._state.data = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreState(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1$1.state, path.slice(0, -1));\n delete parentState[path[path.length - 1]];\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors );\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n version: '4.1.0',\n Store: Store,\n storeKey: storeKey,\n createStore: createStore,\n useStore: useStore,\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, createStore, mapActions, mapGetters, mapMutations, mapState, storeKey, useStore };\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\nimport { mapState } from 'vuex'\nimport { logger } from '../logger.ts'\n\nexport default {\n\tcomputed: {\n\t\t...mapState({\n\t\t\tstatusType: (state) => state.userStatus.status,\n\t\t\tstatusIsUserDefined: (state) => state.userStatus.statusIsUserDefined,\n\t\t\tcustomIcon: (state) => state.userStatus.icon,\n\t\t\tcustomMessage: (state) => state.userStatus.message,\n\t\t}),\n\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tvisibleMessage() {\n\t\t\tif (this.customIcon && this.customMessage) {\n\t\t\t\treturn `${this.customIcon} ${this.customMessage}`\n\t\t\t}\n\n\t\t\tif (this.customMessage) {\n\t\t\t\treturn this.customMessage\n\t\t\t}\n\n\t\t\tif (this.statusIsUserDefined) {\n\t\t\t\tswitch (this.statusType) {\n\t\t\t\t\tcase 'online':\n\t\t\t\t\t\treturn t('user_status', 'Online')\n\n\t\t\t\t\tcase 'away':\n\t\t\t\t\t\treturn t('user_status', 'Away')\n\n\t\t\t\t\tcase 'busy':\n\t\t\t\t\t\treturn t('user_status', 'Busy')\n\n\t\t\t\t\tcase 'dnd':\n\t\t\t\t\t\treturn t('user_status', 'Do not disturb')\n\n\t\t\t\t\tcase 'invisible':\n\t\t\t\t\t\treturn t('user_status', 'Invisible')\n\n\t\t\t\t\tcase 'offline':\n\t\t\t\t\t\treturn t('user_status', 'Offline')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn t('user_status', 'Set status')\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Changes the user-status\n\t\t *\n\t\t * @param {string} statusType (online / away / dnd / invisible)\n\t\t */\n\t\tasync changeStatus(statusType) {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setStatus', { statusType })\n\t\t\t} catch (err) {\n\t\t\t\tshowError(t('user_status', 'There was an error saving the new status'))\n\t\t\t\tlogger.debug(err)\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Sends a heartbeat\n *\n * @param {boolean} isAway Whether or not the user is active\n * @return {Promise}\n */\nasync function sendHeartbeat(isAway) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/heartbeat?format=json')\n\tconst response = await HttpClient.put(url, {\n\t\tstatus: isAway ? 'away' : 'online',\n\t})\n\treturn response.data.ocs.data\n}\n\nexport {\n\tsendHeartbeat,\n}\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches all predefined statuses from the server\n *\n * @return {Promise}\n */\nasync function fetchAllPredefinedStatuses() {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/predefined_statuses?format=json')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tfetchAllPredefinedStatuses,\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { fetchAllPredefinedStatuses } from '../services/predefinedStatusService.js'\n\n// eslint-disable-next-line antfu/top-level-function\nconst state = () => ({\n\tpredefinedStatuses: [],\n})\n\nconst mutations = {\n\n\t/**\n\t * Adds a predefined status to the state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} status The status to add\n\t */\n\taddPredefinedStatus(state, status) {\n\t\tstate.predefinedStatuses = [...state.predefinedStatuses, status]\n\t},\n}\n\nconst getters = {\n\tstatusesHaveLoaded(state) {\n\t\treturn state.predefinedStatuses.length > 0\n\t},\n}\n\nconst actions = {\n\n\t/**\n\t * Loads all predefined statuses from the server\n\t *\n\t * @param {object} vuex The Vuex components\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state -\n\t */\n\tasync loadAllPredefinedStatuses({ state, commit }) {\n\t\tif (state.predefinedStatuses.length > 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst statuses = await fetchAllPredefinedStatuses()\n\t\tfor (const status of statuses) {\n\t\t\tcommit('addPredefinedStatus', status)\n\t\t}\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches the current user-status\n *\n * @return {Promise}\n */\nasync function fetchCurrentStatus() {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the current user-status\n *\n * @param {string} userId Id of the user to fetch the status\n * @return {Promise}\n */\nasync function fetchBackupStatus(userId) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/statuses/{userId}', { userId: '_' + userId })\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Sets the status\n *\n * @param {string} statusType The status (online / away / dnd / invisible)\n * @return {Promise}\n */\nasync function setStatus(statusType) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/status')\n\tawait HttpClient.put(url, {\n\t\tstatusType,\n\t})\n}\n\n/**\n * Sets a message based on our predefined statuses\n *\n * @param {string} messageId The id of the message, taken from predefined status service\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise}\n */\nasync function setPredefinedMessage(messageId, clearAt = null) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/predefined?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessageId,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Sets a custom message\n *\n * @param {string} message The user-defined message\n * @param {string | null} statusIcon The user-defined icon\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise}\n */\nasync function setCustomMessage(message, statusIcon = null, clearAt = null) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/custom?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessage,\n\t\tstatusIcon,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Clears the current status of the user\n *\n * @return {Promise}\n */\nasync function clearMessage() {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message?format=json')\n\tawait HttpClient.delete(url)\n}\n\n/**\n * Revert the automated status\n *\n * @param {string} messageId ID of the message to revert\n * @return {Promise}\n */\nasync function revertToBackupStatus(messageId) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/revert/{messageId}', { messageId })\n\tconst response = await HttpClient.delete(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tclearMessage,\n\tfetchBackupStatus,\n\tfetchCurrentStatus,\n\trevertToBackupStatus,\n\tsetCustomMessage,\n\tsetPredefinedMessage,\n\tsetStatus,\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\nimport {\n\tfetchBackupStatus,\n\trevertToBackupStatus,\n} from '../services/statusService.js'\n\n// eslint-disable-next-line antfu/top-level-function\nconst state = () => ({\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n})\n\nconst mutations = {\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadBackupStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise}\n\t */\n\tasync fetchBackupFromServer({ commit }) {\n\t\ttry {\n\t\t\tconst status = await fetchBackupStatus(getCurrentUser()?.uid)\n\t\t\tcommit('loadBackupStatusFromServer', status)\n\t\t} catch {\n\t\t\t// Ignore missing user backup status\n\t\t}\n\t},\n\n\tasync revertBackupFromServer({ commit }, { messageId }) {\n\t\tconst status = await revertToBackupStatus(messageId)\n\t\tif (status) {\n\t\t\tcommit('loadBackupStatusFromServer', {})\n\t\t\tcommit('loadStatusFromServer', status)\n\t\t\temit('user_status:status.updated', {\n\t\t\t\tstatus: status.status,\n\t\t\t\tmessage: status.message,\n\t\t\t\ticon: status.icon,\n\t\t\t\tclearAt: status.clearAt,\n\t\t\t\tuserId: getCurrentUser()?.uid,\n\t\t\t})\n\t\t}\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n *\n */\nfunction dateFactory() {\n\treturn new Date()\n}\n\nexport {\n\tdateFactory,\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { formatRelativeTime, getFirstDay, t } from '@nextcloud/l10n'\nimport { dateFactory } from './dateService.js'\n\n/**\n * Calculates the actual clearAt timestamp\n *\n * @param {object | null} clearAt The clear-at config\n * @return {number | null}\n */\nexport function getTimestampForClearAt(clearAt) {\n\tif (clearAt === null) {\n\t\treturn null\n\t}\n\n\tconst date = dateFactory()\n\n\tif (clearAt.type === 'period') {\n\t\tdate.setSeconds(date.getSeconds() + clearAt.time)\n\t\treturn Math.floor(date.getTime() / 1000)\n\t}\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\t\tcase 'day':\n\t\t\t\treturn Math.floor(getEndOfDay(date).getTime() / 1000)\n\t\t\tcase 'week':\n\t\t\t\treturn Math.floor(getEndOfWeek(date).getTime() / 1000)\n\t\t}\n\t}\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\treturn clearAt.time\n\t}\n\n\treturn null\n}\n\n/**\n * Formats a clearAt object to be human readable\n *\n * @param {object} clearAt The clearAt object\n * @return {string|null}\n */\nexport function clearAtFormat(clearAt) {\n\tif (clearAt === null) {\n\t\treturn t('user_status', 'Don\\'t clear')\n\t}\n\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\t\tcase 'day':\n\t\t\t\treturn t('user_status', 'Today')\n\t\t\tcase 'week':\n\t\t\t\treturn t('user_status', 'This week')\n\n\t\t\tdefault:\n\t\t\t\treturn null\n\t\t}\n\t}\n\n\tif (clearAt.type === 'period') {\n\t\treturn formatRelativeTime(Date.now() + clearAt.time * 1000)\n\t}\n\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\treturn formatRelativeTime(clearAt.time * 1000)\n\t}\n\n\treturn null\n}\n\n/**\n * @param {Date} date - The date to calculate the end of the day for\n */\nfunction getEndOfDay(date) {\n\tconst endOfDay = new Date(date)\n\tendOfDay.setHours(23, 59, 59, 999)\n\treturn endOfDay\n}\n\n/**\n * Calculates the end of the week for a given date\n *\n * @param {Date} date - The date to calculate the end of the week for\n */\nfunction getEndOfWeek(date) {\n\tconst endOfWeek = getEndOfDay(date)\n\tendOfWeek.setDate(date.getDate() + ((getFirstDay() - 1 - endOfWeek.getDay() + 7) % 7))\n\treturn endOfWeek\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getTimestampForClearAt } from '../services/clearAtService.js'\nimport {\n\tclearMessage,\n\tfetchCurrentStatus,\n\tsetCustomMessage,\n\tsetPredefinedMessage,\n\tsetStatus,\n} from '../services/statusService.js'\n\n// eslint-disable-next-line antfu/top-level-function\nconst state = () => ({\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n})\n\nconst mutations = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.statusType The new status type\n\t */\n\tsetStatus(state, { statusType }) {\n\t\tstate.status = statusType\n\t\tstate.statusIsUserDefined = true\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {number | null} data.clearAt When to automatically clear the status\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t */\n\tsetPredefinedMessage(state, { messageId, clearAt, message, icon }) {\n\t\tstate.messageId = messageId\n\t\tstate.messageIsPredefined = true\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t */\n\tsetCustomMessage(state, { message, icon, clearAt }) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} state The Vuex state\n\t */\n\tclearMessage(state) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = null\n\t\tstate.icon = null\n\t\tstate.clearAt = null\n\t},\n\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.statusType The new status type\n\t * @return {Promise}\n\t */\n\tasync setStatus({ commit, state }, { statusType }) {\n\t\tawait setStatus(statusType)\n\t\tcommit('setStatus', { statusType })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Update status from 'user_status:status.updated' update.\n\t * This doesn't trigger another 'user_status:status.updated'\n\t * event.\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {string} status The new status\n\t * @return {Promise}\n\t */\n\tasync setStatusFromObject({ commit }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} vuex.rootState The Vuex root state\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise}\n\t */\n\tasync setPredefinedMessage({ commit, rootState, state }, { messageId, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setPredefinedMessage(messageId, resolvedClearAt)\n\t\tconst status = rootState.predefinedStatuses.predefinedStatuses.find((status) => status.id === messageId)\n\t\tconst { message, icon } = status\n\n\t\tcommit('setPredefinedMessage', { messageId, clearAt: resolvedClearAt, message, icon })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise}\n\t */\n\tasync setCustomMessage({ commit, state }, { message, icon, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setCustomMessage(message, icon, resolvedClearAt)\n\t\tcommit('setCustomMessage', { message, icon, clearAt: resolvedClearAt })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @return {Promise}\n\t */\n\tasync clearMessage({ commit, state }) {\n\t\tawait clearMessage()\n\t\tcommit('clearMessage')\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise}\n\t */\n\tasync reFetchStatusFromServer({ commit }) {\n\t\tconst status = await fetchCurrentStatus()\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Stores the status we got in the reply of the heartbeat\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} status The data destructuring object\n\t * @param {string} status.status The status type\n\t * @param {boolean} status.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} status.message The message\n\t * @param {string} status.icon The icon\n\t * @param {number} status.clearAt When to automatically clear the status\n\t * @param {boolean} status.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} status.messageId The id of the predefined message\n\t * @return {Promise}\n\t */\n\tasync setStatusFromHeartbeat({ commit }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Loads the server from the initial state\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t */\n\tloadStatusFromInitialState({ commit }) {\n\t\tconst status = loadState('user_status', 'status')\n\t\tcommit('loadStatusFromServer', status)\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createStore } from 'vuex'\nimport predefinedStatuses from './predefinedStatuses.js'\nimport userBackupStatus from './userBackupStatus.js'\nimport userStatus from './userStatus.js'\n\nexport default createStore({\n\tmodules: {\n\t\tpredefinedStatuses,\n\t\tuserStatus,\n\t\tuserBackupStatus,\n\t},\n\tstrict: true,\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\nimport { createApp } from 'vue'\nimport UserStatus from './UserStatus.vue'\nimport store from './store/index.js'\n\nimport './user-status-icons.css'\n\nconst mountPoint = document.getElementById('user_status-menu-entry')\n\n/**\n *\n */\nfunction mountMenuEntry() {\n\tconst mountPoint = document.getElementById('user_status-menu-entry')\n\t// TODO: fix me after Core migration to Vue 3\n\t// In Vue 2 menu items were mounted in place to the menu items\n\t// In Vue 3 they are mounted inside the menu item\n\t// A workaround - replace the menu item with \"display: contents\" div\n\tconst transparentMountPoint = document.createElement('div')\n\ttransparentMountPoint.style.display = 'contents'\n\tmountPoint.replaceWith(transparentMountPoint)\n\n\tcreateApp(UserStatus)\n\t\t.use(store)\n\t\t.mount(transparentMountPoint)\n}\n\nif (mountPoint) {\n\tmountMenuEntry()\n} else {\n\tsubscribe('core:user-menu:mounted', mountMenuEntry)\n}\n\n// Register dashboard status\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('status', (el) => {\n\t\tcreateApp(UserStatus, {\n\t\t\tinline: true,\n\t\t})\n\t\t\t.use(store)\n\t\t\t.mount(el)\n\t})\n})\n"],"file":"user_status-menu.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["logger","getLoggerBuilder","getDevtoolsGlobalHook","getTarget","isProxyAvailable","HOOK_SETUP","HOOK_PLUGIN_SETTINGS_SET","supported","perf","isPerformanceSupported","_a","now","ApiProxy","plugin","hook","defaultSettings","id","item","localSettingsSaveId","currentSettings","raw","data","value","pluginId","_target","prop","args","resolve","target","setupDevtoolsPlugin","pluginDescriptor","setupFn","descriptor","enableProxy","proxy","storeKey","forEachValue","obj","fn","key","isObject","isPromise","val","partial","arg","genericSubscribe","subs","options","i","resetStore","store","hot","state","installModule","resetStoreState","oldState","oldScope","wrappedGetters","computedObj","computedCache","scope","effectScope","computed","reactive","enableStrictMode","rootState","path","module","isRoot","namespace","parentState","getNestedState","moduleName","local","makeLocalContext","mutation","namespacedType","registerMutation","action","type","handler","registerAction","getter","registerGetter","child","noNamespace","_type","_payload","_options","unifyObjectStyle","payload","makeLocalGetters","gettersProxy","splitPos","localType","entry","res","err","rawGetter","watch","LABEL_VUEX_BINDINGS","MUTATIONS_LAYER_ID","ACTIONS_LAYER_ID","INSPECTOR_ID","actionId","addDevtools","app","api","COLOR_LIME_500","nodes","flattenStoreForInspectorTree","formatStoreForInspectorTree","modulePath","formatStoreForInspectorState","getStoreModule","duration","COLOR_DARK","COLOR_WHITE","TAG_NAMESPACED","extractNameFromPath","result","filter","getters","gettersKeys","storeState","tree","transformPathsToObjectTree","canThrow","leafKey","p","moduleMap","names","n","cb","Module","rawModule","runtime","rawState","prototypeAccessors$1","ModuleCollection","rawRootModule","update","this$1$1","newModule","parent","rawChildModule","targetModule","createStore","Store","plugins","strict","devtools","ref","dispatch","commit","prototypeAccessors","injectKey","useDevtools","v","sub","reject","error","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","mapGetters","map","isValidMap","helper","OnlineStatusMixin","t","statusType","showError","sendHeartbeat","isAway","url","generateOcsUrl","HttpClient","_sfc_main","NcButton","NcListItem","NcUserStatusIcon","defineAsyncComponent","__vitePreload","debounce","wasAway","subscribe","unsubscribe","status","getCurrentUser","$props","_createElementBlock","_hoisted_1","_createVNode","_component_NcButton","$options","_component_NcUserStatusIcon","_normalizeClass","_ctx","_createTextVNode","_createBlock","_component_NcListItem","$data","_component_SetStatusModal","fetchAllPredefinedStatuses","mutations","actions","statuses","predefinedStatuses","fetchCurrentStatus","fetchBackupStatus","userId","setStatus","setPredefinedMessage","messageId","clearAt","setCustomMessage","message","statusIcon","clearMessage","revertToBackupStatus","statusIsUserDefined","icon","messageIsPredefined","emit","userBackupStatus","dateFactory","getTimestampForClearAt","date","getEndOfDay","getEndOfWeek","clearAtFormat","formatRelativeTime","endOfDay","endOfWeek","getFirstDay","resolvedClearAt","loadState","userStatus","mountPoint","mountMenuEntry","transparentMountPoint","createApp","UserStatus","el"],"ignoreList":[1,2,3,4,5,6],"sources":["../build/frontend/apps/user_status/src/logger.ts","../node_modules/@vue/devtools-api/lib/esm/env.js","../node_modules/@vue/devtools-api/lib/esm/const.js","../node_modules/@vue/devtools-api/lib/esm/time.js","../node_modules/@vue/devtools-api/lib/esm/proxy.js","../node_modules/@vue/devtools-api/lib/esm/index.js","../node_modules/vuex/dist/vuex.esm-bundler.js","../build/frontend/apps/user_status/src/mixins/OnlineStatusMixin.js","../build/frontend/apps/user_status/src/services/heartbeatService.js","../build/frontend/apps/user_status/src/UserStatus.vue","../build/frontend/apps/user_status/src/services/predefinedStatusService.js","../build/frontend/apps/user_status/src/store/predefinedStatuses.js","../build/frontend/apps/user_status/src/services/statusService.js","../build/frontend/apps/user_status/src/store/userBackupStatus.js","../build/frontend/apps/user_status/src/services/dateService.js","../build/frontend/apps/user_status/src/services/clearAtService.js","../build/frontend/apps/user_status/src/store/userStatus.js","../build/frontend/apps/user_status/src/store/index.js","../build/frontend/apps/user_status/src/menu.js"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.detectLogLevel()\n\t.setApp('user_status')\n\t.build()\n","export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-expect-error navigator and windows are not available in all environments\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof globalThis !== 'undefined' && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = globalThis.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","import { HOOK_PLUGIN_SETTINGS_SET } from './const.js';\nimport { now } from './time.js';\nexport class ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return now();\n },\n };\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise((resolve) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n","import { getDevtoolsGlobalHook, getTarget, isProxyAvailable } from './env.js';\nimport { HOOK_SETUP } from './const.js';\nimport { ApiProxy } from './proxy.js';\nexport * from './api/index.js';\nexport * from './plugin.js';\nexport * from './time.js';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy) {\n setupFn(proxy.proxiedTarget);\n }\n }\n}\n","/*!\n * vuex v4.1.0\n * (c) 2022 Evan You\n * @license MIT\n */\nimport { inject, effectScope, reactive, watch, computed } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nvar storeKey = 'store';\n\nfunction useStore (key) {\n if ( key === void 0 ) key = null;\n\n return inject(key !== null ? key : storeKey)\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset state\n resetStoreState(store, state, hot);\n}\n\nfunction resetStoreState (store, state, hot) {\n var oldState = store._state;\n var oldScope = store._scope;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computedObj = {};\n var computedCache = {};\n\n // create a new effect scope and create computed object inside it to avoid\n // getters (computed) getting destroyed on component unmount.\n var scope = effectScope(true);\n\n scope.run(function () {\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldState.\n // using partial to return function with only arguments preserved in closure environment.\n computedObj[key] = partial(fn, store);\n computedCache[key] = computed(function () { return computedObj[key](); });\n Object.defineProperty(store.getters, key, {\n get: function () { return computedCache[key].value; },\n enumerable: true // for local getters\n });\n });\n });\n\n store._state = reactive({\n data: state\n });\n\n // register the newly created effect scope to the store so that we can\n // dispose the effects when this method runs again in the future.\n store._scope = scope;\n\n // enable strict mode for new state\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldState) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldState.data = null;\n });\n }\n }\n\n // dispose previously registered effect scope if there is one.\n if (oldScope) {\n oldScope.stop();\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n parentState[moduleName] = module.state;\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by state update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n watch(function () { return store._state.data; }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, flush: 'sync' });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nvar LABEL_VUEX_BINDINGS = 'vuex bindings';\nvar MUTATIONS_LAYER_ID = 'vuex:mutations';\nvar ACTIONS_LAYER_ID = 'vuex:actions';\nvar INSPECTOR_ID = 'vuex';\n\nvar actionId = 0;\n\nfunction addDevtools (app, store) {\n setupDevtoolsPlugin(\n {\n id: 'org.vuejs.vuex',\n app: app,\n label: 'Vuex',\n homepage: 'https://next.vuex.vuejs.org/',\n logo: 'https://vuejs.org/images/icons/favicon-96x96.png',\n packageName: 'vuex',\n componentStateTypes: [LABEL_VUEX_BINDINGS]\n },\n function (api) {\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: 'Vuex Mutations',\n color: COLOR_LIME_500\n });\n\n api.addTimelineLayer({\n id: ACTIONS_LAYER_ID,\n label: 'Vuex Actions',\n color: COLOR_LIME_500\n });\n\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Vuex',\n icon: 'storage',\n treeFilterPlaceholder: 'Filter stores...'\n });\n\n api.on.getInspectorTree(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n if (payload.filter) {\n var nodes = [];\n flattenStoreForInspectorTree(nodes, store._modules.root, payload.filter, '');\n payload.rootNodes = nodes;\n } else {\n payload.rootNodes = [\n formatStoreForInspectorTree(store._modules.root, '')\n ];\n }\n }\n });\n\n api.on.getInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n makeLocalGetters(store, modulePath);\n payload.state = formatStoreForInspectorState(\n getStoreModule(store._modules, modulePath),\n modulePath === 'root' ? store.getters : store._makeLocalGettersCache,\n modulePath\n );\n }\n });\n\n api.on.editInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n var path = payload.path;\n if (modulePath !== 'root') {\n path = modulePath.split('/').filter(Boolean).concat( path);\n }\n store._withCommit(function () {\n payload.set(store._state.data, path, payload.state.value);\n });\n }\n });\n\n store.subscribe(function (mutation, state) {\n var data = {};\n\n if (mutation.payload) {\n data.payload = mutation.payload;\n }\n\n data.state = state;\n\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: mutation.type,\n data: data\n }\n });\n });\n\n store.subscribeAction({\n before: function (action, state) {\n var data = {};\n if (action.payload) {\n data.payload = action.payload;\n }\n action._id = actionId++;\n action._time = Date.now();\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: action._time,\n title: action.type,\n groupId: action._id,\n subtitle: 'start',\n data: data\n }\n });\n },\n after: function (action, state) {\n var data = {};\n var duration = Date.now() - action._time;\n data.duration = {\n _custom: {\n type: 'duration',\n display: (duration + \"ms\"),\n tooltip: 'Action duration',\n value: duration\n }\n };\n if (action.payload) {\n data.payload = action.payload;\n }\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: action.type,\n groupId: action._id,\n subtitle: 'end',\n data: data\n }\n });\n }\n });\n }\n );\n}\n\n// extracted from tailwind palette\nvar COLOR_LIME_500 = 0x84cc16;\nvar COLOR_DARK = 0x666666;\nvar COLOR_WHITE = 0xffffff;\n\nvar TAG_NAMESPACED = {\n label: 'namespaced',\n textColor: COLOR_WHITE,\n backgroundColor: COLOR_DARK\n};\n\n/**\n * @param {string} path\n */\nfunction extractNameFromPath (path) {\n return path && path !== 'root' ? path.split('/').slice(-2, -1)[0] : 'Root'\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorNode}\n */\nfunction formatStoreForInspectorTree (module, path) {\n return {\n id: path || 'root',\n // all modules end with a `/`, we want the last segment only\n // cart/ -> cart\n // nested/cart/ -> cart\n label: extractNameFromPath(path),\n tags: module.namespaced ? [TAG_NAMESPACED] : [],\n children: Object.keys(module._children).map(function (moduleName) { return formatStoreForInspectorTree(\n module._children[moduleName],\n path + moduleName + '/'\n ); }\n )\n }\n}\n\n/**\n * @param {import('@vue/devtools-api').CustomInspectorNode[]} result\n * @param {*} module\n * @param {string} filter\n * @param {string} path\n */\nfunction flattenStoreForInspectorTree (result, module, filter, path) {\n if (path.includes(filter)) {\n result.push({\n id: path || 'root',\n label: path.endsWith('/') ? path.slice(0, path.length - 1) : path || 'Root',\n tags: module.namespaced ? [TAG_NAMESPACED] : []\n });\n }\n Object.keys(module._children).forEach(function (moduleName) {\n flattenStoreForInspectorTree(result, module._children[moduleName], filter, path + moduleName + '/');\n });\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorState}\n */\nfunction formatStoreForInspectorState (module, getters, path) {\n getters = path === 'root' ? getters : getters[path];\n var gettersKeys = Object.keys(getters);\n var storeState = {\n state: Object.keys(module.state).map(function (key) { return ({\n key: key,\n editable: true,\n value: module.state[key]\n }); })\n };\n\n if (gettersKeys.length) {\n var tree = transformPathsToObjectTree(getters);\n storeState.getters = Object.keys(tree).map(function (key) { return ({\n key: key.endsWith('/') ? extractNameFromPath(key) : key,\n editable: false,\n value: canThrow(function () { return tree[key]; })\n }); });\n }\n\n return storeState\n}\n\nfunction transformPathsToObjectTree (getters) {\n var result = {};\n Object.keys(getters).forEach(function (key) {\n var path = key.split('/');\n if (path.length > 1) {\n var target = result;\n var leafKey = path.pop();\n path.forEach(function (p) {\n if (!target[p]) {\n target[p] = {\n _custom: {\n value: {},\n display: p,\n tooltip: 'Module',\n abstract: true\n }\n };\n }\n target = target[p]._custom.value;\n });\n target[leafKey] = canThrow(function () { return getters[key]; });\n } else {\n result[key] = canThrow(function () { return getters[key]; });\n }\n });\n return result\n}\n\nfunction getStoreModule (moduleMap, path) {\n var names = path.split('/').filter(function (n) { return n; });\n return names.reduce(\n function (module, moduleName, i) {\n var child = module[moduleName];\n if (!child) {\n throw new Error((\"Missing module \\\"\" + moduleName + \"\\\" for path \\\"\" + path + \"\\\".\"))\n }\n return i === names.length - 1 ? child : child._children\n },\n path === 'root' ? moduleMap : moduleMap.root._children\n )\n}\n\nfunction canThrow (cb) {\n try {\n return cb()\n } catch (e) {\n return e\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors$1 = { namespaced: { configurable: true } };\n\nprototypeAccessors$1.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors$1 );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nfunction createStore (options) {\n return new Store(options)\n}\n\nvar Store = function Store (options) {\n var this$1$1 = this;\n if ( options === void 0 ) options = {};\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n var devtools = options.devtools;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._makeLocalGettersCache = Object.create(null);\n\n // EffectScope instance. when registering new getters, we wrap them inside\n // EffectScope so that getters (computed) would not be destroyed on\n // component unmount.\n this._scope = null;\n\n this._devtools = devtools;\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store state, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreState(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1$1); });\n};\n\nvar prototypeAccessors = { state: { configurable: true } };\n\nStore.prototype.install = function install (app, injectKey) {\n app.provide(injectKey || storeKey, this);\n app.config.globalProperties.$store = this;\n\n var useDevtools = this._devtools !== undefined\n ? this._devtools\n : (process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__;\n\n if (useDevtools) {\n addDevtools(app, this);\n }\n};\n\nprototypeAccessors.state.get = function () {\n return this._state.data\n};\n\nprototypeAccessors.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch$1 (getter, cb, options) {\n var this$1$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return watch(function () { return getter(this$1$1.state, this$1$1.getters); }, cb, Object.assign({}, options))\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1$1 = this;\n\n this._withCommit(function () {\n this$1$1._state.data = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreState(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1$1.state, path.slice(0, -1));\n delete parentState[path[path.length - 1]];\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors );\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n version: '4.1.0',\n Store: Store,\n storeKey: storeKey,\n createStore: createStore,\n useStore: useStore,\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, createStore, mapActions, mapGetters, mapMutations, mapState, storeKey, useStore };\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\nimport { mapState } from 'vuex'\nimport { logger } from '../logger.ts'\n\nexport default {\n\tcomputed: {\n\t\t...mapState({\n\t\t\tstatusType: (state) => state.userStatus.status,\n\t\t\tstatusIsUserDefined: (state) => state.userStatus.statusIsUserDefined,\n\t\t\tcustomIcon: (state) => state.userStatus.icon,\n\t\t\tcustomMessage: (state) => state.userStatus.message,\n\t\t}),\n\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tvisibleMessage() {\n\t\t\tif (this.customIcon && this.customMessage) {\n\t\t\t\treturn `${this.customIcon} ${this.customMessage}`\n\t\t\t}\n\n\t\t\tif (this.customMessage) {\n\t\t\t\treturn this.customMessage\n\t\t\t}\n\n\t\t\tif (this.statusIsUserDefined) {\n\t\t\t\tswitch (this.statusType) {\n\t\t\t\t\tcase 'online':\n\t\t\t\t\t\treturn t('user_status', 'Online')\n\n\t\t\t\t\tcase 'away':\n\t\t\t\t\t\treturn t('user_status', 'Away')\n\n\t\t\t\t\tcase 'busy':\n\t\t\t\t\t\treturn t('user_status', 'Busy')\n\n\t\t\t\t\tcase 'dnd':\n\t\t\t\t\t\treturn t('user_status', 'Do not disturb')\n\n\t\t\t\t\tcase 'invisible':\n\t\t\t\t\t\treturn t('user_status', 'Invisible')\n\n\t\t\t\t\tcase 'offline':\n\t\t\t\t\t\treturn t('user_status', 'Offline')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn t('user_status', 'Set status')\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Changes the user-status\n\t\t *\n\t\t * @param {string} statusType (online / away / dnd / invisible)\n\t\t */\n\t\tasync changeStatus(statusType) {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setStatus', { statusType })\n\t\t\t} catch (err) {\n\t\t\t\tshowError(t('user_status', 'There was an error saving the new status'))\n\t\t\t\tlogger.debug(err)\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Sends a heartbeat\n *\n * @param {boolean} isAway Whether or not the user is active\n * @return {Promise}\n */\nasync function sendHeartbeat(isAway) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/heartbeat?format=json')\n\tconst response = await HttpClient.put(url, {\n\t\tstatus: isAway ? 'away' : 'online',\n\t})\n\treturn response.data.ocs.data\n}\n\nexport {\n\tsendHeartbeat,\n}\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches all predefined statuses from the server\n *\n * @return {Promise}\n */\nasync function fetchAllPredefinedStatuses() {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/predefined_statuses?format=json')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tfetchAllPredefinedStatuses,\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { fetchAllPredefinedStatuses } from '../services/predefinedStatusService.js'\n\n// eslint-disable-next-line antfu/top-level-function\nconst state = () => ({\n\tpredefinedStatuses: [],\n})\n\nconst mutations = {\n\n\t/**\n\t * Adds a predefined status to the state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} status The status to add\n\t */\n\taddPredefinedStatus(state, status) {\n\t\tstate.predefinedStatuses = [...state.predefinedStatuses, status]\n\t},\n}\n\nconst getters = {\n\tstatusesHaveLoaded(state) {\n\t\treturn state.predefinedStatuses.length > 0\n\t},\n}\n\nconst actions = {\n\n\t/**\n\t * Loads all predefined statuses from the server\n\t *\n\t * @param {object} vuex The Vuex components\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state -\n\t */\n\tasync loadAllPredefinedStatuses({ state, commit }) {\n\t\tif (state.predefinedStatuses.length > 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst statuses = await fetchAllPredefinedStatuses()\n\t\tfor (const status of statuses) {\n\t\t\tcommit('addPredefinedStatus', status)\n\t\t}\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches the current user-status\n *\n * @return {Promise}\n */\nasync function fetchCurrentStatus() {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the current user-status\n *\n * @param {string} userId Id of the user to fetch the status\n * @return {Promise}\n */\nasync function fetchBackupStatus(userId) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/statuses/{userId}', { userId: '_' + userId })\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Sets the status\n *\n * @param {string} statusType The status (online / away / dnd / invisible)\n * @return {Promise}\n */\nasync function setStatus(statusType) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/status')\n\tawait HttpClient.put(url, {\n\t\tstatusType,\n\t})\n}\n\n/**\n * Sets a message based on our predefined statuses\n *\n * @param {string} messageId The id of the message, taken from predefined status service\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise}\n */\nasync function setPredefinedMessage(messageId, clearAt = null) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/predefined?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessageId,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Sets a custom message\n *\n * @param {string} message The user-defined message\n * @param {string | null} statusIcon The user-defined icon\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise}\n */\nasync function setCustomMessage(message, statusIcon = null, clearAt = null) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/custom?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessage,\n\t\tstatusIcon,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Clears the current status of the user\n *\n * @return {Promise}\n */\nasync function clearMessage() {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message?format=json')\n\tawait HttpClient.delete(url)\n}\n\n/**\n * Revert the automated status\n *\n * @param {string} messageId ID of the message to revert\n * @return {Promise}\n */\nasync function revertToBackupStatus(messageId) {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/revert/{messageId}', { messageId })\n\tconst response = await HttpClient.delete(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tclearMessage,\n\tfetchBackupStatus,\n\tfetchCurrentStatus,\n\trevertToBackupStatus,\n\tsetCustomMessage,\n\tsetPredefinedMessage,\n\tsetStatus,\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\nimport {\n\tfetchBackupStatus,\n\trevertToBackupStatus,\n} from '../services/statusService.js'\n\n// eslint-disable-next-line antfu/top-level-function\nconst state = () => ({\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n})\n\nconst mutations = {\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadBackupStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise}\n\t */\n\tasync fetchBackupFromServer({ commit }) {\n\t\ttry {\n\t\t\tconst status = await fetchBackupStatus(getCurrentUser()?.uid)\n\t\t\tcommit('loadBackupStatusFromServer', status)\n\t\t} catch {\n\t\t\t// Ignore missing user backup status\n\t\t}\n\t},\n\n\tasync revertBackupFromServer({ commit }, { messageId }) {\n\t\tconst status = await revertToBackupStatus(messageId)\n\t\tif (status) {\n\t\t\tcommit('loadBackupStatusFromServer', {})\n\t\t\tcommit('loadStatusFromServer', status)\n\t\t\temit('user_status:status.updated', {\n\t\t\t\tstatus: status.status,\n\t\t\t\tmessage: status.message,\n\t\t\t\ticon: status.icon,\n\t\t\t\tclearAt: status.clearAt,\n\t\t\t\tuserId: getCurrentUser()?.uid,\n\t\t\t})\n\t\t}\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n *\n */\nfunction dateFactory() {\n\treturn new Date()\n}\n\nexport {\n\tdateFactory,\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { formatRelativeTime, getFirstDay, t } from '@nextcloud/l10n'\nimport { dateFactory } from './dateService.js'\n\n/**\n * Calculates the actual clearAt timestamp\n *\n * @param {object | null} clearAt The clear-at config\n * @return {number | null}\n */\nexport function getTimestampForClearAt(clearAt) {\n\tif (clearAt === null) {\n\t\treturn null\n\t}\n\n\tconst date = dateFactory()\n\n\tif (clearAt.type === 'period') {\n\t\tdate.setSeconds(date.getSeconds() + clearAt.time)\n\t\treturn Math.floor(date.getTime() / 1000)\n\t}\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\t\tcase 'day':\n\t\t\t\treturn Math.floor(getEndOfDay(date).getTime() / 1000)\n\t\t\tcase 'week':\n\t\t\t\treturn Math.floor(getEndOfWeek(date).getTime() / 1000)\n\t\t}\n\t}\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\treturn clearAt.time\n\t}\n\n\treturn null\n}\n\n/**\n * Formats a clearAt object to be human readable\n *\n * @param {object} clearAt The clearAt object\n * @return {string|null}\n */\nexport function clearAtFormat(clearAt) {\n\tif (clearAt === null) {\n\t\treturn t('user_status', 'Don\\'t clear')\n\t}\n\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\t\tcase 'day':\n\t\t\t\treturn t('user_status', 'Today')\n\t\t\tcase 'week':\n\t\t\t\treturn t('user_status', 'This week')\n\n\t\t\tdefault:\n\t\t\t\treturn null\n\t\t}\n\t}\n\n\tif (clearAt.type === 'period') {\n\t\treturn formatRelativeTime(Date.now() + clearAt.time * 1000)\n\t}\n\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\treturn formatRelativeTime(clearAt.time * 1000)\n\t}\n\n\treturn null\n}\n\n/**\n * @param {Date} date - The date to calculate the end of the day for\n */\nfunction getEndOfDay(date) {\n\tconst endOfDay = new Date(date)\n\tendOfDay.setHours(23, 59, 59, 999)\n\treturn endOfDay\n}\n\n/**\n * Calculates the end of the week for a given date\n *\n * @param {Date} date - The date to calculate the end of the week for\n */\nfunction getEndOfWeek(date) {\n\tconst endOfWeek = getEndOfDay(date)\n\tendOfWeek.setDate(date.getDate() + ((getFirstDay() - 1 - endOfWeek.getDay() + 7) % 7))\n\treturn endOfWeek\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getTimestampForClearAt } from '../services/clearAtService.js'\nimport {\n\tclearMessage,\n\tfetchCurrentStatus,\n\tsetCustomMessage,\n\tsetPredefinedMessage,\n\tsetStatus,\n} from '../services/statusService.js'\n\n// eslint-disable-next-line antfu/top-level-function\nconst state = () => ({\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n})\n\nconst mutations = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.statusType The new status type\n\t */\n\tsetStatus(state, { statusType }) {\n\t\tstate.status = statusType\n\t\tstate.statusIsUserDefined = true\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {number | null} data.clearAt When to automatically clear the status\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t */\n\tsetPredefinedMessage(state, { messageId, clearAt, message, icon }) {\n\t\tstate.messageId = messageId\n\t\tstate.messageIsPredefined = true\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t */\n\tsetCustomMessage(state, { message, icon, clearAt }) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} state The Vuex state\n\t */\n\tclearMessage(state) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = null\n\t\tstate.icon = null\n\t\tstate.clearAt = null\n\t},\n\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.statusType The new status type\n\t * @return {Promise}\n\t */\n\tasync setStatus({ commit, state }, { statusType }) {\n\t\tawait setStatus(statusType)\n\t\tcommit('setStatus', { statusType })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Update status from 'user_status:status.updated' update.\n\t * This doesn't trigger another 'user_status:status.updated'\n\t * event.\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {string} status The new status\n\t * @return {Promise}\n\t */\n\tasync setStatusFromObject({ commit }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} vuex.rootState The Vuex root state\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise}\n\t */\n\tasync setPredefinedMessage({ commit, rootState, state }, { messageId, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setPredefinedMessage(messageId, resolvedClearAt)\n\t\tconst status = rootState.predefinedStatuses.predefinedStatuses.find((status) => status.id === messageId)\n\t\tconst { message, icon } = status\n\n\t\tcommit('setPredefinedMessage', { messageId, clearAt: resolvedClearAt, message, icon })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise}\n\t */\n\tasync setCustomMessage({ commit, state }, { message, icon, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setCustomMessage(message, icon, resolvedClearAt)\n\t\tcommit('setCustomMessage', { message, icon, clearAt: resolvedClearAt })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @return {Promise}\n\t */\n\tasync clearMessage({ commit, state }) {\n\t\tawait clearMessage()\n\t\tcommit('clearMessage')\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise}\n\t */\n\tasync reFetchStatusFromServer({ commit }) {\n\t\tconst status = await fetchCurrentStatus()\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Stores the status we got in the reply of the heartbeat\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} status The data destructuring object\n\t * @param {string} status.status The status type\n\t * @param {boolean} status.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} status.message The message\n\t * @param {string} status.icon The icon\n\t * @param {number} status.clearAt When to automatically clear the status\n\t * @param {boolean} status.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} status.messageId The id of the predefined message\n\t * @return {Promise}\n\t */\n\tasync setStatusFromHeartbeat({ commit }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Loads the server from the initial state\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t */\n\tloadStatusFromInitialState({ commit }) {\n\t\tconst status = loadState('user_status', 'status')\n\t\tcommit('loadStatusFromServer', status)\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createStore } from 'vuex'\nimport predefinedStatuses from './predefinedStatuses.js'\nimport userBackupStatus from './userBackupStatus.js'\nimport userStatus from './userStatus.js'\n\nexport default createStore({\n\tmodules: {\n\t\tpredefinedStatuses,\n\t\tuserStatus,\n\t\tuserBackupStatus,\n\t},\n\tstrict: true,\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\nimport { createApp } from 'vue'\nimport UserStatus from './UserStatus.vue'\nimport store from './store/index.js'\n\nimport './user-status-icons.css'\n\nconst mountPoint = document.getElementById('user_status-menu-entry')\n\n/**\n *\n */\nfunction mountMenuEntry() {\n\tconst mountPoint = document.getElementById('user_status-menu-entry')\n\t// TODO: fix me after Core migration to Vue 3\n\t// In Vue 2 menu items were mounted in place to the menu items\n\t// In Vue 3 they are mounted inside the menu item\n\t// A workaround - replace the menu item with \"display: contents\" div\n\tconst transparentMountPoint = document.createElement('div')\n\ttransparentMountPoint.style.display = 'contents'\n\tmountPoint.replaceWith(transparentMountPoint)\n\n\tcreateApp(UserStatus)\n\t\t.use(store)\n\t\t.mount(transparentMountPoint)\n}\n\nif (mountPoint) {\n\tmountMenuEntry()\n} else {\n\tsubscribe('core:user-menu:mounted', mountMenuEntry)\n}\n\n// Register dashboard status\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('status', (el) => {\n\t\tcreateApp(UserStatus, {\n\t\t\tinline: true,\n\t\t})\n\t\t\t.use(store)\n\t\t\t.mount(el)\n\t})\n})\n"],"file":"user_status-menu.mjs"} \ No newline at end of file