@sync-in/server 1.10.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/LICENSE +1 -1
- package/README.md +3 -11
- package/environment/environment.dist.min.yaml +1 -1
- package/environment/environment.dist.yaml +173 -28
- package/package.json +18 -17
- package/server/app.bootstrap.js +1 -5
- package/server/app.bootstrap.js.map +1 -1
- package/server/app.constants.js +1 -5
- package/server/app.constants.js.map +1 -1
- package/server/app.e2e-spec.js +1 -5
- package/server/app.e2e-spec.js.map +1 -1
- package/server/app.functions.js +1 -5
- package/server/app.functions.js.map +1 -1
- package/server/app.module.js +1 -5
- package/server/app.module.js.map +1 -1
- package/server/app.service.js +1 -5
- package/server/app.service.js.map +1 -1
- package/server/app.service.spec.js +2 -6
- package/server/app.service.spec.js.map +1 -1
- package/server/applications/admin/admin.module.js +1 -5
- package/server/applications/admin/admin.module.js.map +1 -1
- package/server/applications/admin/constants/routes.js +1 -5
- package/server/applications/admin/constants/routes.js.map +1 -1
- package/server/applications/admin/interfaces/check-update.interfaces.js +1 -5
- package/server/applications/admin/interfaces/check-update.interfaces.js.map +1 -1
- package/server/applications/admin/services/admin-scheduler.service.js +1 -5
- package/server/applications/admin/services/admin-scheduler.service.js.map +1 -1
- package/server/applications/admin/services/admin.service.js +13 -8
- package/server/applications/admin/services/admin.service.js.map +1 -1
- package/server/applications/admin/services/admin.service.spec.js +1 -5
- package/server/applications/admin/services/admin.service.spec.js.map +1 -1
- package/server/applications/admin/utils/check-update.js +1 -5
- package/server/applications/admin/utils/check-update.js.map +1 -1
- package/server/applications/applications.config.js +1 -5
- package/server/applications/applications.config.js.map +1 -1
- package/server/applications/applications.constants.js +5 -5
- package/server/applications/applications.constants.js.map +1 -1
- package/server/applications/applications.module.js +1 -5
- package/server/applications/applications.module.js.map +1 -1
- package/server/applications/comments/comments.controller.js +1 -5
- package/server/applications/comments/comments.controller.js.map +1 -1
- package/server/applications/comments/comments.controller.spec.js +1 -5
- package/server/applications/comments/comments.controller.spec.js.map +1 -1
- package/server/applications/comments/comments.module.js +1 -5
- package/server/applications/comments/comments.module.js.map +1 -1
- package/server/applications/comments/constants/routes.js +1 -5
- package/server/applications/comments/constants/routes.js.map +1 -1
- package/server/applications/comments/dto/comment.dto.js +1 -5
- package/server/applications/comments/dto/comment.dto.js.map +1 -1
- package/server/applications/comments/interfaces/comment-recent.interface.js +1 -5
- package/server/applications/comments/interfaces/comment-recent.interface.js.map +1 -1
- package/server/applications/comments/schemas/comment.interface.js +1 -5
- package/server/applications/comments/schemas/comment.interface.js.map +1 -1
- package/server/applications/comments/schemas/comments.schema.js +1 -5
- package/server/applications/comments/schemas/comments.schema.js.map +1 -1
- package/server/applications/comments/services/comments-manager.service.js +9 -7
- package/server/applications/comments/services/comments-manager.service.js.map +1 -1
- package/server/applications/comments/services/comments-manager.service.spec.js +10 -8
- package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
- package/server/applications/comments/services/comments-queries.service.js +1 -5
- package/server/applications/comments/services/comments-queries.service.js.map +1 -1
- package/server/applications/files/adapters/files-indexer-mysql.service.js +29 -12
- package/server/applications/files/adapters/files-indexer-mysql.service.js.map +1 -1
- package/server/applications/files/adapters/files-indexer-mysql.service.spec.js +1 -5
- package/server/applications/files/adapters/files-indexer-mysql.service.spec.js.map +1 -1
- package/server/applications/files/constants/cache.js +1 -5
- package/server/applications/files/constants/cache.js.map +1 -1
- package/server/applications/files/constants/compress.js +1 -5
- package/server/applications/files/constants/compress.js.map +1 -1
- package/server/applications/files/constants/files.js +1 -5
- package/server/applications/files/constants/files.js.map +1 -1
- package/server/applications/files/constants/indexing.js +1 -5
- package/server/applications/files/constants/indexing.js.map +1 -1
- package/server/applications/files/constants/operations.js +1 -5
- package/server/applications/files/constants/operations.js.map +1 -1
- package/server/applications/files/constants/routes.js +1 -5
- package/server/applications/files/constants/routes.js.map +1 -1
- package/server/applications/files/constants/samples.js +1 -5
- package/server/applications/files/constants/samples.js.map +1 -1
- package/server/applications/files/dto/file-operations.dto.js +1 -5
- package/server/applications/files/dto/file-operations.dto.js.map +1 -1
- package/server/applications/files/events/file-task-event.js +1 -5
- package/server/applications/files/events/file-task-event.js.map +1 -1
- package/server/applications/files/files-tasks.controller.js +1 -5
- package/server/applications/files/files-tasks.controller.js.map +1 -1
- package/server/applications/files/files-tasks.controller.spec.js +1 -5
- package/server/applications/files/files-tasks.controller.spec.js.map +1 -1
- package/server/applications/files/files.config.js +1 -5
- package/server/applications/files/files.config.js.map +1 -1
- package/server/applications/files/files.controller.js +1 -5
- package/server/applications/files/files.controller.js.map +1 -1
- package/server/applications/files/files.controller.spec.js +1 -5
- package/server/applications/files/files.controller.spec.js.map +1 -1
- package/server/applications/files/files.module.js +1 -5
- package/server/applications/files/files.module.js.map +1 -1
- package/server/applications/files/interfaces/file-db-props.interface.js +1 -5
- package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-lock.interface.js +1 -5
- package/server/applications/files/interfaces/file-lock.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-parse-index.js +1 -5
- package/server/applications/files/interfaces/file-parse-index.js.map +1 -1
- package/server/applications/files/interfaces/file-props.interface.js +1 -5
- package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-recent-location.interface.js +1 -5
- package/server/applications/files/interfaces/file-recent-location.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-space.interface.js +1 -5
- package/server/applications/files/interfaces/file-space.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-tree.interface.js +1 -5
- package/server/applications/files/interfaces/file-tree.interface.js.map +1 -1
- package/server/applications/files/models/file-error.js +1 -5
- package/server/applications/files/models/file-error.js.map +1 -1
- package/server/applications/files/models/file-lock-error.js +1 -5
- package/server/applications/files/models/file-lock-error.js.map +1 -1
- package/server/applications/files/models/file-task.js +1 -5
- package/server/applications/files/models/file-task.js.map +1 -1
- package/server/applications/files/models/files-indexer.js +1 -5
- package/server/applications/files/models/files-indexer.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js +21 -10
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.config.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.config.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.constants.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.constants.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.controller.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.controller.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.dtos.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.dtos.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.guard.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.guard.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.interface.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.interface.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.module.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.module.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.routes.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.routes.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.strategy.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.strategy.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.utils.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.utils.js.map +1 -1
- package/server/applications/files/modules/file-editor-providers.interface.js +6 -0
- package/server/applications/files/modules/file-editor-providers.interface.js.map +1 -0
- package/server/applications/files/modules/only-office/only-office-environment.decorator.js +1 -5
- package/server/applications/files/modules/only-office/only-office-environment.decorator.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office-manager.service.js +57 -19
- package/server/applications/files/modules/only-office/only-office-manager.service.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office-manager.service.spec.js +1 -5
- package/server/applications/files/modules/only-office/only-office-manager.service.spec.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.config.js +1 -5
- package/server/applications/files/modules/only-office/only-office.config.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.constants.js +1 -5
- package/server/applications/files/modules/only-office/only-office.constants.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.controller.js +1 -5
- package/server/applications/files/modules/only-office/only-office.controller.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.controller.spec.js +1 -5
- package/server/applications/files/modules/only-office/only-office.controller.spec.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.dtos.js +1 -5
- package/server/applications/files/modules/only-office/only-office.dtos.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.guard.js +1 -5
- package/server/applications/files/modules/only-office/only-office.guard.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.guard.spec.js +1 -5
- package/server/applications/files/modules/only-office/only-office.guard.spec.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.interface.js +1 -5
- package/server/applications/files/modules/only-office/only-office.interface.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.module.js +1 -5
- package/server/applications/files/modules/only-office/only-office.module.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.routes.js +1 -5
- package/server/applications/files/modules/only-office/only-office.routes.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.strategy.js +1 -5
- package/server/applications/files/modules/only-office/only-office.strategy.js.map +1 -1
- package/server/applications/files/schemas/file-content.interface.js +1 -5
- package/server/applications/files/schemas/file-content.interface.js.map +1 -1
- package/server/applications/files/schemas/file-recent.interface.js +1 -5
- package/server/applications/files/schemas/file-recent.interface.js.map +1 -1
- package/server/applications/files/schemas/file.interface.js +1 -5
- package/server/applications/files/schemas/file.interface.js.map +1 -1
- package/server/applications/files/schemas/files-content.schema.js +1 -5
- package/server/applications/files/schemas/files-content.schema.js.map +1 -1
- package/server/applications/files/schemas/files-recents.schema.js +1 -5
- package/server/applications/files/schemas/files-recents.schema.js.map +1 -1
- package/server/applications/files/schemas/files.schema.js +1 -5
- package/server/applications/files/schemas/files.schema.js.map +1 -1
- package/server/applications/files/services/files-content-manager.service.js +45 -16
- package/server/applications/files/services/files-content-manager.service.js.map +1 -1
- package/server/applications/files/services/files-lock-manager.service.js +53 -18
- package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
- package/server/applications/files/services/files-lock-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-lock-manager.service.spec.js.map +1 -1
- package/server/applications/files/services/files-manager.service.js +77 -24
- package/server/applications/files/services/files-manager.service.js.map +1 -1
- package/server/applications/files/services/files-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-manager.service.spec.js.map +1 -1
- package/server/applications/files/services/files-methods.service.js +5 -6
- package/server/applications/files/services/files-methods.service.js.map +1 -1
- package/server/applications/files/services/files-methods.service.spec.js +1 -5
- package/server/applications/files/services/files-methods.service.spec.js.map +1 -1
- package/server/applications/files/services/files-parser.service.js +13 -8
- package/server/applications/files/services/files-parser.service.js.map +1 -1
- package/server/applications/files/services/files-parser.service.spec.js +1 -5
- package/server/applications/files/services/files-parser.service.spec.js.map +1 -1
- package/server/applications/files/services/files-queries.service.js +29 -12
- package/server/applications/files/services/files-queries.service.js.map +1 -1
- package/server/applications/files/services/files-recents.service.js +1 -5
- package/server/applications/files/services/files-recents.service.js.map +1 -1
- package/server/applications/files/services/files-recents.service.spec.js +1 -5
- package/server/applications/files/services/files-recents.service.spec.js.map +1 -1
- package/server/applications/files/services/files-scheduler.service.js +77 -24
- package/server/applications/files/services/files-scheduler.service.js.map +1 -1
- package/server/applications/files/services/files-search-manager.service.js +9 -7
- package/server/applications/files/services/files-search-manager.service.js.map +1 -1
- package/server/applications/files/services/files-search-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-search-manager.service.spec.js.map +1 -1
- package/server/applications/files/services/files-tasks-manager.service.js +77 -24
- package/server/applications/files/services/files-tasks-manager.service.js.map +1 -1
- package/server/applications/files/services/files-tasks-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-tasks-manager.service.spec.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/excel.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/excel.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/html.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/html.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/open-office.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/open-office.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/pdf.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/power-point.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/power-point.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/text.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/text.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/word.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/word.js.map +1 -1
- package/server/applications/files/utils/doc-textify/doc-textify.js +1 -5
- package/server/applications/files/utils/doc-textify/doc-textify.js.map +1 -1
- package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js +1 -5
- package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js.map +1 -1
- package/server/applications/files/utils/doc-textify/utils/clean.js +1 -5
- package/server/applications/files/utils/doc-textify/utils/clean.js.map +1 -1
- package/server/applications/files/utils/files-search.js +1 -5
- package/server/applications/files/utils/files-search.js.map +1 -1
- package/server/applications/files/utils/files-tree.js +1 -5
- package/server/applications/files/utils/files-tree.js.map +1 -1
- package/server/applications/files/utils/files.js +1 -5
- package/server/applications/files/utils/files.js.map +1 -1
- package/server/applications/files/utils/send-file.js +1 -5
- package/server/applications/files/utils/send-file.js.map +1 -1
- package/server/applications/files/utils/unzip-file.js +1 -5
- package/server/applications/files/utils/unzip-file.js.map +1 -1
- package/server/applications/files/utils/url-file.js +1 -5
- package/server/applications/files/utils/url-file.js.map +1 -1
- package/server/applications/links/constants/cache.js +1 -5
- package/server/applications/links/constants/cache.js.map +1 -1
- package/server/applications/links/constants/links.js +1 -5
- package/server/applications/links/constants/links.js.map +1 -1
- package/server/applications/links/constants/routes.js +1 -5
- package/server/applications/links/constants/routes.js.map +1 -1
- package/server/applications/links/dto/create-or-update-link.dto.js +1 -5
- package/server/applications/links/dto/create-or-update-link.dto.js.map +1 -1
- package/server/applications/links/interfaces/link-guest.interface.js +1 -5
- package/server/applications/links/interfaces/link-guest.interface.js.map +1 -1
- package/server/applications/links/interfaces/link-space.interface.js +1 -5
- package/server/applications/links/interfaces/link-space.interface.js.map +1 -1
- package/server/applications/links/links.controller.js +1 -5
- package/server/applications/links/links.controller.js.map +1 -1
- package/server/applications/links/links.controller.spec.js +1 -5
- package/server/applications/links/links.controller.spec.js.map +1 -1
- package/server/applications/links/schemas/link.interface.js +1 -5
- package/server/applications/links/schemas/link.interface.js.map +1 -1
- package/server/applications/links/schemas/links.schema.js +1 -5
- package/server/applications/links/schemas/links.schema.js.map +1 -1
- package/server/applications/links/services/links-manager.service.js +55 -20
- package/server/applications/links/services/links-manager.service.js.map +1 -1
- package/server/applications/links/services/links-manager.service.spec.js +3 -7
- package/server/applications/links/services/links-manager.service.spec.js.map +1 -1
- package/server/applications/links/services/links-queries.service.js +1 -5
- package/server/applications/links/services/links-queries.service.js.map +1 -1
- package/server/applications/notifications/constants/notifications.js +1 -5
- package/server/applications/notifications/constants/notifications.js.map +1 -1
- package/server/applications/notifications/constants/routes.js +1 -5
- package/server/applications/notifications/constants/routes.js.map +1 -1
- package/server/applications/notifications/constants/websocket.js +1 -5
- package/server/applications/notifications/constants/websocket.js.map +1 -1
- package/server/applications/notifications/i18n/de.js +1 -9
- package/server/applications/notifications/i18n/de.js.map +1 -1
- package/server/applications/notifications/i18n/es.js +1 -5
- package/server/applications/notifications/i18n/es.js.map +1 -1
- package/server/applications/notifications/i18n/fr.js +1 -5
- package/server/applications/notifications/i18n/fr.js.map +1 -1
- package/server/applications/notifications/i18n/hi.js +1 -5
- package/server/applications/notifications/i18n/hi.js.map +1 -1
- package/server/applications/notifications/i18n/index.js +1 -5
- package/server/applications/notifications/i18n/index.js.map +1 -1
- package/server/applications/notifications/i18n/it.js +1 -5
- package/server/applications/notifications/i18n/it.js.map +1 -1
- package/server/applications/notifications/i18n/ja.js +1 -5
- package/server/applications/notifications/i18n/ja.js.map +1 -1
- package/server/applications/notifications/i18n/ko.js +1 -5
- package/server/applications/notifications/i18n/ko.js.map +1 -1
- package/server/applications/notifications/i18n/pl.js +1 -5
- package/server/applications/notifications/i18n/pl.js.map +1 -1
- package/server/applications/notifications/i18n/pt.js +1 -5
- package/server/applications/notifications/i18n/pt.js.map +1 -1
- package/server/applications/notifications/i18n/pt_br.js +1 -5
- package/server/applications/notifications/i18n/pt_br.js.map +1 -1
- package/server/applications/notifications/i18n/ru.js +1 -5
- package/server/applications/notifications/i18n/ru.js.map +1 -1
- package/server/applications/notifications/i18n/tr.js +1 -5
- package/server/applications/notifications/i18n/tr.js.map +1 -1
- package/server/applications/notifications/i18n/zh.js +1 -5
- package/server/applications/notifications/i18n/zh.js.map +1 -1
- package/server/applications/notifications/interfaces/notification-properties.interface.js +1 -5
- package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -1
- package/server/applications/notifications/interfaces/user-mail-notification.interface.js +1 -5
- package/server/applications/notifications/interfaces/user-mail-notification.interface.js.map +1 -1
- package/server/applications/notifications/mails/models.js +1 -5
- package/server/applications/notifications/mails/models.js.map +1 -1
- package/server/applications/notifications/mails/templates.js +1 -5
- package/server/applications/notifications/mails/templates.js.map +1 -1
- package/server/applications/notifications/mails/urls.js +1 -5
- package/server/applications/notifications/mails/urls.js.map +1 -1
- package/server/applications/notifications/notifications.controller.js +1 -5
- package/server/applications/notifications/notifications.controller.js.map +1 -1
- package/server/applications/notifications/notifications.controller.spec.js +1 -5
- package/server/applications/notifications/notifications.controller.spec.js.map +1 -1
- package/server/applications/notifications/notifications.gateway.js +1 -5
- package/server/applications/notifications/notifications.gateway.js.map +1 -1
- package/server/applications/notifications/notifications.module.js +1 -5
- package/server/applications/notifications/notifications.module.js.map +1 -1
- package/server/applications/notifications/schemas/notification.interface.js +1 -5
- package/server/applications/notifications/schemas/notification.interface.js.map +1 -1
- package/server/applications/notifications/schemas/notifications.schema.js +1 -5
- package/server/applications/notifications/schemas/notifications.schema.js.map +1 -1
- package/server/applications/notifications/services/notifications-manager.service.js +25 -11
- package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
- package/server/applications/notifications/services/notifications-manager.service.spec.js +20 -11
- package/server/applications/notifications/services/notifications-manager.service.spec.js.map +1 -1
- package/server/applications/notifications/services/notifications-queries.service.js +1 -5
- package/server/applications/notifications/services/notifications-queries.service.js.map +1 -1
- package/server/applications/shares/constants/routes.js +1 -5
- package/server/applications/shares/constants/routes.js.map +1 -1
- package/server/applications/shares/constants/shares.js +1 -5
- package/server/applications/shares/constants/shares.js.map +1 -1
- package/server/applications/shares/dto/create-or-update-share.dto.js +1 -5
- package/server/applications/shares/dto/create-or-update-share.dto.js.map +1 -1
- package/server/applications/shares/interfaces/share-child.interface.js +1 -5
- package/server/applications/shares/interfaces/share-child.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-env.interface.js +1 -5
- package/server/applications/shares/interfaces/share-env.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-file.interface.js +1 -5
- package/server/applications/shares/interfaces/share-file.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-link.interface.js +1 -5
- package/server/applications/shares/interfaces/share-link.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-props.interface.js +1 -5
- package/server/applications/shares/interfaces/share-props.interface.js.map +1 -1
- package/server/applications/shares/models/share-child.model.js +1 -5
- package/server/applications/shares/models/share-child.model.js.map +1 -1
- package/server/applications/shares/schemas/share-members.interface.js +1 -5
- package/server/applications/shares/schemas/share-members.interface.js.map +1 -1
- package/server/applications/shares/schemas/share.interface.js +1 -5
- package/server/applications/shares/schemas/share.interface.js.map +1 -1
- package/server/applications/shares/schemas/shares-members.schema.js +1 -5
- package/server/applications/shares/schemas/shares-members.schema.js.map +1 -1
- package/server/applications/shares/schemas/shares.schema.js +1 -5
- package/server/applications/shares/schemas/shares.schema.js.map +1 -1
- package/server/applications/shares/services/shares-manager.service.js +214 -68
- package/server/applications/shares/services/shares-manager.service.js.map +1 -1
- package/server/applications/shares/services/shares-manager.service.spec.js +1 -5
- package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
- package/server/applications/shares/services/shares-queries.service.js +49 -17
- package/server/applications/shares/services/shares-queries.service.js.map +1 -1
- package/server/applications/shares/shares.controller.js +1 -5
- package/server/applications/shares/shares.controller.js.map +1 -1
- package/server/applications/shares/shares.controller.spec.js +1 -5
- package/server/applications/shares/shares.controller.spec.js.map +1 -1
- package/server/applications/shares/shares.module.js +1 -5
- package/server/applications/shares/shares.module.js.map +1 -1
- package/server/applications/spaces/constants/cache.js +1 -5
- package/server/applications/spaces/constants/cache.js.map +1 -1
- package/server/applications/spaces/constants/routes.js +1 -5
- package/server/applications/spaces/constants/routes.js.map +1 -1
- package/server/applications/spaces/constants/spaces.js +1 -5
- package/server/applications/spaces/constants/spaces.js.map +1 -1
- package/server/applications/spaces/decorators/space-override-permission.decorator.js +1 -5
- package/server/applications/spaces/decorators/space-override-permission.decorator.js.map +1 -1
- package/server/applications/spaces/decorators/space-skip-guard.decorator.js +1 -5
- package/server/applications/spaces/decorators/space-skip-guard.decorator.js.map +1 -1
- package/server/applications/spaces/decorators/space-skip-permissions.decorator.js +1 -5
- package/server/applications/spaces/decorators/space-skip-permissions.decorator.js.map +1 -1
- package/server/applications/spaces/decorators/space.decorator.js +1 -5
- package/server/applications/spaces/decorators/space.decorator.js.map +1 -1
- package/server/applications/spaces/dto/create-or-update-space.dto.js +1 -5
- package/server/applications/spaces/dto/create-or-update-space.dto.js.map +1 -1
- package/server/applications/spaces/dto/delete-space.dto.js +1 -5
- package/server/applications/spaces/dto/delete-space.dto.js.map +1 -1
- package/server/applications/spaces/dto/search-space.dto.js +1 -5
- package/server/applications/spaces/dto/search-space.dto.js.map +1 -1
- package/server/applications/spaces/dto/space-roots.dto.js +1 -5
- package/server/applications/spaces/dto/space-roots.dto.js.map +1 -1
- package/server/applications/spaces/guards/space.guard.js +17 -9
- package/server/applications/spaces/guards/space.guard.js.map +1 -1
- package/server/applications/spaces/guards/space.guard.spec.js +1 -5
- package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
- package/server/applications/spaces/interfaces/space-diff.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-diff.interface.js.map +1 -1
- package/server/applications/spaces/interfaces/space-files.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-files.interface.js.map +1 -1
- package/server/applications/spaces/interfaces/space-request.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-request.interface.js.map +1 -1
- package/server/applications/spaces/interfaces/space-trash.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-trash.interface.js.map +1 -1
- package/server/applications/spaces/models/space-env.model.js +1 -5
- package/server/applications/spaces/models/space-env.model.js.map +1 -1
- package/server/applications/spaces/models/space-props.model.js +1 -5
- package/server/applications/spaces/models/space-props.model.js.map +1 -1
- package/server/applications/spaces/models/space-root-props.model.js +1 -5
- package/server/applications/spaces/models/space-root-props.model.js.map +1 -1
- package/server/applications/spaces/models/space.model.js +1 -5
- package/server/applications/spaces/models/space.model.js.map +1 -1
- package/server/applications/spaces/schemas/space-members.interface.js +1 -5
- package/server/applications/spaces/schemas/space-members.interface.js.map +1 -1
- package/server/applications/spaces/schemas/space-root.interface.js +1 -5
- package/server/applications/spaces/schemas/space-root.interface.js.map +1 -1
- package/server/applications/spaces/schemas/space.interface.js +1 -5
- package/server/applications/spaces/schemas/space.interface.js.map +1 -1
- package/server/applications/spaces/schemas/spaces-members.schema.js +1 -5
- package/server/applications/spaces/schemas/spaces-members.schema.js.map +1 -1
- package/server/applications/spaces/schemas/spaces-roots.schema.js +1 -5
- package/server/applications/spaces/schemas/spaces-roots.schema.js.map +1 -1
- package/server/applications/spaces/schemas/spaces.schema.js +1 -5
- package/server/applications/spaces/schemas/spaces.schema.js.map +1 -1
- package/server/applications/spaces/services/spaces-browser.service.js +77 -24
- package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
- package/server/applications/spaces/services/spaces-browser.service.spec.js +1 -5
- package/server/applications/spaces/services/spaces-browser.service.spec.js.map +1 -1
- package/server/applications/spaces/services/spaces-manager.service.js +193 -53
- package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
- package/server/applications/spaces/services/spaces-manager.service.spec.js +1 -5
- package/server/applications/spaces/services/spaces-manager.service.spec.js.map +1 -1
- package/server/applications/spaces/services/spaces-queries.service.js +65 -21
- package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
- package/server/applications/spaces/services/spaces-scheduler.service.js +49 -17
- package/server/applications/spaces/services/spaces-scheduler.service.js.map +1 -1
- package/server/applications/spaces/spaces.controller.js +1 -5
- package/server/applications/spaces/spaces.controller.js.map +1 -1
- package/server/applications/spaces/spaces.controller.spec.js +1 -5
- package/server/applications/spaces/spaces.controller.spec.js.map +1 -1
- package/server/applications/spaces/spaces.module.js +1 -5
- package/server/applications/spaces/spaces.module.js.map +1 -1
- package/server/applications/spaces/utils/paths.js +1 -5
- package/server/applications/spaces/utils/paths.js.map +1 -1
- package/server/applications/spaces/utils/permissions.js +1 -5
- package/server/applications/spaces/utils/permissions.js.map +1 -1
- package/server/applications/spaces/utils/routes.js +1 -5
- package/server/applications/spaces/utils/routes.js.map +1 -1
- package/server/applications/sync/constants/auth.js +1 -5
- package/server/applications/sync/constants/auth.js.map +1 -1
- package/server/applications/sync/constants/routes.js +6 -5
- package/server/applications/sync/constants/routes.js.map +1 -1
- package/server/applications/sync/constants/store.js +1 -9
- package/server/applications/sync/constants/store.js.map +1 -1
- package/server/applications/sync/constants/sync.js +2 -6
- package/server/applications/sync/constants/sync.js.map +1 -1
- package/server/applications/sync/decorators/sync-context.decorator.js +1 -5
- package/server/applications/sync/decorators/sync-context.decorator.js.map +1 -1
- package/server/applications/sync/decorators/sync-environment.decorator.js +1 -5
- package/server/applications/sync/decorators/sync-environment.decorator.js.map +1 -1
- package/server/applications/sync/dtos/sync-client-auth.dto.js +12 -8
- package/server/applications/sync/dtos/sync-client-auth.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-client-info.dto.js +49 -0
- package/server/applications/sync/dtos/sync-client-info.dto.js.map +1 -0
- package/server/applications/sync/dtos/sync-client-registration.dto.js +34 -11
- package/server/applications/sync/dtos/sync-client-registration.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-operations.dto.js +1 -5
- package/server/applications/sync/dtos/sync-operations.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-path.dto.js +1 -5
- package/server/applications/sync/dtos/sync-path.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-upload.dto.js +1 -5
- package/server/applications/sync/dtos/sync-upload.dto.js.map +1 -1
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js +1 -5
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js.map +1 -1
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js +1 -5
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js.map +1 -1
- package/server/applications/sync/interfaces/store-manifest.interface.js +1 -5
- package/server/applications/sync/interfaces/store-manifest.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-client-auth.interface.js +1 -25
- package/server/applications/sync/interfaces/sync-client-auth.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-client-paths.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-client-paths.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-client.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-client.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-diff.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-diff.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-path.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-path.interface.js.map +1 -1
- package/server/applications/sync/schemas/sync-client.interface.js +1 -5
- package/server/applications/sync/schemas/sync-client.interface.js.map +1 -1
- package/server/applications/sync/schemas/sync-clients.schema.js +1 -5
- package/server/applications/sync/schemas/sync-clients.schema.js.map +1 -1
- package/server/applications/sync/schemas/sync-path.interface.js +1 -5
- package/server/applications/sync/schemas/sync-path.interface.js.map +1 -1
- package/server/applications/sync/schemas/sync-paths.schema.js +1 -5
- package/server/applications/sync/schemas/sync-paths.schema.js.map +1 -1
- package/server/applications/sync/services/sync-clients-manager.service.js +108 -44
- package/server/applications/sync/services/sync-clients-manager.service.js.map +1 -1
- package/server/applications/sync/services/sync-clients-manager.service.spec.js +14 -17
- package/server/applications/sync/services/sync-clients-manager.service.spec.js.map +1 -1
- package/server/applications/sync/services/sync-manager.service.js +29 -12
- package/server/applications/sync/services/sync-manager.service.js.map +1 -1
- package/server/applications/sync/services/sync-manager.service.spec.js +1 -5
- package/server/applications/sync/services/sync-manager.service.spec.js.map +1 -1
- package/server/applications/sync/services/sync-paths-manager.service.js +27 -17
- package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
- package/server/applications/sync/services/sync-paths-manager.service.spec.js +11 -15
- package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
- package/server/applications/sync/services/sync-queries.service.js +1 -5
- package/server/applications/sync/services/sync-queries.service.js.map +1 -1
- package/server/applications/sync/sync.config.js +1 -5
- package/server/applications/sync/sync.config.js.map +1 -1
- package/server/applications/sync/sync.controller.js +21 -6
- package/server/applications/sync/sync.controller.js.map +1 -1
- package/server/applications/sync/sync.controller.spec.js +1 -5
- package/server/applications/sync/sync.controller.spec.js.map +1 -1
- package/server/applications/sync/sync.module.js +1 -5
- package/server/applications/sync/sync.module.js.map +1 -1
- package/server/applications/sync/utils/functions.js +1 -5
- package/server/applications/sync/utils/functions.js.map +1 -1
- package/server/applications/sync/utils/normalizedMap.js +1 -5
- package/server/applications/sync/utils/normalizedMap.js.map +1 -1
- package/server/applications/sync/utils/routes.js +1 -5
- package/server/applications/sync/utils/routes.js.map +1 -1
- package/server/applications/users/admin-users.controller.js +2 -6
- package/server/applications/users/admin-users.controller.js.map +1 -1
- package/server/applications/users/admin-users.controller.spec.js +6 -10
- package/server/applications/users/admin-users.controller.spec.js.map +1 -1
- package/server/applications/users/constants/group.js +1 -5
- package/server/applications/users/constants/group.js.map +1 -1
- package/server/applications/users/constants/member.js +1 -5
- package/server/applications/users/constants/member.js.map +1 -1
- package/server/applications/users/constants/routes.js +1 -5
- package/server/applications/users/constants/routes.js.map +1 -1
- package/server/applications/users/constants/user.js +1 -5
- package/server/applications/users/constants/user.js.map +1 -1
- package/server/applications/users/constants/websocket.js +1 -5
- package/server/applications/users/constants/websocket.js.map +1 -1
- package/server/applications/users/decorators/permissions.decorator.js +1 -5
- package/server/applications/users/decorators/permissions.decorator.js.map +1 -1
- package/server/applications/users/decorators/roles.decorator.js +1 -5
- package/server/applications/users/decorators/roles.decorator.js.map +1 -1
- package/server/applications/users/decorators/user.decorator.js +1 -5
- package/server/applications/users/decorators/user.decorator.js.map +1 -1
- package/server/applications/users/dto/create-or-update-group.dto.js +1 -5
- package/server/applications/users/dto/create-or-update-group.dto.js.map +1 -1
- package/server/applications/users/dto/create-or-update-user.dto.js +1 -5
- package/server/applications/users/dto/create-or-update-user.dto.js.map +1 -1
- package/server/applications/users/dto/delete-user.dto.js +1 -5
- package/server/applications/users/dto/delete-user.dto.js.map +1 -1
- package/server/applications/users/dto/search-members.dto.js +1 -5
- package/server/applications/users/dto/search-members.dto.js.map +1 -1
- package/server/applications/users/dto/user-properties.dto.js +1 -5
- package/server/applications/users/dto/user-properties.dto.js.map +1 -1
- package/server/applications/users/guards/permissions.guard.js +1 -5
- package/server/applications/users/guards/permissions.guard.js.map +1 -1
- package/server/applications/users/guards/permissions.guard.spec.js +1 -5
- package/server/applications/users/guards/permissions.guard.spec.js.map +1 -1
- package/server/applications/users/guards/roles.guard.js +1 -5
- package/server/applications/users/guards/roles.guard.js.map +1 -1
- package/server/applications/users/guards/roles.guard.spec.js +1 -5
- package/server/applications/users/guards/roles.guard.spec.js.map +1 -1
- package/server/applications/users/interfaces/admin-group.interface.js +1 -5
- package/server/applications/users/interfaces/admin-group.interface.js.map +1 -1
- package/server/applications/users/interfaces/admin-user.interface.js +1 -5
- package/server/applications/users/interfaces/admin-user.interface.js.map +1 -1
- package/server/applications/users/interfaces/group-browse.interface.js +1 -5
- package/server/applications/users/interfaces/group-browse.interface.js.map +1 -1
- package/server/applications/users/interfaces/group-member.js +1 -5
- package/server/applications/users/interfaces/group-member.js.map +1 -1
- package/server/applications/users/interfaces/guest-user.interface.js +1 -5
- package/server/applications/users/interfaces/guest-user.interface.js.map +1 -1
- package/server/applications/users/interfaces/member.interface.js +1 -5
- package/server/applications/users/interfaces/member.interface.js.map +1 -1
- package/server/applications/users/interfaces/owner.interface.js +1 -5
- package/server/applications/users/interfaces/owner.interface.js.map +1 -1
- package/server/applications/users/interfaces/user-secrets.interface.js +1 -5
- package/server/applications/users/interfaces/user-secrets.interface.js.map +1 -1
- package/server/applications/users/interfaces/websocket.interface.js +1 -5
- package/server/applications/users/interfaces/websocket.interface.js.map +1 -1
- package/server/applications/users/models/user.model.js +1 -5
- package/server/applications/users/models/user.model.js.map +1 -1
- package/server/applications/users/schemas/group.interface.js +1 -5
- package/server/applications/users/schemas/group.interface.js.map +1 -1
- package/server/applications/users/schemas/groups.schema.js +1 -5
- package/server/applications/users/schemas/groups.schema.js.map +1 -1
- package/server/applications/users/schemas/user-group.interface.js +1 -5
- package/server/applications/users/schemas/user-group.interface.js.map +1 -1
- package/server/applications/users/schemas/user.interface.js +1 -5
- package/server/applications/users/schemas/user.interface.js.map +1 -1
- package/server/applications/users/schemas/users-groups.schema.js +1 -5
- package/server/applications/users/schemas/users-groups.schema.js.map +1 -1
- package/server/applications/users/schemas/users-guests.schema.js +1 -5
- package/server/applications/users/schemas/users-guests.schema.js.map +1 -1
- package/server/applications/users/schemas/users.schema.js +1 -5
- package/server/applications/users/schemas/users.schema.js.map +1 -1
- package/server/applications/users/services/admin-users-manager.service.js +67 -23
- package/server/applications/users/services/admin-users-manager.service.js.map +1 -1
- package/server/applications/users/services/admin-users-manager.service.spec.js +3 -7
- package/server/applications/users/services/admin-users-manager.service.spec.js.map +1 -1
- package/server/applications/users/services/admin-users-queries.service.js +65 -21
- package/server/applications/users/services/admin-users-queries.service.js.map +1 -1
- package/server/applications/users/services/users-manager.service.js +81 -25
- package/server/applications/users/services/users-manager.service.js.map +1 -1
- package/server/applications/users/services/users-manager.service.spec.js +14 -12
- package/server/applications/users/services/users-manager.service.spec.js.map +1 -1
- package/server/applications/users/services/users-queries.service.js +49 -17
- package/server/applications/users/services/users-queries.service.js.map +1 -1
- package/server/applications/users/users.controller.js +2 -6
- package/server/applications/users/users.controller.js.map +1 -1
- package/server/applications/users/users.controller.spec.js +5 -9
- package/server/applications/users/users.controller.spec.js.map +1 -1
- package/server/applications/users/users.e2e-spec.js +3 -7
- package/server/applications/users/users.e2e-spec.js.map +1 -1
- package/server/applications/users/users.gateway.js +29 -12
- package/server/applications/users/users.gateway.js.map +1 -1
- package/server/applications/users/users.gateway.spec.js +1 -5
- package/server/applications/users/users.gateway.spec.js.map +1 -1
- package/server/applications/users/users.module.js +1 -5
- package/server/applications/users/users.module.js.map +1 -1
- package/server/applications/users/utils/avatar.js +1 -5
- package/server/applications/users/utils/avatar.js.map +1 -1
- package/server/applications/users/utils/test.js +1 -5
- package/server/applications/users/utils/test.js.map +1 -1
- package/server/applications/webdav/constants/routes.js +1 -5
- package/server/applications/webdav/constants/routes.js.map +1 -1
- package/server/applications/webdav/constants/webdav.js +1 -5
- package/server/applications/webdav/constants/webdav.js.map +1 -1
- package/server/applications/webdav/decorators/if-header.decorator.js +1 -5
- package/server/applications/webdav/decorators/if-header.decorator.js.map +1 -1
- package/server/applications/webdav/decorators/webdav-context.decorator.js +1 -5
- package/server/applications/webdav/decorators/webdav-context.decorator.js.map +1 -1
- package/server/applications/webdav/filters/webdav.filter.js +1 -5
- package/server/applications/webdav/filters/webdav.filter.js.map +1 -1
- package/server/applications/webdav/filters/webdav.filter.spec.js +1 -5
- package/server/applications/webdav/filters/webdav.filter.spec.js.map +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.js +54 -20
- package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +54 -0
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
- package/server/applications/webdav/interfaces/if-header.interface.js +1 -5
- package/server/applications/webdav/interfaces/if-header.interface.js.map +1 -1
- package/server/applications/webdav/interfaces/webdav.interface.js +1 -5
- package/server/applications/webdav/interfaces/webdav.interface.js.map +1 -1
- package/server/applications/webdav/models/webdav-file.model.js +1 -5
- package/server/applications/webdav/models/webdav-file.model.js.map +1 -1
- package/server/applications/webdav/services/webdav-methods.service.js +74 -26
- package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
- package/server/applications/webdav/services/webdav-methods.service.spec.js +15 -18
- package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
- package/server/applications/webdav/services/webdav-spaces.service.js +17 -9
- package/server/applications/webdav/services/webdav-spaces.service.js.map +1 -1
- package/server/applications/webdav/services/webdav-spaces.service.spec.js +1 -5
- package/server/applications/webdav/services/webdav-spaces.service.spec.js.map +1 -1
- package/server/applications/webdav/utils/bootstrap.js +1 -5
- package/server/applications/webdav/utils/bootstrap.js.map +1 -1
- package/server/applications/webdav/utils/if-header.js +1 -5
- package/server/applications/webdav/utils/if-header.js.map +1 -1
- package/server/applications/webdav/utils/routes.js +1 -5
- package/server/applications/webdav/utils/routes.js.map +1 -1
- package/server/applications/webdav/utils/webdav.js +1 -5
- package/server/applications/webdav/utils/webdav.js.map +1 -1
- package/server/applications/webdav/utils/xml.js +1 -5
- package/server/applications/webdav/utils/xml.js.map +1 -1
- package/server/applications/webdav/webdav.controller.js +1 -5
- package/server/applications/webdav/webdav.controller.js.map +1 -1
- package/server/applications/webdav/webdav.controller.spec.js +1 -5
- package/server/applications/webdav/webdav.controller.spec.js.map +1 -1
- package/server/applications/webdav/webdav.e2e-spec.js +1 -5
- package/server/applications/webdav/webdav.e2e-spec.js.map +1 -1
- package/server/applications/webdav/webdav.module.js +1 -5
- package/server/applications/webdav/webdav.module.js.map +1 -1
- package/server/authentication/auth.config.js +23 -123
- package/server/authentication/auth.config.js.map +1 -1
- package/server/authentication/auth.controller.js +27 -21
- package/server/authentication/auth.controller.js.map +1 -1
- package/server/authentication/auth.controller.spec.js +6 -10
- package/server/authentication/auth.controller.spec.js.map +1 -1
- package/server/authentication/auth.e2e-spec.js +1 -5
- package/server/authentication/auth.e2e-spec.js.map +1 -1
- package/server/authentication/auth.module.js +17 -20
- package/server/authentication/auth.module.js.map +1 -1
- package/server/authentication/{services/auth-manager.service.js → auth.service.js} +41 -18
- package/server/authentication/auth.service.js.map +1 -0
- package/server/authentication/{services/auth-manager.service.spec.js → auth.service.spec.js} +6 -10
- package/server/authentication/auth.service.spec.js.map +1 -0
- package/server/authentication/constants/auth.js +1 -5
- package/server/authentication/constants/auth.js.map +1 -1
- package/server/authentication/constants/routes.js +41 -30
- package/server/authentication/constants/routes.js.map +1 -1
- package/server/authentication/constants/scope.js +2 -5
- package/server/authentication/constants/scope.js.map +1 -1
- package/server/authentication/decorators/auth-token-optional.decorator.js +1 -5
- package/server/authentication/decorators/auth-token-optional.decorator.js.map +1 -1
- package/server/authentication/decorators/auth-token-skip.decorator.js +1 -5
- package/server/authentication/decorators/auth-token-skip.decorator.js.map +1 -1
- package/server/authentication/dto/login-response.dto.js +1 -10
- package/server/authentication/dto/login-response.dto.js.map +1 -1
- package/server/authentication/dto/token-response.dto.js +1 -5
- package/server/authentication/dto/token-response.dto.js.map +1 -1
- package/server/authentication/guards/auth-anonymous.guard.js +1 -5
- package/server/authentication/guards/auth-anonymous.guard.js.map +1 -1
- package/server/authentication/guards/auth-anonymous.guard.spec.js +1 -5
- package/server/authentication/guards/auth-anonymous.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-anonymous.strategy.js +1 -5
- package/server/authentication/guards/auth-anonymous.strategy.js.map +1 -1
- package/server/authentication/guards/auth-basic.guard.js +1 -5
- package/server/authentication/guards/auth-basic.guard.js.map +1 -1
- package/server/authentication/guards/auth-basic.guard.spec.js +13 -14
- package/server/authentication/guards/auth-basic.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-basic.strategy.js +10 -11
- package/server/authentication/guards/auth-basic.strategy.js.map +1 -1
- package/server/authentication/guards/auth-digest.guard.js +1 -5
- package/server/authentication/guards/auth-digest.guard.js.map +1 -1
- package/server/authentication/guards/auth-digest.strategy.js +1 -5
- package/server/authentication/guards/auth-digest.strategy.js.map +1 -1
- package/server/authentication/guards/auth-local.guard.js +1 -5
- package/server/authentication/guards/auth-local.guard.js.map +1 -1
- package/server/authentication/guards/auth-local.guard.spec.js +9 -13
- package/server/authentication/guards/auth-local.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-local.strategy.js +6 -10
- package/server/authentication/guards/auth-local.strategy.js.map +1 -1
- package/server/authentication/guards/auth-token-access.guard.js +1 -5
- package/server/authentication/guards/auth-token-access.guard.js.map +1 -1
- package/server/authentication/guards/auth-token-access.guard.spec.js +3 -7
- package/server/authentication/guards/auth-token-access.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-token-access.strategy.js +3 -7
- package/server/authentication/guards/auth-token-access.strategy.js.map +1 -1
- package/server/authentication/guards/auth-token-refresh.guard.js +1 -5
- package/server/authentication/guards/auth-token-refresh.guard.js.map +1 -1
- package/server/authentication/guards/auth-token-refresh.guard.spec.js +3 -7
- package/server/authentication/guards/auth-token-refresh.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-token-refresh.strategy.js +3 -7
- package/server/authentication/guards/auth-token-refresh.strategy.js.map +1 -1
- package/server/authentication/guards/implementations/http-basic.strategy.js +1 -5
- package/server/authentication/guards/implementations/http-basic.strategy.js.map +1 -1
- package/server/authentication/guards/implementations/http-digest.strategy.js +1 -5
- package/server/authentication/guards/implementations/http-digest.strategy.js.map +1 -1
- package/server/authentication/interfaces/auth-request.interface.js +1 -5
- package/server/authentication/interfaces/auth-request.interface.js.map +1 -1
- package/server/authentication/interfaces/jwt-payload.interface.js +1 -5
- package/server/authentication/interfaces/jwt-payload.interface.js.map +1 -1
- package/server/authentication/interfaces/token.interface.js +1 -5
- package/server/authentication/interfaces/token.interface.js.map +1 -1
- package/server/authentication/providers/auth-providers.constants.js +18 -0
- package/server/authentication/providers/auth-providers.constants.js.map +1 -0
- package/server/authentication/providers/auth-providers.models.js +14 -0
- package/server/authentication/providers/auth-providers.models.js.map +1 -0
- package/server/authentication/providers/auth-providers.utils.js +42 -0
- package/server/authentication/providers/auth-providers.utils.js.map +1 -0
- package/server/authentication/providers/ldap/auth-ldap.config.js +143 -0
- package/server/authentication/providers/ldap/auth-ldap.config.js.map +1 -0
- package/server/authentication/{constants/auth-ldap.js → providers/ldap/auth-ldap.constants.js} +12 -6
- package/server/authentication/providers/ldap/auth-ldap.constants.js.map +1 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.js +506 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.js.map +1 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js +674 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-database.service.js → providers/mysql/auth-provider-mysql.service.js} +16 -14
- package/server/authentication/providers/mysql/auth-provider-mysql.service.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-database.service.spec.js → providers/mysql/auth-provider-mysql.service.spec.js} +15 -19
- package/server/authentication/providers/mysql/auth-provider-mysql.service.spec.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js +30 -0
- package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.config.js +149 -0
- package/server/authentication/providers/oidc/auth-oidc.config.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.constants.js +39 -0
- package/server/authentication/providers/oidc/auth-oidc.constants.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.controller.js +83 -0
- package/server/authentication/providers/oidc/auth-oidc.controller.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.interfaces.js +6 -0
- package/server/authentication/providers/oidc/auth-oidc.interfaces.js.map +1 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.module.js +36 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.module.js.map +1 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.js +373 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.js.map +1 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js +270 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-two-fa.service.js → providers/two-fa/auth-provider-two-fa.service.js} +56 -38
- package/server/authentication/providers/two-fa/auth-provider-two-fa.service.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-two-fa.service.spec.js → providers/two-fa/auth-provider-two-fa.service.spec.js} +6 -10
- package/server/authentication/providers/two-fa/auth-provider-two-fa.service.spec.js.map +1 -0
- package/server/authentication/{guards → providers/two-fa}/auth-two-fa-guard.js +10 -14
- package/server/authentication/providers/two-fa/auth-two-fa-guard.js.map +1 -0
- package/server/authentication/providers/two-fa/auth-two-fa.config.js +57 -0
- package/server/authentication/providers/two-fa/auth-two-fa.config.js.map +1 -0
- package/server/authentication/{dto/two-fa-verify.dto.js → providers/two-fa/auth-two-fa.dtos.js} +8 -6
- package/server/authentication/providers/two-fa/auth-two-fa.dtos.js.map +1 -0
- package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js +6 -0
- package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js.map +1 -0
- package/server/authentication/utils/crypt-secret.js +1 -5
- package/server/authentication/utils/crypt-secret.js.map +1 -1
- package/server/common/constants.js +1 -5
- package/server/common/constants.js.map +1 -1
- package/server/common/decorators.js +1 -5
- package/server/common/decorators.js.map +1 -1
- package/server/common/functions.js +25 -9
- package/server/common/functions.js.map +1 -1
- package/server/common/i18n.js +1 -5
- package/server/common/i18n.js.map +1 -1
- package/server/common/image.js +1 -5
- package/server/common/image.js.map +1 -1
- package/server/common/interfaces.js +1 -5
- package/server/common/interfaces.js.map +1 -1
- package/server/common/qrcode.js +1 -5
- package/server/common/qrcode.js.map +1 -1
- package/server/common/shared.js +6 -6
- package/server/common/shared.js.map +1 -1
- package/server/configuration/config.constants.js +1 -5
- package/server/configuration/config.constants.js.map +1 -1
- package/server/configuration/config.environment.js +2 -6
- package/server/configuration/config.environment.js.map +1 -1
- package/server/configuration/config.interfaces.js +1 -5
- package/server/configuration/config.interfaces.js.map +1 -1
- package/server/configuration/config.loader.js +1 -5
- package/server/configuration/config.loader.js.map +1 -1
- package/server/configuration/config.logger.js +4 -8
- package/server/configuration/config.logger.js.map +1 -1
- package/server/configuration/config.validation.js +7 -5
- package/server/configuration/config.validation.js.map +1 -1
- package/server/infrastructure/cache/adapters/mysql-cache.adapter.js +9 -7
- package/server/infrastructure/cache/adapters/mysql-cache.adapter.js.map +1 -1
- package/server/infrastructure/cache/adapters/redis-cache.adapter.js +1 -5
- package/server/infrastructure/cache/adapters/redis-cache.adapter.js.map +1 -1
- package/server/infrastructure/cache/cache.config.js +1 -5
- package/server/infrastructure/cache/cache.config.js.map +1 -1
- package/server/infrastructure/cache/cache.decorator.js +9 -7
- package/server/infrastructure/cache/cache.decorator.js.map +1 -1
- package/server/infrastructure/cache/cache.e2e-spec.js +1 -5
- package/server/infrastructure/cache/cache.e2e-spec.js.map +1 -1
- package/server/infrastructure/cache/cache.module.js +1 -5
- package/server/infrastructure/cache/cache.module.js.map +1 -1
- package/server/infrastructure/cache/schemas/mysql-cache.interface.js +1 -5
- package/server/infrastructure/cache/schemas/mysql-cache.interface.js.map +1 -1
- package/server/infrastructure/cache/schemas/mysql-cache.schema.js +1 -5
- package/server/infrastructure/cache/schemas/mysql-cache.schema.js.map +1 -1
- package/server/infrastructure/cache/services/cache.service.js +1 -5
- package/server/infrastructure/cache/services/cache.service.js.map +1 -1
- package/server/infrastructure/context/context.module.js +1 -5
- package/server/infrastructure/context/context.module.js.map +1 -1
- package/server/infrastructure/context/interceptors/context.interceptor.js +1 -5
- package/server/infrastructure/context/interceptors/context.interceptor.js.map +1 -1
- package/server/infrastructure/context/interceptors/context.interceptor.spec.js +2 -6
- package/server/infrastructure/context/interceptors/context.interceptor.spec.js.map +1 -1
- package/server/infrastructure/context/interfaces/context-store.interface.js +1 -5
- package/server/infrastructure/context/interfaces/context-store.interface.js.map +1 -1
- package/server/infrastructure/context/services/context-manager.service.js +1 -5
- package/server/infrastructure/context/services/context-manager.service.js.map +1 -1
- package/server/infrastructure/context/services/context-manager.service.spec.js +1 -5
- package/server/infrastructure/context/services/context-manager.service.spec.js.map +1 -1
- package/server/infrastructure/database/columns.js +1 -5
- package/server/infrastructure/database/columns.js.map +1 -1
- package/server/infrastructure/database/configuration.js +1 -5
- package/server/infrastructure/database/configuration.js.map +1 -1
- package/server/infrastructure/database/constants.js +2 -6
- package/server/infrastructure/database/constants.js.map +1 -1
- package/server/infrastructure/database/database.config.js +1 -5
- package/server/infrastructure/database/database.config.js.map +1 -1
- package/server/infrastructure/database/database.logger.js +1 -5
- package/server/infrastructure/database/database.logger.js.map +1 -1
- package/server/infrastructure/database/database.module.js +1 -5
- package/server/infrastructure/database/database.module.js.map +1 -1
- package/server/infrastructure/database/interfaces/database.interface.js +1 -5
- package/server/infrastructure/database/interfaces/database.interface.js.map +1 -1
- package/server/infrastructure/database/schema.js +1 -5
- package/server/infrastructure/database/schema.js.map +1 -1
- package/server/infrastructure/database/scripts/create-user.js +1 -5
- package/server/infrastructure/database/scripts/create-user.js.map +1 -1
- package/server/infrastructure/database/scripts/db.js +1 -5
- package/server/infrastructure/database/scripts/db.js.map +1 -1
- package/server/infrastructure/database/scripts/seed/main.js +1 -5
- package/server/infrastructure/database/scripts/seed/main.js.map +1 -1
- package/server/infrastructure/database/scripts/seed/usersgroups.js +1 -5
- package/server/infrastructure/database/scripts/seed/usersgroups.js.map +1 -1
- package/server/infrastructure/database/utils.js +1 -5
- package/server/infrastructure/database/utils.js.map +1 -1
- package/server/infrastructure/mailer/interfaces/mail.interface.js +1 -5
- package/server/infrastructure/mailer/interfaces/mail.interface.js.map +1 -1
- package/server/infrastructure/mailer/mailer.config.js +1 -5
- package/server/infrastructure/mailer/mailer.config.js.map +1 -1
- package/server/infrastructure/mailer/mailer.module.js +1 -5
- package/server/infrastructure/mailer/mailer.module.js.map +1 -1
- package/server/infrastructure/mailer/mailer.service.js +1 -5
- package/server/infrastructure/mailer/mailer.service.js.map +1 -1
- package/server/infrastructure/mailer/mailer.service.spec.js +2 -6
- package/server/infrastructure/mailer/mailer.service.spec.js.map +1 -1
- package/server/infrastructure/scheduler/scheduler.constants.js +1 -5
- package/server/infrastructure/scheduler/scheduler.constants.js.map +1 -1
- package/server/infrastructure/scheduler/scheduler.module.js +1 -5
- package/server/infrastructure/scheduler/scheduler.module.js.map +1 -1
- package/server/infrastructure/websocket/adapters/cluster.adapter.js +1 -5
- package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
- package/server/infrastructure/websocket/adapters/redis.adapter.js +1 -5
- package/server/infrastructure/websocket/adapters/redis.adapter.js.map +1 -1
- package/server/infrastructure/websocket/adapters/web-socket.adapter.js +1 -5
- package/server/infrastructure/websocket/adapters/web-socket.adapter.js.map +1 -1
- package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js +1 -5
- package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js.map +1 -1
- package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js +1 -5
- package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js.map +1 -1
- package/server/infrastructure/websocket/utils.js +1 -5
- package/server/infrastructure/websocket/utils.js.map +1 -1
- package/server/infrastructure/websocket/web-socket.config.js +1 -5
- package/server/infrastructure/websocket/web-socket.config.js.map +1 -1
- package/server/main.js +5 -0
- package/server/main.js.map +1 -1
- package/static/assets/pdfjs/build/pdf.mjs +724 -745
- package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.sandbox.mjs +2 -2
- package/static/assets/pdfjs/build/pdf.worker.mjs +706 -193
- package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
- package/static/assets/pdfjs/version +1 -1
- package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +5 -5
- package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +1 -0
- package/static/assets/pdfjs/web/locale/fur/viewer.ftl +5 -0
- package/static/assets/pdfjs/web/locale/kk/viewer.ftl +28 -0
- package/static/assets/pdfjs/web/locale/ml/viewer.ftl +4 -0
- package/static/assets/pdfjs/web/locale/ru/viewer.ftl +3 -3
- package/static/assets/pdfjs/web/viewer.css +207 -65
- package/static/assets/pdfjs/web/viewer.html +11 -10
- package/static/assets/pdfjs/web/viewer.mjs +850 -270
- package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
- package/static/assets/pdfjs/web/wasm/LICENSE_JBIG2 +196 -0
- package/static/assets/pdfjs/web/wasm/LICENSE_PDFJS_JBIG2 +13 -0
- package/static/assets/pdfjs/web/wasm/jbig2.wasm +0 -0
- package/static/chunk-22TZP6HW.js +1 -0
- package/static/{chunk-U5E5H2DD.js → chunk-27ATUHBH.js} +1 -1
- package/static/{chunk-HZAB6F4Q.js → chunk-2CKLZ3FM.js} +1 -1
- package/static/{chunk-XZHWESIY.js → chunk-2QZPX7LO.js} +1 -1
- package/static/{chunk-UOK3LKSX.js → chunk-2R6IBBPZ.js} +1 -1
- package/static/{chunk-DVCN3P7Q.js → chunk-4FIGEBNL.js} +1 -1
- package/static/chunk-4P3JABAP.js +13 -0
- package/static/chunk-5CZOSAMZ.js +1 -0
- package/static/{chunk-RBTLSPYJ.js → chunk-677WUBCT.js} +1 -1
- package/static/{chunk-KEZNIIFH.js → chunk-74CAHBFM.js} +1 -1
- package/static/{chunk-WRK2FTKU.js → chunk-7GWW6MJO.js} +1 -1
- package/static/{chunk-EKWB5W72.js → chunk-7WOPGQXB.js} +1 -1
- package/static/{chunk-IMFO2MI7.js → chunk-A4UGPSWX.js} +1 -1
- package/static/{chunk-KDUAB76O.js → chunk-AHO37FKW.js} +1 -1
- package/static/chunk-AQCXMKP3.js +1 -0
- package/static/chunk-B6PDYCRO.js +3 -0
- package/static/{chunk-PPJCVBJH.js → chunk-CU76ATCF.js} +1 -1
- package/static/{chunk-ARS47O5X.js → chunk-CWYHOPOP.js} +1 -1
- package/static/{chunk-CSVPAZHK.js → chunk-E5WI5725.js} +1 -1
- package/static/{chunk-XX3JPJUM.js → chunk-FC5HTKVM.js} +1 -1
- package/static/{chunk-QGHNJVJ6.js → chunk-FOSM7EYI.js} +1 -1
- package/static/{chunk-JAJ7VXMB.js → chunk-GAZO25PI.js} +1 -1
- package/static/{chunk-IHS5LSJJ.js → chunk-GB7ABR5N.js} +1 -1
- package/static/{chunk-27V66YJV.js → chunk-GEHFKZQ5.js} +2 -2
- package/static/{chunk-3QTROEHV.js → chunk-GQFMWVFD.js} +1 -1
- package/static/{chunk-FWQJ4ZCD.js → chunk-GVNTC564.js} +1 -1
- package/static/{chunk-4NIYCYRS.js → chunk-HGL3NYP2.js} +2 -2
- package/static/chunk-HLIWPWRA.js +1 -0
- package/static/{chunk-3VRUIWQG.js → chunk-HNYB3M4S.js} +1 -1
- package/static/{chunk-7HJFIMNF.js → chunk-HUXAUQMN.js} +1 -1
- package/static/chunk-I2XA6PPK.js +1 -0
- package/static/{chunk-RJULB733.js → chunk-ISV3BO6R.js} +1 -1
- package/static/{chunk-R4VYKZVJ.js → chunk-IWWBV6EM.js} +1 -1
- package/static/{chunk-TTWMFWEC.js → chunk-JV3AGU5B.js} +1 -1
- package/static/{chunk-X7NHX5C7.js → chunk-K25E7YGG.js} +1 -1
- package/static/chunk-K46PUTZB.js +1 -0
- package/static/{chunk-D2MLAO5N.js → chunk-KERFLJ56.js} +1 -7
- package/static/{chunk-LZUHREOF.js → chunk-KJD3KFF3.js} +1 -1
- package/static/chunk-KPKSI23S.js +1 -0
- package/static/{chunk-CMNMPG6Z.js → chunk-KZS7CTNR.js} +1 -1
- package/static/{chunk-RNVPQQKT.js → chunk-L5IHUVXL.js} +1 -1
- package/static/{chunk-2GXOVGTD.js → chunk-L7RRX2M3.js} +1 -1
- package/static/{chunk-WFMEUST4.js → chunk-LGWJ2WKU.js} +1 -1
- package/static/{chunk-ZOMRIN3G.js → chunk-MLC7JK2H.js} +2 -2
- package/static/{chunk-76REYAEA.js → chunk-MOHNYW2A.js} +1 -1
- package/static/{chunk-ZHUBWKA2.js → chunk-MTRXBVWZ.js} +1 -1
- package/static/{chunk-QJ22N76V.js → chunk-MZQK6LNV.js} +1 -1
- package/static/{chunk-SDJNZULP.js → chunk-NCDUOVMW.js} +1 -1
- package/static/chunk-NGUAJIGI.js +1 -0
- package/static/chunk-NIPP6JDI.js +1 -0
- package/static/{chunk-VD5JHSDS.js → chunk-NMTBMHUL.js} +1 -1
- package/static/chunk-O4XXMZFX.js +4 -0
- package/static/{chunk-WZPF4LS2.js → chunk-OANZITPM.js} +1 -1
- package/static/{chunk-JNTNMIUH.js → chunk-OGE4SAHU.js} +1 -1
- package/static/{chunk-S6H2ELRY.js → chunk-OI3ME22C.js} +1 -1
- package/static/{chunk-7KAYOR3A.js → chunk-Q3EGCMF5.js} +1 -1
- package/static/chunk-QF2NSHZA.js +1 -0
- package/static/{chunk-3ZBAQTHJ.js → chunk-QIGUDEZF.js} +1 -1
- package/static/{chunk-76M3BMK6.js → chunk-QJVC3SRJ.js} +11 -11
- package/static/{chunk-VBTZDHZ3.js → chunk-QKN6LAAA.js} +1 -1
- package/static/{chunk-JRXG43AA.js → chunk-QRFESU5O.js} +2 -2
- package/static/chunk-QVRVFYJH.js +1 -0
- package/static/{chunk-BCN4T5DO.js → chunk-RFJIPIOK.js} +2 -2
- package/static/{chunk-2RWLNKZH.js → chunk-RLL634K4.js} +1 -1
- package/static/{chunk-D5FQ72R4.js → chunk-RS2OFKWP.js} +1 -1
- package/static/{chunk-CN5YVRFT.js → chunk-RWAAC3A4.js} +1 -1
- package/static/{chunk-LWSCODLD.js → chunk-RWCNTCU5.js} +1 -1
- package/static/{chunk-FTFEQDWH.js → chunk-S5Y64DDS.js} +1 -1
- package/static/{chunk-J7474P3L.js → chunk-SLG5KDU6.js} +1 -1
- package/static/chunk-TJ4CVFEL.js +1 -0
- package/static/{chunk-KAUCN24H.js → chunk-TWCGKSYE.js} +1 -1
- package/static/{chunk-PDG7DOEF.js → chunk-UMDRE4S7.js} +1 -1
- package/static/chunk-VRIOLRYR.js +5 -0
- package/static/chunk-VS4O2XDP.js +1 -0
- package/static/{chunk-ZEJLIGAY.js → chunk-VSBFNFOM.js} +1 -1
- package/static/{chunk-XSURUW7C.js → chunk-WN4WXCVK.js} +1 -1
- package/static/{chunk-S44QIK3G.js → chunk-WX7RXW7K.js} +1 -1
- package/static/{chunk-3ZLBVUCX.js → chunk-XC4POKR3.js} +2 -2
- package/static/{chunk-TNCKNU6I.js → chunk-Y4AUYQTG.js} +1 -1
- package/static/{chunk-3MVPXC3U.js → chunk-Y67J3BOL.js} +1 -1
- package/static/{chunk-QTPIEEZW.js → chunk-YMIXHRJQ.js} +1 -7
- package/static/{chunk-VZFZUI6D.js → chunk-ZUNKFAKP.js} +1 -1
- package/static/index.html +3 -3
- package/static/main-QN4UCOC5.js +5 -0
- package/static/{styles-XLLEY5Y3.css → styles-46GLIE7Y.css} +1 -1
- package/server/authentication/constants/auth-ldap.js.map +0 -1
- package/server/authentication/dto/two-fa-verify.dto.js.map +0 -1
- package/server/authentication/guards/auth-two-fa-guard.js.map +0 -1
- package/server/authentication/interfaces/two-fa-setup.interface.js +0 -10
- package/server/authentication/interfaces/two-fa-setup.interface.js.map +0 -1
- package/server/authentication/models/auth-method.js +0 -18
- package/server/authentication/models/auth-method.js.map +0 -1
- package/server/authentication/services/auth-manager.service.js.map +0 -1
- package/server/authentication/services/auth-manager.service.spec.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-database.service.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-database.service.spec.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-ldap.service.js +0 -326
- package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js +0 -534
- package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-two-fa.service.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-two-fa.service.spec.js.map +0 -1
- package/static/chunk-2YQ4SX3A.js +0 -13
- package/static/chunk-46TJLPJY.js +0 -1
- package/static/chunk-6OEOADR6.js +0 -1
- package/static/chunk-AALPWGPB.js +0 -3
- package/static/chunk-CVXLHSO5.js +0 -1
- package/static/chunk-G7RZN7HN.js +0 -1
- package/static/chunk-LTJNLOX2.js +0 -1
- package/static/chunk-NIKNG2FX.js +0 -1
- package/static/chunk-NNZWSNAW.js +0 -1
- package/static/chunk-NWKBB7J4.js +0 -1
- package/static/chunk-PVYVY3GD.js +0 -1
- package/static/chunk-Q5X5TPAG.js +0 -1
- package/static/chunk-R4VMWCM5.js +0 -1
- package/static/chunk-SNOOCDJD.js +0 -1
- package/static/chunk-SPQH3ATC.js +0 -5
- package/static/chunk-ZCSHU3D7.js +0 -1
- package/static/chunk-ZU5MQTFN.js +0 -4
- package/static/main-5O3KLGIR.js +0 -11
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* pdfjsVersion = 5.4.
|
|
25
|
-
* pdfjsBuild =
|
|
24
|
+
* pdfjsVersion = 5.4.624
|
|
25
|
+
* pdfjsBuild = 384c6208b
|
|
26
26
|
*/
|
|
27
27
|
/******/ // The require scope
|
|
28
28
|
/******/ var __webpack_require__ = {};
|
|
@@ -85,6 +85,7 @@ const {
|
|
|
85
85
|
normalizeUnicode,
|
|
86
86
|
OPS,
|
|
87
87
|
OutputScale,
|
|
88
|
+
PagesMapper,
|
|
88
89
|
PasswordResponses,
|
|
89
90
|
PDFDataRangeTransport,
|
|
90
91
|
PDFDateString,
|
|
@@ -486,7 +487,7 @@ class ProgressBar {
|
|
|
486
487
|
return this.#percent;
|
|
487
488
|
}
|
|
488
489
|
set percent(val) {
|
|
489
|
-
this.#percent =
|
|
490
|
+
this.#percent = val;
|
|
490
491
|
if (isNaN(val)) {
|
|
491
492
|
this.#classList.add("indeterminate");
|
|
492
493
|
return;
|
|
@@ -612,16 +613,12 @@ const calcRound = function () {
|
|
|
612
613
|
} = navigator;
|
|
613
614
|
const isAndroid = /Android/.test(userAgent);
|
|
614
615
|
const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1;
|
|
615
|
-
(
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
if (isAndroid) {
|
|
622
|
-
compatParams.set("useSystemFonts", false);
|
|
623
|
-
}
|
|
624
|
-
})();
|
|
616
|
+
if (isIOS || isAndroid) {
|
|
617
|
+
compatParams.set("maxCanvasPixels", 5242880);
|
|
618
|
+
}
|
|
619
|
+
if (isAndroid) {
|
|
620
|
+
compatParams.set("useSystemFonts", false);
|
|
621
|
+
}
|
|
625
622
|
}
|
|
626
623
|
const OptionKind = {
|
|
627
624
|
BROWSER: 0x01,
|
|
@@ -793,6 +790,10 @@ const defaultOptions = {
|
|
|
793
790
|
value: false,
|
|
794
791
|
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
|
|
795
792
|
},
|
|
793
|
+
enableSplitMerge: {
|
|
794
|
+
value: false,
|
|
795
|
+
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
|
|
796
|
+
},
|
|
796
797
|
enableUpdatedAddImage: {
|
|
797
798
|
value: false,
|
|
798
799
|
kind: OptionKind.VIEWER + OptionKind.PREFERENCE
|
|
@@ -1516,50 +1517,7 @@ class BaseExternalServices {
|
|
|
1516
1517
|
;// ./web/preferences.js
|
|
1517
1518
|
|
|
1518
1519
|
class BasePreferences {
|
|
1519
|
-
#defaults = Object.freeze(
|
|
1520
|
-
altTextLearnMoreUrl: "",
|
|
1521
|
-
annotationEditorMode: 0,
|
|
1522
|
-
annotationMode: 2,
|
|
1523
|
-
capCanvasAreaFactor: 200,
|
|
1524
|
-
commentLearnMoreUrl: "",
|
|
1525
|
-
cursorToolOnLoad: 0,
|
|
1526
|
-
defaultZoomDelay: 400,
|
|
1527
|
-
defaultZoomValue: "",
|
|
1528
|
-
disablePageLabels: false,
|
|
1529
|
-
enableAltText: false,
|
|
1530
|
-
enableAltTextModelDownload: true,
|
|
1531
|
-
enableAutoLinking: true,
|
|
1532
|
-
enableComment: false,
|
|
1533
|
-
enableGuessAltText: true,
|
|
1534
|
-
enableHighlightFloatingButton: false,
|
|
1535
|
-
enableNewAltTextWhenAddingImage: true,
|
|
1536
|
-
enableOptimizedPartialRendering: false,
|
|
1537
|
-
enablePermissions: false,
|
|
1538
|
-
enablePrintAutoRotate: true,
|
|
1539
|
-
enableScripting: true,
|
|
1540
|
-
enableSignatureEditor: false,
|
|
1541
|
-
enableUpdatedAddImage: false,
|
|
1542
|
-
externalLinkTarget: 0,
|
|
1543
|
-
highlightEditorColors: "yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F,yellow_HCM=#FFFFCC,green_HCM=#53FFBC,blue_HCM=#80EBFF,pink_HCM=#F6B8FF,red_HCM=#C50043",
|
|
1544
|
-
historyUpdateUrl: false,
|
|
1545
|
-
ignoreDestinationZoom: false,
|
|
1546
|
-
forcePageColors: false,
|
|
1547
|
-
pageColorsBackground: "Canvas",
|
|
1548
|
-
pageColorsForeground: "CanvasText",
|
|
1549
|
-
pdfBugEnabled: false,
|
|
1550
|
-
sidebarViewOnLoad: -1,
|
|
1551
|
-
scrollModeOnLoad: -1,
|
|
1552
|
-
spreadModeOnLoad: -1,
|
|
1553
|
-
textLayerMode: 1,
|
|
1554
|
-
viewerCssTheme: 0,
|
|
1555
|
-
viewOnLoad: 0,
|
|
1556
|
-
disableAutoFetch: false,
|
|
1557
|
-
disableFontFace: false,
|
|
1558
|
-
disableRange: false,
|
|
1559
|
-
disableStream: false,
|
|
1560
|
-
enableHWA: true,
|
|
1561
|
-
enableXfa: true
|
|
1562
|
-
});
|
|
1520
|
+
#defaults = Object.freeze(AppOptions.getAll(OptionKind.PREFERENCE, true));
|
|
1563
1521
|
#initializedPromise = null;
|
|
1564
1522
|
constructor() {
|
|
1565
1523
|
this.#initializedPromise = this._readFromStorage(this.#defaults).then(({
|
|
@@ -1597,6 +1555,9 @@ class BasePreferences {
|
|
|
1597
1555
|
await this.#initializedPromise;
|
|
1598
1556
|
return AppOptions.get(name);
|
|
1599
1557
|
}
|
|
1558
|
+
get defaults() {
|
|
1559
|
+
return this.#defaults;
|
|
1560
|
+
}
|
|
1600
1561
|
get initializedPromise() {
|
|
1601
1562
|
return this.#initializedPromise;
|
|
1602
1563
|
}
|
|
@@ -3160,7 +3121,7 @@ class genericl10n_GenericL10n extends L10n {
|
|
|
3160
3121
|
yield this.#createBundleFallback(lang);
|
|
3161
3122
|
}
|
|
3162
3123
|
static async #createBundleFallback(lang) {
|
|
3163
|
-
const text = "pdfjs-previous-button =\n .title = Previous Page\npdfjs-previous-button-label = Previous\npdfjs-next-button =\n .title = Next Page\npdfjs-next-button-label = Next\npdfjs-page-input =\n .title = Page\npdfjs-of-pages = of { $pagesCount }\npdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })\npdfjs-zoom-out-button =\n .title = Zoom Out\npdfjs-zoom-out-button-label = Zoom Out\npdfjs-zoom-in-button =\n .title = Zoom In\npdfjs-zoom-in-button-label = Zoom In\npdfjs-zoom-select =\n .title = Zoom\npdfjs-presentation-mode-button =\n .title = Switch to Presentation Mode\npdfjs-presentation-mode-button-label = Presentation Mode\npdfjs-open-file-button =\n .title = Open File\npdfjs-open-file-button-label = Open\npdfjs-print-button =\n .title = Print\npdfjs-print-button-label = Print\npdfjs-save-button =\n .title = Save\npdfjs-save-button-label = Save\npdfjs-download-button =\n .title = Download\npdfjs-download-button-label = Download\npdfjs-bookmark-button =\n .title = Current Page (View URL from Current Page)\npdfjs-bookmark-button-label = Current Page\npdfjs-tools-button =\n .title = Tools\npdfjs-tools-button-label = Tools\npdfjs-first-page-button =\n .title = Go to First Page\npdfjs-first-page-button-label = Go to First Page\npdfjs-last-page-button =\n .title = Go to Last Page\npdfjs-last-page-button-label = Go to Last Page\npdfjs-page-rotate-cw-button =\n .title = Rotate Clockwise\npdfjs-page-rotate-cw-button-label = Rotate Clockwise\npdfjs-page-rotate-ccw-button =\n .title = Rotate Counterclockwise\npdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise\npdfjs-cursor-text-select-tool-button =\n .title = Enable Text Selection Tool\npdfjs-cursor-text-select-tool-button-label = Text Selection Tool\npdfjs-cursor-hand-tool-button =\n .title = Enable Hand Tool\npdfjs-cursor-hand-tool-button-label = Hand Tool\npdfjs-scroll-page-button =\n .title = Use Page Scrolling\npdfjs-scroll-page-button-label = Page Scrolling\npdfjs-scroll-vertical-button =\n .title = Use Vertical Scrolling\npdfjs-scroll-vertical-button-label = Vertical Scrolling\npdfjs-scroll-horizontal-button =\n .title = Use Horizontal Scrolling\npdfjs-scroll-horizontal-button-label = Horizontal Scrolling\npdfjs-scroll-wrapped-button =\n .title = Use Wrapped Scrolling\npdfjs-scroll-wrapped-button-label = Wrapped Scrolling\npdfjs-spread-none-button =\n .title = Do not join page spreads\npdfjs-spread-none-button-label = No Spreads\npdfjs-spread-odd-button =\n .title = Join page spreads starting with odd-numbered pages\npdfjs-spread-odd-button-label = Odd Spreads\npdfjs-spread-even-button =\n .title = Join page spreads starting with even-numbered pages\npdfjs-spread-even-button-label = Even Spreads\npdfjs-document-properties-button =\n .title = Document Properties\u2026\npdfjs-document-properties-button-label = Document Properties\u2026\npdfjs-document-properties-file-name = File name:\npdfjs-document-properties-file-size = File size:\npdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\npdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\npdfjs-document-properties-title = Title:\npdfjs-document-properties-author = Author:\npdfjs-document-properties-subject = Subject:\npdfjs-document-properties-keywords = Keywords:\npdfjs-document-properties-creation-date = Creation Date:\npdfjs-document-properties-modification-date = Modification Date:\npdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\npdfjs-document-properties-creator = Creator:\npdfjs-document-properties-producer = PDF Producer:\npdfjs-document-properties-version = PDF Version:\npdfjs-document-properties-page-count = Page Count:\npdfjs-document-properties-page-size = Page Size:\npdfjs-document-properties-page-size-unit-inches = in\npdfjs-document-properties-page-size-unit-millimeters = mm\npdfjs-document-properties-page-size-orientation-portrait = portrait\npdfjs-document-properties-page-size-orientation-landscape = landscape\npdfjs-document-properties-page-size-name-a-three = A3\npdfjs-document-properties-page-size-name-a-four = A4\npdfjs-document-properties-page-size-name-letter = Letter\npdfjs-document-properties-page-size-name-legal = Legal\npdfjs-document-properties-page-size-dimension-string = { $width } \xD7 { $height } { $unit } ({ $orientation })\npdfjs-document-properties-page-size-dimension-name-string = { $width } \xD7 { $height } { $unit } ({ $name }, { $orientation })\npdfjs-document-properties-linearized = Fast Web View:\npdfjs-document-properties-linearized-yes = Yes\npdfjs-document-properties-linearized-no = No\npdfjs-document-properties-close-button = Close\npdfjs-print-progress-message = Preparing document for printing\u2026\npdfjs-print-progress-percent = { $progress }%\npdfjs-print-progress-close-button = Cancel\npdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.\npdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.\npdfjs-current-outline-item-button =\n .title = Find Current Outline Item\npdfjs-current-outline-item-button-label = Current Outline Item\npdfjs-findbar-button =\n .title = Find in Document\npdfjs-findbar-button-label = Find\npdfjs-additional-layers = Additional Layers\npdfjs-thumb-page-title =\n .title = Page { $page }\npdfjs-thumb-page-canvas =\n .aria-label = Thumbnail of Page { $page }\npdfjs-find-input =\n .title = Find\n .placeholder = Find in document\u2026\npdfjs-find-previous-button =\n .title = Find the previous occurrence of the phrase\npdfjs-find-previous-button-label = Previous\npdfjs-find-next-button =\n .title = Find the next occurrence of the phrase\npdfjs-find-next-button-label = Next\npdfjs-find-highlight-checkbox = Highlight All\npdfjs-find-match-case-checkbox-label = Match Case\npdfjs-find-match-diacritics-checkbox-label = Match Diacritics\npdfjs-find-entire-word-checkbox-label = Whole Words\npdfjs-find-reached-top = Reached top of document, continued from bottom\npdfjs-find-reached-bottom = Reached end of document, continued from top\npdfjs-find-match-count =\n { $total ->\n [one] { $current } of { $total } match\n *[other] { $current } of { $total } matches\n }\npdfjs-find-match-count-limit =\n { $limit ->\n [one] More than { $limit } match\n *[other] More than { $limit } matches\n }\npdfjs-find-not-found = Phrase not found\npdfjs-page-scale-width = Page Width\npdfjs-page-scale-fit = Page Fit\npdfjs-page-scale-auto = Automatic Zoom\npdfjs-page-scale-actual = Actual Size\npdfjs-page-scale-percent = { $scale }%\npdfjs-page-landmark =\n .aria-label = Page { $page }\npdfjs-loading-error = An error occurred while loading the PDF.\npdfjs-invalid-file-error = Invalid or corrupted PDF file.\npdfjs-missing-file-error = Missing PDF file.\npdfjs-unexpected-response-error = Unexpected server response.\npdfjs-rendering-error = An error occurred while rendering the page.\npdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\npdfjs-text-annotation-type =\n .alt = [{ $type } Annotation]\npdfjs-password-label = Enter the password to open this PDF file.\npdfjs-password-invalid = Invalid password. Please try again.\npdfjs-password-ok-button = OK\npdfjs-password-cancel-button = Cancel\npdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.\npdfjs-editor-free-text-button =\n .title = Text\npdfjs-editor-color-picker-free-text-input =\n .title = Change text color\npdfjs-editor-free-text-button-label = Text\npdfjs-editor-ink-button =\n .title = Draw\npdfjs-editor-color-picker-ink-input =\n .title = Change drawing color\npdfjs-editor-ink-button-label = Draw\npdfjs-editor-stamp-button =\n .title = Add or edit images\npdfjs-editor-stamp-button-label = Add or edit images\npdfjs-editor-highlight-button =\n .title = Highlight\npdfjs-editor-highlight-button-label = Highlight\npdfjs-highlight-floating-button1 =\n .title = Highlight\n .aria-label = Highlight\npdfjs-highlight-floating-button-label = Highlight\npdfjs-comment-floating-button =\n .title = Comment\n .aria-label = Comment\npdfjs-comment-floating-button-label = Comment\npdfjs-editor-comment-button =\n .title = Comment\n .aria-label = Comment\npdfjs-editor-comment-button-label = Comment\npdfjs-editor-signature-button =\n .title = Add signature\npdfjs-editor-signature-button-label = Add signature\npdfjs-editor-highlight-editor =\n .aria-label = Highlight editor\npdfjs-editor-ink-editor =\n .aria-label = Drawing editor\npdfjs-editor-signature-editor1 =\n .aria-description = Signature editor: { $description }\npdfjs-editor-stamp-editor =\n .aria-label = Image editor\npdfjs-editor-remove-ink-button =\n .title = Remove drawing\npdfjs-editor-remove-freetext-button =\n .title = Remove text\npdfjs-editor-remove-stamp-button =\n .title = Remove image\npdfjs-editor-remove-highlight-button =\n .title = Remove highlight\npdfjs-editor-remove-signature-button =\n .title = Remove signature\npdfjs-editor-free-text-color-input = Color\npdfjs-editor-free-text-size-input = Size\npdfjs-editor-ink-color-input = Color\npdfjs-editor-ink-thickness-input = Thickness\npdfjs-editor-ink-opacity-input = Opacity\npdfjs-editor-stamp-add-image-button =\n .title = Add image\npdfjs-editor-stamp-add-image-button-label = Add image\npdfjs-editor-free-highlight-thickness-input = Thickness\npdfjs-editor-free-highlight-thickness-title =\n .title = Change thickness when highlighting items other than text\npdfjs-editor-add-signature-container =\n .aria-label = Signature controls and saved signatures\npdfjs-editor-signature-add-signature-button =\n .title = Add new signature\npdfjs-editor-signature-add-signature-button-label = Add new signature\npdfjs-editor-add-saved-signature-button =\n .title = Saved signature: { $description }\npdfjs-free-text2 =\n .aria-label = Text Editor\n .default-content = Start typing\u2026\npdfjs-editor-comments-sidebar-title =\n { $count ->\n [one] Comment\n *[other] Comments\n }\npdfjs-editor-comments-sidebar-close-button =\n .title = Close the sidebar\n .aria-label = Close the sidebar\npdfjs-editor-comments-sidebar-close-button-label = Close the sidebar\npdfjs-editor-comments-sidebar-no-comments1 = See something noteworthy? Highlight it and leave a comment.\npdfjs-editor-comments-sidebar-no-comments-link = Learn more\npdfjs-editor-alt-text-button =\n .aria-label = Alt text\npdfjs-editor-alt-text-button-label = Alt text\npdfjs-editor-alt-text-edit-button =\n .aria-label = Edit alt text\npdfjs-editor-alt-text-dialog-label = Choose an option\npdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can\u2019t see the image or when it doesn\u2019t load.\npdfjs-editor-alt-text-add-description-label = Add a description\npdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.\npdfjs-editor-alt-text-mark-decorative-label = Mark as decorative\npdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.\npdfjs-editor-alt-text-cancel-button = Cancel\npdfjs-editor-alt-text-save-button = Save\npdfjs-editor-alt-text-decorative-tooltip = Marked as decorative\npdfjs-editor-alt-text-textarea =\n .placeholder = For example, \u201CA young man sits down at a table to eat a meal\u201D\npdfjs-editor-resizer-top-left =\n .aria-label = Top left corner \u2014 resize\npdfjs-editor-resizer-top-middle =\n .aria-label = Top middle \u2014 resize\npdfjs-editor-resizer-top-right =\n .aria-label = Top right corner \u2014 resize\npdfjs-editor-resizer-middle-right =\n .aria-label = Middle right \u2014 resize\npdfjs-editor-resizer-bottom-right =\n .aria-label = Bottom right corner \u2014 resize\npdfjs-editor-resizer-bottom-middle =\n .aria-label = Bottom middle \u2014 resize\npdfjs-editor-resizer-bottom-left =\n .aria-label = Bottom left corner \u2014 resize\npdfjs-editor-resizer-middle-left =\n .aria-label = Middle left \u2014 resize\npdfjs-editor-highlight-colorpicker-label = Highlight color\npdfjs-editor-colorpicker-button =\n .title = Change color\npdfjs-editor-colorpicker-dropdown =\n .aria-label = Color choices\npdfjs-editor-colorpicker-yellow =\n .title = Yellow\npdfjs-editor-colorpicker-green =\n .title = Green\npdfjs-editor-colorpicker-blue =\n .title = Blue\npdfjs-editor-colorpicker-pink =\n .title = Pink\npdfjs-editor-colorpicker-red =\n .title = Red\npdfjs-editor-highlight-show-all-button-label = Show all\npdfjs-editor-highlight-show-all-button =\n .title = Show all\npdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)\npdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)\npdfjs-editor-new-alt-text-textarea =\n .placeholder = Write your description here\u2026\npdfjs-editor-new-alt-text-description = Short description for people who can\u2019t see the image or when the image doesn\u2019t load.\npdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.\npdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more\npdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically\npdfjs-editor-new-alt-text-not-now-button = Not now\npdfjs-editor-new-alt-text-error-title = Couldn\u2019t create alt text automatically\npdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.\npdfjs-editor-new-alt-text-error-close-button = Close\npdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\npdfjs-editor-new-alt-text-added-button =\n .aria-label = Alt text added\npdfjs-editor-new-alt-text-added-button-label = Alt text added\npdfjs-editor-new-alt-text-missing-button =\n .aria-label = Missing alt text\npdfjs-editor-new-alt-text-missing-button-label = Missing alt text\npdfjs-editor-new-alt-text-to-review-button =\n .aria-label = Review alt text\npdfjs-editor-new-alt-text-to-review-button-label = Review alt text\npdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }\npdfjs-image-alt-text-settings-button =\n .title = Image alt text settings\npdfjs-image-alt-text-settings-button-label = Image alt text settings\npdfjs-editor-alt-text-settings-dialog-label = Image alt text settings\npdfjs-editor-alt-text-settings-automatic-title = Automatic alt text\npdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically\npdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can\u2019t see the image or when the image doesn\u2019t load.\npdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)\npdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.\npdfjs-editor-alt-text-settings-delete-model-button = Delete\npdfjs-editor-alt-text-settings-download-model-button = Download\npdfjs-editor-alt-text-settings-downloading-model-button = Downloading\u2026\npdfjs-editor-alt-text-settings-editor-title = Alt text editor\npdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image\npdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.\npdfjs-editor-alt-text-settings-close-button = Close\npdfjs-editor-highlight-added-alert = Highlight added\npdfjs-editor-freetext-added-alert = Text added\npdfjs-editor-ink-added-alert = Drawing added\npdfjs-editor-stamp-added-alert = Image added\npdfjs-editor-signature-added-alert = Signature added\npdfjs-editor-undo-bar-message-highlight = Highlight removed\npdfjs-editor-undo-bar-message-freetext = Text removed\npdfjs-editor-undo-bar-message-ink = Drawing removed\npdfjs-editor-undo-bar-message-stamp = Image removed\npdfjs-editor-undo-bar-message-signature = Signature removed\npdfjs-editor-undo-bar-message-multiple =\n { $count ->\n [one] { $count } annotation removed\n *[other] { $count } annotations removed\n }\npdfjs-editor-undo-bar-undo-button =\n .title = Undo\npdfjs-editor-undo-bar-undo-button-label = Undo\npdfjs-editor-undo-bar-close-button =\n .title = Close\npdfjs-editor-undo-bar-close-button-label = Close\npdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.\npdfjs-editor-add-signature-dialog-title = Add a signature\npdfjs-editor-add-signature-type-button = Type\n .title = Type\npdfjs-editor-add-signature-draw-button = Draw\n .title = Draw\npdfjs-editor-add-signature-image-button = Image\n .title = Image\npdfjs-editor-add-signature-type-input =\n .aria-label = Type your signature\n .placeholder = Type your signature\npdfjs-editor-add-signature-draw-placeholder = Draw your signature\npdfjs-editor-add-signature-draw-thickness-range-label = Thickness\npdfjs-editor-add-signature-draw-thickness-range =\n .title = Drawing thickness: { $thickness }\npdfjs-editor-add-signature-image-placeholder = Drag a file here to upload\npdfjs-editor-add-signature-image-browse-link =\n { PLATFORM() ->\n [macos] Or choose image files\n *[other] Or browse image files\n }\npdfjs-editor-add-signature-description-label = Description (alt text)\npdfjs-editor-add-signature-description-input =\n .title = Description (alt text)\npdfjs-editor-add-signature-description-default-when-drawing = Signature\npdfjs-editor-add-signature-clear-button-label = Clear signature\npdfjs-editor-add-signature-clear-button =\n .title = Clear signature\npdfjs-editor-add-signature-save-checkbox = Save signature\npdfjs-editor-add-signature-save-warning-message = You\u2019ve reached the limit of 5 saved signatures. Remove one to save more.\npdfjs-editor-add-signature-image-upload-error-title = Couldn\u2019t upload image\npdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image.\npdfjs-editor-add-signature-image-no-data-error-title = Can\u2019t convert this image into a signature\npdfjs-editor-add-signature-image-no-data-error-description = Please try uploading a different image.\npdfjs-editor-add-signature-error-close-button = Close\npdfjs-editor-add-signature-cancel-button = Cancel\npdfjs-editor-add-signature-add-button = Add\npdfjs-editor-delete-signature-button1 =\n .title = Remove saved signature\npdfjs-editor-delete-signature-button-label1 = Remove saved signature\npdfjs-editor-add-signature-edit-button-label = Edit description\npdfjs-editor-edit-signature-dialog-title = Edit description\npdfjs-editor-edit-signature-update-button = Update\npdfjs-show-comment-button =\n .title = Show comment\npdfjs-editor-edit-comment-popup-button-label = Edit comment\npdfjs-editor-edit-comment-popup-button =\n .title = Edit comment\npdfjs-editor-delete-comment-popup-button-label = Remove comment\npdfjs-editor-delete-comment-popup-button =\n .title = Remove comment\npdfjs-editor-edit-comment-dialog-title-when-editing = Edit comment\npdfjs-editor-edit-comment-dialog-save-button-when-editing = Update\npdfjs-editor-edit-comment-dialog-title-when-adding = Add comment\npdfjs-editor-edit-comment-dialog-save-button-when-adding = Add\npdfjs-editor-edit-comment-dialog-text-input =\n .placeholder = Start typing\u2026\npdfjs-editor-edit-comment-dialog-cancel-button = Cancel\npdfjs-editor-add-comment-button =\n .title = Add comment\npdfjs-toggle-views-manager-button =\n .title = Toggle Sidebar\npdfjs-toggle-views-manager-notification-button =\n .title = Toggle Sidebar (document contains thumbnails/outline/attachments/layers)\npdfjs-toggle-views-manager-button-label = Toggle Sidebar\npdfjs-views-manager-sidebar =\n .aria-label = Sidebar\npdfjs-views-manager-view-selector-button =\n .title = Views\npdfjs-views-manager-view-selector-button-label = Views\npdfjs-views-manager-pages-title = Pages\npdfjs-views-manager-outlines-title = Document outline\npdfjs-views-manager-attachments-title = Attachments\npdfjs-views-manager-layers-title = Layers\npdfjs-views-manager-pages-option-label = Pages\npdfjs-views-manager-outlines-option-label = Document outline\npdfjs-views-manager-attachments-option-label = Attachments\npdfjs-views-manager-layers-option-label = Layers\npdfjs-views-manager-add-file-button =\n .title = Add file\npdfjs-views-manager-add-file-button-label = Add file\npdfjs-views-manager-pages-status-action-label =\n { $count ->\n [one] { $count } selected\n *[other] { $count } selected\n }\npdfjs-views-manager-pages-status-none-action-label = Select pages\npdfjs-views-manager-pages-status-action-button-label = Manage\npdfjs-views-manager-pages-status-copy-button-label = Copy\npdfjs-views-manager-pages-status-cut-button-label = Cut\npdfjs-views-manager-pages-status-delete-button-label = Delete\npdfjs-views-manager-pages-status-save-as-button-label = Save as\u2026\npdfjs-views-manager-status-undo-cut-label =\n { $count ->\n [one] 1 page cut\n *[other] { $count } pages cut\n }\npdfjs-views-manager-pages-status-undo-copy-label =\n { $count ->\n [one] 1 page copied\n *[other] { $count } pages copied\n }\npdfjs-views-manager-pages-status-undo-delete-label =\n { $count ->\n [one] 1 page deleted\n *[other] { $count } pages deleted\n }\npdfjs-views-manager-pages-status-waiting-ready-label = Getting your file ready\u2026\npdfjs-views-manager-pages-status-waiting-uploading-label = Uploading file\u2026\npdfjs-views-manager-status-warning-cut-label = Couldn\u2019t cut. Refresh page and try again.\npdfjs-views-manager-status-warning-copy-label = Couldn\u2019t copy. Refresh page and try again.\npdfjs-views-manager-status-warning-delete-label = Couldn\u2019t delete. Refresh page and try again.\npdfjs-views-manager-status-warning-save-label = Couldn\u2019t save. Refresh page and try again.\npdfjs-views-manager-status-undo-button-label = Undo\npdfjs-views-manager-status-close-button =\n .title = Close\npdfjs-views-manager-status-close-button-label = Close";
|
|
3124
|
+
const text = "pdfjs-previous-button =\n .title = Previous Page\npdfjs-previous-button-label = Previous\npdfjs-next-button =\n .title = Next Page\npdfjs-next-button-label = Next\npdfjs-page-input =\n .title = Page\npdfjs-of-pages = of { $pagesCount }\npdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })\npdfjs-zoom-out-button =\n .title = Zoom Out\npdfjs-zoom-out-button-label = Zoom Out\npdfjs-zoom-in-button =\n .title = Zoom In\npdfjs-zoom-in-button-label = Zoom In\npdfjs-zoom-select =\n .title = Zoom\npdfjs-presentation-mode-button =\n .title = Switch to Presentation Mode\npdfjs-presentation-mode-button-label = Presentation Mode\npdfjs-open-file-button =\n .title = Open File\npdfjs-open-file-button-label = Open\npdfjs-print-button =\n .title = Print\npdfjs-print-button-label = Print\npdfjs-save-button =\n .title = Save\npdfjs-save-button-label = Save\npdfjs-download-button =\n .title = Download\npdfjs-download-button-label = Download\npdfjs-bookmark-button =\n .title = Current Page (View URL from Current Page)\npdfjs-bookmark-button-label = Current Page\npdfjs-tools-button =\n .title = Tools\npdfjs-tools-button-label = Tools\npdfjs-first-page-button =\n .title = Go to First Page\npdfjs-first-page-button-label = Go to First Page\npdfjs-last-page-button =\n .title = Go to Last Page\npdfjs-last-page-button-label = Go to Last Page\npdfjs-page-rotate-cw-button =\n .title = Rotate Clockwise\npdfjs-page-rotate-cw-button-label = Rotate Clockwise\npdfjs-page-rotate-ccw-button =\n .title = Rotate Counterclockwise\npdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise\npdfjs-cursor-text-select-tool-button =\n .title = Enable Text Selection Tool\npdfjs-cursor-text-select-tool-button-label = Text Selection Tool\npdfjs-cursor-hand-tool-button =\n .title = Enable Hand Tool\npdfjs-cursor-hand-tool-button-label = Hand Tool\npdfjs-scroll-page-button =\n .title = Use Page Scrolling\npdfjs-scroll-page-button-label = Page Scrolling\npdfjs-scroll-vertical-button =\n .title = Use Vertical Scrolling\npdfjs-scroll-vertical-button-label = Vertical Scrolling\npdfjs-scroll-horizontal-button =\n .title = Use Horizontal Scrolling\npdfjs-scroll-horizontal-button-label = Horizontal Scrolling\npdfjs-scroll-wrapped-button =\n .title = Use Wrapped Scrolling\npdfjs-scroll-wrapped-button-label = Wrapped Scrolling\npdfjs-spread-none-button =\n .title = Do not join page spreads\npdfjs-spread-none-button-label = No Spreads\npdfjs-spread-odd-button =\n .title = Join page spreads starting with odd-numbered pages\npdfjs-spread-odd-button-label = Odd Spreads\npdfjs-spread-even-button =\n .title = Join page spreads starting with even-numbered pages\npdfjs-spread-even-button-label = Even Spreads\npdfjs-document-properties-button =\n .title = Document Properties\u2026\npdfjs-document-properties-button-label = Document Properties\u2026\npdfjs-document-properties-file-name = File name:\npdfjs-document-properties-file-size = File size:\npdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\npdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\npdfjs-document-properties-title = Title:\npdfjs-document-properties-author = Author:\npdfjs-document-properties-subject = Subject:\npdfjs-document-properties-keywords = Keywords:\npdfjs-document-properties-creation-date = Creation Date:\npdfjs-document-properties-modification-date = Modification Date:\npdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\npdfjs-document-properties-creator = Creator:\npdfjs-document-properties-producer = PDF Producer:\npdfjs-document-properties-version = PDF Version:\npdfjs-document-properties-page-count = Page Count:\npdfjs-document-properties-page-size = Page Size:\npdfjs-document-properties-page-size-unit-inches = in\npdfjs-document-properties-page-size-unit-millimeters = mm\npdfjs-document-properties-page-size-orientation-portrait = portrait\npdfjs-document-properties-page-size-orientation-landscape = landscape\npdfjs-document-properties-page-size-name-a-three = A3\npdfjs-document-properties-page-size-name-a-four = A4\npdfjs-document-properties-page-size-name-letter = Letter\npdfjs-document-properties-page-size-name-legal = Legal\npdfjs-document-properties-page-size-dimension-string = { $width } \xD7 { $height } { $unit } ({ $orientation })\npdfjs-document-properties-page-size-dimension-name-string = { $width } \xD7 { $height } { $unit } ({ $name }, { $orientation })\npdfjs-document-properties-linearized = Fast Web View:\npdfjs-document-properties-linearized-yes = Yes\npdfjs-document-properties-linearized-no = No\npdfjs-document-properties-close-button = Close\npdfjs-print-progress-message = Preparing document for printing\u2026\npdfjs-print-progress-percent = { $progress }%\npdfjs-print-progress-close-button = Cancel\npdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.\npdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.\npdfjs-current-outline-item-button =\n .title = Find Current Outline Item\npdfjs-current-outline-item-button-label = Current Outline Item\npdfjs-findbar-button =\n .title = Find in Document\npdfjs-findbar-button-label = Find\npdfjs-additional-layers = Additional Layers\npdfjs-thumb-page-title =\n .title = Page { $page }\npdfjs-thumb-page-canvas =\n .aria-label = Thumbnail of Page { $page }\npdfjs-find-input =\n .title = Find\n .placeholder = Find in document\u2026\npdfjs-find-previous-button =\n .title = Find the previous occurrence of the phrase\npdfjs-find-previous-button-label = Previous\npdfjs-find-next-button =\n .title = Find the next occurrence of the phrase\npdfjs-find-next-button-label = Next\npdfjs-find-highlight-checkbox = Highlight All\npdfjs-find-match-case-checkbox-label = Match Case\npdfjs-find-match-diacritics-checkbox-label = Match Diacritics\npdfjs-find-entire-word-checkbox-label = Whole Words\npdfjs-find-reached-top = Reached top of document, continued from bottom\npdfjs-find-reached-bottom = Reached end of document, continued from top\npdfjs-find-match-count =\n { $total ->\n [one] { $current } of { $total } match\n *[other] { $current } of { $total } matches\n }\npdfjs-find-match-count-limit =\n { $limit ->\n [one] More than { $limit } match\n *[other] More than { $limit } matches\n }\npdfjs-find-not-found = Phrase not found\npdfjs-page-scale-width = Page Width\npdfjs-page-scale-fit = Page Fit\npdfjs-page-scale-auto = Automatic Zoom\npdfjs-page-scale-actual = Actual Size\npdfjs-page-scale-percent = { $scale }%\npdfjs-page-landmark =\n .aria-label = Page { $page }\npdfjs-loading-error = An error occurred while loading the PDF.\npdfjs-invalid-file-error = Invalid or corrupted PDF file.\npdfjs-missing-file-error = Missing PDF file.\npdfjs-unexpected-response-error = Unexpected server response.\npdfjs-rendering-error = An error occurred while rendering the page.\npdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\npdfjs-text-annotation-type =\n .alt = [{ $type } Annotation]\npdfjs-password-label = Enter the password to open this PDF file.\npdfjs-password-invalid = Invalid password. Please try again.\npdfjs-password-ok-button = OK\npdfjs-password-cancel-button = Cancel\npdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.\npdfjs-editor-free-text-button =\n .title = Text\npdfjs-editor-color-picker-free-text-input =\n .title = Change text color\npdfjs-editor-free-text-button-label = Text\npdfjs-editor-ink-button =\n .title = Draw\npdfjs-editor-color-picker-ink-input =\n .title = Change drawing color\npdfjs-editor-ink-button-label = Draw\npdfjs-editor-stamp-button =\n .title = Add or edit images\npdfjs-editor-stamp-button-label = Add or edit images\npdfjs-editor-highlight-button =\n .title = Highlight\npdfjs-editor-highlight-button-label = Highlight\npdfjs-highlight-floating-button1 =\n .title = Highlight\n .aria-label = Highlight\npdfjs-highlight-floating-button-label = Highlight\npdfjs-comment-floating-button =\n .title = Comment\n .aria-label = Comment\npdfjs-comment-floating-button-label = Comment\npdfjs-editor-comment-button =\n .title = Comment\n .aria-label = Comment\npdfjs-editor-comment-button-label = Comment\npdfjs-editor-signature-button =\n .title = Add signature\npdfjs-editor-signature-button-label = Add signature\npdfjs-editor-highlight-editor =\n .aria-label = Highlight editor\npdfjs-editor-ink-editor =\n .aria-label = Drawing editor\npdfjs-editor-signature-editor1 =\n .aria-description = Signature editor: { $description }\npdfjs-editor-stamp-editor =\n .aria-label = Image editor\npdfjs-editor-remove-ink-button =\n .title = Remove drawing\npdfjs-editor-remove-freetext-button =\n .title = Remove text\npdfjs-editor-remove-stamp-button =\n .title = Remove image\npdfjs-editor-remove-highlight-button =\n .title = Remove highlight\npdfjs-editor-remove-signature-button =\n .title = Remove signature\npdfjs-editor-free-text-color-input = Color\npdfjs-editor-free-text-size-input = Size\npdfjs-editor-ink-color-input = Color\npdfjs-editor-ink-thickness-input = Thickness\npdfjs-editor-ink-opacity-input = Opacity\npdfjs-editor-stamp-add-image-button =\n .title = Add image\npdfjs-editor-stamp-add-image-button-label = Add image\npdfjs-editor-free-highlight-thickness-input = Thickness\npdfjs-editor-free-highlight-thickness-title =\n .title = Change thickness when highlighting items other than text\npdfjs-editor-add-signature-container =\n .aria-label = Signature controls and saved signatures\npdfjs-editor-signature-add-signature-button =\n .title = Add new signature\npdfjs-editor-signature-add-signature-button-label = Add new signature\npdfjs-editor-add-saved-signature-button =\n .title = Saved signature: { $description }\npdfjs-free-text2 =\n .aria-label = Text Editor\n .default-content = Start typing\u2026\npdfjs-editor-comments-sidebar-title =\n { $count ->\n [one] Comment\n *[other] Comments\n }\npdfjs-editor-comments-sidebar-close-button =\n .title = Close the sidebar\n .aria-label = Close the sidebar\npdfjs-editor-comments-sidebar-close-button-label = Close the sidebar\npdfjs-editor-comments-sidebar-no-comments1 = See something noteworthy? Highlight it and leave a comment.\npdfjs-editor-comments-sidebar-no-comments-link = Learn more\npdfjs-editor-alt-text-button =\n .aria-label = Alt text\npdfjs-editor-alt-text-button-label = Alt text\npdfjs-editor-alt-text-edit-button =\n .aria-label = Edit alt text\npdfjs-editor-alt-text-dialog-label = Choose an option\npdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can\u2019t see the image or when it doesn\u2019t load.\npdfjs-editor-alt-text-add-description-label = Add a description\npdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.\npdfjs-editor-alt-text-mark-decorative-label = Mark as decorative\npdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.\npdfjs-editor-alt-text-cancel-button = Cancel\npdfjs-editor-alt-text-save-button = Save\npdfjs-editor-alt-text-decorative-tooltip = Marked as decorative\npdfjs-editor-alt-text-textarea =\n .placeholder = For example, \u201CA young man sits down at a table to eat a meal\u201D\npdfjs-editor-resizer-top-left =\n .aria-label = Top left corner \u2014 resize\npdfjs-editor-resizer-top-middle =\n .aria-label = Top middle \u2014 resize\npdfjs-editor-resizer-top-right =\n .aria-label = Top right corner \u2014 resize\npdfjs-editor-resizer-middle-right =\n .aria-label = Middle right \u2014 resize\npdfjs-editor-resizer-bottom-right =\n .aria-label = Bottom right corner \u2014 resize\npdfjs-editor-resizer-bottom-middle =\n .aria-label = Bottom middle \u2014 resize\npdfjs-editor-resizer-bottom-left =\n .aria-label = Bottom left corner \u2014 resize\npdfjs-editor-resizer-middle-left =\n .aria-label = Middle left \u2014 resize\npdfjs-editor-highlight-colorpicker-label = Highlight color\npdfjs-editor-colorpicker-button =\n .title = Change color\npdfjs-editor-colorpicker-dropdown =\n .aria-label = Color choices\npdfjs-editor-colorpicker-yellow =\n .title = Yellow\npdfjs-editor-colorpicker-green =\n .title = Green\npdfjs-editor-colorpicker-blue =\n .title = Blue\npdfjs-editor-colorpicker-pink =\n .title = Pink\npdfjs-editor-colorpicker-red =\n .title = Red\npdfjs-editor-highlight-show-all-button-label = Show all\npdfjs-editor-highlight-show-all-button =\n .title = Show all\npdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)\npdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)\npdfjs-editor-new-alt-text-textarea =\n .placeholder = Write your description here\u2026\npdfjs-editor-new-alt-text-description = Short description for people who can\u2019t see the image or when the image doesn\u2019t load.\npdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.\npdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more\npdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically\npdfjs-editor-new-alt-text-not-now-button = Not now\npdfjs-editor-new-alt-text-error-title = Couldn\u2019t create alt text automatically\npdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.\npdfjs-editor-new-alt-text-error-close-button = Close\npdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\npdfjs-editor-new-alt-text-added-button =\n .aria-label = Alt text added\npdfjs-editor-new-alt-text-added-button-label = Alt text added\npdfjs-editor-new-alt-text-missing-button =\n .aria-label = Missing alt text\npdfjs-editor-new-alt-text-missing-button-label = Missing alt text\npdfjs-editor-new-alt-text-to-review-button =\n .aria-label = Review alt text\npdfjs-editor-new-alt-text-to-review-button-label = Review alt text\npdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }\npdfjs-image-alt-text-settings-button =\n .title = Image alt text settings\npdfjs-image-alt-text-settings-button-label = Image alt text settings\npdfjs-editor-alt-text-settings-dialog-label = Image alt text settings\npdfjs-editor-alt-text-settings-automatic-title = Automatic alt text\npdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically\npdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can\u2019t see the image or when the image doesn\u2019t load.\npdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)\npdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.\npdfjs-editor-alt-text-settings-delete-model-button = Delete\npdfjs-editor-alt-text-settings-download-model-button = Download\npdfjs-editor-alt-text-settings-downloading-model-button = Downloading\u2026\npdfjs-editor-alt-text-settings-editor-title = Alt text editor\npdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image\npdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.\npdfjs-editor-alt-text-settings-close-button = Close\npdfjs-editor-highlight-added-alert = Highlight added\npdfjs-editor-freetext-added-alert = Text added\npdfjs-editor-ink-added-alert = Drawing added\npdfjs-editor-stamp-added-alert = Image added\npdfjs-editor-signature-added-alert = Signature added\npdfjs-editor-undo-bar-message-highlight = Highlight removed\npdfjs-editor-undo-bar-message-freetext = Text removed\npdfjs-editor-undo-bar-message-ink = Drawing removed\npdfjs-editor-undo-bar-message-stamp = Image removed\npdfjs-editor-undo-bar-message-signature = Signature removed\npdfjs-editor-undo-bar-message-comment = Comment removed\npdfjs-editor-undo-bar-message-multiple =\n { $count ->\n [one] { $count } annotation removed\n *[other] { $count } annotations removed\n }\npdfjs-editor-undo-bar-undo-button =\n .title = Undo\npdfjs-editor-undo-bar-undo-button-label = Undo\npdfjs-editor-undo-bar-close-button =\n .title = Close\npdfjs-editor-undo-bar-close-button-label = Close\npdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.\npdfjs-editor-add-signature-dialog-title = Add a signature\npdfjs-editor-add-signature-type-button = Type\n .title = Type\npdfjs-editor-add-signature-draw-button = Draw\n .title = Draw\npdfjs-editor-add-signature-image-button = Image\n .title = Image\npdfjs-editor-add-signature-type-input =\n .aria-label = Type your signature\n .placeholder = Type your signature\npdfjs-editor-add-signature-draw-placeholder = Draw your signature\npdfjs-editor-add-signature-draw-thickness-range-label = Thickness\npdfjs-editor-add-signature-draw-thickness-range =\n .title = Drawing thickness: { $thickness }\npdfjs-editor-add-signature-image-placeholder = Drag a file here to upload\npdfjs-editor-add-signature-image-browse-link =\n { PLATFORM() ->\n [macos] Or choose image files\n *[other] Or browse image files\n }\npdfjs-editor-add-signature-description-label = Description (alt text)\npdfjs-editor-add-signature-description-input =\n .title = Description (alt text)\npdfjs-editor-add-signature-description-default-when-drawing = Signature\npdfjs-editor-add-signature-clear-button-label = Clear signature\npdfjs-editor-add-signature-clear-button =\n .title = Clear signature\npdfjs-editor-add-signature-save-checkbox = Save signature\npdfjs-editor-add-signature-save-warning-message = You\u2019ve reached the limit of 5 saved signatures. Remove one to save more.\npdfjs-editor-add-signature-image-upload-error-title = Couldn\u2019t upload image\npdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image.\npdfjs-editor-add-signature-image-no-data-error-title = Can\u2019t convert this image into a signature\npdfjs-editor-add-signature-image-no-data-error-description = Please try uploading a different image.\npdfjs-editor-add-signature-error-close-button = Close\npdfjs-editor-add-signature-cancel-button = Cancel\npdfjs-editor-add-signature-add-button = Add\npdfjs-editor-delete-signature-button1 =\n .title = Remove saved signature\npdfjs-editor-delete-signature-button-label1 = Remove saved signature\npdfjs-editor-add-signature-edit-button-label = Edit description\npdfjs-editor-edit-signature-dialog-title = Edit description\npdfjs-editor-edit-signature-update-button = Update\npdfjs-show-comment-button =\n .title = Show comment\npdfjs-editor-edit-comment-popup-button-label = Edit comment\npdfjs-editor-edit-comment-popup-button =\n .title = Edit comment\npdfjs-editor-delete-comment-popup-button-label = Remove comment\npdfjs-editor-delete-comment-popup-button =\n .title = Remove comment\npdfjs-editor-edit-comment-dialog-title-when-editing = Edit comment\npdfjs-editor-edit-comment-dialog-save-button-when-editing = Update\npdfjs-editor-edit-comment-dialog-title-when-adding = Add comment\npdfjs-editor-edit-comment-dialog-save-button-when-adding = Add\npdfjs-editor-edit-comment-dialog-text-input =\n .placeholder = Start typing\u2026\npdfjs-editor-edit-comment-dialog-cancel-button = Cancel\npdfjs-editor-add-comment-button =\n .title = Add comment\npdfjs-toggle-views-manager-button =\n .title = Toggle Sidebar\npdfjs-toggle-views-manager-notification-button =\n .title = Toggle Sidebar (document contains thumbnails/outline/attachments/layers)\npdfjs-toggle-views-manager-button-label = Toggle Sidebar\npdfjs-views-manager-sidebar =\n .aria-label = Sidebar\npdfjs-views-manager-view-selector-button =\n .title = Views\npdfjs-views-manager-view-selector-button-label = Views\npdfjs-views-manager-pages-title = Pages\npdfjs-views-manager-outlines-title = Document outline\npdfjs-views-manager-attachments-title = Attachments\npdfjs-views-manager-layers-title = Layers\npdfjs-views-manager-pages-option-label = Pages\npdfjs-views-manager-outlines-option-label = Document outline\npdfjs-views-manager-attachments-option-label = Attachments\npdfjs-views-manager-layers-option-label = Layers\npdfjs-views-manager-add-file-button =\n .title = Add file\npdfjs-views-manager-add-file-button-label = Add file\npdfjs-views-manager-pages-status-action-label =\n { $count ->\n [one] { $count } selected\n *[other] { $count } selected\n }\npdfjs-views-manager-pages-status-none-action-label = Select pages\npdfjs-views-manager-pages-status-action-button-label = Manage\npdfjs-views-manager-pages-status-copy-button-label = Copy\npdfjs-views-manager-pages-status-cut-button-label = Cut\npdfjs-views-manager-pages-status-delete-button-label = Delete\npdfjs-views-manager-pages-status-save-as-button-label = Save as\u2026\npdfjs-views-manager-status-undo-cut-label =\n { $count ->\n [one] 1 page cut\n *[other] { $count } pages cut\n }\npdfjs-views-manager-pages-status-undo-copy-label =\n { $count ->\n [one] 1 page copied\n *[other] { $count } pages copied\n }\npdfjs-views-manager-pages-status-undo-delete-label =\n { $count ->\n [one] 1 page deleted\n *[other] { $count } pages deleted\n }\npdfjs-views-manager-pages-status-waiting-ready-label = Getting your file ready\u2026\npdfjs-views-manager-pages-status-waiting-uploading-label = Uploading file\u2026\npdfjs-views-manager-status-warning-cut-label = Couldn\u2019t cut. Refresh page and try again.\npdfjs-views-manager-status-warning-copy-label = Couldn\u2019t copy. Refresh page and try again.\npdfjs-views-manager-status-warning-delete-label = Couldn\u2019t delete. Refresh page and try again.\npdfjs-views-manager-status-warning-save-label = Couldn\u2019t save. Refresh page and try again.\npdfjs-views-manager-status-undo-button-label = Undo\npdfjs-views-manager-status-close-button =\n .title = Close\npdfjs-views-manager-status-close-button-label = Close";
|
|
3164
3125
|
return createBundle(lang, text);
|
|
3165
3126
|
}
|
|
3166
3127
|
}
|
|
@@ -4472,8 +4433,8 @@ class Sidebar {
|
|
|
4472
4433
|
this.#isResizerOnTheLeft = isResizerOnTheLeft;
|
|
4473
4434
|
const style = window.getComputedStyle(sidebar);
|
|
4474
4435
|
this.#initialWidth = this.#width = parseFloat(style.getPropertyValue("--sidebar-width"));
|
|
4475
|
-
resizer.ariaValueMin = parseFloat(style.getPropertyValue("--sidebar-min-width"));
|
|
4476
|
-
resizer.ariaValueMax = parseFloat(style.getPropertyValue("--sidebar-max-width"));
|
|
4436
|
+
resizer.ariaValueMin = parseFloat(style.getPropertyValue("--sidebar-min-width")) || 0;
|
|
4437
|
+
resizer.ariaValueMax = parseFloat(style.getPropertyValue("--sidebar-max-width")) || Infinity;
|
|
4477
4438
|
resizer.ariaValueNow = this.#width;
|
|
4478
4439
|
this.#makeSidebarResizable();
|
|
4479
4440
|
toggleButton.addEventListener("click", this.toggle.bind(this));
|
|
@@ -4526,7 +4487,7 @@ class Sidebar {
|
|
|
4526
4487
|
signal
|
|
4527
4488
|
});
|
|
4528
4489
|
window.addEventListener("pointermove", ev => {
|
|
4529
|
-
if (!pointerMoveAC) {
|
|
4490
|
+
if (!pointerMoveAC || Math.abs(ev.clientX - this.#prevX) < 1) {
|
|
4530
4491
|
return;
|
|
4531
4492
|
}
|
|
4532
4493
|
stopEvent(ev);
|
|
@@ -5366,9 +5327,15 @@ class CommentPopup {
|
|
|
5366
5327
|
}
|
|
5367
5328
|
}
|
|
5368
5329
|
});
|
|
5369
|
-
|
|
5370
|
-
|
|
5330
|
+
const editor = this.#editor;
|
|
5331
|
+
const savedData = editor.comment;
|
|
5371
5332
|
this.destroy();
|
|
5333
|
+
if (savedData?.text) {
|
|
5334
|
+
editor._uiManager.deleteComment(editor, savedData);
|
|
5335
|
+
} else {
|
|
5336
|
+
editor.comment = null;
|
|
5337
|
+
}
|
|
5338
|
+
editor.focus();
|
|
5372
5339
|
});
|
|
5373
5340
|
del.addEventListener("contextmenu", noContextMenu);
|
|
5374
5341
|
buttons.append(edit, del);
|
|
@@ -5649,6 +5616,7 @@ class EditorUndoBar {
|
|
|
5649
5616
|
stamp: "pdfjs-editor-undo-bar-message-stamp",
|
|
5650
5617
|
ink: "pdfjs-editor-undo-bar-message-ink",
|
|
5651
5618
|
signature: "pdfjs-editor-undo-bar-message-signature",
|
|
5619
|
+
comment: "pdfjs-editor-undo-bar-message-comment",
|
|
5652
5620
|
_multiple: "pdfjs-editor-undo-bar-message-multiple"
|
|
5653
5621
|
});
|
|
5654
5622
|
constructor({
|
|
@@ -6766,6 +6734,7 @@ class PDFFindController {
|
|
|
6766
6734
|
this.#reset();
|
|
6767
6735
|
eventBus._on("find", this.#onFind.bind(this));
|
|
6768
6736
|
eventBus._on("findbarclose", this.#onFindBarClose.bind(this));
|
|
6737
|
+
eventBus._on("pagesedited", this.#onPagesEdited.bind(this));
|
|
6769
6738
|
}
|
|
6770
6739
|
get highlightMatches() {
|
|
6771
6740
|
return this._highlightMatches;
|
|
@@ -7242,6 +7211,24 @@ class PDFFindController {
|
|
|
7242
7211
|
this.#updatePage(this._selected.pageIdx);
|
|
7243
7212
|
}
|
|
7244
7213
|
}
|
|
7214
|
+
#onPagesEdited({
|
|
7215
|
+
pagesMapper
|
|
7216
|
+
}) {
|
|
7217
|
+
if (this._extractTextPromises.length === 0) {
|
|
7218
|
+
return;
|
|
7219
|
+
}
|
|
7220
|
+
this.#onFindBarClose();
|
|
7221
|
+
this._dirtyMatch = true;
|
|
7222
|
+
const prevTextPromises = this._extractTextPromises;
|
|
7223
|
+
const extractTextPromises = this._extractTextPromises.length = [];
|
|
7224
|
+
for (let i = 0, ii = pagesMapper.length; i < ii; i++) {
|
|
7225
|
+
const prevPageIndex = pagesMapper.getPrevPageNumber(i + 1) - 1;
|
|
7226
|
+
if (prevPageIndex === -1) {
|
|
7227
|
+
continue;
|
|
7228
|
+
}
|
|
7229
|
+
extractTextPromises.push(prevTextPromises[prevPageIndex] || Promise.resolve());
|
|
7230
|
+
}
|
|
7231
|
+
}
|
|
7245
7232
|
#onFindBarClose(evt) {
|
|
7246
7233
|
const pdfDocument = this._pdfDocument;
|
|
7247
7234
|
this._firstPageCapability.promise.then(() => {
|
|
@@ -9556,6 +9543,161 @@ class PdfTextExtractor {
|
|
|
9556
9543
|
}
|
|
9557
9544
|
}
|
|
9558
9545
|
|
|
9546
|
+
;// ./web/menu.js
|
|
9547
|
+
|
|
9548
|
+
class Menu {
|
|
9549
|
+
#triggeringButton;
|
|
9550
|
+
#menu;
|
|
9551
|
+
#menuItems;
|
|
9552
|
+
#openMenuAC = null;
|
|
9553
|
+
#menuAC = new AbortController();
|
|
9554
|
+
#lastIndex = -1;
|
|
9555
|
+
constructor(menuContainer, triggeringButton, menuItems) {
|
|
9556
|
+
this.#menu = menuContainer;
|
|
9557
|
+
this.#triggeringButton = triggeringButton;
|
|
9558
|
+
if (Array.isArray(menuItems)) {
|
|
9559
|
+
this.#menuItems = menuItems;
|
|
9560
|
+
} else {
|
|
9561
|
+
this.#menuItems = [];
|
|
9562
|
+
for (const button of this.#menu.querySelectorAll("button")) {
|
|
9563
|
+
this.#menuItems.push(button);
|
|
9564
|
+
}
|
|
9565
|
+
}
|
|
9566
|
+
this.#setUpMenu();
|
|
9567
|
+
}
|
|
9568
|
+
#closeMenu() {
|
|
9569
|
+
if (!this.#openMenuAC) {
|
|
9570
|
+
return;
|
|
9571
|
+
}
|
|
9572
|
+
const menu = this.#menu;
|
|
9573
|
+
this.#triggeringButton.ariaExpanded = "false";
|
|
9574
|
+
this.#openMenuAC.abort();
|
|
9575
|
+
this.#openMenuAC = null;
|
|
9576
|
+
if (menu.contains(document.activeElement)) {
|
|
9577
|
+
setTimeout(() => {
|
|
9578
|
+
if (!menu.contains(document.activeElement)) {
|
|
9579
|
+
this.#triggeringButton.focus();
|
|
9580
|
+
}
|
|
9581
|
+
}, 0);
|
|
9582
|
+
}
|
|
9583
|
+
this.#lastIndex = -1;
|
|
9584
|
+
}
|
|
9585
|
+
#setUpMenu() {
|
|
9586
|
+
this.#triggeringButton.addEventListener("click", e => {
|
|
9587
|
+
if (this.#openMenuAC) {
|
|
9588
|
+
this.#closeMenu();
|
|
9589
|
+
return;
|
|
9590
|
+
}
|
|
9591
|
+
const menu = this.#menu;
|
|
9592
|
+
this.#triggeringButton.ariaExpanded = "true";
|
|
9593
|
+
this.#openMenuAC = new AbortController();
|
|
9594
|
+
const signal = AbortSignal.any([this.#menuAC.signal, this.#openMenuAC.signal]);
|
|
9595
|
+
window.addEventListener("pointerdown", ({
|
|
9596
|
+
target
|
|
9597
|
+
}) => {
|
|
9598
|
+
if (target !== this.#triggeringButton && !menu.contains(target)) {
|
|
9599
|
+
this.#closeMenu();
|
|
9600
|
+
}
|
|
9601
|
+
}, {
|
|
9602
|
+
signal
|
|
9603
|
+
});
|
|
9604
|
+
window.addEventListener("blur", this.#closeMenu.bind(this), {
|
|
9605
|
+
signal
|
|
9606
|
+
});
|
|
9607
|
+
});
|
|
9608
|
+
const {
|
|
9609
|
+
signal
|
|
9610
|
+
} = this.#menuAC;
|
|
9611
|
+
this.#menu.addEventListener("keydown", e => {
|
|
9612
|
+
switch (e.key) {
|
|
9613
|
+
case "Escape":
|
|
9614
|
+
this.#closeMenu();
|
|
9615
|
+
stopEvent(e);
|
|
9616
|
+
break;
|
|
9617
|
+
case "ArrowDown":
|
|
9618
|
+
case "Tab":
|
|
9619
|
+
this.#goToNextItem(e.target, true);
|
|
9620
|
+
stopEvent(e);
|
|
9621
|
+
break;
|
|
9622
|
+
case "ArrowUp":
|
|
9623
|
+
case "ShiftTab":
|
|
9624
|
+
this.#goToNextItem(e.target, false);
|
|
9625
|
+
stopEvent(e);
|
|
9626
|
+
break;
|
|
9627
|
+
case "Home":
|
|
9628
|
+
this.#menuItems.find(item => !item.disabled && !item.classList.contains("hidden")).focus();
|
|
9629
|
+
stopEvent(e);
|
|
9630
|
+
break;
|
|
9631
|
+
case "End":
|
|
9632
|
+
this.#menuItems.findLast(item => !item.disabled && !item.classList.contains("hidden")).focus();
|
|
9633
|
+
stopEvent(e);
|
|
9634
|
+
break;
|
|
9635
|
+
default:
|
|
9636
|
+
const char = e.key.toLocaleLowerCase();
|
|
9637
|
+
this.#goToNextItem(e.target, true, item => item.textContent.trim().toLowerCase().startsWith(char));
|
|
9638
|
+
stopEvent(e);
|
|
9639
|
+
break;
|
|
9640
|
+
}
|
|
9641
|
+
}, {
|
|
9642
|
+
signal,
|
|
9643
|
+
capture: true
|
|
9644
|
+
});
|
|
9645
|
+
this.#menu.addEventListener("contextmenu", noContextMenu, {
|
|
9646
|
+
signal
|
|
9647
|
+
});
|
|
9648
|
+
this.#menu.addEventListener("click", this.#closeMenu.bind(this), {
|
|
9649
|
+
signal,
|
|
9650
|
+
capture: true
|
|
9651
|
+
});
|
|
9652
|
+
this.#triggeringButton.addEventListener("keydown", e => {
|
|
9653
|
+
switch (e.key) {
|
|
9654
|
+
case " ":
|
|
9655
|
+
case "Enter":
|
|
9656
|
+
case "ArrowDown":
|
|
9657
|
+
case "Home":
|
|
9658
|
+
if (!this.#openMenuAC) {
|
|
9659
|
+
this.#triggeringButton.click();
|
|
9660
|
+
}
|
|
9661
|
+
this.#menuItems.find(item => !item.disabled && !item.classList.contains("hidden")).focus();
|
|
9662
|
+
stopEvent(e);
|
|
9663
|
+
break;
|
|
9664
|
+
case "ArrowUp":
|
|
9665
|
+
case "End":
|
|
9666
|
+
if (!this.#openMenuAC) {
|
|
9667
|
+
this.#triggeringButton.click();
|
|
9668
|
+
}
|
|
9669
|
+
this.#menuItems.findLast(item => !item.disabled && !item.classList.contains("hidden")).focus();
|
|
9670
|
+
stopEvent(e);
|
|
9671
|
+
break;
|
|
9672
|
+
case "Escape":
|
|
9673
|
+
this.#closeMenu();
|
|
9674
|
+
stopEvent(e);
|
|
9675
|
+
break;
|
|
9676
|
+
}
|
|
9677
|
+
}, {
|
|
9678
|
+
signal
|
|
9679
|
+
});
|
|
9680
|
+
}
|
|
9681
|
+
#goToNextItem(element, forward, check = () => true) {
|
|
9682
|
+
const index = this.#lastIndex === -1 ? this.#menuItems.indexOf(element) : this.#lastIndex;
|
|
9683
|
+
const len = this.#menuItems.length;
|
|
9684
|
+
const increment = forward ? 1 : len - 1;
|
|
9685
|
+
for (let i = (index + increment) % len; i !== index; i = (i + increment) % len) {
|
|
9686
|
+
const menuItem = this.#menuItems[i];
|
|
9687
|
+
if (!menuItem.disabled && !menuItem.classList.contains("hidden") && check(menuItem)) {
|
|
9688
|
+
menuItem.focus();
|
|
9689
|
+
this.#lastIndex = i;
|
|
9690
|
+
break;
|
|
9691
|
+
}
|
|
9692
|
+
}
|
|
9693
|
+
}
|
|
9694
|
+
destroy() {
|
|
9695
|
+
this.#closeMenu();
|
|
9696
|
+
this.#menuAC?.abort();
|
|
9697
|
+
this.#menuAC = null;
|
|
9698
|
+
}
|
|
9699
|
+
}
|
|
9700
|
+
|
|
9559
9701
|
;// ./web/pdf_thumbnail_view.js
|
|
9560
9702
|
|
|
9561
9703
|
|
|
@@ -9594,10 +9736,11 @@ class PDFThumbnailView {
|
|
|
9594
9736
|
renderingQueue,
|
|
9595
9737
|
maxCanvasPixels,
|
|
9596
9738
|
maxCanvasDim,
|
|
9597
|
-
pageColors
|
|
9739
|
+
pageColors,
|
|
9740
|
+
enableSplitMerge = false
|
|
9598
9741
|
}) {
|
|
9599
9742
|
this.id = id;
|
|
9600
|
-
this.renderingId =
|
|
9743
|
+
this.renderingId = `thumbnail${id}`;
|
|
9601
9744
|
this.pageLabel = null;
|
|
9602
9745
|
this.pdfPage = null;
|
|
9603
9746
|
this.rotation = 0;
|
|
@@ -9613,20 +9756,32 @@ class PDFThumbnailView {
|
|
|
9613
9756
|
this.renderTask = null;
|
|
9614
9757
|
this.renderingState = RenderingStates.INITIAL;
|
|
9615
9758
|
this.resume = null;
|
|
9759
|
+
this.placeholder = null;
|
|
9616
9760
|
const imageContainer = this.div = document.createElement("div");
|
|
9617
9761
|
imageContainer.className = "thumbnail";
|
|
9618
|
-
imageContainer.setAttribute("page-number",
|
|
9619
|
-
|
|
9620
|
-
|
|
9621
|
-
|
|
9762
|
+
imageContainer.setAttribute("page-number", id);
|
|
9763
|
+
imageContainer.setAttribute("page-id", id);
|
|
9764
|
+
if (enableSplitMerge) {
|
|
9765
|
+
const checkbox = this.checkbox = document.createElement("input");
|
|
9766
|
+
checkbox.type = "checkbox";
|
|
9767
|
+
checkbox.tabIndex = -1;
|
|
9768
|
+
imageContainer.append(checkbox);
|
|
9769
|
+
}
|
|
9622
9770
|
const image = this.image = document.createElement("img");
|
|
9623
9771
|
image.classList.add("thumbnailImage", "missingThumbnailImage");
|
|
9624
9772
|
image.role = "button";
|
|
9625
9773
|
image.tabIndex = -1;
|
|
9774
|
+
image.draggable = false;
|
|
9626
9775
|
this.#updateDims();
|
|
9627
|
-
imageContainer.append(
|
|
9776
|
+
imageContainer.append(image);
|
|
9628
9777
|
container.append(imageContainer);
|
|
9629
9778
|
}
|
|
9779
|
+
updateId(newId) {
|
|
9780
|
+
this.id = newId;
|
|
9781
|
+
this.renderingId = `thumbnail${newId}`;
|
|
9782
|
+
this.div.setAttribute("page-number", newId);
|
|
9783
|
+
this.setPageLabel(this.pageLabel);
|
|
9784
|
+
}
|
|
9630
9785
|
#updateDims() {
|
|
9631
9786
|
const {
|
|
9632
9787
|
width,
|
|
@@ -9855,9 +10010,6 @@ class PDFThumbnailView {
|
|
|
9855
10010
|
page: this.pageLabel ?? this.id
|
|
9856
10011
|
});
|
|
9857
10012
|
}
|
|
9858
|
-
get #pageNumber() {
|
|
9859
|
-
return this.pageLabel ?? this.id;
|
|
9860
|
-
}
|
|
9861
10013
|
setPageLabel(label) {
|
|
9862
10014
|
this.pageLabel = typeof label === "string" ? label : null;
|
|
9863
10015
|
this.image.setAttribute("data-l10n-args", this.#pageL10nArgs);
|
|
@@ -9868,13 +10020,36 @@ class PDFThumbnailView {
|
|
|
9868
10020
|
|
|
9869
10021
|
|
|
9870
10022
|
|
|
10023
|
+
|
|
9871
10024
|
const SCROLL_OPTIONS = {
|
|
9872
10025
|
behavior: "instant",
|
|
9873
10026
|
block: "nearest",
|
|
9874
10027
|
inline: "nearest",
|
|
9875
10028
|
container: "nearest"
|
|
9876
10029
|
};
|
|
10030
|
+
const DRAG_THRESHOLD_IN_PIXELS = 5;
|
|
10031
|
+
const PIXELS_TO_SCROLL_WHEN_DRAGGING = 20;
|
|
10032
|
+
const SPACE_FOR_DRAG_MARKER_WHEN_NO_NEXT_ELEMENT = 15;
|
|
9877
10033
|
class PDFThumbnailViewer {
|
|
10034
|
+
static #draggingScaleFactor = 0;
|
|
10035
|
+
#enableSplitMerge = false;
|
|
10036
|
+
#dragAC = null;
|
|
10037
|
+
#draggedContainer = null;
|
|
10038
|
+
#thumbnailsPositions = null;
|
|
10039
|
+
#lastDraggedOverIndex = NaN;
|
|
10040
|
+
#selectedPages = null;
|
|
10041
|
+
#draggedImageX = 0;
|
|
10042
|
+
#draggedImageY = 0;
|
|
10043
|
+
#draggedImageWidth = 0;
|
|
10044
|
+
#draggedImageHeight = 0;
|
|
10045
|
+
#draggedImageOffsetX = 0;
|
|
10046
|
+
#draggedImageOffsetY = 0;
|
|
10047
|
+
#dragMarker = null;
|
|
10048
|
+
#pageNumberToRemove = NaN;
|
|
10049
|
+
#currentScrollBottom = 0;
|
|
10050
|
+
#currentScrollTop = 0;
|
|
10051
|
+
#pagesMapper = PagesMapper.instance;
|
|
10052
|
+
#manageSaveAsButton = null;
|
|
9878
10053
|
constructor({
|
|
9879
10054
|
container,
|
|
9880
10055
|
eventBus,
|
|
@@ -9884,7 +10059,9 @@ class PDFThumbnailViewer {
|
|
|
9884
10059
|
maxCanvasDim,
|
|
9885
10060
|
pageColors,
|
|
9886
10061
|
abortSignal,
|
|
9887
|
-
enableHWA
|
|
10062
|
+
enableHWA,
|
|
10063
|
+
enableSplitMerge,
|
|
10064
|
+
manageMenu
|
|
9888
10065
|
}) {
|
|
9889
10066
|
this.scrollableContainer = container.parentElement;
|
|
9890
10067
|
this.container = container;
|
|
@@ -9895,6 +10072,27 @@ class PDFThumbnailViewer {
|
|
|
9895
10072
|
this.maxCanvasDim = maxCanvasDim;
|
|
9896
10073
|
this.pageColors = pageColors || null;
|
|
9897
10074
|
this.enableHWA = enableHWA || false;
|
|
10075
|
+
this.#enableSplitMerge = enableSplitMerge || false;
|
|
10076
|
+
if (this.#enableSplitMerge && manageMenu) {
|
|
10077
|
+
const {
|
|
10078
|
+
button,
|
|
10079
|
+
menu,
|
|
10080
|
+
copy,
|
|
10081
|
+
cut,
|
|
10082
|
+
delete: del,
|
|
10083
|
+
saveAs
|
|
10084
|
+
} = manageMenu;
|
|
10085
|
+
this._manageMenu = new Menu(menu, button, [copy, cut, del, saveAs]);
|
|
10086
|
+
this.#manageSaveAsButton = saveAs;
|
|
10087
|
+
saveAs.addEventListener("click", () => {
|
|
10088
|
+
this.eventBus.dispatch("savepageseditedpdf", {
|
|
10089
|
+
source: this,
|
|
10090
|
+
data: this.#pagesMapper.getPageMappingForSaving()
|
|
10091
|
+
});
|
|
10092
|
+
});
|
|
10093
|
+
} else {
|
|
10094
|
+
manageMenu.button.hidden = true;
|
|
10095
|
+
}
|
|
9898
10096
|
this.scroll = watchScroll(this.scrollableContainer, this.#scrollUpdated.bind(this), abortSignal);
|
|
9899
10097
|
this.#resetView();
|
|
9900
10098
|
this.#addEventListeners();
|
|
@@ -9933,14 +10131,15 @@ class PDFThumbnailViewer {
|
|
|
9933
10131
|
} = this.#getVisibleThumbs();
|
|
9934
10132
|
if (views.length > 0) {
|
|
9935
10133
|
let shouldScroll = false;
|
|
9936
|
-
if (pageNumber <= first.id || pageNumber >= last.id) {
|
|
10134
|
+
if (pageNumber <= this.#pagesMapper.getPageNumber(first.id) || pageNumber >= this.#pagesMapper.getPageNumber(last.id)) {
|
|
9937
10135
|
shouldScroll = true;
|
|
9938
10136
|
} else {
|
|
9939
10137
|
for (const {
|
|
9940
10138
|
id,
|
|
9941
10139
|
percent
|
|
9942
10140
|
} of views) {
|
|
9943
|
-
|
|
10141
|
+
const mappedPageNumber = this.#pagesMapper.getPageNumber(id);
|
|
10142
|
+
if (mappedPageNumber !== pageNumber) {
|
|
9944
10143
|
continue;
|
|
9945
10144
|
}
|
|
9946
10145
|
shouldScroll = percent < 100;
|
|
@@ -10019,7 +10218,8 @@ class PDFThumbnailViewer {
|
|
|
10019
10218
|
maxCanvasPixels: this.maxCanvasPixels,
|
|
10020
10219
|
maxCanvasDim: this.maxCanvasDim,
|
|
10021
10220
|
pageColors: this.pageColors,
|
|
10022
|
-
enableHWA: this.enableHWA
|
|
10221
|
+
enableHWA: this.enableHWA,
|
|
10222
|
+
enableSplitMerge: this.#enableSplitMerge
|
|
10023
10223
|
});
|
|
10024
10224
|
this._thumbnails.push(thumbnail);
|
|
10025
10225
|
}
|
|
@@ -10087,7 +10287,248 @@ class PDFThumbnailViewer {
|
|
|
10087
10287
|
}
|
|
10088
10288
|
return false;
|
|
10089
10289
|
}
|
|
10290
|
+
static #getScaleFactor(image) {
|
|
10291
|
+
return PDFThumbnailViewer.#draggingScaleFactor ||= parseFloat(getComputedStyle(image).getPropertyValue("--thumbnail-dragging-scale"));
|
|
10292
|
+
}
|
|
10293
|
+
#updateThumbnails() {
|
|
10294
|
+
const pagesMapper = this.#pagesMapper;
|
|
10295
|
+
this.container.replaceChildren();
|
|
10296
|
+
const prevThumbnails = this._thumbnails;
|
|
10297
|
+
const newThumbnails = this._thumbnails = [];
|
|
10298
|
+
const fragment = document.createDocumentFragment();
|
|
10299
|
+
for (let i = 0, ii = pagesMapper.pagesNumber; i < ii; i++) {
|
|
10300
|
+
const prevPageIndex = pagesMapper.getPrevPageNumber(i + 1) - 1;
|
|
10301
|
+
if (prevPageIndex === -1) {
|
|
10302
|
+
continue;
|
|
10303
|
+
}
|
|
10304
|
+
const newThumbnail = prevThumbnails[prevPageIndex];
|
|
10305
|
+
newThumbnails.push(newThumbnail);
|
|
10306
|
+
newThumbnail.updateId(i + 1);
|
|
10307
|
+
newThumbnail.checkbox.checked = false;
|
|
10308
|
+
fragment.append(newThumbnail.div);
|
|
10309
|
+
}
|
|
10310
|
+
this.container.append(fragment);
|
|
10311
|
+
}
|
|
10312
|
+
#onStartDragging(draggedThumbnail) {
|
|
10313
|
+
this.#currentScrollTop = this.scrollableContainer.scrollTop;
|
|
10314
|
+
this.#currentScrollBottom = this.#currentScrollTop + this.scrollableContainer.clientHeight;
|
|
10315
|
+
this.#dragAC = new AbortController();
|
|
10316
|
+
this.container.classList.add("isDragging");
|
|
10317
|
+
const startPageNumber = parseInt(draggedThumbnail.getAttribute("page-number"), 10);
|
|
10318
|
+
this.#lastDraggedOverIndex = startPageNumber - 1;
|
|
10319
|
+
if (!this.#selectedPages?.has(startPageNumber)) {
|
|
10320
|
+
this.#pageNumberToRemove = startPageNumber;
|
|
10321
|
+
this.#selectPage(startPageNumber, true);
|
|
10322
|
+
}
|
|
10323
|
+
for (const selected of this.#selectedPages) {
|
|
10324
|
+
const thumbnail = this._thumbnails[selected - 1];
|
|
10325
|
+
const placeholder = thumbnail.placeholder = document.createElement("div");
|
|
10326
|
+
placeholder.classList.add("thumbnailImage", "placeholder");
|
|
10327
|
+
const {
|
|
10328
|
+
div,
|
|
10329
|
+
image
|
|
10330
|
+
} = thumbnail;
|
|
10331
|
+
div.classList.add("isDragging");
|
|
10332
|
+
placeholder.style.height = getComputedStyle(image).height;
|
|
10333
|
+
image.after(placeholder);
|
|
10334
|
+
if (selected !== startPageNumber) {
|
|
10335
|
+
image.classList.add("hidden");
|
|
10336
|
+
continue;
|
|
10337
|
+
}
|
|
10338
|
+
if (this.#selectedPages.size === 1) {
|
|
10339
|
+
image.classList.add("draggingThumbnail");
|
|
10340
|
+
this.#draggedContainer = image;
|
|
10341
|
+
continue;
|
|
10342
|
+
}
|
|
10343
|
+
const draggedContainer = this.#draggedContainer = document.createElement("div");
|
|
10344
|
+
draggedContainer.classList.add("draggingThumbnail", "thumbnailImage", "multiple");
|
|
10345
|
+
draggedContainer.style.height = getComputedStyle(image).height;
|
|
10346
|
+
image.replaceWith(draggedContainer);
|
|
10347
|
+
image.classList.remove("thumbnailImage");
|
|
10348
|
+
draggedContainer.append(image);
|
|
10349
|
+
draggedContainer.setAttribute("data-multiple-count", this.#selectedPages.size);
|
|
10350
|
+
}
|
|
10351
|
+
}
|
|
10352
|
+
#onStopDragging(isDropping = false) {
|
|
10353
|
+
const draggedContainer = this.#draggedContainer;
|
|
10354
|
+
this.#draggedContainer = null;
|
|
10355
|
+
const lastDraggedOverIndex = this.#lastDraggedOverIndex;
|
|
10356
|
+
this.#lastDraggedOverIndex = NaN;
|
|
10357
|
+
this.#dragMarker?.remove();
|
|
10358
|
+
this.#dragMarker = null;
|
|
10359
|
+
this.#dragAC.abort();
|
|
10360
|
+
this.#dragAC = null;
|
|
10361
|
+
this.container.classList.remove("isDragging");
|
|
10362
|
+
for (const selected of this.#selectedPages) {
|
|
10363
|
+
const thumbnail = this._thumbnails[selected - 1];
|
|
10364
|
+
const {
|
|
10365
|
+
div,
|
|
10366
|
+
placeholder,
|
|
10367
|
+
image
|
|
10368
|
+
} = thumbnail;
|
|
10369
|
+
placeholder.remove();
|
|
10370
|
+
image.classList.remove("draggingThumbnail", "hidden");
|
|
10371
|
+
div.classList.remove("isDragging");
|
|
10372
|
+
}
|
|
10373
|
+
if (draggedContainer.classList.contains("multiple")) {
|
|
10374
|
+
const originalImage = draggedContainer.firstElementChild;
|
|
10375
|
+
draggedContainer.replaceWith(originalImage);
|
|
10376
|
+
originalImage.classList.add("thumbnailImage");
|
|
10377
|
+
} else {
|
|
10378
|
+
draggedContainer.style.translate = "";
|
|
10379
|
+
}
|
|
10380
|
+
const selectedPages = this.#selectedPages;
|
|
10381
|
+
if (!isNaN(lastDraggedOverIndex) && isDropping && !(selectedPages.size === 1 && (selectedPages.has(lastDraggedOverIndex + 1) || selectedPages.has(lastDraggedOverIndex + 2)))) {
|
|
10382
|
+
const newIndex = lastDraggedOverIndex + 1;
|
|
10383
|
+
const pagesToMove = Array.from(selectedPages).sort((a, b) => a - b);
|
|
10384
|
+
const pagesMapper = this.#pagesMapper;
|
|
10385
|
+
const currentPageId = pagesMapper.getPageId(this._currentPageNumber);
|
|
10386
|
+
const newCurrentPageId = pagesMapper.getPageId(isNaN(this.#pageNumberToRemove) ? pagesToMove[0] : this.#pageNumberToRemove);
|
|
10387
|
+
this.eventBus.dispatch("beforepagesedited", {
|
|
10388
|
+
source: this,
|
|
10389
|
+
pagesMapper
|
|
10390
|
+
});
|
|
10391
|
+
pagesMapper.movePages(selectedPages, pagesToMove, newIndex);
|
|
10392
|
+
this.#updateThumbnails();
|
|
10393
|
+
this._currentPageNumber = pagesMapper.getPageNumber(currentPageId);
|
|
10394
|
+
this.#computeThumbnailsPosition();
|
|
10395
|
+
selectedPages.clear();
|
|
10396
|
+
this.#pageNumberToRemove = NaN;
|
|
10397
|
+
const isIdentity = this.#manageSaveAsButton.disabled = !this.#pagesMapper.hasBeenAltered();
|
|
10398
|
+
if (!isIdentity) {
|
|
10399
|
+
this.eventBus.dispatch("pagesedited", {
|
|
10400
|
+
source: this,
|
|
10401
|
+
pagesMapper,
|
|
10402
|
+
index: newIndex,
|
|
10403
|
+
pagesToMove
|
|
10404
|
+
});
|
|
10405
|
+
}
|
|
10406
|
+
const newCurrentPageNumber = pagesMapper.getPageNumber(newCurrentPageId);
|
|
10407
|
+
setTimeout(() => {
|
|
10408
|
+
this.linkService.goToPage(newCurrentPageNumber);
|
|
10409
|
+
}, 0);
|
|
10410
|
+
}
|
|
10411
|
+
if (!isNaN(this.#pageNumberToRemove)) {
|
|
10412
|
+
this.#selectPage(this.#pageNumberToRemove, false);
|
|
10413
|
+
this.#pageNumberToRemove = NaN;
|
|
10414
|
+
}
|
|
10415
|
+
}
|
|
10416
|
+
#moveDraggedContainer(dx, dy) {
|
|
10417
|
+
this.#draggedImageOffsetX += dx;
|
|
10418
|
+
this.#draggedImageOffsetY += dy;
|
|
10419
|
+
this.#draggedImageX += dx;
|
|
10420
|
+
this.#draggedImageY += dy;
|
|
10421
|
+
this.#draggedContainer.style.translate = `${this.#draggedImageOffsetX}px ${this.#draggedImageOffsetY}px`;
|
|
10422
|
+
if (this.#draggedImageY + this.#draggedImageHeight > this.#currentScrollBottom) {
|
|
10423
|
+
this.scrollableContainer.scrollTop = Math.min(this.scrollableContainer.scrollTop + PIXELS_TO_SCROLL_WHEN_DRAGGING, this.scrollableContainer.scrollHeight);
|
|
10424
|
+
} else if (this.#draggedImageY < this.#currentScrollTop) {
|
|
10425
|
+
this.scrollableContainer.scrollTop = Math.max(this.scrollableContainer.scrollTop - PIXELS_TO_SCROLL_WHEN_DRAGGING, 0);
|
|
10426
|
+
}
|
|
10427
|
+
const positionData = this.#findClosestThumbnail(this.#draggedImageX + this.#draggedImageWidth / 2, this.#draggedImageY + this.#draggedImageHeight / 2);
|
|
10428
|
+
if (!positionData) {
|
|
10429
|
+
return;
|
|
10430
|
+
}
|
|
10431
|
+
let dragMarker = this.#dragMarker;
|
|
10432
|
+
if (!dragMarker) {
|
|
10433
|
+
dragMarker = this.#dragMarker = document.createElement("div");
|
|
10434
|
+
dragMarker.className = "dragMarker";
|
|
10435
|
+
this.container.firstChild.before(dragMarker);
|
|
10436
|
+
}
|
|
10437
|
+
const [index, space] = positionData;
|
|
10438
|
+
const dragMarkerStyle = dragMarker.style;
|
|
10439
|
+
const {
|
|
10440
|
+
bbox,
|
|
10441
|
+
x: xPos
|
|
10442
|
+
} = this.#thumbnailsPositions;
|
|
10443
|
+
let x, y, width, height;
|
|
10444
|
+
if (index < 0) {
|
|
10445
|
+
if (xPos.length === 1) {
|
|
10446
|
+
y = bbox[1] - SPACE_FOR_DRAG_MARKER_WHEN_NO_NEXT_ELEMENT;
|
|
10447
|
+
x = bbox[4];
|
|
10448
|
+
width = bbox[2];
|
|
10449
|
+
} else {
|
|
10450
|
+
y = bbox[1];
|
|
10451
|
+
x = bbox[0] - SPACE_FOR_DRAG_MARKER_WHEN_NO_NEXT_ELEMENT;
|
|
10452
|
+
height = bbox[3];
|
|
10453
|
+
}
|
|
10454
|
+
} else if (xPos.length === 1) {
|
|
10455
|
+
y = bbox[index * 4 + 1] + bbox[index * 4 + 3] + space;
|
|
10456
|
+
x = bbox[index * 4];
|
|
10457
|
+
width = bbox[index * 4 + 2];
|
|
10458
|
+
} else {
|
|
10459
|
+
y = bbox[index * 4 + 1];
|
|
10460
|
+
x = bbox[index * 4] + bbox[index * 4 + 2] + space;
|
|
10461
|
+
height = bbox[index * 4 + 3];
|
|
10462
|
+
}
|
|
10463
|
+
dragMarkerStyle.translate = `${x}px ${y}px`;
|
|
10464
|
+
dragMarkerStyle.width = width ? `${width}px` : "";
|
|
10465
|
+
dragMarkerStyle.height = height ? `${height}px` : "";
|
|
10466
|
+
}
|
|
10467
|
+
#computeThumbnailsPosition() {
|
|
10468
|
+
const positionsX = [];
|
|
10469
|
+
const positionsY = [];
|
|
10470
|
+
const positionsLastX = [];
|
|
10471
|
+
const bbox = new Float32Array(this._thumbnails.length * 4);
|
|
10472
|
+
let prevX = -Infinity;
|
|
10473
|
+
let prevY = -Infinity;
|
|
10474
|
+
let reminder = -1;
|
|
10475
|
+
let firstRightX;
|
|
10476
|
+
let lastRightX;
|
|
10477
|
+
let firstBottomY;
|
|
10478
|
+
for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {
|
|
10479
|
+
const {
|
|
10480
|
+
div
|
|
10481
|
+
} = this._thumbnails[i];
|
|
10482
|
+
const {
|
|
10483
|
+
offsetTop: y,
|
|
10484
|
+
offsetLeft: x,
|
|
10485
|
+
offsetWidth: w,
|
|
10486
|
+
offsetHeight: h
|
|
10487
|
+
} = div;
|
|
10488
|
+
if (w === 0) {
|
|
10489
|
+
return;
|
|
10490
|
+
}
|
|
10491
|
+
bbox[i * 4] = x;
|
|
10492
|
+
bbox[i * 4 + 1] = y;
|
|
10493
|
+
bbox[i * 4 + 2] = w;
|
|
10494
|
+
bbox[i * 4 + 3] = h;
|
|
10495
|
+
if (x > prevX) {
|
|
10496
|
+
prevX = x + w / 2;
|
|
10497
|
+
firstRightX ??= prevX + w;
|
|
10498
|
+
positionsX.push(prevX);
|
|
10499
|
+
}
|
|
10500
|
+
if (reminder > 0 && i >= ii - reminder) {
|
|
10501
|
+
const cx = x + w / 2;
|
|
10502
|
+
positionsLastX.push(cx);
|
|
10503
|
+
lastRightX ??= cx + w;
|
|
10504
|
+
}
|
|
10505
|
+
if (y > prevY) {
|
|
10506
|
+
if (reminder === -1 && positionsX.length > 1) {
|
|
10507
|
+
reminder = ii % positionsX.length;
|
|
10508
|
+
}
|
|
10509
|
+
prevY = y + h / 2;
|
|
10510
|
+
firstBottomY ??= prevY + h;
|
|
10511
|
+
positionsY.push(prevY);
|
|
10512
|
+
}
|
|
10513
|
+
}
|
|
10514
|
+
const space = positionsX.length > 1 ? (positionsX[1] - firstRightX) / 2 : (positionsY[1] - firstBottomY) / 2;
|
|
10515
|
+
this.#thumbnailsPositions = {
|
|
10516
|
+
x: positionsX,
|
|
10517
|
+
y: positionsY,
|
|
10518
|
+
lastX: positionsLastX,
|
|
10519
|
+
space,
|
|
10520
|
+
lastSpace: (positionsLastX.at(-1) - lastRightX) / 2,
|
|
10521
|
+
bbox
|
|
10522
|
+
};
|
|
10523
|
+
}
|
|
10090
10524
|
#addEventListeners() {
|
|
10525
|
+
this.eventBus.on("resize", ({
|
|
10526
|
+
source
|
|
10527
|
+
}) => {
|
|
10528
|
+
if (source.thumbnailsView === this.container) {
|
|
10529
|
+
this.#computeThumbnailsPosition();
|
|
10530
|
+
}
|
|
10531
|
+
});
|
|
10091
10532
|
this.container.addEventListener("keydown", e => {
|
|
10092
10533
|
switch (e.key) {
|
|
10093
10534
|
case "ArrowLeft":
|
|
@@ -10120,7 +10561,146 @@ class PDFThumbnailViewer {
|
|
|
10120
10561
|
break;
|
|
10121
10562
|
}
|
|
10122
10563
|
});
|
|
10123
|
-
this.container.addEventListener("click",
|
|
10564
|
+
this.container.addEventListener("click", e => {
|
|
10565
|
+
const {
|
|
10566
|
+
target
|
|
10567
|
+
} = e;
|
|
10568
|
+
if (target instanceof HTMLInputElement) {
|
|
10569
|
+
const pageNumber = parseInt(target.parentElement.getAttribute("page-number"), 10);
|
|
10570
|
+
this.#selectPage(pageNumber, target.checked);
|
|
10571
|
+
return;
|
|
10572
|
+
}
|
|
10573
|
+
this.#goToPage(e);
|
|
10574
|
+
});
|
|
10575
|
+
this.#addDragListeners();
|
|
10576
|
+
}
|
|
10577
|
+
#selectPage(pageNumber, checked) {
|
|
10578
|
+
const set = this.#selectedPages ??= new Set();
|
|
10579
|
+
if (checked) {
|
|
10580
|
+
set.add(pageNumber);
|
|
10581
|
+
} else {
|
|
10582
|
+
set.delete(pageNumber);
|
|
10583
|
+
}
|
|
10584
|
+
}
|
|
10585
|
+
#addDragListeners() {
|
|
10586
|
+
if (!this.#enableSplitMerge) {
|
|
10587
|
+
return;
|
|
10588
|
+
}
|
|
10589
|
+
this.container.addEventListener("pointerdown", e => {
|
|
10590
|
+
const {
|
|
10591
|
+
target: draggedImage,
|
|
10592
|
+
clientX: clickX,
|
|
10593
|
+
clientY: clickY,
|
|
10594
|
+
pointerId: dragPointerId
|
|
10595
|
+
} = e;
|
|
10596
|
+
if (!isNaN(this.#lastDraggedOverIndex) || !draggedImage.classList.contains("thumbnailImage")) {
|
|
10597
|
+
return;
|
|
10598
|
+
}
|
|
10599
|
+
const thumbnail = draggedImage.parentElement;
|
|
10600
|
+
const pointerDownAC = new AbortController();
|
|
10601
|
+
const {
|
|
10602
|
+
signal: pointerDownSignal
|
|
10603
|
+
} = pointerDownAC;
|
|
10604
|
+
let prevDragX = clickX;
|
|
10605
|
+
let prevDragY = clickY;
|
|
10606
|
+
let prevScrollTop = this.scrollableContainer.scrollTop;
|
|
10607
|
+
const scaleFactor = PDFThumbnailViewer.#getScaleFactor(draggedImage);
|
|
10608
|
+
this.#draggedImageOffsetX = ((scaleFactor - 1) * e.layerX + draggedImage.offsetLeft) / scaleFactor;
|
|
10609
|
+
this.#draggedImageOffsetY = ((scaleFactor - 1) * e.layerY + draggedImage.offsetTop) / scaleFactor;
|
|
10610
|
+
this.#draggedImageX = thumbnail.offsetLeft + this.#draggedImageOffsetX;
|
|
10611
|
+
this.#draggedImageY = thumbnail.offsetTop + this.#draggedImageOffsetY;
|
|
10612
|
+
this.#draggedImageWidth = draggedImage.offsetWidth / scaleFactor;
|
|
10613
|
+
this.#draggedImageHeight = draggedImage.offsetHeight / scaleFactor;
|
|
10614
|
+
this.container.addEventListener("pointermove", ev => {
|
|
10615
|
+
const {
|
|
10616
|
+
clientX: x,
|
|
10617
|
+
clientY: y,
|
|
10618
|
+
pointerId
|
|
10619
|
+
} = ev;
|
|
10620
|
+
if (pointerId !== dragPointerId || Math.abs(x - clickX) <= DRAG_THRESHOLD_IN_PIXELS && Math.abs(y - clickY) <= DRAG_THRESHOLD_IN_PIXELS) {
|
|
10621
|
+
return;
|
|
10622
|
+
}
|
|
10623
|
+
if (isNaN(this.#lastDraggedOverIndex)) {
|
|
10624
|
+
this.#onStartDragging(thumbnail);
|
|
10625
|
+
const stopDragging = (_e, isDropping = false) => {
|
|
10626
|
+
this.#onStopDragging(isDropping);
|
|
10627
|
+
pointerDownAC.abort();
|
|
10628
|
+
};
|
|
10629
|
+
const {
|
|
10630
|
+
signal
|
|
10631
|
+
} = this.#dragAC;
|
|
10632
|
+
window.addEventListener("touchmove", stopEvent, {
|
|
10633
|
+
passive: false,
|
|
10634
|
+
signal
|
|
10635
|
+
});
|
|
10636
|
+
window.addEventListener("contextmenu", noContextMenu, {
|
|
10637
|
+
signal
|
|
10638
|
+
});
|
|
10639
|
+
this.scrollableContainer.addEventListener("scrollend", () => {
|
|
10640
|
+
const {
|
|
10641
|
+
scrollableContainer: {
|
|
10642
|
+
clientHeight,
|
|
10643
|
+
scrollTop
|
|
10644
|
+
}
|
|
10645
|
+
} = this;
|
|
10646
|
+
this.#currentScrollTop = scrollTop;
|
|
10647
|
+
this.#currentScrollBottom = scrollTop + clientHeight;
|
|
10648
|
+
const dy = scrollTop - prevScrollTop;
|
|
10649
|
+
prevScrollTop = scrollTop;
|
|
10650
|
+
this.#moveDraggedContainer(0, dy);
|
|
10651
|
+
}, {
|
|
10652
|
+
passive: true,
|
|
10653
|
+
signal
|
|
10654
|
+
});
|
|
10655
|
+
window.addEventListener("pointerup", upEv => {
|
|
10656
|
+
if (upEv.pointerId !== dragPointerId) {
|
|
10657
|
+
return;
|
|
10658
|
+
}
|
|
10659
|
+
window.addEventListener("click", stopEvent, {
|
|
10660
|
+
capture: true,
|
|
10661
|
+
once: true,
|
|
10662
|
+
signal
|
|
10663
|
+
});
|
|
10664
|
+
stopEvent(upEv);
|
|
10665
|
+
stopDragging(upEv, true);
|
|
10666
|
+
}, {
|
|
10667
|
+
signal
|
|
10668
|
+
});
|
|
10669
|
+
window.addEventListener("blur", stopDragging, {
|
|
10670
|
+
signal
|
|
10671
|
+
});
|
|
10672
|
+
window.addEventListener("pointercancel", stopDragging, {
|
|
10673
|
+
signal
|
|
10674
|
+
});
|
|
10675
|
+
window.addEventListener("wheel", stopEvent, {
|
|
10676
|
+
passive: false,
|
|
10677
|
+
signal
|
|
10678
|
+
});
|
|
10679
|
+
}
|
|
10680
|
+
const dx = x - prevDragX;
|
|
10681
|
+
const dy = y - prevDragY;
|
|
10682
|
+
prevDragX = x;
|
|
10683
|
+
prevDragY = y;
|
|
10684
|
+
this.#moveDraggedContainer(dx, dy);
|
|
10685
|
+
}, {
|
|
10686
|
+
passive: true,
|
|
10687
|
+
signal: pointerDownSignal
|
|
10688
|
+
});
|
|
10689
|
+
window.addEventListener("pointerup", ({
|
|
10690
|
+
pointerId
|
|
10691
|
+
}) => {
|
|
10692
|
+
if (pointerId !== dragPointerId) {
|
|
10693
|
+
return;
|
|
10694
|
+
}
|
|
10695
|
+
pointerDownAC.abort();
|
|
10696
|
+
}, {
|
|
10697
|
+
signal: pointerDownSignal
|
|
10698
|
+
});
|
|
10699
|
+
window.addEventListener("dragstart", stopEvent, {
|
|
10700
|
+
capture: true,
|
|
10701
|
+
signal: pointerDownSignal
|
|
10702
|
+
});
|
|
10703
|
+
});
|
|
10124
10704
|
}
|
|
10125
10705
|
#goToPage(e) {
|
|
10126
10706
|
const {
|
|
@@ -10171,6 +10751,41 @@ class PDFThumbnailViewer {
|
|
|
10171
10751
|
nextThumbnail.image.focus();
|
|
10172
10752
|
}
|
|
10173
10753
|
}
|
|
10754
|
+
#findClosestThumbnail(x, y) {
|
|
10755
|
+
if (!this.#thumbnailsPositions) {
|
|
10756
|
+
this.#computeThumbnailsPosition();
|
|
10757
|
+
}
|
|
10758
|
+
const {
|
|
10759
|
+
x: positionsX,
|
|
10760
|
+
y: positionsY,
|
|
10761
|
+
lastX: positionsLastX,
|
|
10762
|
+
space: spaceBetweenThumbnails,
|
|
10763
|
+
lastSpace: lastSpaceBetweenThumbnails
|
|
10764
|
+
} = this.#thumbnailsPositions;
|
|
10765
|
+
const lastDraggedOverIndex = this.#lastDraggedOverIndex;
|
|
10766
|
+
let xPos = lastDraggedOverIndex % positionsX.length;
|
|
10767
|
+
let yPos = Math.floor(lastDraggedOverIndex / positionsX.length);
|
|
10768
|
+
let xArray = yPos === positionsY.length - 1 ? positionsLastX : positionsX;
|
|
10769
|
+
if (positionsY[yPos] <= y && y < (positionsY[yPos + 1] ?? Infinity) && xArray[xPos] <= x && x < (xArray[xPos + 1] ?? Infinity)) {
|
|
10770
|
+
return null;
|
|
10771
|
+
}
|
|
10772
|
+
yPos = binarySearchFirstItem(positionsY, cy => y < cy) - 1;
|
|
10773
|
+
xArray = yPos === positionsY.length - 1 && positionsLastX.length > 0 ? positionsLastX : positionsX;
|
|
10774
|
+
xPos = Math.max(0, binarySearchFirstItem(xArray, cx => x < cx) - 1);
|
|
10775
|
+
if (yPos < 0) {
|
|
10776
|
+
if (xPos <= 0) {
|
|
10777
|
+
xPos = -1;
|
|
10778
|
+
}
|
|
10779
|
+
yPos = 0;
|
|
10780
|
+
}
|
|
10781
|
+
const index = MathClamp(yPos * positionsX.length + xPos, -1, this._thumbnails.length - 1);
|
|
10782
|
+
if (index === lastDraggedOverIndex) {
|
|
10783
|
+
return null;
|
|
10784
|
+
}
|
|
10785
|
+
this.#lastDraggedOverIndex = index;
|
|
10786
|
+
const space = yPos === positionsY.length - 1 && positionsLastX.length > 0 && xPos >= 0 ? lastSpaceBetweenThumbnails : spaceBetweenThumbnails;
|
|
10787
|
+
return [index, space];
|
|
10788
|
+
}
|
|
10174
10789
|
}
|
|
10175
10790
|
|
|
10176
10791
|
;// ./web/annotation_editor_layer_builder.js
|
|
@@ -10587,7 +11202,7 @@ class Autolinker {
|
|
|
10587
11202
|
static #regex;
|
|
10588
11203
|
static #numericTLDRegex;
|
|
10589
11204
|
static findLinks(text) {
|
|
10590
|
-
this.#regex ??= /\b(?:https?:\/\/|mailto:|www\.)(?:[\S--[\p{P}<>]]|\/|[\S--[\[\]]]+[\S--[\p{P}<>]])+|(?=\p{L})[\S--[@\p{Ps}\p{Pe}<>]]+@([\S--[\p{P}<>]]+(?:\.[\S--[\p{P}<>]]+)+)/gmv;
|
|
11205
|
+
this.#regex ??= /\b(?:https?:\/\/|mailto:|www\.)(?:[\S--[\p{P}<>]]|\/|[\S--[\[\]]]+[\S--[\p{P}<>]])+|(?=\p{L})[\S--[@\p{Ps}\p{Pe}<>]]+@([\S--[[\p{P}--\-]<>]]+(?:\.[\S--[[\p{P}--\-]<>]]+)+)/gmv;
|
|
10591
11206
|
const [normalizedText, diffs] = normalize(text, {
|
|
10592
11207
|
ignoreDashEOL: true
|
|
10593
11208
|
});
|
|
@@ -10837,18 +11452,13 @@ class BasePDFPageView {
|
|
|
10837
11452
|
|
|
10838
11453
|
class DrawLayerBuilder {
|
|
10839
11454
|
#drawLayer = null;
|
|
10840
|
-
constructor(options) {
|
|
10841
|
-
this.pageIndex = options.pageIndex;
|
|
10842
|
-
}
|
|
10843
11455
|
async render({
|
|
10844
11456
|
intent = "display"
|
|
10845
11457
|
}) {
|
|
10846
11458
|
if (intent !== "display" || this.#drawLayer || this._cancelled) {
|
|
10847
11459
|
return;
|
|
10848
11460
|
}
|
|
10849
|
-
this.#drawLayer = new DrawLayer(
|
|
10850
|
-
pageIndex: this.pageIndex
|
|
10851
|
-
});
|
|
11461
|
+
this.#drawLayer = new DrawLayer();
|
|
10852
11462
|
}
|
|
10853
11463
|
cancel() {
|
|
10854
11464
|
this._cancelled = true;
|
|
@@ -11147,6 +11757,8 @@ class StructTreeLayerBuilder {
|
|
|
11147
11757
|
#elementAttributes = new Map();
|
|
11148
11758
|
#rawDims;
|
|
11149
11759
|
#elementsToAddToTextLayer = null;
|
|
11760
|
+
#elementsToHideInTextLayer = null;
|
|
11761
|
+
#elementsToStealFromTextLayer = null;
|
|
11150
11762
|
constructor(pdfPage, rawDims) {
|
|
11151
11763
|
this.#promise = pdfPage.getStructTree();
|
|
11152
11764
|
this.#rawDims = rawDims;
|
|
@@ -11255,15 +11867,43 @@ class StructTreeLayerBuilder {
|
|
|
11255
11867
|
style.top = `${calc}${pageHeight - bbox[3] + pageY}px)`;
|
|
11256
11868
|
return true;
|
|
11257
11869
|
}
|
|
11258
|
-
|
|
11259
|
-
if (
|
|
11260
|
-
|
|
11870
|
+
updateTextLayer() {
|
|
11871
|
+
if (this.#elementsToAddToTextLayer) {
|
|
11872
|
+
for (const [id, img] of this.#elementsToAddToTextLayer) {
|
|
11873
|
+
document.getElementById(id)?.append(img);
|
|
11874
|
+
}
|
|
11875
|
+
this.#elementsToAddToTextLayer.clear();
|
|
11876
|
+
this.#elementsToAddToTextLayer = null;
|
|
11261
11877
|
}
|
|
11262
|
-
|
|
11263
|
-
|
|
11878
|
+
if (this.#elementsToHideInTextLayer) {
|
|
11879
|
+
for (const id of this.#elementsToHideInTextLayer) {
|
|
11880
|
+
const elem = document.getElementById(id);
|
|
11881
|
+
if (elem) {
|
|
11882
|
+
elem.ariaHidden = true;
|
|
11883
|
+
}
|
|
11884
|
+
}
|
|
11885
|
+
this.#elementsToHideInTextLayer.length = 0;
|
|
11886
|
+
this.#elementsToHideInTextLayer = null;
|
|
11887
|
+
}
|
|
11888
|
+
if (this.#elementsToStealFromTextLayer) {
|
|
11889
|
+
for (let i = 0, ii = this.#elementsToStealFromTextLayer.length; i < ii; i += 2) {
|
|
11890
|
+
const element = this.#elementsToStealFromTextLayer[i];
|
|
11891
|
+
const ids = this.#elementsToStealFromTextLayer[i + 1];
|
|
11892
|
+
let textContent = "";
|
|
11893
|
+
for (const id of ids) {
|
|
11894
|
+
const elem = document.getElementById(id);
|
|
11895
|
+
if (elem) {
|
|
11896
|
+
textContent += elem.textContent.trim() || "";
|
|
11897
|
+
elem.ariaHidden = "true";
|
|
11898
|
+
}
|
|
11899
|
+
}
|
|
11900
|
+
if (textContent) {
|
|
11901
|
+
element.textContent = textContent;
|
|
11902
|
+
}
|
|
11903
|
+
}
|
|
11904
|
+
this.#elementsToStealFromTextLayer.length = 0;
|
|
11905
|
+
this.#elementsToStealFromTextLayer = null;
|
|
11264
11906
|
}
|
|
11265
|
-
this.#elementsToAddToTextLayer.clear();
|
|
11266
|
-
this.#elementsToAddToTextLayer = null;
|
|
11267
11907
|
}
|
|
11268
11908
|
#walk(node) {
|
|
11269
11909
|
if (!node) {
|
|
@@ -11276,22 +11916,16 @@ class StructTreeLayerBuilder {
|
|
|
11276
11916
|
} = node;
|
|
11277
11917
|
if (MathMLElements.has(role)) {
|
|
11278
11918
|
element = document.createElementNS(MathMLNamespace, role);
|
|
11279
|
-
|
|
11919
|
+
const ids = [];
|
|
11920
|
+
(this.#elementsToStealFromTextLayer ||= []).push(element, ids);
|
|
11280
11921
|
for (const {
|
|
11281
11922
|
type,
|
|
11282
11923
|
id
|
|
11283
11924
|
} of node.children || []) {
|
|
11284
|
-
if (type
|
|
11285
|
-
|
|
11286
|
-
}
|
|
11287
|
-
const elem = document.getElementById(id);
|
|
11288
|
-
if (!elem) {
|
|
11289
|
-
continue;
|
|
11925
|
+
if (type === "content" && id) {
|
|
11926
|
+
ids.push(id);
|
|
11290
11927
|
}
|
|
11291
|
-
text += elem.textContent.trim() || "";
|
|
11292
|
-
elem.ariaHidden = "true";
|
|
11293
11928
|
}
|
|
11294
|
-
element.textContent = text;
|
|
11295
11929
|
} else {
|
|
11296
11930
|
element = document.createElement("span");
|
|
11297
11931
|
}
|
|
@@ -11316,14 +11950,13 @@ class StructTreeLayerBuilder {
|
|
|
11316
11950
|
if (!id) {
|
|
11317
11951
|
continue;
|
|
11318
11952
|
}
|
|
11319
|
-
|
|
11320
|
-
if (elem) {
|
|
11321
|
-
elem.ariaHidden = true;
|
|
11322
|
-
}
|
|
11953
|
+
(this.#elementsToHideInTextLayer ||= []).push(id);
|
|
11323
11954
|
}
|
|
11955
|
+
delete node.alt;
|
|
11324
11956
|
}
|
|
11325
11957
|
if (!node.mathML && node.children.length === 1 && node.children[0].role !== "math") {
|
|
11326
11958
|
element = document.createElementNS(MathMLNamespace, "math");
|
|
11959
|
+
delete node.alt;
|
|
11327
11960
|
}
|
|
11328
11961
|
}
|
|
11329
11962
|
}
|
|
@@ -12065,6 +12698,25 @@ class PDFPageView extends BasePDFPageView {
|
|
|
12065
12698
|
}
|
|
12066
12699
|
setLayerDimensions(div, viewport, true, false);
|
|
12067
12700
|
}
|
|
12701
|
+
updatePageNumber(newPageNumber) {
|
|
12702
|
+
if (this.id === newPageNumber) {
|
|
12703
|
+
return;
|
|
12704
|
+
}
|
|
12705
|
+
this.id = newPageNumber;
|
|
12706
|
+
this.renderingId = `page${newPageNumber}`;
|
|
12707
|
+
if (this.pdfPage) {
|
|
12708
|
+
this.pdfPage.pageNumber = newPageNumber;
|
|
12709
|
+
}
|
|
12710
|
+
this.setPageLabel(this.pageLabel);
|
|
12711
|
+
const {
|
|
12712
|
+
div
|
|
12713
|
+
} = this;
|
|
12714
|
+
div.setAttribute("data-page-number", newPageNumber);
|
|
12715
|
+
div.setAttribute("data-l10n-args", JSON.stringify({
|
|
12716
|
+
page: newPageNumber
|
|
12717
|
+
}));
|
|
12718
|
+
this._textHighlighter.pageIdx = newPageNumber - 1;
|
|
12719
|
+
}
|
|
12068
12720
|
setPdfPage(pdfPage) {
|
|
12069
12721
|
if (this._isStandalone && (this.pageColors?.foreground === "CanvasText" || this.pageColors?.background === "Canvas")) {
|
|
12070
12722
|
this._container?.style.setProperty("--hcm-highlight-filter", pdfPage.filterFactory.addHighlightHCMFilter("highlight", "CanvasText", "Canvas", "HighlightText", "Highlight"));
|
|
@@ -12187,7 +12839,7 @@ class PDFPageView extends BasePDFPageView {
|
|
|
12187
12839
|
const treeDom = await this.structTreeLayer?.render();
|
|
12188
12840
|
if (treeDom) {
|
|
12189
12841
|
this.l10n.pause();
|
|
12190
|
-
this.structTreeLayer?.
|
|
12842
|
+
this.structTreeLayer?.updateTextLayer();
|
|
12191
12843
|
if (this.canvas && treeDom.parentNode !== this.canvas) {
|
|
12192
12844
|
this.canvas.append(treeDom);
|
|
12193
12845
|
}
|
|
@@ -12653,9 +13305,7 @@ class PDFPageView extends BasePDFPageView {
|
|
|
12653
13305
|
if (!annotationEditorUIManager) {
|
|
12654
13306
|
return;
|
|
12655
13307
|
}
|
|
12656
|
-
this.drawLayer ||= new DrawLayerBuilder(
|
|
12657
|
-
pageIndex: this.id
|
|
12658
|
-
});
|
|
13308
|
+
this.drawLayer ||= new DrawLayerBuilder();
|
|
12659
13309
|
await this.#renderDrawLayer();
|
|
12660
13310
|
this.drawLayer.setParent(canvasWrapper);
|
|
12661
13311
|
if (this.annotationLayer || this.#annotationMode === AnnotationMode.DISABLE) {
|
|
@@ -12812,8 +13462,9 @@ class PDFViewer {
|
|
|
12812
13462
|
#supportsPinchToZoom = true;
|
|
12813
13463
|
#textLayerMode = TextLayerMode.ENABLE;
|
|
12814
13464
|
#viewerAlert = null;
|
|
13465
|
+
#pagesMapper = PagesMapper.instance;
|
|
12815
13466
|
constructor(options) {
|
|
12816
|
-
const viewerVersion = "5.4.
|
|
13467
|
+
const viewerVersion = "5.4.624";
|
|
12817
13468
|
if (version !== viewerVersion) {
|
|
12818
13469
|
throw new Error(`The API version "${version}" does not match the Viewer version "${viewerVersion}".`);
|
|
12819
13470
|
}
|
|
@@ -13195,6 +13846,7 @@ class PDFViewer {
|
|
|
13195
13846
|
this.#annotationEditorUIManager = null;
|
|
13196
13847
|
this.#annotationEditorMode = AnnotationEditorType.NONE;
|
|
13197
13848
|
this.#printingAllowed = true;
|
|
13849
|
+
this.#pagesMapper.pagesNumber = 0;
|
|
13198
13850
|
}
|
|
13199
13851
|
this.pdfDocument = pdfDocument;
|
|
13200
13852
|
if (!pdfDocument) {
|
|
@@ -13403,6 +14055,44 @@ class PDFViewer {
|
|
|
13403
14055
|
this._pagesCapability.reject(reason);
|
|
13404
14056
|
});
|
|
13405
14057
|
}
|
|
14058
|
+
async onBeforePagesEdited({
|
|
14059
|
+
pagesMapper
|
|
14060
|
+
}) {
|
|
14061
|
+
await this._pagesCapability.promise;
|
|
14062
|
+
this._currentPageId = pagesMapper.getPageId(this._currentPageNumber);
|
|
14063
|
+
}
|
|
14064
|
+
onPagesEdited({
|
|
14065
|
+
pagesMapper
|
|
14066
|
+
}) {
|
|
14067
|
+
this._currentPageNumber = pagesMapper.getPageNumber(this._currentPageId);
|
|
14068
|
+
const prevPages = this._pages;
|
|
14069
|
+
const newPages = this._pages = [];
|
|
14070
|
+
for (let i = 0, ii = pagesMapper.pagesNumber; i < ii; i++) {
|
|
14071
|
+
const prevPageNumber = pagesMapper.getPrevPageNumber(i + 1) - 1;
|
|
14072
|
+
if (prevPageNumber === -1) {
|
|
14073
|
+
continue;
|
|
14074
|
+
}
|
|
14075
|
+
const page = prevPages[prevPageNumber];
|
|
14076
|
+
newPages[i] = page;
|
|
14077
|
+
page.updatePageNumber(i + 1);
|
|
14078
|
+
}
|
|
14079
|
+
const viewerElement = this._scrollMode === ScrollMode.PAGE ? null : this.viewer;
|
|
14080
|
+
if (viewerElement) {
|
|
14081
|
+
viewerElement.replaceChildren();
|
|
14082
|
+
const fragment = document.createDocumentFragment();
|
|
14083
|
+
for (let i = 0, ii = pagesMapper.pagesNumber; i < ii; i++) {
|
|
14084
|
+
const {
|
|
14085
|
+
div
|
|
14086
|
+
} = newPages[i];
|
|
14087
|
+
div.setAttribute("data-page-number", i + 1);
|
|
14088
|
+
fragment.append(div);
|
|
14089
|
+
}
|
|
14090
|
+
viewerElement.append(fragment);
|
|
14091
|
+
}
|
|
14092
|
+
setTimeout(() => {
|
|
14093
|
+
this.forceRendering();
|
|
14094
|
+
});
|
|
14095
|
+
}
|
|
13406
14096
|
setPageLabels(labels) {
|
|
13407
14097
|
if (!this.pdfDocument) {
|
|
13408
14098
|
return;
|
|
@@ -13829,18 +14519,18 @@ class PDFViewer {
|
|
|
13829
14519
|
}
|
|
13830
14520
|
this.renderingQueue.renderHighestPriority(visible);
|
|
13831
14521
|
const isSimpleLayout = this._spreadMode === SpreadMode.NONE && (this._scrollMode === ScrollMode.PAGE || this._scrollMode === ScrollMode.VERTICAL);
|
|
13832
|
-
const
|
|
14522
|
+
const currentPageNumber = this._currentPageNumber;
|
|
13833
14523
|
let stillFullyVisible = false;
|
|
13834
14524
|
for (const page of visiblePages) {
|
|
13835
14525
|
if (page.percent < 100) {
|
|
13836
14526
|
break;
|
|
13837
14527
|
}
|
|
13838
|
-
if (page.id ===
|
|
14528
|
+
if (page.id === currentPageNumber && isSimpleLayout) {
|
|
13839
14529
|
stillFullyVisible = true;
|
|
13840
14530
|
break;
|
|
13841
14531
|
}
|
|
13842
14532
|
}
|
|
13843
|
-
this._setCurrentPageNumber(stillFullyVisible ?
|
|
14533
|
+
this._setCurrentPageNumber(stillFullyVisible ? this._currentPageNumber : visiblePages[0].id);
|
|
13844
14534
|
this._updateLocation(visible.first);
|
|
13845
14535
|
this.eventBus.dispatch("updateviewarea", {
|
|
13846
14536
|
source: this,
|
|
@@ -15976,152 +16666,6 @@ class ViewHistory {
|
|
|
15976
16666
|
}
|
|
15977
16667
|
}
|
|
15978
16668
|
|
|
15979
|
-
;// ./web/menu.js
|
|
15980
|
-
|
|
15981
|
-
class Menu {
|
|
15982
|
-
#triggeringButton;
|
|
15983
|
-
#menu;
|
|
15984
|
-
#menuItems;
|
|
15985
|
-
#openMenuAC = null;
|
|
15986
|
-
#menuAC = new AbortController();
|
|
15987
|
-
#lastIndex = -1;
|
|
15988
|
-
constructor(menuContainer, triggeringButton, menuItems) {
|
|
15989
|
-
this.#menu = menuContainer;
|
|
15990
|
-
this.#triggeringButton = triggeringButton;
|
|
15991
|
-
if (Array.isArray(menuItems)) {
|
|
15992
|
-
this.#menuItems = menuItems;
|
|
15993
|
-
} else {
|
|
15994
|
-
this.#menuItems = [];
|
|
15995
|
-
for (const button of this.#menu.querySelectorAll("button")) {
|
|
15996
|
-
this.#menuItems.push(button);
|
|
15997
|
-
}
|
|
15998
|
-
}
|
|
15999
|
-
this.#setUpMenu();
|
|
16000
|
-
}
|
|
16001
|
-
#closeMenu() {
|
|
16002
|
-
if (!this.#openMenuAC) {
|
|
16003
|
-
return;
|
|
16004
|
-
}
|
|
16005
|
-
const menu = this.#menu;
|
|
16006
|
-
menu.classList.toggle("hidden", true);
|
|
16007
|
-
this.#triggeringButton.ariaExpanded = "false";
|
|
16008
|
-
this.#openMenuAC.abort();
|
|
16009
|
-
this.#openMenuAC = null;
|
|
16010
|
-
if (menu.contains(document.activeElement)) {
|
|
16011
|
-
setTimeout(() => {
|
|
16012
|
-
if (!menu.contains(document.activeElement)) {
|
|
16013
|
-
this.#triggeringButton.focus();
|
|
16014
|
-
}
|
|
16015
|
-
}, 0);
|
|
16016
|
-
}
|
|
16017
|
-
this.#lastIndex = -1;
|
|
16018
|
-
}
|
|
16019
|
-
#setUpMenu() {
|
|
16020
|
-
this.#triggeringButton.addEventListener("click", e => {
|
|
16021
|
-
if (this.#openMenuAC) {
|
|
16022
|
-
this.#closeMenu();
|
|
16023
|
-
return;
|
|
16024
|
-
}
|
|
16025
|
-
const menu = this.#menu;
|
|
16026
|
-
menu.classList.toggle("hidden", false);
|
|
16027
|
-
this.#triggeringButton.ariaExpanded = "true";
|
|
16028
|
-
this.#openMenuAC = new AbortController();
|
|
16029
|
-
const signal = AbortSignal.any([this.#menuAC.signal, this.#openMenuAC.signal]);
|
|
16030
|
-
window.addEventListener("pointerdown", ({
|
|
16031
|
-
target
|
|
16032
|
-
}) => {
|
|
16033
|
-
if (target !== this.#triggeringButton && !menu.contains(target)) {
|
|
16034
|
-
this.#closeMenu();
|
|
16035
|
-
}
|
|
16036
|
-
}, {
|
|
16037
|
-
signal
|
|
16038
|
-
});
|
|
16039
|
-
window.addEventListener("blur", this.#closeMenu.bind(this), {
|
|
16040
|
-
signal
|
|
16041
|
-
});
|
|
16042
|
-
});
|
|
16043
|
-
const {
|
|
16044
|
-
signal
|
|
16045
|
-
} = this.#menuAC;
|
|
16046
|
-
this.#menu.addEventListener("keydown", e => {
|
|
16047
|
-
switch (e.key) {
|
|
16048
|
-
case "Escape":
|
|
16049
|
-
this.#closeMenu();
|
|
16050
|
-
stopEvent(e);
|
|
16051
|
-
break;
|
|
16052
|
-
case "ArrowDown":
|
|
16053
|
-
case "Tab":
|
|
16054
|
-
this.#goToNextItem(e.target, true);
|
|
16055
|
-
stopEvent(e);
|
|
16056
|
-
break;
|
|
16057
|
-
case "ArrowUp":
|
|
16058
|
-
case "ShiftTab":
|
|
16059
|
-
this.#goToNextItem(e.target, false);
|
|
16060
|
-
stopEvent(e);
|
|
16061
|
-
break;
|
|
16062
|
-
case "Home":
|
|
16063
|
-
this.#menuItems.find(item => !item.disabled && !item.classList.contains("hidden")).focus();
|
|
16064
|
-
stopEvent(e);
|
|
16065
|
-
break;
|
|
16066
|
-
case "End":
|
|
16067
|
-
this.#menuItems.findLast(item => !item.disabled && !item.classList.contains("hidden")).focus();
|
|
16068
|
-
stopEvent(e);
|
|
16069
|
-
break;
|
|
16070
|
-
}
|
|
16071
|
-
}, {
|
|
16072
|
-
signal,
|
|
16073
|
-
capture: true
|
|
16074
|
-
});
|
|
16075
|
-
this.#menu.addEventListener("contextmenu", noContextMenu, {
|
|
16076
|
-
signal
|
|
16077
|
-
});
|
|
16078
|
-
this.#menu.addEventListener("click", this.#closeMenu.bind(this), {
|
|
16079
|
-
signal,
|
|
16080
|
-
capture: true
|
|
16081
|
-
});
|
|
16082
|
-
this.#triggeringButton.addEventListener("keydown", ev => {
|
|
16083
|
-
if (!this.#openMenuAC) {
|
|
16084
|
-
return;
|
|
16085
|
-
}
|
|
16086
|
-
switch (ev.key) {
|
|
16087
|
-
case "ArrowDown":
|
|
16088
|
-
case "Home":
|
|
16089
|
-
this.#menuItems.find(item => !item.disabled && !item.classList.contains("hidden")).focus();
|
|
16090
|
-
stopEvent(ev);
|
|
16091
|
-
break;
|
|
16092
|
-
case "ArrowUp":
|
|
16093
|
-
case "End":
|
|
16094
|
-
this.#menuItems.findLast(item => !item.disabled && !item.classList.contains("hidden")).focus();
|
|
16095
|
-
stopEvent(ev);
|
|
16096
|
-
break;
|
|
16097
|
-
case "Escape":
|
|
16098
|
-
this.#closeMenu();
|
|
16099
|
-
stopEvent(ev);
|
|
16100
|
-
}
|
|
16101
|
-
}, {
|
|
16102
|
-
signal
|
|
16103
|
-
});
|
|
16104
|
-
}
|
|
16105
|
-
#goToNextItem(element, forward) {
|
|
16106
|
-
const index = this.#lastIndex === -1 ? this.#menuItems.indexOf(element) : this.#lastIndex;
|
|
16107
|
-
const len = this.#menuItems.length;
|
|
16108
|
-
const increment = forward ? 1 : len - 1;
|
|
16109
|
-
for (let i = (index + increment) % len; i !== index; i = (i + increment) % len) {
|
|
16110
|
-
const menuItem = this.#menuItems[i];
|
|
16111
|
-
if (!menuItem.disabled && !menuItem.classList.contains("hidden")) {
|
|
16112
|
-
menuItem.focus();
|
|
16113
|
-
this.#lastIndex = i;
|
|
16114
|
-
break;
|
|
16115
|
-
}
|
|
16116
|
-
}
|
|
16117
|
-
}
|
|
16118
|
-
destroy() {
|
|
16119
|
-
this.#closeMenu();
|
|
16120
|
-
this.#menuAC?.abort();
|
|
16121
|
-
this.#menuAC = null;
|
|
16122
|
-
}
|
|
16123
|
-
}
|
|
16124
|
-
|
|
16125
16669
|
;// ./web/views_manager.js
|
|
16126
16670
|
|
|
16127
16671
|
|
|
@@ -16765,7 +17309,9 @@ const PDFViewerApplication = {
|
|
|
16765
17309
|
maxCanvasDim,
|
|
16766
17310
|
pageColors,
|
|
16767
17311
|
abortSignal,
|
|
16768
|
-
enableHWA
|
|
17312
|
+
enableHWA,
|
|
17313
|
+
enableSplitMerge: AppOptions.get("enableSplitMerge"),
|
|
17314
|
+
manageMenu: appConfig.viewsManager.manageMenu
|
|
16769
17315
|
});
|
|
16770
17316
|
renderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);
|
|
16771
17317
|
}
|
|
@@ -17159,12 +17705,7 @@ const PDFViewerApplication = {
|
|
|
17159
17705
|
this.passwordPrompt.setUpdateCallback(updateCallback, reason);
|
|
17160
17706
|
this.passwordPrompt.open();
|
|
17161
17707
|
};
|
|
17162
|
-
loadingTask.onProgress = (
|
|
17163
|
-
loaded,
|
|
17164
|
-
total
|
|
17165
|
-
}) => {
|
|
17166
|
-
this.progress(loaded / total);
|
|
17167
|
-
};
|
|
17708
|
+
loadingTask.onProgress = evt => this.progress(evt.percent);
|
|
17168
17709
|
return loadingTask.promise.then(pdfDocument => {
|
|
17169
17710
|
this.load(pdfDocument);
|
|
17170
17711
|
}, reason => {
|
|
@@ -17254,8 +17795,7 @@ const PDFViewerApplication = {
|
|
|
17254
17795
|
console.error(`${message}\n\n${moreInfoText.join("\n")}`);
|
|
17255
17796
|
return message;
|
|
17256
17797
|
},
|
|
17257
|
-
progress(
|
|
17258
|
-
const percent = Math.round(level * 100);
|
|
17798
|
+
progress(percent) {
|
|
17259
17799
|
if (!this.loadingBar || percent <= this.loadingBar.percent) {
|
|
17260
17800
|
return;
|
|
17261
17801
|
}
|
|
@@ -17772,6 +18312,9 @@ const PDFViewerApplication = {
|
|
|
17772
18312
|
eventBus._on("updatefindcontrolstate", onUpdateFindControlState.bind(this), opts);
|
|
17773
18313
|
eventBus._on("fileinputchange", onFileInputChange.bind(this), opts);
|
|
17774
18314
|
eventBus._on("openfile", onOpenFile.bind(this), opts);
|
|
18315
|
+
eventBus._on("pagesedited", this.onPagesEdited.bind(this), opts);
|
|
18316
|
+
eventBus._on("beforepagesedited", this.onBeforePagesEdited.bind(this), opts);
|
|
18317
|
+
eventBus._on("savepageseditedpdf", this.onSavePagesEditedPDF.bind(this), opts);
|
|
17775
18318
|
},
|
|
17776
18319
|
bindWindowEvents() {
|
|
17777
18320
|
if (this._windowAbortController) {
|
|
@@ -17914,6 +18457,35 @@ const PDFViewerApplication = {
|
|
|
17914
18457
|
this.findBar?.close();
|
|
17915
18458
|
await Promise.all([this.l10n?.destroy(), this.close()]);
|
|
17916
18459
|
},
|
|
18460
|
+
onBeforePagesEdited(data) {
|
|
18461
|
+
this.pdfViewer.onBeforePagesEdited(data);
|
|
18462
|
+
},
|
|
18463
|
+
onPagesEdited(data) {
|
|
18464
|
+
this.pdfViewer.onPagesEdited(data);
|
|
18465
|
+
},
|
|
18466
|
+
async onSavePagesEditedPDF({
|
|
18467
|
+
data: {
|
|
18468
|
+
includePages,
|
|
18469
|
+
excludePages,
|
|
18470
|
+
pageIndices
|
|
18471
|
+
}
|
|
18472
|
+
}) {
|
|
18473
|
+
if (!this.pdfDocument) {
|
|
18474
|
+
return;
|
|
18475
|
+
}
|
|
18476
|
+
const pageInfo = {
|
|
18477
|
+
document: null,
|
|
18478
|
+
includePages,
|
|
18479
|
+
excludePages,
|
|
18480
|
+
pageIndices
|
|
18481
|
+
};
|
|
18482
|
+
const modifiedPdfBytes = await this.pdfDocument.extractPages([pageInfo]);
|
|
18483
|
+
if (!modifiedPdfBytes) {
|
|
18484
|
+
console.error("Something wrong happened when saving the edited PDF.\nPlease file a bug.");
|
|
18485
|
+
return;
|
|
18486
|
+
}
|
|
18487
|
+
this.downloadManager.download(modifiedPdfBytes, this._downloadUrl, this._docFilename);
|
|
18488
|
+
},
|
|
17917
18489
|
_accumulateTicks(ticks, prop) {
|
|
17918
18490
|
if (this[prop] > 0 && ticks < 0 || this[prop] < 0 && ticks > 0) {
|
|
17919
18491
|
this[prop] = 0;
|
|
@@ -18626,7 +19198,15 @@ function getViewerConfiguration() {
|
|
|
18626
19198
|
layersView: document.getElementById("layersView"),
|
|
18627
19199
|
viewsManagerAddFileButton: document.getElementById("viewsManagerAddFileButton"),
|
|
18628
19200
|
viewsManagerCurrentOutlineButton: document.getElementById("viewsManagerCurrentOutlineButton"),
|
|
18629
|
-
viewsManagerHeaderLabel: document.getElementById("viewsManagerHeaderLabel")
|
|
19201
|
+
viewsManagerHeaderLabel: document.getElementById("viewsManagerHeaderLabel"),
|
|
19202
|
+
manageMenu: {
|
|
19203
|
+
button: document.getElementById("viewsManagerStatusActionButton"),
|
|
19204
|
+
menu: document.getElementById("viewsManagerStatusActionOptions"),
|
|
19205
|
+
copy: document.getElementById("viewsManagerStatusActionCopy"),
|
|
19206
|
+
cut: document.getElementById("viewsManagerStatusActionCut"),
|
|
19207
|
+
delete: document.getElementById("viewsManagerStatusActionDelete"),
|
|
19208
|
+
saveAs: document.getElementById("viewsManagerStatusActionSaveAs")
|
|
19209
|
+
}
|
|
18630
19210
|
},
|
|
18631
19211
|
findBar: {
|
|
18632
19212
|
bar: document.getElementById("findbar"),
|