@sync-in/server 1.11.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1040) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE +1 -1
  3. package/README.md +3 -11
  4. package/environment/environment.dist.min.yaml +1 -1
  5. package/environment/environment.dist.yaml +173 -28
  6. package/package.json +17 -16
  7. package/server/app.bootstrap.js +1 -5
  8. package/server/app.bootstrap.js.map +1 -1
  9. package/server/app.constants.js +1 -5
  10. package/server/app.constants.js.map +1 -1
  11. package/server/app.e2e-spec.js +1 -5
  12. package/server/app.e2e-spec.js.map +1 -1
  13. package/server/app.functions.js +1 -5
  14. package/server/app.functions.js.map +1 -1
  15. package/server/app.module.js +1 -5
  16. package/server/app.module.js.map +1 -1
  17. package/server/app.service.js +1 -5
  18. package/server/app.service.js.map +1 -1
  19. package/server/app.service.spec.js +2 -6
  20. package/server/app.service.spec.js.map +1 -1
  21. package/server/applications/admin/admin.module.js +1 -5
  22. package/server/applications/admin/admin.module.js.map +1 -1
  23. package/server/applications/admin/constants/routes.js +1 -5
  24. package/server/applications/admin/constants/routes.js.map +1 -1
  25. package/server/applications/admin/interfaces/check-update.interfaces.js +1 -5
  26. package/server/applications/admin/interfaces/check-update.interfaces.js.map +1 -1
  27. package/server/applications/admin/services/admin-scheduler.service.js +1 -5
  28. package/server/applications/admin/services/admin-scheduler.service.js.map +1 -1
  29. package/server/applications/admin/services/admin.service.js +13 -8
  30. package/server/applications/admin/services/admin.service.js.map +1 -1
  31. package/server/applications/admin/services/admin.service.spec.js +1 -5
  32. package/server/applications/admin/services/admin.service.spec.js.map +1 -1
  33. package/server/applications/admin/utils/check-update.js +1 -5
  34. package/server/applications/admin/utils/check-update.js.map +1 -1
  35. package/server/applications/applications.config.js +1 -5
  36. package/server/applications/applications.config.js.map +1 -1
  37. package/server/applications/applications.constants.js +5 -5
  38. package/server/applications/applications.constants.js.map +1 -1
  39. package/server/applications/applications.module.js +1 -5
  40. package/server/applications/applications.module.js.map +1 -1
  41. package/server/applications/comments/comments.controller.js +1 -5
  42. package/server/applications/comments/comments.controller.js.map +1 -1
  43. package/server/applications/comments/comments.controller.spec.js +1 -5
  44. package/server/applications/comments/comments.controller.spec.js.map +1 -1
  45. package/server/applications/comments/comments.module.js +1 -5
  46. package/server/applications/comments/comments.module.js.map +1 -1
  47. package/server/applications/comments/constants/routes.js +1 -5
  48. package/server/applications/comments/constants/routes.js.map +1 -1
  49. package/server/applications/comments/dto/comment.dto.js +1 -5
  50. package/server/applications/comments/dto/comment.dto.js.map +1 -1
  51. package/server/applications/comments/interfaces/comment-recent.interface.js +1 -5
  52. package/server/applications/comments/interfaces/comment-recent.interface.js.map +1 -1
  53. package/server/applications/comments/schemas/comment.interface.js +1 -5
  54. package/server/applications/comments/schemas/comment.interface.js.map +1 -1
  55. package/server/applications/comments/schemas/comments.schema.js +1 -5
  56. package/server/applications/comments/schemas/comments.schema.js.map +1 -1
  57. package/server/applications/comments/services/comments-manager.service.js +9 -7
  58. package/server/applications/comments/services/comments-manager.service.js.map +1 -1
  59. package/server/applications/comments/services/comments-manager.service.spec.js +10 -8
  60. package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
  61. package/server/applications/comments/services/comments-queries.service.js +1 -5
  62. package/server/applications/comments/services/comments-queries.service.js.map +1 -1
  63. package/server/applications/files/adapters/files-indexer-mysql.service.js +29 -12
  64. package/server/applications/files/adapters/files-indexer-mysql.service.js.map +1 -1
  65. package/server/applications/files/adapters/files-indexer-mysql.service.spec.js +1 -5
  66. package/server/applications/files/adapters/files-indexer-mysql.service.spec.js.map +1 -1
  67. package/server/applications/files/constants/cache.js +1 -5
  68. package/server/applications/files/constants/cache.js.map +1 -1
  69. package/server/applications/files/constants/compress.js +1 -5
  70. package/server/applications/files/constants/compress.js.map +1 -1
  71. package/server/applications/files/constants/files.js +1 -5
  72. package/server/applications/files/constants/files.js.map +1 -1
  73. package/server/applications/files/constants/indexing.js +1 -5
  74. package/server/applications/files/constants/indexing.js.map +1 -1
  75. package/server/applications/files/constants/operations.js +1 -5
  76. package/server/applications/files/constants/operations.js.map +1 -1
  77. package/server/applications/files/constants/routes.js +1 -5
  78. package/server/applications/files/constants/routes.js.map +1 -1
  79. package/server/applications/files/constants/samples.js +1 -5
  80. package/server/applications/files/constants/samples.js.map +1 -1
  81. package/server/applications/files/dto/file-operations.dto.js +1 -5
  82. package/server/applications/files/dto/file-operations.dto.js.map +1 -1
  83. package/server/applications/files/events/file-task-event.js +1 -5
  84. package/server/applications/files/events/file-task-event.js.map +1 -1
  85. package/server/applications/files/files-tasks.controller.js +1 -5
  86. package/server/applications/files/files-tasks.controller.js.map +1 -1
  87. package/server/applications/files/files-tasks.controller.spec.js +1 -5
  88. package/server/applications/files/files-tasks.controller.spec.js.map +1 -1
  89. package/server/applications/files/files.config.js +1 -5
  90. package/server/applications/files/files.config.js.map +1 -1
  91. package/server/applications/files/files.controller.js +1 -5
  92. package/server/applications/files/files.controller.js.map +1 -1
  93. package/server/applications/files/files.controller.spec.js +1 -5
  94. package/server/applications/files/files.controller.spec.js.map +1 -1
  95. package/server/applications/files/files.module.js +1 -5
  96. package/server/applications/files/files.module.js.map +1 -1
  97. package/server/applications/files/interfaces/file-db-props.interface.js +1 -5
  98. package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -1
  99. package/server/applications/files/interfaces/file-lock.interface.js +1 -5
  100. package/server/applications/files/interfaces/file-lock.interface.js.map +1 -1
  101. package/server/applications/files/interfaces/file-parse-index.js +1 -5
  102. package/server/applications/files/interfaces/file-parse-index.js.map +1 -1
  103. package/server/applications/files/interfaces/file-props.interface.js +1 -5
  104. package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
  105. package/server/applications/files/interfaces/file-recent-location.interface.js +1 -5
  106. package/server/applications/files/interfaces/file-recent-location.interface.js.map +1 -1
  107. package/server/applications/files/interfaces/file-space.interface.js +1 -5
  108. package/server/applications/files/interfaces/file-space.interface.js.map +1 -1
  109. package/server/applications/files/interfaces/file-tree.interface.js +1 -5
  110. package/server/applications/files/interfaces/file-tree.interface.js.map +1 -1
  111. package/server/applications/files/models/file-error.js +1 -5
  112. package/server/applications/files/models/file-error.js.map +1 -1
  113. package/server/applications/files/models/file-lock-error.js +1 -5
  114. package/server/applications/files/models/file-lock-error.js.map +1 -1
  115. package/server/applications/files/models/file-task.js +1 -5
  116. package/server/applications/files/models/file-task.js.map +1 -1
  117. package/server/applications/files/models/files-indexer.js +1 -5
  118. package/server/applications/files/models/files-indexer.js.map +1 -1
  119. package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js +1 -5
  120. package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js.map +1 -1
  121. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js +21 -10
  122. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js.map +1 -1
  123. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js +1 -5
  124. package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js.map +1 -1
  125. package/server/applications/files/modules/collabora-online/collabora-online.config.js +1 -5
  126. package/server/applications/files/modules/collabora-online/collabora-online.config.js.map +1 -1
  127. package/server/applications/files/modules/collabora-online/collabora-online.constants.js +1 -5
  128. package/server/applications/files/modules/collabora-online/collabora-online.constants.js.map +1 -1
  129. package/server/applications/files/modules/collabora-online/collabora-online.controller.js +1 -5
  130. package/server/applications/files/modules/collabora-online/collabora-online.controller.js.map +1 -1
  131. package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js +1 -5
  132. package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js.map +1 -1
  133. package/server/applications/files/modules/collabora-online/collabora-online.dtos.js +1 -5
  134. package/server/applications/files/modules/collabora-online/collabora-online.dtos.js.map +1 -1
  135. package/server/applications/files/modules/collabora-online/collabora-online.guard.js +1 -5
  136. package/server/applications/files/modules/collabora-online/collabora-online.guard.js.map +1 -1
  137. package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js +1 -5
  138. package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js.map +1 -1
  139. package/server/applications/files/modules/collabora-online/collabora-online.interface.js +1 -5
  140. package/server/applications/files/modules/collabora-online/collabora-online.interface.js.map +1 -1
  141. package/server/applications/files/modules/collabora-online/collabora-online.module.js +1 -5
  142. package/server/applications/files/modules/collabora-online/collabora-online.module.js.map +1 -1
  143. package/server/applications/files/modules/collabora-online/collabora-online.routes.js +1 -5
  144. package/server/applications/files/modules/collabora-online/collabora-online.routes.js.map +1 -1
  145. package/server/applications/files/modules/collabora-online/collabora-online.strategy.js +1 -5
  146. package/server/applications/files/modules/collabora-online/collabora-online.strategy.js.map +1 -1
  147. package/server/applications/files/modules/collabora-online/collabora-online.utils.js +1 -5
  148. package/server/applications/files/modules/collabora-online/collabora-online.utils.js.map +1 -1
  149. package/server/applications/files/modules/file-editor-providers.interface.js +6 -0
  150. package/server/applications/files/modules/file-editor-providers.interface.js.map +1 -0
  151. package/server/applications/files/modules/only-office/only-office-environment.decorator.js +1 -5
  152. package/server/applications/files/modules/only-office/only-office-environment.decorator.js.map +1 -1
  153. package/server/applications/files/modules/only-office/only-office-manager.service.js +57 -19
  154. package/server/applications/files/modules/only-office/only-office-manager.service.js.map +1 -1
  155. package/server/applications/files/modules/only-office/only-office-manager.service.spec.js +1 -5
  156. package/server/applications/files/modules/only-office/only-office-manager.service.spec.js.map +1 -1
  157. package/server/applications/files/modules/only-office/only-office.config.js +1 -5
  158. package/server/applications/files/modules/only-office/only-office.config.js.map +1 -1
  159. package/server/applications/files/modules/only-office/only-office.constants.js +1 -5
  160. package/server/applications/files/modules/only-office/only-office.constants.js.map +1 -1
  161. package/server/applications/files/modules/only-office/only-office.controller.js +1 -5
  162. package/server/applications/files/modules/only-office/only-office.controller.js.map +1 -1
  163. package/server/applications/files/modules/only-office/only-office.controller.spec.js +1 -5
  164. package/server/applications/files/modules/only-office/only-office.controller.spec.js.map +1 -1
  165. package/server/applications/files/modules/only-office/only-office.dtos.js +1 -5
  166. package/server/applications/files/modules/only-office/only-office.dtos.js.map +1 -1
  167. package/server/applications/files/modules/only-office/only-office.guard.js +1 -5
  168. package/server/applications/files/modules/only-office/only-office.guard.js.map +1 -1
  169. package/server/applications/files/modules/only-office/only-office.guard.spec.js +1 -5
  170. package/server/applications/files/modules/only-office/only-office.guard.spec.js.map +1 -1
  171. package/server/applications/files/modules/only-office/only-office.interface.js +1 -5
  172. package/server/applications/files/modules/only-office/only-office.interface.js.map +1 -1
  173. package/server/applications/files/modules/only-office/only-office.module.js +1 -5
  174. package/server/applications/files/modules/only-office/only-office.module.js.map +1 -1
  175. package/server/applications/files/modules/only-office/only-office.routes.js +1 -5
  176. package/server/applications/files/modules/only-office/only-office.routes.js.map +1 -1
  177. package/server/applications/files/modules/only-office/only-office.strategy.js +1 -5
  178. package/server/applications/files/modules/only-office/only-office.strategy.js.map +1 -1
  179. package/server/applications/files/schemas/file-content.interface.js +1 -5
  180. package/server/applications/files/schemas/file-content.interface.js.map +1 -1
  181. package/server/applications/files/schemas/file-recent.interface.js +1 -5
  182. package/server/applications/files/schemas/file-recent.interface.js.map +1 -1
  183. package/server/applications/files/schemas/file.interface.js +1 -5
  184. package/server/applications/files/schemas/file.interface.js.map +1 -1
  185. package/server/applications/files/schemas/files-content.schema.js +1 -5
  186. package/server/applications/files/schemas/files-content.schema.js.map +1 -1
  187. package/server/applications/files/schemas/files-recents.schema.js +1 -5
  188. package/server/applications/files/schemas/files-recents.schema.js.map +1 -1
  189. package/server/applications/files/schemas/files.schema.js +1 -5
  190. package/server/applications/files/schemas/files.schema.js.map +1 -1
  191. package/server/applications/files/services/files-content-manager.service.js +45 -16
  192. package/server/applications/files/services/files-content-manager.service.js.map +1 -1
  193. package/server/applications/files/services/files-lock-manager.service.js +53 -18
  194. package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
  195. package/server/applications/files/services/files-lock-manager.service.spec.js +1 -5
  196. package/server/applications/files/services/files-lock-manager.service.spec.js.map +1 -1
  197. package/server/applications/files/services/files-manager.service.js +77 -24
  198. package/server/applications/files/services/files-manager.service.js.map +1 -1
  199. package/server/applications/files/services/files-manager.service.spec.js +1 -5
  200. package/server/applications/files/services/files-manager.service.spec.js.map +1 -1
  201. package/server/applications/files/services/files-methods.service.js +5 -6
  202. package/server/applications/files/services/files-methods.service.js.map +1 -1
  203. package/server/applications/files/services/files-methods.service.spec.js +1 -5
  204. package/server/applications/files/services/files-methods.service.spec.js.map +1 -1
  205. package/server/applications/files/services/files-parser.service.js +13 -8
  206. package/server/applications/files/services/files-parser.service.js.map +1 -1
  207. package/server/applications/files/services/files-parser.service.spec.js +1 -5
  208. package/server/applications/files/services/files-parser.service.spec.js.map +1 -1
  209. package/server/applications/files/services/files-queries.service.js +29 -12
  210. package/server/applications/files/services/files-queries.service.js.map +1 -1
  211. package/server/applications/files/services/files-recents.service.js +1 -5
  212. package/server/applications/files/services/files-recents.service.js.map +1 -1
  213. package/server/applications/files/services/files-recents.service.spec.js +1 -5
  214. package/server/applications/files/services/files-recents.service.spec.js.map +1 -1
  215. package/server/applications/files/services/files-scheduler.service.js +77 -24
  216. package/server/applications/files/services/files-scheduler.service.js.map +1 -1
  217. package/server/applications/files/services/files-search-manager.service.js +9 -7
  218. package/server/applications/files/services/files-search-manager.service.js.map +1 -1
  219. package/server/applications/files/services/files-search-manager.service.spec.js +1 -5
  220. package/server/applications/files/services/files-search-manager.service.spec.js.map +1 -1
  221. package/server/applications/files/services/files-tasks-manager.service.js +77 -24
  222. package/server/applications/files/services/files-tasks-manager.service.js.map +1 -1
  223. package/server/applications/files/services/files-tasks-manager.service.spec.js +1 -5
  224. package/server/applications/files/services/files-tasks-manager.service.spec.js.map +1 -1
  225. package/server/applications/files/utils/doc-textify/adapters/excel.js +1 -5
  226. package/server/applications/files/utils/doc-textify/adapters/excel.js.map +1 -1
  227. package/server/applications/files/utils/doc-textify/adapters/html.js +1 -5
  228. package/server/applications/files/utils/doc-textify/adapters/html.js.map +1 -1
  229. package/server/applications/files/utils/doc-textify/adapters/open-office.js +1 -5
  230. package/server/applications/files/utils/doc-textify/adapters/open-office.js.map +1 -1
  231. package/server/applications/files/utils/doc-textify/adapters/pdf.js +1 -5
  232. package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -1
  233. package/server/applications/files/utils/doc-textify/adapters/power-point.js +1 -5
  234. package/server/applications/files/utils/doc-textify/adapters/power-point.js.map +1 -1
  235. package/server/applications/files/utils/doc-textify/adapters/text.js +1 -5
  236. package/server/applications/files/utils/doc-textify/adapters/text.js.map +1 -1
  237. package/server/applications/files/utils/doc-textify/adapters/word.js +1 -5
  238. package/server/applications/files/utils/doc-textify/adapters/word.js.map +1 -1
  239. package/server/applications/files/utils/doc-textify/doc-textify.js +1 -5
  240. package/server/applications/files/utils/doc-textify/doc-textify.js.map +1 -1
  241. package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js +1 -5
  242. package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js.map +1 -1
  243. package/server/applications/files/utils/doc-textify/utils/clean.js +1 -5
  244. package/server/applications/files/utils/doc-textify/utils/clean.js.map +1 -1
  245. package/server/applications/files/utils/files-search.js +1 -5
  246. package/server/applications/files/utils/files-search.js.map +1 -1
  247. package/server/applications/files/utils/files-tree.js +1 -5
  248. package/server/applications/files/utils/files-tree.js.map +1 -1
  249. package/server/applications/files/utils/files.js +1 -5
  250. package/server/applications/files/utils/files.js.map +1 -1
  251. package/server/applications/files/utils/send-file.js +1 -5
  252. package/server/applications/files/utils/send-file.js.map +1 -1
  253. package/server/applications/files/utils/unzip-file.js +1 -5
  254. package/server/applications/files/utils/unzip-file.js.map +1 -1
  255. package/server/applications/files/utils/url-file.js +1 -5
  256. package/server/applications/files/utils/url-file.js.map +1 -1
  257. package/server/applications/links/constants/cache.js +1 -5
  258. package/server/applications/links/constants/cache.js.map +1 -1
  259. package/server/applications/links/constants/links.js +1 -5
  260. package/server/applications/links/constants/links.js.map +1 -1
  261. package/server/applications/links/constants/routes.js +1 -5
  262. package/server/applications/links/constants/routes.js.map +1 -1
  263. package/server/applications/links/dto/create-or-update-link.dto.js +1 -5
  264. package/server/applications/links/dto/create-or-update-link.dto.js.map +1 -1
  265. package/server/applications/links/interfaces/link-guest.interface.js +1 -5
  266. package/server/applications/links/interfaces/link-guest.interface.js.map +1 -1
  267. package/server/applications/links/interfaces/link-space.interface.js +1 -5
  268. package/server/applications/links/interfaces/link-space.interface.js.map +1 -1
  269. package/server/applications/links/links.controller.js +1 -5
  270. package/server/applications/links/links.controller.js.map +1 -1
  271. package/server/applications/links/links.controller.spec.js +1 -5
  272. package/server/applications/links/links.controller.spec.js.map +1 -1
  273. package/server/applications/links/schemas/link.interface.js +1 -5
  274. package/server/applications/links/schemas/link.interface.js.map +1 -1
  275. package/server/applications/links/schemas/links.schema.js +1 -5
  276. package/server/applications/links/schemas/links.schema.js.map +1 -1
  277. package/server/applications/links/services/links-manager.service.js +55 -20
  278. package/server/applications/links/services/links-manager.service.js.map +1 -1
  279. package/server/applications/links/services/links-manager.service.spec.js +3 -7
  280. package/server/applications/links/services/links-manager.service.spec.js.map +1 -1
  281. package/server/applications/links/services/links-queries.service.js +1 -5
  282. package/server/applications/links/services/links-queries.service.js.map +1 -1
  283. package/server/applications/notifications/constants/notifications.js +1 -5
  284. package/server/applications/notifications/constants/notifications.js.map +1 -1
  285. package/server/applications/notifications/constants/routes.js +1 -5
  286. package/server/applications/notifications/constants/routes.js.map +1 -1
  287. package/server/applications/notifications/constants/websocket.js +1 -5
  288. package/server/applications/notifications/constants/websocket.js.map +1 -1
  289. package/server/applications/notifications/i18n/de.js +1 -9
  290. package/server/applications/notifications/i18n/de.js.map +1 -1
  291. package/server/applications/notifications/i18n/es.js +1 -5
  292. package/server/applications/notifications/i18n/es.js.map +1 -1
  293. package/server/applications/notifications/i18n/fr.js +1 -5
  294. package/server/applications/notifications/i18n/fr.js.map +1 -1
  295. package/server/applications/notifications/i18n/hi.js +1 -5
  296. package/server/applications/notifications/i18n/hi.js.map +1 -1
  297. package/server/applications/notifications/i18n/index.js +1 -5
  298. package/server/applications/notifications/i18n/index.js.map +1 -1
  299. package/server/applications/notifications/i18n/it.js +1 -5
  300. package/server/applications/notifications/i18n/it.js.map +1 -1
  301. package/server/applications/notifications/i18n/ja.js +1 -5
  302. package/server/applications/notifications/i18n/ja.js.map +1 -1
  303. package/server/applications/notifications/i18n/ko.js +1 -5
  304. package/server/applications/notifications/i18n/ko.js.map +1 -1
  305. package/server/applications/notifications/i18n/pl.js +1 -5
  306. package/server/applications/notifications/i18n/pl.js.map +1 -1
  307. package/server/applications/notifications/i18n/pt.js +1 -5
  308. package/server/applications/notifications/i18n/pt.js.map +1 -1
  309. package/server/applications/notifications/i18n/pt_br.js +1 -5
  310. package/server/applications/notifications/i18n/pt_br.js.map +1 -1
  311. package/server/applications/notifications/i18n/ru.js +1 -5
  312. package/server/applications/notifications/i18n/ru.js.map +1 -1
  313. package/server/applications/notifications/i18n/tr.js +1 -5
  314. package/server/applications/notifications/i18n/tr.js.map +1 -1
  315. package/server/applications/notifications/i18n/zh.js +1 -5
  316. package/server/applications/notifications/i18n/zh.js.map +1 -1
  317. package/server/applications/notifications/interfaces/notification-properties.interface.js +1 -5
  318. package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -1
  319. package/server/applications/notifications/interfaces/user-mail-notification.interface.js +1 -5
  320. package/server/applications/notifications/interfaces/user-mail-notification.interface.js.map +1 -1
  321. package/server/applications/notifications/mails/models.js +1 -5
  322. package/server/applications/notifications/mails/models.js.map +1 -1
  323. package/server/applications/notifications/mails/templates.js +1 -5
  324. package/server/applications/notifications/mails/templates.js.map +1 -1
  325. package/server/applications/notifications/mails/urls.js +1 -5
  326. package/server/applications/notifications/mails/urls.js.map +1 -1
  327. package/server/applications/notifications/notifications.controller.js +1 -5
  328. package/server/applications/notifications/notifications.controller.js.map +1 -1
  329. package/server/applications/notifications/notifications.controller.spec.js +1 -5
  330. package/server/applications/notifications/notifications.controller.spec.js.map +1 -1
  331. package/server/applications/notifications/notifications.gateway.js +1 -5
  332. package/server/applications/notifications/notifications.gateway.js.map +1 -1
  333. package/server/applications/notifications/notifications.module.js +1 -5
  334. package/server/applications/notifications/notifications.module.js.map +1 -1
  335. package/server/applications/notifications/schemas/notification.interface.js +1 -5
  336. package/server/applications/notifications/schemas/notification.interface.js.map +1 -1
  337. package/server/applications/notifications/schemas/notifications.schema.js +1 -5
  338. package/server/applications/notifications/schemas/notifications.schema.js.map +1 -1
  339. package/server/applications/notifications/services/notifications-manager.service.js +25 -11
  340. package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
  341. package/server/applications/notifications/services/notifications-manager.service.spec.js +20 -11
  342. package/server/applications/notifications/services/notifications-manager.service.spec.js.map +1 -1
  343. package/server/applications/notifications/services/notifications-queries.service.js +1 -5
  344. package/server/applications/notifications/services/notifications-queries.service.js.map +1 -1
  345. package/server/applications/shares/constants/routes.js +1 -5
  346. package/server/applications/shares/constants/routes.js.map +1 -1
  347. package/server/applications/shares/constants/shares.js +1 -5
  348. package/server/applications/shares/constants/shares.js.map +1 -1
  349. package/server/applications/shares/dto/create-or-update-share.dto.js +1 -5
  350. package/server/applications/shares/dto/create-or-update-share.dto.js.map +1 -1
  351. package/server/applications/shares/interfaces/share-child.interface.js +1 -5
  352. package/server/applications/shares/interfaces/share-child.interface.js.map +1 -1
  353. package/server/applications/shares/interfaces/share-env.interface.js +1 -5
  354. package/server/applications/shares/interfaces/share-env.interface.js.map +1 -1
  355. package/server/applications/shares/interfaces/share-file.interface.js +1 -5
  356. package/server/applications/shares/interfaces/share-file.interface.js.map +1 -1
  357. package/server/applications/shares/interfaces/share-link.interface.js +1 -5
  358. package/server/applications/shares/interfaces/share-link.interface.js.map +1 -1
  359. package/server/applications/shares/interfaces/share-props.interface.js +1 -5
  360. package/server/applications/shares/interfaces/share-props.interface.js.map +1 -1
  361. package/server/applications/shares/models/share-child.model.js +1 -5
  362. package/server/applications/shares/models/share-child.model.js.map +1 -1
  363. package/server/applications/shares/schemas/share-members.interface.js +1 -5
  364. package/server/applications/shares/schemas/share-members.interface.js.map +1 -1
  365. package/server/applications/shares/schemas/share.interface.js +1 -5
  366. package/server/applications/shares/schemas/share.interface.js.map +1 -1
  367. package/server/applications/shares/schemas/shares-members.schema.js +1 -5
  368. package/server/applications/shares/schemas/shares-members.schema.js.map +1 -1
  369. package/server/applications/shares/schemas/shares.schema.js +1 -5
  370. package/server/applications/shares/schemas/shares.schema.js.map +1 -1
  371. package/server/applications/shares/services/shares-manager.service.js +214 -68
  372. package/server/applications/shares/services/shares-manager.service.js.map +1 -1
  373. package/server/applications/shares/services/shares-manager.service.spec.js +1 -5
  374. package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
  375. package/server/applications/shares/services/shares-queries.service.js +49 -17
  376. package/server/applications/shares/services/shares-queries.service.js.map +1 -1
  377. package/server/applications/shares/shares.controller.js +1 -5
  378. package/server/applications/shares/shares.controller.js.map +1 -1
  379. package/server/applications/shares/shares.controller.spec.js +1 -5
  380. package/server/applications/shares/shares.controller.spec.js.map +1 -1
  381. package/server/applications/shares/shares.module.js +1 -5
  382. package/server/applications/shares/shares.module.js.map +1 -1
  383. package/server/applications/spaces/constants/cache.js +1 -5
  384. package/server/applications/spaces/constants/cache.js.map +1 -1
  385. package/server/applications/spaces/constants/routes.js +1 -5
  386. package/server/applications/spaces/constants/routes.js.map +1 -1
  387. package/server/applications/spaces/constants/spaces.js +1 -5
  388. package/server/applications/spaces/constants/spaces.js.map +1 -1
  389. package/server/applications/spaces/decorators/space-override-permission.decorator.js +1 -5
  390. package/server/applications/spaces/decorators/space-override-permission.decorator.js.map +1 -1
  391. package/server/applications/spaces/decorators/space-skip-guard.decorator.js +1 -5
  392. package/server/applications/spaces/decorators/space-skip-guard.decorator.js.map +1 -1
  393. package/server/applications/spaces/decorators/space-skip-permissions.decorator.js +1 -5
  394. package/server/applications/spaces/decorators/space-skip-permissions.decorator.js.map +1 -1
  395. package/server/applications/spaces/decorators/space.decorator.js +1 -5
  396. package/server/applications/spaces/decorators/space.decorator.js.map +1 -1
  397. package/server/applications/spaces/dto/create-or-update-space.dto.js +1 -5
  398. package/server/applications/spaces/dto/create-or-update-space.dto.js.map +1 -1
  399. package/server/applications/spaces/dto/delete-space.dto.js +1 -5
  400. package/server/applications/spaces/dto/delete-space.dto.js.map +1 -1
  401. package/server/applications/spaces/dto/search-space.dto.js +1 -5
  402. package/server/applications/spaces/dto/search-space.dto.js.map +1 -1
  403. package/server/applications/spaces/dto/space-roots.dto.js +1 -5
  404. package/server/applications/spaces/dto/space-roots.dto.js.map +1 -1
  405. package/server/applications/spaces/guards/space.guard.js +17 -9
  406. package/server/applications/spaces/guards/space.guard.js.map +1 -1
  407. package/server/applications/spaces/guards/space.guard.spec.js +1 -5
  408. package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
  409. package/server/applications/spaces/interfaces/space-diff.interface.js +1 -5
  410. package/server/applications/spaces/interfaces/space-diff.interface.js.map +1 -1
  411. package/server/applications/spaces/interfaces/space-files.interface.js +1 -5
  412. package/server/applications/spaces/interfaces/space-files.interface.js.map +1 -1
  413. package/server/applications/spaces/interfaces/space-request.interface.js +1 -5
  414. package/server/applications/spaces/interfaces/space-request.interface.js.map +1 -1
  415. package/server/applications/spaces/interfaces/space-trash.interface.js +1 -5
  416. package/server/applications/spaces/interfaces/space-trash.interface.js.map +1 -1
  417. package/server/applications/spaces/models/space-env.model.js +1 -5
  418. package/server/applications/spaces/models/space-env.model.js.map +1 -1
  419. package/server/applications/spaces/models/space-props.model.js +1 -5
  420. package/server/applications/spaces/models/space-props.model.js.map +1 -1
  421. package/server/applications/spaces/models/space-root-props.model.js +1 -5
  422. package/server/applications/spaces/models/space-root-props.model.js.map +1 -1
  423. package/server/applications/spaces/models/space.model.js +1 -5
  424. package/server/applications/spaces/models/space.model.js.map +1 -1
  425. package/server/applications/spaces/schemas/space-members.interface.js +1 -5
  426. package/server/applications/spaces/schemas/space-members.interface.js.map +1 -1
  427. package/server/applications/spaces/schemas/space-root.interface.js +1 -5
  428. package/server/applications/spaces/schemas/space-root.interface.js.map +1 -1
  429. package/server/applications/spaces/schemas/space.interface.js +1 -5
  430. package/server/applications/spaces/schemas/space.interface.js.map +1 -1
  431. package/server/applications/spaces/schemas/spaces-members.schema.js +1 -5
  432. package/server/applications/spaces/schemas/spaces-members.schema.js.map +1 -1
  433. package/server/applications/spaces/schemas/spaces-roots.schema.js +1 -5
  434. package/server/applications/spaces/schemas/spaces-roots.schema.js.map +1 -1
  435. package/server/applications/spaces/schemas/spaces.schema.js +1 -5
  436. package/server/applications/spaces/schemas/spaces.schema.js.map +1 -1
  437. package/server/applications/spaces/services/spaces-browser.service.js +77 -24
  438. package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
  439. package/server/applications/spaces/services/spaces-browser.service.spec.js +1 -5
  440. package/server/applications/spaces/services/spaces-browser.service.spec.js.map +1 -1
  441. package/server/applications/spaces/services/spaces-manager.service.js +193 -53
  442. package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
  443. package/server/applications/spaces/services/spaces-manager.service.spec.js +1 -5
  444. package/server/applications/spaces/services/spaces-manager.service.spec.js.map +1 -1
  445. package/server/applications/spaces/services/spaces-queries.service.js +65 -21
  446. package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
  447. package/server/applications/spaces/services/spaces-scheduler.service.js +49 -17
  448. package/server/applications/spaces/services/spaces-scheduler.service.js.map +1 -1
  449. package/server/applications/spaces/spaces.controller.js +1 -5
  450. package/server/applications/spaces/spaces.controller.js.map +1 -1
  451. package/server/applications/spaces/spaces.controller.spec.js +1 -5
  452. package/server/applications/spaces/spaces.controller.spec.js.map +1 -1
  453. package/server/applications/spaces/spaces.module.js +1 -5
  454. package/server/applications/spaces/spaces.module.js.map +1 -1
  455. package/server/applications/spaces/utils/paths.js +1 -5
  456. package/server/applications/spaces/utils/paths.js.map +1 -1
  457. package/server/applications/spaces/utils/permissions.js +1 -5
  458. package/server/applications/spaces/utils/permissions.js.map +1 -1
  459. package/server/applications/spaces/utils/routes.js +1 -5
  460. package/server/applications/spaces/utils/routes.js.map +1 -1
  461. package/server/applications/sync/constants/auth.js +1 -5
  462. package/server/applications/sync/constants/auth.js.map +1 -1
  463. package/server/applications/sync/constants/routes.js +6 -5
  464. package/server/applications/sync/constants/routes.js.map +1 -1
  465. package/server/applications/sync/constants/store.js +1 -9
  466. package/server/applications/sync/constants/store.js.map +1 -1
  467. package/server/applications/sync/constants/sync.js +2 -6
  468. package/server/applications/sync/constants/sync.js.map +1 -1
  469. package/server/applications/sync/decorators/sync-context.decorator.js +1 -5
  470. package/server/applications/sync/decorators/sync-context.decorator.js.map +1 -1
  471. package/server/applications/sync/decorators/sync-environment.decorator.js +1 -5
  472. package/server/applications/sync/decorators/sync-environment.decorator.js.map +1 -1
  473. package/server/applications/sync/dtos/sync-client-auth.dto.js +12 -8
  474. package/server/applications/sync/dtos/sync-client-auth.dto.js.map +1 -1
  475. package/server/applications/sync/dtos/sync-client-info.dto.js +49 -0
  476. package/server/applications/sync/dtos/sync-client-info.dto.js.map +1 -0
  477. package/server/applications/sync/dtos/sync-client-registration.dto.js +34 -11
  478. package/server/applications/sync/dtos/sync-client-registration.dto.js.map +1 -1
  479. package/server/applications/sync/dtos/sync-operations.dto.js +1 -5
  480. package/server/applications/sync/dtos/sync-operations.dto.js.map +1 -1
  481. package/server/applications/sync/dtos/sync-path.dto.js +1 -5
  482. package/server/applications/sync/dtos/sync-path.dto.js.map +1 -1
  483. package/server/applications/sync/dtos/sync-upload.dto.js +1 -5
  484. package/server/applications/sync/dtos/sync-upload.dto.js.map +1 -1
  485. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js +1 -5
  486. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js.map +1 -1
  487. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js +1 -5
  488. package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js.map +1 -1
  489. package/server/applications/sync/interfaces/store-manifest.interface.js +1 -5
  490. package/server/applications/sync/interfaces/store-manifest.interface.js.map +1 -1
  491. package/server/applications/sync/interfaces/sync-client-auth.interface.js +1 -25
  492. package/server/applications/sync/interfaces/sync-client-auth.interface.js.map +1 -1
  493. package/server/applications/sync/interfaces/sync-client-paths.interface.js +1 -5
  494. package/server/applications/sync/interfaces/sync-client-paths.interface.js.map +1 -1
  495. package/server/applications/sync/interfaces/sync-client.interface.js +1 -5
  496. package/server/applications/sync/interfaces/sync-client.interface.js.map +1 -1
  497. package/server/applications/sync/interfaces/sync-diff.interface.js +1 -5
  498. package/server/applications/sync/interfaces/sync-diff.interface.js.map +1 -1
  499. package/server/applications/sync/interfaces/sync-path.interface.js +1 -5
  500. package/server/applications/sync/interfaces/sync-path.interface.js.map +1 -1
  501. package/server/applications/sync/schemas/sync-client.interface.js +1 -5
  502. package/server/applications/sync/schemas/sync-client.interface.js.map +1 -1
  503. package/server/applications/sync/schemas/sync-clients.schema.js +1 -5
  504. package/server/applications/sync/schemas/sync-clients.schema.js.map +1 -1
  505. package/server/applications/sync/schemas/sync-path.interface.js +1 -5
  506. package/server/applications/sync/schemas/sync-path.interface.js.map +1 -1
  507. package/server/applications/sync/schemas/sync-paths.schema.js +1 -5
  508. package/server/applications/sync/schemas/sync-paths.schema.js.map +1 -1
  509. package/server/applications/sync/services/sync-clients-manager.service.js +108 -44
  510. package/server/applications/sync/services/sync-clients-manager.service.js.map +1 -1
  511. package/server/applications/sync/services/sync-clients-manager.service.spec.js +14 -17
  512. package/server/applications/sync/services/sync-clients-manager.service.spec.js.map +1 -1
  513. package/server/applications/sync/services/sync-manager.service.js +29 -12
  514. package/server/applications/sync/services/sync-manager.service.js.map +1 -1
  515. package/server/applications/sync/services/sync-manager.service.spec.js +1 -5
  516. package/server/applications/sync/services/sync-manager.service.spec.js.map +1 -1
  517. package/server/applications/sync/services/sync-paths-manager.service.js +27 -17
  518. package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
  519. package/server/applications/sync/services/sync-paths-manager.service.spec.js +11 -15
  520. package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
  521. package/server/applications/sync/services/sync-queries.service.js +1 -5
  522. package/server/applications/sync/services/sync-queries.service.js.map +1 -1
  523. package/server/applications/sync/sync.config.js +1 -5
  524. package/server/applications/sync/sync.config.js.map +1 -1
  525. package/server/applications/sync/sync.controller.js +21 -6
  526. package/server/applications/sync/sync.controller.js.map +1 -1
  527. package/server/applications/sync/sync.controller.spec.js +1 -5
  528. package/server/applications/sync/sync.controller.spec.js.map +1 -1
  529. package/server/applications/sync/sync.module.js +1 -5
  530. package/server/applications/sync/sync.module.js.map +1 -1
  531. package/server/applications/sync/utils/functions.js +1 -5
  532. package/server/applications/sync/utils/functions.js.map +1 -1
  533. package/server/applications/sync/utils/normalizedMap.js +1 -5
  534. package/server/applications/sync/utils/normalizedMap.js.map +1 -1
  535. package/server/applications/sync/utils/routes.js +1 -5
  536. package/server/applications/sync/utils/routes.js.map +1 -1
  537. package/server/applications/users/admin-users.controller.js +2 -6
  538. package/server/applications/users/admin-users.controller.js.map +1 -1
  539. package/server/applications/users/admin-users.controller.spec.js +6 -10
  540. package/server/applications/users/admin-users.controller.spec.js.map +1 -1
  541. package/server/applications/users/constants/group.js +1 -5
  542. package/server/applications/users/constants/group.js.map +1 -1
  543. package/server/applications/users/constants/member.js +1 -5
  544. package/server/applications/users/constants/member.js.map +1 -1
  545. package/server/applications/users/constants/routes.js +1 -5
  546. package/server/applications/users/constants/routes.js.map +1 -1
  547. package/server/applications/users/constants/user.js +1 -5
  548. package/server/applications/users/constants/user.js.map +1 -1
  549. package/server/applications/users/constants/websocket.js +1 -5
  550. package/server/applications/users/constants/websocket.js.map +1 -1
  551. package/server/applications/users/decorators/permissions.decorator.js +1 -5
  552. package/server/applications/users/decorators/permissions.decorator.js.map +1 -1
  553. package/server/applications/users/decorators/roles.decorator.js +1 -5
  554. package/server/applications/users/decorators/roles.decorator.js.map +1 -1
  555. package/server/applications/users/decorators/user.decorator.js +1 -5
  556. package/server/applications/users/decorators/user.decorator.js.map +1 -1
  557. package/server/applications/users/dto/create-or-update-group.dto.js +1 -5
  558. package/server/applications/users/dto/create-or-update-group.dto.js.map +1 -1
  559. package/server/applications/users/dto/create-or-update-user.dto.js +1 -5
  560. package/server/applications/users/dto/create-or-update-user.dto.js.map +1 -1
  561. package/server/applications/users/dto/delete-user.dto.js +1 -5
  562. package/server/applications/users/dto/delete-user.dto.js.map +1 -1
  563. package/server/applications/users/dto/search-members.dto.js +1 -5
  564. package/server/applications/users/dto/search-members.dto.js.map +1 -1
  565. package/server/applications/users/dto/user-properties.dto.js +1 -5
  566. package/server/applications/users/dto/user-properties.dto.js.map +1 -1
  567. package/server/applications/users/guards/permissions.guard.js +1 -5
  568. package/server/applications/users/guards/permissions.guard.js.map +1 -1
  569. package/server/applications/users/guards/permissions.guard.spec.js +1 -5
  570. package/server/applications/users/guards/permissions.guard.spec.js.map +1 -1
  571. package/server/applications/users/guards/roles.guard.js +1 -5
  572. package/server/applications/users/guards/roles.guard.js.map +1 -1
  573. package/server/applications/users/guards/roles.guard.spec.js +1 -5
  574. package/server/applications/users/guards/roles.guard.spec.js.map +1 -1
  575. package/server/applications/users/interfaces/admin-group.interface.js +1 -5
  576. package/server/applications/users/interfaces/admin-group.interface.js.map +1 -1
  577. package/server/applications/users/interfaces/admin-user.interface.js +1 -5
  578. package/server/applications/users/interfaces/admin-user.interface.js.map +1 -1
  579. package/server/applications/users/interfaces/group-browse.interface.js +1 -5
  580. package/server/applications/users/interfaces/group-browse.interface.js.map +1 -1
  581. package/server/applications/users/interfaces/group-member.js +1 -5
  582. package/server/applications/users/interfaces/group-member.js.map +1 -1
  583. package/server/applications/users/interfaces/guest-user.interface.js +1 -5
  584. package/server/applications/users/interfaces/guest-user.interface.js.map +1 -1
  585. package/server/applications/users/interfaces/member.interface.js +1 -5
  586. package/server/applications/users/interfaces/member.interface.js.map +1 -1
  587. package/server/applications/users/interfaces/owner.interface.js +1 -5
  588. package/server/applications/users/interfaces/owner.interface.js.map +1 -1
  589. package/server/applications/users/interfaces/user-secrets.interface.js +1 -5
  590. package/server/applications/users/interfaces/user-secrets.interface.js.map +1 -1
  591. package/server/applications/users/interfaces/websocket.interface.js +1 -5
  592. package/server/applications/users/interfaces/websocket.interface.js.map +1 -1
  593. package/server/applications/users/models/user.model.js +1 -5
  594. package/server/applications/users/models/user.model.js.map +1 -1
  595. package/server/applications/users/schemas/group.interface.js +1 -5
  596. package/server/applications/users/schemas/group.interface.js.map +1 -1
  597. package/server/applications/users/schemas/groups.schema.js +1 -5
  598. package/server/applications/users/schemas/groups.schema.js.map +1 -1
  599. package/server/applications/users/schemas/user-group.interface.js +1 -5
  600. package/server/applications/users/schemas/user-group.interface.js.map +1 -1
  601. package/server/applications/users/schemas/user.interface.js +1 -5
  602. package/server/applications/users/schemas/user.interface.js.map +1 -1
  603. package/server/applications/users/schemas/users-groups.schema.js +1 -5
  604. package/server/applications/users/schemas/users-groups.schema.js.map +1 -1
  605. package/server/applications/users/schemas/users-guests.schema.js +1 -5
  606. package/server/applications/users/schemas/users-guests.schema.js.map +1 -1
  607. package/server/applications/users/schemas/users.schema.js +1 -5
  608. package/server/applications/users/schemas/users.schema.js.map +1 -1
  609. package/server/applications/users/services/admin-users-manager.service.js +67 -23
  610. package/server/applications/users/services/admin-users-manager.service.js.map +1 -1
  611. package/server/applications/users/services/admin-users-manager.service.spec.js +3 -7
  612. package/server/applications/users/services/admin-users-manager.service.spec.js.map +1 -1
  613. package/server/applications/users/services/admin-users-queries.service.js +65 -21
  614. package/server/applications/users/services/admin-users-queries.service.js.map +1 -1
  615. package/server/applications/users/services/users-manager.service.js +81 -25
  616. package/server/applications/users/services/users-manager.service.js.map +1 -1
  617. package/server/applications/users/services/users-manager.service.spec.js +14 -12
  618. package/server/applications/users/services/users-manager.service.spec.js.map +1 -1
  619. package/server/applications/users/services/users-queries.service.js +49 -17
  620. package/server/applications/users/services/users-queries.service.js.map +1 -1
  621. package/server/applications/users/users.controller.js +2 -6
  622. package/server/applications/users/users.controller.js.map +1 -1
  623. package/server/applications/users/users.controller.spec.js +5 -9
  624. package/server/applications/users/users.controller.spec.js.map +1 -1
  625. package/server/applications/users/users.e2e-spec.js +3 -7
  626. package/server/applications/users/users.e2e-spec.js.map +1 -1
  627. package/server/applications/users/users.gateway.js +29 -12
  628. package/server/applications/users/users.gateway.js.map +1 -1
  629. package/server/applications/users/users.gateway.spec.js +1 -5
  630. package/server/applications/users/users.gateway.spec.js.map +1 -1
  631. package/server/applications/users/users.module.js +1 -5
  632. package/server/applications/users/users.module.js.map +1 -1
  633. package/server/applications/users/utils/avatar.js +1 -5
  634. package/server/applications/users/utils/avatar.js.map +1 -1
  635. package/server/applications/users/utils/test.js +1 -5
  636. package/server/applications/users/utils/test.js.map +1 -1
  637. package/server/applications/webdav/constants/routes.js +1 -5
  638. package/server/applications/webdav/constants/routes.js.map +1 -1
  639. package/server/applications/webdav/constants/webdav.js +1 -5
  640. package/server/applications/webdav/constants/webdav.js.map +1 -1
  641. package/server/applications/webdav/decorators/if-header.decorator.js +1 -5
  642. package/server/applications/webdav/decorators/if-header.decorator.js.map +1 -1
  643. package/server/applications/webdav/decorators/webdav-context.decorator.js +1 -5
  644. package/server/applications/webdav/decorators/webdav-context.decorator.js.map +1 -1
  645. package/server/applications/webdav/filters/webdav.filter.js +1 -5
  646. package/server/applications/webdav/filters/webdav.filter.js.map +1 -1
  647. package/server/applications/webdav/filters/webdav.filter.spec.js +1 -5
  648. package/server/applications/webdav/filters/webdav.filter.spec.js.map +1 -1
  649. package/server/applications/webdav/guards/webdav-protocol.guard.js +54 -20
  650. package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
  651. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +54 -0
  652. package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
  653. package/server/applications/webdav/interfaces/if-header.interface.js +1 -5
  654. package/server/applications/webdav/interfaces/if-header.interface.js.map +1 -1
  655. package/server/applications/webdav/interfaces/webdav.interface.js +1 -5
  656. package/server/applications/webdav/interfaces/webdav.interface.js.map +1 -1
  657. package/server/applications/webdav/models/webdav-file.model.js +1 -5
  658. package/server/applications/webdav/models/webdav-file.model.js.map +1 -1
  659. package/server/applications/webdav/services/webdav-methods.service.js +74 -26
  660. package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
  661. package/server/applications/webdav/services/webdav-methods.service.spec.js +15 -18
  662. package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
  663. package/server/applications/webdav/services/webdav-spaces.service.js +17 -9
  664. package/server/applications/webdav/services/webdav-spaces.service.js.map +1 -1
  665. package/server/applications/webdav/services/webdav-spaces.service.spec.js +1 -5
  666. package/server/applications/webdav/services/webdav-spaces.service.spec.js.map +1 -1
  667. package/server/applications/webdav/utils/bootstrap.js +1 -5
  668. package/server/applications/webdav/utils/bootstrap.js.map +1 -1
  669. package/server/applications/webdav/utils/if-header.js +1 -5
  670. package/server/applications/webdav/utils/if-header.js.map +1 -1
  671. package/server/applications/webdav/utils/routes.js +1 -5
  672. package/server/applications/webdav/utils/routes.js.map +1 -1
  673. package/server/applications/webdav/utils/webdav.js +1 -5
  674. package/server/applications/webdav/utils/webdav.js.map +1 -1
  675. package/server/applications/webdav/utils/xml.js +1 -5
  676. package/server/applications/webdav/utils/xml.js.map +1 -1
  677. package/server/applications/webdav/webdav.controller.js +1 -5
  678. package/server/applications/webdav/webdav.controller.js.map +1 -1
  679. package/server/applications/webdav/webdav.controller.spec.js +1 -5
  680. package/server/applications/webdav/webdav.controller.spec.js.map +1 -1
  681. package/server/applications/webdav/webdav.e2e-spec.js +1 -5
  682. package/server/applications/webdav/webdav.e2e-spec.js.map +1 -1
  683. package/server/applications/webdav/webdav.module.js +1 -5
  684. package/server/applications/webdav/webdav.module.js.map +1 -1
  685. package/server/authentication/auth.config.js +23 -123
  686. package/server/authentication/auth.config.js.map +1 -1
  687. package/server/authentication/auth.controller.js +27 -21
  688. package/server/authentication/auth.controller.js.map +1 -1
  689. package/server/authentication/auth.controller.spec.js +6 -10
  690. package/server/authentication/auth.controller.spec.js.map +1 -1
  691. package/server/authentication/auth.e2e-spec.js +1 -5
  692. package/server/authentication/auth.e2e-spec.js.map +1 -1
  693. package/server/authentication/auth.module.js +17 -20
  694. package/server/authentication/auth.module.js.map +1 -1
  695. package/server/authentication/{services/auth-manager.service.js → auth.service.js} +41 -18
  696. package/server/authentication/auth.service.js.map +1 -0
  697. package/server/authentication/{services/auth-manager.service.spec.js → auth.service.spec.js} +6 -10
  698. package/server/authentication/auth.service.spec.js.map +1 -0
  699. package/server/authentication/constants/auth.js +1 -5
  700. package/server/authentication/constants/auth.js.map +1 -1
  701. package/server/authentication/constants/routes.js +41 -30
  702. package/server/authentication/constants/routes.js.map +1 -1
  703. package/server/authentication/constants/scope.js +2 -5
  704. package/server/authentication/constants/scope.js.map +1 -1
  705. package/server/authentication/decorators/auth-token-optional.decorator.js +1 -5
  706. package/server/authentication/decorators/auth-token-optional.decorator.js.map +1 -1
  707. package/server/authentication/decorators/auth-token-skip.decorator.js +1 -5
  708. package/server/authentication/decorators/auth-token-skip.decorator.js.map +1 -1
  709. package/server/authentication/dto/login-response.dto.js +1 -10
  710. package/server/authentication/dto/login-response.dto.js.map +1 -1
  711. package/server/authentication/dto/token-response.dto.js +1 -5
  712. package/server/authentication/dto/token-response.dto.js.map +1 -1
  713. package/server/authentication/guards/auth-anonymous.guard.js +1 -5
  714. package/server/authentication/guards/auth-anonymous.guard.js.map +1 -1
  715. package/server/authentication/guards/auth-anonymous.guard.spec.js +1 -5
  716. package/server/authentication/guards/auth-anonymous.guard.spec.js.map +1 -1
  717. package/server/authentication/guards/auth-anonymous.strategy.js +1 -5
  718. package/server/authentication/guards/auth-anonymous.strategy.js.map +1 -1
  719. package/server/authentication/guards/auth-basic.guard.js +1 -5
  720. package/server/authentication/guards/auth-basic.guard.js.map +1 -1
  721. package/server/authentication/guards/auth-basic.guard.spec.js +13 -14
  722. package/server/authentication/guards/auth-basic.guard.spec.js.map +1 -1
  723. package/server/authentication/guards/auth-basic.strategy.js +10 -11
  724. package/server/authentication/guards/auth-basic.strategy.js.map +1 -1
  725. package/server/authentication/guards/auth-digest.guard.js +1 -5
  726. package/server/authentication/guards/auth-digest.guard.js.map +1 -1
  727. package/server/authentication/guards/auth-digest.strategy.js +1 -5
  728. package/server/authentication/guards/auth-digest.strategy.js.map +1 -1
  729. package/server/authentication/guards/auth-local.guard.js +1 -5
  730. package/server/authentication/guards/auth-local.guard.js.map +1 -1
  731. package/server/authentication/guards/auth-local.guard.spec.js +9 -13
  732. package/server/authentication/guards/auth-local.guard.spec.js.map +1 -1
  733. package/server/authentication/guards/auth-local.strategy.js +6 -10
  734. package/server/authentication/guards/auth-local.strategy.js.map +1 -1
  735. package/server/authentication/guards/auth-token-access.guard.js +1 -5
  736. package/server/authentication/guards/auth-token-access.guard.js.map +1 -1
  737. package/server/authentication/guards/auth-token-access.guard.spec.js +3 -7
  738. package/server/authentication/guards/auth-token-access.guard.spec.js.map +1 -1
  739. package/server/authentication/guards/auth-token-access.strategy.js +3 -7
  740. package/server/authentication/guards/auth-token-access.strategy.js.map +1 -1
  741. package/server/authentication/guards/auth-token-refresh.guard.js +1 -5
  742. package/server/authentication/guards/auth-token-refresh.guard.js.map +1 -1
  743. package/server/authentication/guards/auth-token-refresh.guard.spec.js +3 -7
  744. package/server/authentication/guards/auth-token-refresh.guard.spec.js.map +1 -1
  745. package/server/authentication/guards/auth-token-refresh.strategy.js +3 -7
  746. package/server/authentication/guards/auth-token-refresh.strategy.js.map +1 -1
  747. package/server/authentication/guards/implementations/http-basic.strategy.js +1 -5
  748. package/server/authentication/guards/implementations/http-basic.strategy.js.map +1 -1
  749. package/server/authentication/guards/implementations/http-digest.strategy.js +1 -5
  750. package/server/authentication/guards/implementations/http-digest.strategy.js.map +1 -1
  751. package/server/authentication/interfaces/auth-request.interface.js +1 -5
  752. package/server/authentication/interfaces/auth-request.interface.js.map +1 -1
  753. package/server/authentication/interfaces/jwt-payload.interface.js +1 -5
  754. package/server/authentication/interfaces/jwt-payload.interface.js.map +1 -1
  755. package/server/authentication/interfaces/token.interface.js +1 -5
  756. package/server/authentication/interfaces/token.interface.js.map +1 -1
  757. package/server/authentication/providers/auth-providers.constants.js +18 -0
  758. package/server/authentication/providers/auth-providers.constants.js.map +1 -0
  759. package/server/authentication/providers/auth-providers.models.js +14 -0
  760. package/server/authentication/providers/auth-providers.models.js.map +1 -0
  761. package/server/authentication/providers/auth-providers.utils.js +42 -0
  762. package/server/authentication/providers/auth-providers.utils.js.map +1 -0
  763. package/server/authentication/providers/ldap/auth-ldap.config.js +143 -0
  764. package/server/authentication/providers/ldap/auth-ldap.config.js.map +1 -0
  765. package/server/authentication/{constants/auth-ldap.js → providers/ldap/auth-ldap.constants.js} +12 -6
  766. package/server/authentication/providers/ldap/auth-ldap.constants.js.map +1 -0
  767. package/server/authentication/providers/ldap/auth-provider-ldap.service.js +506 -0
  768. package/server/authentication/providers/ldap/auth-provider-ldap.service.js.map +1 -0
  769. package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js +674 -0
  770. package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js.map +1 -0
  771. package/server/authentication/{services/auth-methods/auth-method-database.service.js → providers/mysql/auth-provider-mysql.service.js} +16 -14
  772. package/server/authentication/providers/mysql/auth-provider-mysql.service.js.map +1 -0
  773. package/server/authentication/{services/auth-methods/auth-method-database.service.spec.js → providers/mysql/auth-provider-mysql.service.spec.js} +15 -19
  774. package/server/authentication/providers/mysql/auth-provider-mysql.service.spec.js.map +1 -0
  775. package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js +30 -0
  776. package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js.map +1 -0
  777. package/server/authentication/providers/oidc/auth-oidc.config.js +149 -0
  778. package/server/authentication/providers/oidc/auth-oidc.config.js.map +1 -0
  779. package/server/authentication/providers/oidc/auth-oidc.constants.js +39 -0
  780. package/server/authentication/providers/oidc/auth-oidc.constants.js.map +1 -0
  781. package/server/authentication/providers/oidc/auth-oidc.controller.js +83 -0
  782. package/server/authentication/providers/oidc/auth-oidc.controller.js.map +1 -0
  783. package/server/authentication/providers/oidc/auth-oidc.interfaces.js +6 -0
  784. package/server/authentication/providers/oidc/auth-oidc.interfaces.js.map +1 -0
  785. package/server/authentication/providers/oidc/auth-provider-oidc.module.js +36 -0
  786. package/server/authentication/providers/oidc/auth-provider-oidc.module.js.map +1 -0
  787. package/server/authentication/providers/oidc/auth-provider-oidc.service.js +373 -0
  788. package/server/authentication/providers/oidc/auth-provider-oidc.service.js.map +1 -0
  789. package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js +270 -0
  790. package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js.map +1 -0
  791. package/server/authentication/{services/auth-methods/auth-method-two-fa.service.js → providers/two-fa/auth-provider-two-fa.service.js} +56 -38
  792. package/server/authentication/providers/two-fa/auth-provider-two-fa.service.js.map +1 -0
  793. package/server/authentication/{services/auth-methods/auth-method-two-fa.service.spec.js → providers/two-fa/auth-provider-two-fa.service.spec.js} +6 -10
  794. package/server/authentication/providers/two-fa/auth-provider-two-fa.service.spec.js.map +1 -0
  795. package/server/authentication/{guards → providers/two-fa}/auth-two-fa-guard.js +10 -14
  796. package/server/authentication/providers/two-fa/auth-two-fa-guard.js.map +1 -0
  797. package/server/authentication/providers/two-fa/auth-two-fa.config.js +57 -0
  798. package/server/authentication/providers/two-fa/auth-two-fa.config.js.map +1 -0
  799. package/server/authentication/{dto/two-fa-verify.dto.js → providers/two-fa/auth-two-fa.dtos.js} +8 -6
  800. package/server/authentication/providers/two-fa/auth-two-fa.dtos.js.map +1 -0
  801. package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js +6 -0
  802. package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js.map +1 -0
  803. package/server/authentication/utils/crypt-secret.js +1 -5
  804. package/server/authentication/utils/crypt-secret.js.map +1 -1
  805. package/server/common/constants.js +1 -5
  806. package/server/common/constants.js.map +1 -1
  807. package/server/common/decorators.js +1 -5
  808. package/server/common/decorators.js.map +1 -1
  809. package/server/common/functions.js +25 -9
  810. package/server/common/functions.js.map +1 -1
  811. package/server/common/i18n.js +1 -5
  812. package/server/common/i18n.js.map +1 -1
  813. package/server/common/image.js +1 -5
  814. package/server/common/image.js.map +1 -1
  815. package/server/common/interfaces.js +1 -5
  816. package/server/common/interfaces.js.map +1 -1
  817. package/server/common/qrcode.js +1 -5
  818. package/server/common/qrcode.js.map +1 -1
  819. package/server/common/shared.js +6 -6
  820. package/server/common/shared.js.map +1 -1
  821. package/server/configuration/config.constants.js +1 -5
  822. package/server/configuration/config.constants.js.map +1 -1
  823. package/server/configuration/config.environment.js +2 -6
  824. package/server/configuration/config.environment.js.map +1 -1
  825. package/server/configuration/config.interfaces.js +1 -5
  826. package/server/configuration/config.interfaces.js.map +1 -1
  827. package/server/configuration/config.loader.js +1 -5
  828. package/server/configuration/config.loader.js.map +1 -1
  829. package/server/configuration/config.logger.js +4 -8
  830. package/server/configuration/config.logger.js.map +1 -1
  831. package/server/configuration/config.validation.js +7 -5
  832. package/server/configuration/config.validation.js.map +1 -1
  833. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js +9 -7
  834. package/server/infrastructure/cache/adapters/mysql-cache.adapter.js.map +1 -1
  835. package/server/infrastructure/cache/adapters/redis-cache.adapter.js +1 -5
  836. package/server/infrastructure/cache/adapters/redis-cache.adapter.js.map +1 -1
  837. package/server/infrastructure/cache/cache.config.js +1 -5
  838. package/server/infrastructure/cache/cache.config.js.map +1 -1
  839. package/server/infrastructure/cache/cache.decorator.js +9 -7
  840. package/server/infrastructure/cache/cache.decorator.js.map +1 -1
  841. package/server/infrastructure/cache/cache.e2e-spec.js +1 -5
  842. package/server/infrastructure/cache/cache.e2e-spec.js.map +1 -1
  843. package/server/infrastructure/cache/cache.module.js +1 -5
  844. package/server/infrastructure/cache/cache.module.js.map +1 -1
  845. package/server/infrastructure/cache/schemas/mysql-cache.interface.js +1 -5
  846. package/server/infrastructure/cache/schemas/mysql-cache.interface.js.map +1 -1
  847. package/server/infrastructure/cache/schemas/mysql-cache.schema.js +1 -5
  848. package/server/infrastructure/cache/schemas/mysql-cache.schema.js.map +1 -1
  849. package/server/infrastructure/cache/services/cache.service.js +1 -5
  850. package/server/infrastructure/cache/services/cache.service.js.map +1 -1
  851. package/server/infrastructure/context/context.module.js +1 -5
  852. package/server/infrastructure/context/context.module.js.map +1 -1
  853. package/server/infrastructure/context/interceptors/context.interceptor.js +1 -5
  854. package/server/infrastructure/context/interceptors/context.interceptor.js.map +1 -1
  855. package/server/infrastructure/context/interceptors/context.interceptor.spec.js +2 -6
  856. package/server/infrastructure/context/interceptors/context.interceptor.spec.js.map +1 -1
  857. package/server/infrastructure/context/interfaces/context-store.interface.js +1 -5
  858. package/server/infrastructure/context/interfaces/context-store.interface.js.map +1 -1
  859. package/server/infrastructure/context/services/context-manager.service.js +1 -5
  860. package/server/infrastructure/context/services/context-manager.service.js.map +1 -1
  861. package/server/infrastructure/context/services/context-manager.service.spec.js +1 -5
  862. package/server/infrastructure/context/services/context-manager.service.spec.js.map +1 -1
  863. package/server/infrastructure/database/columns.js +1 -5
  864. package/server/infrastructure/database/columns.js.map +1 -1
  865. package/server/infrastructure/database/configuration.js +1 -5
  866. package/server/infrastructure/database/configuration.js.map +1 -1
  867. package/server/infrastructure/database/constants.js +2 -6
  868. package/server/infrastructure/database/constants.js.map +1 -1
  869. package/server/infrastructure/database/database.config.js +1 -5
  870. package/server/infrastructure/database/database.config.js.map +1 -1
  871. package/server/infrastructure/database/database.logger.js +1 -5
  872. package/server/infrastructure/database/database.logger.js.map +1 -1
  873. package/server/infrastructure/database/database.module.js +1 -5
  874. package/server/infrastructure/database/database.module.js.map +1 -1
  875. package/server/infrastructure/database/interfaces/database.interface.js +1 -5
  876. package/server/infrastructure/database/interfaces/database.interface.js.map +1 -1
  877. package/server/infrastructure/database/schema.js +1 -5
  878. package/server/infrastructure/database/schema.js.map +1 -1
  879. package/server/infrastructure/database/scripts/create-user.js +1 -5
  880. package/server/infrastructure/database/scripts/create-user.js.map +1 -1
  881. package/server/infrastructure/database/scripts/db.js +1 -5
  882. package/server/infrastructure/database/scripts/db.js.map +1 -1
  883. package/server/infrastructure/database/scripts/seed/main.js +1 -5
  884. package/server/infrastructure/database/scripts/seed/main.js.map +1 -1
  885. package/server/infrastructure/database/scripts/seed/usersgroups.js +1 -5
  886. package/server/infrastructure/database/scripts/seed/usersgroups.js.map +1 -1
  887. package/server/infrastructure/database/utils.js +1 -5
  888. package/server/infrastructure/database/utils.js.map +1 -1
  889. package/server/infrastructure/mailer/interfaces/mail.interface.js +1 -5
  890. package/server/infrastructure/mailer/interfaces/mail.interface.js.map +1 -1
  891. package/server/infrastructure/mailer/mailer.config.js +1 -5
  892. package/server/infrastructure/mailer/mailer.config.js.map +1 -1
  893. package/server/infrastructure/mailer/mailer.module.js +1 -5
  894. package/server/infrastructure/mailer/mailer.module.js.map +1 -1
  895. package/server/infrastructure/mailer/mailer.service.js +1 -5
  896. package/server/infrastructure/mailer/mailer.service.js.map +1 -1
  897. package/server/infrastructure/mailer/mailer.service.spec.js +2 -6
  898. package/server/infrastructure/mailer/mailer.service.spec.js.map +1 -1
  899. package/server/infrastructure/scheduler/scheduler.constants.js +1 -5
  900. package/server/infrastructure/scheduler/scheduler.constants.js.map +1 -1
  901. package/server/infrastructure/scheduler/scheduler.module.js +1 -5
  902. package/server/infrastructure/scheduler/scheduler.module.js.map +1 -1
  903. package/server/infrastructure/websocket/adapters/cluster.adapter.js +1 -5
  904. package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
  905. package/server/infrastructure/websocket/adapters/redis.adapter.js +1 -5
  906. package/server/infrastructure/websocket/adapters/redis.adapter.js.map +1 -1
  907. package/server/infrastructure/websocket/adapters/web-socket.adapter.js +1 -5
  908. package/server/infrastructure/websocket/adapters/web-socket.adapter.js.map +1 -1
  909. package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js +1 -5
  910. package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js.map +1 -1
  911. package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js +1 -5
  912. package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js.map +1 -1
  913. package/server/infrastructure/websocket/utils.js +1 -5
  914. package/server/infrastructure/websocket/utils.js.map +1 -1
  915. package/server/infrastructure/websocket/web-socket.config.js +1 -5
  916. package/server/infrastructure/websocket/web-socket.config.js.map +1 -1
  917. package/server/main.js +5 -0
  918. package/server/main.js.map +1 -1
  919. package/static/assets/pdfjs/build/pdf.mjs +724 -745
  920. package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
  921. package/static/assets/pdfjs/build/pdf.sandbox.mjs +2 -2
  922. package/static/assets/pdfjs/build/pdf.worker.mjs +706 -193
  923. package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
  924. package/static/assets/pdfjs/version +1 -1
  925. package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +5 -5
  926. package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +1 -0
  927. package/static/assets/pdfjs/web/locale/fur/viewer.ftl +5 -0
  928. package/static/assets/pdfjs/web/locale/kk/viewer.ftl +28 -0
  929. package/static/assets/pdfjs/web/locale/ml/viewer.ftl +4 -0
  930. package/static/assets/pdfjs/web/locale/ru/viewer.ftl +3 -3
  931. package/static/assets/pdfjs/web/viewer.css +207 -65
  932. package/static/assets/pdfjs/web/viewer.html +11 -10
  933. package/static/assets/pdfjs/web/viewer.mjs +850 -270
  934. package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
  935. package/static/assets/pdfjs/web/wasm/LICENSE_JBIG2 +196 -0
  936. package/static/assets/pdfjs/web/wasm/LICENSE_PDFJS_JBIG2 +13 -0
  937. package/static/assets/pdfjs/web/wasm/jbig2.wasm +0 -0
  938. package/static/chunk-22TZP6HW.js +1 -0
  939. package/static/{chunk-G7TLKY5X.js → chunk-27ATUHBH.js} +1 -1
  940. package/static/{chunk-CQOQXVYG.js → chunk-2CKLZ3FM.js} +1 -1
  941. package/static/{chunk-FVFOX6OP.js → chunk-2QZPX7LO.js} +1 -1
  942. package/static/{chunk-32AVRWC3.js → chunk-2R6IBBPZ.js} +1 -1
  943. package/static/{chunk-76JDXKD7.js → chunk-4FIGEBNL.js} +1 -1
  944. package/static/{chunk-ACCGBDUZ.js → chunk-4P3JABAP.js} +4 -4
  945. package/static/chunk-5CZOSAMZ.js +1 -0
  946. package/static/{chunk-2PDTP6N4.js → chunk-677WUBCT.js} +1 -1
  947. package/static/{chunk-K5VO5XTG.js → chunk-74CAHBFM.js} +1 -1
  948. package/static/{chunk-WTWGBCFO.js → chunk-7GWW6MJO.js} +1 -1
  949. package/static/{chunk-JXZOYX4N.js → chunk-A4UGPSWX.js} +1 -1
  950. package/static/{chunk-44D7RWET.js → chunk-AHO37FKW.js} +1 -1
  951. package/static/{chunk-WB2DECOA.js → chunk-AQCXMKP3.js} +1 -1
  952. package/static/chunk-B6PDYCRO.js +3 -0
  953. package/static/{chunk-JVGN5V5E.js → chunk-CU76ATCF.js} +1 -1
  954. package/static/{chunk-Q5K4ZUHK.js → chunk-CWYHOPOP.js} +1 -1
  955. package/static/{chunk-IOX3ANJR.js → chunk-E5WI5725.js} +1 -1
  956. package/static/{chunk-NUG54Y65.js → chunk-FC5HTKVM.js} +1 -1
  957. package/static/{chunk-LRK6RNPR.js → chunk-FOSM7EYI.js} +1 -1
  958. package/static/{chunk-B4UP2EQM.js → chunk-GAZO25PI.js} +1 -1
  959. package/static/{chunk-3WBCGTYW.js → chunk-GB7ABR5N.js} +1 -1
  960. package/static/{chunk-XFZ37WVK.js → chunk-GEHFKZQ5.js} +1 -1
  961. package/static/{chunk-4CQLN5HL.js → chunk-GQFMWVFD.js} +1 -1
  962. package/static/{chunk-YBEH442D.js → chunk-GVNTC564.js} +1 -1
  963. package/static/{chunk-WO6GBHBZ.js → chunk-HGL3NYP2.js} +2 -2
  964. package/static/{chunk-IAWRRL6J.js → chunk-HLIWPWRA.js} +1 -1
  965. package/static/{chunk-6LHJBXUE.js → chunk-HNYB3M4S.js} +1 -1
  966. package/static/{chunk-5WTIUYFF.js → chunk-HUXAUQMN.js} +1 -1
  967. package/static/{chunk-VBH3Y2M5.js → chunk-I2XA6PPK.js} +1 -1
  968. package/static/{chunk-I3XI72AV.js → chunk-ISV3BO6R.js} +1 -1
  969. package/static/{chunk-P7X53PEP.js → chunk-JV3AGU5B.js} +1 -1
  970. package/static/{chunk-ZFAXICUH.js → chunk-K25E7YGG.js} +1 -1
  971. package/static/{chunk-CAD3RHAY.js → chunk-K46PUTZB.js} +1 -1
  972. package/static/{chunk-GYFLVCFN.js → chunk-KERFLJ56.js} +1 -7
  973. package/static/{chunk-WSTGWBVW.js → chunk-KJD3KFF3.js} +1 -1
  974. package/static/{chunk-R4P4NBUL.js → chunk-KPKSI23S.js} +1 -1
  975. package/static/{chunk-M7IFVC5D.js → chunk-KZS7CTNR.js} +1 -1
  976. package/static/{chunk-P2IJCGWD.js → chunk-L5IHUVXL.js} +1 -1
  977. package/static/{chunk-DXESTGOH.js → chunk-L7RRX2M3.js} +1 -1
  978. package/static/{chunk-WE3ISL7O.js → chunk-LGWJ2WKU.js} +1 -1
  979. package/static/{chunk-OKI3N5AI.js → chunk-MLC7JK2H.js} +2 -2
  980. package/static/{chunk-NG7QWUFM.js → chunk-MOHNYW2A.js} +1 -1
  981. package/static/{chunk-SQYWQUL4.js → chunk-NCDUOVMW.js} +1 -1
  982. package/static/chunk-NGUAJIGI.js +1 -0
  983. package/static/{chunk-OYPJUVD6.js → chunk-NIPP6JDI.js} +1 -1
  984. package/static/{chunk-Y433XOAJ.js → chunk-NMTBMHUL.js} +1 -1
  985. package/static/chunk-O4XXMZFX.js +4 -0
  986. package/static/{chunk-IOP3ON2H.js → chunk-OANZITPM.js} +1 -1
  987. package/static/{chunk-WJFKUJJX.js → chunk-OGE4SAHU.js} +1 -1
  988. package/static/{chunk-7EHP6HO3.js → chunk-OI3ME22C.js} +1 -1
  989. package/static/{chunk-D4XDSS6P.js → chunk-Q3EGCMF5.js} +1 -1
  990. package/static/{chunk-TQBCGNFG.js → chunk-QF2NSHZA.js} +1 -1
  991. package/static/{chunk-RBBMH2FM.js → chunk-QKN6LAAA.js} +1 -1
  992. package/static/{chunk-J45SD6RC.js → chunk-QRFESU5O.js} +2 -2
  993. package/static/chunk-QVRVFYJH.js +1 -0
  994. package/static/{chunk-BAHNSFET.js → chunk-RFJIPIOK.js} +1 -1
  995. package/static/{chunk-IZ7TCHUW.js → chunk-RLL634K4.js} +1 -1
  996. package/static/{chunk-MOWL3ILT.js → chunk-RS2OFKWP.js} +1 -1
  997. package/static/{chunk-WM56LPJ3.js → chunk-RWAAC3A4.js} +1 -1
  998. package/static/{chunk-F3GMI6OL.js → chunk-S5Y64DDS.js} +1 -1
  999. package/static/{chunk-VNNLMUK7.js → chunk-SLG5KDU6.js} +1 -1
  1000. package/static/chunk-TJ4CVFEL.js +1 -0
  1001. package/static/{chunk-SAN35XTD.js → chunk-TWCGKSYE.js} +1 -1
  1002. package/static/{chunk-EUKVDBBK.js → chunk-UMDRE4S7.js} +1 -1
  1003. package/static/{chunk-YKCUUBZP.js → chunk-VRIOLRYR.js} +4 -4
  1004. package/static/chunk-VS4O2XDP.js +1 -0
  1005. package/static/{chunk-2MRTBCSV.js → chunk-VSBFNFOM.js} +1 -1
  1006. package/static/{chunk-CTPKDDVI.js → chunk-WN4WXCVK.js} +1 -1
  1007. package/static/{chunk-2AA3WMW5.js → chunk-WX7RXW7K.js} +1 -1
  1008. package/static/{chunk-J2BUPRCZ.js → chunk-XC4POKR3.js} +2 -2
  1009. package/static/{chunk-AXLDYLIO.js → chunk-Y4AUYQTG.js} +1 -1
  1010. package/static/{chunk-RPHWIW7S.js → chunk-YMIXHRJQ.js} +1 -7
  1011. package/static/{chunk-AFNUBQMD.js → chunk-ZUNKFAKP.js} +1 -1
  1012. package/static/index.html +3 -3
  1013. package/static/main-QN4UCOC5.js +5 -0
  1014. package/static/{styles-PD6764CP.css → styles-46GLIE7Y.css} +1 -1
  1015. package/server/authentication/constants/auth-ldap.js.map +0 -1
  1016. package/server/authentication/dto/two-fa-verify.dto.js.map +0 -1
  1017. package/server/authentication/guards/auth-two-fa-guard.js.map +0 -1
  1018. package/server/authentication/interfaces/two-fa-setup.interface.js +0 -10
  1019. package/server/authentication/interfaces/two-fa-setup.interface.js.map +0 -1
  1020. package/server/authentication/models/auth-method.js +0 -18
  1021. package/server/authentication/models/auth-method.js.map +0 -1
  1022. package/server/authentication/services/auth-manager.service.js.map +0 -1
  1023. package/server/authentication/services/auth-manager.service.spec.js.map +0 -1
  1024. package/server/authentication/services/auth-methods/auth-method-database.service.js.map +0 -1
  1025. package/server/authentication/services/auth-methods/auth-method-database.service.spec.js.map +0 -1
  1026. package/server/authentication/services/auth-methods/auth-method-ldap.service.js +0 -326
  1027. package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +0 -1
  1028. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js +0 -534
  1029. package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js.map +0 -1
  1030. package/server/authentication/services/auth-methods/auth-method-two-fa.service.js.map +0 -1
  1031. package/server/authentication/services/auth-methods/auth-method-two-fa.service.spec.js.map +0 -1
  1032. package/static/chunk-3I6NPM62.js +0 -1
  1033. package/static/chunk-GCPX3EFC.js +0 -1
  1034. package/static/chunk-KBUIDMCK.js +0 -1
  1035. package/static/chunk-KY6MNZLC.js +0 -1
  1036. package/static/chunk-MPWD4VMY.js +0 -1
  1037. package/static/chunk-QQAF3MLL.js +0 -1
  1038. package/static/chunk-VHZKPUWE.js +0 -4
  1039. package/static/chunk-YWLMFOB4.js +0 -3
  1040. package/static/main-ZXEMCBMI.js +0 -11
@@ -21,8 +21,8 @@
21
21
  */
22
22
 
23
23
  /**
24
- * pdfjsVersion = 5.4.530
25
- * pdfjsBuild = 50cc4adac
24
+ * pdfjsVersion = 5.4.624
25
+ * pdfjsBuild = 384c6208b
26
26
  */
27
27
  /******/ // The require scope
28
28
  /******/ var __webpack_require__ = {};
@@ -85,6 +85,7 @@ const {
85
85
  normalizeUnicode,
86
86
  OPS,
87
87
  OutputScale,
88
+ PagesMapper,
88
89
  PasswordResponses,
89
90
  PDFDataRangeTransport,
90
91
  PDFDateString,
@@ -486,7 +487,7 @@ class ProgressBar {
486
487
  return this.#percent;
487
488
  }
488
489
  set percent(val) {
489
- this.#percent = MathClamp(val, 0, 100);
490
+ this.#percent = val;
490
491
  if (isNaN(val)) {
491
492
  this.#classList.add("indeterminate");
492
493
  return;
@@ -612,16 +613,12 @@ const calcRound = function () {
612
613
  } = navigator;
613
614
  const isAndroid = /Android/.test(userAgent);
614
615
  const isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent) || platform === "MacIntel" && maxTouchPoints > 1;
615
- (function () {
616
- if (isIOS || isAndroid) {
617
- compatParams.set("maxCanvasPixels", 5242880);
618
- }
619
- })();
620
- (function () {
621
- if (isAndroid) {
622
- compatParams.set("useSystemFonts", false);
623
- }
624
- })();
616
+ if (isIOS || isAndroid) {
617
+ compatParams.set("maxCanvasPixels", 5242880);
618
+ }
619
+ if (isAndroid) {
620
+ compatParams.set("useSystemFonts", false);
621
+ }
625
622
  }
626
623
  const OptionKind = {
627
624
  BROWSER: 0x01,
@@ -793,6 +790,10 @@ const defaultOptions = {
793
790
  value: false,
794
791
  kind: OptionKind.VIEWER + OptionKind.PREFERENCE
795
792
  },
793
+ enableSplitMerge: {
794
+ value: false,
795
+ kind: OptionKind.VIEWER + OptionKind.PREFERENCE
796
+ },
796
797
  enableUpdatedAddImage: {
797
798
  value: false,
798
799
  kind: OptionKind.VIEWER + OptionKind.PREFERENCE
@@ -1516,50 +1517,7 @@ class BaseExternalServices {
1516
1517
  ;// ./web/preferences.js
1517
1518
 
1518
1519
  class BasePreferences {
1519
- #defaults = Object.freeze({
1520
- altTextLearnMoreUrl: "",
1521
- annotationEditorMode: 0,
1522
- annotationMode: 2,
1523
- capCanvasAreaFactor: 200,
1524
- commentLearnMoreUrl: "",
1525
- cursorToolOnLoad: 0,
1526
- defaultZoomDelay: 400,
1527
- defaultZoomValue: "",
1528
- disablePageLabels: false,
1529
- enableAltText: false,
1530
- enableAltTextModelDownload: true,
1531
- enableAutoLinking: true,
1532
- enableComment: false,
1533
- enableGuessAltText: true,
1534
- enableHighlightFloatingButton: false,
1535
- enableNewAltTextWhenAddingImage: true,
1536
- enableOptimizedPartialRendering: false,
1537
- enablePermissions: false,
1538
- enablePrintAutoRotate: true,
1539
- enableScripting: true,
1540
- enableSignatureEditor: false,
1541
- enableUpdatedAddImage: false,
1542
- externalLinkTarget: 0,
1543
- highlightEditorColors: "yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F,yellow_HCM=#FFFFCC,green_HCM=#53FFBC,blue_HCM=#80EBFF,pink_HCM=#F6B8FF,red_HCM=#C50043",
1544
- historyUpdateUrl: false,
1545
- ignoreDestinationZoom: false,
1546
- forcePageColors: false,
1547
- pageColorsBackground: "Canvas",
1548
- pageColorsForeground: "CanvasText",
1549
- pdfBugEnabled: false,
1550
- sidebarViewOnLoad: -1,
1551
- scrollModeOnLoad: -1,
1552
- spreadModeOnLoad: -1,
1553
- textLayerMode: 1,
1554
- viewerCssTheme: 0,
1555
- viewOnLoad: 0,
1556
- disableAutoFetch: false,
1557
- disableFontFace: false,
1558
- disableRange: false,
1559
- disableStream: false,
1560
- enableHWA: true,
1561
- enableXfa: true
1562
- });
1520
+ #defaults = Object.freeze(AppOptions.getAll(OptionKind.PREFERENCE, true));
1563
1521
  #initializedPromise = null;
1564
1522
  constructor() {
1565
1523
  this.#initializedPromise = this._readFromStorage(this.#defaults).then(({
@@ -1597,6 +1555,9 @@ class BasePreferences {
1597
1555
  await this.#initializedPromise;
1598
1556
  return AppOptions.get(name);
1599
1557
  }
1558
+ get defaults() {
1559
+ return this.#defaults;
1560
+ }
1600
1561
  get initializedPromise() {
1601
1562
  return this.#initializedPromise;
1602
1563
  }
@@ -3160,7 +3121,7 @@ class genericl10n_GenericL10n extends L10n {
3160
3121
  yield this.#createBundleFallback(lang);
3161
3122
  }
3162
3123
  static async #createBundleFallback(lang) {
3163
- const text = "pdfjs-previous-button =\n .title = Previous Page\npdfjs-previous-button-label = Previous\npdfjs-next-button =\n .title = Next Page\npdfjs-next-button-label = Next\npdfjs-page-input =\n .title = Page\npdfjs-of-pages = of { $pagesCount }\npdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })\npdfjs-zoom-out-button =\n .title = Zoom Out\npdfjs-zoom-out-button-label = Zoom Out\npdfjs-zoom-in-button =\n .title = Zoom In\npdfjs-zoom-in-button-label = Zoom In\npdfjs-zoom-select =\n .title = Zoom\npdfjs-presentation-mode-button =\n .title = Switch to Presentation Mode\npdfjs-presentation-mode-button-label = Presentation Mode\npdfjs-open-file-button =\n .title = Open File\npdfjs-open-file-button-label = Open\npdfjs-print-button =\n .title = Print\npdfjs-print-button-label = Print\npdfjs-save-button =\n .title = Save\npdfjs-save-button-label = Save\npdfjs-download-button =\n .title = Download\npdfjs-download-button-label = Download\npdfjs-bookmark-button =\n .title = Current Page (View URL from Current Page)\npdfjs-bookmark-button-label = Current Page\npdfjs-tools-button =\n .title = Tools\npdfjs-tools-button-label = Tools\npdfjs-first-page-button =\n .title = Go to First Page\npdfjs-first-page-button-label = Go to First Page\npdfjs-last-page-button =\n .title = Go to Last Page\npdfjs-last-page-button-label = Go to Last Page\npdfjs-page-rotate-cw-button =\n .title = Rotate Clockwise\npdfjs-page-rotate-cw-button-label = Rotate Clockwise\npdfjs-page-rotate-ccw-button =\n .title = Rotate Counterclockwise\npdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise\npdfjs-cursor-text-select-tool-button =\n .title = Enable Text Selection Tool\npdfjs-cursor-text-select-tool-button-label = Text Selection Tool\npdfjs-cursor-hand-tool-button =\n .title = Enable Hand Tool\npdfjs-cursor-hand-tool-button-label = Hand Tool\npdfjs-scroll-page-button =\n .title = Use Page Scrolling\npdfjs-scroll-page-button-label = Page Scrolling\npdfjs-scroll-vertical-button =\n .title = Use Vertical Scrolling\npdfjs-scroll-vertical-button-label = Vertical Scrolling\npdfjs-scroll-horizontal-button =\n .title = Use Horizontal Scrolling\npdfjs-scroll-horizontal-button-label = Horizontal Scrolling\npdfjs-scroll-wrapped-button =\n .title = Use Wrapped Scrolling\npdfjs-scroll-wrapped-button-label = Wrapped Scrolling\npdfjs-spread-none-button =\n .title = Do not join page spreads\npdfjs-spread-none-button-label = No Spreads\npdfjs-spread-odd-button =\n .title = Join page spreads starting with odd-numbered pages\npdfjs-spread-odd-button-label = Odd Spreads\npdfjs-spread-even-button =\n .title = Join page spreads starting with even-numbered pages\npdfjs-spread-even-button-label = Even Spreads\npdfjs-document-properties-button =\n .title = Document Properties\u2026\npdfjs-document-properties-button-label = Document Properties\u2026\npdfjs-document-properties-file-name = File name:\npdfjs-document-properties-file-size = File size:\npdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\npdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\npdfjs-document-properties-title = Title:\npdfjs-document-properties-author = Author:\npdfjs-document-properties-subject = Subject:\npdfjs-document-properties-keywords = Keywords:\npdfjs-document-properties-creation-date = Creation Date:\npdfjs-document-properties-modification-date = Modification Date:\npdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\npdfjs-document-properties-creator = Creator:\npdfjs-document-properties-producer = PDF Producer:\npdfjs-document-properties-version = PDF Version:\npdfjs-document-properties-page-count = Page Count:\npdfjs-document-properties-page-size = Page Size:\npdfjs-document-properties-page-size-unit-inches = in\npdfjs-document-properties-page-size-unit-millimeters = mm\npdfjs-document-properties-page-size-orientation-portrait = portrait\npdfjs-document-properties-page-size-orientation-landscape = landscape\npdfjs-document-properties-page-size-name-a-three = A3\npdfjs-document-properties-page-size-name-a-four = A4\npdfjs-document-properties-page-size-name-letter = Letter\npdfjs-document-properties-page-size-name-legal = Legal\npdfjs-document-properties-page-size-dimension-string = { $width } \xD7 { $height } { $unit } ({ $orientation })\npdfjs-document-properties-page-size-dimension-name-string = { $width } \xD7 { $height } { $unit } ({ $name }, { $orientation })\npdfjs-document-properties-linearized = Fast Web View:\npdfjs-document-properties-linearized-yes = Yes\npdfjs-document-properties-linearized-no = No\npdfjs-document-properties-close-button = Close\npdfjs-print-progress-message = Preparing document for printing\u2026\npdfjs-print-progress-percent = { $progress }%\npdfjs-print-progress-close-button = Cancel\npdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.\npdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.\npdfjs-current-outline-item-button =\n .title = Find Current Outline Item\npdfjs-current-outline-item-button-label = Current Outline Item\npdfjs-findbar-button =\n .title = Find in Document\npdfjs-findbar-button-label = Find\npdfjs-additional-layers = Additional Layers\npdfjs-thumb-page-title =\n .title = Page { $page }\npdfjs-thumb-page-canvas =\n .aria-label = Thumbnail of Page { $page }\npdfjs-find-input =\n .title = Find\n .placeholder = Find in document\u2026\npdfjs-find-previous-button =\n .title = Find the previous occurrence of the phrase\npdfjs-find-previous-button-label = Previous\npdfjs-find-next-button =\n .title = Find the next occurrence of the phrase\npdfjs-find-next-button-label = Next\npdfjs-find-highlight-checkbox = Highlight All\npdfjs-find-match-case-checkbox-label = Match Case\npdfjs-find-match-diacritics-checkbox-label = Match Diacritics\npdfjs-find-entire-word-checkbox-label = Whole Words\npdfjs-find-reached-top = Reached top of document, continued from bottom\npdfjs-find-reached-bottom = Reached end of document, continued from top\npdfjs-find-match-count =\n { $total ->\n [one] { $current } of { $total } match\n *[other] { $current } of { $total } matches\n }\npdfjs-find-match-count-limit =\n { $limit ->\n [one] More than { $limit } match\n *[other] More than { $limit } matches\n }\npdfjs-find-not-found = Phrase not found\npdfjs-page-scale-width = Page Width\npdfjs-page-scale-fit = Page Fit\npdfjs-page-scale-auto = Automatic Zoom\npdfjs-page-scale-actual = Actual Size\npdfjs-page-scale-percent = { $scale }%\npdfjs-page-landmark =\n .aria-label = Page { $page }\npdfjs-loading-error = An error occurred while loading the PDF.\npdfjs-invalid-file-error = Invalid or corrupted PDF file.\npdfjs-missing-file-error = Missing PDF file.\npdfjs-unexpected-response-error = Unexpected server response.\npdfjs-rendering-error = An error occurred while rendering the page.\npdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\npdfjs-text-annotation-type =\n .alt = [{ $type } Annotation]\npdfjs-password-label = Enter the password to open this PDF file.\npdfjs-password-invalid = Invalid password. Please try again.\npdfjs-password-ok-button = OK\npdfjs-password-cancel-button = Cancel\npdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.\npdfjs-editor-free-text-button =\n .title = Text\npdfjs-editor-color-picker-free-text-input =\n .title = Change text color\npdfjs-editor-free-text-button-label = Text\npdfjs-editor-ink-button =\n .title = Draw\npdfjs-editor-color-picker-ink-input =\n .title = Change drawing color\npdfjs-editor-ink-button-label = Draw\npdfjs-editor-stamp-button =\n .title = Add or edit images\npdfjs-editor-stamp-button-label = Add or edit images\npdfjs-editor-highlight-button =\n .title = Highlight\npdfjs-editor-highlight-button-label = Highlight\npdfjs-highlight-floating-button1 =\n .title = Highlight\n .aria-label = Highlight\npdfjs-highlight-floating-button-label = Highlight\npdfjs-comment-floating-button =\n .title = Comment\n .aria-label = Comment\npdfjs-comment-floating-button-label = Comment\npdfjs-editor-comment-button =\n .title = Comment\n .aria-label = Comment\npdfjs-editor-comment-button-label = Comment\npdfjs-editor-signature-button =\n .title = Add signature\npdfjs-editor-signature-button-label = Add signature\npdfjs-editor-highlight-editor =\n .aria-label = Highlight editor\npdfjs-editor-ink-editor =\n .aria-label = Drawing editor\npdfjs-editor-signature-editor1 =\n .aria-description = Signature editor: { $description }\npdfjs-editor-stamp-editor =\n .aria-label = Image editor\npdfjs-editor-remove-ink-button =\n .title = Remove drawing\npdfjs-editor-remove-freetext-button =\n .title = Remove text\npdfjs-editor-remove-stamp-button =\n .title = Remove image\npdfjs-editor-remove-highlight-button =\n .title = Remove highlight\npdfjs-editor-remove-signature-button =\n .title = Remove signature\npdfjs-editor-free-text-color-input = Color\npdfjs-editor-free-text-size-input = Size\npdfjs-editor-ink-color-input = Color\npdfjs-editor-ink-thickness-input = Thickness\npdfjs-editor-ink-opacity-input = Opacity\npdfjs-editor-stamp-add-image-button =\n .title = Add image\npdfjs-editor-stamp-add-image-button-label = Add image\npdfjs-editor-free-highlight-thickness-input = Thickness\npdfjs-editor-free-highlight-thickness-title =\n .title = Change thickness when highlighting items other than text\npdfjs-editor-add-signature-container =\n .aria-label = Signature controls and saved signatures\npdfjs-editor-signature-add-signature-button =\n .title = Add new signature\npdfjs-editor-signature-add-signature-button-label = Add new signature\npdfjs-editor-add-saved-signature-button =\n .title = Saved signature: { $description }\npdfjs-free-text2 =\n .aria-label = Text Editor\n .default-content = Start typing\u2026\npdfjs-editor-comments-sidebar-title =\n { $count ->\n [one] Comment\n *[other] Comments\n }\npdfjs-editor-comments-sidebar-close-button =\n .title = Close the sidebar\n .aria-label = Close the sidebar\npdfjs-editor-comments-sidebar-close-button-label = Close the sidebar\npdfjs-editor-comments-sidebar-no-comments1 = See something noteworthy? Highlight it and leave a comment.\npdfjs-editor-comments-sidebar-no-comments-link = Learn more\npdfjs-editor-alt-text-button =\n .aria-label = Alt text\npdfjs-editor-alt-text-button-label = Alt text\npdfjs-editor-alt-text-edit-button =\n .aria-label = Edit alt text\npdfjs-editor-alt-text-dialog-label = Choose an option\npdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can\u2019t see the image or when it doesn\u2019t load.\npdfjs-editor-alt-text-add-description-label = Add a description\npdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.\npdfjs-editor-alt-text-mark-decorative-label = Mark as decorative\npdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.\npdfjs-editor-alt-text-cancel-button = Cancel\npdfjs-editor-alt-text-save-button = Save\npdfjs-editor-alt-text-decorative-tooltip = Marked as decorative\npdfjs-editor-alt-text-textarea =\n .placeholder = For example, \u201CA young man sits down at a table to eat a meal\u201D\npdfjs-editor-resizer-top-left =\n .aria-label = Top left corner \u2014 resize\npdfjs-editor-resizer-top-middle =\n .aria-label = Top middle \u2014 resize\npdfjs-editor-resizer-top-right =\n .aria-label = Top right corner \u2014 resize\npdfjs-editor-resizer-middle-right =\n .aria-label = Middle right \u2014 resize\npdfjs-editor-resizer-bottom-right =\n .aria-label = Bottom right corner \u2014 resize\npdfjs-editor-resizer-bottom-middle =\n .aria-label = Bottom middle \u2014 resize\npdfjs-editor-resizer-bottom-left =\n .aria-label = Bottom left corner \u2014 resize\npdfjs-editor-resizer-middle-left =\n .aria-label = Middle left \u2014 resize\npdfjs-editor-highlight-colorpicker-label = Highlight color\npdfjs-editor-colorpicker-button =\n .title = Change color\npdfjs-editor-colorpicker-dropdown =\n .aria-label = Color choices\npdfjs-editor-colorpicker-yellow =\n .title = Yellow\npdfjs-editor-colorpicker-green =\n .title = Green\npdfjs-editor-colorpicker-blue =\n .title = Blue\npdfjs-editor-colorpicker-pink =\n .title = Pink\npdfjs-editor-colorpicker-red =\n .title = Red\npdfjs-editor-highlight-show-all-button-label = Show all\npdfjs-editor-highlight-show-all-button =\n .title = Show all\npdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)\npdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)\npdfjs-editor-new-alt-text-textarea =\n .placeholder = Write your description here\u2026\npdfjs-editor-new-alt-text-description = Short description for people who can\u2019t see the image or when the image doesn\u2019t load.\npdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.\npdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more\npdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically\npdfjs-editor-new-alt-text-not-now-button = Not now\npdfjs-editor-new-alt-text-error-title = Couldn\u2019t create alt text automatically\npdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.\npdfjs-editor-new-alt-text-error-close-button = Close\npdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\npdfjs-editor-new-alt-text-added-button =\n .aria-label = Alt text added\npdfjs-editor-new-alt-text-added-button-label = Alt text added\npdfjs-editor-new-alt-text-missing-button =\n .aria-label = Missing alt text\npdfjs-editor-new-alt-text-missing-button-label = Missing alt text\npdfjs-editor-new-alt-text-to-review-button =\n .aria-label = Review alt text\npdfjs-editor-new-alt-text-to-review-button-label = Review alt text\npdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }\npdfjs-image-alt-text-settings-button =\n .title = Image alt text settings\npdfjs-image-alt-text-settings-button-label = Image alt text settings\npdfjs-editor-alt-text-settings-dialog-label = Image alt text settings\npdfjs-editor-alt-text-settings-automatic-title = Automatic alt text\npdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically\npdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can\u2019t see the image or when the image doesn\u2019t load.\npdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)\npdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.\npdfjs-editor-alt-text-settings-delete-model-button = Delete\npdfjs-editor-alt-text-settings-download-model-button = Download\npdfjs-editor-alt-text-settings-downloading-model-button = Downloading\u2026\npdfjs-editor-alt-text-settings-editor-title = Alt text editor\npdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image\npdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.\npdfjs-editor-alt-text-settings-close-button = Close\npdfjs-editor-highlight-added-alert = Highlight added\npdfjs-editor-freetext-added-alert = Text added\npdfjs-editor-ink-added-alert = Drawing added\npdfjs-editor-stamp-added-alert = Image added\npdfjs-editor-signature-added-alert = Signature added\npdfjs-editor-undo-bar-message-highlight = Highlight removed\npdfjs-editor-undo-bar-message-freetext = Text removed\npdfjs-editor-undo-bar-message-ink = Drawing removed\npdfjs-editor-undo-bar-message-stamp = Image removed\npdfjs-editor-undo-bar-message-signature = Signature removed\npdfjs-editor-undo-bar-message-multiple =\n { $count ->\n [one] { $count } annotation removed\n *[other] { $count } annotations removed\n }\npdfjs-editor-undo-bar-undo-button =\n .title = Undo\npdfjs-editor-undo-bar-undo-button-label = Undo\npdfjs-editor-undo-bar-close-button =\n .title = Close\npdfjs-editor-undo-bar-close-button-label = Close\npdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.\npdfjs-editor-add-signature-dialog-title = Add a signature\npdfjs-editor-add-signature-type-button = Type\n .title = Type\npdfjs-editor-add-signature-draw-button = Draw\n .title = Draw\npdfjs-editor-add-signature-image-button = Image\n .title = Image\npdfjs-editor-add-signature-type-input =\n .aria-label = Type your signature\n .placeholder = Type your signature\npdfjs-editor-add-signature-draw-placeholder = Draw your signature\npdfjs-editor-add-signature-draw-thickness-range-label = Thickness\npdfjs-editor-add-signature-draw-thickness-range =\n .title = Drawing thickness: { $thickness }\npdfjs-editor-add-signature-image-placeholder = Drag a file here to upload\npdfjs-editor-add-signature-image-browse-link =\n { PLATFORM() ->\n [macos] Or choose image files\n *[other] Or browse image files\n }\npdfjs-editor-add-signature-description-label = Description (alt text)\npdfjs-editor-add-signature-description-input =\n .title = Description (alt text)\npdfjs-editor-add-signature-description-default-when-drawing = Signature\npdfjs-editor-add-signature-clear-button-label = Clear signature\npdfjs-editor-add-signature-clear-button =\n .title = Clear signature\npdfjs-editor-add-signature-save-checkbox = Save signature\npdfjs-editor-add-signature-save-warning-message = You\u2019ve reached the limit of 5 saved signatures. Remove one to save more.\npdfjs-editor-add-signature-image-upload-error-title = Couldn\u2019t upload image\npdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image.\npdfjs-editor-add-signature-image-no-data-error-title = Can\u2019t convert this image into a signature\npdfjs-editor-add-signature-image-no-data-error-description = Please try uploading a different image.\npdfjs-editor-add-signature-error-close-button = Close\npdfjs-editor-add-signature-cancel-button = Cancel\npdfjs-editor-add-signature-add-button = Add\npdfjs-editor-delete-signature-button1 =\n .title = Remove saved signature\npdfjs-editor-delete-signature-button-label1 = Remove saved signature\npdfjs-editor-add-signature-edit-button-label = Edit description\npdfjs-editor-edit-signature-dialog-title = Edit description\npdfjs-editor-edit-signature-update-button = Update\npdfjs-show-comment-button =\n .title = Show comment\npdfjs-editor-edit-comment-popup-button-label = Edit comment\npdfjs-editor-edit-comment-popup-button =\n .title = Edit comment\npdfjs-editor-delete-comment-popup-button-label = Remove comment\npdfjs-editor-delete-comment-popup-button =\n .title = Remove comment\npdfjs-editor-edit-comment-dialog-title-when-editing = Edit comment\npdfjs-editor-edit-comment-dialog-save-button-when-editing = Update\npdfjs-editor-edit-comment-dialog-title-when-adding = Add comment\npdfjs-editor-edit-comment-dialog-save-button-when-adding = Add\npdfjs-editor-edit-comment-dialog-text-input =\n .placeholder = Start typing\u2026\npdfjs-editor-edit-comment-dialog-cancel-button = Cancel\npdfjs-editor-add-comment-button =\n .title = Add comment\npdfjs-toggle-views-manager-button =\n .title = Toggle Sidebar\npdfjs-toggle-views-manager-notification-button =\n .title = Toggle Sidebar (document contains thumbnails/outline/attachments/layers)\npdfjs-toggle-views-manager-button-label = Toggle Sidebar\npdfjs-views-manager-sidebar =\n .aria-label = Sidebar\npdfjs-views-manager-view-selector-button =\n .title = Views\npdfjs-views-manager-view-selector-button-label = Views\npdfjs-views-manager-pages-title = Pages\npdfjs-views-manager-outlines-title = Document outline\npdfjs-views-manager-attachments-title = Attachments\npdfjs-views-manager-layers-title = Layers\npdfjs-views-manager-pages-option-label = Pages\npdfjs-views-manager-outlines-option-label = Document outline\npdfjs-views-manager-attachments-option-label = Attachments\npdfjs-views-manager-layers-option-label = Layers\npdfjs-views-manager-add-file-button =\n .title = Add file\npdfjs-views-manager-add-file-button-label = Add file\npdfjs-views-manager-pages-status-action-label =\n { $count ->\n [one] { $count } selected\n *[other] { $count } selected\n }\npdfjs-views-manager-pages-status-none-action-label = Select pages\npdfjs-views-manager-pages-status-action-button-label = Manage\npdfjs-views-manager-pages-status-copy-button-label = Copy\npdfjs-views-manager-pages-status-cut-button-label = Cut\npdfjs-views-manager-pages-status-delete-button-label = Delete\npdfjs-views-manager-pages-status-save-as-button-label = Save as\u2026\npdfjs-views-manager-status-undo-cut-label =\n { $count ->\n [one] 1 page cut\n *[other] { $count } pages cut\n }\npdfjs-views-manager-pages-status-undo-copy-label =\n { $count ->\n [one] 1 page copied\n *[other] { $count } pages copied\n }\npdfjs-views-manager-pages-status-undo-delete-label =\n { $count ->\n [one] 1 page deleted\n *[other] { $count } pages deleted\n }\npdfjs-views-manager-pages-status-waiting-ready-label = Getting your file ready\u2026\npdfjs-views-manager-pages-status-waiting-uploading-label = Uploading file\u2026\npdfjs-views-manager-status-warning-cut-label = Couldn\u2019t cut. Refresh page and try again.\npdfjs-views-manager-status-warning-copy-label = Couldn\u2019t copy. Refresh page and try again.\npdfjs-views-manager-status-warning-delete-label = Couldn\u2019t delete. Refresh page and try again.\npdfjs-views-manager-status-warning-save-label = Couldn\u2019t save. Refresh page and try again.\npdfjs-views-manager-status-undo-button-label = Undo\npdfjs-views-manager-status-close-button =\n .title = Close\npdfjs-views-manager-status-close-button-label = Close";
3124
+ const text = "pdfjs-previous-button =\n .title = Previous Page\npdfjs-previous-button-label = Previous\npdfjs-next-button =\n .title = Next Page\npdfjs-next-button-label = Next\npdfjs-page-input =\n .title = Page\npdfjs-of-pages = of { $pagesCount }\npdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })\npdfjs-zoom-out-button =\n .title = Zoom Out\npdfjs-zoom-out-button-label = Zoom Out\npdfjs-zoom-in-button =\n .title = Zoom In\npdfjs-zoom-in-button-label = Zoom In\npdfjs-zoom-select =\n .title = Zoom\npdfjs-presentation-mode-button =\n .title = Switch to Presentation Mode\npdfjs-presentation-mode-button-label = Presentation Mode\npdfjs-open-file-button =\n .title = Open File\npdfjs-open-file-button-label = Open\npdfjs-print-button =\n .title = Print\npdfjs-print-button-label = Print\npdfjs-save-button =\n .title = Save\npdfjs-save-button-label = Save\npdfjs-download-button =\n .title = Download\npdfjs-download-button-label = Download\npdfjs-bookmark-button =\n .title = Current Page (View URL from Current Page)\npdfjs-bookmark-button-label = Current Page\npdfjs-tools-button =\n .title = Tools\npdfjs-tools-button-label = Tools\npdfjs-first-page-button =\n .title = Go to First Page\npdfjs-first-page-button-label = Go to First Page\npdfjs-last-page-button =\n .title = Go to Last Page\npdfjs-last-page-button-label = Go to Last Page\npdfjs-page-rotate-cw-button =\n .title = Rotate Clockwise\npdfjs-page-rotate-cw-button-label = Rotate Clockwise\npdfjs-page-rotate-ccw-button =\n .title = Rotate Counterclockwise\npdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise\npdfjs-cursor-text-select-tool-button =\n .title = Enable Text Selection Tool\npdfjs-cursor-text-select-tool-button-label = Text Selection Tool\npdfjs-cursor-hand-tool-button =\n .title = Enable Hand Tool\npdfjs-cursor-hand-tool-button-label = Hand Tool\npdfjs-scroll-page-button =\n .title = Use Page Scrolling\npdfjs-scroll-page-button-label = Page Scrolling\npdfjs-scroll-vertical-button =\n .title = Use Vertical Scrolling\npdfjs-scroll-vertical-button-label = Vertical Scrolling\npdfjs-scroll-horizontal-button =\n .title = Use Horizontal Scrolling\npdfjs-scroll-horizontal-button-label = Horizontal Scrolling\npdfjs-scroll-wrapped-button =\n .title = Use Wrapped Scrolling\npdfjs-scroll-wrapped-button-label = Wrapped Scrolling\npdfjs-spread-none-button =\n .title = Do not join page spreads\npdfjs-spread-none-button-label = No Spreads\npdfjs-spread-odd-button =\n .title = Join page spreads starting with odd-numbered pages\npdfjs-spread-odd-button-label = Odd Spreads\npdfjs-spread-even-button =\n .title = Join page spreads starting with even-numbered pages\npdfjs-spread-even-button-label = Even Spreads\npdfjs-document-properties-button =\n .title = Document Properties\u2026\npdfjs-document-properties-button-label = Document Properties\u2026\npdfjs-document-properties-file-name = File name:\npdfjs-document-properties-file-size = File size:\npdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\npdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\npdfjs-document-properties-title = Title:\npdfjs-document-properties-author = Author:\npdfjs-document-properties-subject = Subject:\npdfjs-document-properties-keywords = Keywords:\npdfjs-document-properties-creation-date = Creation Date:\npdfjs-document-properties-modification-date = Modification Date:\npdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\npdfjs-document-properties-creator = Creator:\npdfjs-document-properties-producer = PDF Producer:\npdfjs-document-properties-version = PDF Version:\npdfjs-document-properties-page-count = Page Count:\npdfjs-document-properties-page-size = Page Size:\npdfjs-document-properties-page-size-unit-inches = in\npdfjs-document-properties-page-size-unit-millimeters = mm\npdfjs-document-properties-page-size-orientation-portrait = portrait\npdfjs-document-properties-page-size-orientation-landscape = landscape\npdfjs-document-properties-page-size-name-a-three = A3\npdfjs-document-properties-page-size-name-a-four = A4\npdfjs-document-properties-page-size-name-letter = Letter\npdfjs-document-properties-page-size-name-legal = Legal\npdfjs-document-properties-page-size-dimension-string = { $width } \xD7 { $height } { $unit } ({ $orientation })\npdfjs-document-properties-page-size-dimension-name-string = { $width } \xD7 { $height } { $unit } ({ $name }, { $orientation })\npdfjs-document-properties-linearized = Fast Web View:\npdfjs-document-properties-linearized-yes = Yes\npdfjs-document-properties-linearized-no = No\npdfjs-document-properties-close-button = Close\npdfjs-print-progress-message = Preparing document for printing\u2026\npdfjs-print-progress-percent = { $progress }%\npdfjs-print-progress-close-button = Cancel\npdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.\npdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.\npdfjs-current-outline-item-button =\n .title = Find Current Outline Item\npdfjs-current-outline-item-button-label = Current Outline Item\npdfjs-findbar-button =\n .title = Find in Document\npdfjs-findbar-button-label = Find\npdfjs-additional-layers = Additional Layers\npdfjs-thumb-page-title =\n .title = Page { $page }\npdfjs-thumb-page-canvas =\n .aria-label = Thumbnail of Page { $page }\npdfjs-find-input =\n .title = Find\n .placeholder = Find in document\u2026\npdfjs-find-previous-button =\n .title = Find the previous occurrence of the phrase\npdfjs-find-previous-button-label = Previous\npdfjs-find-next-button =\n .title = Find the next occurrence of the phrase\npdfjs-find-next-button-label = Next\npdfjs-find-highlight-checkbox = Highlight All\npdfjs-find-match-case-checkbox-label = Match Case\npdfjs-find-match-diacritics-checkbox-label = Match Diacritics\npdfjs-find-entire-word-checkbox-label = Whole Words\npdfjs-find-reached-top = Reached top of document, continued from bottom\npdfjs-find-reached-bottom = Reached end of document, continued from top\npdfjs-find-match-count =\n { $total ->\n [one] { $current } of { $total } match\n *[other] { $current } of { $total } matches\n }\npdfjs-find-match-count-limit =\n { $limit ->\n [one] More than { $limit } match\n *[other] More than { $limit } matches\n }\npdfjs-find-not-found = Phrase not found\npdfjs-page-scale-width = Page Width\npdfjs-page-scale-fit = Page Fit\npdfjs-page-scale-auto = Automatic Zoom\npdfjs-page-scale-actual = Actual Size\npdfjs-page-scale-percent = { $scale }%\npdfjs-page-landmark =\n .aria-label = Page { $page }\npdfjs-loading-error = An error occurred while loading the PDF.\npdfjs-invalid-file-error = Invalid or corrupted PDF file.\npdfjs-missing-file-error = Missing PDF file.\npdfjs-unexpected-response-error = Unexpected server response.\npdfjs-rendering-error = An error occurred while rendering the page.\npdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\npdfjs-text-annotation-type =\n .alt = [{ $type } Annotation]\npdfjs-password-label = Enter the password to open this PDF file.\npdfjs-password-invalid = Invalid password. Please try again.\npdfjs-password-ok-button = OK\npdfjs-password-cancel-button = Cancel\npdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.\npdfjs-editor-free-text-button =\n .title = Text\npdfjs-editor-color-picker-free-text-input =\n .title = Change text color\npdfjs-editor-free-text-button-label = Text\npdfjs-editor-ink-button =\n .title = Draw\npdfjs-editor-color-picker-ink-input =\n .title = Change drawing color\npdfjs-editor-ink-button-label = Draw\npdfjs-editor-stamp-button =\n .title = Add or edit images\npdfjs-editor-stamp-button-label = Add or edit images\npdfjs-editor-highlight-button =\n .title = Highlight\npdfjs-editor-highlight-button-label = Highlight\npdfjs-highlight-floating-button1 =\n .title = Highlight\n .aria-label = Highlight\npdfjs-highlight-floating-button-label = Highlight\npdfjs-comment-floating-button =\n .title = Comment\n .aria-label = Comment\npdfjs-comment-floating-button-label = Comment\npdfjs-editor-comment-button =\n .title = Comment\n .aria-label = Comment\npdfjs-editor-comment-button-label = Comment\npdfjs-editor-signature-button =\n .title = Add signature\npdfjs-editor-signature-button-label = Add signature\npdfjs-editor-highlight-editor =\n .aria-label = Highlight editor\npdfjs-editor-ink-editor =\n .aria-label = Drawing editor\npdfjs-editor-signature-editor1 =\n .aria-description = Signature editor: { $description }\npdfjs-editor-stamp-editor =\n .aria-label = Image editor\npdfjs-editor-remove-ink-button =\n .title = Remove drawing\npdfjs-editor-remove-freetext-button =\n .title = Remove text\npdfjs-editor-remove-stamp-button =\n .title = Remove image\npdfjs-editor-remove-highlight-button =\n .title = Remove highlight\npdfjs-editor-remove-signature-button =\n .title = Remove signature\npdfjs-editor-free-text-color-input = Color\npdfjs-editor-free-text-size-input = Size\npdfjs-editor-ink-color-input = Color\npdfjs-editor-ink-thickness-input = Thickness\npdfjs-editor-ink-opacity-input = Opacity\npdfjs-editor-stamp-add-image-button =\n .title = Add image\npdfjs-editor-stamp-add-image-button-label = Add image\npdfjs-editor-free-highlight-thickness-input = Thickness\npdfjs-editor-free-highlight-thickness-title =\n .title = Change thickness when highlighting items other than text\npdfjs-editor-add-signature-container =\n .aria-label = Signature controls and saved signatures\npdfjs-editor-signature-add-signature-button =\n .title = Add new signature\npdfjs-editor-signature-add-signature-button-label = Add new signature\npdfjs-editor-add-saved-signature-button =\n .title = Saved signature: { $description }\npdfjs-free-text2 =\n .aria-label = Text Editor\n .default-content = Start typing\u2026\npdfjs-editor-comments-sidebar-title =\n { $count ->\n [one] Comment\n *[other] Comments\n }\npdfjs-editor-comments-sidebar-close-button =\n .title = Close the sidebar\n .aria-label = Close the sidebar\npdfjs-editor-comments-sidebar-close-button-label = Close the sidebar\npdfjs-editor-comments-sidebar-no-comments1 = See something noteworthy? Highlight it and leave a comment.\npdfjs-editor-comments-sidebar-no-comments-link = Learn more\npdfjs-editor-alt-text-button =\n .aria-label = Alt text\npdfjs-editor-alt-text-button-label = Alt text\npdfjs-editor-alt-text-edit-button =\n .aria-label = Edit alt text\npdfjs-editor-alt-text-dialog-label = Choose an option\npdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can\u2019t see the image or when it doesn\u2019t load.\npdfjs-editor-alt-text-add-description-label = Add a description\npdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.\npdfjs-editor-alt-text-mark-decorative-label = Mark as decorative\npdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.\npdfjs-editor-alt-text-cancel-button = Cancel\npdfjs-editor-alt-text-save-button = Save\npdfjs-editor-alt-text-decorative-tooltip = Marked as decorative\npdfjs-editor-alt-text-textarea =\n .placeholder = For example, \u201CA young man sits down at a table to eat a meal\u201D\npdfjs-editor-resizer-top-left =\n .aria-label = Top left corner \u2014 resize\npdfjs-editor-resizer-top-middle =\n .aria-label = Top middle \u2014 resize\npdfjs-editor-resizer-top-right =\n .aria-label = Top right corner \u2014 resize\npdfjs-editor-resizer-middle-right =\n .aria-label = Middle right \u2014 resize\npdfjs-editor-resizer-bottom-right =\n .aria-label = Bottom right corner \u2014 resize\npdfjs-editor-resizer-bottom-middle =\n .aria-label = Bottom middle \u2014 resize\npdfjs-editor-resizer-bottom-left =\n .aria-label = Bottom left corner \u2014 resize\npdfjs-editor-resizer-middle-left =\n .aria-label = Middle left \u2014 resize\npdfjs-editor-highlight-colorpicker-label = Highlight color\npdfjs-editor-colorpicker-button =\n .title = Change color\npdfjs-editor-colorpicker-dropdown =\n .aria-label = Color choices\npdfjs-editor-colorpicker-yellow =\n .title = Yellow\npdfjs-editor-colorpicker-green =\n .title = Green\npdfjs-editor-colorpicker-blue =\n .title = Blue\npdfjs-editor-colorpicker-pink =\n .title = Pink\npdfjs-editor-colorpicker-red =\n .title = Red\npdfjs-editor-highlight-show-all-button-label = Show all\npdfjs-editor-highlight-show-all-button =\n .title = Show all\npdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)\npdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)\npdfjs-editor-new-alt-text-textarea =\n .placeholder = Write your description here\u2026\npdfjs-editor-new-alt-text-description = Short description for people who can\u2019t see the image or when the image doesn\u2019t load.\npdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.\npdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more\npdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically\npdfjs-editor-new-alt-text-not-now-button = Not now\npdfjs-editor-new-alt-text-error-title = Couldn\u2019t create alt text automatically\npdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.\npdfjs-editor-new-alt-text-error-close-button = Close\npdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\npdfjs-editor-new-alt-text-added-button =\n .aria-label = Alt text added\npdfjs-editor-new-alt-text-added-button-label = Alt text added\npdfjs-editor-new-alt-text-missing-button =\n .aria-label = Missing alt text\npdfjs-editor-new-alt-text-missing-button-label = Missing alt text\npdfjs-editor-new-alt-text-to-review-button =\n .aria-label = Review alt text\npdfjs-editor-new-alt-text-to-review-button-label = Review alt text\npdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }\npdfjs-image-alt-text-settings-button =\n .title = Image alt text settings\npdfjs-image-alt-text-settings-button-label = Image alt text settings\npdfjs-editor-alt-text-settings-dialog-label = Image alt text settings\npdfjs-editor-alt-text-settings-automatic-title = Automatic alt text\npdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically\npdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can\u2019t see the image or when the image doesn\u2019t load.\npdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)\npdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.\npdfjs-editor-alt-text-settings-delete-model-button = Delete\npdfjs-editor-alt-text-settings-download-model-button = Download\npdfjs-editor-alt-text-settings-downloading-model-button = Downloading\u2026\npdfjs-editor-alt-text-settings-editor-title = Alt text editor\npdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image\npdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.\npdfjs-editor-alt-text-settings-close-button = Close\npdfjs-editor-highlight-added-alert = Highlight added\npdfjs-editor-freetext-added-alert = Text added\npdfjs-editor-ink-added-alert = Drawing added\npdfjs-editor-stamp-added-alert = Image added\npdfjs-editor-signature-added-alert = Signature added\npdfjs-editor-undo-bar-message-highlight = Highlight removed\npdfjs-editor-undo-bar-message-freetext = Text removed\npdfjs-editor-undo-bar-message-ink = Drawing removed\npdfjs-editor-undo-bar-message-stamp = Image removed\npdfjs-editor-undo-bar-message-signature = Signature removed\npdfjs-editor-undo-bar-message-comment = Comment removed\npdfjs-editor-undo-bar-message-multiple =\n { $count ->\n [one] { $count } annotation removed\n *[other] { $count } annotations removed\n }\npdfjs-editor-undo-bar-undo-button =\n .title = Undo\npdfjs-editor-undo-bar-undo-button-label = Undo\npdfjs-editor-undo-bar-close-button =\n .title = Close\npdfjs-editor-undo-bar-close-button-label = Close\npdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.\npdfjs-editor-add-signature-dialog-title = Add a signature\npdfjs-editor-add-signature-type-button = Type\n .title = Type\npdfjs-editor-add-signature-draw-button = Draw\n .title = Draw\npdfjs-editor-add-signature-image-button = Image\n .title = Image\npdfjs-editor-add-signature-type-input =\n .aria-label = Type your signature\n .placeholder = Type your signature\npdfjs-editor-add-signature-draw-placeholder = Draw your signature\npdfjs-editor-add-signature-draw-thickness-range-label = Thickness\npdfjs-editor-add-signature-draw-thickness-range =\n .title = Drawing thickness: { $thickness }\npdfjs-editor-add-signature-image-placeholder = Drag a file here to upload\npdfjs-editor-add-signature-image-browse-link =\n { PLATFORM() ->\n [macos] Or choose image files\n *[other] Or browse image files\n }\npdfjs-editor-add-signature-description-label = Description (alt text)\npdfjs-editor-add-signature-description-input =\n .title = Description (alt text)\npdfjs-editor-add-signature-description-default-when-drawing = Signature\npdfjs-editor-add-signature-clear-button-label = Clear signature\npdfjs-editor-add-signature-clear-button =\n .title = Clear signature\npdfjs-editor-add-signature-save-checkbox = Save signature\npdfjs-editor-add-signature-save-warning-message = You\u2019ve reached the limit of 5 saved signatures. Remove one to save more.\npdfjs-editor-add-signature-image-upload-error-title = Couldn\u2019t upload image\npdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image.\npdfjs-editor-add-signature-image-no-data-error-title = Can\u2019t convert this image into a signature\npdfjs-editor-add-signature-image-no-data-error-description = Please try uploading a different image.\npdfjs-editor-add-signature-error-close-button = Close\npdfjs-editor-add-signature-cancel-button = Cancel\npdfjs-editor-add-signature-add-button = Add\npdfjs-editor-delete-signature-button1 =\n .title = Remove saved signature\npdfjs-editor-delete-signature-button-label1 = Remove saved signature\npdfjs-editor-add-signature-edit-button-label = Edit description\npdfjs-editor-edit-signature-dialog-title = Edit description\npdfjs-editor-edit-signature-update-button = Update\npdfjs-show-comment-button =\n .title = Show comment\npdfjs-editor-edit-comment-popup-button-label = Edit comment\npdfjs-editor-edit-comment-popup-button =\n .title = Edit comment\npdfjs-editor-delete-comment-popup-button-label = Remove comment\npdfjs-editor-delete-comment-popup-button =\n .title = Remove comment\npdfjs-editor-edit-comment-dialog-title-when-editing = Edit comment\npdfjs-editor-edit-comment-dialog-save-button-when-editing = Update\npdfjs-editor-edit-comment-dialog-title-when-adding = Add comment\npdfjs-editor-edit-comment-dialog-save-button-when-adding = Add\npdfjs-editor-edit-comment-dialog-text-input =\n .placeholder = Start typing\u2026\npdfjs-editor-edit-comment-dialog-cancel-button = Cancel\npdfjs-editor-add-comment-button =\n .title = Add comment\npdfjs-toggle-views-manager-button =\n .title = Toggle Sidebar\npdfjs-toggle-views-manager-notification-button =\n .title = Toggle Sidebar (document contains thumbnails/outline/attachments/layers)\npdfjs-toggle-views-manager-button-label = Toggle Sidebar\npdfjs-views-manager-sidebar =\n .aria-label = Sidebar\npdfjs-views-manager-view-selector-button =\n .title = Views\npdfjs-views-manager-view-selector-button-label = Views\npdfjs-views-manager-pages-title = Pages\npdfjs-views-manager-outlines-title = Document outline\npdfjs-views-manager-attachments-title = Attachments\npdfjs-views-manager-layers-title = Layers\npdfjs-views-manager-pages-option-label = Pages\npdfjs-views-manager-outlines-option-label = Document outline\npdfjs-views-manager-attachments-option-label = Attachments\npdfjs-views-manager-layers-option-label = Layers\npdfjs-views-manager-add-file-button =\n .title = Add file\npdfjs-views-manager-add-file-button-label = Add file\npdfjs-views-manager-pages-status-action-label =\n { $count ->\n [one] { $count } selected\n *[other] { $count } selected\n }\npdfjs-views-manager-pages-status-none-action-label = Select pages\npdfjs-views-manager-pages-status-action-button-label = Manage\npdfjs-views-manager-pages-status-copy-button-label = Copy\npdfjs-views-manager-pages-status-cut-button-label = Cut\npdfjs-views-manager-pages-status-delete-button-label = Delete\npdfjs-views-manager-pages-status-save-as-button-label = Save as\u2026\npdfjs-views-manager-status-undo-cut-label =\n { $count ->\n [one] 1 page cut\n *[other] { $count } pages cut\n }\npdfjs-views-manager-pages-status-undo-copy-label =\n { $count ->\n [one] 1 page copied\n *[other] { $count } pages copied\n }\npdfjs-views-manager-pages-status-undo-delete-label =\n { $count ->\n [one] 1 page deleted\n *[other] { $count } pages deleted\n }\npdfjs-views-manager-pages-status-waiting-ready-label = Getting your file ready\u2026\npdfjs-views-manager-pages-status-waiting-uploading-label = Uploading file\u2026\npdfjs-views-manager-status-warning-cut-label = Couldn\u2019t cut. Refresh page and try again.\npdfjs-views-manager-status-warning-copy-label = Couldn\u2019t copy. Refresh page and try again.\npdfjs-views-manager-status-warning-delete-label = Couldn\u2019t delete. Refresh page and try again.\npdfjs-views-manager-status-warning-save-label = Couldn\u2019t save. Refresh page and try again.\npdfjs-views-manager-status-undo-button-label = Undo\npdfjs-views-manager-status-close-button =\n .title = Close\npdfjs-views-manager-status-close-button-label = Close";
3164
3125
  return createBundle(lang, text);
3165
3126
  }
3166
3127
  }
@@ -4472,8 +4433,8 @@ class Sidebar {
4472
4433
  this.#isResizerOnTheLeft = isResizerOnTheLeft;
4473
4434
  const style = window.getComputedStyle(sidebar);
4474
4435
  this.#initialWidth = this.#width = parseFloat(style.getPropertyValue("--sidebar-width"));
4475
- resizer.ariaValueMin = parseFloat(style.getPropertyValue("--sidebar-min-width"));
4476
- resizer.ariaValueMax = parseFloat(style.getPropertyValue("--sidebar-max-width"));
4436
+ resizer.ariaValueMin = parseFloat(style.getPropertyValue("--sidebar-min-width")) || 0;
4437
+ resizer.ariaValueMax = parseFloat(style.getPropertyValue("--sidebar-max-width")) || Infinity;
4477
4438
  resizer.ariaValueNow = this.#width;
4478
4439
  this.#makeSidebarResizable();
4479
4440
  toggleButton.addEventListener("click", this.toggle.bind(this));
@@ -4526,7 +4487,7 @@ class Sidebar {
4526
4487
  signal
4527
4488
  });
4528
4489
  window.addEventListener("pointermove", ev => {
4529
- if (!pointerMoveAC) {
4490
+ if (!pointerMoveAC || Math.abs(ev.clientX - this.#prevX) < 1) {
4530
4491
  return;
4531
4492
  }
4532
4493
  stopEvent(ev);
@@ -5366,9 +5327,15 @@ class CommentPopup {
5366
5327
  }
5367
5328
  }
5368
5329
  });
5369
- this.#editor.comment = null;
5370
- this.#editor.focus();
5330
+ const editor = this.#editor;
5331
+ const savedData = editor.comment;
5371
5332
  this.destroy();
5333
+ if (savedData?.text) {
5334
+ editor._uiManager.deleteComment(editor, savedData);
5335
+ } else {
5336
+ editor.comment = null;
5337
+ }
5338
+ editor.focus();
5372
5339
  });
5373
5340
  del.addEventListener("contextmenu", noContextMenu);
5374
5341
  buttons.append(edit, del);
@@ -5649,6 +5616,7 @@ class EditorUndoBar {
5649
5616
  stamp: "pdfjs-editor-undo-bar-message-stamp",
5650
5617
  ink: "pdfjs-editor-undo-bar-message-ink",
5651
5618
  signature: "pdfjs-editor-undo-bar-message-signature",
5619
+ comment: "pdfjs-editor-undo-bar-message-comment",
5652
5620
  _multiple: "pdfjs-editor-undo-bar-message-multiple"
5653
5621
  });
5654
5622
  constructor({
@@ -6766,6 +6734,7 @@ class PDFFindController {
6766
6734
  this.#reset();
6767
6735
  eventBus._on("find", this.#onFind.bind(this));
6768
6736
  eventBus._on("findbarclose", this.#onFindBarClose.bind(this));
6737
+ eventBus._on("pagesedited", this.#onPagesEdited.bind(this));
6769
6738
  }
6770
6739
  get highlightMatches() {
6771
6740
  return this._highlightMatches;
@@ -7242,6 +7211,24 @@ class PDFFindController {
7242
7211
  this.#updatePage(this._selected.pageIdx);
7243
7212
  }
7244
7213
  }
7214
+ #onPagesEdited({
7215
+ pagesMapper
7216
+ }) {
7217
+ if (this._extractTextPromises.length === 0) {
7218
+ return;
7219
+ }
7220
+ this.#onFindBarClose();
7221
+ this._dirtyMatch = true;
7222
+ const prevTextPromises = this._extractTextPromises;
7223
+ const extractTextPromises = this._extractTextPromises.length = [];
7224
+ for (let i = 0, ii = pagesMapper.length; i < ii; i++) {
7225
+ const prevPageIndex = pagesMapper.getPrevPageNumber(i + 1) - 1;
7226
+ if (prevPageIndex === -1) {
7227
+ continue;
7228
+ }
7229
+ extractTextPromises.push(prevTextPromises[prevPageIndex] || Promise.resolve());
7230
+ }
7231
+ }
7245
7232
  #onFindBarClose(evt) {
7246
7233
  const pdfDocument = this._pdfDocument;
7247
7234
  this._firstPageCapability.promise.then(() => {
@@ -9556,6 +9543,161 @@ class PdfTextExtractor {
9556
9543
  }
9557
9544
  }
9558
9545
 
9546
+ ;// ./web/menu.js
9547
+
9548
+ class Menu {
9549
+ #triggeringButton;
9550
+ #menu;
9551
+ #menuItems;
9552
+ #openMenuAC = null;
9553
+ #menuAC = new AbortController();
9554
+ #lastIndex = -1;
9555
+ constructor(menuContainer, triggeringButton, menuItems) {
9556
+ this.#menu = menuContainer;
9557
+ this.#triggeringButton = triggeringButton;
9558
+ if (Array.isArray(menuItems)) {
9559
+ this.#menuItems = menuItems;
9560
+ } else {
9561
+ this.#menuItems = [];
9562
+ for (const button of this.#menu.querySelectorAll("button")) {
9563
+ this.#menuItems.push(button);
9564
+ }
9565
+ }
9566
+ this.#setUpMenu();
9567
+ }
9568
+ #closeMenu() {
9569
+ if (!this.#openMenuAC) {
9570
+ return;
9571
+ }
9572
+ const menu = this.#menu;
9573
+ this.#triggeringButton.ariaExpanded = "false";
9574
+ this.#openMenuAC.abort();
9575
+ this.#openMenuAC = null;
9576
+ if (menu.contains(document.activeElement)) {
9577
+ setTimeout(() => {
9578
+ if (!menu.contains(document.activeElement)) {
9579
+ this.#triggeringButton.focus();
9580
+ }
9581
+ }, 0);
9582
+ }
9583
+ this.#lastIndex = -1;
9584
+ }
9585
+ #setUpMenu() {
9586
+ this.#triggeringButton.addEventListener("click", e => {
9587
+ if (this.#openMenuAC) {
9588
+ this.#closeMenu();
9589
+ return;
9590
+ }
9591
+ const menu = this.#menu;
9592
+ this.#triggeringButton.ariaExpanded = "true";
9593
+ this.#openMenuAC = new AbortController();
9594
+ const signal = AbortSignal.any([this.#menuAC.signal, this.#openMenuAC.signal]);
9595
+ window.addEventListener("pointerdown", ({
9596
+ target
9597
+ }) => {
9598
+ if (target !== this.#triggeringButton && !menu.contains(target)) {
9599
+ this.#closeMenu();
9600
+ }
9601
+ }, {
9602
+ signal
9603
+ });
9604
+ window.addEventListener("blur", this.#closeMenu.bind(this), {
9605
+ signal
9606
+ });
9607
+ });
9608
+ const {
9609
+ signal
9610
+ } = this.#menuAC;
9611
+ this.#menu.addEventListener("keydown", e => {
9612
+ switch (e.key) {
9613
+ case "Escape":
9614
+ this.#closeMenu();
9615
+ stopEvent(e);
9616
+ break;
9617
+ case "ArrowDown":
9618
+ case "Tab":
9619
+ this.#goToNextItem(e.target, true);
9620
+ stopEvent(e);
9621
+ break;
9622
+ case "ArrowUp":
9623
+ case "ShiftTab":
9624
+ this.#goToNextItem(e.target, false);
9625
+ stopEvent(e);
9626
+ break;
9627
+ case "Home":
9628
+ this.#menuItems.find(item => !item.disabled && !item.classList.contains("hidden")).focus();
9629
+ stopEvent(e);
9630
+ break;
9631
+ case "End":
9632
+ this.#menuItems.findLast(item => !item.disabled && !item.classList.contains("hidden")).focus();
9633
+ stopEvent(e);
9634
+ break;
9635
+ default:
9636
+ const char = e.key.toLocaleLowerCase();
9637
+ this.#goToNextItem(e.target, true, item => item.textContent.trim().toLowerCase().startsWith(char));
9638
+ stopEvent(e);
9639
+ break;
9640
+ }
9641
+ }, {
9642
+ signal,
9643
+ capture: true
9644
+ });
9645
+ this.#menu.addEventListener("contextmenu", noContextMenu, {
9646
+ signal
9647
+ });
9648
+ this.#menu.addEventListener("click", this.#closeMenu.bind(this), {
9649
+ signal,
9650
+ capture: true
9651
+ });
9652
+ this.#triggeringButton.addEventListener("keydown", e => {
9653
+ switch (e.key) {
9654
+ case " ":
9655
+ case "Enter":
9656
+ case "ArrowDown":
9657
+ case "Home":
9658
+ if (!this.#openMenuAC) {
9659
+ this.#triggeringButton.click();
9660
+ }
9661
+ this.#menuItems.find(item => !item.disabled && !item.classList.contains("hidden")).focus();
9662
+ stopEvent(e);
9663
+ break;
9664
+ case "ArrowUp":
9665
+ case "End":
9666
+ if (!this.#openMenuAC) {
9667
+ this.#triggeringButton.click();
9668
+ }
9669
+ this.#menuItems.findLast(item => !item.disabled && !item.classList.contains("hidden")).focus();
9670
+ stopEvent(e);
9671
+ break;
9672
+ case "Escape":
9673
+ this.#closeMenu();
9674
+ stopEvent(e);
9675
+ break;
9676
+ }
9677
+ }, {
9678
+ signal
9679
+ });
9680
+ }
9681
+ #goToNextItem(element, forward, check = () => true) {
9682
+ const index = this.#lastIndex === -1 ? this.#menuItems.indexOf(element) : this.#lastIndex;
9683
+ const len = this.#menuItems.length;
9684
+ const increment = forward ? 1 : len - 1;
9685
+ for (let i = (index + increment) % len; i !== index; i = (i + increment) % len) {
9686
+ const menuItem = this.#menuItems[i];
9687
+ if (!menuItem.disabled && !menuItem.classList.contains("hidden") && check(menuItem)) {
9688
+ menuItem.focus();
9689
+ this.#lastIndex = i;
9690
+ break;
9691
+ }
9692
+ }
9693
+ }
9694
+ destroy() {
9695
+ this.#closeMenu();
9696
+ this.#menuAC?.abort();
9697
+ this.#menuAC = null;
9698
+ }
9699
+ }
9700
+
9559
9701
  ;// ./web/pdf_thumbnail_view.js
9560
9702
 
9561
9703
 
@@ -9594,10 +9736,11 @@ class PDFThumbnailView {
9594
9736
  renderingQueue,
9595
9737
  maxCanvasPixels,
9596
9738
  maxCanvasDim,
9597
- pageColors
9739
+ pageColors,
9740
+ enableSplitMerge = false
9598
9741
  }) {
9599
9742
  this.id = id;
9600
- this.renderingId = "thumbnail" + id;
9743
+ this.renderingId = `thumbnail${id}`;
9601
9744
  this.pageLabel = null;
9602
9745
  this.pdfPage = null;
9603
9746
  this.rotation = 0;
@@ -9613,20 +9756,32 @@ class PDFThumbnailView {
9613
9756
  this.renderTask = null;
9614
9757
  this.renderingState = RenderingStates.INITIAL;
9615
9758
  this.resume = null;
9759
+ this.placeholder = null;
9616
9760
  const imageContainer = this.div = document.createElement("div");
9617
9761
  imageContainer.className = "thumbnail";
9618
- imageContainer.setAttribute("page-number", this.#pageNumber);
9619
- const checkbox = this.checkbox = document.createElement("input");
9620
- checkbox.type = "checkbox";
9621
- checkbox.tabIndex = -1;
9762
+ imageContainer.setAttribute("page-number", id);
9763
+ imageContainer.setAttribute("page-id", id);
9764
+ if (enableSplitMerge) {
9765
+ const checkbox = this.checkbox = document.createElement("input");
9766
+ checkbox.type = "checkbox";
9767
+ checkbox.tabIndex = -1;
9768
+ imageContainer.append(checkbox);
9769
+ }
9622
9770
  const image = this.image = document.createElement("img");
9623
9771
  image.classList.add("thumbnailImage", "missingThumbnailImage");
9624
9772
  image.role = "button";
9625
9773
  image.tabIndex = -1;
9774
+ image.draggable = false;
9626
9775
  this.#updateDims();
9627
- imageContainer.append(checkbox, image);
9776
+ imageContainer.append(image);
9628
9777
  container.append(imageContainer);
9629
9778
  }
9779
+ updateId(newId) {
9780
+ this.id = newId;
9781
+ this.renderingId = `thumbnail${newId}`;
9782
+ this.div.setAttribute("page-number", newId);
9783
+ this.setPageLabel(this.pageLabel);
9784
+ }
9630
9785
  #updateDims() {
9631
9786
  const {
9632
9787
  width,
@@ -9855,9 +10010,6 @@ class PDFThumbnailView {
9855
10010
  page: this.pageLabel ?? this.id
9856
10011
  });
9857
10012
  }
9858
- get #pageNumber() {
9859
- return this.pageLabel ?? this.id;
9860
- }
9861
10013
  setPageLabel(label) {
9862
10014
  this.pageLabel = typeof label === "string" ? label : null;
9863
10015
  this.image.setAttribute("data-l10n-args", this.#pageL10nArgs);
@@ -9868,13 +10020,36 @@ class PDFThumbnailView {
9868
10020
 
9869
10021
 
9870
10022
 
10023
+
9871
10024
  const SCROLL_OPTIONS = {
9872
10025
  behavior: "instant",
9873
10026
  block: "nearest",
9874
10027
  inline: "nearest",
9875
10028
  container: "nearest"
9876
10029
  };
10030
+ const DRAG_THRESHOLD_IN_PIXELS = 5;
10031
+ const PIXELS_TO_SCROLL_WHEN_DRAGGING = 20;
10032
+ const SPACE_FOR_DRAG_MARKER_WHEN_NO_NEXT_ELEMENT = 15;
9877
10033
  class PDFThumbnailViewer {
10034
+ static #draggingScaleFactor = 0;
10035
+ #enableSplitMerge = false;
10036
+ #dragAC = null;
10037
+ #draggedContainer = null;
10038
+ #thumbnailsPositions = null;
10039
+ #lastDraggedOverIndex = NaN;
10040
+ #selectedPages = null;
10041
+ #draggedImageX = 0;
10042
+ #draggedImageY = 0;
10043
+ #draggedImageWidth = 0;
10044
+ #draggedImageHeight = 0;
10045
+ #draggedImageOffsetX = 0;
10046
+ #draggedImageOffsetY = 0;
10047
+ #dragMarker = null;
10048
+ #pageNumberToRemove = NaN;
10049
+ #currentScrollBottom = 0;
10050
+ #currentScrollTop = 0;
10051
+ #pagesMapper = PagesMapper.instance;
10052
+ #manageSaveAsButton = null;
9878
10053
  constructor({
9879
10054
  container,
9880
10055
  eventBus,
@@ -9884,7 +10059,9 @@ class PDFThumbnailViewer {
9884
10059
  maxCanvasDim,
9885
10060
  pageColors,
9886
10061
  abortSignal,
9887
- enableHWA
10062
+ enableHWA,
10063
+ enableSplitMerge,
10064
+ manageMenu
9888
10065
  }) {
9889
10066
  this.scrollableContainer = container.parentElement;
9890
10067
  this.container = container;
@@ -9895,6 +10072,27 @@ class PDFThumbnailViewer {
9895
10072
  this.maxCanvasDim = maxCanvasDim;
9896
10073
  this.pageColors = pageColors || null;
9897
10074
  this.enableHWA = enableHWA || false;
10075
+ this.#enableSplitMerge = enableSplitMerge || false;
10076
+ if (this.#enableSplitMerge && manageMenu) {
10077
+ const {
10078
+ button,
10079
+ menu,
10080
+ copy,
10081
+ cut,
10082
+ delete: del,
10083
+ saveAs
10084
+ } = manageMenu;
10085
+ this._manageMenu = new Menu(menu, button, [copy, cut, del, saveAs]);
10086
+ this.#manageSaveAsButton = saveAs;
10087
+ saveAs.addEventListener("click", () => {
10088
+ this.eventBus.dispatch("savepageseditedpdf", {
10089
+ source: this,
10090
+ data: this.#pagesMapper.getPageMappingForSaving()
10091
+ });
10092
+ });
10093
+ } else {
10094
+ manageMenu.button.hidden = true;
10095
+ }
9898
10096
  this.scroll = watchScroll(this.scrollableContainer, this.#scrollUpdated.bind(this), abortSignal);
9899
10097
  this.#resetView();
9900
10098
  this.#addEventListeners();
@@ -9933,14 +10131,15 @@ class PDFThumbnailViewer {
9933
10131
  } = this.#getVisibleThumbs();
9934
10132
  if (views.length > 0) {
9935
10133
  let shouldScroll = false;
9936
- if (pageNumber <= first.id || pageNumber >= last.id) {
10134
+ if (pageNumber <= this.#pagesMapper.getPageNumber(first.id) || pageNumber >= this.#pagesMapper.getPageNumber(last.id)) {
9937
10135
  shouldScroll = true;
9938
10136
  } else {
9939
10137
  for (const {
9940
10138
  id,
9941
10139
  percent
9942
10140
  } of views) {
9943
- if (id !== pageNumber) {
10141
+ const mappedPageNumber = this.#pagesMapper.getPageNumber(id);
10142
+ if (mappedPageNumber !== pageNumber) {
9944
10143
  continue;
9945
10144
  }
9946
10145
  shouldScroll = percent < 100;
@@ -10019,7 +10218,8 @@ class PDFThumbnailViewer {
10019
10218
  maxCanvasPixels: this.maxCanvasPixels,
10020
10219
  maxCanvasDim: this.maxCanvasDim,
10021
10220
  pageColors: this.pageColors,
10022
- enableHWA: this.enableHWA
10221
+ enableHWA: this.enableHWA,
10222
+ enableSplitMerge: this.#enableSplitMerge
10023
10223
  });
10024
10224
  this._thumbnails.push(thumbnail);
10025
10225
  }
@@ -10087,7 +10287,248 @@ class PDFThumbnailViewer {
10087
10287
  }
10088
10288
  return false;
10089
10289
  }
10290
+ static #getScaleFactor(image) {
10291
+ return PDFThumbnailViewer.#draggingScaleFactor ||= parseFloat(getComputedStyle(image).getPropertyValue("--thumbnail-dragging-scale"));
10292
+ }
10293
+ #updateThumbnails() {
10294
+ const pagesMapper = this.#pagesMapper;
10295
+ this.container.replaceChildren();
10296
+ const prevThumbnails = this._thumbnails;
10297
+ const newThumbnails = this._thumbnails = [];
10298
+ const fragment = document.createDocumentFragment();
10299
+ for (let i = 0, ii = pagesMapper.pagesNumber; i < ii; i++) {
10300
+ const prevPageIndex = pagesMapper.getPrevPageNumber(i + 1) - 1;
10301
+ if (prevPageIndex === -1) {
10302
+ continue;
10303
+ }
10304
+ const newThumbnail = prevThumbnails[prevPageIndex];
10305
+ newThumbnails.push(newThumbnail);
10306
+ newThumbnail.updateId(i + 1);
10307
+ newThumbnail.checkbox.checked = false;
10308
+ fragment.append(newThumbnail.div);
10309
+ }
10310
+ this.container.append(fragment);
10311
+ }
10312
+ #onStartDragging(draggedThumbnail) {
10313
+ this.#currentScrollTop = this.scrollableContainer.scrollTop;
10314
+ this.#currentScrollBottom = this.#currentScrollTop + this.scrollableContainer.clientHeight;
10315
+ this.#dragAC = new AbortController();
10316
+ this.container.classList.add("isDragging");
10317
+ const startPageNumber = parseInt(draggedThumbnail.getAttribute("page-number"), 10);
10318
+ this.#lastDraggedOverIndex = startPageNumber - 1;
10319
+ if (!this.#selectedPages?.has(startPageNumber)) {
10320
+ this.#pageNumberToRemove = startPageNumber;
10321
+ this.#selectPage(startPageNumber, true);
10322
+ }
10323
+ for (const selected of this.#selectedPages) {
10324
+ const thumbnail = this._thumbnails[selected - 1];
10325
+ const placeholder = thumbnail.placeholder = document.createElement("div");
10326
+ placeholder.classList.add("thumbnailImage", "placeholder");
10327
+ const {
10328
+ div,
10329
+ image
10330
+ } = thumbnail;
10331
+ div.classList.add("isDragging");
10332
+ placeholder.style.height = getComputedStyle(image).height;
10333
+ image.after(placeholder);
10334
+ if (selected !== startPageNumber) {
10335
+ image.classList.add("hidden");
10336
+ continue;
10337
+ }
10338
+ if (this.#selectedPages.size === 1) {
10339
+ image.classList.add("draggingThumbnail");
10340
+ this.#draggedContainer = image;
10341
+ continue;
10342
+ }
10343
+ const draggedContainer = this.#draggedContainer = document.createElement("div");
10344
+ draggedContainer.classList.add("draggingThumbnail", "thumbnailImage", "multiple");
10345
+ draggedContainer.style.height = getComputedStyle(image).height;
10346
+ image.replaceWith(draggedContainer);
10347
+ image.classList.remove("thumbnailImage");
10348
+ draggedContainer.append(image);
10349
+ draggedContainer.setAttribute("data-multiple-count", this.#selectedPages.size);
10350
+ }
10351
+ }
10352
+ #onStopDragging(isDropping = false) {
10353
+ const draggedContainer = this.#draggedContainer;
10354
+ this.#draggedContainer = null;
10355
+ const lastDraggedOverIndex = this.#lastDraggedOverIndex;
10356
+ this.#lastDraggedOverIndex = NaN;
10357
+ this.#dragMarker?.remove();
10358
+ this.#dragMarker = null;
10359
+ this.#dragAC.abort();
10360
+ this.#dragAC = null;
10361
+ this.container.classList.remove("isDragging");
10362
+ for (const selected of this.#selectedPages) {
10363
+ const thumbnail = this._thumbnails[selected - 1];
10364
+ const {
10365
+ div,
10366
+ placeholder,
10367
+ image
10368
+ } = thumbnail;
10369
+ placeholder.remove();
10370
+ image.classList.remove("draggingThumbnail", "hidden");
10371
+ div.classList.remove("isDragging");
10372
+ }
10373
+ if (draggedContainer.classList.contains("multiple")) {
10374
+ const originalImage = draggedContainer.firstElementChild;
10375
+ draggedContainer.replaceWith(originalImage);
10376
+ originalImage.classList.add("thumbnailImage");
10377
+ } else {
10378
+ draggedContainer.style.translate = "";
10379
+ }
10380
+ const selectedPages = this.#selectedPages;
10381
+ if (!isNaN(lastDraggedOverIndex) && isDropping && !(selectedPages.size === 1 && (selectedPages.has(lastDraggedOverIndex + 1) || selectedPages.has(lastDraggedOverIndex + 2)))) {
10382
+ const newIndex = lastDraggedOverIndex + 1;
10383
+ const pagesToMove = Array.from(selectedPages).sort((a, b) => a - b);
10384
+ const pagesMapper = this.#pagesMapper;
10385
+ const currentPageId = pagesMapper.getPageId(this._currentPageNumber);
10386
+ const newCurrentPageId = pagesMapper.getPageId(isNaN(this.#pageNumberToRemove) ? pagesToMove[0] : this.#pageNumberToRemove);
10387
+ this.eventBus.dispatch("beforepagesedited", {
10388
+ source: this,
10389
+ pagesMapper
10390
+ });
10391
+ pagesMapper.movePages(selectedPages, pagesToMove, newIndex);
10392
+ this.#updateThumbnails();
10393
+ this._currentPageNumber = pagesMapper.getPageNumber(currentPageId);
10394
+ this.#computeThumbnailsPosition();
10395
+ selectedPages.clear();
10396
+ this.#pageNumberToRemove = NaN;
10397
+ const isIdentity = this.#manageSaveAsButton.disabled = !this.#pagesMapper.hasBeenAltered();
10398
+ if (!isIdentity) {
10399
+ this.eventBus.dispatch("pagesedited", {
10400
+ source: this,
10401
+ pagesMapper,
10402
+ index: newIndex,
10403
+ pagesToMove
10404
+ });
10405
+ }
10406
+ const newCurrentPageNumber = pagesMapper.getPageNumber(newCurrentPageId);
10407
+ setTimeout(() => {
10408
+ this.linkService.goToPage(newCurrentPageNumber);
10409
+ }, 0);
10410
+ }
10411
+ if (!isNaN(this.#pageNumberToRemove)) {
10412
+ this.#selectPage(this.#pageNumberToRemove, false);
10413
+ this.#pageNumberToRemove = NaN;
10414
+ }
10415
+ }
10416
+ #moveDraggedContainer(dx, dy) {
10417
+ this.#draggedImageOffsetX += dx;
10418
+ this.#draggedImageOffsetY += dy;
10419
+ this.#draggedImageX += dx;
10420
+ this.#draggedImageY += dy;
10421
+ this.#draggedContainer.style.translate = `${this.#draggedImageOffsetX}px ${this.#draggedImageOffsetY}px`;
10422
+ if (this.#draggedImageY + this.#draggedImageHeight > this.#currentScrollBottom) {
10423
+ this.scrollableContainer.scrollTop = Math.min(this.scrollableContainer.scrollTop + PIXELS_TO_SCROLL_WHEN_DRAGGING, this.scrollableContainer.scrollHeight);
10424
+ } else if (this.#draggedImageY < this.#currentScrollTop) {
10425
+ this.scrollableContainer.scrollTop = Math.max(this.scrollableContainer.scrollTop - PIXELS_TO_SCROLL_WHEN_DRAGGING, 0);
10426
+ }
10427
+ const positionData = this.#findClosestThumbnail(this.#draggedImageX + this.#draggedImageWidth / 2, this.#draggedImageY + this.#draggedImageHeight / 2);
10428
+ if (!positionData) {
10429
+ return;
10430
+ }
10431
+ let dragMarker = this.#dragMarker;
10432
+ if (!dragMarker) {
10433
+ dragMarker = this.#dragMarker = document.createElement("div");
10434
+ dragMarker.className = "dragMarker";
10435
+ this.container.firstChild.before(dragMarker);
10436
+ }
10437
+ const [index, space] = positionData;
10438
+ const dragMarkerStyle = dragMarker.style;
10439
+ const {
10440
+ bbox,
10441
+ x: xPos
10442
+ } = this.#thumbnailsPositions;
10443
+ let x, y, width, height;
10444
+ if (index < 0) {
10445
+ if (xPos.length === 1) {
10446
+ y = bbox[1] - SPACE_FOR_DRAG_MARKER_WHEN_NO_NEXT_ELEMENT;
10447
+ x = bbox[4];
10448
+ width = bbox[2];
10449
+ } else {
10450
+ y = bbox[1];
10451
+ x = bbox[0] - SPACE_FOR_DRAG_MARKER_WHEN_NO_NEXT_ELEMENT;
10452
+ height = bbox[3];
10453
+ }
10454
+ } else if (xPos.length === 1) {
10455
+ y = bbox[index * 4 + 1] + bbox[index * 4 + 3] + space;
10456
+ x = bbox[index * 4];
10457
+ width = bbox[index * 4 + 2];
10458
+ } else {
10459
+ y = bbox[index * 4 + 1];
10460
+ x = bbox[index * 4] + bbox[index * 4 + 2] + space;
10461
+ height = bbox[index * 4 + 3];
10462
+ }
10463
+ dragMarkerStyle.translate = `${x}px ${y}px`;
10464
+ dragMarkerStyle.width = width ? `${width}px` : "";
10465
+ dragMarkerStyle.height = height ? `${height}px` : "";
10466
+ }
10467
+ #computeThumbnailsPosition() {
10468
+ const positionsX = [];
10469
+ const positionsY = [];
10470
+ const positionsLastX = [];
10471
+ const bbox = new Float32Array(this._thumbnails.length * 4);
10472
+ let prevX = -Infinity;
10473
+ let prevY = -Infinity;
10474
+ let reminder = -1;
10475
+ let firstRightX;
10476
+ let lastRightX;
10477
+ let firstBottomY;
10478
+ for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {
10479
+ const {
10480
+ div
10481
+ } = this._thumbnails[i];
10482
+ const {
10483
+ offsetTop: y,
10484
+ offsetLeft: x,
10485
+ offsetWidth: w,
10486
+ offsetHeight: h
10487
+ } = div;
10488
+ if (w === 0) {
10489
+ return;
10490
+ }
10491
+ bbox[i * 4] = x;
10492
+ bbox[i * 4 + 1] = y;
10493
+ bbox[i * 4 + 2] = w;
10494
+ bbox[i * 4 + 3] = h;
10495
+ if (x > prevX) {
10496
+ prevX = x + w / 2;
10497
+ firstRightX ??= prevX + w;
10498
+ positionsX.push(prevX);
10499
+ }
10500
+ if (reminder > 0 && i >= ii - reminder) {
10501
+ const cx = x + w / 2;
10502
+ positionsLastX.push(cx);
10503
+ lastRightX ??= cx + w;
10504
+ }
10505
+ if (y > prevY) {
10506
+ if (reminder === -1 && positionsX.length > 1) {
10507
+ reminder = ii % positionsX.length;
10508
+ }
10509
+ prevY = y + h / 2;
10510
+ firstBottomY ??= prevY + h;
10511
+ positionsY.push(prevY);
10512
+ }
10513
+ }
10514
+ const space = positionsX.length > 1 ? (positionsX[1] - firstRightX) / 2 : (positionsY[1] - firstBottomY) / 2;
10515
+ this.#thumbnailsPositions = {
10516
+ x: positionsX,
10517
+ y: positionsY,
10518
+ lastX: positionsLastX,
10519
+ space,
10520
+ lastSpace: (positionsLastX.at(-1) - lastRightX) / 2,
10521
+ bbox
10522
+ };
10523
+ }
10090
10524
  #addEventListeners() {
10525
+ this.eventBus.on("resize", ({
10526
+ source
10527
+ }) => {
10528
+ if (source.thumbnailsView === this.container) {
10529
+ this.#computeThumbnailsPosition();
10530
+ }
10531
+ });
10091
10532
  this.container.addEventListener("keydown", e => {
10092
10533
  switch (e.key) {
10093
10534
  case "ArrowLeft":
@@ -10120,7 +10561,146 @@ class PDFThumbnailViewer {
10120
10561
  break;
10121
10562
  }
10122
10563
  });
10123
- this.container.addEventListener("click", this.#goToPage.bind(this));
10564
+ this.container.addEventListener("click", e => {
10565
+ const {
10566
+ target
10567
+ } = e;
10568
+ if (target instanceof HTMLInputElement) {
10569
+ const pageNumber = parseInt(target.parentElement.getAttribute("page-number"), 10);
10570
+ this.#selectPage(pageNumber, target.checked);
10571
+ return;
10572
+ }
10573
+ this.#goToPage(e);
10574
+ });
10575
+ this.#addDragListeners();
10576
+ }
10577
+ #selectPage(pageNumber, checked) {
10578
+ const set = this.#selectedPages ??= new Set();
10579
+ if (checked) {
10580
+ set.add(pageNumber);
10581
+ } else {
10582
+ set.delete(pageNumber);
10583
+ }
10584
+ }
10585
+ #addDragListeners() {
10586
+ if (!this.#enableSplitMerge) {
10587
+ return;
10588
+ }
10589
+ this.container.addEventListener("pointerdown", e => {
10590
+ const {
10591
+ target: draggedImage,
10592
+ clientX: clickX,
10593
+ clientY: clickY,
10594
+ pointerId: dragPointerId
10595
+ } = e;
10596
+ if (!isNaN(this.#lastDraggedOverIndex) || !draggedImage.classList.contains("thumbnailImage")) {
10597
+ return;
10598
+ }
10599
+ const thumbnail = draggedImage.parentElement;
10600
+ const pointerDownAC = new AbortController();
10601
+ const {
10602
+ signal: pointerDownSignal
10603
+ } = pointerDownAC;
10604
+ let prevDragX = clickX;
10605
+ let prevDragY = clickY;
10606
+ let prevScrollTop = this.scrollableContainer.scrollTop;
10607
+ const scaleFactor = PDFThumbnailViewer.#getScaleFactor(draggedImage);
10608
+ this.#draggedImageOffsetX = ((scaleFactor - 1) * e.layerX + draggedImage.offsetLeft) / scaleFactor;
10609
+ this.#draggedImageOffsetY = ((scaleFactor - 1) * e.layerY + draggedImage.offsetTop) / scaleFactor;
10610
+ this.#draggedImageX = thumbnail.offsetLeft + this.#draggedImageOffsetX;
10611
+ this.#draggedImageY = thumbnail.offsetTop + this.#draggedImageOffsetY;
10612
+ this.#draggedImageWidth = draggedImage.offsetWidth / scaleFactor;
10613
+ this.#draggedImageHeight = draggedImage.offsetHeight / scaleFactor;
10614
+ this.container.addEventListener("pointermove", ev => {
10615
+ const {
10616
+ clientX: x,
10617
+ clientY: y,
10618
+ pointerId
10619
+ } = ev;
10620
+ if (pointerId !== dragPointerId || Math.abs(x - clickX) <= DRAG_THRESHOLD_IN_PIXELS && Math.abs(y - clickY) <= DRAG_THRESHOLD_IN_PIXELS) {
10621
+ return;
10622
+ }
10623
+ if (isNaN(this.#lastDraggedOverIndex)) {
10624
+ this.#onStartDragging(thumbnail);
10625
+ const stopDragging = (_e, isDropping = false) => {
10626
+ this.#onStopDragging(isDropping);
10627
+ pointerDownAC.abort();
10628
+ };
10629
+ const {
10630
+ signal
10631
+ } = this.#dragAC;
10632
+ window.addEventListener("touchmove", stopEvent, {
10633
+ passive: false,
10634
+ signal
10635
+ });
10636
+ window.addEventListener("contextmenu", noContextMenu, {
10637
+ signal
10638
+ });
10639
+ this.scrollableContainer.addEventListener("scrollend", () => {
10640
+ const {
10641
+ scrollableContainer: {
10642
+ clientHeight,
10643
+ scrollTop
10644
+ }
10645
+ } = this;
10646
+ this.#currentScrollTop = scrollTop;
10647
+ this.#currentScrollBottom = scrollTop + clientHeight;
10648
+ const dy = scrollTop - prevScrollTop;
10649
+ prevScrollTop = scrollTop;
10650
+ this.#moveDraggedContainer(0, dy);
10651
+ }, {
10652
+ passive: true,
10653
+ signal
10654
+ });
10655
+ window.addEventListener("pointerup", upEv => {
10656
+ if (upEv.pointerId !== dragPointerId) {
10657
+ return;
10658
+ }
10659
+ window.addEventListener("click", stopEvent, {
10660
+ capture: true,
10661
+ once: true,
10662
+ signal
10663
+ });
10664
+ stopEvent(upEv);
10665
+ stopDragging(upEv, true);
10666
+ }, {
10667
+ signal
10668
+ });
10669
+ window.addEventListener("blur", stopDragging, {
10670
+ signal
10671
+ });
10672
+ window.addEventListener("pointercancel", stopDragging, {
10673
+ signal
10674
+ });
10675
+ window.addEventListener("wheel", stopEvent, {
10676
+ passive: false,
10677
+ signal
10678
+ });
10679
+ }
10680
+ const dx = x - prevDragX;
10681
+ const dy = y - prevDragY;
10682
+ prevDragX = x;
10683
+ prevDragY = y;
10684
+ this.#moveDraggedContainer(dx, dy);
10685
+ }, {
10686
+ passive: true,
10687
+ signal: pointerDownSignal
10688
+ });
10689
+ window.addEventListener("pointerup", ({
10690
+ pointerId
10691
+ }) => {
10692
+ if (pointerId !== dragPointerId) {
10693
+ return;
10694
+ }
10695
+ pointerDownAC.abort();
10696
+ }, {
10697
+ signal: pointerDownSignal
10698
+ });
10699
+ window.addEventListener("dragstart", stopEvent, {
10700
+ capture: true,
10701
+ signal: pointerDownSignal
10702
+ });
10703
+ });
10124
10704
  }
10125
10705
  #goToPage(e) {
10126
10706
  const {
@@ -10171,6 +10751,41 @@ class PDFThumbnailViewer {
10171
10751
  nextThumbnail.image.focus();
10172
10752
  }
10173
10753
  }
10754
+ #findClosestThumbnail(x, y) {
10755
+ if (!this.#thumbnailsPositions) {
10756
+ this.#computeThumbnailsPosition();
10757
+ }
10758
+ const {
10759
+ x: positionsX,
10760
+ y: positionsY,
10761
+ lastX: positionsLastX,
10762
+ space: spaceBetweenThumbnails,
10763
+ lastSpace: lastSpaceBetweenThumbnails
10764
+ } = this.#thumbnailsPositions;
10765
+ const lastDraggedOverIndex = this.#lastDraggedOverIndex;
10766
+ let xPos = lastDraggedOverIndex % positionsX.length;
10767
+ let yPos = Math.floor(lastDraggedOverIndex / positionsX.length);
10768
+ let xArray = yPos === positionsY.length - 1 ? positionsLastX : positionsX;
10769
+ if (positionsY[yPos] <= y && y < (positionsY[yPos + 1] ?? Infinity) && xArray[xPos] <= x && x < (xArray[xPos + 1] ?? Infinity)) {
10770
+ return null;
10771
+ }
10772
+ yPos = binarySearchFirstItem(positionsY, cy => y < cy) - 1;
10773
+ xArray = yPos === positionsY.length - 1 && positionsLastX.length > 0 ? positionsLastX : positionsX;
10774
+ xPos = Math.max(0, binarySearchFirstItem(xArray, cx => x < cx) - 1);
10775
+ if (yPos < 0) {
10776
+ if (xPos <= 0) {
10777
+ xPos = -1;
10778
+ }
10779
+ yPos = 0;
10780
+ }
10781
+ const index = MathClamp(yPos * positionsX.length + xPos, -1, this._thumbnails.length - 1);
10782
+ if (index === lastDraggedOverIndex) {
10783
+ return null;
10784
+ }
10785
+ this.#lastDraggedOverIndex = index;
10786
+ const space = yPos === positionsY.length - 1 && positionsLastX.length > 0 && xPos >= 0 ? lastSpaceBetweenThumbnails : spaceBetweenThumbnails;
10787
+ return [index, space];
10788
+ }
10174
10789
  }
10175
10790
 
10176
10791
  ;// ./web/annotation_editor_layer_builder.js
@@ -10587,7 +11202,7 @@ class Autolinker {
10587
11202
  static #regex;
10588
11203
  static #numericTLDRegex;
10589
11204
  static findLinks(text) {
10590
- this.#regex ??= /\b(?:https?:\/\/|mailto:|www\.)(?:[\S--[\p{P}<>]]|\/|[\S--[\[\]]]+[\S--[\p{P}<>]])+|(?=\p{L})[\S--[@\p{Ps}\p{Pe}<>]]+@([\S--[\p{P}<>]]+(?:\.[\S--[\p{P}<>]]+)+)/gmv;
11205
+ this.#regex ??= /\b(?:https?:\/\/|mailto:|www\.)(?:[\S--[\p{P}<>]]|\/|[\S--[\[\]]]+[\S--[\p{P}<>]])+|(?=\p{L})[\S--[@\p{Ps}\p{Pe}<>]]+@([\S--[[\p{P}--\-]<>]]+(?:\.[\S--[[\p{P}--\-]<>]]+)+)/gmv;
10591
11206
  const [normalizedText, diffs] = normalize(text, {
10592
11207
  ignoreDashEOL: true
10593
11208
  });
@@ -10837,18 +11452,13 @@ class BasePDFPageView {
10837
11452
 
10838
11453
  class DrawLayerBuilder {
10839
11454
  #drawLayer = null;
10840
- constructor(options) {
10841
- this.pageIndex = options.pageIndex;
10842
- }
10843
11455
  async render({
10844
11456
  intent = "display"
10845
11457
  }) {
10846
11458
  if (intent !== "display" || this.#drawLayer || this._cancelled) {
10847
11459
  return;
10848
11460
  }
10849
- this.#drawLayer = new DrawLayer({
10850
- pageIndex: this.pageIndex
10851
- });
11461
+ this.#drawLayer = new DrawLayer();
10852
11462
  }
10853
11463
  cancel() {
10854
11464
  this._cancelled = true;
@@ -11147,6 +11757,8 @@ class StructTreeLayerBuilder {
11147
11757
  #elementAttributes = new Map();
11148
11758
  #rawDims;
11149
11759
  #elementsToAddToTextLayer = null;
11760
+ #elementsToHideInTextLayer = null;
11761
+ #elementsToStealFromTextLayer = null;
11150
11762
  constructor(pdfPage, rawDims) {
11151
11763
  this.#promise = pdfPage.getStructTree();
11152
11764
  this.#rawDims = rawDims;
@@ -11255,15 +11867,43 @@ class StructTreeLayerBuilder {
11255
11867
  style.top = `${calc}${pageHeight - bbox[3] + pageY}px)`;
11256
11868
  return true;
11257
11869
  }
11258
- addElementsToTextLayer() {
11259
- if (!this.#elementsToAddToTextLayer) {
11260
- return;
11870
+ updateTextLayer() {
11871
+ if (this.#elementsToAddToTextLayer) {
11872
+ for (const [id, img] of this.#elementsToAddToTextLayer) {
11873
+ document.getElementById(id)?.append(img);
11874
+ }
11875
+ this.#elementsToAddToTextLayer.clear();
11876
+ this.#elementsToAddToTextLayer = null;
11261
11877
  }
11262
- for (const [id, img] of this.#elementsToAddToTextLayer) {
11263
- document.getElementById(id)?.append(img);
11878
+ if (this.#elementsToHideInTextLayer) {
11879
+ for (const id of this.#elementsToHideInTextLayer) {
11880
+ const elem = document.getElementById(id);
11881
+ if (elem) {
11882
+ elem.ariaHidden = true;
11883
+ }
11884
+ }
11885
+ this.#elementsToHideInTextLayer.length = 0;
11886
+ this.#elementsToHideInTextLayer = null;
11887
+ }
11888
+ if (this.#elementsToStealFromTextLayer) {
11889
+ for (let i = 0, ii = this.#elementsToStealFromTextLayer.length; i < ii; i += 2) {
11890
+ const element = this.#elementsToStealFromTextLayer[i];
11891
+ const ids = this.#elementsToStealFromTextLayer[i + 1];
11892
+ let textContent = "";
11893
+ for (const id of ids) {
11894
+ const elem = document.getElementById(id);
11895
+ if (elem) {
11896
+ textContent += elem.textContent.trim() || "";
11897
+ elem.ariaHidden = "true";
11898
+ }
11899
+ }
11900
+ if (textContent) {
11901
+ element.textContent = textContent;
11902
+ }
11903
+ }
11904
+ this.#elementsToStealFromTextLayer.length = 0;
11905
+ this.#elementsToStealFromTextLayer = null;
11264
11906
  }
11265
- this.#elementsToAddToTextLayer.clear();
11266
- this.#elementsToAddToTextLayer = null;
11267
11907
  }
11268
11908
  #walk(node) {
11269
11909
  if (!node) {
@@ -11276,22 +11916,16 @@ class StructTreeLayerBuilder {
11276
11916
  } = node;
11277
11917
  if (MathMLElements.has(role)) {
11278
11918
  element = document.createElementNS(MathMLNamespace, role);
11279
- let text = "";
11919
+ const ids = [];
11920
+ (this.#elementsToStealFromTextLayer ||= []).push(element, ids);
11280
11921
  for (const {
11281
11922
  type,
11282
11923
  id
11283
11924
  } of node.children || []) {
11284
- if (type !== "content" || !id) {
11285
- continue;
11286
- }
11287
- const elem = document.getElementById(id);
11288
- if (!elem) {
11289
- continue;
11925
+ if (type === "content" && id) {
11926
+ ids.push(id);
11290
11927
  }
11291
- text += elem.textContent.trim() || "";
11292
- elem.ariaHidden = "true";
11293
11928
  }
11294
- element.textContent = text;
11295
11929
  } else {
11296
11930
  element = document.createElement("span");
11297
11931
  }
@@ -11316,14 +11950,13 @@ class StructTreeLayerBuilder {
11316
11950
  if (!id) {
11317
11951
  continue;
11318
11952
  }
11319
- const elem = document.getElementById(id);
11320
- if (elem) {
11321
- elem.ariaHidden = true;
11322
- }
11953
+ (this.#elementsToHideInTextLayer ||= []).push(id);
11323
11954
  }
11955
+ delete node.alt;
11324
11956
  }
11325
11957
  if (!node.mathML && node.children.length === 1 && node.children[0].role !== "math") {
11326
11958
  element = document.createElementNS(MathMLNamespace, "math");
11959
+ delete node.alt;
11327
11960
  }
11328
11961
  }
11329
11962
  }
@@ -12065,6 +12698,25 @@ class PDFPageView extends BasePDFPageView {
12065
12698
  }
12066
12699
  setLayerDimensions(div, viewport, true, false);
12067
12700
  }
12701
+ updatePageNumber(newPageNumber) {
12702
+ if (this.id === newPageNumber) {
12703
+ return;
12704
+ }
12705
+ this.id = newPageNumber;
12706
+ this.renderingId = `page${newPageNumber}`;
12707
+ if (this.pdfPage) {
12708
+ this.pdfPage.pageNumber = newPageNumber;
12709
+ }
12710
+ this.setPageLabel(this.pageLabel);
12711
+ const {
12712
+ div
12713
+ } = this;
12714
+ div.setAttribute("data-page-number", newPageNumber);
12715
+ div.setAttribute("data-l10n-args", JSON.stringify({
12716
+ page: newPageNumber
12717
+ }));
12718
+ this._textHighlighter.pageIdx = newPageNumber - 1;
12719
+ }
12068
12720
  setPdfPage(pdfPage) {
12069
12721
  if (this._isStandalone && (this.pageColors?.foreground === "CanvasText" || this.pageColors?.background === "Canvas")) {
12070
12722
  this._container?.style.setProperty("--hcm-highlight-filter", pdfPage.filterFactory.addHighlightHCMFilter("highlight", "CanvasText", "Canvas", "HighlightText", "Highlight"));
@@ -12187,7 +12839,7 @@ class PDFPageView extends BasePDFPageView {
12187
12839
  const treeDom = await this.structTreeLayer?.render();
12188
12840
  if (treeDom) {
12189
12841
  this.l10n.pause();
12190
- this.structTreeLayer?.addElementsToTextLayer();
12842
+ this.structTreeLayer?.updateTextLayer();
12191
12843
  if (this.canvas && treeDom.parentNode !== this.canvas) {
12192
12844
  this.canvas.append(treeDom);
12193
12845
  }
@@ -12653,9 +13305,7 @@ class PDFPageView extends BasePDFPageView {
12653
13305
  if (!annotationEditorUIManager) {
12654
13306
  return;
12655
13307
  }
12656
- this.drawLayer ||= new DrawLayerBuilder({
12657
- pageIndex: this.id
12658
- });
13308
+ this.drawLayer ||= new DrawLayerBuilder();
12659
13309
  await this.#renderDrawLayer();
12660
13310
  this.drawLayer.setParent(canvasWrapper);
12661
13311
  if (this.annotationLayer || this.#annotationMode === AnnotationMode.DISABLE) {
@@ -12812,8 +13462,9 @@ class PDFViewer {
12812
13462
  #supportsPinchToZoom = true;
12813
13463
  #textLayerMode = TextLayerMode.ENABLE;
12814
13464
  #viewerAlert = null;
13465
+ #pagesMapper = PagesMapper.instance;
12815
13466
  constructor(options) {
12816
- const viewerVersion = "5.4.530";
13467
+ const viewerVersion = "5.4.624";
12817
13468
  if (version !== viewerVersion) {
12818
13469
  throw new Error(`The API version "${version}" does not match the Viewer version "${viewerVersion}".`);
12819
13470
  }
@@ -13195,6 +13846,7 @@ class PDFViewer {
13195
13846
  this.#annotationEditorUIManager = null;
13196
13847
  this.#annotationEditorMode = AnnotationEditorType.NONE;
13197
13848
  this.#printingAllowed = true;
13849
+ this.#pagesMapper.pagesNumber = 0;
13198
13850
  }
13199
13851
  this.pdfDocument = pdfDocument;
13200
13852
  if (!pdfDocument) {
@@ -13403,6 +14055,44 @@ class PDFViewer {
13403
14055
  this._pagesCapability.reject(reason);
13404
14056
  });
13405
14057
  }
14058
+ async onBeforePagesEdited({
14059
+ pagesMapper
14060
+ }) {
14061
+ await this._pagesCapability.promise;
14062
+ this._currentPageId = pagesMapper.getPageId(this._currentPageNumber);
14063
+ }
14064
+ onPagesEdited({
14065
+ pagesMapper
14066
+ }) {
14067
+ this._currentPageNumber = pagesMapper.getPageNumber(this._currentPageId);
14068
+ const prevPages = this._pages;
14069
+ const newPages = this._pages = [];
14070
+ for (let i = 0, ii = pagesMapper.pagesNumber; i < ii; i++) {
14071
+ const prevPageNumber = pagesMapper.getPrevPageNumber(i + 1) - 1;
14072
+ if (prevPageNumber === -1) {
14073
+ continue;
14074
+ }
14075
+ const page = prevPages[prevPageNumber];
14076
+ newPages[i] = page;
14077
+ page.updatePageNumber(i + 1);
14078
+ }
14079
+ const viewerElement = this._scrollMode === ScrollMode.PAGE ? null : this.viewer;
14080
+ if (viewerElement) {
14081
+ viewerElement.replaceChildren();
14082
+ const fragment = document.createDocumentFragment();
14083
+ for (let i = 0, ii = pagesMapper.pagesNumber; i < ii; i++) {
14084
+ const {
14085
+ div
14086
+ } = newPages[i];
14087
+ div.setAttribute("data-page-number", i + 1);
14088
+ fragment.append(div);
14089
+ }
14090
+ viewerElement.append(fragment);
14091
+ }
14092
+ setTimeout(() => {
14093
+ this.forceRendering();
14094
+ });
14095
+ }
13406
14096
  setPageLabels(labels) {
13407
14097
  if (!this.pdfDocument) {
13408
14098
  return;
@@ -13829,18 +14519,18 @@ class PDFViewer {
13829
14519
  }
13830
14520
  this.renderingQueue.renderHighestPriority(visible);
13831
14521
  const isSimpleLayout = this._spreadMode === SpreadMode.NONE && (this._scrollMode === ScrollMode.PAGE || this._scrollMode === ScrollMode.VERTICAL);
13832
- const currentId = this._currentPageNumber;
14522
+ const currentPageNumber = this._currentPageNumber;
13833
14523
  let stillFullyVisible = false;
13834
14524
  for (const page of visiblePages) {
13835
14525
  if (page.percent < 100) {
13836
14526
  break;
13837
14527
  }
13838
- if (page.id === currentId && isSimpleLayout) {
14528
+ if (page.id === currentPageNumber && isSimpleLayout) {
13839
14529
  stillFullyVisible = true;
13840
14530
  break;
13841
14531
  }
13842
14532
  }
13843
- this._setCurrentPageNumber(stillFullyVisible ? currentId : visiblePages[0].id);
14533
+ this._setCurrentPageNumber(stillFullyVisible ? this._currentPageNumber : visiblePages[0].id);
13844
14534
  this._updateLocation(visible.first);
13845
14535
  this.eventBus.dispatch("updateviewarea", {
13846
14536
  source: this,
@@ -15976,152 +16666,6 @@ class ViewHistory {
15976
16666
  }
15977
16667
  }
15978
16668
 
15979
- ;// ./web/menu.js
15980
-
15981
- class Menu {
15982
- #triggeringButton;
15983
- #menu;
15984
- #menuItems;
15985
- #openMenuAC = null;
15986
- #menuAC = new AbortController();
15987
- #lastIndex = -1;
15988
- constructor(menuContainer, triggeringButton, menuItems) {
15989
- this.#menu = menuContainer;
15990
- this.#triggeringButton = triggeringButton;
15991
- if (Array.isArray(menuItems)) {
15992
- this.#menuItems = menuItems;
15993
- } else {
15994
- this.#menuItems = [];
15995
- for (const button of this.#menu.querySelectorAll("button")) {
15996
- this.#menuItems.push(button);
15997
- }
15998
- }
15999
- this.#setUpMenu();
16000
- }
16001
- #closeMenu() {
16002
- if (!this.#openMenuAC) {
16003
- return;
16004
- }
16005
- const menu = this.#menu;
16006
- menu.classList.toggle("hidden", true);
16007
- this.#triggeringButton.ariaExpanded = "false";
16008
- this.#openMenuAC.abort();
16009
- this.#openMenuAC = null;
16010
- if (menu.contains(document.activeElement)) {
16011
- setTimeout(() => {
16012
- if (!menu.contains(document.activeElement)) {
16013
- this.#triggeringButton.focus();
16014
- }
16015
- }, 0);
16016
- }
16017
- this.#lastIndex = -1;
16018
- }
16019
- #setUpMenu() {
16020
- this.#triggeringButton.addEventListener("click", e => {
16021
- if (this.#openMenuAC) {
16022
- this.#closeMenu();
16023
- return;
16024
- }
16025
- const menu = this.#menu;
16026
- menu.classList.toggle("hidden", false);
16027
- this.#triggeringButton.ariaExpanded = "true";
16028
- this.#openMenuAC = new AbortController();
16029
- const signal = AbortSignal.any([this.#menuAC.signal, this.#openMenuAC.signal]);
16030
- window.addEventListener("pointerdown", ({
16031
- target
16032
- }) => {
16033
- if (target !== this.#triggeringButton && !menu.contains(target)) {
16034
- this.#closeMenu();
16035
- }
16036
- }, {
16037
- signal
16038
- });
16039
- window.addEventListener("blur", this.#closeMenu.bind(this), {
16040
- signal
16041
- });
16042
- });
16043
- const {
16044
- signal
16045
- } = this.#menuAC;
16046
- this.#menu.addEventListener("keydown", e => {
16047
- switch (e.key) {
16048
- case "Escape":
16049
- this.#closeMenu();
16050
- stopEvent(e);
16051
- break;
16052
- case "ArrowDown":
16053
- case "Tab":
16054
- this.#goToNextItem(e.target, true);
16055
- stopEvent(e);
16056
- break;
16057
- case "ArrowUp":
16058
- case "ShiftTab":
16059
- this.#goToNextItem(e.target, false);
16060
- stopEvent(e);
16061
- break;
16062
- case "Home":
16063
- this.#menuItems.find(item => !item.disabled && !item.classList.contains("hidden")).focus();
16064
- stopEvent(e);
16065
- break;
16066
- case "End":
16067
- this.#menuItems.findLast(item => !item.disabled && !item.classList.contains("hidden")).focus();
16068
- stopEvent(e);
16069
- break;
16070
- }
16071
- }, {
16072
- signal,
16073
- capture: true
16074
- });
16075
- this.#menu.addEventListener("contextmenu", noContextMenu, {
16076
- signal
16077
- });
16078
- this.#menu.addEventListener("click", this.#closeMenu.bind(this), {
16079
- signal,
16080
- capture: true
16081
- });
16082
- this.#triggeringButton.addEventListener("keydown", ev => {
16083
- if (!this.#openMenuAC) {
16084
- return;
16085
- }
16086
- switch (ev.key) {
16087
- case "ArrowDown":
16088
- case "Home":
16089
- this.#menuItems.find(item => !item.disabled && !item.classList.contains("hidden")).focus();
16090
- stopEvent(ev);
16091
- break;
16092
- case "ArrowUp":
16093
- case "End":
16094
- this.#menuItems.findLast(item => !item.disabled && !item.classList.contains("hidden")).focus();
16095
- stopEvent(ev);
16096
- break;
16097
- case "Escape":
16098
- this.#closeMenu();
16099
- stopEvent(ev);
16100
- }
16101
- }, {
16102
- signal
16103
- });
16104
- }
16105
- #goToNextItem(element, forward) {
16106
- const index = this.#lastIndex === -1 ? this.#menuItems.indexOf(element) : this.#lastIndex;
16107
- const len = this.#menuItems.length;
16108
- const increment = forward ? 1 : len - 1;
16109
- for (let i = (index + increment) % len; i !== index; i = (i + increment) % len) {
16110
- const menuItem = this.#menuItems[i];
16111
- if (!menuItem.disabled && !menuItem.classList.contains("hidden")) {
16112
- menuItem.focus();
16113
- this.#lastIndex = i;
16114
- break;
16115
- }
16116
- }
16117
- }
16118
- destroy() {
16119
- this.#closeMenu();
16120
- this.#menuAC?.abort();
16121
- this.#menuAC = null;
16122
- }
16123
- }
16124
-
16125
16669
  ;// ./web/views_manager.js
16126
16670
 
16127
16671
 
@@ -16765,7 +17309,9 @@ const PDFViewerApplication = {
16765
17309
  maxCanvasDim,
16766
17310
  pageColors,
16767
17311
  abortSignal,
16768
- enableHWA
17312
+ enableHWA,
17313
+ enableSplitMerge: AppOptions.get("enableSplitMerge"),
17314
+ manageMenu: appConfig.viewsManager.manageMenu
16769
17315
  });
16770
17316
  renderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);
16771
17317
  }
@@ -17159,12 +17705,7 @@ const PDFViewerApplication = {
17159
17705
  this.passwordPrompt.setUpdateCallback(updateCallback, reason);
17160
17706
  this.passwordPrompt.open();
17161
17707
  };
17162
- loadingTask.onProgress = ({
17163
- loaded,
17164
- total
17165
- }) => {
17166
- this.progress(loaded / total);
17167
- };
17708
+ loadingTask.onProgress = evt => this.progress(evt.percent);
17168
17709
  return loadingTask.promise.then(pdfDocument => {
17169
17710
  this.load(pdfDocument);
17170
17711
  }, reason => {
@@ -17254,8 +17795,7 @@ const PDFViewerApplication = {
17254
17795
  console.error(`${message}\n\n${moreInfoText.join("\n")}`);
17255
17796
  return message;
17256
17797
  },
17257
- progress(level) {
17258
- const percent = Math.round(level * 100);
17798
+ progress(percent) {
17259
17799
  if (!this.loadingBar || percent <= this.loadingBar.percent) {
17260
17800
  return;
17261
17801
  }
@@ -17772,6 +18312,9 @@ const PDFViewerApplication = {
17772
18312
  eventBus._on("updatefindcontrolstate", onUpdateFindControlState.bind(this), opts);
17773
18313
  eventBus._on("fileinputchange", onFileInputChange.bind(this), opts);
17774
18314
  eventBus._on("openfile", onOpenFile.bind(this), opts);
18315
+ eventBus._on("pagesedited", this.onPagesEdited.bind(this), opts);
18316
+ eventBus._on("beforepagesedited", this.onBeforePagesEdited.bind(this), opts);
18317
+ eventBus._on("savepageseditedpdf", this.onSavePagesEditedPDF.bind(this), opts);
17775
18318
  },
17776
18319
  bindWindowEvents() {
17777
18320
  if (this._windowAbortController) {
@@ -17914,6 +18457,35 @@ const PDFViewerApplication = {
17914
18457
  this.findBar?.close();
17915
18458
  await Promise.all([this.l10n?.destroy(), this.close()]);
17916
18459
  },
18460
+ onBeforePagesEdited(data) {
18461
+ this.pdfViewer.onBeforePagesEdited(data);
18462
+ },
18463
+ onPagesEdited(data) {
18464
+ this.pdfViewer.onPagesEdited(data);
18465
+ },
18466
+ async onSavePagesEditedPDF({
18467
+ data: {
18468
+ includePages,
18469
+ excludePages,
18470
+ pageIndices
18471
+ }
18472
+ }) {
18473
+ if (!this.pdfDocument) {
18474
+ return;
18475
+ }
18476
+ const pageInfo = {
18477
+ document: null,
18478
+ includePages,
18479
+ excludePages,
18480
+ pageIndices
18481
+ };
18482
+ const modifiedPdfBytes = await this.pdfDocument.extractPages([pageInfo]);
18483
+ if (!modifiedPdfBytes) {
18484
+ console.error("Something wrong happened when saving the edited PDF.\nPlease file a bug.");
18485
+ return;
18486
+ }
18487
+ this.downloadManager.download(modifiedPdfBytes, this._downloadUrl, this._docFilename);
18488
+ },
17917
18489
  _accumulateTicks(ticks, prop) {
17918
18490
  if (this[prop] > 0 && ticks < 0 || this[prop] < 0 && ticks > 0) {
17919
18491
  this[prop] = 0;
@@ -18626,7 +19198,15 @@ function getViewerConfiguration() {
18626
19198
  layersView: document.getElementById("layersView"),
18627
19199
  viewsManagerAddFileButton: document.getElementById("viewsManagerAddFileButton"),
18628
19200
  viewsManagerCurrentOutlineButton: document.getElementById("viewsManagerCurrentOutlineButton"),
18629
- viewsManagerHeaderLabel: document.getElementById("viewsManagerHeaderLabel")
19201
+ viewsManagerHeaderLabel: document.getElementById("viewsManagerHeaderLabel"),
19202
+ manageMenu: {
19203
+ button: document.getElementById("viewsManagerStatusActionButton"),
19204
+ menu: document.getElementById("viewsManagerStatusActionOptions"),
19205
+ copy: document.getElementById("viewsManagerStatusActionCopy"),
19206
+ cut: document.getElementById("viewsManagerStatusActionCut"),
19207
+ delete: document.getElementById("viewsManagerStatusActionDelete"),
19208
+ saveAs: document.getElementById("viewsManagerStatusActionSaveAs")
19209
+ }
18630
19210
  },
18631
19211
  findBar: {
18632
19212
  bar: document.getElementById("findbar"),