@pristy/pristy-libvue 3.0.0 → 3.1.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/dist/ActivityHistory-BLsSFzfP.js +235 -0
- package/dist/ActivityHistory-BLsSFzfP.js.map +1 -0
- package/dist/AlfrescoApi.d.ts.map +1 -0
- package/dist/BookmarksComponent-i6mFff8y.js +44 -0
- package/dist/BookmarksComponent-i6mFff8y.js.map +1 -0
- package/dist/ChartWrapper-8nl96UQq.js +59 -0
- package/dist/ChartWrapper-8nl96UQq.js.map +1 -0
- package/dist/DisplayFileInDashboardComponent-YSKmRXrK.js +105 -0
- package/dist/DisplayFileInDashboardComponent-YSKmRXrK.js.map +1 -0
- package/dist/ExternalApps-B30MYLdt.js +90 -0
- package/dist/ExternalApps-B30MYLdt.js.map +1 -0
- package/dist/FavoriteList-9cXLdtMh.js +380 -0
- package/dist/FavoriteList-9cXLdtMh.js.map +1 -0
- package/dist/MarkdownComponent-vN01MbFM.js +55 -0
- package/dist/MarkdownComponent-vN01MbFM.js.map +1 -0
- package/dist/PDFComponent-DjEBu0cQ.js +1077 -0
- package/dist/PDFComponent-DjEBu0cQ.js.map +1 -0
- package/dist/PdfCommentService-D5m9OkWV.js +200 -0
- package/dist/PdfCommentService-D5m9OkWV.js.map +1 -0
- package/dist/PdfConfigService-9q_fMJP1.js +17 -0
- package/dist/PdfConfigService-9q_fMJP1.js.map +1 -0
- package/dist/PdfInfoWriter-Bvp327Pn.js +80 -0
- package/dist/PdfInfoWriter-Bvp327Pn.js.map +1 -0
- package/dist/PdfToolsComponent-nHHo5LtF.js +1948 -0
- package/dist/PdfToolsComponent-nHHo5LtF.js.map +1 -0
- package/dist/PlanTreePdfService-r8f9ERs2.js +76 -0
- package/dist/PlanTreePdfService-r8f9ERs2.js.map +1 -0
- package/dist/SearchInput-Dp0N7yZE.js +58 -0
- package/dist/SearchInput-Dp0N7yZE.js.map +1 -0
- package/dist/UnknownBlockType-4VLPDRkN.js +22 -0
- package/dist/UnknownBlockType-4VLPDRkN.js.map +1 -0
- package/dist/components/CodeMirrorBase.vue.d.ts +43 -0
- package/dist/components/CodeMirrorBase.vue.d.ts.map +1 -0
- package/dist/components/CodeMirrorEditor.vue.d.ts +145 -0
- package/dist/components/CodeMirrorEditor.vue.d.ts.map +1 -0
- package/dist/components/DiffViewer.vue.d.ts +37 -0
- package/dist/components/DiffViewer.vue.d.ts.map +1 -0
- package/dist/components/DiffViewerDialog.vue.d.ts +103 -0
- package/dist/components/DiffViewerDialog.vue.d.ts.map +1 -0
- package/dist/components/EditorAppearanceSettings.vue.d.ts +24 -0
- package/dist/components/EditorAppearanceSettings.vue.d.ts.map +1 -0
- package/dist/components/ErrorComponent.vue.d.ts +58 -0
- package/dist/components/ErrorComponent.vue.d.ts.map +1 -0
- package/dist/components/FolderUpload.vue.d.ts +89 -0
- package/dist/components/FolderUpload.vue.d.ts.map +1 -0
- package/dist/components/HelpKeyMessage.vue.d.ts +36 -0
- package/dist/components/HelpKeyMessage.vue.d.ts.map +1 -0
- package/dist/components/IconPickerDialog.vue.d.ts +99 -0
- package/dist/components/IconPickerDialog.vue.d.ts.map +1 -0
- package/dist/components/IndexAwaitOverlay.vue.d.ts +31 -0
- package/dist/components/IndexAwaitOverlay.vue.d.ts.map +1 -0
- package/dist/components/PristyIcon.vue.d.ts +34 -0
- package/dist/components/PristyIcon.vue.d.ts.map +1 -0
- package/dist/components/SelectionStatus.vue.d.ts +56 -0
- package/dist/components/SelectionStatus.vue.d.ts.map +1 -0
- package/dist/components/TreeExplorer.vue.d.ts +93 -0
- package/dist/components/TreeExplorer.vue.d.ts.map +1 -0
- package/dist/components/UploadStatus.vue.d.ts +106 -0
- package/dist/components/UploadStatus.vue.d.ts.map +1 -0
- package/dist/components/UploadTargetInfo.vue.d.ts +14 -0
- package/dist/components/UploadTargetInfo.vue.d.ts.map +1 -0
- package/dist/components/auth/OidcCallback.vue.d.ts +8 -0
- package/dist/components/auth/OidcCallback.vue.d.ts.map +1 -0
- package/dist/components/breadcrumb/BreadCrumbAlfresco.vue.d.ts +119 -0
- package/dist/components/breadcrumb/BreadCrumbAlfresco.vue.d.ts.map +1 -0
- package/dist/components/breadcrumb/ComplexBreadcrumb.vue.d.ts +279 -0
- package/dist/components/breadcrumb/ComplexBreadcrumb.vue.d.ts.map +1 -0
- package/dist/components/breadcrumb/EllipsisBreadcrumb.vue.d.ts +155 -0
- package/dist/components/breadcrumb/EllipsisBreadcrumb.vue.d.ts.map +1 -0
- package/dist/components/chat/ChatInput.vue.d.ts +77 -0
- package/dist/components/chat/ChatInput.vue.d.ts.map +1 -0
- package/dist/components/chat/ChatMessage.vue.d.ts +75 -0
- package/dist/components/chat/ChatMessage.vue.d.ts.map +1 -0
- package/dist/components/chat/ChatPanel.vue.d.ts +481 -0
- package/dist/components/chat/ChatPanel.vue.d.ts.map +1 -0
- package/dist/components/chat/ChatRoomList.vue.d.ts +85 -0
- package/dist/components/chat/ChatRoomList.vue.d.ts.map +1 -0
- package/dist/components/classification/AdminClassificationLauncher.vue.d.ts +19 -0
- package/dist/components/classification/AdminClassificationLauncher.vue.d.ts.map +1 -0
- package/dist/components/classification/AdminClassificationPage.vue.d.ts +827 -0
- package/dist/components/classification/AdminClassificationPage.vue.d.ts.map +1 -0
- package/dist/components/classification/AiLearningPanel.vue.d.ts +41 -0
- package/dist/components/classification/AiLearningPanel.vue.d.ts.map +1 -0
- package/dist/components/classification/AiProcessingBadge.vue.d.ts +29 -0
- package/dist/components/classification/AiProcessingBadge.vue.d.ts.map +1 -0
- package/dist/components/classification/AiSuggestionsPanel.vue.d.ts +93 -0
- package/dist/components/classification/AiSuggestionsPanel.vue.d.ts.map +1 -0
- package/dist/components/classification/ClassificationPlanCreate.vue.d.ts +28 -0
- package/dist/components/classification/ClassificationPlanCreate.vue.d.ts.map +1 -0
- package/dist/components/classification/ClassificationPlanList.vue.d.ts +74 -0
- package/dist/components/classification/ClassificationPlanList.vue.d.ts.map +1 -0
- package/dist/components/classification/DictionaryForm.vue.d.ts +66 -0
- package/dist/components/classification/DictionaryForm.vue.d.ts.map +1 -0
- package/dist/components/classification/EmplacementForm.vue.d.ts +107 -0
- package/dist/components/classification/EmplacementForm.vue.d.ts.map +1 -0
- package/dist/components/classification/FieldForm.vue.d.ts +152 -0
- package/dist/components/classification/FieldForm.vue.d.ts.map +1 -0
- package/dist/components/classification/LexiconForm.vue.d.ts +67 -0
- package/dist/components/classification/LexiconForm.vue.d.ts.map +1 -0
- package/dist/components/classification/MetadataFormFields.vue.d.ts +273 -0
- package/dist/components/classification/MetadataFormFields.vue.d.ts.map +1 -0
- package/dist/components/classification/NatureForm.vue.d.ts +153 -0
- package/dist/components/classification/NatureForm.vue.d.ts.map +1 -0
- package/dist/components/classification/NatureSelector.vue.d.ts +197 -0
- package/dist/components/classification/NatureSelector.vue.d.ts.map +1 -0
- package/dist/components/classification/PlanInformationPanel.vue.d.ts +89 -0
- package/dist/components/classification/PlanInformationPanel.vue.d.ts.map +1 -0
- package/dist/components/classification/PlanSuggestInput.vue.d.ts +84 -0
- package/dist/components/classification/PlanSuggestInput.vue.d.ts.map +1 -0
- package/dist/components/classification/PlanTreePanel.vue.d.ts +79 -0
- package/dist/components/classification/PlanTreePanel.vue.d.ts.map +1 -0
- package/dist/components/classification/UploadPlanPopup.vue.d.ts +354 -0
- package/dist/components/classification/UploadPlanPopup.vue.d.ts.map +1 -0
- package/dist/components/classification/ViewSelectorPopup.vue.d.ts +122 -0
- package/dist/components/classification/ViewSelectorPopup.vue.d.ts.map +1 -0
- package/dist/components/config/AddPairInConfigDialog.vue.d.ts +60 -0
- package/dist/components/config/AddPairInConfigDialog.vue.d.ts.map +1 -0
- package/dist/components/config/ArrayEditor.vue.d.ts +68 -0
- package/dist/components/config/ArrayEditor.vue.d.ts.map +1 -0
- package/dist/components/config/ConfigDatatable.vue.d.ts +77 -0
- package/dist/components/config/ConfigDatatable.vue.d.ts.map +1 -0
- package/dist/components/config/ConfigHealthBanner.vue.d.ts +25 -0
- package/dist/components/config/ConfigHealthBanner.vue.d.ts.map +1 -0
- package/dist/components/config/ConfigItemEditor.vue.d.ts +80 -0
- package/dist/components/config/ConfigItemEditor.vue.d.ts.map +1 -0
- package/dist/components/config/ConfigRawEditor.vue.d.ts +100 -0
- package/dist/components/config/ConfigRawEditor.vue.d.ts.map +1 -0
- package/dist/components/config/ConfigSplitView.vue.d.ts +89 -0
- package/dist/components/config/ConfigSplitView.vue.d.ts.map +1 -0
- package/dist/components/config/ConfigUpload.vue.d.ts +40 -0
- package/dist/components/config/ConfigUpload.vue.d.ts.map +1 -0
- package/dist/components/config/ListVersionConfig.vue.d.ts +130 -0
- package/dist/components/config/ListVersionConfig.vue.d.ts.map +1 -0
- package/dist/components/dashboard/DashboardAdminPage.vue.d.ts +2244 -0
- package/dist/components/dashboard/DashboardAdminPage.vue.d.ts.map +1 -0
- package/dist/components/dashboard/DashboardComponent.vue.d.ts +1498 -0
- package/dist/components/dashboard/DashboardComponent.vue.d.ts.map +1 -0
- package/dist/components/dashboard/DashboardSkeleton.vue.d.ts +17 -0
- package/dist/components/dashboard/DashboardSkeleton.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/BlockConfigEditor.vue.d.ts +1060 -0
- package/dist/components/dashboard/editor/BlockConfigEditor.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/DashboardEditor.vue.d.ts +2095 -0
- package/dist/components/dashboard/editor/DashboardEditor.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/FieldLabel.vue.d.ts +55 -0
- package/dist/components/dashboard/editor/FieldLabel.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/JsonEditorDialog.vue.d.ts +93 -0
- package/dist/components/dashboard/editor/JsonEditorDialog.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/MarkdownEditorDialog.vue.d.ts +102 -0
- package/dist/components/dashboard/editor/MarkdownEditorDialog.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/VersionHistoryDialog.vue.d.ts +101 -0
- package/dist/components/dashboard/editor/VersionHistoryDialog.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/block-configs/BookmarksConfig.vue.d.ts +77 -0
- package/dist/components/dashboard/editor/block-configs/BookmarksConfig.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/block-configs/ChartConfig.vue.d.ts +95 -0
- package/dist/components/dashboard/editor/block-configs/ChartConfig.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/block-configs/ExternalAppsConfig.vue.d.ts +300 -0
- package/dist/components/dashboard/editor/block-configs/ExternalAppsConfig.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/block-configs/FavoritesConfig.vue.d.ts +99 -0
- package/dist/components/dashboard/editor/block-configs/FavoritesConfig.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/block-configs/MarkdownConfig.vue.d.ts +98 -0
- package/dist/components/dashboard/editor/block-configs/MarkdownConfig.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/block-configs/MyActivityConfig.vue.d.ts +80 -0
- package/dist/components/dashboard/editor/block-configs/MyActivityConfig.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/block-configs/NoConfig.vue.d.ts +11 -0
- package/dist/components/dashboard/editor/block-configs/NoConfig.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/block-configs/PdfImageConfig.vue.d.ts +78 -0
- package/dist/components/dashboard/editor/block-configs/PdfImageConfig.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/blockDraft.d.ts.map +1 -0
- package/dist/components/dashboard/editor/grid/BasketPanel.vue.d.ts +80 -0
- package/dist/components/dashboard/editor/grid/BasketPanel.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/grid/BlockTypeSelector.vue.d.ts +56 -0
- package/dist/components/dashboard/editor/grid/BlockTypeSelector.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/grid/GridBlock.vue.d.ts +112 -0
- package/dist/components/dashboard/editor/grid/GridBlock.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/grid/GridEditor.vue.d.ts +164 -0
- package/dist/components/dashboard/editor/grid/GridEditor.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/grid/MinimapPanel.vue.d.ts +72 -0
- package/dist/components/dashboard/editor/grid/MinimapPanel.vue.d.ts.map +1 -0
- package/dist/components/dashboard/editor/validators.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/ActivityHistory.vue.d.ts +86 -0
- package/dist/components/dashboard/widgets/ActivityHistory.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/BookmarksComponent.vue.d.ts +42 -0
- package/dist/components/dashboard/widgets/BookmarksComponent.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/ChartWrapper.vue.d.ts +53 -0
- package/dist/components/dashboard/widgets/ChartWrapper.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/DisplayFileInDashboardComponent.vue.d.ts +351 -0
- package/dist/components/dashboard/widgets/DisplayFileInDashboardComponent.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/ExternalApps.vue.d.ts +47 -0
- package/dist/components/dashboard/widgets/ExternalApps.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/FavoriteFileList.vue.d.ts +68 -0
- package/dist/components/dashboard/widgets/FavoriteFileList.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/FavoriteFolderList.vue.d.ts +65 -0
- package/dist/components/dashboard/widgets/FavoriteFolderList.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/FavoriteList.vue.d.ts +182 -0
- package/dist/components/dashboard/widgets/FavoriteList.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/FavoriteSiteList.vue.d.ts +66 -0
- package/dist/components/dashboard/widgets/FavoriteSiteList.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/MarkdownComponent.vue.d.ts +35 -0
- package/dist/components/dashboard/widgets/MarkdownComponent.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/OnlyImageDisplayed.vue.d.ts +36 -0
- package/dist/components/dashboard/widgets/OnlyImageDisplayed.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/SearchInput.vue.d.ts +42 -0
- package/dist/components/dashboard/widgets/SearchInput.vue.d.ts.map +1 -0
- package/dist/components/dashboard/widgets/UnknownBlockType.vue.d.ts +23 -0
- package/dist/components/dashboard/widgets/UnknownBlockType.vue.d.ts.map +1 -0
- package/dist/components/layouts/AppFooter.vue.d.ts +138 -0
- package/dist/components/layouts/AppFooter.vue.d.ts.map +1 -0
- package/dist/components/layouts/AppLayout.vue.d.ts +927 -0
- package/dist/components/layouts/AppLayout.vue.d.ts.map +1 -0
- package/dist/components/layouts/AppMobileLayout.vue.d.ts +271 -0
- package/dist/components/layouts/AppMobileLayout.vue.d.ts.map +1 -0
- package/dist/components/layouts/AppSidebar.vue.d.ts +223 -0
- package/dist/components/layouts/AppSidebar.vue.d.ts.map +1 -0
- package/dist/components/layouts/AppSubmenu.vue.d.ts +119 -0
- package/dist/components/layouts/AppSubmenu.vue.d.ts.map +1 -0
- package/dist/components/layouts/AppSwitcher.vue.d.ts +87 -0
- package/dist/components/layouts/AppSwitcher.vue.d.ts.map +1 -0
- package/dist/components/layouts/AppTopbar.vue.d.ts +329 -0
- package/dist/components/layouts/AppTopbar.vue.d.ts.map +1 -0
- package/dist/components/layouts/SidebarProfileSection.vue.d.ts +108 -0
- package/dist/components/layouts/SidebarProfileSection.vue.d.ts.map +1 -0
- package/dist/components/menu/ActionMenu.vue.d.ts +35 -0
- package/dist/components/menu/ActionMenu.vue.d.ts.map +1 -0
- package/dist/components/navigation/CardMetadataLines.vue.d.ts +41 -0
- package/dist/components/navigation/CardMetadataLines.vue.d.ts.map +1 -0
- package/dist/components/navigation/ColumnTogglePanel.vue.d.ts +121 -0
- package/dist/components/navigation/ColumnTogglePanel.vue.d.ts.map +1 -0
- package/dist/components/navigation/ContentCompactTableView.vue.d.ts +509 -0
- package/dist/components/navigation/ContentCompactTableView.vue.d.ts.map +1 -0
- package/dist/components/navigation/ContentFiltersHeader.vue.d.ts +100 -0
- package/dist/components/navigation/ContentFiltersHeader.vue.d.ts.map +1 -0
- package/dist/components/navigation/ContentGridView.vue.d.ts +291 -0
- package/dist/components/navigation/ContentGridView.vue.d.ts.map +1 -0
- package/dist/components/navigation/ContentListView.vue.d.ts +242 -0
- package/dist/components/navigation/ContentListView.vue.d.ts.map +1 -0
- package/dist/components/navigation/ContentTableView.vue.d.ts +541 -0
- package/dist/components/navigation/ContentTableView.vue.d.ts.map +1 -0
- package/dist/components/navigation/ContentToolbar.vue.d.ts +51 -0
- package/dist/components/navigation/ContentToolbar.vue.d.ts.map +1 -0
- package/dist/components/navigation/DynamicContentView.vue.d.ts +2026 -0
- package/dist/components/navigation/DynamicContentView.vue.d.ts.map +1 -0
- package/dist/components/navigation/GhostNodeRow.vue.d.ts +68 -0
- package/dist/components/navigation/GhostNodeRow.vue.d.ts.map +1 -0
- package/dist/components/navigation/LayoutSelector.vue.d.ts +35 -0
- package/dist/components/navigation/LayoutSelector.vue.d.ts.map +1 -0
- package/dist/components/navigation/PreviewPanel.vue.d.ts +842 -0
- package/dist/components/navigation/PreviewPanel.vue.d.ts.map +1 -0
- package/dist/components/navigation/SelectionBar.vue.d.ts +149 -0
- package/dist/components/navigation/SelectionBar.vue.d.ts.map +1 -0
- package/dist/components/pagination/PaginatorComponent.vue.d.ts +52 -0
- package/dist/components/pagination/PaginatorComponent.vue.d.ts.map +1 -0
- package/dist/components/pdfTools/PdfToolsComponent.vue.d.ts +259 -0
- package/dist/components/pdfTools/PdfToolsComponent.vue.d.ts.map +1 -0
- package/dist/components/pdfTools/PdfToolsLoading.vue.d.ts +14 -0
- package/dist/components/pdfTools/PdfToolsLoading.vue.d.ts.map +1 -0
- package/dist/components/pdfTools/SaveAsPopup.vue.d.ts +62 -0
- package/dist/components/pdfTools/SaveAsPopup.vue.d.ts.map +1 -0
- package/dist/components/popup/CopyOrMovePopup.vue.d.ts +176 -0
- package/dist/components/popup/CopyOrMovePopup.vue.d.ts.map +1 -0
- package/dist/components/popup/CreateWorkflowPopup.vue.d.ts +104 -0
- package/dist/components/popup/CreateWorkflowPopup.vue.d.ts.map +1 -0
- package/dist/components/popup/ImportNewVersionPopup.vue.d.ts +43 -0
- package/dist/components/popup/ImportNewVersionPopup.vue.d.ts.map +1 -0
- package/dist/components/popup/ImportPopupWithWorker.vue.d.ts +186 -0
- package/dist/components/popup/ImportPopupWithWorker.vue.d.ts.map +1 -0
- package/dist/components/popup/MemberListPopup.vue.d.ts +196 -0
- package/dist/components/popup/MemberListPopup.vue.d.ts.map +1 -0
- package/dist/components/popup/SendMailPopup.vue.d.ts +105 -0
- package/dist/components/popup/SendMailPopup.vue.d.ts.map +1 -0
- package/dist/components/popup/ShareLinkPopup.vue.d.ts +69 -0
- package/dist/components/popup/ShareLinkPopup.vue.d.ts.map +1 -0
- package/dist/components/search/AddCriterionPopup.vue.d.ts +135 -0
- package/dist/components/search/AddCriterionPopup.vue.d.ts.map +1 -0
- package/dist/components/search/AdvancedSearchPanel.vue.d.ts +756 -0
- package/dist/components/search/AdvancedSearchPanel.vue.d.ts.map +1 -0
- package/dist/components/search/AdvancedViewPanel.vue.d.ts +886 -0
- package/dist/components/search/AdvancedViewPanel.vue.d.ts.map +1 -0
- package/dist/components/search/ExactSearch.vue.d.ts +49 -0
- package/dist/components/search/ExactSearch.vue.d.ts.map +1 -0
- package/dist/components/search/FavoriteViewMenu.vue.d.ts +45 -0
- package/dist/components/search/FavoriteViewMenu.vue.d.ts.map +1 -0
- package/dist/components/search/SaveViewPopup.vue.d.ts +127 -0
- package/dist/components/search/SaveViewPopup.vue.d.ts.map +1 -0
- package/dist/components/search/UserViewsFavoritesPanel.vue.d.ts +62 -0
- package/dist/components/search/UserViewsFavoritesPanel.vue.d.ts.map +1 -0
- package/dist/components/search/ViewResultsPanel.vue.d.ts +327 -0
- package/dist/components/search/ViewResultsPanel.vue.d.ts.map +1 -0
- package/dist/components/toast/CustomToastContent.vue.d.ts +76 -0
- package/dist/components/toast/CustomToastContent.vue.d.ts.map +1 -0
- package/dist/components/users/MemberList.vue.d.ts +177 -0
- package/dist/components/users/MemberList.vue.d.ts.map +1 -0
- package/dist/components/viewer/ArchiveViewer.vue.d.ts +117 -0
- package/dist/components/viewer/ArchiveViewer.vue.d.ts.map +1 -0
- package/dist/components/viewer/ArchiveViewerSkeleton.vue.d.ts +17 -0
- package/dist/components/viewer/ArchiveViewerSkeleton.vue.d.ts.map +1 -0
- package/dist/components/viewer/AudioPlayer.vue.d.ts +58 -0
- package/dist/components/viewer/AudioPlayer.vue.d.ts.map +1 -0
- package/dist/components/viewer/CodeMirrorViewer.vue.d.ts +42 -0
- package/dist/components/viewer/CodeMirrorViewer.vue.d.ts.map +1 -0
- package/dist/components/viewer/ImageViewer.vue.d.ts +164 -0
- package/dist/components/viewer/ImageViewer.vue.d.ts.map +1 -0
- package/dist/components/viewer/PDFComponent.vue.d.ts +584 -0
- package/dist/components/viewer/PDFComponent.vue.d.ts.map +1 -0
- package/dist/components/viewer/PdfSignaturePanel.vue.d.ts +40 -0
- package/dist/components/viewer/PdfSignaturePanel.vue.d.ts.map +1 -0
- package/dist/components/viewer/PdfViewerSkeleton.vue.d.ts +17 -0
- package/dist/components/viewer/PdfViewerSkeleton.vue.d.ts.map +1 -0
- package/dist/components/viewer/VideoPlayer.vue.d.ts +116 -0
- package/dist/components/viewer/VideoPlayer.vue.d.ts.map +1 -0
- package/dist/components/viewer/ViewerSkeleton.vue.d.ts +37 -0
- package/dist/components/viewer/ViewerSkeleton.vue.d.ts.map +1 -0
- package/dist/components/viewer/lazyPdfComponents.d.ts +528 -0
- package/dist/components/viewer/lazyPdfComponents.d.ts.map +1 -0
- package/dist/components/views/PredefinedViewsPanel.vue.d.ts +132 -0
- package/dist/components/views/PredefinedViewsPanel.vue.d.ts.map +1 -0
- package/dist/components/views/ViewList.vue.d.ts +78 -0
- package/dist/components/views/ViewList.vue.d.ts.map +1 -0
- package/dist/components/workspace/WorkspaceCard.vue.d.ts +466 -0
- package/dist/components/workspace/WorkspaceCard.vue.d.ts.map +1 -0
- package/dist/components/workspace/WorkspaceList.vue.d.ts +555 -0
- package/dist/components/workspace/WorkspaceList.vue.d.ts.map +1 -0
- package/dist/composables/collabProtocol.d.ts.map +1 -0
- package/dist/composables/editorAppearance.d.ts +65 -0
- package/dist/composables/editorAppearance.d.ts.map +1 -0
- package/dist/composables/editorThemes/buildEditorTheme.d.ts +56 -0
- package/dist/composables/editorThemes/buildEditorTheme.d.ts.map +1 -0
- package/dist/composables/editorThemes/dracula.d.ts +5 -0
- package/dist/composables/editorThemes/dracula.d.ts.map +1 -0
- package/dist/composables/editorThemes/github.d.ts +6 -0
- package/dist/composables/editorThemes/github.d.ts.map +1 -0
- package/dist/composables/editorThemes/nord.d.ts +5 -0
- package/dist/composables/editorThemes/nord.d.ts.map +1 -0
- package/dist/composables/editorThemes/one.d.ts +7 -0
- package/dist/composables/editorThemes/one.d.ts.map +1 -0
- package/dist/composables/editorThemes/pristy.d.ts +6 -0
- package/dist/composables/editorThemes/pristy.d.ts.map +1 -0
- package/dist/composables/editorThemes/solarized.d.ts +6 -0
- package/dist/composables/editorThemes/solarized.d.ts.map +1 -0
- package/dist/composables/useAuth.d.ts.map +1 -0
- package/dist/composables/useChatWebSocket.d.ts.map +1 -0
- package/dist/composables/useClassificationPlan.d.ts.map +1 -0
- package/dist/composables/useCodeMirror.d.ts +57 -0
- package/dist/composables/useCodeMirror.d.ts.map +1 -0
- package/dist/composables/useCollabEditor.d.ts.map +1 -0
- package/dist/composables/useCollabWebSocket.d.ts.map +1 -0
- package/dist/composables/useColumnFilter.d.ts.map +1 -0
- package/dist/composables/useDelayedVisibility.d.ts +29 -0
- package/dist/composables/useDelayedVisibility.d.ts.map +1 -0
- package/dist/composables/useDragDrop.d.ts.map +1 -0
- package/dist/composables/useGhostNodes.d.ts.map +1 -0
- package/dist/composables/useGridValidation.d.ts.map +1 -0
- package/dist/composables/useLayout.d.ts.map +1 -0
- package/dist/composables/useMarkdownPreview.d.ts +77 -0
- package/dist/composables/useMarkdownPreview.d.ts.map +1 -0
- package/dist/composables/useResize.d.ts.map +1 -0
- package/dist/composables/useTheme.d.ts.map +1 -0
- package/dist/directives/assert.d.ts.map +1 -0
- package/dist/dracula-DZ4d0UAj.js +32 -0
- package/dist/dracula-DZ4d0UAj.js.map +1 -0
- package/dist/github-WL9tKr_4.js +57 -0
- package/dist/github-WL9tKr_4.js.map +1 -0
- package/dist/httpClientPatch.d.ts.map +1 -0
- package/dist/i18n/index.d.ts +4423 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/locales/index.d.ts.map +1 -0
- package/dist/index-DJEkd3cy.js +47201 -0
- package/dist/index-DJEkd3cy.js.map +1 -0
- package/dist/index.d.ts +195 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/nord-FqRawSxu.js +32 -0
- package/dist/nord-FqRawSxu.js.map +1 -0
- package/dist/one-CTKKLi-H.js +34 -0
- package/dist/one-CTKKLi-H.js.map +1 -0
- package/dist/pages/ErrorPage.vue.d.ts +29 -0
- package/dist/pages/ErrorPage.vue.d.ts.map +1 -0
- package/dist/pages/LoginPage.vue.d.ts +71 -0
- package/dist/pages/LoginPage.vue.d.ts.map +1 -0
- package/dist/pages/NotFoundPages.vue.d.ts +58 -0
- package/dist/pages/NotFoundPages.vue.d.ts.map +1 -0
- package/dist/plugins/KeycloakPlugin.d.ts.map +1 -0
- package/dist/pristy-libvue.css +1 -1
- package/dist/pristy-libvue.es.js +260 -217
- package/dist/pristy-libvue.umd.js +147 -25
- package/dist/pristy-libvue.umd.js.map +1 -1
- package/dist/services/AftsQueryBuilder.d.ts.map +1 -0
- package/dist/services/AiContextService.d.ts +101 -0
- package/dist/services/AiContextService.d.ts.map +1 -0
- package/dist/services/AiImportService.d.ts +208 -0
- package/dist/services/AiImportService.d.ts.map +1 -0
- package/dist/services/AiLearningService.d.ts +79 -0
- package/dist/services/AiLearningService.d.ts.map +1 -0
- package/dist/services/AiMetadataService.d.ts +86 -0
- package/dist/services/AiMetadataService.d.ts.map +1 -0
- package/dist/services/AlfrescoFileService.d.ts.map +1 -0
- package/dist/services/AlfrescoModelService.d.ts.map +1 -0
- package/dist/services/AlfrescoNodeService.d.ts.map +1 -0
- package/dist/services/AlfrescoPermissionService.d.ts.map +1 -0
- package/dist/services/AlfrescoProxyService.d.ts.map +1 -0
- package/dist/services/AppSwitcherService.d.ts.map +1 -0
- package/dist/services/ArchiveService.d.ts +109 -0
- package/dist/services/ArchiveService.d.ts.map +1 -0
- package/dist/services/CapabilitiesService.d.ts.map +1 -0
- package/dist/services/CardMetadataService.d.ts +40 -0
- package/dist/services/CardMetadataService.d.ts.map +1 -0
- package/dist/services/ChatBackendService.d.ts.map +1 -0
- package/dist/services/ClassificationFileService.d.ts.map +1 -0
- package/dist/services/ClassificationFilingService.d.ts +43 -0
- package/dist/services/ClassificationFilingService.d.ts.map +1 -0
- package/dist/services/ClassificationService.d.ts.map +1 -0
- package/dist/services/CollabBackupService.d.ts.map +1 -0
- package/dist/services/CollabService.d.ts.map +1 -0
- package/dist/services/CollaboraAccessService.d.ts.map +1 -0
- package/dist/services/ColumnPreferenceService.d.ts +29 -0
- package/dist/services/ColumnPreferenceService.d.ts.map +1 -0
- package/dist/services/ConfigHealthService.d.ts.map +1 -0
- package/dist/services/ConfigService.d.ts.map +1 -0
- package/dist/services/DashboardService.d.ts +111 -0
- package/dist/services/DashboardService.d.ts.map +1 -0
- package/dist/services/DiffusionService.d.ts.map +1 -0
- package/dist/services/EditorAppearanceService.d.ts +75 -0
- package/dist/services/EditorAppearanceService.d.ts.map +1 -0
- package/dist/services/ErrorService.d.ts.map +1 -0
- package/dist/services/FavoriteService.d.ts.map +1 -0
- package/dist/services/FilingPlanService.d.ts.map +1 -0
- package/dist/services/FormatService.d.ts.map +1 -0
- package/dist/services/GhostMatcher.d.ts.map +1 -0
- package/dist/services/IconeService.d.ts.map +1 -0
- package/dist/services/IndexAwaitService.d.ts +61 -0
- package/dist/services/IndexAwaitService.d.ts.map +1 -0
- package/dist/services/KeyboardShortcutsService.d.ts.map +1 -0
- package/dist/services/LibVueActionService.d.ts.map +1 -0
- package/dist/services/MenuService.d.ts.map +1 -0
- package/dist/services/NodeDragService.d.ts.map +1 -0
- package/dist/services/NodeToMenuItemService.d.ts.map +1 -0
- package/dist/services/PdfCommentService.d.ts +67 -0
- package/dist/services/PdfCommentService.d.ts.map +1 -0
- package/dist/services/PdfConfigService.d.ts.map +1 -0
- package/dist/services/PdfDocumentService.d.ts +81 -0
- package/dist/services/PdfDocumentService.d.ts.map +1 -0
- package/dist/services/PdfFormService.d.ts.map +1 -0
- package/dist/services/PdfInfoWriter.d.ts +19 -0
- package/dist/services/PdfInfoWriter.d.ts.map +1 -0
- package/dist/services/PdfInsertService.d.ts.map +1 -0
- package/dist/services/PdfLinkService.d.ts.map +1 -0
- package/dist/services/PdfRedactionService.d.ts.map +1 -0
- package/dist/services/PdfSearchService.d.ts +69 -0
- package/dist/services/PdfSearchService.d.ts.map +1 -0
- package/dist/services/PdfSignatureService.d.ts.map +1 -0
- package/dist/services/PdfTextService.d.ts.map +1 -0
- package/dist/services/PeopleService.d.ts.map +1 -0
- package/dist/services/PlanSuggestService.d.ts.map +1 -0
- package/dist/services/PlanTreePdfService.d.ts.map +1 -0
- package/dist/services/PreviewService.d.ts.map +1 -0
- package/dist/services/RocketChatAuthService.d.ts.map +1 -0
- package/dist/services/RocketChatService.d.ts.map +1 -0
- package/dist/services/TranslationService.d.ts.map +1 -0
- package/dist/services/UserViewService.d.ts.map +1 -0
- package/dist/services/ViewConfigService.d.ts.map +1 -0
- package/dist/services/WorkflowService.d.ts.map +1 -0
- package/dist/services/WorkspaceConfigService.d.ts +30 -0
- package/dist/services/WorkspaceConfigService.d.ts.map +1 -0
- package/dist/services/WorkspaceService.d.ts.map +1 -0
- package/dist/services/ZipShareService.d.ts +105 -0
- package/dist/services/ZipShareService.d.ts.map +1 -0
- package/dist/services/aliasMap.d.ts.map +1 -0
- package/dist/services/auth/KeycloakAuthProvider.d.ts.map +1 -0
- package/dist/services/auth/OidcAuthProvider.d.ts.map +1 -0
- package/dist/services/auth/__tests__/FakeAuthProvider.d.ts.map +1 -0
- package/dist/services/auth/authProvider.d.ts.map +1 -0
- package/dist/services/auth/buildOidcSettings.d.ts.map +1 -0
- package/dist/services/criteriaLogic.d.ts.map +1 -0
- package/dist/services/userSearchQuery.d.ts.map +1 -0
- package/dist/solarized-B1Axyuuz.js +47 -0
- package/dist/solarized-B1Axyuuz.js.map +1 -0
- package/dist/stores/aiImport.d.ts +43 -0
- package/dist/stores/aiImport.d.ts.map +1 -0
- package/dist/stores/chat.d.ts.map +1 -0
- package/dist/stores/collab.d.ts.map +1 -0
- package/dist/stores/collabora.d.ts.map +1 -0
- package/dist/stores/config.d.ts +344 -0
- package/dist/stores/config.d.ts.map +1 -0
- package/dist/stores/editorAppearance.d.ts +32 -0
- package/dist/stores/editorAppearance.d.ts.map +1 -0
- package/dist/stores/favorites.d.ts.map +1 -0
- package/dist/stores/filingPlan.d.ts.map +1 -0
- package/dist/stores/indexAwait.d.ts.map +1 -0
- package/dist/stores/markdownDocument.d.ts +30 -0
- package/dist/stores/markdownDocument.d.ts.map +1 -0
- package/dist/stores/menu.d.ts.map +1 -0
- package/dist/stores/navigation.d.ts.map +1 -0
- package/dist/stores/paginator.d.ts.map +1 -0
- package/dist/stores/pdfDocument.d.ts +89 -0
- package/dist/stores/pdfDocument.d.ts.map +1 -0
- package/dist/stores/screen.d.ts.map +1 -0
- package/dist/stores/search.d.ts.map +1 -0
- package/dist/stores/selection.d.ts.map +1 -0
- package/dist/stores/taskNotification.d.ts.map +1 -0
- package/dist/stores/upload.d.ts.map +1 -0
- package/dist/stores/user.d.ts.map +1 -0
- package/dist/stores/userPreferences.d.ts.map +1 -0
- package/dist/stores/userView.d.ts.map +1 -0
- package/dist/stores/zipShare.d.ts +54 -0
- package/dist/stores/zipShare.d.ts.map +1 -0
- package/dist/typedef.d.ts.map +1 -0
- package/dist/utils/classificationPlanUtils.d.ts.map +1 -0
- package/dist/utils/indexAwaitReducer.d.ts.map +1 -0
- package/dist/utils/overflowUtils.d.ts.map +1 -0
- package/dist/utils/planTree.d.ts.map +1 -0
- package/dist/utils/treeA11y.d.ts.map +1 -0
- package/dist/utils/workspaceAppearance.d.ts.map +1 -0
- package/dist/workers/upload.worker.d.ts.map +1 -0
- package/package.json +15 -6
- package/dist/ActivityHistory-CSXt9uFw.js +0 -235
- package/dist/ActivityHistory-CSXt9uFw.js.map +0 -1
- package/dist/BookmarksComponent-DqfEIox4.js +0 -44
- package/dist/BookmarksComponent-DqfEIox4.js.map +0 -1
- package/dist/ChartWrapper-B7VmrsEX.js +0 -59
- package/dist/ChartWrapper-B7VmrsEX.js.map +0 -1
- package/dist/DisplayFileInDashboardComponent-BAdDKnJN.js +0 -105
- package/dist/DisplayFileInDashboardComponent-BAdDKnJN.js.map +0 -1
- package/dist/ExternalApps-CQZwIifu.js +0 -90
- package/dist/ExternalApps-CQZwIifu.js.map +0 -1
- package/dist/FavoriteList-CTY_2bWP.js +0 -380
- package/dist/FavoriteList-CTY_2bWP.js.map +0 -1
- package/dist/MarkdownComponent-DWluCXX2.js +0 -56
- package/dist/MarkdownComponent-DWluCXX2.js.map +0 -1
- package/dist/PDFComponent-DhmdtX95.js +0 -987
- package/dist/PDFComponent-DhmdtX95.js.map +0 -1
- package/dist/PdfConfigService-huVsU23i.js +0 -17
- package/dist/PdfConfigService-huVsU23i.js.map +0 -1
- package/dist/PdfToolsComponent-CXuz7xuL.js +0 -1975
- package/dist/PdfToolsComponent-CXuz7xuL.js.map +0 -1
- package/dist/PlanTreePdfService-Ck4hUN2b.js +0 -76
- package/dist/PlanTreePdfService-Ck4hUN2b.js.map +0 -1
- package/dist/SearchInput-57Z8q77p.js +0 -58
- package/dist/SearchInput-57Z8q77p.js.map +0 -1
- package/dist/UnknownBlockType-BtnOApwP.js +0 -22
- package/dist/UnknownBlockType-BtnOApwP.js.map +0 -1
- package/dist/index-Coh4LtRJ.js +0 -44006
- package/dist/index-Coh4LtRJ.js.map +0 -1
- package/dist/src/AlfrescoApi.d.ts.map +0 -1
- package/dist/src/components/CodeMirrorBase.vue.d.ts +0 -34
- package/dist/src/components/CodeMirrorBase.vue.d.ts.map +0 -1
- package/dist/src/components/CodeMirrorEditor.vue.d.ts +0 -21
- package/dist/src/components/CodeMirrorEditor.vue.d.ts.map +0 -1
- package/dist/src/components/DiffViewerDialog.vue.d.ts +0 -18
- package/dist/src/components/DiffViewerDialog.vue.d.ts.map +0 -1
- package/dist/src/components/ErrorComponent.vue.d.ts +0 -34
- package/dist/src/components/ErrorComponent.vue.d.ts.map +0 -1
- package/dist/src/components/FolderUpload.vue.d.ts +0 -69
- package/dist/src/components/FolderUpload.vue.d.ts.map +0 -1
- package/dist/src/components/HelpKeyMessage.vue.d.ts +0 -24
- package/dist/src/components/HelpKeyMessage.vue.d.ts.map +0 -1
- package/dist/src/components/IconPickerDialog.vue.d.ts +0 -63
- package/dist/src/components/IconPickerDialog.vue.d.ts.map +0 -1
- package/dist/src/components/IndexAwaitOverlay.vue.d.ts +0 -12
- package/dist/src/components/IndexAwaitOverlay.vue.d.ts.map +0 -1
- package/dist/src/components/PristyIcon.vue.d.ts +0 -18
- package/dist/src/components/PristyIcon.vue.d.ts.map +0 -1
- package/dist/src/components/SelectionStatus.vue.d.ts +0 -38
- package/dist/src/components/SelectionStatus.vue.d.ts.map +0 -1
- package/dist/src/components/TreeExplorer.vue.d.ts +0 -81
- package/dist/src/components/TreeExplorer.vue.d.ts.map +0 -1
- package/dist/src/components/UploadStatus.vue.d.ts +0 -73
- package/dist/src/components/UploadStatus.vue.d.ts.map +0 -1
- package/dist/src/components/UploadTargetInfo.vue.d.ts +0 -7
- package/dist/src/components/UploadTargetInfo.vue.d.ts.map +0 -1
- package/dist/src/components/auth/OidcCallback.vue.d.ts +0 -4
- package/dist/src/components/auth/OidcCallback.vue.d.ts.map +0 -1
- package/dist/src/components/breadcrumb/BreadCrumbAlfresco.vue.d.ts +0 -84
- package/dist/src/components/breadcrumb/BreadCrumbAlfresco.vue.d.ts.map +0 -1
- package/dist/src/components/breadcrumb/ComplexBreadcrumb.vue.d.ts +0 -234
- package/dist/src/components/breadcrumb/ComplexBreadcrumb.vue.d.ts.map +0 -1
- package/dist/src/components/breadcrumb/EllipsisBreadcrumb.vue.d.ts +0 -122
- package/dist/src/components/breadcrumb/EllipsisBreadcrumb.vue.d.ts.map +0 -1
- package/dist/src/components/chat/ChatInput.vue.d.ts +0 -50
- package/dist/src/components/chat/ChatInput.vue.d.ts.map +0 -1
- package/dist/src/components/chat/ChatMessage.vue.d.ts +0 -41
- package/dist/src/components/chat/ChatMessage.vue.d.ts.map +0 -1
- package/dist/src/components/chat/ChatPanel.vue.d.ts +0 -434
- package/dist/src/components/chat/ChatPanel.vue.d.ts.map +0 -1
- package/dist/src/components/chat/ChatRoomList.vue.d.ts +0 -52
- package/dist/src/components/chat/ChatRoomList.vue.d.ts.map +0 -1
- package/dist/src/components/classification/AdminClassificationLauncher.vue.d.ts +0 -6
- package/dist/src/components/classification/AdminClassificationLauncher.vue.d.ts.map +0 -1
- package/dist/src/components/classification/AdminClassificationPage.vue.d.ts +0 -783
- package/dist/src/components/classification/AdminClassificationPage.vue.d.ts.map +0 -1
- package/dist/src/components/classification/AiSuggestionsPanel.vue.d.ts +0 -12
- package/dist/src/components/classification/AiSuggestionsPanel.vue.d.ts.map +0 -1
- package/dist/src/components/classification/ClassificationPlanCreate.vue.d.ts +0 -6
- package/dist/src/components/classification/ClassificationPlanCreate.vue.d.ts.map +0 -1
- package/dist/src/components/classification/ClassificationPlanList.vue.d.ts +0 -20
- package/dist/src/components/classification/ClassificationPlanList.vue.d.ts.map +0 -1
- package/dist/src/components/classification/DictionaryForm.vue.d.ts +0 -49
- package/dist/src/components/classification/DictionaryForm.vue.d.ts.map +0 -1
- package/dist/src/components/classification/EmplacementForm.vue.d.ts +0 -76
- package/dist/src/components/classification/EmplacementForm.vue.d.ts.map +0 -1
- package/dist/src/components/classification/FieldForm.vue.d.ts +0 -122
- package/dist/src/components/classification/FieldForm.vue.d.ts.map +0 -1
- package/dist/src/components/classification/LexiconForm.vue.d.ts +0 -50
- package/dist/src/components/classification/LexiconForm.vue.d.ts.map +0 -1
- package/dist/src/components/classification/MetadataFormFields.vue.d.ts +0 -188
- package/dist/src/components/classification/MetadataFormFields.vue.d.ts.map +0 -1
- package/dist/src/components/classification/NatureForm.vue.d.ts +0 -125
- package/dist/src/components/classification/NatureForm.vue.d.ts.map +0 -1
- package/dist/src/components/classification/NatureSelector.vue.d.ts +0 -139
- package/dist/src/components/classification/NatureSelector.vue.d.ts.map +0 -1
- package/dist/src/components/classification/PlanInformationPanel.vue.d.ts +0 -58
- package/dist/src/components/classification/PlanInformationPanel.vue.d.ts.map +0 -1
- package/dist/src/components/classification/PlanSuggestInput.vue.d.ts +0 -22
- package/dist/src/components/classification/PlanSuggestInput.vue.d.ts.map +0 -1
- package/dist/src/components/classification/PlanTreePanel.vue.d.ts +0 -47
- package/dist/src/components/classification/PlanTreePanel.vue.d.ts.map +0 -1
- package/dist/src/components/classification/UploadPlanPopup.vue.d.ts +0 -36
- package/dist/src/components/classification/UploadPlanPopup.vue.d.ts.map +0 -1
- package/dist/src/components/classification/ViewSelectorPopup.vue.d.ts +0 -85
- package/dist/src/components/classification/ViewSelectorPopup.vue.d.ts.map +0 -1
- package/dist/src/components/config/AddPairInConfigDialog.vue.d.ts +0 -50
- package/dist/src/components/config/AddPairInConfigDialog.vue.d.ts.map +0 -1
- package/dist/src/components/config/ArrayEditor.vue.d.ts +0 -12
- package/dist/src/components/config/ArrayEditor.vue.d.ts.map +0 -1
- package/dist/src/components/config/ConfigDatatable.vue.d.ts +0 -14
- package/dist/src/components/config/ConfigDatatable.vue.d.ts.map +0 -1
- package/dist/src/components/config/ConfigHealthBanner.vue.d.ts +0 -16
- package/dist/src/components/config/ConfigHealthBanner.vue.d.ts.map +0 -1
- package/dist/src/components/config/ConfigItemEditor.vue.d.ts +0 -12
- package/dist/src/components/config/ConfigItemEditor.vue.d.ts.map +0 -1
- package/dist/src/components/config/ConfigRawEditor.vue.d.ts +0 -80
- package/dist/src/components/config/ConfigRawEditor.vue.d.ts.map +0 -1
- package/dist/src/components/config/ConfigSplitView.vue.d.ts +0 -14
- package/dist/src/components/config/ConfigSplitView.vue.d.ts.map +0 -1
- package/dist/src/components/config/ConfigUpload.vue.d.ts +0 -24
- package/dist/src/components/config/ConfigUpload.vue.d.ts.map +0 -1
- package/dist/src/components/config/ListVersionConfig.vue.d.ts +0 -75
- package/dist/src/components/config/ListVersionConfig.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/DashboardAdminPage.vue.d.ts +0 -2152
- package/dist/src/components/dashboard/DashboardAdminPage.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/DashboardComponent.vue.d.ts +0 -771
- package/dist/src/components/dashboard/DashboardComponent.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/BlockConfigEditor.vue.d.ts +0 -946
- package/dist/src/components/dashboard/editor/BlockConfigEditor.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/DashboardEditor.vue.d.ts +0 -2038
- package/dist/src/components/dashboard/editor/DashboardEditor.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/FieldLabel.vue.d.ts +0 -42
- package/dist/src/components/dashboard/editor/FieldLabel.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/JsonEditorDialog.vue.d.ts +0 -80
- package/dist/src/components/dashboard/editor/JsonEditorDialog.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/MarkdownEditorDialog.vue.d.ts +0 -77
- package/dist/src/components/dashboard/editor/MarkdownEditorDialog.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/VersionHistoryDialog.vue.d.ts +0 -53
- package/dist/src/components/dashboard/editor/VersionHistoryDialog.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/block-configs/BookmarksConfig.vue.d.ts +0 -61
- package/dist/src/components/dashboard/editor/block-configs/BookmarksConfig.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/block-configs/ChartConfig.vue.d.ts +0 -76
- package/dist/src/components/dashboard/editor/block-configs/ChartConfig.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/block-configs/ExternalAppsConfig.vue.d.ts +0 -221
- package/dist/src/components/dashboard/editor/block-configs/ExternalAppsConfig.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/block-configs/FavoritesConfig.vue.d.ts +0 -78
- package/dist/src/components/dashboard/editor/block-configs/FavoritesConfig.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/block-configs/MarkdownConfig.vue.d.ts +0 -72
- package/dist/src/components/dashboard/editor/block-configs/MarkdownConfig.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/block-configs/MyActivityConfig.vue.d.ts +0 -66
- package/dist/src/components/dashboard/editor/block-configs/MyActivityConfig.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/block-configs/NoConfig.vue.d.ts +0 -4
- package/dist/src/components/dashboard/editor/block-configs/NoConfig.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/block-configs/PdfImageConfig.vue.d.ts +0 -60
- package/dist/src/components/dashboard/editor/block-configs/PdfImageConfig.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/blockDraft.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/grid/BasketPanel.vue.d.ts +0 -38
- package/dist/src/components/dashboard/editor/grid/BasketPanel.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/grid/BlockTypeSelector.vue.d.ts +0 -36
- package/dist/src/components/dashboard/editor/grid/BlockTypeSelector.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/grid/GridBlock.vue.d.ts +0 -73
- package/dist/src/components/dashboard/editor/grid/GridBlock.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/grid/GridEditor.vue.d.ts +0 -141
- package/dist/src/components/dashboard/editor/grid/GridEditor.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/grid/MinimapPanel.vue.d.ts +0 -44
- package/dist/src/components/dashboard/editor/grid/MinimapPanel.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/editor/validators.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/ActivityHistory.vue.d.ts +0 -56
- package/dist/src/components/dashboard/widgets/ActivityHistory.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/BookmarksComponent.vue.d.ts +0 -27
- package/dist/src/components/dashboard/widgets/BookmarksComponent.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/ChartWrapper.vue.d.ts +0 -41
- package/dist/src/components/dashboard/widgets/ChartWrapper.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/DisplayFileInDashboardComponent.vue.d.ts +0 -337
- package/dist/src/components/dashboard/widgets/DisplayFileInDashboardComponent.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/ExternalApps.vue.d.ts +0 -32
- package/dist/src/components/dashboard/widgets/ExternalApps.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/FavoriteFileList.vue.d.ts +0 -45
- package/dist/src/components/dashboard/widgets/FavoriteFileList.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/FavoriteFolderList.vue.d.ts +0 -44
- package/dist/src/components/dashboard/widgets/FavoriteFolderList.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/FavoriteList.vue.d.ts +0 -167
- package/dist/src/components/dashboard/widgets/FavoriteList.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/FavoriteSiteList.vue.d.ts +0 -37
- package/dist/src/components/dashboard/widgets/FavoriteSiteList.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/MarkdownComponent.vue.d.ts +0 -31
- package/dist/src/components/dashboard/widgets/MarkdownComponent.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/OnlyImageDisplayed.vue.d.ts +0 -26
- package/dist/src/components/dashboard/widgets/OnlyImageDisplayed.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/SearchInput.vue.d.ts +0 -30
- package/dist/src/components/dashboard/widgets/SearchInput.vue.d.ts.map +0 -1
- package/dist/src/components/dashboard/widgets/UnknownBlockType.vue.d.ts +0 -14
- package/dist/src/components/dashboard/widgets/UnknownBlockType.vue.d.ts.map +0 -1
- package/dist/src/components/layouts/AppFooter.vue.d.ts +0 -115
- package/dist/src/components/layouts/AppFooter.vue.d.ts.map +0 -1
- package/dist/src/components/layouts/AppLayout.vue.d.ts +0 -866
- package/dist/src/components/layouts/AppLayout.vue.d.ts.map +0 -1
- package/dist/src/components/layouts/AppMobileLayout.vue.d.ts +0 -220
- package/dist/src/components/layouts/AppMobileLayout.vue.d.ts.map +0 -1
- package/dist/src/components/layouts/AppSidebar.vue.d.ts +0 -183
- package/dist/src/components/layouts/AppSidebar.vue.d.ts.map +0 -1
- package/dist/src/components/layouts/AppSubmenu.vue.d.ts +0 -66
- package/dist/src/components/layouts/AppSubmenu.vue.d.ts.map +0 -1
- package/dist/src/components/layouts/AppSwitcher.vue.d.ts +0 -63
- package/dist/src/components/layouts/AppSwitcher.vue.d.ts.map +0 -1
- package/dist/src/components/layouts/AppTopbar.vue.d.ts +0 -285
- package/dist/src/components/layouts/AppTopbar.vue.d.ts.map +0 -1
- package/dist/src/components/layouts/SidebarProfileSection.vue.d.ts +0 -64
- package/dist/src/components/layouts/SidebarProfileSection.vue.d.ts.map +0 -1
- package/dist/src/components/menu/ActionMenu.vue.d.ts +0 -26
- package/dist/src/components/menu/ActionMenu.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/ColumnTogglePanel.vue.d.ts +0 -63
- package/dist/src/components/navigation/ColumnTogglePanel.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/ContentCompactTableView.vue.d.ts +0 -378
- package/dist/src/components/navigation/ContentCompactTableView.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/ContentFiltersHeader.vue.d.ts +0 -75
- package/dist/src/components/navigation/ContentFiltersHeader.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/ContentGridView.vue.d.ts +0 -169
- package/dist/src/components/navigation/ContentGridView.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/ContentListView.vue.d.ts +0 -156
- package/dist/src/components/navigation/ContentListView.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/ContentTableView.vue.d.ts +0 -423
- package/dist/src/components/navigation/ContentTableView.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/ContentToolbar.vue.d.ts +0 -19
- package/dist/src/components/navigation/ContentToolbar.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/DynamicContentView.vue.d.ts +0 -1783
- package/dist/src/components/navigation/DynamicContentView.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/GhostNodeRow.vue.d.ts +0 -34
- package/dist/src/components/navigation/GhostNodeRow.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/LayoutSelector.vue.d.ts +0 -16
- package/dist/src/components/navigation/LayoutSelector.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/PreviewPanel.vue.d.ts +0 -646
- package/dist/src/components/navigation/PreviewPanel.vue.d.ts.map +0 -1
- package/dist/src/components/navigation/SelectionBar.vue.d.ts +0 -90
- package/dist/src/components/navigation/SelectionBar.vue.d.ts.map +0 -1
- package/dist/src/components/pagination/PaginatorComponent.vue.d.ts +0 -43
- package/dist/src/components/pagination/PaginatorComponent.vue.d.ts.map +0 -1
- package/dist/src/components/pdfTools/PdfToolsComponent.vue.d.ts +0 -21
- package/dist/src/components/pdfTools/PdfToolsComponent.vue.d.ts.map +0 -1
- package/dist/src/components/pdfTools/PdfToolsLoading.vue.d.ts +0 -4
- package/dist/src/components/pdfTools/PdfToolsLoading.vue.d.ts.map +0 -1
- package/dist/src/components/pdfTools/SaveAsPopup.vue.d.ts +0 -14
- package/dist/src/components/pdfTools/SaveAsPopup.vue.d.ts.map +0 -1
- package/dist/src/components/popup/CopyOrMovePopup.vue.d.ts +0 -143
- package/dist/src/components/popup/CopyOrMovePopup.vue.d.ts.map +0 -1
- package/dist/src/components/popup/CreateWorkflowPopup.vue.d.ts +0 -79
- package/dist/src/components/popup/CreateWorkflowPopup.vue.d.ts.map +0 -1
- package/dist/src/components/popup/ImportNewVersionPopup.vue.d.ts +0 -28
- package/dist/src/components/popup/ImportNewVersionPopup.vue.d.ts.map +0 -1
- package/dist/src/components/popup/ImportPopupWithWorker.vue.d.ts +0 -171
- package/dist/src/components/popup/ImportPopupWithWorker.vue.d.ts.map +0 -1
- package/dist/src/components/popup/MemberListPopup.vue.d.ts +0 -183
- package/dist/src/components/popup/MemberListPopup.vue.d.ts.map +0 -1
- package/dist/src/components/popup/SendMailPopup.vue.d.ts +0 -69
- package/dist/src/components/popup/SendMailPopup.vue.d.ts.map +0 -1
- package/dist/src/components/popup/ShareLinkPopup.vue.d.ts +0 -39
- package/dist/src/components/popup/ShareLinkPopup.vue.d.ts.map +0 -1
- package/dist/src/components/search/AddCriterionPopup.vue.d.ts +0 -118
- package/dist/src/components/search/AddCriterionPopup.vue.d.ts.map +0 -1
- package/dist/src/components/search/AdvancedSearchPanel.vue.d.ts +0 -732
- package/dist/src/components/search/AdvancedSearchPanel.vue.d.ts.map +0 -1
- package/dist/src/components/search/AdvancedViewPanel.vue.d.ts +0 -863
- package/dist/src/components/search/AdvancedViewPanel.vue.d.ts.map +0 -1
- package/dist/src/components/search/ExactSearch.vue.d.ts +0 -41
- package/dist/src/components/search/ExactSearch.vue.d.ts.map +0 -1
- package/dist/src/components/search/FavoriteViewMenu.vue.d.ts +0 -36
- package/dist/src/components/search/FavoriteViewMenu.vue.d.ts.map +0 -1
- package/dist/src/components/search/SaveViewPopup.vue.d.ts +0 -109
- package/dist/src/components/search/SaveViewPopup.vue.d.ts.map +0 -1
- package/dist/src/components/search/UserViewsFavoritesPanel.vue.d.ts +0 -52
- package/dist/src/components/search/UserViewsFavoritesPanel.vue.d.ts.map +0 -1
- package/dist/src/components/search/ViewResultsPanel.vue.d.ts +0 -275
- package/dist/src/components/search/ViewResultsPanel.vue.d.ts.map +0 -1
- package/dist/src/components/toast/CustomToastContent.vue.d.ts +0 -72
- package/dist/src/components/toast/CustomToastContent.vue.d.ts.map +0 -1
- package/dist/src/components/users/MemberList.vue.d.ts +0 -142
- package/dist/src/components/users/MemberList.vue.d.ts.map +0 -1
- package/dist/src/components/viewer/ArchiveViewer.vue.d.ts +0 -14
- package/dist/src/components/viewer/ArchiveViewer.vue.d.ts.map +0 -1
- package/dist/src/components/viewer/AudioPlayer.vue.d.ts +0 -39
- package/dist/src/components/viewer/AudioPlayer.vue.d.ts.map +0 -1
- package/dist/src/components/viewer/CodeMirrorViewer.vue.d.ts +0 -13
- package/dist/src/components/viewer/CodeMirrorViewer.vue.d.ts.map +0 -1
- package/dist/src/components/viewer/ImageViewer.vue.d.ts +0 -85
- package/dist/src/components/viewer/ImageViewer.vue.d.ts.map +0 -1
- package/dist/src/components/viewer/PDFComponent.vue.d.ts +0 -449
- package/dist/src/components/viewer/PDFComponent.vue.d.ts.map +0 -1
- package/dist/src/components/viewer/PdfSignaturePanel.vue.d.ts +0 -9
- package/dist/src/components/viewer/PdfSignaturePanel.vue.d.ts.map +0 -1
- package/dist/src/components/viewer/VideoPlayer.vue.d.ts +0 -51
- package/dist/src/components/viewer/VideoPlayer.vue.d.ts.map +0 -1
- package/dist/src/components/viewer/lazyPdfComponents.d.ts +0 -444
- package/dist/src/components/viewer/lazyPdfComponents.d.ts.map +0 -1
- package/dist/src/components/views/PredefinedViewsPanel.vue.d.ts +0 -105
- package/dist/src/components/views/PredefinedViewsPanel.vue.d.ts.map +0 -1
- package/dist/src/components/views/ViewList.vue.d.ts +0 -14
- package/dist/src/components/views/ViewList.vue.d.ts.map +0 -1
- package/dist/src/components/workspace/WorkspaceCard.vue.d.ts +0 -331
- package/dist/src/components/workspace/WorkspaceCard.vue.d.ts.map +0 -1
- package/dist/src/components/workspace/WorkspaceList.vue.d.ts +0 -473
- package/dist/src/components/workspace/WorkspaceList.vue.d.ts.map +0 -1
- package/dist/src/composables/collabProtocol.d.ts.map +0 -1
- package/dist/src/composables/useAuth.d.ts.map +0 -1
- package/dist/src/composables/useChatWebSocket.d.ts.map +0 -1
- package/dist/src/composables/useClassificationPlan.d.ts.map +0 -1
- package/dist/src/composables/useCodeMirror.d.ts +0 -57
- package/dist/src/composables/useCodeMirror.d.ts.map +0 -1
- package/dist/src/composables/useCollabEditor.d.ts.map +0 -1
- package/dist/src/composables/useCollabWebSocket.d.ts.map +0 -1
- package/dist/src/composables/useColumnFilter.d.ts.map +0 -1
- package/dist/src/composables/useDragDrop.d.ts.map +0 -1
- package/dist/src/composables/useGhostNodes.d.ts.map +0 -1
- package/dist/src/composables/useGridValidation.d.ts.map +0 -1
- package/dist/src/composables/useLayout.d.ts.map +0 -1
- package/dist/src/composables/useMarkdownPreview.d.ts +0 -44
- package/dist/src/composables/useMarkdownPreview.d.ts.map +0 -1
- package/dist/src/composables/useResize.d.ts.map +0 -1
- package/dist/src/composables/useTheme.d.ts.map +0 -1
- package/dist/src/directives/assert.d.ts.map +0 -1
- package/dist/src/httpClientPatch.d.ts.map +0 -1
- package/dist/src/i18n/index.d.ts +0 -4305
- package/dist/src/i18n/index.d.ts.map +0 -1
- package/dist/src/i18n/locales/index.d.ts.map +0 -1
- package/dist/src/index.d.ts +0 -175
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/pages/ErrorPage.vue.d.ts +0 -6
- package/dist/src/pages/ErrorPage.vue.d.ts.map +0 -1
- package/dist/src/pages/LoginPage.vue.d.ts +0 -29
- package/dist/src/pages/LoginPage.vue.d.ts.map +0 -1
- package/dist/src/pages/NotFoundPages.vue.d.ts +0 -50
- package/dist/src/pages/NotFoundPages.vue.d.ts.map +0 -1
- package/dist/src/plugins/KeycloakPlugin.d.ts.map +0 -1
- package/dist/src/services/AftsQueryBuilder.d.ts.map +0 -1
- package/dist/src/services/AiImportService.d.ts +0 -125
- package/dist/src/services/AiImportService.d.ts.map +0 -1
- package/dist/src/services/AiMetadataService.d.ts +0 -81
- package/dist/src/services/AiMetadataService.d.ts.map +0 -1
- package/dist/src/services/AlfrescoFileService.d.ts.map +0 -1
- package/dist/src/services/AlfrescoModelService.d.ts.map +0 -1
- package/dist/src/services/AlfrescoNodeService.d.ts.map +0 -1
- package/dist/src/services/AlfrescoPermissionService.d.ts.map +0 -1
- package/dist/src/services/AlfrescoProxyService.d.ts.map +0 -1
- package/dist/src/services/AppSwitcherService.d.ts.map +0 -1
- package/dist/src/services/ArchiveService.d.ts +0 -49
- package/dist/src/services/ArchiveService.d.ts.map +0 -1
- package/dist/src/services/CapabilitiesService.d.ts.map +0 -1
- package/dist/src/services/ChatBackendService.d.ts.map +0 -1
- package/dist/src/services/ClassificationFileService.d.ts.map +0 -1
- package/dist/src/services/ClassificationService.d.ts.map +0 -1
- package/dist/src/services/CollabBackupService.d.ts.map +0 -1
- package/dist/src/services/CollabService.d.ts.map +0 -1
- package/dist/src/services/CollaboraAccessService.d.ts.map +0 -1
- package/dist/src/services/ConfigHealthService.d.ts.map +0 -1
- package/dist/src/services/ConfigService.d.ts.map +0 -1
- package/dist/src/services/DashboardService.d.ts +0 -77
- package/dist/src/services/DashboardService.d.ts.map +0 -1
- package/dist/src/services/DiffusionService.d.ts.map +0 -1
- package/dist/src/services/ErrorService.d.ts.map +0 -1
- package/dist/src/services/FavoriteService.d.ts.map +0 -1
- package/dist/src/services/FilingPlanService.d.ts.map +0 -1
- package/dist/src/services/FormatService.d.ts.map +0 -1
- package/dist/src/services/GhostMatcher.d.ts.map +0 -1
- package/dist/src/services/IconeService.d.ts.map +0 -1
- package/dist/src/services/IndexAwaitService.d.ts +0 -61
- package/dist/src/services/IndexAwaitService.d.ts.map +0 -1
- package/dist/src/services/KeyboardShortcutsService.d.ts.map +0 -1
- package/dist/src/services/LibVueActionService.d.ts.map +0 -1
- package/dist/src/services/MenuService.d.ts.map +0 -1
- package/dist/src/services/NodeDragService.d.ts.map +0 -1
- package/dist/src/services/NodeToMenuItemService.d.ts.map +0 -1
- package/dist/src/services/PdfCommentService.d.ts +0 -30
- package/dist/src/services/PdfCommentService.d.ts.map +0 -1
- package/dist/src/services/PdfConfigService.d.ts.map +0 -1
- package/dist/src/services/PdfFormService.d.ts.map +0 -1
- package/dist/src/services/PdfInsertService.d.ts.map +0 -1
- package/dist/src/services/PdfLinkService.d.ts.map +0 -1
- package/dist/src/services/PdfRedactionService.d.ts.map +0 -1
- package/dist/src/services/PdfSignatureService.d.ts.map +0 -1
- package/dist/src/services/PdfTextService.d.ts.map +0 -1
- package/dist/src/services/PeopleService.d.ts.map +0 -1
- package/dist/src/services/PlanSuggestService.d.ts.map +0 -1
- package/dist/src/services/PlanTreePdfService.d.ts.map +0 -1
- package/dist/src/services/PreviewService.d.ts.map +0 -1
- package/dist/src/services/RocketChatAuthService.d.ts.map +0 -1
- package/dist/src/services/RocketChatService.d.ts.map +0 -1
- package/dist/src/services/TranslationService.d.ts.map +0 -1
- package/dist/src/services/UserViewService.d.ts.map +0 -1
- package/dist/src/services/ViewConfigService.d.ts.map +0 -1
- package/dist/src/services/WorkflowService.d.ts.map +0 -1
- package/dist/src/services/WorkspaceService.d.ts.map +0 -1
- package/dist/src/services/aliasMap.d.ts.map +0 -1
- package/dist/src/services/auth/KeycloakAuthProvider.d.ts.map +0 -1
- package/dist/src/services/auth/OidcAuthProvider.d.ts.map +0 -1
- package/dist/src/services/auth/__tests__/FakeAuthProvider.d.ts.map +0 -1
- package/dist/src/services/auth/authProvider.d.ts.map +0 -1
- package/dist/src/services/auth/buildOidcSettings.d.ts.map +0 -1
- package/dist/src/services/criteriaLogic.d.ts.map +0 -1
- package/dist/src/services/userSearchQuery.d.ts.map +0 -1
- package/dist/src/stores/aiImport.d.ts +0 -43
- package/dist/src/stores/aiImport.d.ts.map +0 -1
- package/dist/src/stores/chat.d.ts.map +0 -1
- package/dist/src/stores/collab.d.ts.map +0 -1
- package/dist/src/stores/collabora.d.ts.map +0 -1
- package/dist/src/stores/config.d.ts +0 -341
- package/dist/src/stores/config.d.ts.map +0 -1
- package/dist/src/stores/favorites.d.ts.map +0 -1
- package/dist/src/stores/filingPlan.d.ts.map +0 -1
- package/dist/src/stores/indexAwait.d.ts.map +0 -1
- package/dist/src/stores/menu.d.ts.map +0 -1
- package/dist/src/stores/navigation.d.ts.map +0 -1
- package/dist/src/stores/paginator.d.ts.map +0 -1
- package/dist/src/stores/screen.d.ts.map +0 -1
- package/dist/src/stores/search.d.ts.map +0 -1
- package/dist/src/stores/selection.d.ts.map +0 -1
- package/dist/src/stores/taskNotification.d.ts.map +0 -1
- package/dist/src/stores/upload.d.ts.map +0 -1
- package/dist/src/stores/user.d.ts.map +0 -1
- package/dist/src/stores/userPreferences.d.ts.map +0 -1
- package/dist/src/stores/userView.d.ts.map +0 -1
- package/dist/src/typedef.d.ts.map +0 -1
- package/dist/src/utils/classificationPlanUtils.d.ts.map +0 -1
- package/dist/src/utils/indexAwaitReducer.d.ts.map +0 -1
- package/dist/src/utils/overflowUtils.d.ts.map +0 -1
- package/dist/src/utils/planTree.d.ts.map +0 -1
- package/dist/src/utils/treeA11y.d.ts.map +0 -1
- package/dist/src/utils/workspaceAppearance.d.ts.map +0 -1
- package/dist/src/workers/upload.worker.d.ts.map +0 -1
- /package/dist/{src/AlfrescoApi.d.ts → AlfrescoApi.d.ts} +0 -0
- /package/dist/{src/components → components}/dashboard/editor/blockDraft.d.ts +0 -0
- /package/dist/{src/components → components}/dashboard/editor/validators.d.ts +0 -0
- /package/dist/{src/composables → composables}/collabProtocol.d.ts +0 -0
- /package/dist/{src/composables → composables}/useAuth.d.ts +0 -0
- /package/dist/{src/composables → composables}/useChatWebSocket.d.ts +0 -0
- /package/dist/{src/composables → composables}/useClassificationPlan.d.ts +0 -0
- /package/dist/{src/composables → composables}/useCollabEditor.d.ts +0 -0
- /package/dist/{src/composables → composables}/useCollabWebSocket.d.ts +0 -0
- /package/dist/{src/composables → composables}/useColumnFilter.d.ts +0 -0
- /package/dist/{src/composables → composables}/useDragDrop.d.ts +0 -0
- /package/dist/{src/composables → composables}/useGhostNodes.d.ts +0 -0
- /package/dist/{src/composables → composables}/useGridValidation.d.ts +0 -0
- /package/dist/{src/composables → composables}/useLayout.d.ts +0 -0
- /package/dist/{src/composables → composables}/useResize.d.ts +0 -0
- /package/dist/{src/composables → composables}/useTheme.d.ts +0 -0
- /package/dist/{src/directives → directives}/assert.d.ts +0 -0
- /package/dist/{src/httpClientPatch.d.ts → httpClientPatch.d.ts} +0 -0
- /package/dist/{src/i18n → i18n}/locales/index.d.ts +0 -0
- /package/dist/{src/plugins → plugins}/KeycloakPlugin.d.ts +0 -0
- /package/dist/{src/services → services}/AftsQueryBuilder.d.ts +0 -0
- /package/dist/{src/services → services}/AlfrescoFileService.d.ts +0 -0
- /package/dist/{src/services → services}/AlfrescoModelService.d.ts +0 -0
- /package/dist/{src/services → services}/AlfrescoNodeService.d.ts +0 -0
- /package/dist/{src/services → services}/AlfrescoPermissionService.d.ts +0 -0
- /package/dist/{src/services → services}/AlfrescoProxyService.d.ts +0 -0
- /package/dist/{src/services → services}/AppSwitcherService.d.ts +0 -0
- /package/dist/{src/services → services}/CapabilitiesService.d.ts +0 -0
- /package/dist/{src/services → services}/ChatBackendService.d.ts +0 -0
- /package/dist/{src/services → services}/ClassificationFileService.d.ts +0 -0
- /package/dist/{src/services → services}/ClassificationService.d.ts +0 -0
- /package/dist/{src/services → services}/CollabBackupService.d.ts +0 -0
- /package/dist/{src/services → services}/CollabService.d.ts +0 -0
- /package/dist/{src/services → services}/CollaboraAccessService.d.ts +0 -0
- /package/dist/{src/services → services}/ConfigHealthService.d.ts +0 -0
- /package/dist/{src/services → services}/ConfigService.d.ts +0 -0
- /package/dist/{src/services → services}/DiffusionService.d.ts +0 -0
- /package/dist/{src/services → services}/ErrorService.d.ts +0 -0
- /package/dist/{src/services → services}/FavoriteService.d.ts +0 -0
- /package/dist/{src/services → services}/FilingPlanService.d.ts +0 -0
- /package/dist/{src/services → services}/FormatService.d.ts +0 -0
- /package/dist/{src/services → services}/GhostMatcher.d.ts +0 -0
- /package/dist/{src/services → services}/IconeService.d.ts +0 -0
- /package/dist/{src/services → services}/KeyboardShortcutsService.d.ts +0 -0
- /package/dist/{src/services → services}/LibVueActionService.d.ts +0 -0
- /package/dist/{src/services → services}/MenuService.d.ts +0 -0
- /package/dist/{src/services → services}/NodeDragService.d.ts +0 -0
- /package/dist/{src/services → services}/NodeToMenuItemService.d.ts +0 -0
- /package/dist/{src/services → services}/PdfConfigService.d.ts +0 -0
- /package/dist/{src/services → services}/PdfFormService.d.ts +0 -0
- /package/dist/{src/services → services}/PdfInsertService.d.ts +0 -0
- /package/dist/{src/services → services}/PdfLinkService.d.ts +0 -0
- /package/dist/{src/services → services}/PdfRedactionService.d.ts +0 -0
- /package/dist/{src/services → services}/PdfSignatureService.d.ts +0 -0
- /package/dist/{src/services → services}/PdfTextService.d.ts +0 -0
- /package/dist/{src/services → services}/PeopleService.d.ts +0 -0
- /package/dist/{src/services → services}/PlanSuggestService.d.ts +0 -0
- /package/dist/{src/services → services}/PlanTreePdfService.d.ts +0 -0
- /package/dist/{src/services → services}/PreviewService.d.ts +0 -0
- /package/dist/{src/services → services}/RocketChatAuthService.d.ts +0 -0
- /package/dist/{src/services → services}/RocketChatService.d.ts +0 -0
- /package/dist/{src/services → services}/TranslationService.d.ts +0 -0
- /package/dist/{src/services → services}/UserViewService.d.ts +0 -0
- /package/dist/{src/services → services}/ViewConfigService.d.ts +0 -0
- /package/dist/{src/services → services}/WorkflowService.d.ts +0 -0
- /package/dist/{src/services → services}/WorkspaceService.d.ts +0 -0
- /package/dist/{src/services → services}/aliasMap.d.ts +0 -0
- /package/dist/{src/services → services}/auth/KeycloakAuthProvider.d.ts +0 -0
- /package/dist/{src/services → services}/auth/OidcAuthProvider.d.ts +0 -0
- /package/dist/{src/services → services}/auth/__tests__/FakeAuthProvider.d.ts +0 -0
- /package/dist/{src/services → services}/auth/authProvider.d.ts +0 -0
- /package/dist/{src/services → services}/auth/buildOidcSettings.d.ts +0 -0
- /package/dist/{src/services → services}/criteriaLogic.d.ts +0 -0
- /package/dist/{src/services → services}/userSearchQuery.d.ts +0 -0
- /package/dist/{src/stores → stores}/chat.d.ts +0 -0
- /package/dist/{src/stores → stores}/collab.d.ts +0 -0
- /package/dist/{src/stores → stores}/collabora.d.ts +0 -0
- /package/dist/{src/stores → stores}/favorites.d.ts +0 -0
- /package/dist/{src/stores → stores}/filingPlan.d.ts +0 -0
- /package/dist/{src/stores → stores}/indexAwait.d.ts +0 -0
- /package/dist/{src/stores → stores}/menu.d.ts +0 -0
- /package/dist/{src/stores → stores}/navigation.d.ts +0 -0
- /package/dist/{src/stores → stores}/paginator.d.ts +0 -0
- /package/dist/{src/stores → stores}/screen.d.ts +0 -0
- /package/dist/{src/stores → stores}/search.d.ts +0 -0
- /package/dist/{src/stores → stores}/selection.d.ts +0 -0
- /package/dist/{src/stores → stores}/taskNotification.d.ts +0 -0
- /package/dist/{src/stores → stores}/upload.d.ts +0 -0
- /package/dist/{src/stores → stores}/user.d.ts +0 -0
- /package/dist/{src/stores → stores}/userPreferences.d.ts +0 -0
- /package/dist/{src/stores → stores}/userView.d.ts +0 -0
- /package/dist/{src/typedef.d.ts → typedef.d.ts} +0 -0
- /package/dist/{src/utils → utils}/classificationPlanUtils.d.ts +0 -0
- /package/dist/{src/utils → utils}/indexAwaitReducer.d.ts +0 -0
- /package/dist/{src/utils → utils}/overflowUtils.d.ts +0 -0
- /package/dist/{src/utils → utils}/planTree.d.ts +0 -0
- /package/dist/{src/utils → utils}/treeA11y.d.ts +0 -0
- /package/dist/{src/utils → utils}/workspaceAppearance.d.ts +0 -0
- /package/dist/{src/workers → workers}/upload.worker.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PDFComponent-DjEBu0cQ.js","sources":["../src/services/PdfFormService.js","../src/services/PdfSignatureService.js","../src/services/PdfLinkService.js","../src/components/viewer/PDFComponent.vue"],"sourcesContent":["/*\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n */\nimport { PDFDocument } from \"pdf-lib\";\n\n/**\n * Set or clear the ReadOnly flag (/Ff bit 1) on the form fields of a PDF.\n *\n * The ReadOnly flag is a rendering hint, not a protection: pdf.js turns a\n * read-only widget into a disabled input (`element.disabled = data.readOnly`),\n * and any editor — including this service — can flip it back. It states an\n * intention; it does not enforce it.\n *\n * pdf.js can only write field *values* (`saveDocument()`), so rewriting the\n * AcroForm structure goes through pdf-lib. Metadata is left alone\n * (`updateMetadata: false`): changing the fields' flags is not a reason to\n * rewrite the document's Producer and modification date.\n *\n * ReadOnly may be inherited from a parent field; pdf-lib reads `/Ff` through\n * the inheritance chain but writes it on the terminal field, whose own value\n * then takes precedence — so writing the terminal fields is enough.\n *\n * @param {Uint8Array|ArrayBuffer} pdfBytes the document as loaded\n * @param {boolean} readOnly wanted state of the fields\n * @returns {Promise<{bytes: Uint8Array|null, count: number}>} the rewritten\n * document and the number of fields changed, or null bytes when every field\n * was already in the wanted state\n */\nasync function setFormFieldsReadOnly(pdfBytes, readOnly) {\n const doc = await PDFDocument.load(pdfBytes, {\n ignoreEncryption: true,\n updateMetadata: false,\n });\n\n const fields = doc\n .getForm()\n .getFields()\n .filter((field) => field.isReadOnly() !== readOnly);\n\n if (fields.length === 0) {\n return { bytes: null, count: 0 };\n }\n\n for (const field of fields) {\n if (readOnly) {\n field.enableReadOnly();\n } else {\n field.disableReadOnly();\n }\n }\n\n return { bytes: await doc.save(), count: fields.length };\n}\n\n/**\n * Make every field of a form fillable again.\n *\n * A form whose fields are all flagged ReadOnly looks broken rather than\n * protected — inert inputs, no message — a common accident with forms exported\n * from LibreOffice Writer.\n *\n * @param {Uint8Array|ArrayBuffer} pdfBytes the document as loaded\n * @returns {Promise<{bytes: Uint8Array|null, unlockedCount: number}>} null\n * bytes when no field was locked\n */\nexport async function unlockFormFields(pdfBytes) {\n const { bytes, count } = await setFormFieldsReadOnly(pdfBytes, false);\n return { bytes, unlockedCount: count };\n}\n\n/**\n * Mark every field of a form as read-only, to state that it is final.\n *\n * @param {Uint8Array|ArrayBuffer} pdfBytes the document as loaded, values\n * included — lock the bytes returned by pdf.js `saveDocument()` to keep what\n * was filled in\n * @returns {Promise<{bytes: Uint8Array|null, lockedCount: number}>} null bytes\n * when every field was already read-only\n */\nexport async function lockFormFields(pdfBytes) {\n const { bytes, count } = await setFormFieldsReadOnly(pdfBytes, true);\n return { bytes, lockedCount: count };\n}\n","/*\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n */\nimport { fromBER } from \"asn1js\";\nimport {\n PDFArray,\n PDFDict,\n PDFDocument,\n PDFHexString,\n PDFName,\n PDFString,\n} from \"pdf-lib\";\nimport { ContentInfo, SignedData, TSTInfo } from \"pkijs\";\n\nconst OID_COMMON_NAME = \"2.5.4.3\";\nconst OID_ORGANIZATION = \"2.5.4.10\";\nconst OID_SIGNATURE_TIMESTAMP = \"1.2.840.113549.1.9.16.2.14\";\n\nconst toHex = (view) =>\n Array.from(view, (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n\nconst relativeName = (name, oid) => {\n const entry = name?.typesAndValues?.find((item) => item.type === oid);\n return entry ? entry.value.valueBlock.value : null;\n};\n\nconst readSignedData = (value) => {\n const contents = value.lookupMaybe(\n PDFName.of(\"Contents\"),\n PDFHexString,\n PDFString,\n );\n if (!contents) {\n return null;\n }\n try {\n const bytes = contents.asBytes();\n const decoded = fromBER(\n bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength),\n );\n if (decoded.offset === -1) {\n return null;\n }\n const contentInfo = new ContentInfo({ schema: decoded.result });\n return new SignedData({ schema: contentInfo.content });\n } catch {\n return null;\n }\n};\n\nconst signerCertificate = (signedData) => {\n const certificates = (signedData?.certificates ?? []).filter(\n (certificate) => certificate.subject,\n );\n const serial =\n signedData?.signerInfos?.[0]?.sid?.serialNumber?.valueBlock?.valueHexView;\n if (!serial) {\n return certificates[0] ?? null;\n }\n const wanted = toHex(serial);\n return (\n certificates.find(\n (certificate) =>\n toHex(certificate.serialNumber.valueBlock.valueHexView) === wanted,\n ) ??\n certificates[0] ??\n null\n );\n};\n\nconst readTimestampDate = (signedData) => {\n const attribute =\n signedData?.signerInfos?.[0]?.unsignedAttrs?.attributes?.find(\n (entry) => entry.type === OID_SIGNATURE_TIMESTAMP,\n );\n if (!attribute?.values?.length) {\n return null;\n }\n try {\n const token = new SignedData({\n schema: new ContentInfo({ schema: attribute.values[0] }).content,\n });\n const content = token.encapContentInfo?.eContent;\n if (!content) {\n return null;\n }\n const view = content.valueBlock.valueHexView;\n const decoded = fromBER(\n view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength),\n );\n if (decoded.offset === -1) {\n return null;\n }\n return new TSTInfo({ schema: decoded.result }).genTime ?? null;\n } catch {\n return null;\n }\n};\n\nconst describeCertificate = (certificate) => {\n if (!certificate) {\n return null;\n }\n return {\n commonName: relativeName(certificate.subject, OID_COMMON_NAME),\n organization: relativeName(certificate.subject, OID_ORGANIZATION),\n issuerCommonName: relativeName(certificate.issuer, OID_COMMON_NAME),\n serialNumber: toHex(certificate.serialNumber.valueBlock.valueHexView),\n validFrom: certificate.notBefore.value,\n validUntil: certificate.notAfter.value,\n };\n};\n\nconst readText = (dict, key) => {\n const value = dict.lookupMaybe(PDFName.of(key), PDFString, PDFHexString);\n return value ? value.decodeText() : null;\n};\n\nconst STANDARD_BY_SUB_FILTER = {\n \"ETSI.CAdES.detached\": \"PADES\",\n \"ETSI.RFC3161\": \"TIMESTAMP\",\n \"adbe.pkcs7.detached\": \"ADOBE_PKCS7\",\n \"adbe.pkcs7.sha1\": \"ADOBE_PKCS7\",\n \"adbe.x509.rsa_sha1\": \"ADOBE_X509\",\n};\n\nconst readDate = (dict, key) => {\n const value = dict.lookupMaybe(PDFName.of(key), PDFString, PDFHexString);\n if (!value) {\n return null;\n }\n try {\n return value.decodeDate();\n } catch {\n return null;\n }\n};\n\nconst collectFields = (fields, collected = []) => {\n for (let index = 0; index < fields.size(); index += 1) {\n const field = fields.lookupMaybe(index, PDFDict);\n if (!field) {\n continue;\n }\n collected.push(field);\n const kids = field.lookupMaybe(PDFName.of(\"Kids\"), PDFArray);\n if (kids) {\n collectFields(kids, collected);\n }\n }\n return collected;\n};\n\nconst readByteRange = (value) => {\n const range = value.lookupMaybe(PDFName.of(\"ByteRange\"), PDFArray);\n if (!range || range.size() < 4) {\n return null;\n }\n return range.asArray().map((entry) => entry.asNumber());\n};\n\nconst describeSignature = (field, value) => {\n const signedData = readSignedData(value);\n const byteRange = readByteRange(value);\n const coveredUntil = byteRange ? byteRange[2] + byteRange[3] : null;\n const subFilter = value\n .lookupMaybe(PDFName.of(\"SubFilter\"), PDFName)\n ?.asString()\n .replace(/^\\//, \"\");\n return {\n fieldName: readText(field, \"T\"),\n declaredName: readText(value, \"Name\"),\n reason: readText(value, \"Reason\"),\n location: readText(value, \"Location\"),\n contactInfo: readText(value, \"ContactInfo\"),\n declaredDate: readDate(value, \"M\"),\n subFilter: subFilter ?? null,\n standard: STANDARD_BY_SUB_FILTER[subFilter] ?? \"UNKNOWN\",\n byteRange,\n coveredUntil,\n certificate: describeCertificate(signerCertificate(signedData)),\n timestampDate: readTimestampDate(signedData),\n };\n};\n\nconst coverageOf = (signature, lastCovered, totalLength) => {\n if (signature.coveredUntil === null) {\n return \"UNKNOWN\";\n }\n if (signature.coveredUntil === totalLength) {\n return \"COMPLETE\";\n }\n if (signature.coveredUntil < lastCovered) {\n return \"SIGNED_AGAIN\";\n }\n return \"MODIFIED_AFTER\";\n};\n\nconst qualifyCoverage = (signatures, totalLength) => {\n const lastCovered = Math.max(\n ...signatures.map((signature) => signature.coveredUntil ?? 0),\n );\n return signatures.map((signature) => ({\n ...signature,\n coverage: coverageOf(signature, lastCovered, totalLength),\n }));\n};\n\n/**\n * Describe the signatures a PDF document carries.\n *\n * @param {Uint8Array} bytes the document as stored, never re-saved\n * @returns {Promise<Array<object>>} one entry per signature, in document order\n */\nexport const extractSignatures = async (bytes) => {\n if (!bytes || bytes.length === 0) {\n return [];\n }\n let document;\n try {\n document = await PDFDocument.load(bytes, {\n ignoreEncryption: true,\n updateMetadata: false,\n });\n } catch (error) {\n console.error(\"Error reading PDF signatures:\", error);\n return [];\n }\n const acroForm = document.catalog.lookupMaybe(\n PDFName.of(\"AcroForm\"),\n PDFDict,\n );\n const fields = acroForm?.lookupMaybe(PDFName.of(\"Fields\"), PDFArray);\n if (!fields) {\n return [];\n }\n const signatures = [];\n for (const field of collectFields(fields)) {\n const type = field.lookupMaybe(PDFName.of(\"FT\"), PDFName);\n if (type?.asString() !== \"/Sig\") {\n continue;\n }\n const value = field.lookupMaybe(PDFName.of(\"V\"), PDFDict);\n if (!value) {\n continue;\n }\n signatures.push(describeSignature(field, value));\n }\n return qualifyCoverage(signatures, bytes.length);\n};\n","/**\n * Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n */\n\nexport const LINK_MAILTO = \"mailto\";\nexport const LINK_ROUTE = \"route\";\nexport const LINK_EXTERNAL = \"external\";\n\n/**\n * Decide how a hyperlink found in a PDF is followed.\n *\n * A link pointing at a page of the running application (same origin, under\n * the router base, matching a route) is followed inside the application;\n * anything else is external.\n *\n * @param {string} url - Hyperlink carried by the PDF annotation\n * @param {Object} context\n * @param {string} context.origin - Origin of the running application\n * @param {string} [context.base] - Router history base, e.g. \"/marches\"\n * @param {Function} [context.resolve] - Router resolve function\n * @returns {{type: string, url?: string, location?: Object}}\n */\nexport function resolvePdfLink(url, { origin, base = \"\", resolve } = {}) {\n if (url.startsWith(\"mailto:\")) {\n return { type: LINK_MAILTO, url };\n }\n\n let target;\n try {\n target = new URL(url, origin);\n } catch {\n return { type: LINK_EXTERNAL, url };\n }\n\n const normalizedBase = base.replace(/\\/+$/, \"\");\n const { pathname } = target;\n const isUnderBase =\n normalizedBase === \"\" ||\n pathname === normalizedBase ||\n pathname.startsWith(`${normalizedBase}/`);\n\n if (!resolve || target.origin !== origin || !isUnderBase) {\n return { type: LINK_EXTERNAL, url };\n }\n\n const appPath = pathname.slice(normalizedBase.length) || \"/\";\n const location = resolve(`${appPath}${target.search}${target.hash}`);\n if (!location?.matched?.length) {\n return { type: LINK_EXTERNAL, url };\n }\n return { type: LINK_ROUTE, location };\n}\n\n/**\n * Page number requested by a route query, clamped to the document.\n *\n * @param {*} value - Raw `page` query value\n * @param {number} pageCount - Number of pages of the document\n * @returns {number|null} null when the value is not a number\n */\nexport function clampPage(value, pageCount) {\n const page = parseInt(value, 10);\n if (isNaN(page)) {\n return null;\n }\n return Math.min(Math.max(page, 1), pageCount);\n}\n","<!--\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n-->\n\n<template>\n <div\n ref=\"pdfComponent\"\n class=\"pdf-component-root\"\n :class=\"{\n 'outline-none': isPdfConsultationPage,\n }\"\n tabindex=\"0\"\n >\n <PdfViewerSkeleton v-if=\"!pdf || !pages\" />\n <div v-else>\n <div class=\"pdf-toolbar\" :class=\"{ 'pdf-toolbar--small': isSmallScreen }\">\n <div v-if=\"isSinglePageDisplayed\" class=\"pdf-toolbar-group\">\n <PrimeButton\n v-tooltip=\"$t('pdf.previousPage')\"\n :aria-label=\"$t('pdf.previousPage')\"\n icon=\"ri-arrow-left-line\"\n class=\"pdf-toolbar-btn\"\n :disabled=\"isLeftButtonDisable\"\n @click=\"previousPage()\"\n />\n <span class=\"pdf-page-indicator\">\n <PrimeInputNumber\n v-model=\"page\"\n :aria-label=\"$t('pdf.changePage')\"\n fluid\n :min=\"1\"\n :max=\"pages\"\n :disabled=\"pages === 1\"\n class=\"pageInputNumber\"\n />\n {{ $t(\"pdf.on\") }} {{ pages }}\n </span>\n <PrimeButton\n v-tooltip=\"$t('pdf.nextPage')\"\n :aria-label=\"$t('pdf.nextPage')\"\n icon=\"ri-arrow-right-line\"\n class=\"pdf-toolbar-btn\"\n :disabled=\"isRightButtonDisable\"\n @click=\"nextPage()\"\n />\n </div>\n <PrimeDivider\n v-if=\"pages > 1\"\n layout=\"vertical\"\n class=\"pdfActionDivider\"\n />\n <div v-if=\"pages > 1\" class=\"pdf-toolbar-section\">\n <div class=\"pdf-toolbar-group\">\n <div>\n <PrimeButton\n v-if=\"isSinglePageDisplayed\"\n v-tooltip.top=\"$t('pdf.showAllPages')\"\n :aria-label=\"$t('pdf.showAllPages')\"\n icon=\"ri-file-copy-2-line\"\n class=\"pdf-toolbar-btn\"\n @click=\"changePdfDisplay()\"\n />\n <PrimeButton\n v-else\n v-tooltip.top=\"$t('pdf.showPageByPage')\"\n :aria-label=\"$t('pdf.showPageByPage')\"\n icon=\"ri-file-list-line\"\n class=\"pdf-toolbar-btn\"\n @click=\"changePdfDisplay()\"\n />\n </div>\n </div>\n </div>\n <PrimeDivider layout=\"vertical\" class=\"pdfActionDivider\" />\n <div class=\"pdf-toolbar-section\">\n <div class=\"pdf-toolbar-group\">\n <PrimeButton\n v-tooltip=\"$t('pdf.rotationLeft')\"\n :aria-label=\"$t('pdf.rotationLeft')\"\n icon=\"ri-arrow-go-back-line\"\n class=\"pdf-toolbar-btn\"\n @click=\"rotation = rotation - 90\"\n />\n <PrimeButton\n v-tooltip=\"$t('pdf.rotationRigth')\"\n :aria-label=\"$t('pdf.rotationRigth')\"\n icon=\"ri-arrow-go-forward-line\"\n class=\"pdf-toolbar-btn\"\n @click=\"rotation = rotation + 90\"\n />\n </div>\n </div>\n <PrimeDivider layout=\"vertical\" class=\"pdfActionDivider\" />\n <div class=\"pdf-toolbar-section\">\n <div class=\"pdf-toolbar-group\">\n <PrimeButton\n v-tooltip=\"$t('pdf.dezoom')\"\n :aria-label=\"$t('pdf.dezoom')\"\n icon=\"ri-zoom-out-line\"\n class=\"pdf-toolbar-btn\"\n @click=\"zoomOut\"\n />\n <PrimeButton\n v-tooltip=\"$t('pdf.zoom')\"\n :aria-label=\"$t('pdf.zoom')\"\n icon=\"ri-zoom-in-line\"\n class=\"pdf-toolbar-btn\"\n @click=\"zoomIn\"\n />\n <PrimeButton\n v-tooltip.left=\"$t('pdf.adaptToPage')\"\n :aria-label=\"$t('pdf.adaptToPage')\"\n icon=\"ri-expand-vertical-line\"\n class=\"pdf-toolbar-btn\"\n @click=\"fitAuto()\"\n />\n <PrimeButton\n v-tooltip.left=\"$t('pdf.adaptToWidth')\"\n :aria-label=\"$t('pdf.adaptToWidth')\"\n icon=\"ri-expand-horizontal-line\"\n class=\"pdf-toolbar-btn\"\n @click=\"fitWidthAuto()\"\n />\n </div>\n </div>\n <template v-if=\"hasSignatures && !signaturesInPanel\">\n <PrimeDivider layout=\"vertical\" class=\"pdfActionDivider\" />\n <div class=\"pdf-toolbar-section\">\n <div class=\"pdf-toolbar-group\">\n <PrimeButton\n v-tooltip=\"$t('pdf.showSignatures')\"\n :aria-label=\"$t('pdf.showSignatures')\"\n icon=\"ri-certificate-2-line\"\n class=\"pdf-toolbar-btn\"\n @click=\"showSignaturesDialog = true\"\n />\n </div>\n </div>\n </template>\n <template v-if=\"$slots.toolbar\">\n <PrimeDivider layout=\"vertical\" class=\"pdfActionDivider\" />\n <div class=\"pdf-toolbar-section\">\n <div class=\"pdf-toolbar-group\">\n <slot name=\"toolbar\" />\n </div>\n </div>\n </template>\n <template v-if=\"hasFormFields && !hideForms\">\n <PrimeDivider layout=\"vertical\" class=\"pdfActionDivider\" />\n <div class=\"flex flex-column align-items-center\">\n <div class=\"flex gap-1 m-2\">\n <!--\n The icon shows the state of the document, the tooltip and the\n accessible name state what the click does: a closed padlock\n means the fields are locked, and clicking it unlocks them.\n -->\n <PrimeButton\n v-if=\"canSaveForm && hasReadOnlyFields\"\n v-tooltip=\"\n isFormDirty\n ? $t('pdf.unlockFormBlocked')\n : $t('pdf.unlockForm')\n \"\n :aria-label=\"$t('pdf.unlockForm')\"\n icon=\"ri-lock-line\"\n severity=\"warning\"\n class=\"text-xl p-1\"\n :disabled=\"isFormDirty || isUnlocking\"\n :loading=\"isUnlocking\"\n @click=\"unlockForm()\"\n />\n <PrimeButton\n v-if=\"canSaveForm && !hasReadOnlyFields\"\n v-tooltip=\"$t('pdf.lockForm')\"\n :aria-label=\"$t('pdf.lockForm')\"\n icon=\"ri-lock-unlock-line\"\n class=\"text-xl p-1\"\n :disabled=\"isLocking || isSaving\"\n :loading=\"isLocking\"\n @click=\"$emit('lockForm')\"\n />\n <PrimeButton\n v-if=\"canSaveForm\"\n v-tooltip=\"$t('pdf.saveForm')\"\n :aria-label=\"$t('pdf.saveForm')\"\n icon=\"ri-save-line\"\n severity=\"info\"\n class=\"text-xl p-1\"\n :disabled=\"!isFormDirty || isSaving\"\n :loading=\"isSaving\"\n @click=\"$emit('saveForm')\"\n />\n <PrimeButton\n v-tooltip=\"$t('pdf.cancelForm')\"\n :aria-label=\"$t('pdf.cancelForm')\"\n icon=\"ri-close-line\"\n class=\"text-xl p-1\"\n :disabled=\"!isFormDirty\"\n @click=\"cancelForm()\"\n />\n <PrimeButton\n v-tooltip=\"$t('pdf.formFieldsInfo')\"\n :aria-label=\"$t('pdf.formFieldsInfo')\"\n icon=\"ri-information-line\"\n class=\"text-xl p-1\"\n @click=\"showFormFieldsInfo()\"\n />\n </div>\n </div>\n </template>\n </div>\n <div class=\"pdf-header\">\n <div v-if=\"isPdfConsultationPage\" class=\"pdf-title-container\">\n <h3 v-if=\"!hideTitle\" class=\"consultation-title\">\n {{ getFileName }}\n </h3>\n <PrimeTag\n v-if=\"$route.params.versionId\"\n class=\"pdf-version-tag\"\n :value=\"getVersionNumber\"\n />\n </div>\n </div>\n <div v-if=\"isSinglePageDisplayed\" class=\"pdf-single-page\">\n <div\n class=\"pdf-page-frame\"\n :class=\"{ 'pdf-page-frame--placing': isPlacing }\"\n @click.capture=\"onPageClick($event, page)\"\n >\n <VuePDF\n class=\"pdf-canvas\"\n :pdf=\"pdf\"\n :page=\"page\"\n :rotation=\"rotation\"\n :scale=\"scale\"\n :text-layer=\"textLayer\"\n :annotation-layer=\"annotationLayer\"\n :hide-forms=\"hideForms\"\n :highlight-text=\"highlightTerms\"\n @annotation=\"onAnnotation\"\n @highlight=\"onHighlight\"\n />\n <i\n v-for=\"(marker, index) in markersOn(page)\"\n :key=\"index\"\n class=\"ri-chat-1-fill pdf-comment-marker\"\n :style=\"{ left: `${marker.left}%`, top: `${marker.top}%` }\"\n aria-hidden=\"true\"\n />\n </div>\n </div>\n <div v-else class=\"pdf-all-pages\">\n <div v-for=\"pageItem in pages\" :key=\"pageItem\" class=\"pdf-page-item\">\n <div\n class=\"pdf-page-frame\"\n :class=\"{ 'pdf-page-frame--placing': isPlacing }\"\n @click.capture=\"onPageClick($event, pageItem)\"\n >\n <VuePDF\n :pdf=\"pdf\"\n :page=\"pageItem\"\n :rotation=\"rotation\"\n :scale=\"scale\"\n :text-layer=\"textLayer\"\n :annotation-layer=\"annotationLayer\"\n :hide-forms=\"hideForms\"\n :highlight-text=\"highlightTerms\"\n @annotation=\"onAnnotation\"\n @highlight=\"onHighlight\"\n />\n <i\n v-for=\"(marker, index) in markersOn(pageItem)\"\n :key=\"index\"\n class=\"ri-chat-1-fill pdf-comment-marker\"\n :style=\"{ left: `${marker.left}%`, top: `${marker.top}%` }\"\n aria-hidden=\"true\"\n />\n </div>\n <span class=\"pdf-page-number\">\n {{\n $t(\"pdf.currentPagination\", { page: pageItem, pages: pages })\n }}</span\n >\n </div>\n </div>\n </div>\n <PrimeDialog\n v-model:visible=\"showFormFieldsDialog\"\n :header=\"$t('pdf.formFieldsInfoTitle')\"\n modal\n class=\"w-8\"\n >\n <PrimeDataTable :value=\"formFieldsData\" striped-rows>\n <PrimeColumn field=\"name\" :header=\"$t('pdf.formFieldName')\" sortable />\n <PrimeColumn field=\"type\" :header=\"$t('pdf.formFieldType')\" sortable />\n <PrimeColumn\n field=\"value\"\n :header=\"$t('pdf.formFieldValue')\"\n sortable\n />\n </PrimeDataTable>\n </PrimeDialog>\n <PrimeDialog\n v-model:visible=\"showSignaturesDialog\"\n :header=\"$t('pdf.signaturePanelTitle')\"\n modal\n :style=\"{ width: '95vw', maxWidth: '40rem' }\"\n >\n <PdfSignaturePanel :signatures=\"signatures\" />\n </PrimeDialog>\n </div>\n</template>\n<script>\nimport { usePDF, VuePDF } from \"@tato30/vue-pdf\";\nimport \"@tato30/vue-pdf/style.css\";\nimport { buildPdfSource } from \"@/services/PdfConfigService.js\";\nimport { lockFormFields, unlockFormFields } from \"@/services/PdfFormService.js\";\nimport { extractSignatures } from \"@/services/PdfSignatureService.js\";\nimport {\n readPdfComments,\n readPdfInfo,\n readPdfOutline,\n} from \"@/services/PdfDocumentService.js\";\nimport {\n highlightRangeOf,\n readPdfPageTexts,\n} from \"@/services/PdfSearchService.js\";\nimport { usePdfDocumentStore } from \"@/stores/pdfDocument.js\";\nimport {\n LINK_MAILTO,\n LINK_ROUTE,\n clampPage,\n resolvePdfLink,\n} from \"@/services/PdfLinkService.js\";\nimport PdfSignaturePanel from \"@/components/viewer/PdfSignaturePanel.vue\";\nimport PdfViewerSkeleton from \"@/components/viewer/PdfViewerSkeleton.vue\";\nimport { useSelectionStore } from \"@/stores/selection.js\";\nimport Tooltip from \"primevue/tooltip\";\nimport Button from \"primevue/button\";\nimport Divider from \"primevue/divider\";\nimport Tag from \"primevue/tag\";\nimport InputNumber from \"primevue/inputnumber\";\nimport Dialog from \"primevue/dialog\";\nimport DataTable from \"primevue/datatable\";\nimport Column from \"primevue/column\";\n\nexport default {\n name: \"PDFComponent\",\n components: {\n VuePDF,\n PdfSignaturePanel,\n PrimeButton: Button,\n PdfViewerSkeleton,\n PrimeDivider: Divider,\n PrimeTag: Tag,\n PrimeInputNumber: InputNumber,\n PrimeDialog: Dialog,\n PrimeDataTable: DataTable,\n PrimeColumn: Column,\n },\n directives: {\n tooltip: Tooltip,\n },\n emits: [\n \"formDirtyChange\",\n \"saveForm\",\n \"lockForm\",\n \"formUnlocked\",\n \"formUnlockError\",\n ],\n props: {\n url: {\n type: String,\n default: null,\n },\n textLayer: {\n type: Boolean,\n default: false,\n },\n annotationLayer: {\n type: Boolean,\n default: false,\n },\n hideForms: {\n type: Boolean,\n default: false,\n },\n canSaveForm: {\n type: Boolean,\n default: false,\n },\n documentId: {\n type: String,\n default: null,\n },\n signaturesInPanel: {\n type: Boolean,\n default: false,\n },\n hideTitle: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n pdf: null,\n pages: null,\n page: 1,\n rotation: 0,\n scale: 1,\n defaultViewport: {\n width: 0,\n height: 0,\n },\n isSinglePageDisplayed: true,\n isFormDirty: false,\n isSaving: false,\n isUnlocking: false,\n isLocking: false,\n hasFormFields: false,\n hasReadOnlyFields: false,\n unlockedFormBytes: null,\n showFormFieldsDialog: false,\n formFieldsData: [],\n formFieldValues: {},\n signatures: [],\n showSignaturesDialog: false,\n markerPositions: [],\n };\n },\n computed: {\n getVersionNumber() {\n return `Version ${this.$route.params.versionId}`;\n },\n getFileName() {\n const selectionStore = useSelectionStore();\n if (selectionStore.files.length > 0) {\n return selectionStore.files[0].name;\n } else {\n return \"\";\n }\n },\n isLeftButtonDisable() {\n return this.page === 1;\n },\n isRightButtonDisable() {\n return this.page === this.pages;\n },\n isPdfConsultationPage() {\n return this.$route.name.startsWith(\"consultation-pdf\");\n },\n isSmallScreen() {\n return window.innerWidth <= 920;\n },\n hasSignatures() {\n return this.signatures.length > 0;\n },\n isOwnDocument() {\n return (\n !!this.documentId &&\n this.pdfDocumentStore.documentId === this.documentId\n );\n },\n isPlacing() {\n return this.isOwnDocument && this.pdfDocumentStore.placing;\n },\n ownHighlight() {\n return this.isOwnDocument ? this.pdfDocumentStore.highlight : null;\n },\n highlightTerms() {\n return this.ownHighlight?.terms.length\n ? this.ownHighlight.terms\n : undefined;\n },\n },\n watch: {\n pages(newValue) {\n if (this.isPdfConsultationPage) {\n const wantedPage =\n parseInt(new URLSearchParams(window.location.search).get(\"page\")) ||\n 1;\n this.page =\n wantedPage > newValue ? newValue : wantedPage < 1 ? 1 : wantedPage;\n this.changePageUrl(this.page);\n }\n if (newValue) {\n this.publishToStore({ pageCount: newValue, currentPage: this.page });\n this.checkFormFields();\n this.checkSignatures();\n this.publishDocument();\n if (this.isOwnDocument && this.pdfDocumentStore.textRequested) {\n this.publishText();\n }\n }\n },\n signatures(value) {\n this.publishToStore({ signatures: value });\n },\n isFormDirty(value) {\n this.publishToStore({ formDirty: value });\n },\n rotation() {\n this.computeMarkerPositions();\n },\n page(newValue) {\n if (this.isPdfConsultationPage) {\n this.changePageUrl(newValue);\n }\n this.publishToStore({ currentPage: newValue });\n },\n },\n created() {\n this.pdfDocumentStore = usePdfDocumentStore();\n this.$watch(\n () => this.isOwnDocument && this.pdfDocumentStore.markers,\n () => this.computeMarkerPositions(),\n { deep: true },\n );\n this.$watch(\n () => this.pdfDocumentStore.pageRequest,\n (request) => {\n if (\n request &&\n this.documentId &&\n this.pdfDocumentStore.documentId === this.documentId\n ) {\n this.goToPage(request.page);\n }\n },\n );\n this.highlightPayloads = new Map();\n this.$watch(\n () => [this.ownHighlight?.page, this.ownHighlight?.nth],\n () => this.markActiveHighlight(true),\n );\n this.$watch(\n () => this.isOwnDocument && this.pdfDocumentStore.textRequested,\n (requested) => {\n if (requested && this.pages) {\n this.publishText();\n }\n },\n );\n },\n mounted() {\n this.focusOnPDFComponent();\n this.loadPDF();\n this.setDefaultViewport();\n this.fitAuto();\n },\n unmounted() {\n if (this.documentId) {\n this.pdfDocumentStore.clear(this.documentId);\n }\n if (this.pdf) {\n this.pdf.destroy();\n if (this.pdf) {\n delete this.pdf;\n }\n }\n },\n methods: {\n changePdfDisplay() {\n this.loadPDF();\n this.isSinglePageDisplayed = !this.isSinglePageDisplayed;\n if (this.isPdfConsultationPage) {\n const url = new URL(window.location.href);\n if (this.isSinglePageDisplayed) {\n this.changePageUrl(this.page);\n } else {\n url.searchParams.delete(\"page\");\n window.history.replaceState(history.state, \"\", url.toString());\n }\n }\n if (this.isSinglePageDisplayed) {\n this.focusOnPDFComponent();\n }\n },\n setDefaultViewport() {\n if (this.isSmallScreen) {\n this.defaultViewport.width = 300;\n this.defaultViewport.height = 200;\n } else {\n if (this.$route.name === \"consultation-pdf\") {\n this.defaultViewport.width = 700;\n this.defaultViewport.height = 500;\n } else {\n this.defaultViewport.width = 900;\n this.defaultViewport.height = 700;\n }\n }\n },\n\n menuDiff() {\n const SM_SIZE = 640;\n const MD_SIZE = 768;\n const LG_SIZE = 1024;\n\n const SM_MENU_SIZE = 200;\n const MD_MENU_SIZE = 250;\n const LG_MENU_SIZE = 300;\n const XL_MENU_SIZE = 350;\n\n let menuDiff;\n if (window.innerWidth <= SM_SIZE) {\n menuDiff = SM_MENU_SIZE;\n } else if (window.innerWidth <= MD_SIZE) {\n menuDiff = MD_MENU_SIZE;\n } else if (window.innerWidth <= LG_SIZE) {\n menuDiff = LG_MENU_SIZE;\n } else {\n menuDiff = XL_MENU_SIZE;\n }\n return menuDiff;\n },\n\n pageWidthScale() {\n if (!this.defaultViewport.width) {\n return 1;\n }\n let availableSize = window.innerWidth - this.menuDiff();\n return availableSize / this.defaultViewport.width;\n },\n\n pageHeightScale() {\n if (!this.defaultViewport.height) {\n return 1;\n }\n let availableSize = window.innerHeight - this.menuDiff();\n return (availableSize / this.defaultViewport.height) * 0.8;\n },\n zoomIn() {\n this.scale = this.scale < 2 ? this.scale + 0.25 : this.scale;\n },\n zoomOut() {\n this.scale = this.scale > 0.25 ? this.scale - 0.25 : this.scale;\n },\n fitAuto() {\n const widthScale = this.pageWidthScale();\n const heightScale = this.pageHeightScale();\n this.scale = Math.min(widthScale, heightScale);\n },\n fitWidthAuto() {\n this.scale = this.pageWidthScale();\n },\n previousPage() {\n if (!this.isLeftButtonDisable) {\n this.page = this.page > 1 ? this.page - 1 : this.page;\n }\n },\n nextPage() {\n if (!this.isRightButtonDisable) {\n this.page = this.page < this.pages ? this.page + 1 : this.page;\n }\n },\n /**\n * Source handed to pdf.js: the node URL, or the in-memory bytes produced by\n * unlockForm(). pdf.js transfers the `data` buffer to its worker, which\n * detaches it, so every load gets its own copy — otherwise a second load\n * (cancelForm, changePdfDisplay) would fail on a detached ArrayBuffer.\n *\n * @returns {string|{data: Uint8Array}}\n */\n currentPdfSource() {\n return this.unlockedFormBytes\n ? { data: this.unlockedFormBytes.slice() }\n : this.url;\n },\n loadPDF() {\n if (!this.url) {\n console.error(\"URL is not defined\");\n return;\n }\n this.hasFormFields = false;\n this.hasReadOnlyFields = false;\n this.formFieldValues = {};\n this.signatures = [];\n this.highlightPayloads.clear();\n\n const document = usePDF(buildPdfSource(this.currentPdfSource()));\n this.pdf = document.pdf;\n this.pages = document.pages;\n // this.info = document.info\n },\n changePageUrl(pageValue) {\n if (pageValue !== 0) {\n const pageNumber = parseInt(pageValue, 10);\n if (!isNaN(pageNumber)) {\n const newQuery = new URLSearchParams(window.location.search);\n newQuery.set(\"page\", pageNumber);\n window.history.replaceState(\n history.state,\n \"\",\n `${window.location.pathname}?${newQuery.toString()}`,\n );\n }\n }\n },\n focusOnPDFComponent() {\n if (this.$refs.pdfComponent) {\n this.$refs.pdfComponent.focus();\n }\n },\n async getFormBytes() {\n if (!this.pdf) {\n return null;\n }\n const pdfDoc = await this.pdf.promise;\n try {\n return await pdfDoc.saveDocument();\n } catch (error) {\n console.error(\"Error saving PDF document:\", error);\n return await pdfDoc.getData();\n }\n },\n resetFormDirty() {\n this.isFormDirty = false;\n this.$emit(\"formDirtyChange\", false);\n },\n setSaving(value) {\n this.isSaving = value;\n },\n setLocking(value) {\n this.isLocking = value;\n },\n /**\n * Bytes of the form with the values typed in the viewer kept and every\n * field flagged read-only, ready to be stored as a new version.\n *\n * @returns {Promise<Uint8Array|null>} null when the document is not loaded\n */\n async getLockedFormBytes() {\n const bytes = await this.getFormBytes();\n if (!bytes) {\n return null;\n }\n // No field left to flag: keep the filled bytes, so saving still records\n // what the user typed.\n const { bytes: locked } = await lockFormFields(bytes);\n return locked ?? bytes;\n },\n onAnnotation(value) {\n if (!value) {\n return;\n }\n switch (value.type) {\n case \"link\":\n this.followLink(value.data.url);\n break;\n case \"internal-link\":\n this.goToPage(value.data.referencedPage);\n break;\n case \"form-text\":\n this.formFieldValues[value.data.fieldName] = value.data.value;\n if (!this.isFormDirty) {\n this.isFormDirty = true;\n this.$emit(\"formDirtyChange\", true);\n }\n break;\n case \"form-checkbox\":\n this.formFieldValues[value.data.fieldName] = value.data.checked;\n if (!this.isFormDirty) {\n this.isFormDirty = true;\n this.$emit(\"formDirtyChange\", true);\n }\n break;\n case \"form-select\":\n this.formFieldValues[value.data.fieldName] = value.data.value;\n if (!this.isFormDirty) {\n this.isFormDirty = true;\n this.$emit(\"formDirtyChange\", true);\n }\n break;\n case \"form-radio\":\n this.formFieldValues[value.data.fieldName] = value.data.value;\n if (!this.isFormDirty) {\n this.isFormDirty = true;\n this.$emit(\"formDirtyChange\", true);\n }\n break;\n case \"form-button\":\n default:\n console.log(\"Annotation Event \", value);\n }\n },\n followLink(url) {\n const link = resolvePdfLink(url, {\n origin: window.location.origin,\n base: this.$router?.options.history.base,\n resolve: this.$router ? (path) => this.$router.resolve(path) : null,\n });\n switch (link.type) {\n case LINK_MAILTO:\n window.location.href = link.url;\n break;\n case LINK_ROUTE:\n if (link.location.path === this.$route.path) {\n this.goToPage(link.location.query.page);\n } else {\n this.$router.push(link.location.fullPath);\n }\n break;\n default:\n window.open(link.url, \"_blank\", \"noreferrer\");\n }\n },\n goToPage(value) {\n const page = clampPage(value, this.pages);\n if (page === null) {\n return;\n }\n this.page = page;\n if (!this.isSinglePageDisplayed) {\n this.$el\n .querySelectorAll(\".pdf-page-item\")\n [page - 1]?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n }\n },\n async pageViewport(pageNumber) {\n const pdfDoc = await this.pdf.promise;\n const page = await pdfDoc.getPage(pageNumber);\n const rotation = (((this.rotation + page.rotate) % 360) + 360) % 360;\n return page.getViewport({ scale: 1, rotation });\n },\n async onPageClick(event, pageNumber) {\n if (!this.isPlacing || !this.pdf) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const canvas = event.currentTarget.querySelector(\"canvas\");\n if (!canvas) {\n return;\n }\n const rect = canvas.getBoundingClientRect();\n const viewport = await this.pageViewport(pageNumber);\n const [x, y] = viewport.convertToPdfPoint(\n ((event.clientX - rect.left) / rect.width) * viewport.width,\n ((event.clientY - rect.top) / rect.height) * viewport.height,\n );\n this.pdfDocumentStore.place({ page: pageNumber, x, y });\n },\n async computeMarkerPositions() {\n const markers = this.isOwnDocument ? this.pdfDocumentStore.markers : [];\n if (!this.pdf || markers.length === 0) {\n this.markerPositions = [];\n return;\n }\n const positions = [];\n for (const marker of markers) {\n const viewport = await this.pageViewport(marker.page);\n const [vx, vy] = viewport.convertToViewportPoint(marker.x, marker.y);\n positions.push({\n page: marker.page,\n left: (vx / viewport.width) * 100,\n top: (vy / viewport.height) * 100,\n });\n }\n this.markerPositions = positions;\n },\n markersOn(pageNumber) {\n return this.markerPositions.filter(\n (marker) => marker.page === pageNumber,\n );\n },\n publishToStore(values) {\n if (this.documentId) {\n this.pdfDocumentStore.publish(this.documentId, values);\n }\n },\n async publishDocument() {\n if (!this.documentId || !this.pdf) {\n return;\n }\n try {\n const pdfDoc = await this.pdf.promise;\n const [info, outline] = await Promise.all([\n readPdfInfo(pdfDoc),\n readPdfOutline(pdfDoc),\n ]);\n this.publishToStore({ info, outline, loaded: true });\n } catch (error) {\n console.error(\"Error reading PDF properties:\", error);\n this.publishToStore({ info: null, outline: [], loaded: true });\n }\n try {\n const pdfDoc = await this.pdf.promise;\n const comments = await readPdfComments(pdfDoc);\n this.publishToStore({ comments, commentsLoaded: true });\n } catch (error) {\n console.error(\"Error reading PDF comments:\", error);\n this.publishToStore({ comments: [], commentsLoaded: true });\n }\n },\n onHighlight(payload) {\n this.highlightPayloads.set(payload.page, payload);\n this.markActiveHighlight(payload.page === this.ownHighlight?.page);\n },\n highlightElements(payload) {\n const layer = payload.textDivs\n .find((div) => div?.isConnected)\n ?.closest(\".textLayer\");\n return layer ? [...layer.querySelectorAll(\".highlight\")] : [];\n },\n markActiveHighlight(scroll = false) {\n const { page = null, nth = null } = this.ownHighlight ?? {};\n for (const [pageNumber, payload] of this.highlightPayloads) {\n const elements = this.highlightElements(payload);\n elements.forEach((element) => element.classList.remove(\"selected\"));\n if (pageNumber !== page) {\n continue;\n }\n const range = highlightRangeOf(payload.matches, nth);\n const selected = range ? elements.slice(range.from, range.to) : [];\n selected.forEach((element) => element.classList.add(\"selected\"));\n if (scroll && selected.length > 0) {\n selected[0].scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n }\n }\n },\n async publishText() {\n const pdf = this.pdf;\n if (!this.documentId || !pdf) {\n return;\n }\n let pageTexts = [];\n try {\n pageTexts = await readPdfPageTexts(await pdf.promise);\n } catch (error) {\n console.error(\"Error reading PDF text:\", error);\n }\n if (this.pdf === pdf) {\n this.publishToStore({ pageTexts, textLoaded: true });\n }\n },\n async checkSignatures() {\n if (!this.pdf) {\n this.signatures = [];\n return;\n }\n try {\n const pdfDoc = await this.pdf.promise;\n this.signatures = await extractSignatures(await pdfDoc.getData());\n } catch (error) {\n console.error(\"Error reading signatures:\", error);\n this.signatures = [];\n }\n },\n async checkFormFields() {\n if (!this.pdf) {\n this.hasFormFields = false;\n this.hasReadOnlyFields = false;\n return;\n }\n try {\n const pdfDoc = await this.pdf.promise;\n const fields = await pdfDoc.getFieldObjects();\n this.hasFormFields = fields !== null && Object.keys(fields).length > 0;\n // pdf.js exposes the ReadOnly flag as `editable: !readOnly`, and renders\n // a read-only widget as a disabled input. A form entirely made of such\n // fields looks broken rather than protected, hence the unlock action.\n // Signature widgets carry no `editable` and are left out.\n this.hasReadOnlyFields = Object.values(fields ?? {})\n .flat()\n .some((field) => field.editable === false);\n } catch (error) {\n console.error(\"Error checking form fields:\", error);\n this.hasFormFields = false;\n this.hasReadOnlyFields = false;\n }\n },\n /**\n * Drop the ReadOnly flags of the form so its fields become fillable.\n *\n * The change stays local: the viewer is reloaded from the rewritten bytes\n * and nothing is sent to the repository. The unlocked structure reaches\n * Alfresco only if the user then saves the filled form, through the regular\n * save path.\n */\n async unlockForm() {\n if (!this.pdf || this.isUnlocking) {\n return;\n }\n this.isUnlocking = true;\n try {\n const pdfDoc = await this.pdf.promise;\n // getData() returns the document as loaded, without the values typed in\n // the viewer — which is why unlocking is barred once the form is dirty.\n const { bytes, unlockedCount } = await unlockFormFields(\n await pdfDoc.getData(),\n );\n if (!bytes) {\n this.hasReadOnlyFields = false;\n return;\n }\n this.unlockedFormBytes = bytes;\n this.loadPDF();\n this.$emit(\"formUnlocked\", unlockedCount);\n } catch (error) {\n console.error(\"Error unlocking PDF form fields:\", error);\n this.$emit(\"formUnlockError\", error);\n } finally {\n this.isUnlocking = false;\n }\n },\n cancelForm() {\n this.loadPDF();\n this.resetFormDirty();\n },\n async showFormFieldsInfo() {\n if (!this.pdf) {\n return;\n }\n try {\n const pdfDoc = await this.pdf.promise;\n const fieldObjects = await pdfDoc.getFieldObjects();\n if (!fieldObjects) {\n this.formFieldsData = [];\n } else {\n const data = [];\n for (const [name, fields] of Object.entries(fieldObjects)) {\n for (const field of fields) {\n const trackedValue = this.formFieldValues[name];\n data.push({\n name: name,\n type: field.type,\n value:\n trackedValue !== undefined\n ? trackedValue\n : (field.value ?? \"\"),\n });\n }\n }\n this.formFieldsData = data;\n }\n this.showFormFieldsDialog = true;\n } catch (error) {\n console.error(\"Error getting form fields info:\", error);\n }\n },\n },\n};\n</script>\n<style lang=\"css\" scoped>\n.pdf-component-root {\n flex-grow: 1;\n overflow: visible;\n}\n\n.pdf-toolbar {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 0.25rem;\n}\n\n.pdf-toolbar--small {\n padding-right: 1.5rem;\n}\n\n.pdf-toolbar-group {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n margin: 0.5rem;\n}\n\n.pdf-toolbar-section {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.pdf-toolbar-btn {\n font-size: 1.25rem;\n padding: 0.25rem;\n}\n\n.pdf-page-indicator {\n display: flex;\n align-items: center;\n margin: 0 0.5rem;\n gap: 0.25rem;\n}\n\n.pdfActionDivider {\n margin: 0 0.5rem !important;\n}\n\n.pdf-header {\n display: flex;\n}\n\n.pdf-title-container {\n display: flex;\n margin: 0 auto;\n gap: 0.75rem;\n margin-bottom: 0.75rem;\n}\n\n.pdf-version-tag {\n margin: 0 auto;\n font-size: 1.25rem;\n}\n\n.pdf-page-frame {\n position: relative;\n display: inline-block;\n}\n\n.pdf-page-frame--placing,\n.pdf-page-frame--placing :deep(*) {\n cursor: crosshair;\n}\n\n.pdf-comment-marker {\n position: absolute;\n font-size: 1.25rem;\n color: #e6a700;\n transform: translate(0, -15%);\n pointer-events: none;\n text-shadow: 0 0 2px rgba(0, 0, 0, 0.5);\n}\n\n.pdf-single-page {\n display: flex;\n justify-content: center;\n}\n\n.pdf-canvas {\n overflow-y: hidden;\n}\n\n.pdf-all-pages {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 1rem;\n}\n\n.pdf-page-item {\n display: flex;\n flex-direction: column;\n}\n\n.pdf-page-number {\n display: flex;\n justify-content: center;\n padding: 1rem;\n}\n\n.pageInputNumber {\n width: 4rem;\n}\n\n/* pdf.js points its annotation icons at a relative path, which resolves to\n nothing here, so the built-in image never loads. Draw a Remixicon glyph\n instead, in line with the icon set used across the interface. */\n:deep(.annotationLayer .textAnnotation) {\n display: flex;\n align-items: center;\n justify-content: center;\n /* Lets the glyph follow the annotation size, which varies with the zoom */\n container-type: size;\n}\n:deep(.annotationLayer .textAnnotation img) {\n display: none;\n}\n:deep(.annotationLayer .textAnnotation)::before {\n /* ri-chat-3-fill */\n content: \"\";\n font-family: remixicon;\n /* Fallback for browsers without container query units */\n font-size: 1rem;\n font-size: 100cqh;\n line-height: 1;\n color: #f5a623;\n}\n:deep(.textLayer .highlight) {\n --highlight-bg-color: rgb(250 204 21 / 0.4);\n --highlight-selected-bg-color: rgb(249 115 22 / 0.55);\n}\n</style>\n"],"names":["setFormFieldsReadOnly","pdfBytes","readOnly","doc","PDFDocument","fields","field","unlockFormFields","bytes","count","lockFormFields","OID_COMMON_NAME","OID_ORGANIZATION","OID_SIGNATURE_TIMESTAMP","toHex","view","byte","relativeName","name","oid","entry","item","readSignedData","value","contents","PDFName","PDFHexString","PDFString","decoded","fromBER","contentInfo","ContentInfo","SignedData","signerCertificate","signedData","certificates","certificate","serial","wanted","readTimestampDate","attribute","content","TSTInfo","describeCertificate","readText","dict","key","STANDARD_BY_SUB_FILTER","readDate","collectFields","collected","index","PDFDict","kids","PDFArray","readByteRange","range","describeSignature","byteRange","coveredUntil","subFilter","coverageOf","signature","lastCovered","totalLength","qualifyCoverage","signatures","extractSignatures","document","error","LINK_MAILTO","LINK_ROUTE","LINK_EXTERNAL","resolvePdfLink","url","origin","base","resolve","target","normalizedBase","pathname","isUnderBase","appPath","location","clampPage","pageCount","page","_sfc_main","VuePDF","PdfSignaturePanel","Button","PdfViewerSkeleton","Divider","Tag","InputNumber","Dialog","DataTable","Column","Tooltip","selectionStore","useSelectionStore","newValue","wantedPage","usePdfDocumentStore","request","requested","menuDiff","widthScale","heightScale","usePDF","buildPdfSource","pageValue","pageNumber","newQuery","pdfDoc","locked","link","path","rotation","event","canvas","rect","viewport","x","y","markers","positions","marker","vx","vy","values","info","outline","readPdfInfo","readPdfOutline","comments","readPdfComments","payload","layer","div","scroll","nth","elements","element","highlightRangeOf","selected","pdf","pageTexts","readPdfPageTexts","unlockedCount","fieldObjects","data","trackedValue","_hoisted_3","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_22","_createElementBlock","$options","$data","_createBlock","_component_PdfViewerSkeleton","_hoisted_1","_createElementVNode","_normalizeClass","_openBlock","_hoisted_2","_createVNode","_component_PrimeButton","_ctx","_component_PrimeInputNumber","$event","_createTextVNode","_toDisplayString","_component_PrimeDivider","_hoisted_4","_cache","$props","_Fragment","_renderSlot","_hoisted_17","_hoisted_18","_component_PrimeTag","_hoisted_19","_component_VuePDF","_hoisted_20","_renderList","pageItem","_component_PrimeDialog","_component_PrimeDataTable","_component_PrimeColumn","_component_PdfSignaturePanel"],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { PDFName as g, PDFString as d, PDFHexString as T, PDFDict as h, PDFRef as u } from "pdf-lib";
|
|
2
|
+
const N = [1, 0.92, 0.23], b = 4, S = ({
|
|
3
|
+
doc: t,
|
|
4
|
+
page: e,
|
|
5
|
+
rect: o,
|
|
6
|
+
text: s,
|
|
7
|
+
title: r,
|
|
8
|
+
creationDate: i,
|
|
9
|
+
modificationDate: c,
|
|
10
|
+
inReplyTo: n
|
|
11
|
+
}) => {
|
|
12
|
+
const f = String(s ?? "");
|
|
13
|
+
if (!f.trim())
|
|
14
|
+
return null;
|
|
15
|
+
const a = d.fromDate(/* @__PURE__ */ new Date()), m = t.context.obj({
|
|
16
|
+
Type: "Annot",
|
|
17
|
+
Subtype: "Text",
|
|
18
|
+
// Icon used by the viewer for this note
|
|
19
|
+
Name: "Comment",
|
|
20
|
+
Rect: [o.x, o.y, o.x + o.size, o.y + o.size],
|
|
21
|
+
// fromText encodes as UTF-16BE: a plain string would break accents
|
|
22
|
+
Contents: T.fromText(f),
|
|
23
|
+
T: T.fromText(String(r ?? "")),
|
|
24
|
+
C: N,
|
|
25
|
+
F: b,
|
|
26
|
+
CreationDate: i ? d.of(i) : a,
|
|
27
|
+
M: c ? d.of(c) : a
|
|
28
|
+
});
|
|
29
|
+
n && m.set(g.of("IRT"), n);
|
|
30
|
+
const p = t.context.register(m);
|
|
31
|
+
return e.node.addAnnot(p), p;
|
|
32
|
+
}, C = (t) => typeof t?.decodeText == "function" ? t.decodeText() : "", w = (t) => t instanceof d ? t.asString() : typeof t?.decodeText == "function" ? t.decodeText() : null, y = (t) => {
|
|
33
|
+
const e = /^(\d+)R(\d*)$/.exec(String(t ?? ""));
|
|
34
|
+
return e ? u.of(Number(e[1]), Number(e[2] || 0)) : null;
|
|
35
|
+
}, k = (t) => {
|
|
36
|
+
const e = t.node.Annots();
|
|
37
|
+
if (!e)
|
|
38
|
+
return [];
|
|
39
|
+
const o = [];
|
|
40
|
+
for (let s = 0; s < e.size(); s++) {
|
|
41
|
+
const r = e.lookup(s);
|
|
42
|
+
if (r?.get(g.of("Subtype")) !== g.of("Text"))
|
|
43
|
+
continue;
|
|
44
|
+
const i = r.get(g.of("Rect"))?.asRectangle();
|
|
45
|
+
if (!i)
|
|
46
|
+
continue;
|
|
47
|
+
const c = r.get(g.of("IRT"));
|
|
48
|
+
o.push({
|
|
49
|
+
x: i.x,
|
|
50
|
+
y: i.y,
|
|
51
|
+
size: Math.max(i.width, i.height),
|
|
52
|
+
text: C(r.get(g.of("Contents"))),
|
|
53
|
+
author: C(r.get(g.of("T"))),
|
|
54
|
+
creationDate: w(r.get(g.of("CreationDate"))),
|
|
55
|
+
modificationDate: w(r.get(g.of("M"))),
|
|
56
|
+
ref: e.get(s) instanceof u ? e.get(s) : null,
|
|
57
|
+
inReplyTo: c instanceof u ? c : null
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return o;
|
|
61
|
+
}, E = (t) => {
|
|
62
|
+
const e = t.node.Annots();
|
|
63
|
+
if (e)
|
|
64
|
+
for (let o = e.size() - 1; o >= 0; o--)
|
|
65
|
+
e.lookup(o)?.get(g.of("Subtype")) === g.of("Text") && e.remove(o);
|
|
66
|
+
};
|
|
67
|
+
function M(t) {
|
|
68
|
+
return t.getPages().map((e) => {
|
|
69
|
+
const o = e.node.Annots(), s = [];
|
|
70
|
+
for (let r = 0; r < (o?.size() ?? 0); r++) {
|
|
71
|
+
const i = o.get(r);
|
|
72
|
+
i instanceof u && s.push(i);
|
|
73
|
+
}
|
|
74
|
+
return { page: e, annots: o, refs: s };
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function R(t, e) {
|
|
78
|
+
const o = e ? t.context.lookupMaybe(e, h) : void 0;
|
|
79
|
+
if (!o)
|
|
80
|
+
throw new Error(`No annotation ${e}`);
|
|
81
|
+
return o;
|
|
82
|
+
}
|
|
83
|
+
const A = (t, e, o) => {
|
|
84
|
+
const s = R(t, y(e));
|
|
85
|
+
s.set(g.of("Contents"), T.fromText(String(o))), s.set(g.of("M"), d.fromDate(/* @__PURE__ */ new Date()));
|
|
86
|
+
}, D = (t, e) => {
|
|
87
|
+
const o = y(e);
|
|
88
|
+
R(t, o);
|
|
89
|
+
const s = M(t), r = /* @__PURE__ */ new Map();
|
|
90
|
+
for (const { refs: n } of s)
|
|
91
|
+
for (const f of n) {
|
|
92
|
+
const a = t.context.lookupMaybe(f, h)?.get(g.of("IRT"));
|
|
93
|
+
a instanceof u && r.set(f.toString(), a.toString());
|
|
94
|
+
}
|
|
95
|
+
const i = (n) => {
|
|
96
|
+
const f = /* @__PURE__ */ new Set();
|
|
97
|
+
let a = n.toString();
|
|
98
|
+
for (; a && !f.has(a); ) {
|
|
99
|
+
if (a === o.toString())
|
|
100
|
+
return !0;
|
|
101
|
+
f.add(a), a = r.get(a);
|
|
102
|
+
}
|
|
103
|
+
return !1;
|
|
104
|
+
}, c = /* @__PURE__ */ new Set();
|
|
105
|
+
for (const { refs: n } of s)
|
|
106
|
+
for (const f of n)
|
|
107
|
+
if (i(f)) {
|
|
108
|
+
c.add(f.toString());
|
|
109
|
+
const a = t.context.lookupMaybe(f, h)?.get(g.of("Popup"));
|
|
110
|
+
a instanceof u && c.add(a.toString());
|
|
111
|
+
}
|
|
112
|
+
for (const { annots: n, refs: f } of s)
|
|
113
|
+
for (let a = f.length - 1; a >= 0; a--)
|
|
114
|
+
c.has(f[a].toString()) && n.remove(a);
|
|
115
|
+
}, F = (t, e, { text: o, author: s }) => {
|
|
116
|
+
const r = y(e), i = R(t, r), c = M(t).find(
|
|
117
|
+
({ refs: f }) => f.some((a) => a.toString() === r.toString())
|
|
118
|
+
);
|
|
119
|
+
if (!c)
|
|
120
|
+
throw new Error(`Annotation ${e} is on no page`);
|
|
121
|
+
const n = i.get(g.of("Rect"))?.asRectangle();
|
|
122
|
+
return S({
|
|
123
|
+
doc: t,
|
|
124
|
+
page: c.page,
|
|
125
|
+
rect: {
|
|
126
|
+
x: n?.x ?? 0,
|
|
127
|
+
y: n?.y ?? 0,
|
|
128
|
+
size: Math.max(14, Math.min(n?.width ?? 14, n?.height ?? 14))
|
|
129
|
+
},
|
|
130
|
+
text: o,
|
|
131
|
+
title: s,
|
|
132
|
+
inReplyTo: r
|
|
133
|
+
});
|
|
134
|
+
}, l = 24, x = 12, I = (t, { page: e, text: o, author: s, x: r, y: i }, c = 0) => {
|
|
135
|
+
const n = t.getPage(e - 1);
|
|
136
|
+
if (Number.isFinite(r) && Number.isFinite(i))
|
|
137
|
+
return S({
|
|
138
|
+
doc: t,
|
|
139
|
+
page: n,
|
|
140
|
+
rect: { x: r, y: i - l, size: l },
|
|
141
|
+
text: o,
|
|
142
|
+
title: s
|
|
143
|
+
});
|
|
144
|
+
const { width: f, height: a } = n.getSize(), m = l + x / 2, p = Math.max(
|
|
145
|
+
1,
|
|
146
|
+
Math.floor((f - 2 * x) / m)
|
|
147
|
+
);
|
|
148
|
+
return S({
|
|
149
|
+
doc: t,
|
|
150
|
+
page: n,
|
|
151
|
+
rect: {
|
|
152
|
+
x: x + c % p * m,
|
|
153
|
+
y: a - x - l - Math.floor(c / p) * m,
|
|
154
|
+
size: l
|
|
155
|
+
},
|
|
156
|
+
text: o,
|
|
157
|
+
title: s
|
|
158
|
+
});
|
|
159
|
+
}, O = (t, { updates: e = {}, additions: o = [], replies: s = [], deletes: r = [] }) => {
|
|
160
|
+
const i = new Set(r);
|
|
161
|
+
for (const [n, f] of Object.entries(e))
|
|
162
|
+
i.has(n) || A(t, n, f);
|
|
163
|
+
const c = /* @__PURE__ */ new Map();
|
|
164
|
+
for (const n of o) {
|
|
165
|
+
const f = c.get(n.page) ?? 0;
|
|
166
|
+
I(t, n, f), Number.isFinite(n.x) || c.set(n.page, f + 1);
|
|
167
|
+
}
|
|
168
|
+
for (const n of s)
|
|
169
|
+
i.has(n.parentId) || F(t, n.parentId, n);
|
|
170
|
+
for (const n of i)
|
|
171
|
+
D(t, n);
|
|
172
|
+
}, _ = (t, e, o) => {
|
|
173
|
+
const s = new Set(
|
|
174
|
+
M(t).flatMap(({ refs: r }) => r.map(String))
|
|
175
|
+
);
|
|
176
|
+
for (const { ref: r, inReplyTo: i } of e) {
|
|
177
|
+
const c = t.context.lookupMaybe(r, h);
|
|
178
|
+
if (!c)
|
|
179
|
+
continue;
|
|
180
|
+
const n = o.get(i) ?? (s.has(i) ? P(i) : null);
|
|
181
|
+
n ? c.set(g.of("IRT"), n) : c.delete(g.of("IRT"));
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
function P(t) {
|
|
185
|
+
const e = /^(\d+) (\d+) R$/.exec(t);
|
|
186
|
+
return e ? u.of(Number(e[1]), Number(e[2])) : null;
|
|
187
|
+
}
|
|
188
|
+
export {
|
|
189
|
+
S as addCommentAnnotation,
|
|
190
|
+
I as addPageComment,
|
|
191
|
+
O as applyCommentChanges,
|
|
192
|
+
D as deleteCommentThread,
|
|
193
|
+
k as readCommentAnnotations,
|
|
194
|
+
y as refFromAnnotationId,
|
|
195
|
+
_ as relinkReplies,
|
|
196
|
+
E as removeCommentAnnotations,
|
|
197
|
+
F as replyToComment,
|
|
198
|
+
A as updateCommentText
|
|
199
|
+
};
|
|
200
|
+
//# sourceMappingURL=PdfCommentService-D5m9OkWV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PdfCommentService-D5m9OkWV.js","sources":["../src/services/PdfCommentService.js"],"sourcesContent":["/*\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n */\nimport { PDFDict, PDFHexString, PDFName, PDFRef, PDFString } from \"pdf-lib\";\n\n/** Yellow of the note icon, as PDF colour components. */\nconst COMMENT_COLOR = [1, 0.92, 0.23];\n\n/** Annotation flag 4: print the annotation along with the page. */\nconst FLAG_PRINT = 4;\n\n/**\n * @typedef {Object} CommentAnchor\n * @property {number} x left edge, in PDF coordinates\n * @property {number} y bottom edge, in PDF coordinates\n * @property {number} size side of the square icon, in points\n */\n\n/**\n * Attach a comment to a page as a real PDF annotation.\n *\n * A comment belongs beside the page, not inside it: drawing it into the\n * content stream would print it over the document and merge it with the\n * content for good. As an annotation it stays a note a reader can open, and\n * the page itself is left untouched.\n *\n * @param {Object} params\n * @param {import(\"pdf-lib\").PDFDocument} params.doc\n * @param {import(\"pdf-lib\").PDFPage} params.page page to annotate\n * @param {CommentAnchor} params.rect where the note icon sits\n * @param {string} params.text content of the note\n * @param {string} params.title author shown by the viewer\n * @param {string} [params.creationDate] PDF date to keep, now by default\n * @param {string} [params.modificationDate] PDF date to keep, now by default\n * @param {import(\"pdf-lib\").PDFRef} [params.inReplyTo] comment it answers\n * @returns {import(\"pdf-lib\").PDFRef|null} the new annotation\n */\nexport const addCommentAnnotation = ({\n doc,\n page,\n rect,\n text,\n title,\n creationDate,\n modificationDate,\n inReplyTo,\n}) => {\n const content = String(text ?? \"\");\n if (!content.trim()) {\n return null;\n }\n\n const now = PDFString.fromDate(new Date());\n const annotation = doc.context.obj({\n Type: \"Annot\",\n Subtype: \"Text\",\n // Icon used by the viewer for this note\n Name: \"Comment\",\n Rect: [rect.x, rect.y, rect.x + rect.size, rect.y + rect.size],\n // fromText encodes as UTF-16BE: a plain string would break accents\n Contents: PDFHexString.fromText(content),\n T: PDFHexString.fromText(String(title ?? \"\")),\n C: COMMENT_COLOR,\n F: FLAG_PRINT,\n CreationDate: creationDate ? PDFString.of(creationDate) : now,\n M: modificationDate ? PDFString.of(modificationDate) : now,\n });\n if (inReplyTo) {\n annotation.set(PDFName.of(\"IRT\"), inReplyTo);\n }\n\n const ref = doc.context.register(annotation);\n page.node.addAnnot(ref);\n return ref;\n};\n\nconst decodeText = (value) =>\n typeof value?.decodeText === \"function\" ? value.decodeText() : \"\";\n\nconst rawDate = (value) => {\n if (value instanceof PDFString) {\n return value.asString();\n }\n return typeof value?.decodeText === \"function\" ? value.decodeText() : null;\n};\n\n/**\n * @param {string} id a pdf.js annotation id (`12R`, or `12R3` with a\n * generation)\n * @returns {import(\"pdf-lib\").PDFRef|null} the matching reference\n */\nexport const refFromAnnotationId = (id) => {\n const match = /^(\\d+)R(\\d*)$/.exec(String(id ?? \"\"));\n if (!match) {\n return null;\n }\n return PDFRef.of(Number(match[1]), Number(match[2] || 0));\n};\n\n/**\n * List the comments already carried by a page.\n *\n * The editing preview only knows about the overlay being built, so without\n * this the comments merged into the document become invisible: those just\n * applied, and those a document arrives with.\n *\n * @param {import(\"pdf-lib\").PDFPage} page\n * @returns {{x: number, y: number, size: number, text: string}[]} comments,\n * positioned in PDF coordinates\n */\nexport const readCommentAnnotations = (page) => {\n const annots = page.node.Annots();\n if (!annots) {\n return [];\n }\n\n const comments = [];\n for (let index = 0; index < annots.size(); index++) {\n const annot = annots.lookup(index);\n if (annot?.get(PDFName.of(\"Subtype\")) !== PDFName.of(\"Text\")) {\n continue;\n }\n const rect = annot.get(PDFName.of(\"Rect\"))?.asRectangle();\n if (!rect) {\n continue;\n }\n const irt = annot.get(PDFName.of(\"IRT\"));\n comments.push({\n x: rect.x,\n y: rect.y,\n size: Math.max(rect.width, rect.height),\n text: decodeText(annot.get(PDFName.of(\"Contents\"))),\n author: decodeText(annot.get(PDFName.of(\"T\"))),\n creationDate: rawDate(annot.get(PDFName.of(\"CreationDate\"))),\n modificationDate: rawDate(annot.get(PDFName.of(\"M\"))),\n ref: annots.get(index) instanceof PDFRef ? annots.get(index) : null,\n inReplyTo: irt instanceof PDFRef ? irt : null,\n });\n }\n return comments;\n};\n\n/**\n * Drop every comment from a page, leaving its other annotations in place.\n *\n * Comments are rewritten from scratch on every apply, so that moving,\n * editing or deleting one in the editor is reflected in the document.\n *\n * @param {import(\"pdf-lib\").PDFPage} page\n */\nexport const removeCommentAnnotations = (page) => {\n const annots = page.node.Annots();\n if (!annots) {\n return;\n }\n\n // Walk backwards: removing shifts every later index\n for (let index = annots.size() - 1; index >= 0; index--) {\n if (\n annots.lookup(index)?.get(PDFName.of(\"Subtype\")) === PDFName.of(\"Text\")\n ) {\n annots.remove(index);\n }\n }\n};\n\nfunction annotationsByPage(doc) {\n return doc.getPages().map((page) => {\n const annots = page.node.Annots();\n const refs = [];\n for (let index = 0; index < (annots?.size() ?? 0); index++) {\n const ref = annots.get(index);\n if (ref instanceof PDFRef) {\n refs.push(ref);\n }\n }\n return { page, annots, refs };\n });\n}\n\nfunction lookupAnnotation(doc, ref) {\n const annot = ref ? doc.context.lookupMaybe(ref, PDFDict) : undefined;\n if (!annot) {\n throw new Error(`No annotation ${ref}`);\n }\n return annot;\n}\n\n/**\n * Replace the text of a comment and stamp its modification date.\n *\n * @param {import(\"pdf-lib\").PDFDocument} doc\n * @param {string} id pdf.js id of the annotation\n * @param {string} text new content\n */\nexport const updateCommentText = (doc, id, text) => {\n const annot = lookupAnnotation(doc, refFromAnnotationId(id));\n annot.set(PDFName.of(\"Contents\"), PDFHexString.fromText(String(text)));\n annot.set(PDFName.of(\"M\"), PDFString.fromDate(new Date()));\n};\n\n/**\n * Remove a comment with every reply of its thread and their popups.\n *\n * @param {import(\"pdf-lib\").PDFDocument} doc\n * @param {string} id pdf.js id of the annotation\n */\nexport const deleteCommentThread = (doc, id) => {\n const target = refFromAnnotationId(id);\n lookupAnnotation(doc, target);\n const pages = annotationsByPage(doc);\n const parentOf = new Map();\n for (const { refs } of pages) {\n for (const ref of refs) {\n const irt = doc.context.lookupMaybe(ref, PDFDict)?.get(PDFName.of(\"IRT\"));\n if (irt instanceof PDFRef) {\n parentOf.set(ref.toString(), irt.toString());\n }\n }\n }\n const inThread = (ref) => {\n const seen = new Set();\n let current = ref.toString();\n while (current && !seen.has(current)) {\n if (current === target.toString()) {\n return true;\n }\n seen.add(current);\n current = parentOf.get(current);\n }\n return false;\n };\n const removed = new Set();\n for (const { refs } of pages) {\n for (const ref of refs) {\n if (inThread(ref)) {\n removed.add(ref.toString());\n const popup = doc.context\n .lookupMaybe(ref, PDFDict)\n ?.get(PDFName.of(\"Popup\"));\n if (popup instanceof PDFRef) {\n removed.add(popup.toString());\n }\n }\n }\n }\n for (const { annots, refs } of pages) {\n for (let index = refs.length - 1; index >= 0; index--) {\n if (removed.has(refs[index].toString())) {\n annots.remove(index);\n }\n }\n }\n};\n\n/**\n * Answer a comment with a note placed on its icon.\n *\n * @param {import(\"pdf-lib\").PDFDocument} doc\n * @param {string} id pdf.js id of the annotation answered\n * @param {{text: string, author: string}} reply\n * @returns {import(\"pdf-lib\").PDFRef|null} the reply\n */\nexport const replyToComment = (doc, id, { text, author }) => {\n const parentRef = refFromAnnotationId(id);\n const parent = lookupAnnotation(doc, parentRef);\n const holder = annotationsByPage(doc).find(({ refs }) =>\n refs.some((ref) => ref.toString() === parentRef.toString()),\n );\n if (!holder) {\n throw new Error(`Annotation ${id} is on no page`);\n }\n const rect = parent.get(PDFName.of(\"Rect\"))?.asRectangle();\n return addCommentAnnotation({\n doc,\n page: holder.page,\n rect: {\n x: rect?.x ?? 0,\n y: rect?.y ?? 0,\n size: Math.max(14, Math.min(rect?.width ?? 14, rect?.height ?? 14)),\n },\n text,\n title: author,\n inReplyTo: parentRef,\n });\n};\n\nconst NEW_COMMENT_SIZE = 24;\nconst NEW_COMMENT_MARGIN = 12;\n\n/**\n * Add a comment to a page: its icon hangs from the point given, in PDF\n * coordinates, or sits in the top margin without one. Comments added to the\n * same page in one batch without a point are placed side by side.\n *\n * @param {import(\"pdf-lib\").PDFDocument} doc\n * @param {{page: number, text: string, author: string, x?: number,\n * y?: number}} comment 1-based page, and the point clicked\n * @param {number} [slot] rank of the comment among those added to the page\n * @returns {import(\"pdf-lib\").PDFRef|null} the new annotation\n */\nexport const addPageComment = (doc, { page, text, author, x, y }, slot = 0) => {\n const target = doc.getPage(page - 1);\n if (Number.isFinite(x) && Number.isFinite(y)) {\n return addCommentAnnotation({\n doc,\n page: target,\n rect: { x, y: y - NEW_COMMENT_SIZE, size: NEW_COMMENT_SIZE },\n text,\n title: author,\n });\n }\n const { width, height } = target.getSize();\n const step = NEW_COMMENT_SIZE + NEW_COMMENT_MARGIN / 2;\n const columns = Math.max(\n 1,\n Math.floor((width - 2 * NEW_COMMENT_MARGIN) / step),\n );\n return addCommentAnnotation({\n doc,\n page: target,\n rect: {\n x: NEW_COMMENT_MARGIN + (slot % columns) * step,\n y:\n height -\n NEW_COMMENT_MARGIN -\n NEW_COMMENT_SIZE -\n Math.floor(slot / columns) * step,\n size: NEW_COMMENT_SIZE,\n },\n text,\n title: author,\n });\n};\n\n/**\n * Apply a batch of comment changes to a document: text updates, new\n * comments, replies, then thread deletions. A reply to a comment deleted in\n * the same batch is dropped.\n *\n * @param {import(\"pdf-lib\").PDFDocument} doc\n * @param {{updates?: Object<string, string>, additions?: Array<{page:\n * number, text: string, author: string}>, replies?: Array<{parentId:\n * string, text: string, author: string}>, deletes?: string[]}} changes\n * texts by annotation id, new comments by 1-based page, replies, and ids\n * of the threads to delete\n */\nexport const applyCommentChanges = (\n doc,\n { updates = {}, additions = [], replies = [], deletes = [] },\n) => {\n const deleted = new Set(deletes);\n for (const [id, text] of Object.entries(updates)) {\n if (!deleted.has(id)) {\n updateCommentText(doc, id, text);\n }\n }\n const slots = new Map();\n for (const addition of additions) {\n const slot = slots.get(addition.page) ?? 0;\n addPageComment(doc, addition, slot);\n if (!Number.isFinite(addition.x)) {\n slots.set(addition.page, slot + 1);\n }\n }\n for (const reply of replies) {\n if (!deleted.has(reply.parentId)) {\n replyToComment(doc, reply.parentId, reply);\n }\n }\n for (const id of deleted) {\n deleteCommentThread(doc, id);\n }\n};\n\n/**\n * Point the replies rewritten by the page editor at their parent again: at\n * its new reference when the parent was rewritten too, at its old one when\n * it still stands on a page, nowhere when it was deleted.\n *\n * @param {import(\"pdf-lib\").PDFDocument} doc\n * @param {Array<{ref: import(\"pdf-lib\").PDFRef, inReplyTo: string}>} links\n * each rewritten reply and the reference (`12 0 R`) it answered\n * @param {Map<string, import(\"pdf-lib\").PDFRef>} rewritten new reference of\n * each rewritten comment, by its old one\n */\nexport const relinkReplies = (doc, links, rewritten) => {\n const standing = new Set(\n annotationsByPage(doc).flatMap(({ refs }) => refs.map(String)),\n );\n for (const { ref, inReplyTo } of links) {\n const reply = doc.context.lookupMaybe(ref, PDFDict);\n if (!reply) {\n continue;\n }\n const target =\n rewritten.get(inReplyTo) ??\n (standing.has(inReplyTo) ? parseRef(inReplyTo) : null);\n if (target) {\n reply.set(PDFName.of(\"IRT\"), target);\n } else {\n reply.delete(PDFName.of(\"IRT\"));\n }\n }\n};\n\nfunction parseRef(value) {\n const match = /^(\\d+) (\\d+) R$/.exec(value);\n return match ? PDFRef.of(Number(match[1]), Number(match[2])) : null;\n}\n"],"names":["COMMENT_COLOR","FLAG_PRINT","addCommentAnnotation","doc","page","rect","text","title","creationDate","modificationDate","inReplyTo","content","now","PDFString","annotation","PDFHexString","PDFName","ref","decodeText","value","rawDate","refFromAnnotationId","id","match","PDFRef","readCommentAnnotations","annots","comments","index","annot","irt","removeCommentAnnotations","annotationsByPage","refs","lookupAnnotation","PDFDict","updateCommentText","deleteCommentThread","target","pages","parentOf","inThread","seen","current","removed","popup","replyToComment","author","parentRef","parent","holder","NEW_COMMENT_SIZE","NEW_COMMENT_MARGIN","addPageComment","x","y","slot","width","height","step","columns","applyCommentChanges","updates","additions","replies","deletes","deleted","slots","addition","reply","relinkReplies","links","rewritten","standing","parseRef"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { computed as e, unref as u } from "vue";
|
|
2
|
+
import { m as f } from "./index-DJEkd3cy.js";
|
|
3
|
+
function s(o) {
|
|
4
|
+
const n = f().BASE_URL || "/", t = typeof o == "string" ? { url: o } : { ...o };
|
|
5
|
+
return t.wasmUrl = `${n}pdfjs/wasm/`, t;
|
|
6
|
+
}
|
|
7
|
+
function c(o) {
|
|
8
|
+
return e(() => {
|
|
9
|
+
const r = u(o);
|
|
10
|
+
return r ? s(r) : null;
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
c as a,
|
|
15
|
+
s as b
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=PdfConfigService-9q_fMJP1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PdfConfigService-9q_fMJP1.js","sources":["../src/services/PdfConfigService.js"],"sourcesContent":["/*\n Copyright (C) 2022 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n */\nimport { computed, unref } from \"vue\";\nimport { useConfigStore } from \"@/stores/config.js\";\n\n/**\n * Build the parameters passed to pdf.js getDocument (via usePDF).\n *\n * Since pdf.js 5.x, JPEG2000 (and JBIG2 / ICC color) images are decoded by\n * WASM modules (openjpeg.wasm, qcms_bg.wasm) that pdf.js fetches at runtime\n * from `wasmUrl`. When wasmUrl is left undefined it defaults to null, so the\n * worker tries to fetch \"nullopenjpeg.wasm\", fails, and JPEG2000 images are\n * not rendered (the rest of the page still renders). We therefore point\n * wasmUrl at \"<BASE_URL>pdfjs/wasm/\", where vite-plugin-static-copy serves the\n * pdfjs-dist/wasm/* files in the consuming app.\n *\n * BASE_URL is the consuming app's Vite base (e.g. \"/media/\"). It is read from\n * the ConfigStore at runtime because this library is consumed as a pre-built\n * bundle, so import.meta.env.BASE_URL would be frozen to the library's own\n * base instead of the app's.\n *\n * @param {string|object} src - A PDF URL or a DocumentInitParameters object.\n * @returns {object} DocumentInitParameters including wasmUrl.\n */\nexport function buildPdfSource(src) {\n const configStore = useConfigStore();\n const base = configStore.BASE_URL || \"/\";\n const params = typeof src === \"string\" ? { url: src } : { ...src };\n params.wasmUrl = `${base}pdfjs/wasm/`;\n return params;\n}\n\n/**\n * Reactive variant of buildPdfSource for callsites that pass a ref to usePDF\n * (so pdf.js reloads when the URL changes). Returns a computed that yields the\n * enriched parameters when the source has a value, or null otherwise so that\n * usePDF skips loading.\n *\n * @param {import('vue').Ref<string|object|null>} srcRef - Reactive PDF source.\n * @returns {import('vue').ComputedRef<object|null>}\n */\nexport function buildPdfSourceRef(srcRef) {\n return computed(() => {\n const value = unref(srcRef);\n return value ? buildPdfSource(value) : null;\n });\n}\n"],"names":["buildPdfSource","src","base","useConfigStore","params","buildPdfSourceRef","srcRef","computed","value","unref"],"mappings":";;AAsCO,SAASA,EAAeC,GAAK;AAElC,QAAMC,IADcC,EAAA,EACK,YAAY,KAC/BC,IAAS,OAAOH,KAAQ,WAAW,EAAE,KAAKA,EAAA,IAAQ,EAAE,GAAGA,EAAA;AAC7D,SAAAG,EAAO,UAAU,GAAGF,CAAI,eACjBE;AACT;AAWO,SAASC,EAAkBC,GAAQ;AACxC,SAAOC,EAAS,MAAM;AACpB,UAAMC,IAAQC,EAAMH,CAAM;AAC1B,WAAOE,IAAQR,EAAeQ,CAAK,IAAI;AAAA,EACzC,CAAC;AACH;"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { PDFDocument as l, PDFName as f, PDFHexString as m, PDFRawStream as u, decodePDFRawStream as p } from "pdf-lib";
|
|
2
|
+
const g = {
|
|
3
|
+
title: "Title",
|
|
4
|
+
author: "Author",
|
|
5
|
+
subject: "Subject",
|
|
6
|
+
keywords: "Keywords"
|
|
7
|
+
}, d = "http://www.w3.org/1999/02/22-rdf-syntax-ns#", w = {
|
|
8
|
+
title: { ns: "http://purl.org/dc/elements/1.1/", name: "title" },
|
|
9
|
+
author: { ns: "http://purl.org/dc/elements/1.1/", name: "creator" },
|
|
10
|
+
subject: { ns: "http://purl.org/dc/elements/1.1/", name: "description" },
|
|
11
|
+
keywords: { ns: "http://ns.adobe.com/pdf/1.3/", name: "Keywords" }
|
|
12
|
+
};
|
|
13
|
+
function y(a) {
|
|
14
|
+
const n = a.catalog.get(f.of("Metadata")), e = n ? a.context.lookup(n) : null;
|
|
15
|
+
if (!e)
|
|
16
|
+
return null;
|
|
17
|
+
const o = e instanceof u ? p(e).decode() : e.getContents();
|
|
18
|
+
return new TextDecoder("utf-8").decode(o);
|
|
19
|
+
}
|
|
20
|
+
function N(a, n) {
|
|
21
|
+
const e = Array.from(a.childNodes).find(
|
|
22
|
+
(t) => t.namespaceURI === d
|
|
23
|
+
);
|
|
24
|
+
if (!e) {
|
|
25
|
+
a.textContent = n;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const o = Array.from(e.childNodes).filter(
|
|
29
|
+
(t) => t.namespaceURI === d && t.localName === "li"
|
|
30
|
+
);
|
|
31
|
+
if (o.slice(1).forEach((t) => e.removeChild(t)), o[0])
|
|
32
|
+
o[0].textContent = n;
|
|
33
|
+
else {
|
|
34
|
+
const t = a.ownerDocument.createElementNS(d, "rdf:li");
|
|
35
|
+
t.textContent = n, e.appendChild(t);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function S(a, n) {
|
|
39
|
+
const e = new DOMParser().parseFromString(a, "application/xml");
|
|
40
|
+
if (e.getElementsByTagName("parsererror").length > 0)
|
|
41
|
+
return null;
|
|
42
|
+
for (const [o, { ns: t, name: i }] of Object.entries(w)) {
|
|
43
|
+
if (!(o in n))
|
|
44
|
+
continue;
|
|
45
|
+
const s = n[o] ?? "";
|
|
46
|
+
for (const r of Array.from(e.getElementsByTagNameNS(t, i)))
|
|
47
|
+
s === "" ? r.parentNode.removeChild(r) : N(r, s);
|
|
48
|
+
for (const r of Array.from(
|
|
49
|
+
e.getElementsByTagNameNS(d, "Description")
|
|
50
|
+
)) {
|
|
51
|
+
const c = r.getAttributeNodeNS(t, i);
|
|
52
|
+
c && (s === "" ? r.removeAttributeNode(c) : c.value = s);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return new XMLSerializer().serializeToString(e);
|
|
56
|
+
}
|
|
57
|
+
async function D(a, n) {
|
|
58
|
+
const e = await l.load(a, { updateMetadata: !1 }), o = e.getInfoDict();
|
|
59
|
+
for (const [s, r] of Object.entries(g)) {
|
|
60
|
+
if (!(s in n))
|
|
61
|
+
continue;
|
|
62
|
+
const c = (n[s] ?? "").trim();
|
|
63
|
+
c === "" ? o.delete(f.of(r)) : o.set(f.of(r), m.fromText(c));
|
|
64
|
+
}
|
|
65
|
+
e.setModificationDate(/* @__PURE__ */ new Date());
|
|
66
|
+
const t = y(e), i = t ? S(t, n) : null;
|
|
67
|
+
if (i) {
|
|
68
|
+
const s = Uint8Array.from(new TextEncoder().encode(i)), r = e.context.stream(s, {
|
|
69
|
+
Type: "Metadata",
|
|
70
|
+
Subtype: "XML"
|
|
71
|
+
});
|
|
72
|
+
e.catalog.set(f.of("Metadata"), e.context.register(r));
|
|
73
|
+
}
|
|
74
|
+
return e.save({ useObjectStreams: !1 });
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
S as updateXmp,
|
|
78
|
+
D as writePdfInfo
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=PdfInfoWriter-Bvp327Pn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PdfInfoWriter-Bvp327Pn.js","sources":["../src/services/PdfInfoWriter.js"],"sourcesContent":["/*\n Copyright (C) 2026 - Jeci SARL - https://jeci.fr\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Affero General Public License as\n published by the Free Software Foundation, either version 3 of the\n License, or (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Affero General Public License for more details.\n\n You should have received a copy of the GNU Affero General Public License\n along with this program. If not, see https://www.gnu.org/licenses/agpl-3.0.html.\n */\nimport {\n PDFDocument,\n PDFName,\n PDFHexString,\n PDFRawStream,\n decodePDFRawStream,\n} from \"pdf-lib\";\n\nconst INFO_KEYS = {\n title: \"Title\",\n author: \"Author\",\n subject: \"Subject\",\n keywords: \"Keywords\",\n};\n\nconst RDF_NS = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\";\n\nconst XMP_FIELDS = {\n title: { ns: \"http://purl.org/dc/elements/1.1/\", name: \"title\" },\n author: { ns: \"http://purl.org/dc/elements/1.1/\", name: \"creator\" },\n subject: { ns: \"http://purl.org/dc/elements/1.1/\", name: \"description\" },\n keywords: { ns: \"http://ns.adobe.com/pdf/1.3/\", name: \"Keywords\" },\n};\n\nfunction readXmp(pdfDoc) {\n const ref = pdfDoc.catalog.get(PDFName.of(\"Metadata\"));\n const stream = ref ? pdfDoc.context.lookup(ref) : null;\n if (!stream) {\n return null;\n }\n const bytes =\n stream instanceof PDFRawStream\n ? decodePDFRawStream(stream).decode()\n : stream.getContents();\n return new TextDecoder(\"utf-8\").decode(bytes);\n}\n\nfunction setXmpElement(element, value) {\n const container = Array.from(element.childNodes).find(\n (node) => node.namespaceURI === RDF_NS,\n );\n if (!container) {\n element.textContent = value;\n return;\n }\n const items = Array.from(container.childNodes).filter(\n (node) => node.namespaceURI === RDF_NS && node.localName === \"li\",\n );\n items.slice(1).forEach((item) => container.removeChild(item));\n if (items[0]) {\n items[0].textContent = value;\n } else {\n const item = element.ownerDocument.createElementNS(RDF_NS, \"rdf:li\");\n item.textContent = value;\n container.appendChild(item);\n }\n}\n\n/**\n * @param {string} xml an XMP packet\n * @param {Object} values the new value of each editable field\n * @returns {string|null} the packet with the elements already present\n * updated (or removed when emptied), null when it cannot be parsed\n */\nexport function updateXmp(xml, values) {\n const doc = new DOMParser().parseFromString(xml, \"application/xml\");\n if (doc.getElementsByTagName(\"parsererror\").length > 0) {\n return null;\n }\n for (const [field, { ns, name }] of Object.entries(XMP_FIELDS)) {\n if (!(field in values)) {\n continue;\n }\n const value = values[field] ?? \"\";\n for (const element of Array.from(doc.getElementsByTagNameNS(ns, name))) {\n if (value === \"\") {\n element.parentNode.removeChild(element);\n } else {\n setXmpElement(element, value);\n }\n }\n for (const description of Array.from(\n doc.getElementsByTagNameNS(RDF_NS, \"Description\"),\n )) {\n const attribute = description.getAttributeNodeNS(ns, name);\n if (!attribute) {\n continue;\n }\n if (value === \"\") {\n description.removeAttributeNode(attribute);\n } else {\n attribute.value = value;\n }\n }\n }\n return new XMLSerializer().serializeToString(doc);\n}\n\n/**\n * Writes the editable properties into a copy of a PDF: the information\n * dictionary, the elements of the XMP packet that already carry them, and\n * the modification date.\n *\n * @param {Uint8Array|ArrayBuffer} bytes the PDF\n * @param {Object} values the new value of each editable field; an empty\n * string removes the property\n * @returns {Promise<Uint8Array>} the updated PDF\n */\nexport async function writePdfInfo(bytes, values) {\n const pdfDoc = await PDFDocument.load(bytes, { updateMetadata: false });\n const info = pdfDoc.getInfoDict();\n for (const [field, key] of Object.entries(INFO_KEYS)) {\n if (!(field in values)) {\n continue;\n }\n const value = (values[field] ?? \"\").trim();\n if (value === \"\") {\n info.delete(PDFName.of(key));\n } else {\n info.set(PDFName.of(key), PDFHexString.fromText(value));\n }\n }\n pdfDoc.setModificationDate(new Date());\n\n const xmp = readXmp(pdfDoc);\n const updated = xmp ? updateXmp(xmp, values) : null;\n if (updated) {\n const encoded = Uint8Array.from(new TextEncoder().encode(updated));\n const stream = pdfDoc.context.stream(encoded, {\n Type: \"Metadata\",\n Subtype: \"XML\",\n });\n pdfDoc.catalog.set(PDFName.of(\"Metadata\"), pdfDoc.context.register(stream));\n }\n return pdfDoc.save({ useObjectStreams: false });\n}\n"],"names":["INFO_KEYS","RDF_NS","XMP_FIELDS","readXmp","pdfDoc","ref","PDFName","stream","bytes","PDFRawStream","decodePDFRawStream","setXmpElement","element","value","container","node","items","item","updateXmp","xml","values","doc","field","ns","name","description","attribute","writePdfInfo","PDFDocument","info","key","PDFHexString","xmp","updated","encoded"],"mappings":"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"}
|