@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.
Files changed (1038) hide show
  1. package/dist/ActivityHistory-BLsSFzfP.js +235 -0
  2. package/dist/ActivityHistory-BLsSFzfP.js.map +1 -0
  3. package/dist/AlfrescoApi.d.ts.map +1 -0
  4. package/dist/BookmarksComponent-i6mFff8y.js +44 -0
  5. package/dist/BookmarksComponent-i6mFff8y.js.map +1 -0
  6. package/dist/ChartWrapper-8nl96UQq.js +59 -0
  7. package/dist/ChartWrapper-8nl96UQq.js.map +1 -0
  8. package/dist/DisplayFileInDashboardComponent-YSKmRXrK.js +105 -0
  9. package/dist/DisplayFileInDashboardComponent-YSKmRXrK.js.map +1 -0
  10. package/dist/ExternalApps-B30MYLdt.js +90 -0
  11. package/dist/ExternalApps-B30MYLdt.js.map +1 -0
  12. package/dist/FavoriteList-9cXLdtMh.js +380 -0
  13. package/dist/FavoriteList-9cXLdtMh.js.map +1 -0
  14. package/dist/MarkdownComponent-vN01MbFM.js +55 -0
  15. package/dist/MarkdownComponent-vN01MbFM.js.map +1 -0
  16. package/dist/PDFComponent-DjEBu0cQ.js +1077 -0
  17. package/dist/PDFComponent-DjEBu0cQ.js.map +1 -0
  18. package/dist/PdfCommentService-D5m9OkWV.js +200 -0
  19. package/dist/PdfCommentService-D5m9OkWV.js.map +1 -0
  20. package/dist/PdfConfigService-9q_fMJP1.js +17 -0
  21. package/dist/PdfConfigService-9q_fMJP1.js.map +1 -0
  22. package/dist/PdfInfoWriter-Bvp327Pn.js +80 -0
  23. package/dist/PdfInfoWriter-Bvp327Pn.js.map +1 -0
  24. package/dist/PdfToolsComponent-nHHo5LtF.js +1948 -0
  25. package/dist/PdfToolsComponent-nHHo5LtF.js.map +1 -0
  26. package/dist/PlanTreePdfService-r8f9ERs2.js +76 -0
  27. package/dist/PlanTreePdfService-r8f9ERs2.js.map +1 -0
  28. package/dist/SearchInput-Dp0N7yZE.js +58 -0
  29. package/dist/SearchInput-Dp0N7yZE.js.map +1 -0
  30. package/dist/UnknownBlockType-4VLPDRkN.js +22 -0
  31. package/dist/UnknownBlockType-4VLPDRkN.js.map +1 -0
  32. package/dist/components/CodeMirrorBase.vue.d.ts +43 -0
  33. package/dist/components/CodeMirrorBase.vue.d.ts.map +1 -0
  34. package/dist/components/CodeMirrorEditor.vue.d.ts +145 -0
  35. package/dist/components/CodeMirrorEditor.vue.d.ts.map +1 -0
  36. package/dist/components/DiffViewer.vue.d.ts +37 -0
  37. package/dist/components/DiffViewer.vue.d.ts.map +1 -0
  38. package/dist/components/DiffViewerDialog.vue.d.ts +103 -0
  39. package/dist/components/DiffViewerDialog.vue.d.ts.map +1 -0
  40. package/dist/components/EditorAppearanceSettings.vue.d.ts +24 -0
  41. package/dist/components/EditorAppearanceSettings.vue.d.ts.map +1 -0
  42. package/dist/components/ErrorComponent.vue.d.ts +58 -0
  43. package/dist/components/ErrorComponent.vue.d.ts.map +1 -0
  44. package/dist/components/FolderUpload.vue.d.ts +89 -0
  45. package/dist/components/FolderUpload.vue.d.ts.map +1 -0
  46. package/dist/components/HelpKeyMessage.vue.d.ts +36 -0
  47. package/dist/components/HelpKeyMessage.vue.d.ts.map +1 -0
  48. package/dist/components/IconPickerDialog.vue.d.ts +99 -0
  49. package/dist/components/IconPickerDialog.vue.d.ts.map +1 -0
  50. package/dist/components/IndexAwaitOverlay.vue.d.ts +31 -0
  51. package/dist/components/IndexAwaitOverlay.vue.d.ts.map +1 -0
  52. package/dist/components/PristyIcon.vue.d.ts +34 -0
  53. package/dist/components/PristyIcon.vue.d.ts.map +1 -0
  54. package/dist/components/SelectionStatus.vue.d.ts +56 -0
  55. package/dist/components/SelectionStatus.vue.d.ts.map +1 -0
  56. package/dist/components/TreeExplorer.vue.d.ts +93 -0
  57. package/dist/components/TreeExplorer.vue.d.ts.map +1 -0
  58. package/dist/components/UploadStatus.vue.d.ts +106 -0
  59. package/dist/components/UploadStatus.vue.d.ts.map +1 -0
  60. package/dist/components/UploadTargetInfo.vue.d.ts +14 -0
  61. package/dist/components/UploadTargetInfo.vue.d.ts.map +1 -0
  62. package/dist/components/auth/OidcCallback.vue.d.ts +8 -0
  63. package/dist/components/auth/OidcCallback.vue.d.ts.map +1 -0
  64. package/dist/components/breadcrumb/BreadCrumbAlfresco.vue.d.ts +119 -0
  65. package/dist/components/breadcrumb/BreadCrumbAlfresco.vue.d.ts.map +1 -0
  66. package/dist/components/breadcrumb/ComplexBreadcrumb.vue.d.ts +279 -0
  67. package/dist/components/breadcrumb/ComplexBreadcrumb.vue.d.ts.map +1 -0
  68. package/dist/components/breadcrumb/EllipsisBreadcrumb.vue.d.ts +155 -0
  69. package/dist/components/breadcrumb/EllipsisBreadcrumb.vue.d.ts.map +1 -0
  70. package/dist/components/chat/ChatInput.vue.d.ts +77 -0
  71. package/dist/components/chat/ChatInput.vue.d.ts.map +1 -0
  72. package/dist/components/chat/ChatMessage.vue.d.ts +75 -0
  73. package/dist/components/chat/ChatMessage.vue.d.ts.map +1 -0
  74. package/dist/components/chat/ChatPanel.vue.d.ts +481 -0
  75. package/dist/components/chat/ChatPanel.vue.d.ts.map +1 -0
  76. package/dist/components/chat/ChatRoomList.vue.d.ts +85 -0
  77. package/dist/components/chat/ChatRoomList.vue.d.ts.map +1 -0
  78. package/dist/components/classification/AdminClassificationLauncher.vue.d.ts +19 -0
  79. package/dist/components/classification/AdminClassificationLauncher.vue.d.ts.map +1 -0
  80. package/dist/components/classification/AdminClassificationPage.vue.d.ts +827 -0
  81. package/dist/components/classification/AdminClassificationPage.vue.d.ts.map +1 -0
  82. package/dist/components/classification/AiLearningPanel.vue.d.ts +41 -0
  83. package/dist/components/classification/AiLearningPanel.vue.d.ts.map +1 -0
  84. package/dist/components/classification/AiProcessingBadge.vue.d.ts +29 -0
  85. package/dist/components/classification/AiProcessingBadge.vue.d.ts.map +1 -0
  86. package/dist/components/classification/AiSuggestionsPanel.vue.d.ts +93 -0
  87. package/dist/components/classification/AiSuggestionsPanel.vue.d.ts.map +1 -0
  88. package/dist/components/classification/ClassificationPlanCreate.vue.d.ts +28 -0
  89. package/dist/components/classification/ClassificationPlanCreate.vue.d.ts.map +1 -0
  90. package/dist/components/classification/ClassificationPlanList.vue.d.ts +74 -0
  91. package/dist/components/classification/ClassificationPlanList.vue.d.ts.map +1 -0
  92. package/dist/components/classification/DictionaryForm.vue.d.ts +66 -0
  93. package/dist/components/classification/DictionaryForm.vue.d.ts.map +1 -0
  94. package/dist/components/classification/EmplacementForm.vue.d.ts +107 -0
  95. package/dist/components/classification/EmplacementForm.vue.d.ts.map +1 -0
  96. package/dist/components/classification/FieldForm.vue.d.ts +152 -0
  97. package/dist/components/classification/FieldForm.vue.d.ts.map +1 -0
  98. package/dist/components/classification/LexiconForm.vue.d.ts +67 -0
  99. package/dist/components/classification/LexiconForm.vue.d.ts.map +1 -0
  100. package/dist/components/classification/MetadataFormFields.vue.d.ts +273 -0
  101. package/dist/components/classification/MetadataFormFields.vue.d.ts.map +1 -0
  102. package/dist/components/classification/NatureForm.vue.d.ts +153 -0
  103. package/dist/components/classification/NatureForm.vue.d.ts.map +1 -0
  104. package/dist/components/classification/NatureSelector.vue.d.ts +197 -0
  105. package/dist/components/classification/NatureSelector.vue.d.ts.map +1 -0
  106. package/dist/components/classification/PlanInformationPanel.vue.d.ts +89 -0
  107. package/dist/components/classification/PlanInformationPanel.vue.d.ts.map +1 -0
  108. package/dist/components/classification/PlanSuggestInput.vue.d.ts +84 -0
  109. package/dist/components/classification/PlanSuggestInput.vue.d.ts.map +1 -0
  110. package/dist/components/classification/PlanTreePanel.vue.d.ts +79 -0
  111. package/dist/components/classification/PlanTreePanel.vue.d.ts.map +1 -0
  112. package/dist/components/classification/UploadPlanPopup.vue.d.ts +354 -0
  113. package/dist/components/classification/UploadPlanPopup.vue.d.ts.map +1 -0
  114. package/dist/components/classification/ViewSelectorPopup.vue.d.ts +122 -0
  115. package/dist/components/classification/ViewSelectorPopup.vue.d.ts.map +1 -0
  116. package/dist/components/config/AddPairInConfigDialog.vue.d.ts +60 -0
  117. package/dist/components/config/AddPairInConfigDialog.vue.d.ts.map +1 -0
  118. package/dist/components/config/ArrayEditor.vue.d.ts +68 -0
  119. package/dist/components/config/ArrayEditor.vue.d.ts.map +1 -0
  120. package/dist/components/config/ConfigDatatable.vue.d.ts +77 -0
  121. package/dist/components/config/ConfigDatatable.vue.d.ts.map +1 -0
  122. package/dist/components/config/ConfigHealthBanner.vue.d.ts +25 -0
  123. package/dist/components/config/ConfigHealthBanner.vue.d.ts.map +1 -0
  124. package/dist/components/config/ConfigItemEditor.vue.d.ts +80 -0
  125. package/dist/components/config/ConfigItemEditor.vue.d.ts.map +1 -0
  126. package/dist/components/config/ConfigRawEditor.vue.d.ts +100 -0
  127. package/dist/components/config/ConfigRawEditor.vue.d.ts.map +1 -0
  128. package/dist/components/config/ConfigSplitView.vue.d.ts +89 -0
  129. package/dist/components/config/ConfigSplitView.vue.d.ts.map +1 -0
  130. package/dist/components/config/ConfigUpload.vue.d.ts +40 -0
  131. package/dist/components/config/ConfigUpload.vue.d.ts.map +1 -0
  132. package/dist/components/config/ListVersionConfig.vue.d.ts +130 -0
  133. package/dist/components/config/ListVersionConfig.vue.d.ts.map +1 -0
  134. package/dist/components/dashboard/DashboardAdminPage.vue.d.ts +2244 -0
  135. package/dist/components/dashboard/DashboardAdminPage.vue.d.ts.map +1 -0
  136. package/dist/components/dashboard/DashboardComponent.vue.d.ts +1498 -0
  137. package/dist/components/dashboard/DashboardComponent.vue.d.ts.map +1 -0
  138. package/dist/components/dashboard/DashboardSkeleton.vue.d.ts +17 -0
  139. package/dist/components/dashboard/DashboardSkeleton.vue.d.ts.map +1 -0
  140. package/dist/components/dashboard/editor/BlockConfigEditor.vue.d.ts +1060 -0
  141. package/dist/components/dashboard/editor/BlockConfigEditor.vue.d.ts.map +1 -0
  142. package/dist/components/dashboard/editor/DashboardEditor.vue.d.ts +2095 -0
  143. package/dist/components/dashboard/editor/DashboardEditor.vue.d.ts.map +1 -0
  144. package/dist/components/dashboard/editor/FieldLabel.vue.d.ts +55 -0
  145. package/dist/components/dashboard/editor/FieldLabel.vue.d.ts.map +1 -0
  146. package/dist/components/dashboard/editor/JsonEditorDialog.vue.d.ts +93 -0
  147. package/dist/components/dashboard/editor/JsonEditorDialog.vue.d.ts.map +1 -0
  148. package/dist/components/dashboard/editor/MarkdownEditorDialog.vue.d.ts +102 -0
  149. package/dist/components/dashboard/editor/MarkdownEditorDialog.vue.d.ts.map +1 -0
  150. package/dist/components/dashboard/editor/VersionHistoryDialog.vue.d.ts +101 -0
  151. package/dist/components/dashboard/editor/VersionHistoryDialog.vue.d.ts.map +1 -0
  152. package/dist/components/dashboard/editor/block-configs/BookmarksConfig.vue.d.ts +77 -0
  153. package/dist/components/dashboard/editor/block-configs/BookmarksConfig.vue.d.ts.map +1 -0
  154. package/dist/components/dashboard/editor/block-configs/ChartConfig.vue.d.ts +95 -0
  155. package/dist/components/dashboard/editor/block-configs/ChartConfig.vue.d.ts.map +1 -0
  156. package/dist/components/dashboard/editor/block-configs/ExternalAppsConfig.vue.d.ts +300 -0
  157. package/dist/components/dashboard/editor/block-configs/ExternalAppsConfig.vue.d.ts.map +1 -0
  158. package/dist/components/dashboard/editor/block-configs/FavoritesConfig.vue.d.ts +99 -0
  159. package/dist/components/dashboard/editor/block-configs/FavoritesConfig.vue.d.ts.map +1 -0
  160. package/dist/components/dashboard/editor/block-configs/MarkdownConfig.vue.d.ts +98 -0
  161. package/dist/components/dashboard/editor/block-configs/MarkdownConfig.vue.d.ts.map +1 -0
  162. package/dist/components/dashboard/editor/block-configs/MyActivityConfig.vue.d.ts +80 -0
  163. package/dist/components/dashboard/editor/block-configs/MyActivityConfig.vue.d.ts.map +1 -0
  164. package/dist/components/dashboard/editor/block-configs/NoConfig.vue.d.ts +11 -0
  165. package/dist/components/dashboard/editor/block-configs/NoConfig.vue.d.ts.map +1 -0
  166. package/dist/components/dashboard/editor/block-configs/PdfImageConfig.vue.d.ts +78 -0
  167. package/dist/components/dashboard/editor/block-configs/PdfImageConfig.vue.d.ts.map +1 -0
  168. package/dist/components/dashboard/editor/blockDraft.d.ts.map +1 -0
  169. package/dist/components/dashboard/editor/grid/BasketPanel.vue.d.ts +80 -0
  170. package/dist/components/dashboard/editor/grid/BasketPanel.vue.d.ts.map +1 -0
  171. package/dist/components/dashboard/editor/grid/BlockTypeSelector.vue.d.ts +56 -0
  172. package/dist/components/dashboard/editor/grid/BlockTypeSelector.vue.d.ts.map +1 -0
  173. package/dist/components/dashboard/editor/grid/GridBlock.vue.d.ts +112 -0
  174. package/dist/components/dashboard/editor/grid/GridBlock.vue.d.ts.map +1 -0
  175. package/dist/components/dashboard/editor/grid/GridEditor.vue.d.ts +164 -0
  176. package/dist/components/dashboard/editor/grid/GridEditor.vue.d.ts.map +1 -0
  177. package/dist/components/dashboard/editor/grid/MinimapPanel.vue.d.ts +72 -0
  178. package/dist/components/dashboard/editor/grid/MinimapPanel.vue.d.ts.map +1 -0
  179. package/dist/components/dashboard/editor/validators.d.ts.map +1 -0
  180. package/dist/components/dashboard/widgets/ActivityHistory.vue.d.ts +86 -0
  181. package/dist/components/dashboard/widgets/ActivityHistory.vue.d.ts.map +1 -0
  182. package/dist/components/dashboard/widgets/BookmarksComponent.vue.d.ts +42 -0
  183. package/dist/components/dashboard/widgets/BookmarksComponent.vue.d.ts.map +1 -0
  184. package/dist/components/dashboard/widgets/ChartWrapper.vue.d.ts +53 -0
  185. package/dist/components/dashboard/widgets/ChartWrapper.vue.d.ts.map +1 -0
  186. package/dist/components/dashboard/widgets/DisplayFileInDashboardComponent.vue.d.ts +351 -0
  187. package/dist/components/dashboard/widgets/DisplayFileInDashboardComponent.vue.d.ts.map +1 -0
  188. package/dist/components/dashboard/widgets/ExternalApps.vue.d.ts +47 -0
  189. package/dist/components/dashboard/widgets/ExternalApps.vue.d.ts.map +1 -0
  190. package/dist/components/dashboard/widgets/FavoriteFileList.vue.d.ts +68 -0
  191. package/dist/components/dashboard/widgets/FavoriteFileList.vue.d.ts.map +1 -0
  192. package/dist/components/dashboard/widgets/FavoriteFolderList.vue.d.ts +65 -0
  193. package/dist/components/dashboard/widgets/FavoriteFolderList.vue.d.ts.map +1 -0
  194. package/dist/components/dashboard/widgets/FavoriteList.vue.d.ts +182 -0
  195. package/dist/components/dashboard/widgets/FavoriteList.vue.d.ts.map +1 -0
  196. package/dist/components/dashboard/widgets/FavoriteSiteList.vue.d.ts +66 -0
  197. package/dist/components/dashboard/widgets/FavoriteSiteList.vue.d.ts.map +1 -0
  198. package/dist/components/dashboard/widgets/MarkdownComponent.vue.d.ts +35 -0
  199. package/dist/components/dashboard/widgets/MarkdownComponent.vue.d.ts.map +1 -0
  200. package/dist/components/dashboard/widgets/OnlyImageDisplayed.vue.d.ts +36 -0
  201. package/dist/components/dashboard/widgets/OnlyImageDisplayed.vue.d.ts.map +1 -0
  202. package/dist/components/dashboard/widgets/SearchInput.vue.d.ts +42 -0
  203. package/dist/components/dashboard/widgets/SearchInput.vue.d.ts.map +1 -0
  204. package/dist/components/dashboard/widgets/UnknownBlockType.vue.d.ts +23 -0
  205. package/dist/components/dashboard/widgets/UnknownBlockType.vue.d.ts.map +1 -0
  206. package/dist/components/layouts/AppFooter.vue.d.ts +138 -0
  207. package/dist/components/layouts/AppFooter.vue.d.ts.map +1 -0
  208. package/dist/components/layouts/AppLayout.vue.d.ts +927 -0
  209. package/dist/components/layouts/AppLayout.vue.d.ts.map +1 -0
  210. package/dist/components/layouts/AppMobileLayout.vue.d.ts +271 -0
  211. package/dist/components/layouts/AppMobileLayout.vue.d.ts.map +1 -0
  212. package/dist/components/layouts/AppSidebar.vue.d.ts +223 -0
  213. package/dist/components/layouts/AppSidebar.vue.d.ts.map +1 -0
  214. package/dist/components/layouts/AppSubmenu.vue.d.ts +119 -0
  215. package/dist/components/layouts/AppSubmenu.vue.d.ts.map +1 -0
  216. package/dist/components/layouts/AppSwitcher.vue.d.ts +87 -0
  217. package/dist/components/layouts/AppSwitcher.vue.d.ts.map +1 -0
  218. package/dist/components/layouts/AppTopbar.vue.d.ts +329 -0
  219. package/dist/components/layouts/AppTopbar.vue.d.ts.map +1 -0
  220. package/dist/components/layouts/SidebarProfileSection.vue.d.ts +108 -0
  221. package/dist/components/layouts/SidebarProfileSection.vue.d.ts.map +1 -0
  222. package/dist/components/menu/ActionMenu.vue.d.ts +35 -0
  223. package/dist/components/menu/ActionMenu.vue.d.ts.map +1 -0
  224. package/dist/components/navigation/CardMetadataLines.vue.d.ts +41 -0
  225. package/dist/components/navigation/CardMetadataLines.vue.d.ts.map +1 -0
  226. package/dist/components/navigation/ColumnTogglePanel.vue.d.ts +121 -0
  227. package/dist/components/navigation/ColumnTogglePanel.vue.d.ts.map +1 -0
  228. package/dist/components/navigation/ContentCompactTableView.vue.d.ts +509 -0
  229. package/dist/components/navigation/ContentCompactTableView.vue.d.ts.map +1 -0
  230. package/dist/components/navigation/ContentFiltersHeader.vue.d.ts +100 -0
  231. package/dist/components/navigation/ContentFiltersHeader.vue.d.ts.map +1 -0
  232. package/dist/components/navigation/ContentGridView.vue.d.ts +291 -0
  233. package/dist/components/navigation/ContentGridView.vue.d.ts.map +1 -0
  234. package/dist/components/navigation/ContentListView.vue.d.ts +242 -0
  235. package/dist/components/navigation/ContentListView.vue.d.ts.map +1 -0
  236. package/dist/components/navigation/ContentTableView.vue.d.ts +541 -0
  237. package/dist/components/navigation/ContentTableView.vue.d.ts.map +1 -0
  238. package/dist/components/navigation/ContentToolbar.vue.d.ts +51 -0
  239. package/dist/components/navigation/ContentToolbar.vue.d.ts.map +1 -0
  240. package/dist/components/navigation/DynamicContentView.vue.d.ts +2026 -0
  241. package/dist/components/navigation/DynamicContentView.vue.d.ts.map +1 -0
  242. package/dist/components/navigation/GhostNodeRow.vue.d.ts +68 -0
  243. package/dist/components/navigation/GhostNodeRow.vue.d.ts.map +1 -0
  244. package/dist/components/navigation/LayoutSelector.vue.d.ts +35 -0
  245. package/dist/components/navigation/LayoutSelector.vue.d.ts.map +1 -0
  246. package/dist/components/navigation/PreviewPanel.vue.d.ts +842 -0
  247. package/dist/components/navigation/PreviewPanel.vue.d.ts.map +1 -0
  248. package/dist/components/navigation/SelectionBar.vue.d.ts +149 -0
  249. package/dist/components/navigation/SelectionBar.vue.d.ts.map +1 -0
  250. package/dist/components/pagination/PaginatorComponent.vue.d.ts +52 -0
  251. package/dist/components/pagination/PaginatorComponent.vue.d.ts.map +1 -0
  252. package/dist/components/pdfTools/PdfToolsComponent.vue.d.ts +259 -0
  253. package/dist/components/pdfTools/PdfToolsComponent.vue.d.ts.map +1 -0
  254. package/dist/components/pdfTools/PdfToolsLoading.vue.d.ts +14 -0
  255. package/dist/components/pdfTools/PdfToolsLoading.vue.d.ts.map +1 -0
  256. package/dist/components/pdfTools/SaveAsPopup.vue.d.ts +62 -0
  257. package/dist/components/pdfTools/SaveAsPopup.vue.d.ts.map +1 -0
  258. package/dist/components/popup/CopyOrMovePopup.vue.d.ts +176 -0
  259. package/dist/components/popup/CopyOrMovePopup.vue.d.ts.map +1 -0
  260. package/dist/components/popup/CreateWorkflowPopup.vue.d.ts +104 -0
  261. package/dist/components/popup/CreateWorkflowPopup.vue.d.ts.map +1 -0
  262. package/dist/components/popup/ImportNewVersionPopup.vue.d.ts +43 -0
  263. package/dist/components/popup/ImportNewVersionPopup.vue.d.ts.map +1 -0
  264. package/dist/components/popup/ImportPopupWithWorker.vue.d.ts +186 -0
  265. package/dist/components/popup/ImportPopupWithWorker.vue.d.ts.map +1 -0
  266. package/dist/components/popup/MemberListPopup.vue.d.ts +196 -0
  267. package/dist/components/popup/MemberListPopup.vue.d.ts.map +1 -0
  268. package/dist/components/popup/SendMailPopup.vue.d.ts +105 -0
  269. package/dist/components/popup/SendMailPopup.vue.d.ts.map +1 -0
  270. package/dist/components/popup/ShareLinkPopup.vue.d.ts +69 -0
  271. package/dist/components/popup/ShareLinkPopup.vue.d.ts.map +1 -0
  272. package/dist/components/search/AddCriterionPopup.vue.d.ts +135 -0
  273. package/dist/components/search/AddCriterionPopup.vue.d.ts.map +1 -0
  274. package/dist/components/search/AdvancedSearchPanel.vue.d.ts +756 -0
  275. package/dist/components/search/AdvancedSearchPanel.vue.d.ts.map +1 -0
  276. package/dist/components/search/AdvancedViewPanel.vue.d.ts +886 -0
  277. package/dist/components/search/AdvancedViewPanel.vue.d.ts.map +1 -0
  278. package/dist/components/search/ExactSearch.vue.d.ts +49 -0
  279. package/dist/components/search/ExactSearch.vue.d.ts.map +1 -0
  280. package/dist/components/search/FavoriteViewMenu.vue.d.ts +45 -0
  281. package/dist/components/search/FavoriteViewMenu.vue.d.ts.map +1 -0
  282. package/dist/components/search/SaveViewPopup.vue.d.ts +127 -0
  283. package/dist/components/search/SaveViewPopup.vue.d.ts.map +1 -0
  284. package/dist/components/search/UserViewsFavoritesPanel.vue.d.ts +62 -0
  285. package/dist/components/search/UserViewsFavoritesPanel.vue.d.ts.map +1 -0
  286. package/dist/components/search/ViewResultsPanel.vue.d.ts +327 -0
  287. package/dist/components/search/ViewResultsPanel.vue.d.ts.map +1 -0
  288. package/dist/components/toast/CustomToastContent.vue.d.ts +76 -0
  289. package/dist/components/toast/CustomToastContent.vue.d.ts.map +1 -0
  290. package/dist/components/users/MemberList.vue.d.ts +177 -0
  291. package/dist/components/users/MemberList.vue.d.ts.map +1 -0
  292. package/dist/components/viewer/ArchiveViewer.vue.d.ts +117 -0
  293. package/dist/components/viewer/ArchiveViewer.vue.d.ts.map +1 -0
  294. package/dist/components/viewer/ArchiveViewerSkeleton.vue.d.ts +17 -0
  295. package/dist/components/viewer/ArchiveViewerSkeleton.vue.d.ts.map +1 -0
  296. package/dist/components/viewer/AudioPlayer.vue.d.ts +58 -0
  297. package/dist/components/viewer/AudioPlayer.vue.d.ts.map +1 -0
  298. package/dist/components/viewer/CodeMirrorViewer.vue.d.ts +42 -0
  299. package/dist/components/viewer/CodeMirrorViewer.vue.d.ts.map +1 -0
  300. package/dist/components/viewer/ImageViewer.vue.d.ts +164 -0
  301. package/dist/components/viewer/ImageViewer.vue.d.ts.map +1 -0
  302. package/dist/components/viewer/PDFComponent.vue.d.ts +584 -0
  303. package/dist/components/viewer/PDFComponent.vue.d.ts.map +1 -0
  304. package/dist/components/viewer/PdfSignaturePanel.vue.d.ts +40 -0
  305. package/dist/components/viewer/PdfSignaturePanel.vue.d.ts.map +1 -0
  306. package/dist/components/viewer/PdfViewerSkeleton.vue.d.ts +17 -0
  307. package/dist/components/viewer/PdfViewerSkeleton.vue.d.ts.map +1 -0
  308. package/dist/components/viewer/VideoPlayer.vue.d.ts +116 -0
  309. package/dist/components/viewer/VideoPlayer.vue.d.ts.map +1 -0
  310. package/dist/components/viewer/ViewerSkeleton.vue.d.ts +37 -0
  311. package/dist/components/viewer/ViewerSkeleton.vue.d.ts.map +1 -0
  312. package/dist/components/viewer/lazyPdfComponents.d.ts +528 -0
  313. package/dist/components/viewer/lazyPdfComponents.d.ts.map +1 -0
  314. package/dist/components/views/PredefinedViewsPanel.vue.d.ts +132 -0
  315. package/dist/components/views/PredefinedViewsPanel.vue.d.ts.map +1 -0
  316. package/dist/components/views/ViewList.vue.d.ts +78 -0
  317. package/dist/components/views/ViewList.vue.d.ts.map +1 -0
  318. package/dist/components/workspace/WorkspaceCard.vue.d.ts +466 -0
  319. package/dist/components/workspace/WorkspaceCard.vue.d.ts.map +1 -0
  320. package/dist/components/workspace/WorkspaceList.vue.d.ts +555 -0
  321. package/dist/components/workspace/WorkspaceList.vue.d.ts.map +1 -0
  322. package/dist/composables/collabProtocol.d.ts.map +1 -0
  323. package/dist/composables/editorAppearance.d.ts +65 -0
  324. package/dist/composables/editorAppearance.d.ts.map +1 -0
  325. package/dist/composables/editorThemes/buildEditorTheme.d.ts +56 -0
  326. package/dist/composables/editorThemes/buildEditorTheme.d.ts.map +1 -0
  327. package/dist/composables/editorThemes/dracula.d.ts +5 -0
  328. package/dist/composables/editorThemes/dracula.d.ts.map +1 -0
  329. package/dist/composables/editorThemes/github.d.ts +6 -0
  330. package/dist/composables/editorThemes/github.d.ts.map +1 -0
  331. package/dist/composables/editorThemes/nord.d.ts +5 -0
  332. package/dist/composables/editorThemes/nord.d.ts.map +1 -0
  333. package/dist/composables/editorThemes/one.d.ts +7 -0
  334. package/dist/composables/editorThemes/one.d.ts.map +1 -0
  335. package/dist/composables/editorThemes/pristy.d.ts +6 -0
  336. package/dist/composables/editorThemes/pristy.d.ts.map +1 -0
  337. package/dist/composables/editorThemes/solarized.d.ts +6 -0
  338. package/dist/composables/editorThemes/solarized.d.ts.map +1 -0
  339. package/dist/composables/useAuth.d.ts.map +1 -0
  340. package/dist/composables/useChatWebSocket.d.ts.map +1 -0
  341. package/dist/composables/useClassificationPlan.d.ts.map +1 -0
  342. package/dist/composables/useCodeMirror.d.ts +57 -0
  343. package/dist/composables/useCodeMirror.d.ts.map +1 -0
  344. package/dist/composables/useCollabEditor.d.ts.map +1 -0
  345. package/dist/composables/useCollabWebSocket.d.ts.map +1 -0
  346. package/dist/composables/useColumnFilter.d.ts.map +1 -0
  347. package/dist/composables/useDelayedVisibility.d.ts +29 -0
  348. package/dist/composables/useDelayedVisibility.d.ts.map +1 -0
  349. package/dist/composables/useDragDrop.d.ts.map +1 -0
  350. package/dist/composables/useGhostNodes.d.ts.map +1 -0
  351. package/dist/composables/useGridValidation.d.ts.map +1 -0
  352. package/dist/composables/useLayout.d.ts.map +1 -0
  353. package/dist/composables/useMarkdownPreview.d.ts +77 -0
  354. package/dist/composables/useMarkdownPreview.d.ts.map +1 -0
  355. package/dist/composables/useResize.d.ts.map +1 -0
  356. package/dist/composables/useTheme.d.ts.map +1 -0
  357. package/dist/directives/assert.d.ts.map +1 -0
  358. package/dist/dracula-DZ4d0UAj.js +32 -0
  359. package/dist/dracula-DZ4d0UAj.js.map +1 -0
  360. package/dist/github-WL9tKr_4.js +57 -0
  361. package/dist/github-WL9tKr_4.js.map +1 -0
  362. package/dist/httpClientPatch.d.ts.map +1 -0
  363. package/dist/i18n/index.d.ts +4423 -0
  364. package/dist/i18n/index.d.ts.map +1 -0
  365. package/dist/i18n/locales/index.d.ts.map +1 -0
  366. package/dist/index-DJEkd3cy.js +47201 -0
  367. package/dist/index-DJEkd3cy.js.map +1 -0
  368. package/dist/index.d.ts +195 -1
  369. package/dist/index.d.ts.map +1 -0
  370. package/dist/nord-FqRawSxu.js +32 -0
  371. package/dist/nord-FqRawSxu.js.map +1 -0
  372. package/dist/one-CTKKLi-H.js +34 -0
  373. package/dist/one-CTKKLi-H.js.map +1 -0
  374. package/dist/pages/ErrorPage.vue.d.ts +29 -0
  375. package/dist/pages/ErrorPage.vue.d.ts.map +1 -0
  376. package/dist/pages/LoginPage.vue.d.ts +71 -0
  377. package/dist/pages/LoginPage.vue.d.ts.map +1 -0
  378. package/dist/pages/NotFoundPages.vue.d.ts +58 -0
  379. package/dist/pages/NotFoundPages.vue.d.ts.map +1 -0
  380. package/dist/plugins/KeycloakPlugin.d.ts.map +1 -0
  381. package/dist/pristy-libvue.css +1 -1
  382. package/dist/pristy-libvue.es.js +260 -217
  383. package/dist/pristy-libvue.umd.js +147 -25
  384. package/dist/pristy-libvue.umd.js.map +1 -1
  385. package/dist/services/AftsQueryBuilder.d.ts.map +1 -0
  386. package/dist/services/AiContextService.d.ts +101 -0
  387. package/dist/services/AiContextService.d.ts.map +1 -0
  388. package/dist/services/AiImportService.d.ts +208 -0
  389. package/dist/services/AiImportService.d.ts.map +1 -0
  390. package/dist/services/AiLearningService.d.ts +79 -0
  391. package/dist/services/AiLearningService.d.ts.map +1 -0
  392. package/dist/services/AiMetadataService.d.ts +86 -0
  393. package/dist/services/AiMetadataService.d.ts.map +1 -0
  394. package/dist/services/AlfrescoFileService.d.ts.map +1 -0
  395. package/dist/services/AlfrescoModelService.d.ts.map +1 -0
  396. package/dist/services/AlfrescoNodeService.d.ts.map +1 -0
  397. package/dist/services/AlfrescoPermissionService.d.ts.map +1 -0
  398. package/dist/services/AlfrescoProxyService.d.ts.map +1 -0
  399. package/dist/services/AppSwitcherService.d.ts.map +1 -0
  400. package/dist/services/ArchiveService.d.ts +109 -0
  401. package/dist/services/ArchiveService.d.ts.map +1 -0
  402. package/dist/services/CapabilitiesService.d.ts.map +1 -0
  403. package/dist/services/CardMetadataService.d.ts +40 -0
  404. package/dist/services/CardMetadataService.d.ts.map +1 -0
  405. package/dist/services/ChatBackendService.d.ts.map +1 -0
  406. package/dist/services/ClassificationFileService.d.ts.map +1 -0
  407. package/dist/services/ClassificationFilingService.d.ts +43 -0
  408. package/dist/services/ClassificationFilingService.d.ts.map +1 -0
  409. package/dist/services/ClassificationService.d.ts.map +1 -0
  410. package/dist/services/CollabBackupService.d.ts.map +1 -0
  411. package/dist/services/CollabService.d.ts.map +1 -0
  412. package/dist/services/CollaboraAccessService.d.ts.map +1 -0
  413. package/dist/services/ColumnPreferenceService.d.ts +29 -0
  414. package/dist/services/ColumnPreferenceService.d.ts.map +1 -0
  415. package/dist/services/ConfigHealthService.d.ts.map +1 -0
  416. package/dist/services/ConfigService.d.ts.map +1 -0
  417. package/dist/services/DashboardService.d.ts +111 -0
  418. package/dist/services/DashboardService.d.ts.map +1 -0
  419. package/dist/services/DiffusionService.d.ts.map +1 -0
  420. package/dist/services/EditorAppearanceService.d.ts +75 -0
  421. package/dist/services/EditorAppearanceService.d.ts.map +1 -0
  422. package/dist/services/ErrorService.d.ts.map +1 -0
  423. package/dist/services/FavoriteService.d.ts.map +1 -0
  424. package/dist/services/FilingPlanService.d.ts.map +1 -0
  425. package/dist/services/FormatService.d.ts.map +1 -0
  426. package/dist/services/GhostMatcher.d.ts.map +1 -0
  427. package/dist/services/IconeService.d.ts.map +1 -0
  428. package/dist/services/IndexAwaitService.d.ts +61 -0
  429. package/dist/services/IndexAwaitService.d.ts.map +1 -0
  430. package/dist/services/KeyboardShortcutsService.d.ts.map +1 -0
  431. package/dist/services/LibVueActionService.d.ts.map +1 -0
  432. package/dist/services/MenuService.d.ts.map +1 -0
  433. package/dist/services/NodeDragService.d.ts.map +1 -0
  434. package/dist/services/NodeToMenuItemService.d.ts.map +1 -0
  435. package/dist/services/PdfCommentService.d.ts +67 -0
  436. package/dist/services/PdfCommentService.d.ts.map +1 -0
  437. package/dist/services/PdfConfigService.d.ts.map +1 -0
  438. package/dist/services/PdfDocumentService.d.ts +81 -0
  439. package/dist/services/PdfDocumentService.d.ts.map +1 -0
  440. package/dist/services/PdfFormService.d.ts.map +1 -0
  441. package/dist/services/PdfInfoWriter.d.ts +19 -0
  442. package/dist/services/PdfInfoWriter.d.ts.map +1 -0
  443. package/dist/services/PdfInsertService.d.ts.map +1 -0
  444. package/dist/services/PdfLinkService.d.ts.map +1 -0
  445. package/dist/services/PdfRedactionService.d.ts.map +1 -0
  446. package/dist/services/PdfSearchService.d.ts +69 -0
  447. package/dist/services/PdfSearchService.d.ts.map +1 -0
  448. package/dist/services/PdfSignatureService.d.ts.map +1 -0
  449. package/dist/services/PdfTextService.d.ts.map +1 -0
  450. package/dist/services/PeopleService.d.ts.map +1 -0
  451. package/dist/services/PlanSuggestService.d.ts.map +1 -0
  452. package/dist/services/PlanTreePdfService.d.ts.map +1 -0
  453. package/dist/services/PreviewService.d.ts.map +1 -0
  454. package/dist/services/RocketChatAuthService.d.ts.map +1 -0
  455. package/dist/services/RocketChatService.d.ts.map +1 -0
  456. package/dist/services/TranslationService.d.ts.map +1 -0
  457. package/dist/services/UserViewService.d.ts.map +1 -0
  458. package/dist/services/ViewConfigService.d.ts.map +1 -0
  459. package/dist/services/WorkflowService.d.ts.map +1 -0
  460. package/dist/services/WorkspaceConfigService.d.ts +30 -0
  461. package/dist/services/WorkspaceConfigService.d.ts.map +1 -0
  462. package/dist/services/WorkspaceService.d.ts.map +1 -0
  463. package/dist/services/ZipShareService.d.ts +105 -0
  464. package/dist/services/ZipShareService.d.ts.map +1 -0
  465. package/dist/services/aliasMap.d.ts.map +1 -0
  466. package/dist/services/auth/KeycloakAuthProvider.d.ts.map +1 -0
  467. package/dist/services/auth/OidcAuthProvider.d.ts.map +1 -0
  468. package/dist/services/auth/__tests__/FakeAuthProvider.d.ts.map +1 -0
  469. package/dist/services/auth/authProvider.d.ts.map +1 -0
  470. package/dist/services/auth/buildOidcSettings.d.ts.map +1 -0
  471. package/dist/services/criteriaLogic.d.ts.map +1 -0
  472. package/dist/services/userSearchQuery.d.ts.map +1 -0
  473. package/dist/solarized-B1Axyuuz.js +47 -0
  474. package/dist/solarized-B1Axyuuz.js.map +1 -0
  475. package/dist/stores/aiImport.d.ts +43 -0
  476. package/dist/stores/aiImport.d.ts.map +1 -0
  477. package/dist/stores/chat.d.ts.map +1 -0
  478. package/dist/stores/collab.d.ts.map +1 -0
  479. package/dist/stores/collabora.d.ts.map +1 -0
  480. package/dist/stores/config.d.ts +344 -0
  481. package/dist/stores/config.d.ts.map +1 -0
  482. package/dist/stores/editorAppearance.d.ts +32 -0
  483. package/dist/stores/editorAppearance.d.ts.map +1 -0
  484. package/dist/stores/favorites.d.ts.map +1 -0
  485. package/dist/stores/filingPlan.d.ts.map +1 -0
  486. package/dist/stores/indexAwait.d.ts.map +1 -0
  487. package/dist/stores/markdownDocument.d.ts +30 -0
  488. package/dist/stores/markdownDocument.d.ts.map +1 -0
  489. package/dist/stores/menu.d.ts.map +1 -0
  490. package/dist/stores/navigation.d.ts.map +1 -0
  491. package/dist/stores/paginator.d.ts.map +1 -0
  492. package/dist/stores/pdfDocument.d.ts +89 -0
  493. package/dist/stores/pdfDocument.d.ts.map +1 -0
  494. package/dist/stores/screen.d.ts.map +1 -0
  495. package/dist/stores/search.d.ts.map +1 -0
  496. package/dist/stores/selection.d.ts.map +1 -0
  497. package/dist/stores/taskNotification.d.ts.map +1 -0
  498. package/dist/stores/upload.d.ts.map +1 -0
  499. package/dist/stores/user.d.ts.map +1 -0
  500. package/dist/stores/userPreferences.d.ts.map +1 -0
  501. package/dist/stores/userView.d.ts.map +1 -0
  502. package/dist/stores/zipShare.d.ts +54 -0
  503. package/dist/stores/zipShare.d.ts.map +1 -0
  504. package/dist/typedef.d.ts.map +1 -0
  505. package/dist/utils/classificationPlanUtils.d.ts.map +1 -0
  506. package/dist/utils/indexAwaitReducer.d.ts.map +1 -0
  507. package/dist/utils/overflowUtils.d.ts.map +1 -0
  508. package/dist/utils/planTree.d.ts.map +1 -0
  509. package/dist/utils/treeA11y.d.ts.map +1 -0
  510. package/dist/utils/workspaceAppearance.d.ts.map +1 -0
  511. package/dist/workers/upload.worker.d.ts.map +1 -0
  512. package/package.json +15 -6
  513. package/dist/ActivityHistory-CSXt9uFw.js +0 -235
  514. package/dist/ActivityHistory-CSXt9uFw.js.map +0 -1
  515. package/dist/BookmarksComponent-DqfEIox4.js +0 -44
  516. package/dist/BookmarksComponent-DqfEIox4.js.map +0 -1
  517. package/dist/ChartWrapper-B7VmrsEX.js +0 -59
  518. package/dist/ChartWrapper-B7VmrsEX.js.map +0 -1
  519. package/dist/DisplayFileInDashboardComponent-BAdDKnJN.js +0 -105
  520. package/dist/DisplayFileInDashboardComponent-BAdDKnJN.js.map +0 -1
  521. package/dist/ExternalApps-CQZwIifu.js +0 -90
  522. package/dist/ExternalApps-CQZwIifu.js.map +0 -1
  523. package/dist/FavoriteList-CTY_2bWP.js +0 -380
  524. package/dist/FavoriteList-CTY_2bWP.js.map +0 -1
  525. package/dist/MarkdownComponent-DWluCXX2.js +0 -56
  526. package/dist/MarkdownComponent-DWluCXX2.js.map +0 -1
  527. package/dist/PDFComponent-DhmdtX95.js +0 -987
  528. package/dist/PDFComponent-DhmdtX95.js.map +0 -1
  529. package/dist/PdfConfigService-huVsU23i.js +0 -17
  530. package/dist/PdfConfigService-huVsU23i.js.map +0 -1
  531. package/dist/PdfToolsComponent-CXuz7xuL.js +0 -1975
  532. package/dist/PdfToolsComponent-CXuz7xuL.js.map +0 -1
  533. package/dist/PlanTreePdfService-Ck4hUN2b.js +0 -76
  534. package/dist/PlanTreePdfService-Ck4hUN2b.js.map +0 -1
  535. package/dist/SearchInput-57Z8q77p.js +0 -58
  536. package/dist/SearchInput-57Z8q77p.js.map +0 -1
  537. package/dist/UnknownBlockType-BtnOApwP.js +0 -22
  538. package/dist/UnknownBlockType-BtnOApwP.js.map +0 -1
  539. package/dist/index-Coh4LtRJ.js +0 -44006
  540. package/dist/index-Coh4LtRJ.js.map +0 -1
  541. package/dist/src/AlfrescoApi.d.ts.map +0 -1
  542. package/dist/src/components/CodeMirrorBase.vue.d.ts +0 -34
  543. package/dist/src/components/CodeMirrorBase.vue.d.ts.map +0 -1
  544. package/dist/src/components/CodeMirrorEditor.vue.d.ts +0 -21
  545. package/dist/src/components/CodeMirrorEditor.vue.d.ts.map +0 -1
  546. package/dist/src/components/DiffViewerDialog.vue.d.ts +0 -18
  547. package/dist/src/components/DiffViewerDialog.vue.d.ts.map +0 -1
  548. package/dist/src/components/ErrorComponent.vue.d.ts +0 -34
  549. package/dist/src/components/ErrorComponent.vue.d.ts.map +0 -1
  550. package/dist/src/components/FolderUpload.vue.d.ts +0 -69
  551. package/dist/src/components/FolderUpload.vue.d.ts.map +0 -1
  552. package/dist/src/components/HelpKeyMessage.vue.d.ts +0 -24
  553. package/dist/src/components/HelpKeyMessage.vue.d.ts.map +0 -1
  554. package/dist/src/components/IconPickerDialog.vue.d.ts +0 -63
  555. package/dist/src/components/IconPickerDialog.vue.d.ts.map +0 -1
  556. package/dist/src/components/IndexAwaitOverlay.vue.d.ts +0 -12
  557. package/dist/src/components/IndexAwaitOverlay.vue.d.ts.map +0 -1
  558. package/dist/src/components/PristyIcon.vue.d.ts +0 -18
  559. package/dist/src/components/PristyIcon.vue.d.ts.map +0 -1
  560. package/dist/src/components/SelectionStatus.vue.d.ts +0 -38
  561. package/dist/src/components/SelectionStatus.vue.d.ts.map +0 -1
  562. package/dist/src/components/TreeExplorer.vue.d.ts +0 -81
  563. package/dist/src/components/TreeExplorer.vue.d.ts.map +0 -1
  564. package/dist/src/components/UploadStatus.vue.d.ts +0 -73
  565. package/dist/src/components/UploadStatus.vue.d.ts.map +0 -1
  566. package/dist/src/components/UploadTargetInfo.vue.d.ts +0 -7
  567. package/dist/src/components/UploadTargetInfo.vue.d.ts.map +0 -1
  568. package/dist/src/components/auth/OidcCallback.vue.d.ts +0 -4
  569. package/dist/src/components/auth/OidcCallback.vue.d.ts.map +0 -1
  570. package/dist/src/components/breadcrumb/BreadCrumbAlfresco.vue.d.ts +0 -84
  571. package/dist/src/components/breadcrumb/BreadCrumbAlfresco.vue.d.ts.map +0 -1
  572. package/dist/src/components/breadcrumb/ComplexBreadcrumb.vue.d.ts +0 -234
  573. package/dist/src/components/breadcrumb/ComplexBreadcrumb.vue.d.ts.map +0 -1
  574. package/dist/src/components/breadcrumb/EllipsisBreadcrumb.vue.d.ts +0 -122
  575. package/dist/src/components/breadcrumb/EllipsisBreadcrumb.vue.d.ts.map +0 -1
  576. package/dist/src/components/chat/ChatInput.vue.d.ts +0 -50
  577. package/dist/src/components/chat/ChatInput.vue.d.ts.map +0 -1
  578. package/dist/src/components/chat/ChatMessage.vue.d.ts +0 -41
  579. package/dist/src/components/chat/ChatMessage.vue.d.ts.map +0 -1
  580. package/dist/src/components/chat/ChatPanel.vue.d.ts +0 -434
  581. package/dist/src/components/chat/ChatPanel.vue.d.ts.map +0 -1
  582. package/dist/src/components/chat/ChatRoomList.vue.d.ts +0 -52
  583. package/dist/src/components/chat/ChatRoomList.vue.d.ts.map +0 -1
  584. package/dist/src/components/classification/AdminClassificationLauncher.vue.d.ts +0 -6
  585. package/dist/src/components/classification/AdminClassificationLauncher.vue.d.ts.map +0 -1
  586. package/dist/src/components/classification/AdminClassificationPage.vue.d.ts +0 -783
  587. package/dist/src/components/classification/AdminClassificationPage.vue.d.ts.map +0 -1
  588. package/dist/src/components/classification/AiSuggestionsPanel.vue.d.ts +0 -12
  589. package/dist/src/components/classification/AiSuggestionsPanel.vue.d.ts.map +0 -1
  590. package/dist/src/components/classification/ClassificationPlanCreate.vue.d.ts +0 -6
  591. package/dist/src/components/classification/ClassificationPlanCreate.vue.d.ts.map +0 -1
  592. package/dist/src/components/classification/ClassificationPlanList.vue.d.ts +0 -20
  593. package/dist/src/components/classification/ClassificationPlanList.vue.d.ts.map +0 -1
  594. package/dist/src/components/classification/DictionaryForm.vue.d.ts +0 -49
  595. package/dist/src/components/classification/DictionaryForm.vue.d.ts.map +0 -1
  596. package/dist/src/components/classification/EmplacementForm.vue.d.ts +0 -76
  597. package/dist/src/components/classification/EmplacementForm.vue.d.ts.map +0 -1
  598. package/dist/src/components/classification/FieldForm.vue.d.ts +0 -122
  599. package/dist/src/components/classification/FieldForm.vue.d.ts.map +0 -1
  600. package/dist/src/components/classification/LexiconForm.vue.d.ts +0 -50
  601. package/dist/src/components/classification/LexiconForm.vue.d.ts.map +0 -1
  602. package/dist/src/components/classification/MetadataFormFields.vue.d.ts +0 -188
  603. package/dist/src/components/classification/MetadataFormFields.vue.d.ts.map +0 -1
  604. package/dist/src/components/classification/NatureForm.vue.d.ts +0 -125
  605. package/dist/src/components/classification/NatureForm.vue.d.ts.map +0 -1
  606. package/dist/src/components/classification/NatureSelector.vue.d.ts +0 -139
  607. package/dist/src/components/classification/NatureSelector.vue.d.ts.map +0 -1
  608. package/dist/src/components/classification/PlanInformationPanel.vue.d.ts +0 -58
  609. package/dist/src/components/classification/PlanInformationPanel.vue.d.ts.map +0 -1
  610. package/dist/src/components/classification/PlanSuggestInput.vue.d.ts +0 -22
  611. package/dist/src/components/classification/PlanSuggestInput.vue.d.ts.map +0 -1
  612. package/dist/src/components/classification/PlanTreePanel.vue.d.ts +0 -47
  613. package/dist/src/components/classification/PlanTreePanel.vue.d.ts.map +0 -1
  614. package/dist/src/components/classification/UploadPlanPopup.vue.d.ts +0 -36
  615. package/dist/src/components/classification/UploadPlanPopup.vue.d.ts.map +0 -1
  616. package/dist/src/components/classification/ViewSelectorPopup.vue.d.ts +0 -85
  617. package/dist/src/components/classification/ViewSelectorPopup.vue.d.ts.map +0 -1
  618. package/dist/src/components/config/AddPairInConfigDialog.vue.d.ts +0 -50
  619. package/dist/src/components/config/AddPairInConfigDialog.vue.d.ts.map +0 -1
  620. package/dist/src/components/config/ArrayEditor.vue.d.ts +0 -12
  621. package/dist/src/components/config/ArrayEditor.vue.d.ts.map +0 -1
  622. package/dist/src/components/config/ConfigDatatable.vue.d.ts +0 -14
  623. package/dist/src/components/config/ConfigDatatable.vue.d.ts.map +0 -1
  624. package/dist/src/components/config/ConfigHealthBanner.vue.d.ts +0 -16
  625. package/dist/src/components/config/ConfigHealthBanner.vue.d.ts.map +0 -1
  626. package/dist/src/components/config/ConfigItemEditor.vue.d.ts +0 -12
  627. package/dist/src/components/config/ConfigItemEditor.vue.d.ts.map +0 -1
  628. package/dist/src/components/config/ConfigRawEditor.vue.d.ts +0 -80
  629. package/dist/src/components/config/ConfigRawEditor.vue.d.ts.map +0 -1
  630. package/dist/src/components/config/ConfigSplitView.vue.d.ts +0 -14
  631. package/dist/src/components/config/ConfigSplitView.vue.d.ts.map +0 -1
  632. package/dist/src/components/config/ConfigUpload.vue.d.ts +0 -24
  633. package/dist/src/components/config/ConfigUpload.vue.d.ts.map +0 -1
  634. package/dist/src/components/config/ListVersionConfig.vue.d.ts +0 -75
  635. package/dist/src/components/config/ListVersionConfig.vue.d.ts.map +0 -1
  636. package/dist/src/components/dashboard/DashboardAdminPage.vue.d.ts +0 -2152
  637. package/dist/src/components/dashboard/DashboardAdminPage.vue.d.ts.map +0 -1
  638. package/dist/src/components/dashboard/DashboardComponent.vue.d.ts +0 -771
  639. package/dist/src/components/dashboard/DashboardComponent.vue.d.ts.map +0 -1
  640. package/dist/src/components/dashboard/editor/BlockConfigEditor.vue.d.ts +0 -946
  641. package/dist/src/components/dashboard/editor/BlockConfigEditor.vue.d.ts.map +0 -1
  642. package/dist/src/components/dashboard/editor/DashboardEditor.vue.d.ts +0 -2038
  643. package/dist/src/components/dashboard/editor/DashboardEditor.vue.d.ts.map +0 -1
  644. package/dist/src/components/dashboard/editor/FieldLabel.vue.d.ts +0 -42
  645. package/dist/src/components/dashboard/editor/FieldLabel.vue.d.ts.map +0 -1
  646. package/dist/src/components/dashboard/editor/JsonEditorDialog.vue.d.ts +0 -80
  647. package/dist/src/components/dashboard/editor/JsonEditorDialog.vue.d.ts.map +0 -1
  648. package/dist/src/components/dashboard/editor/MarkdownEditorDialog.vue.d.ts +0 -77
  649. package/dist/src/components/dashboard/editor/MarkdownEditorDialog.vue.d.ts.map +0 -1
  650. package/dist/src/components/dashboard/editor/VersionHistoryDialog.vue.d.ts +0 -53
  651. package/dist/src/components/dashboard/editor/VersionHistoryDialog.vue.d.ts.map +0 -1
  652. package/dist/src/components/dashboard/editor/block-configs/BookmarksConfig.vue.d.ts +0 -61
  653. package/dist/src/components/dashboard/editor/block-configs/BookmarksConfig.vue.d.ts.map +0 -1
  654. package/dist/src/components/dashboard/editor/block-configs/ChartConfig.vue.d.ts +0 -76
  655. package/dist/src/components/dashboard/editor/block-configs/ChartConfig.vue.d.ts.map +0 -1
  656. package/dist/src/components/dashboard/editor/block-configs/ExternalAppsConfig.vue.d.ts +0 -221
  657. package/dist/src/components/dashboard/editor/block-configs/ExternalAppsConfig.vue.d.ts.map +0 -1
  658. package/dist/src/components/dashboard/editor/block-configs/FavoritesConfig.vue.d.ts +0 -78
  659. package/dist/src/components/dashboard/editor/block-configs/FavoritesConfig.vue.d.ts.map +0 -1
  660. package/dist/src/components/dashboard/editor/block-configs/MarkdownConfig.vue.d.ts +0 -72
  661. package/dist/src/components/dashboard/editor/block-configs/MarkdownConfig.vue.d.ts.map +0 -1
  662. package/dist/src/components/dashboard/editor/block-configs/MyActivityConfig.vue.d.ts +0 -66
  663. package/dist/src/components/dashboard/editor/block-configs/MyActivityConfig.vue.d.ts.map +0 -1
  664. package/dist/src/components/dashboard/editor/block-configs/NoConfig.vue.d.ts +0 -4
  665. package/dist/src/components/dashboard/editor/block-configs/NoConfig.vue.d.ts.map +0 -1
  666. package/dist/src/components/dashboard/editor/block-configs/PdfImageConfig.vue.d.ts +0 -60
  667. package/dist/src/components/dashboard/editor/block-configs/PdfImageConfig.vue.d.ts.map +0 -1
  668. package/dist/src/components/dashboard/editor/blockDraft.d.ts.map +0 -1
  669. package/dist/src/components/dashboard/editor/grid/BasketPanel.vue.d.ts +0 -38
  670. package/dist/src/components/dashboard/editor/grid/BasketPanel.vue.d.ts.map +0 -1
  671. package/dist/src/components/dashboard/editor/grid/BlockTypeSelector.vue.d.ts +0 -36
  672. package/dist/src/components/dashboard/editor/grid/BlockTypeSelector.vue.d.ts.map +0 -1
  673. package/dist/src/components/dashboard/editor/grid/GridBlock.vue.d.ts +0 -73
  674. package/dist/src/components/dashboard/editor/grid/GridBlock.vue.d.ts.map +0 -1
  675. package/dist/src/components/dashboard/editor/grid/GridEditor.vue.d.ts +0 -141
  676. package/dist/src/components/dashboard/editor/grid/GridEditor.vue.d.ts.map +0 -1
  677. package/dist/src/components/dashboard/editor/grid/MinimapPanel.vue.d.ts +0 -44
  678. package/dist/src/components/dashboard/editor/grid/MinimapPanel.vue.d.ts.map +0 -1
  679. package/dist/src/components/dashboard/editor/validators.d.ts.map +0 -1
  680. package/dist/src/components/dashboard/widgets/ActivityHistory.vue.d.ts +0 -56
  681. package/dist/src/components/dashboard/widgets/ActivityHistory.vue.d.ts.map +0 -1
  682. package/dist/src/components/dashboard/widgets/BookmarksComponent.vue.d.ts +0 -27
  683. package/dist/src/components/dashboard/widgets/BookmarksComponent.vue.d.ts.map +0 -1
  684. package/dist/src/components/dashboard/widgets/ChartWrapper.vue.d.ts +0 -41
  685. package/dist/src/components/dashboard/widgets/ChartWrapper.vue.d.ts.map +0 -1
  686. package/dist/src/components/dashboard/widgets/DisplayFileInDashboardComponent.vue.d.ts +0 -337
  687. package/dist/src/components/dashboard/widgets/DisplayFileInDashboardComponent.vue.d.ts.map +0 -1
  688. package/dist/src/components/dashboard/widgets/ExternalApps.vue.d.ts +0 -32
  689. package/dist/src/components/dashboard/widgets/ExternalApps.vue.d.ts.map +0 -1
  690. package/dist/src/components/dashboard/widgets/FavoriteFileList.vue.d.ts +0 -45
  691. package/dist/src/components/dashboard/widgets/FavoriteFileList.vue.d.ts.map +0 -1
  692. package/dist/src/components/dashboard/widgets/FavoriteFolderList.vue.d.ts +0 -44
  693. package/dist/src/components/dashboard/widgets/FavoriteFolderList.vue.d.ts.map +0 -1
  694. package/dist/src/components/dashboard/widgets/FavoriteList.vue.d.ts +0 -167
  695. package/dist/src/components/dashboard/widgets/FavoriteList.vue.d.ts.map +0 -1
  696. package/dist/src/components/dashboard/widgets/FavoriteSiteList.vue.d.ts +0 -37
  697. package/dist/src/components/dashboard/widgets/FavoriteSiteList.vue.d.ts.map +0 -1
  698. package/dist/src/components/dashboard/widgets/MarkdownComponent.vue.d.ts +0 -31
  699. package/dist/src/components/dashboard/widgets/MarkdownComponent.vue.d.ts.map +0 -1
  700. package/dist/src/components/dashboard/widgets/OnlyImageDisplayed.vue.d.ts +0 -26
  701. package/dist/src/components/dashboard/widgets/OnlyImageDisplayed.vue.d.ts.map +0 -1
  702. package/dist/src/components/dashboard/widgets/SearchInput.vue.d.ts +0 -30
  703. package/dist/src/components/dashboard/widgets/SearchInput.vue.d.ts.map +0 -1
  704. package/dist/src/components/dashboard/widgets/UnknownBlockType.vue.d.ts +0 -14
  705. package/dist/src/components/dashboard/widgets/UnknownBlockType.vue.d.ts.map +0 -1
  706. package/dist/src/components/layouts/AppFooter.vue.d.ts +0 -115
  707. package/dist/src/components/layouts/AppFooter.vue.d.ts.map +0 -1
  708. package/dist/src/components/layouts/AppLayout.vue.d.ts +0 -866
  709. package/dist/src/components/layouts/AppLayout.vue.d.ts.map +0 -1
  710. package/dist/src/components/layouts/AppMobileLayout.vue.d.ts +0 -220
  711. package/dist/src/components/layouts/AppMobileLayout.vue.d.ts.map +0 -1
  712. package/dist/src/components/layouts/AppSidebar.vue.d.ts +0 -183
  713. package/dist/src/components/layouts/AppSidebar.vue.d.ts.map +0 -1
  714. package/dist/src/components/layouts/AppSubmenu.vue.d.ts +0 -66
  715. package/dist/src/components/layouts/AppSubmenu.vue.d.ts.map +0 -1
  716. package/dist/src/components/layouts/AppSwitcher.vue.d.ts +0 -63
  717. package/dist/src/components/layouts/AppSwitcher.vue.d.ts.map +0 -1
  718. package/dist/src/components/layouts/AppTopbar.vue.d.ts +0 -285
  719. package/dist/src/components/layouts/AppTopbar.vue.d.ts.map +0 -1
  720. package/dist/src/components/layouts/SidebarProfileSection.vue.d.ts +0 -64
  721. package/dist/src/components/layouts/SidebarProfileSection.vue.d.ts.map +0 -1
  722. package/dist/src/components/menu/ActionMenu.vue.d.ts +0 -26
  723. package/dist/src/components/menu/ActionMenu.vue.d.ts.map +0 -1
  724. package/dist/src/components/navigation/ColumnTogglePanel.vue.d.ts +0 -63
  725. package/dist/src/components/navigation/ColumnTogglePanel.vue.d.ts.map +0 -1
  726. package/dist/src/components/navigation/ContentCompactTableView.vue.d.ts +0 -378
  727. package/dist/src/components/navigation/ContentCompactTableView.vue.d.ts.map +0 -1
  728. package/dist/src/components/navigation/ContentFiltersHeader.vue.d.ts +0 -75
  729. package/dist/src/components/navigation/ContentFiltersHeader.vue.d.ts.map +0 -1
  730. package/dist/src/components/navigation/ContentGridView.vue.d.ts +0 -169
  731. package/dist/src/components/navigation/ContentGridView.vue.d.ts.map +0 -1
  732. package/dist/src/components/navigation/ContentListView.vue.d.ts +0 -156
  733. package/dist/src/components/navigation/ContentListView.vue.d.ts.map +0 -1
  734. package/dist/src/components/navigation/ContentTableView.vue.d.ts +0 -423
  735. package/dist/src/components/navigation/ContentTableView.vue.d.ts.map +0 -1
  736. package/dist/src/components/navigation/ContentToolbar.vue.d.ts +0 -19
  737. package/dist/src/components/navigation/ContentToolbar.vue.d.ts.map +0 -1
  738. package/dist/src/components/navigation/DynamicContentView.vue.d.ts +0 -1783
  739. package/dist/src/components/navigation/DynamicContentView.vue.d.ts.map +0 -1
  740. package/dist/src/components/navigation/GhostNodeRow.vue.d.ts +0 -34
  741. package/dist/src/components/navigation/GhostNodeRow.vue.d.ts.map +0 -1
  742. package/dist/src/components/navigation/LayoutSelector.vue.d.ts +0 -16
  743. package/dist/src/components/navigation/LayoutSelector.vue.d.ts.map +0 -1
  744. package/dist/src/components/navigation/PreviewPanel.vue.d.ts +0 -646
  745. package/dist/src/components/navigation/PreviewPanel.vue.d.ts.map +0 -1
  746. package/dist/src/components/navigation/SelectionBar.vue.d.ts +0 -90
  747. package/dist/src/components/navigation/SelectionBar.vue.d.ts.map +0 -1
  748. package/dist/src/components/pagination/PaginatorComponent.vue.d.ts +0 -43
  749. package/dist/src/components/pagination/PaginatorComponent.vue.d.ts.map +0 -1
  750. package/dist/src/components/pdfTools/PdfToolsComponent.vue.d.ts +0 -21
  751. package/dist/src/components/pdfTools/PdfToolsComponent.vue.d.ts.map +0 -1
  752. package/dist/src/components/pdfTools/PdfToolsLoading.vue.d.ts +0 -4
  753. package/dist/src/components/pdfTools/PdfToolsLoading.vue.d.ts.map +0 -1
  754. package/dist/src/components/pdfTools/SaveAsPopup.vue.d.ts +0 -14
  755. package/dist/src/components/pdfTools/SaveAsPopup.vue.d.ts.map +0 -1
  756. package/dist/src/components/popup/CopyOrMovePopup.vue.d.ts +0 -143
  757. package/dist/src/components/popup/CopyOrMovePopup.vue.d.ts.map +0 -1
  758. package/dist/src/components/popup/CreateWorkflowPopup.vue.d.ts +0 -79
  759. package/dist/src/components/popup/CreateWorkflowPopup.vue.d.ts.map +0 -1
  760. package/dist/src/components/popup/ImportNewVersionPopup.vue.d.ts +0 -28
  761. package/dist/src/components/popup/ImportNewVersionPopup.vue.d.ts.map +0 -1
  762. package/dist/src/components/popup/ImportPopupWithWorker.vue.d.ts +0 -171
  763. package/dist/src/components/popup/ImportPopupWithWorker.vue.d.ts.map +0 -1
  764. package/dist/src/components/popup/MemberListPopup.vue.d.ts +0 -183
  765. package/dist/src/components/popup/MemberListPopup.vue.d.ts.map +0 -1
  766. package/dist/src/components/popup/SendMailPopup.vue.d.ts +0 -69
  767. package/dist/src/components/popup/SendMailPopup.vue.d.ts.map +0 -1
  768. package/dist/src/components/popup/ShareLinkPopup.vue.d.ts +0 -39
  769. package/dist/src/components/popup/ShareLinkPopup.vue.d.ts.map +0 -1
  770. package/dist/src/components/search/AddCriterionPopup.vue.d.ts +0 -118
  771. package/dist/src/components/search/AddCriterionPopup.vue.d.ts.map +0 -1
  772. package/dist/src/components/search/AdvancedSearchPanel.vue.d.ts +0 -732
  773. package/dist/src/components/search/AdvancedSearchPanel.vue.d.ts.map +0 -1
  774. package/dist/src/components/search/AdvancedViewPanel.vue.d.ts +0 -863
  775. package/dist/src/components/search/AdvancedViewPanel.vue.d.ts.map +0 -1
  776. package/dist/src/components/search/ExactSearch.vue.d.ts +0 -41
  777. package/dist/src/components/search/ExactSearch.vue.d.ts.map +0 -1
  778. package/dist/src/components/search/FavoriteViewMenu.vue.d.ts +0 -36
  779. package/dist/src/components/search/FavoriteViewMenu.vue.d.ts.map +0 -1
  780. package/dist/src/components/search/SaveViewPopup.vue.d.ts +0 -109
  781. package/dist/src/components/search/SaveViewPopup.vue.d.ts.map +0 -1
  782. package/dist/src/components/search/UserViewsFavoritesPanel.vue.d.ts +0 -52
  783. package/dist/src/components/search/UserViewsFavoritesPanel.vue.d.ts.map +0 -1
  784. package/dist/src/components/search/ViewResultsPanel.vue.d.ts +0 -275
  785. package/dist/src/components/search/ViewResultsPanel.vue.d.ts.map +0 -1
  786. package/dist/src/components/toast/CustomToastContent.vue.d.ts +0 -72
  787. package/dist/src/components/toast/CustomToastContent.vue.d.ts.map +0 -1
  788. package/dist/src/components/users/MemberList.vue.d.ts +0 -142
  789. package/dist/src/components/users/MemberList.vue.d.ts.map +0 -1
  790. package/dist/src/components/viewer/ArchiveViewer.vue.d.ts +0 -14
  791. package/dist/src/components/viewer/ArchiveViewer.vue.d.ts.map +0 -1
  792. package/dist/src/components/viewer/AudioPlayer.vue.d.ts +0 -39
  793. package/dist/src/components/viewer/AudioPlayer.vue.d.ts.map +0 -1
  794. package/dist/src/components/viewer/CodeMirrorViewer.vue.d.ts +0 -13
  795. package/dist/src/components/viewer/CodeMirrorViewer.vue.d.ts.map +0 -1
  796. package/dist/src/components/viewer/ImageViewer.vue.d.ts +0 -85
  797. package/dist/src/components/viewer/ImageViewer.vue.d.ts.map +0 -1
  798. package/dist/src/components/viewer/PDFComponent.vue.d.ts +0 -449
  799. package/dist/src/components/viewer/PDFComponent.vue.d.ts.map +0 -1
  800. package/dist/src/components/viewer/PdfSignaturePanel.vue.d.ts +0 -9
  801. package/dist/src/components/viewer/PdfSignaturePanel.vue.d.ts.map +0 -1
  802. package/dist/src/components/viewer/VideoPlayer.vue.d.ts +0 -51
  803. package/dist/src/components/viewer/VideoPlayer.vue.d.ts.map +0 -1
  804. package/dist/src/components/viewer/lazyPdfComponents.d.ts +0 -444
  805. package/dist/src/components/viewer/lazyPdfComponents.d.ts.map +0 -1
  806. package/dist/src/components/views/PredefinedViewsPanel.vue.d.ts +0 -105
  807. package/dist/src/components/views/PredefinedViewsPanel.vue.d.ts.map +0 -1
  808. package/dist/src/components/views/ViewList.vue.d.ts +0 -14
  809. package/dist/src/components/views/ViewList.vue.d.ts.map +0 -1
  810. package/dist/src/components/workspace/WorkspaceCard.vue.d.ts +0 -331
  811. package/dist/src/components/workspace/WorkspaceCard.vue.d.ts.map +0 -1
  812. package/dist/src/components/workspace/WorkspaceList.vue.d.ts +0 -473
  813. package/dist/src/components/workspace/WorkspaceList.vue.d.ts.map +0 -1
  814. package/dist/src/composables/collabProtocol.d.ts.map +0 -1
  815. package/dist/src/composables/useAuth.d.ts.map +0 -1
  816. package/dist/src/composables/useChatWebSocket.d.ts.map +0 -1
  817. package/dist/src/composables/useClassificationPlan.d.ts.map +0 -1
  818. package/dist/src/composables/useCodeMirror.d.ts +0 -57
  819. package/dist/src/composables/useCodeMirror.d.ts.map +0 -1
  820. package/dist/src/composables/useCollabEditor.d.ts.map +0 -1
  821. package/dist/src/composables/useCollabWebSocket.d.ts.map +0 -1
  822. package/dist/src/composables/useColumnFilter.d.ts.map +0 -1
  823. package/dist/src/composables/useDragDrop.d.ts.map +0 -1
  824. package/dist/src/composables/useGhostNodes.d.ts.map +0 -1
  825. package/dist/src/composables/useGridValidation.d.ts.map +0 -1
  826. package/dist/src/composables/useLayout.d.ts.map +0 -1
  827. package/dist/src/composables/useMarkdownPreview.d.ts +0 -44
  828. package/dist/src/composables/useMarkdownPreview.d.ts.map +0 -1
  829. package/dist/src/composables/useResize.d.ts.map +0 -1
  830. package/dist/src/composables/useTheme.d.ts.map +0 -1
  831. package/dist/src/directives/assert.d.ts.map +0 -1
  832. package/dist/src/httpClientPatch.d.ts.map +0 -1
  833. package/dist/src/i18n/index.d.ts +0 -4305
  834. package/dist/src/i18n/index.d.ts.map +0 -1
  835. package/dist/src/i18n/locales/index.d.ts.map +0 -1
  836. package/dist/src/index.d.ts +0 -175
  837. package/dist/src/index.d.ts.map +0 -1
  838. package/dist/src/pages/ErrorPage.vue.d.ts +0 -6
  839. package/dist/src/pages/ErrorPage.vue.d.ts.map +0 -1
  840. package/dist/src/pages/LoginPage.vue.d.ts +0 -29
  841. package/dist/src/pages/LoginPage.vue.d.ts.map +0 -1
  842. package/dist/src/pages/NotFoundPages.vue.d.ts +0 -50
  843. package/dist/src/pages/NotFoundPages.vue.d.ts.map +0 -1
  844. package/dist/src/plugins/KeycloakPlugin.d.ts.map +0 -1
  845. package/dist/src/services/AftsQueryBuilder.d.ts.map +0 -1
  846. package/dist/src/services/AiImportService.d.ts +0 -125
  847. package/dist/src/services/AiImportService.d.ts.map +0 -1
  848. package/dist/src/services/AiMetadataService.d.ts +0 -81
  849. package/dist/src/services/AiMetadataService.d.ts.map +0 -1
  850. package/dist/src/services/AlfrescoFileService.d.ts.map +0 -1
  851. package/dist/src/services/AlfrescoModelService.d.ts.map +0 -1
  852. package/dist/src/services/AlfrescoNodeService.d.ts.map +0 -1
  853. package/dist/src/services/AlfrescoPermissionService.d.ts.map +0 -1
  854. package/dist/src/services/AlfrescoProxyService.d.ts.map +0 -1
  855. package/dist/src/services/AppSwitcherService.d.ts.map +0 -1
  856. package/dist/src/services/ArchiveService.d.ts +0 -49
  857. package/dist/src/services/ArchiveService.d.ts.map +0 -1
  858. package/dist/src/services/CapabilitiesService.d.ts.map +0 -1
  859. package/dist/src/services/ChatBackendService.d.ts.map +0 -1
  860. package/dist/src/services/ClassificationFileService.d.ts.map +0 -1
  861. package/dist/src/services/ClassificationService.d.ts.map +0 -1
  862. package/dist/src/services/CollabBackupService.d.ts.map +0 -1
  863. package/dist/src/services/CollabService.d.ts.map +0 -1
  864. package/dist/src/services/CollaboraAccessService.d.ts.map +0 -1
  865. package/dist/src/services/ConfigHealthService.d.ts.map +0 -1
  866. package/dist/src/services/ConfigService.d.ts.map +0 -1
  867. package/dist/src/services/DashboardService.d.ts +0 -77
  868. package/dist/src/services/DashboardService.d.ts.map +0 -1
  869. package/dist/src/services/DiffusionService.d.ts.map +0 -1
  870. package/dist/src/services/ErrorService.d.ts.map +0 -1
  871. package/dist/src/services/FavoriteService.d.ts.map +0 -1
  872. package/dist/src/services/FilingPlanService.d.ts.map +0 -1
  873. package/dist/src/services/FormatService.d.ts.map +0 -1
  874. package/dist/src/services/GhostMatcher.d.ts.map +0 -1
  875. package/dist/src/services/IconeService.d.ts.map +0 -1
  876. package/dist/src/services/IndexAwaitService.d.ts +0 -61
  877. package/dist/src/services/IndexAwaitService.d.ts.map +0 -1
  878. package/dist/src/services/KeyboardShortcutsService.d.ts.map +0 -1
  879. package/dist/src/services/LibVueActionService.d.ts.map +0 -1
  880. package/dist/src/services/MenuService.d.ts.map +0 -1
  881. package/dist/src/services/NodeDragService.d.ts.map +0 -1
  882. package/dist/src/services/NodeToMenuItemService.d.ts.map +0 -1
  883. package/dist/src/services/PdfCommentService.d.ts +0 -30
  884. package/dist/src/services/PdfCommentService.d.ts.map +0 -1
  885. package/dist/src/services/PdfConfigService.d.ts.map +0 -1
  886. package/dist/src/services/PdfFormService.d.ts.map +0 -1
  887. package/dist/src/services/PdfInsertService.d.ts.map +0 -1
  888. package/dist/src/services/PdfLinkService.d.ts.map +0 -1
  889. package/dist/src/services/PdfRedactionService.d.ts.map +0 -1
  890. package/dist/src/services/PdfSignatureService.d.ts.map +0 -1
  891. package/dist/src/services/PdfTextService.d.ts.map +0 -1
  892. package/dist/src/services/PeopleService.d.ts.map +0 -1
  893. package/dist/src/services/PlanSuggestService.d.ts.map +0 -1
  894. package/dist/src/services/PlanTreePdfService.d.ts.map +0 -1
  895. package/dist/src/services/PreviewService.d.ts.map +0 -1
  896. package/dist/src/services/RocketChatAuthService.d.ts.map +0 -1
  897. package/dist/src/services/RocketChatService.d.ts.map +0 -1
  898. package/dist/src/services/TranslationService.d.ts.map +0 -1
  899. package/dist/src/services/UserViewService.d.ts.map +0 -1
  900. package/dist/src/services/ViewConfigService.d.ts.map +0 -1
  901. package/dist/src/services/WorkflowService.d.ts.map +0 -1
  902. package/dist/src/services/WorkspaceService.d.ts.map +0 -1
  903. package/dist/src/services/aliasMap.d.ts.map +0 -1
  904. package/dist/src/services/auth/KeycloakAuthProvider.d.ts.map +0 -1
  905. package/dist/src/services/auth/OidcAuthProvider.d.ts.map +0 -1
  906. package/dist/src/services/auth/__tests__/FakeAuthProvider.d.ts.map +0 -1
  907. package/dist/src/services/auth/authProvider.d.ts.map +0 -1
  908. package/dist/src/services/auth/buildOidcSettings.d.ts.map +0 -1
  909. package/dist/src/services/criteriaLogic.d.ts.map +0 -1
  910. package/dist/src/services/userSearchQuery.d.ts.map +0 -1
  911. package/dist/src/stores/aiImport.d.ts +0 -43
  912. package/dist/src/stores/aiImport.d.ts.map +0 -1
  913. package/dist/src/stores/chat.d.ts.map +0 -1
  914. package/dist/src/stores/collab.d.ts.map +0 -1
  915. package/dist/src/stores/collabora.d.ts.map +0 -1
  916. package/dist/src/stores/config.d.ts +0 -341
  917. package/dist/src/stores/config.d.ts.map +0 -1
  918. package/dist/src/stores/favorites.d.ts.map +0 -1
  919. package/dist/src/stores/filingPlan.d.ts.map +0 -1
  920. package/dist/src/stores/indexAwait.d.ts.map +0 -1
  921. package/dist/src/stores/menu.d.ts.map +0 -1
  922. package/dist/src/stores/navigation.d.ts.map +0 -1
  923. package/dist/src/stores/paginator.d.ts.map +0 -1
  924. package/dist/src/stores/screen.d.ts.map +0 -1
  925. package/dist/src/stores/search.d.ts.map +0 -1
  926. package/dist/src/stores/selection.d.ts.map +0 -1
  927. package/dist/src/stores/taskNotification.d.ts.map +0 -1
  928. package/dist/src/stores/upload.d.ts.map +0 -1
  929. package/dist/src/stores/user.d.ts.map +0 -1
  930. package/dist/src/stores/userPreferences.d.ts.map +0 -1
  931. package/dist/src/stores/userView.d.ts.map +0 -1
  932. package/dist/src/typedef.d.ts.map +0 -1
  933. package/dist/src/utils/classificationPlanUtils.d.ts.map +0 -1
  934. package/dist/src/utils/indexAwaitReducer.d.ts.map +0 -1
  935. package/dist/src/utils/overflowUtils.d.ts.map +0 -1
  936. package/dist/src/utils/planTree.d.ts.map +0 -1
  937. package/dist/src/utils/treeA11y.d.ts.map +0 -1
  938. package/dist/src/utils/workspaceAppearance.d.ts.map +0 -1
  939. package/dist/src/workers/upload.worker.d.ts.map +0 -1
  940. /package/dist/{src/AlfrescoApi.d.ts → AlfrescoApi.d.ts} +0 -0
  941. /package/dist/{src/components → components}/dashboard/editor/blockDraft.d.ts +0 -0
  942. /package/dist/{src/components → components}/dashboard/editor/validators.d.ts +0 -0
  943. /package/dist/{src/composables → composables}/collabProtocol.d.ts +0 -0
  944. /package/dist/{src/composables → composables}/useAuth.d.ts +0 -0
  945. /package/dist/{src/composables → composables}/useChatWebSocket.d.ts +0 -0
  946. /package/dist/{src/composables → composables}/useClassificationPlan.d.ts +0 -0
  947. /package/dist/{src/composables → composables}/useCollabEditor.d.ts +0 -0
  948. /package/dist/{src/composables → composables}/useCollabWebSocket.d.ts +0 -0
  949. /package/dist/{src/composables → composables}/useColumnFilter.d.ts +0 -0
  950. /package/dist/{src/composables → composables}/useDragDrop.d.ts +0 -0
  951. /package/dist/{src/composables → composables}/useGhostNodes.d.ts +0 -0
  952. /package/dist/{src/composables → composables}/useGridValidation.d.ts +0 -0
  953. /package/dist/{src/composables → composables}/useLayout.d.ts +0 -0
  954. /package/dist/{src/composables → composables}/useResize.d.ts +0 -0
  955. /package/dist/{src/composables → composables}/useTheme.d.ts +0 -0
  956. /package/dist/{src/directives → directives}/assert.d.ts +0 -0
  957. /package/dist/{src/httpClientPatch.d.ts → httpClientPatch.d.ts} +0 -0
  958. /package/dist/{src/i18n → i18n}/locales/index.d.ts +0 -0
  959. /package/dist/{src/plugins → plugins}/KeycloakPlugin.d.ts +0 -0
  960. /package/dist/{src/services → services}/AftsQueryBuilder.d.ts +0 -0
  961. /package/dist/{src/services → services}/AlfrescoFileService.d.ts +0 -0
  962. /package/dist/{src/services → services}/AlfrescoModelService.d.ts +0 -0
  963. /package/dist/{src/services → services}/AlfrescoNodeService.d.ts +0 -0
  964. /package/dist/{src/services → services}/AlfrescoPermissionService.d.ts +0 -0
  965. /package/dist/{src/services → services}/AlfrescoProxyService.d.ts +0 -0
  966. /package/dist/{src/services → services}/AppSwitcherService.d.ts +0 -0
  967. /package/dist/{src/services → services}/CapabilitiesService.d.ts +0 -0
  968. /package/dist/{src/services → services}/ChatBackendService.d.ts +0 -0
  969. /package/dist/{src/services → services}/ClassificationFileService.d.ts +0 -0
  970. /package/dist/{src/services → services}/ClassificationService.d.ts +0 -0
  971. /package/dist/{src/services → services}/CollabBackupService.d.ts +0 -0
  972. /package/dist/{src/services → services}/CollabService.d.ts +0 -0
  973. /package/dist/{src/services → services}/CollaboraAccessService.d.ts +0 -0
  974. /package/dist/{src/services → services}/ConfigHealthService.d.ts +0 -0
  975. /package/dist/{src/services → services}/ConfigService.d.ts +0 -0
  976. /package/dist/{src/services → services}/DiffusionService.d.ts +0 -0
  977. /package/dist/{src/services → services}/ErrorService.d.ts +0 -0
  978. /package/dist/{src/services → services}/FavoriteService.d.ts +0 -0
  979. /package/dist/{src/services → services}/FilingPlanService.d.ts +0 -0
  980. /package/dist/{src/services → services}/FormatService.d.ts +0 -0
  981. /package/dist/{src/services → services}/GhostMatcher.d.ts +0 -0
  982. /package/dist/{src/services → services}/IconeService.d.ts +0 -0
  983. /package/dist/{src/services → services}/KeyboardShortcutsService.d.ts +0 -0
  984. /package/dist/{src/services → services}/LibVueActionService.d.ts +0 -0
  985. /package/dist/{src/services → services}/MenuService.d.ts +0 -0
  986. /package/dist/{src/services → services}/NodeDragService.d.ts +0 -0
  987. /package/dist/{src/services → services}/NodeToMenuItemService.d.ts +0 -0
  988. /package/dist/{src/services → services}/PdfConfigService.d.ts +0 -0
  989. /package/dist/{src/services → services}/PdfFormService.d.ts +0 -0
  990. /package/dist/{src/services → services}/PdfInsertService.d.ts +0 -0
  991. /package/dist/{src/services → services}/PdfLinkService.d.ts +0 -0
  992. /package/dist/{src/services → services}/PdfRedactionService.d.ts +0 -0
  993. /package/dist/{src/services → services}/PdfSignatureService.d.ts +0 -0
  994. /package/dist/{src/services → services}/PdfTextService.d.ts +0 -0
  995. /package/dist/{src/services → services}/PeopleService.d.ts +0 -0
  996. /package/dist/{src/services → services}/PlanSuggestService.d.ts +0 -0
  997. /package/dist/{src/services → services}/PlanTreePdfService.d.ts +0 -0
  998. /package/dist/{src/services → services}/PreviewService.d.ts +0 -0
  999. /package/dist/{src/services → services}/RocketChatAuthService.d.ts +0 -0
  1000. /package/dist/{src/services → services}/RocketChatService.d.ts +0 -0
  1001. /package/dist/{src/services → services}/TranslationService.d.ts +0 -0
  1002. /package/dist/{src/services → services}/UserViewService.d.ts +0 -0
  1003. /package/dist/{src/services → services}/ViewConfigService.d.ts +0 -0
  1004. /package/dist/{src/services → services}/WorkflowService.d.ts +0 -0
  1005. /package/dist/{src/services → services}/WorkspaceService.d.ts +0 -0
  1006. /package/dist/{src/services → services}/aliasMap.d.ts +0 -0
  1007. /package/dist/{src/services → services}/auth/KeycloakAuthProvider.d.ts +0 -0
  1008. /package/dist/{src/services → services}/auth/OidcAuthProvider.d.ts +0 -0
  1009. /package/dist/{src/services → services}/auth/__tests__/FakeAuthProvider.d.ts +0 -0
  1010. /package/dist/{src/services → services}/auth/authProvider.d.ts +0 -0
  1011. /package/dist/{src/services → services}/auth/buildOidcSettings.d.ts +0 -0
  1012. /package/dist/{src/services → services}/criteriaLogic.d.ts +0 -0
  1013. /package/dist/{src/services → services}/userSearchQuery.d.ts +0 -0
  1014. /package/dist/{src/stores → stores}/chat.d.ts +0 -0
  1015. /package/dist/{src/stores → stores}/collab.d.ts +0 -0
  1016. /package/dist/{src/stores → stores}/collabora.d.ts +0 -0
  1017. /package/dist/{src/stores → stores}/favorites.d.ts +0 -0
  1018. /package/dist/{src/stores → stores}/filingPlan.d.ts +0 -0
  1019. /package/dist/{src/stores → stores}/indexAwait.d.ts +0 -0
  1020. /package/dist/{src/stores → stores}/menu.d.ts +0 -0
  1021. /package/dist/{src/stores → stores}/navigation.d.ts +0 -0
  1022. /package/dist/{src/stores → stores}/paginator.d.ts +0 -0
  1023. /package/dist/{src/stores → stores}/screen.d.ts +0 -0
  1024. /package/dist/{src/stores → stores}/search.d.ts +0 -0
  1025. /package/dist/{src/stores → stores}/selection.d.ts +0 -0
  1026. /package/dist/{src/stores → stores}/taskNotification.d.ts +0 -0
  1027. /package/dist/{src/stores → stores}/upload.d.ts +0 -0
  1028. /package/dist/{src/stores → stores}/user.d.ts +0 -0
  1029. /package/dist/{src/stores → stores}/userPreferences.d.ts +0 -0
  1030. /package/dist/{src/stores → stores}/userView.d.ts +0 -0
  1031. /package/dist/{src/typedef.d.ts → typedef.d.ts} +0 -0
  1032. /package/dist/{src/utils → utils}/classificationPlanUtils.d.ts +0 -0
  1033. /package/dist/{src/utils → utils}/indexAwaitReducer.d.ts +0 -0
  1034. /package/dist/{src/utils → utils}/overflowUtils.d.ts +0 -0
  1035. /package/dist/{src/utils → utils}/planTree.d.ts +0 -0
  1036. /package/dist/{src/utils → utils}/treeA11y.d.ts +0 -0
  1037. /package/dist/{src/utils → utils}/workspaceAppearance.d.ts +0 -0
  1038. /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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"}