@hmcts/media-viewer 4.1.10 → 4.2.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 (370) hide show
  1. package/fesm2022/hmcts-media-viewer.mjs +297 -285
  2. package/fesm2022/hmcts-media-viewer.mjs.map +1 -1
  3. package/index.d.ts +2316 -4
  4. package/index.d.ts.map +1 -0
  5. package/package.json +10 -12
  6. package/esm2022/hmcts-media-viewer.mjs +0 -5
  7. package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +0 -122
  8. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +0 -120
  9. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +0 -101
  10. package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +0 -50
  11. package/esm2022/lib/annotations/annotation-set/annotation-set.model.mjs +0 -2
  12. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +0 -94
  13. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +0 -2
  14. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +0 -116
  15. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +0 -2
  16. package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +0 -119
  17. package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +0 -86
  18. package/esm2022/lib/annotations/annotations.module.mjs +0 -162
  19. package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +0 -178
  20. package/esm2022/lib/annotations/comment-set/comment/comment.model.mjs +0 -2
  21. package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +0 -50
  22. package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +0 -47
  23. package/esm2022/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +0 -31
  24. package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +0 -91
  25. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +0 -62
  26. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +0 -54
  27. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +0 -72
  28. package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +0 -55
  29. package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +0 -123
  30. package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +0 -120
  31. package/esm2022/lib/annotations/models/api-persisted.model.mjs +0 -2
  32. package/esm2022/lib/annotations/models/event-select.model.mjs +0 -2
  33. package/esm2022/lib/annotations/models/tags.model.mjs +0 -2
  34. package/esm2022/lib/annotations/models/user.model.mjs +0 -2
  35. package/esm2022/lib/annotations/pipes/date/date.pipe.mjs +0 -26
  36. package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +0 -32
  37. package/esm2022/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +0 -16
  38. package/esm2022/lib/annotations/services/annotation-api/annotation-api.service.mjs +0 -58
  39. package/esm2022/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +0 -45
  40. package/esm2022/lib/annotations/services/tags/tags.services.mjs +0 -41
  41. package/esm2022/lib/annotations/tags/tags.component.mjs +0 -53
  42. package/esm2022/lib/bookmark/components/bookmark-icons.component.mjs +0 -25
  43. package/esm2022/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +0 -30
  44. package/esm2022/lib/icp/icp-follower.service.mjs +0 -65
  45. package/esm2022/lib/icp/icp-presenter.service.mjs +0 -56
  46. package/esm2022/lib/icp/icp-session-api.service.mjs +0 -28
  47. package/esm2022/lib/icp/icp-update.service.mjs +0 -73
  48. package/esm2022/lib/icp/icp.events.mjs +0 -15
  49. package/esm2022/lib/icp/icp.interfaces.mjs +0 -2
  50. package/esm2022/lib/icp/icp.service.mjs +0 -98
  51. package/esm2022/lib/icp/participants-list/participants-list.component.mjs +0 -32
  52. package/esm2022/lib/icp/socket.service.mjs +0 -128
  53. package/esm2022/lib/media-viewer.component.mjs +0 -247
  54. package/esm2022/lib/media-viewer.module.mjs +0 -139
  55. package/esm2022/lib/print.service.mjs +0 -32
  56. package/esm2022/lib/redaction/components/redaction.component.mjs +0 -91
  57. package/esm2022/lib/redaction/services/redaction-api.service.mjs +0 -50
  58. package/esm2022/lib/redaction/services/redaction.model.mjs +0 -2
  59. package/esm2022/lib/shared/directives/tooltip-dismiss.directive.mjs +0 -36
  60. package/esm2022/lib/shared/gov-uk-date/gov-uk-date.component.mjs +0 -28
  61. package/esm2022/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +0 -34
  62. package/esm2022/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +0 -63
  63. package/esm2022/lib/shared/gov-uk-label/gov-uk-label.component.mjs +0 -44
  64. package/esm2022/lib/shared/shared.module.mjs +0 -53
  65. package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +0 -29
  66. package/esm2022/lib/shared/util/services/number.helper.service.mjs +0 -23
  67. package/esm2022/lib/store/actions/annotation.actions.mjs +0 -119
  68. package/esm2022/lib/store/actions/bookmark.actions.mjs +0 -112
  69. package/esm2022/lib/store/actions/document.actions.mjs +0 -91
  70. package/esm2022/lib/store/actions/icp.actions.mjs +0 -56
  71. package/esm2022/lib/store/actions/redaction.actions.mjs +0 -132
  72. package/esm2022/lib/store/actions/tag.actions.mjs +0 -21
  73. package/esm2022/lib/store/bookmarks-store-utils.mjs +0 -49
  74. package/esm2022/lib/store/effects/annotation.effects.mjs +0 -51
  75. package/esm2022/lib/store/effects/bookmarks.effects.mjs +0 -44
  76. package/esm2022/lib/store/effects/document.effects.mjs +0 -44
  77. package/esm2022/lib/store/effects/icp.effects.mjs +0 -26
  78. package/esm2022/lib/store/effects/index.mjs +0 -7
  79. package/esm2022/lib/store/effects/redaction.effects.mjs +0 -67
  80. package/esm2022/lib/store/models/bookmarks.interface.mjs +0 -2
  81. package/esm2022/lib/store/models/filters.interface.mjs +0 -2
  82. package/esm2022/lib/store/reducers/annotations.reducer.mjs +0 -208
  83. package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +0 -125
  84. package/esm2022/lib/store/reducers/document.reducer.mjs +0 -158
  85. package/esm2022/lib/store/reducers/icp.reducer.mjs +0 -56
  86. package/esm2022/lib/store/reducers/redaction.reducer.mjs +0 -116
  87. package/esm2022/lib/store/reducers/reducers.mjs +0 -23
  88. package/esm2022/lib/store/reducers/tags.reducer.mjs +0 -93
  89. package/esm2022/lib/store/selectors/annotation.selectors.mjs +0 -81
  90. package/esm2022/lib/store/selectors/bookmark.selectors.mjs +0 -37
  91. package/esm2022/lib/store/selectors/document.selectors.mjs +0 -13
  92. package/esm2022/lib/store/selectors/icp.selectors.mjs +0 -13
  93. package/esm2022/lib/store/selectors/redaction.selectors.mjs +0 -26
  94. package/esm2022/lib/store/selectors/tag.selectors.mjs +0 -15
  95. package/esm2022/lib/store/store-utils.mjs +0 -131
  96. package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +0 -46
  97. package/esm2022/lib/toolbar/icp-event.service.mjs +0 -44
  98. package/esm2022/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +0 -43
  99. package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +0 -207
  100. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +0 -237
  101. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +0 -2
  102. package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +0 -69
  103. package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +0 -109
  104. package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +0 -94
  105. package/esm2022/lib/toolbar/toolbar-event.service.mjs +0 -178
  106. package/esm2022/lib/toolbar/toolbar.module.mjs +0 -75
  107. package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +0 -82
  108. package/esm2022/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +0 -22
  109. package/esm2022/lib/viewers/grab-n-drag.directive.mjs +0 -57
  110. package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +0 -166
  111. package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +0 -59
  112. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +0 -266
  113. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +0 -40
  114. package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +0 -242
  115. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +0 -379
  116. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +0 -2
  117. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +0 -49
  118. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +0 -2
  119. package/esm2022/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +0 -99
  120. package/esm2022/lib/viewers/rotation-persist/rotation-api.service.mjs +0 -27
  121. package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +0 -61
  122. package/esm2022/lib/viewers/rotation-persist/rotation.model.mjs +0 -2
  123. package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +0 -49
  124. package/esm2022/lib/viewers/viewer-event.service.mjs +0 -34
  125. package/esm2022/lib/viewers/viewer-exception.model.mjs +0 -13
  126. package/esm2022/lib/viewers/viewer-util.service.mjs +0 -20
  127. package/esm2022/public_api.mjs +0 -33
  128. package/hmcts-media-viewer.d.ts.map +0 -1
  129. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +0 -48
  130. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts.map +0 -1
  131. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts +0 -32
  132. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts.map +0 -1
  133. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts +0 -18
  134. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts.map +0 -1
  135. package/lib/annotations/annotation-set/annotation-set.component.d.ts +0 -27
  136. package/lib/annotations/annotation-set/annotation-set.component.d.ts.map +0 -1
  137. package/lib/annotations/annotation-set/annotation-set.model.d.ts +0 -7
  138. package/lib/annotations/annotation-set/annotation-set.model.d.ts.map +0 -1
  139. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +0 -34
  140. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts.map +0 -1
  141. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts +0 -16
  142. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts.map +0 -1
  143. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +0 -41
  144. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts.map +0 -1
  145. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts +0 -9
  146. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts.map +0 -1
  147. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +0 -37
  148. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts.map +0 -1
  149. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +0 -37
  150. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts.map +0 -1
  151. package/lib/annotations/annotations.module.d.ts +0 -36
  152. package/lib/annotations/annotations.module.d.ts.map +0 -1
  153. package/lib/annotations/comment-set/comment/comment.component.d.ts +0 -69
  154. package/lib/annotations/comment-set/comment/comment.component.d.ts.map +0 -1
  155. package/lib/annotations/comment-set/comment/comment.model.d.ts +0 -13
  156. package/lib/annotations/comment-set/comment/comment.model.d.ts.map +0 -1
  157. package/lib/annotations/comment-set/comment/comment.service.d.ts +0 -22
  158. package/lib/annotations/comment-set/comment/comment.service.d.ts.map +0 -1
  159. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +0 -14
  160. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts.map +0 -1
  161. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts +0 -12
  162. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts.map +0 -1
  163. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +0 -28
  164. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts.map +0 -1
  165. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts +0 -26
  166. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts.map +0 -1
  167. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +0 -21
  168. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts.map +0 -1
  169. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +0 -36
  170. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts.map +0 -1
  171. package/lib/annotations/comment-set/comment-set-render.service.d.ts +0 -15
  172. package/lib/annotations/comment-set/comment-set-render.service.d.ts.map +0 -1
  173. package/lib/annotations/comment-set/comment-set.component.d.ts +0 -56
  174. package/lib/annotations/comment-set/comment-set.component.d.ts.map +0 -1
  175. package/lib/annotations/comments-summary/comments-summary.component.d.ts +0 -42
  176. package/lib/annotations/comments-summary/comments-summary.component.d.ts.map +0 -1
  177. package/lib/annotations/models/api-persisted.model.d.ts +0 -11
  178. package/lib/annotations/models/api-persisted.model.d.ts.map +0 -1
  179. package/lib/annotations/models/event-select.model.d.ts +0 -6
  180. package/lib/annotations/models/event-select.model.d.ts.map +0 -1
  181. package/lib/annotations/models/tags.model.d.ts +0 -7
  182. package/lib/annotations/models/tags.model.d.ts.map +0 -1
  183. package/lib/annotations/models/user.model.d.ts +0 -6
  184. package/lib/annotations/models/user.model.d.ts.map +0 -1
  185. package/lib/annotations/pipes/date/date.pipe.d.ts +0 -16
  186. package/lib/annotations/pipes/date/date.pipe.d.ts.map +0 -1
  187. package/lib/annotations/pipes/filter/filter.pipe.d.ts +0 -8
  188. package/lib/annotations/pipes/filter/filter.pipe.d.ts.map +0 -1
  189. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts +0 -8
  190. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts.map +0 -1
  191. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts +0 -28
  192. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts.map +0 -1
  193. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts +0 -21
  194. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts.map +0 -1
  195. package/lib/annotations/services/tags/tags.services.d.ts +0 -18
  196. package/lib/annotations/services/tags/tags.services.d.ts.map +0 -1
  197. package/lib/annotations/tags/tags.component.d.ts +0 -28
  198. package/lib/annotations/tags/tags.component.d.ts.map +0 -1
  199. package/lib/bookmark/components/bookmark-icons.component.d.ts +0 -19
  200. package/lib/bookmark/components/bookmark-icons.component.d.ts.map +0 -1
  201. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts +0 -14
  202. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts.map +0 -1
  203. package/lib/icp/icp-follower.service.d.ts +0 -26
  204. package/lib/icp/icp-follower.service.d.ts.map +0 -1
  205. package/lib/icp/icp-presenter.service.d.ts +0 -25
  206. package/lib/icp/icp-presenter.service.d.ts.map +0 -1
  207. package/lib/icp/icp-session-api.service.d.ts +0 -15
  208. package/lib/icp/icp-session-api.service.d.ts.map +0 -1
  209. package/lib/icp/icp-update.service.d.ts +0 -22
  210. package/lib/icp/icp-update.service.d.ts.map +0 -1
  211. package/lib/icp/icp.events.d.ts +0 -14
  212. package/lib/icp/icp.events.d.ts.map +0 -1
  213. package/lib/icp/icp.interfaces.d.ts +0 -23
  214. package/lib/icp/icp.interfaces.d.ts.map +0 -1
  215. package/lib/icp/icp.service.d.ts +0 -40
  216. package/lib/icp/icp.service.d.ts.map +0 -1
  217. package/lib/icp/participants-list/participants-list.component.d.ts +0 -23
  218. package/lib/icp/participants-list/participants-list.component.d.ts.map +0 -1
  219. package/lib/icp/socket.service.d.ts +0 -29
  220. package/lib/icp/socket.service.d.ts.map +0 -1
  221. package/lib/media-viewer.component.d.ts +0 -72
  222. package/lib/media-viewer.component.d.ts.map +0 -1
  223. package/lib/media-viewer.module.d.ts +0 -36
  224. package/lib/media-viewer.module.d.ts.map +0 -1
  225. package/lib/print.service.d.ts +0 -8
  226. package/lib/print.service.d.ts.map +0 -1
  227. package/lib/redaction/components/redaction.component.d.ts +0 -42
  228. package/lib/redaction/components/redaction.component.d.ts.map +0 -1
  229. package/lib/redaction/services/redaction-api.service.d.ts +0 -20
  230. package/lib/redaction/services/redaction-api.service.d.ts.map +0 -1
  231. package/lib/redaction/services/redaction.model.d.ts +0 -11
  232. package/lib/redaction/services/redaction.model.d.ts.map +0 -1
  233. package/lib/shared/directives/tooltip-dismiss.directive.d.ts +0 -11
  234. package/lib/shared/directives/tooltip-dismiss.directive.d.ts.map +0 -1
  235. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +0 -15
  236. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts.map +0 -1
  237. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +0 -11
  238. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts.map +0 -1
  239. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +0 -16
  240. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts.map +0 -1
  241. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +0 -14
  242. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts.map +0 -1
  243. package/lib/shared/shared.module.d.ts +0 -14
  244. package/lib/shared/shared.module.d.ts.map +0 -1
  245. package/lib/shared/util/helpers/html-templates.helper.d.ts +0 -9
  246. package/lib/shared/util/helpers/html-templates.helper.d.ts.map +0 -1
  247. package/lib/shared/util/services/number.helper.service.d.ts +0 -11
  248. package/lib/shared/util/services/number.helper.service.d.ts.map +0 -1
  249. package/lib/store/actions/annotation.actions.d.ts +0 -126
  250. package/lib/store/actions/annotation.actions.d.ts.map +0 -1
  251. package/lib/store/actions/bookmark.actions.d.ts +0 -117
  252. package/lib/store/actions/bookmark.actions.d.ts.map +0 -1
  253. package/lib/store/actions/document.actions.d.ts +0 -90
  254. package/lib/store/actions/document.actions.d.ts.map +0 -1
  255. package/lib/store/actions/icp.actions.d.ts +0 -75
  256. package/lib/store/actions/icp.actions.d.ts.map +0 -1
  257. package/lib/store/actions/redaction.actions.d.ts +0 -127
  258. package/lib/store/actions/redaction.actions.d.ts.map +0 -1
  259. package/lib/store/actions/tag.actions.d.ts +0 -30
  260. package/lib/store/actions/tag.actions.d.ts.map +0 -1
  261. package/lib/store/bookmarks-store-utils.d.ts +0 -9
  262. package/lib/store/bookmarks-store-utils.d.ts.map +0 -1
  263. package/lib/store/effects/annotation.effects.d.ts +0 -16
  264. package/lib/store/effects/annotation.effects.d.ts.map +0 -1
  265. package/lib/store/effects/bookmarks.effects.d.ts +0 -21
  266. package/lib/store/effects/bookmarks.effects.d.ts.map +0 -1
  267. package/lib/store/effects/document.effects.d.ts +0 -17
  268. package/lib/store/effects/document.effects.d.ts.map +0 -1
  269. package/lib/store/effects/icp.effects.d.ts +0 -16
  270. package/lib/store/effects/icp.effects.d.ts.map +0 -1
  271. package/lib/store/effects/index.d.ts +0 -2
  272. package/lib/store/effects/index.d.ts.map +0 -1
  273. package/lib/store/effects/redaction.effects.d.ts +0 -20
  274. package/lib/store/effects/redaction.effects.d.ts.map +0 -1
  275. package/lib/store/models/bookmarks.interface.d.ts +0 -31
  276. package/lib/store/models/bookmarks.interface.d.ts.map +0 -1
  277. package/lib/store/models/filters.interface.d.ts +0 -8
  278. package/lib/store/models/filters.interface.d.ts.map +0 -1
  279. package/lib/store/reducers/annotations.reducer.d.ts +0 -48
  280. package/lib/store/reducers/annotations.reducer.d.ts.map +0 -1
  281. package/lib/store/reducers/bookmarks.reducer.d.ts +0 -27
  282. package/lib/store/reducers/bookmarks.reducer.d.ts.map +0 -1
  283. package/lib/store/reducers/document.reducer.d.ts +0 -52
  284. package/lib/store/reducers/document.reducer.d.ts.map +0 -1
  285. package/lib/store/reducers/icp.reducer.d.ts +0 -9
  286. package/lib/store/reducers/icp.reducer.d.ts.map +0 -1
  287. package/lib/store/reducers/redaction.reducer.d.ts +0 -32
  288. package/lib/store/reducers/redaction.reducer.d.ts.map +0 -1
  289. package/lib/store/reducers/reducers.d.ts +0 -24
  290. package/lib/store/reducers/reducers.d.ts.map +0 -1
  291. package/lib/store/reducers/tags.reducer.d.ts +0 -32
  292. package/lib/store/reducers/tags.reducer.d.ts.map +0 -1
  293. package/lib/store/selectors/annotation.selectors.d.ts +0 -136
  294. package/lib/store/selectors/annotation.selectors.d.ts.map +0 -1
  295. package/lib/store/selectors/bookmark.selectors.d.ts +0 -38
  296. package/lib/store/selectors/bookmark.selectors.d.ts.map +0 -1
  297. package/lib/store/selectors/document.selectors.d.ts +0 -23
  298. package/lib/store/selectors/document.selectors.d.ts.map +0 -1
  299. package/lib/store/selectors/icp.selectors.d.ts +0 -10
  300. package/lib/store/selectors/icp.selectors.d.ts.map +0 -1
  301. package/lib/store/selectors/redaction.selectors.d.ts +0 -35
  302. package/lib/store/selectors/redaction.selectors.d.ts.map +0 -1
  303. package/lib/store/selectors/tag.selectors.d.ts +0 -28
  304. package/lib/store/selectors/tag.selectors.d.ts.map +0 -1
  305. package/lib/store/store-utils.d.ts +0 -25
  306. package/lib/store/store-utils.d.ts.map +0 -1
  307. package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts +0 -20
  308. package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts.map +0 -1
  309. package/lib/toolbar/icp-event.service.d.ts +0 -21
  310. package/lib/toolbar/icp-event.service.d.ts.map +0 -1
  311. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts +0 -24
  312. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts.map +0 -1
  313. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +0 -69
  314. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts.map +0 -1
  315. package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts +0 -60
  316. package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts.map +0 -1
  317. package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts +0 -12
  318. package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts.map +0 -1
  319. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +0 -30
  320. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts.map +0 -1
  321. package/lib/toolbar/search-bar/search-bar.component.d.ts +0 -34
  322. package/lib/toolbar/search-bar/search-bar.component.d.ts.map +0 -1
  323. package/lib/toolbar/toolbar-button-visibility.service.d.ts +0 -67
  324. package/lib/toolbar/toolbar-button-visibility.service.d.ts.map +0 -1
  325. package/lib/toolbar/toolbar-event.service.d.ts +0 -96
  326. package/lib/toolbar/toolbar-event.service.d.ts.map +0 -1
  327. package/lib/toolbar/toolbar.module.d.ts +0 -20
  328. package/lib/toolbar/toolbar.module.d.ts.map +0 -1
  329. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +0 -31
  330. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts.map +0 -1
  331. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts +0 -12
  332. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts.map +0 -1
  333. package/lib/viewers/grab-n-drag.directive.d.ts +0 -19
  334. package/lib/viewers/grab-n-drag.directive.d.ts.map +0 -1
  335. package/lib/viewers/image-viewer/image-viewer.component.d.ts +0 -57
  336. package/lib/viewers/image-viewer/image-viewer.component.d.ts.map +0 -1
  337. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +0 -25
  338. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts.map +0 -1
  339. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts +0 -69
  340. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts.map +0 -1
  341. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts +0 -17
  342. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts.map +0 -1
  343. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +0 -82
  344. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts.map +0 -1
  345. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +0 -82
  346. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts.map +0 -1
  347. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts +0 -22
  348. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts.map +0 -1
  349. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +0 -20
  350. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts.map +0 -1
  351. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts +0 -14
  352. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts.map +0 -1
  353. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +0 -42
  354. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts.map +0 -1
  355. package/lib/viewers/rotation-persist/rotation-api.service.d.ts +0 -14
  356. package/lib/viewers/rotation-persist/rotation-api.service.d.ts.map +0 -1
  357. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts +0 -27
  358. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts.map +0 -1
  359. package/lib/viewers/rotation-persist/rotation.model.d.ts +0 -5
  360. package/lib/viewers/rotation-persist/rotation.model.d.ts.map +0 -1
  361. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +0 -23
  362. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts.map +0 -1
  363. package/lib/viewers/viewer-event.service.d.ts +0 -23
  364. package/lib/viewers/viewer-event.service.d.ts.map +0 -1
  365. package/lib/viewers/viewer-exception.model.d.ts +0 -15
  366. package/lib/viewers/viewer-exception.model.d.ts.map +0 -1
  367. package/lib/viewers/viewer-util.service.d.ts +0 -10
  368. package/lib/viewers/viewer-util.service.d.ts.map +0 -1
  369. package/public_api.d.ts +0 -30
  370. package/public_api.d.ts.map +0 -1
@@ -1,94 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { v4 as uuid } from 'uuid';
3
- import moment from 'moment-timezone';
4
- import * as fromActions from '../../../store/actions/annotation.actions';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../../toolbar/toolbar-event.service";
7
- import * as i2 from "@ngrx/store";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "./rectangle/rectangle.component";
10
- import * as i5 from "../ctx-toolbar/ctx-toolbar.component";
11
- export class AnnotationViewComponent {
12
- set annotation(value) {
13
- this.anno = { ...value };
14
- }
15
- set selectedAnnoId(selectedId) {
16
- if (selectedId) {
17
- const id = this.anno.id || this.anno.redactionId; // todo make it unique
18
- this.selected = selectedId.annotationId ? (selectedId.annotationId === id) : false;
19
- }
20
- }
21
- constructor(toolbarEvents, store) {
22
- this.toolbarEvents = toolbarEvents;
23
- this.store = store;
24
- this.update = new EventEmitter();
25
- this.delete = new EventEmitter();
26
- this.annotationClick = new EventEmitter();
27
- }
28
- onSelect() {
29
- const annotationId = this.anno.id || this.anno.redactionId;
30
- this.annotationClick.emit({ annotationId, editable: false, selected: true });
31
- }
32
- onRectangleUpdate(rectangle) {
33
- const annotation = { ...this.anno };
34
- annotation.rectangles = annotation.rectangles.filter(r => r.id !== rectangle.id);
35
- annotation.rectangles.push(rectangle);
36
- this.update.emit(annotation);
37
- }
38
- deleteHighlight() {
39
- this.delete.emit(this.anno);
40
- }
41
- addOrEditComment() {
42
- if (this.anno.comments.length === 0) {
43
- const comment = {
44
- annotationId: this.anno.id,
45
- content: '',
46
- createdBy: this.anno.createdBy,
47
- createdByDetails: undefined,
48
- createdDate: moment.utc().tz('Europe/London').toISOString(),
49
- id: uuid(),
50
- lastModifiedBy: '',
51
- lastModifiedByDetails: undefined,
52
- lastModifiedDate: '',
53
- tags: [],
54
- page: null,
55
- pages: {},
56
- pageHeight: null,
57
- selected: false,
58
- editable: false
59
- };
60
- this.store.dispatch(new fromActions.AddOrEditComment(comment));
61
- }
62
- this.selected = true;
63
- this.annotationClick.emit({ annotationId: this.anno.id, editable: true, selected: true });
64
- this.toolbarEvents.toggleCommentsPanel(true);
65
- }
66
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnnotationViewComponent, deps: [{ token: i1.ToolbarEventService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Component }); }
67
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AnnotationViewComponent, selector: "mv-annotation", inputs: { annotation: "annotation", zoom: "zoom", rotate: "rotate", selectedAnnoId: "selectedAnnoId", pageHeight: "pageHeight", pageWidth: "pageWidth" }, outputs: { update: "update", delete: "delete", annotationClick: "annotationClick" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div #container [tabindex]=\"anno.id\">\n <mv-ctx-toolbar *ngIf=\"selected\"\n [canDelete]=\"true\" [canComment]=\"true\"\n [rectangles]=\"anno.rectangles\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"pageHeight\"\n [pageWidth]=\"pageWidth\"\n (deleteHighlightEvent)=\"deleteHighlight()\"\n (addOrEditCommentEvent)=\"addOrEditComment()\">\n </mv-ctx-toolbar>\n <ng-container *ngFor=\"let rectangle of anno.rectangles\">\n <mv-anno-rectangle\n (selectEvent)=\"onSelect()\"\n (updateEvent)=\"onRectangleUpdate($event)\"\n [selected]=\"selected\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"pageHeight\"\n [pageWidth]=\"pageWidth\"\n [editable]=\"anno.rectangles.length <= 1\"\n [annoRect]=\"rectangle\"\n [color]=\"anno.color\">\n </mv-anno-rectangle>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.RectangleComponent, selector: "mv-anno-rectangle", inputs: ["color", "zoom", "rotate", "editable", "pageHeight", "pageWidth", "annoRect", "selected"], outputs: ["selectEvent", "updateEvent"] }, { kind: "component", type: i5.CtxToolbarComponent, selector: "mv-ctx-toolbar", inputs: ["zoom", "rotate", "pageHeight", "pageWidth", "canHighlight", "canBookmark", "canComment", "canDelete", "rectangles"], outputs: ["createHighlightEvent", "deleteHighlightEvent", "addOrEditCommentEvent", "createBookmarkEvent"] }] }); }
68
- }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AnnotationViewComponent, decorators: [{
70
- type: Component,
71
- args: [{ selector: 'mv-annotation', template: "<div #container [tabindex]=\"anno.id\">\n <mv-ctx-toolbar *ngIf=\"selected\"\n [canDelete]=\"true\" [canComment]=\"true\"\n [rectangles]=\"anno.rectangles\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"pageHeight\"\n [pageWidth]=\"pageWidth\"\n (deleteHighlightEvent)=\"deleteHighlight()\"\n (addOrEditCommentEvent)=\"addOrEditComment()\">\n </mv-ctx-toolbar>\n <ng-container *ngFor=\"let rectangle of anno.rectangles\">\n <mv-anno-rectangle\n (selectEvent)=\"onSelect()\"\n (updateEvent)=\"onRectangleUpdate($event)\"\n [selected]=\"selected\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"pageHeight\"\n [pageWidth]=\"pageWidth\"\n [editable]=\"anno.rectangles.length <= 1\"\n [annoRect]=\"rectangle\"\n [color]=\"anno.color\">\n </mv-anno-rectangle>\n </ng-container>\n</div>\n" }]
72
- }], ctorParameters: () => [{ type: i1.ToolbarEventService }, { type: i2.Store }], propDecorators: { annotation: [{
73
- type: Input
74
- }], zoom: [{
75
- type: Input
76
- }], rotate: [{
77
- type: Input
78
- }], selectedAnnoId: [{
79
- type: Input
80
- }], pageHeight: [{
81
- type: Input
82
- }], pageWidth: [{
83
- type: Input
84
- }], update: [{
85
- type: Output
86
- }], delete: [{
87
- type: Output
88
- }], annotationClick: [{
89
- type: Output
90
- }], container: [{
91
- type: ViewChild,
92
- args: ['container', { static: false }]
93
- }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbi12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL2Fubm90YXRpb25zL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tdmlldy9hbm5vdGF0aW9uLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi12aWV3L2Fubm90YXRpb24tdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdsQyxPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUdyQyxPQUFPLEtBQUssV0FBVyxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7O0FBU3pFLE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsSUFBYSxVQUFVLENBQUMsS0FBSztRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBS0QsSUFBYSxjQUFjLENBQUMsVUFBb0M7UUFDOUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsc0JBQXNCO1lBQ3hFLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxLQUFLLEVB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NEdBS1osVUFBVTtzQkFBdEIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNPLGNBQWM7c0JBQTFCLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFFb0MsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgQW5ub3RhdGlvbiB9IGZyb20gJy4vYW5ub3RhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZWN0YW5nbGUgfSBmcm9tICcuL3JlY3RhbmdsZS9yZWN0YW5nbGUubW9kZWwnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgKiBhcyBmcm9tU3RvcmUgZnJvbSAnLi4vLi4vLi4vc3RvcmUvcmVkdWNlcnMvcmVkdWNlcnMnO1xuaW1wb3J0ICogYXMgZnJvbUFjdGlvbnMgZnJvbSAnLi4vLi4vLi4vc3RvcmUvYWN0aW9ucy9hbm5vdGF0aW9uLmFjdGlvbnMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQW5ub3RhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9ldmVudC1zZWxlY3QubW9kZWwnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Rvb2xiYXIvdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1lbnQgfSBmcm9tICcuLi8uLi9jb21tZW50LXNldC9jb21tZW50L2NvbW1lbnQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1hbm5vdGF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fubm90YXRpb24tdmlldy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQW5ub3RhdGlvblZpZXdDb21wb25lbnQgeyAgLy8gdG9kbyByZW5hbWUgdGhpcyB0byBzZWxlY3Rpb24gdmV3IGNcblxuICBASW5wdXQoKSBzZXQgYW5ub3RhdGlvbih2YWx1ZSkge1xuICAgIHRoaXMuYW5ubyA9IHsgLi4udmFsdWUgfTtcbiAgfVxuICBhbm5vOiBBbm5vdGF0aW9uO1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgem9vbTogbnVtYmVyO1xuICBASW5wdXQoKSByb3RhdGU6IG51bWJlcjtcbiAgQElucHV0KCkgc2V0IHNlbGVjdGVkQW5ub0lkKHNlbGVjdGVkSWQ6IHsgYW5ub3RhdGlvbklkOiBzdHJpbmcgfSkge1xuICAgIGlmIChzZWxlY3RlZElkKSB7XG4gICAgICBjb25zdCBpZCA9IHRoaXMuYW5uby5pZCB8fCB0aGlzLmFubm8ucmVkYWN0aW9uSWQ7IC8vIHRvZG8gbWFrZSBpdCB1bmlxdWVcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZElkLmFubm90YXRpb25JZCA/IChzZWxlY3RlZElkLmFubm90YXRpb25JZCA9PT0gaWQpIDogZmFsc2U7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIHBhZ2VIZWlnaHQ6IG51bWJlcjtcbiAgQElucHV0KCkgcGFnZVdpZHRoOiBudW1iZXI7XG4gIEBPdXRwdXQoKSB1cGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPEFubm90YXRpb24+KCk7XG4gIEBPdXRwdXQoKSBkZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPEFubm90YXRpb24+KCk7XG4gIEBPdXRwdXQoKSBhbm5vdGF0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdGlvbkFubm90YXRpb24+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8ZnJvbVN0b3JlLkFubm90YXRpb25TZXRTdGF0ZT5cbiAgKSB7IH1cblxuICBwdWJsaWMgb25TZWxlY3QoKSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbklkID0gdGhpcy5hbm5vLmlkIHx8IHRoaXMuYW5uby5yZWRhY3Rpb25JZDtcbiAgICB0aGlzLmFubm90YXRpb25DbGljay5lbWl0KHsgYW5ub3RhdGlvbklkLCBlZGl0YWJsZTogZmFsc2UsIHNlbGVjdGVkOiB0cnVlIH0pO1xuICB9XG5cbiAgcHVibGljIG9uUmVjdGFuZ2xlVXBkYXRlKHJlY3RhbmdsZTogUmVjdGFuZ2xlKSB7XG4gICAgY29uc3QgYW5ub3RhdGlvbiA9IHsgLi4udGhpcy5hbm5vIH07XG4gICAgYW5ub3RhdGlvbi5yZWN0YW5nbGVzID0gYW5ub3RhdGlvbi5yZWN0YW5nbGVzLmZpbHRlcihyID0+IHIuaWQgIT09IHJlY3RhbmdsZS5pZCk7XG4gICAgYW5ub3RhdGlvbi5yZWN0YW5nbGVzLnB1c2gocmVjdGFuZ2xlKTtcbiAgICB0aGlzLnVwZGF0ZS5lbWl0KGFubm90YXRpb24pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZUhpZ2hsaWdodCgpIHtcbiAgICB0aGlzLmRlbGV0ZS5lbWl0KHRoaXMuYW5ubyk7XG4gIH1cblxuICBwdWJsaWMgYWRkT3JFZGl0Q29tbWVudCgpIHtcbiAgICBpZiAodGhpcy5hbm5vLmNvbW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgY29tbWVudDogQ29tbWVudCA9IHtcbiAgICAgICAgYW5ub3RhdGlvbklkOiB0aGlzLmFubm8uaWQsXG4gICAgICAgIGNvbnRlbnQ6ICcnLFxuICAgICAgICBjcmVhdGVkQnk6IHRoaXMuYW5uby5jcmVhdGVkQnksXG4gICAgICAgIGNyZWF0ZWRCeURldGFpbHM6IHVuZGVmaW5lZCxcbiAgICAgICAgY3JlYXRlZERhdGU6IG1vbWVudC51dGMoKS50eignRXVyb3BlL0xvbmRvbicpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGlkOiB1dWlkKCksXG4gICAgICAgIGxhc3RNb2RpZmllZEJ5OiAnJyxcbiAgICAgICAgbGFzdE1vZGlmaWVkQnlEZXRhaWxzOiB1bmRlZmluZWQsXG4gICAgICAgIGxhc3RNb2RpZmllZERhdGU6ICcnLFxuICAgICAgICB0YWdzOiBbXSxcbiAgICAgICAgcGFnZTogbnVsbCxcbiAgICAgICAgcGFnZXM6IHt9LFxuICAgICAgICBwYWdlSGVpZ2h0OiBudWxsLFxuICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIGVkaXRhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21BY3Rpb25zLkFkZE9yRWRpdENvbW1lbnQoY29tbWVudCkpO1xuXG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlO1xuICAgIHRoaXMuYW5ub3RhdGlvbkNsaWNrLmVtaXQoeyBhbm5vdGF0aW9uSWQ6IHRoaXMuYW5uby5pZCwgZWRpdGFibGU6IHRydWUsIHNlbGVjdGVkOiB0cnVlIH0pO1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVDb21tZW50c1BhbmVsKHRydWUpO1xuICB9XG59XG4iLCI8ZGl2ICNjb250YWluZXIgW3RhYmluZGV4XT1cImFubm8uaWRcIj5cbiAgPG12LWN0eC10b29sYmFyICpuZ0lmPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgW2NhbkRlbGV0ZV09XCJ0cnVlXCIgW2NhbkNvbW1lbnRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbcmVjdGFuZ2xlc109XCJhbm5vLnJlY3RhbmdsZXNcIlxuICAgICAgICAgICAgICAgICAgW3pvb21dPVwiem9vbVwiXG4gICAgICAgICAgICAgICAgICBbcm90YXRlXT1cInJvdGF0ZVwiXG4gICAgICAgICAgICAgICAgICBbcGFnZUhlaWdodF09XCJwYWdlSGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgIFtwYWdlV2lkdGhdPVwicGFnZVdpZHRoXCJcbiAgICAgICAgICAgICAgICAgIChkZWxldGVIaWdobGlnaHRFdmVudCk9XCJkZWxldGVIaWdobGlnaHQoKVwiXG4gICAgICAgICAgICAgICAgICAoYWRkT3JFZGl0Q29tbWVudEV2ZW50KT1cImFkZE9yRWRpdENvbW1lbnQoKVwiPlxuICA8L212LWN0eC10b29sYmFyPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByZWN0YW5nbGUgb2YgYW5uby5yZWN0YW5nbGVzXCI+XG4gICAgPG12LWFubm8tcmVjdGFuZ2xlXG4gICAgICAoc2VsZWN0RXZlbnQpPVwib25TZWxlY3QoKVwiXG4gICAgICAodXBkYXRlRXZlbnQpPVwib25SZWN0YW5nbGVVcGRhdGUoJGV2ZW50KVwiXG4gICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgICAgW3pvb21dPVwiem9vbVwiXG4gICAgICBbcm90YXRlXT1cInJvdGF0ZVwiXG4gICAgICBbcGFnZUhlaWdodF09XCJwYWdlSGVpZ2h0XCJcbiAgICAgIFtwYWdlV2lkdGhdPVwicGFnZVdpZHRoXCJcbiAgICAgIFtlZGl0YWJsZV09XCJhbm5vLnJlY3RhbmdsZXMubGVuZ3RoIDw9IDFcIlxuICAgICAgW2Fubm9SZWN0XT1cInJlY3RhbmdsZVwiXG4gICAgICBbY29sb3JdPVwiYW5uby5jb2xvclwiPlxuICAgIDwvbXYtYW5uby1yZWN0YW5nbGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL2Fubm90YXRpb25zL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tdmlldy9hbm5vdGF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlQZXJzaXN0ZWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBpLXBlcnNpc3RlZC5tb2RlbCc7XG5pbXBvcnQgeyBSZWN0YW5nbGUgfSBmcm9tICcuL3JlY3RhbmdsZS9yZWN0YW5nbGUubW9kZWwnO1xuaW1wb3J0IHsgQ29tbWVudCB9IGZyb20gJy4uLy4uL2NvbW1lbnQtc2V0L2NvbW1lbnQvY29tbWVudC5tb2RlbCc7XG5pbXBvcnQge1RhZ3NNb2RlbH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhZ3MubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFubm90YXRpb24gZXh0ZW5kcyBBcGlQZXJzaXN0ZWQge1xuICBhbm5vdGF0aW9uU2V0SWQ/OiBzdHJpbmc7XG4gIGFubm90YXRpb25JZD86IHN0cmluZztcbiAgcGFnZT86IG51bWJlcjtcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGNvbW1lbnRzPzogQ29tbWVudFtdO1xuICByZWN0YW5nbGVzPzogUmVjdGFuZ2xlW107XG4gIHR5cGU/OiBzdHJpbmc7XG4gIHRhZ3M6IFRhZ3NNb2RlbFtdO1xuICByZWRhY3Rpb25JZD86IHN0cmluZztcbn1cbiJdfQ==
@@ -1,116 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../../../../toolbar/toolbar-event.service";
4
- import * as i2 from "../../annotation-create/highlight-create/highlight-create.service";
5
- import * as i3 from "@angular/common";
6
- import * as i4 from "mutable-div";
7
- export class RectangleComponent {
8
- set annoRect(annoRect) {
9
- this._annoRect = { ...annoRect };
10
- this.height = +(annoRect.height * this.zoom).toFixed(2);
11
- this.width = +(annoRect.width * this.zoom).toFixed(2);
12
- this.left = +(annoRect.x * this.zoom).toFixed(2);
13
- this.top = +(annoRect.y * this.zoom).toFixed(2);
14
- }
15
- get annoRect() {
16
- return this._annoRect;
17
- }
18
- constructor(toolbarEvents, highlightService) {
19
- this.toolbarEvents = toolbarEvents;
20
- this.highlightService = highlightService;
21
- this.selectEvent = new EventEmitter();
22
- this.updateEvent = new EventEmitter();
23
- this.subscriptions = [];
24
- this.enableGrabNDrag = false;
25
- }
26
- ngOnChanges(changes) {
27
- if (changes.rotate) {
28
- this.adjustForRotation(this.rotate);
29
- }
30
- }
31
- ngAfterViewInit() {
32
- this.subscriptions.push(this.toolbarEvents.grabNDrag.subscribe(grabNDrag => this.enableGrabNDrag = grabNDrag));
33
- }
34
- ngOnDestroy() {
35
- this.subscriptions.filter(subscription => !subscription.closed)
36
- .forEach(subscription => subscription.unsubscribe());
37
- }
38
- set selected(selected) {
39
- this._selected = selected;
40
- if (this._selected && this.viewRect) {
41
- this.viewRect.nativeElement.focus();
42
- }
43
- }
44
- get selected() {
45
- return this._selected;
46
- }
47
- onClick() {
48
- this.selectEvent.emit(this.annoRect);
49
- }
50
- onUpdate(viewRect) {
51
- const { offsetHeight, offsetWidth, offsetTop, offsetLeft } = viewRect;
52
- if (this.hasRectangleChanged(viewRect)) {
53
- let rectangle = this.highlightService
54
- .applyRotation(this.pageHeight, this.pageWidth, offsetHeight, offsetWidth, offsetTop, offsetLeft, this.rotate, this.zoom);
55
- rectangle = { ...this.annoRect, ...rectangle };
56
- this.updateEvent.emit({ ...rectangle });
57
- }
58
- }
59
- adjustForRotation(rotation) {
60
- const { top, left, height, width } = this;
61
- switch (rotation) {
62
- case 90:
63
- this.width = height;
64
- this.height = width;
65
- this.left = this.pageWidth - top - height;
66
- this.top = left;
67
- break;
68
- case 180:
69
- this.left = this.pageWidth - left - width;
70
- this.top = this.pageHeight - top - height;
71
- break;
72
- case 270:
73
- this.width = height;
74
- this.height = width;
75
- this.left = top;
76
- this.top = this.pageHeight - left - width;
77
- break;
78
- }
79
- }
80
- hasRectangleChanged(viewRect) {
81
- return Math.round(this.left) !== viewRect.offsetLeft ||
82
- Math.round(this.top) !== viewRect.offsetTop ||
83
- Math.round(this.width) !== viewRect.offsetWidth ||
84
- Math.round(this.height) !== viewRect.offsetHeight;
85
- }
86
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RectangleComponent, deps: [{ token: i1.ToolbarEventService }, { token: i2.HighlightCreateService }], target: i0.ɵɵFactoryTarget.Component }); }
87
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RectangleComponent, selector: "mv-anno-rectangle", inputs: { color: "color", zoom: "zoom", rotate: "rotate", editable: "editable", pageHeight: "pageHeight", pageWidth: "pageWidth", annoRect: "annoRect", selected: "selected" }, outputs: { selectEvent: "selectEvent", updateEvent: "updateEvent" }, viewQueries: [{ propertyName: "viewRect", first: true, predicate: ["rectElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"editable; else nonEditable\">\n <div #rectElement\n class=\"rectangle\"\n draggable\n resizable\n [tabindex]=\"annoRect.id\"\n [ngClass]=\"{ 'selected': selected, 'grabNDrag': enableGrabNDrag }\"\n [style.backgroundColor]=\"'#' + color\"\n [style.width]=\"width + 'px'\"\n [style.height]=\"height + 'px'\"\n [style.left]=\"left + 'px'\"\n [style.top]=\"top + 'px'\"\n [rotate]=\"0\"\n [selected]=\"selected\"\n (click)=\"onClick()\"\n (stopped)=\"onUpdate(rectElement)\">\n </div>\n</div>\n<ng-template #nonEditable>\n <div #rectElement\n class=\"rectangle\"\n [tabindex]=\"annoRect.id\"\n [ngClass]=\"{ 'selected': selected }\"\n [style.backgroundColor]=\"'#' + color\"\n [style.width]=\"width + 'px'\"\n [style.height]=\"height+ 'px'\"\n [style.left]=\"left + 'px'\"\n [style.top]=\"top + 'px'\"\n (click)=\"onClick()\">\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DraggableElementDirective, selector: "[draggable]", inputs: ["rotate"], outputs: ["coordinates", "stopped"] }, { kind: "directive", type: i4.ResizableElementDirective, selector: "[resizable]", inputs: ["rotate", "selected"], outputs: ["stopped"] }] }); }
88
- }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RectangleComponent, decorators: [{
90
- type: Component,
91
- args: [{ selector: 'mv-anno-rectangle', template: "<div *ngIf=\"editable; else nonEditable\">\n <div #rectElement\n class=\"rectangle\"\n draggable\n resizable\n [tabindex]=\"annoRect.id\"\n [ngClass]=\"{ 'selected': selected, 'grabNDrag': enableGrabNDrag }\"\n [style.backgroundColor]=\"'#' + color\"\n [style.width]=\"width + 'px'\"\n [style.height]=\"height + 'px'\"\n [style.left]=\"left + 'px'\"\n [style.top]=\"top + 'px'\"\n [rotate]=\"0\"\n [selected]=\"selected\"\n (click)=\"onClick()\"\n (stopped)=\"onUpdate(rectElement)\">\n </div>\n</div>\n<ng-template #nonEditable>\n <div #rectElement\n class=\"rectangle\"\n [tabindex]=\"annoRect.id\"\n [ngClass]=\"{ 'selected': selected }\"\n [style.backgroundColor]=\"'#' + color\"\n [style.width]=\"width + 'px'\"\n [style.height]=\"height+ 'px'\"\n [style.left]=\"left + 'px'\"\n [style.top]=\"top + 'px'\"\n (click)=\"onClick()\">\n </div>\n</ng-template>\n" }]
92
- }], ctorParameters: () => [{ type: i1.ToolbarEventService }, { type: i2.HighlightCreateService }], propDecorators: { color: [{
93
- type: Input
94
- }], zoom: [{
95
- type: Input
96
- }], rotate: [{
97
- type: Input
98
- }], editable: [{
99
- type: Input
100
- }], pageHeight: [{
101
- type: Input
102
- }], pageWidth: [{
103
- type: Input
104
- }], selectEvent: [{
105
- type: Output
106
- }], updateEvent: [{
107
- type: Output
108
- }], viewRect: [{
109
- type: ViewChild,
110
- args: ['rectElement', { static: false }]
111
- }], annoRect: [{
112
- type: Input
113
- }], selected: [{
114
- type: Input
115
- }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdGFuZ2xlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL2Fubm90YXRpb25zL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tdmlldy9yZWN0YW5nbGUvcmVjdGFuZ2xlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL2Fubm90YXRpb25zL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tdmlldy9yZWN0YW5nbGUvcmVjdGFuZ2xlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVdkIsTUFBTSxPQUFPLGtCQUFrQjtJQXdCN0IsSUFDSSxRQUFRLENBQUMsUUFBbUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENB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QkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsbUJBQW1COzZIQUtwQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRW9DLFFBQVE7c0JBQWxELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFhckMsUUFBUTtzQkFEWCxLQUFLO2dCQW1DRixRQUFRO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlY3RhbmdsZSB9IGZyb20gJy4vcmVjdGFuZ2xlLm1vZGVsJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3Rvb2xiYXIvdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEhpZ2hsaWdodENyZWF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbm5vdGF0aW9uLWNyZWF0ZS9oaWdobGlnaHQtY3JlYXRlL2hpZ2hsaWdodC1jcmVhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LWFubm8tcmVjdGFuZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY3RhbmdsZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUmVjdGFuZ2xlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIGNvbG9yOiBTdHJpbmc7XG4gIEBJbnB1dCgpIHpvb206IG51bWJlcjtcbiAgQElucHV0KCkgcm90YXRlOiBudW1iZXI7XG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuO1xuICBASW5wdXQoKSBwYWdlSGVpZ2h0OiBudW1iZXI7XG4gIEBJbnB1dCgpIHBhZ2VXaWR0aDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVjdGFuZ2xlPigpO1xuICBAT3V0cHV0KCkgdXBkYXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY3RhbmdsZT4oKTtcblxuICBAVmlld0NoaWxkKCdyZWN0RWxlbWVudCcsIHtzdGF0aWM6IGZhbHNlfSkgdmlld1JlY3Q6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBfc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGVuYWJsZUdyYWJORHJhZyA9IGZhbHNlO1xuXG4gIGhlaWdodDogbnVtYmVyO1xuICB3aWR0aDogbnVtYmVyO1xuICB0b3A6IG51bWJlcjtcbiAgbGVmdDogbnVtYmVyO1xuXG4gIF9hbm5vUmVjdDogUmVjdGFuZ2xlO1xuICBASW5wdXQoKVxuICBzZXQgYW5ub1JlY3QoYW5ub1JlY3Q6IFJlY3RhbmdsZSkge1xuICAgIHRoaXMuX2Fubm9SZWN0ID0geyAuLi5hbm5vUmVjdCB9O1xuICAgIHRoaXMuaGVpZ2h0ID0gKyhhbm5vUmVjdC5oZWlnaHQgKiB0aGlzLnpvb20pLnRvRml4ZWQoMik7XG4gICAgdGhpcy53aWR0aCA9ICsoYW5ub1JlY3Qud2lkdGggKiB0aGlzLnpvb20pLnRvRml4ZWQoMik7XG4gICAgdGhpcy5sZWZ0ID0gKyhhbm5vUmVjdC54ICogdGhpcy56b29tKS50b0ZpeGVkKDIpO1xuICAgIHRoaXMudG9wID0gKyhhbm5vUmVjdC55ICogdGhpcy56b29tKS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgZ2V0IGFubm9SZWN0KCkge1xuICAgIHJldHVybiB0aGlzLl9hbm5vUmVjdDtcbiAgfVxuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhpZ2hsaWdodFNlcnZpY2U6IEhpZ2hsaWdodENyZWF0ZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLnJvdGF0ZSkge1xuICAgICAgdGhpcy5hZGp1c3RGb3JSb3RhdGlvbih0aGlzLnJvdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLmdyYWJORHJhZy5zdWJzY3JpYmUoZ3JhYk5EcmFnID0+IHRoaXMuZW5hYmxlR3JhYk5EcmFnID0gZ3JhYk5EcmFnKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZmlsdGVyKHN1YnNjcmlwdGlvbiA9PiAhc3Vic2NyaXB0aW9uLmNsb3NlZClcbiAgICAgIC5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgc2VsZWN0ZWQoc2VsZWN0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHNlbGVjdGVkO1xuICAgIGlmICh0aGlzLl9zZWxlY3RlZCAmJiB0aGlzLnZpZXdSZWN0KSB7XG4gICAgICB0aGlzLnZpZXdSZWN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICB9XG5cbiAgb25DbGljaygpIHtcbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQodGhpcy5hbm5vUmVjdCk7XG4gIH1cblxuICBvblVwZGF0ZSh2aWV3UmVjdDogYW55KSB7XG4gICAgY29uc3QgeyBvZmZzZXRIZWlnaHQsIG9mZnNldFdpZHRoLCBvZmZzZXRUb3AsIG9mZnNldExlZnQgfSA9IHZpZXdSZWN0O1xuICAgIGlmICh0aGlzLmhhc1JlY3RhbmdsZUNoYW5nZWQodmlld1JlY3QpKSB7XG4gICAgICBsZXQgcmVjdGFuZ2xlID0gdGhpcy5oaWdobGlnaHRTZXJ2aWNlXG4gICAgICAgIC5hcHBseVJvdGF0aW9uKHRoaXMucGFnZUhlaWdodCwgdGhpcy5wYWdlV2lkdGgsIG9mZnNldEhlaWdodCwgb2Zmc2V0V2lkdGgsIG9mZnNldFRvcCwgb2Zmc2V0TGVmdCwgdGhpcy5yb3RhdGUsIHRoaXMuem9vbSk7XG4gICAgICByZWN0YW5nbGUgPSB7IC4uLnRoaXMuYW5ub1JlY3QsIC4uLnJlY3RhbmdsZSB9O1xuICAgICAgdGhpcy51cGRhdGVFdmVudC5lbWl0KHsgLi4ucmVjdGFuZ2xlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFkanVzdEZvclJvdGF0aW9uKHJvdGF0aW9uOiBudW1iZXIpIHtcbiAgICBjb25zdCB7IHRvcCwgbGVmdCwgaGVpZ2h0LCB3aWR0aCB9ID0gdGhpcztcbiAgICBzd2l0Y2ggKHJvdGF0aW9uKSB7XG4gICAgICBjYXNlIDkwOlxuICAgICAgICB0aGlzLndpZHRoID0gaGVpZ2h0O1xuICAgICAgICB0aGlzLmhlaWdodCA9IHdpZHRoO1xuICAgICAgICB0aGlzLmxlZnQgPSB0aGlzLnBhZ2VXaWR0aCAgLSB0b3AgLSBoZWlnaHQ7XG4gICAgICAgIHRoaXMudG9wID0gbGVmdDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE4MDpcbiAgICAgICAgdGhpcy5sZWZ0ID0gdGhpcy5wYWdlV2lkdGggLSBsZWZ0IC0gd2lkdGg7XG4gICAgICAgIHRoaXMudG9wID0gdGhpcy5wYWdlSGVpZ2h0IC0gdG9wIC0gaGVpZ2h0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjcwOlxuICAgICAgICB0aGlzLndpZHRoID0gaGVpZ2h0O1xuICAgICAgICB0aGlzLmhlaWdodCA9IHdpZHRoO1xuICAgICAgICB0aGlzLmxlZnQgPSB0b3A7XG4gICAgICAgIHRoaXMudG9wID0gdGhpcy5wYWdlSGVpZ2h0IC0gbGVmdCAtIHdpZHRoO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBoYXNSZWN0YW5nbGVDaGFuZ2VkKHZpZXdSZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQodGhpcy5sZWZ0KSAhPT0gdmlld1JlY3Qub2Zmc2V0TGVmdCB8fFxuICAgICAgTWF0aC5yb3VuZCh0aGlzLnRvcCkgIT09IHZpZXdSZWN0Lm9mZnNldFRvcCB8fFxuICAgICAgTWF0aC5yb3VuZCh0aGlzLndpZHRoKSAhPT0gdmlld1JlY3Qub2Zmc2V0V2lkdGggfHxcbiAgICAgIE1hdGgucm91bmQodGhpcy5oZWlnaHQpICE9PSB2aWV3UmVjdC5vZmZzZXRIZWlnaHQ7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJlZGl0YWJsZTsgZWxzZSBub25FZGl0YWJsZVwiPlxuICA8ZGl2ICNyZWN0RWxlbWVudFxuICAgICAgIGNsYXNzPVwicmVjdGFuZ2xlXCJcbiAgICAgICBkcmFnZ2FibGVcbiAgICAgICByZXNpemFibGVcbiAgICAgICBbdGFiaW5kZXhdPVwiYW5ub1JlY3QuaWRcIlxuICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogc2VsZWN0ZWQsICdncmFiTkRyYWcnOiBlbmFibGVHcmFiTkRyYWcgfVwiXG4gICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCInIycgKyBjb2xvclwiXG4gICAgICAgW3N0eWxlLndpZHRoXT1cIndpZHRoICsgJ3B4J1wiXG4gICAgICAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHQgKyAncHgnXCJcbiAgICAgICBbc3R5bGUubGVmdF09XCJsZWZ0ICsgJ3B4J1wiXG4gICAgICAgW3N0eWxlLnRvcF09XCJ0b3AgKyAncHgnXCJcbiAgICAgICBbcm90YXRlXT1cIjBcIlxuICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZFwiXG4gICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgICAgKHN0b3BwZWQpPVwib25VcGRhdGUocmVjdEVsZW1lbnQpXCI+XG4gIDwvZGl2PlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI25vbkVkaXRhYmxlPlxuICA8ZGl2ICNyZWN0RWxlbWVudFxuICAgICAgIGNsYXNzPVwicmVjdGFuZ2xlXCJcbiAgICAgICBbdGFiaW5kZXhdPVwiYW5ub1JlY3QuaWRcIlxuICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogc2VsZWN0ZWQgfVwiXG4gICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCInIycgKyBjb2xvclwiXG4gICAgICAgW3N0eWxlLndpZHRoXT1cIndpZHRoICsgJ3B4J1wiXG4gICAgICAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHQrICdweCdcIlxuICAgICAgIFtzdHlsZS5sZWZ0XT1cImxlZnQgKyAncHgnXCJcbiAgICAgICBbc3R5bGUudG9wXT1cInRvcCArICdweCdcIlxuICAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdGFuZ2xlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi12aWV3L3JlY3RhbmdsZS9yZWN0YW5nbGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwaVBlcnNpc3RlZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9hcGktcGVyc2lzdGVkLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWN0YW5nbGUgZXh0ZW5kcyBBcGlQZXJzaXN0ZWQge1xuICBhbm5vdGF0aW9uSWQ6IHN0cmluZztcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xufVxuIl19
@@ -1,119 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- export class CtxToolbarComponent {
5
- constructor() {
6
- this.createHighlightEvent = new EventEmitter();
7
- this.deleteHighlightEvent = new EventEmitter();
8
- this.addOrEditCommentEvent = new EventEmitter();
9
- this.createBookmarkEvent = new EventEmitter();
10
- this.defaultHeight = 70;
11
- this.defaultWidth = 300;
12
- }
13
- ngOnChanges(changes) {
14
- this.setRectangle();
15
- this.top = this.popupTop();
16
- this.left = this.popupLeft();
17
- }
18
- set rectangles(rectangles) {
19
- if (rectangles) {
20
- this._rectangles = rectangles;
21
- this.setRectangle();
22
- }
23
- }
24
- get rectangles() {
25
- return this._rectangles;
26
- }
27
- createHighlight() {
28
- this.createHighlightEvent.emit();
29
- this.rectangle = undefined;
30
- }
31
- deleteHighlight() {
32
- this.deleteHighlightEvent.emit();
33
- }
34
- addOrEditComment() {
35
- this.addOrEditCommentEvent.emit();
36
- setTimeout(() => {
37
- // This hack to wait until the element is rendered seems to be unreliable,
38
- if (!location.hash) {
39
- document.getElementById('viewerContainer')?.scrollBy(0, 1);
40
- }
41
- }, 20);
42
- }
43
- createBookmark() {
44
- this.createBookmarkEvent.emit(this.rectangle);
45
- this.rectangle = undefined;
46
- }
47
- setRectangle() {
48
- const rectangle = this.rectangles
49
- .reduce((prev, current) => prev.y < current.y ? prev : current);
50
- this.rectangle = { ...rectangle };
51
- switch (this.rotate) {
52
- case 90:
53
- this.rectangle.width = rectangle.height;
54
- this.rectangle.height = rectangle.width;
55
- this.rectangle.x = (this.pageWidth / this.zoom) - rectangle.y - rectangle.height;
56
- this.rectangle.y = rectangle.x;
57
- break;
58
- case 180:
59
- this.rectangle.x = (this.pageWidth / this.zoom) - rectangle.x - rectangle.width;
60
- this.rectangle.y = (this.pageHeight / this.zoom) - rectangle.y - rectangle.height;
61
- break;
62
- case 270:
63
- this.rectangle.width = rectangle.height;
64
- this.rectangle.height = rectangle.width;
65
- this.rectangle.x = rectangle.y;
66
- this.rectangle.y = (this.pageHeight / this.zoom) - rectangle.x - rectangle.width;
67
- break;
68
- }
69
- }
70
- popupTop() {
71
- const popupTop = this.rectangle.y * this.zoom - this.defaultHeight;
72
- return popupTop <= 0 ? this.defaultHeight : popupTop;
73
- }
74
- popupLeft() {
75
- const popupLeft = (this.rectangle.x + (this.rectangle.width / 2)) * this.zoom - (this.defaultWidth / 2);
76
- if (popupLeft <= 0) {
77
- return 0;
78
- }
79
- else if (popupLeft >= this.pageWidth - this.defaultWidth) {
80
- return this.pageWidth - this.defaultWidth;
81
- }
82
- else {
83
- return popupLeft;
84
- }
85
- }
86
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CtxToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
87
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CtxToolbarComponent, selector: "mv-ctx-toolbar", inputs: { zoom: "zoom", rotate: "rotate", pageHeight: "pageHeight", pageWidth: "pageWidth", canHighlight: "canHighlight", canBookmark: "canBookmark", canComment: "canComment", canDelete: "canDelete", rectangles: "rectangles" }, outputs: { createHighlightEvent: "createHighlightEvent", deleteHighlightEvent: "deleteHighlightEvent", addOrEditCommentEvent: "addOrEditCommentEvent", createBookmarkEvent: "createBookmarkEvent" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"toolbar\" *ngIf=\"rectangle\"\n [style.top.px]=\"top\"\n [style.left.px]=\"left\">\n <button *ngIf=\"canHighlight\"\n type=\"button\" title=\"Highlight\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn leftButton aui__toolbar-button-highlight\"\n (mousedown)=\"createHighlight()\">\n <span>Highlight</span>\n </button>\n <button *ngIf=\"canDelete\"\n type=\"button\" title=\"Delete\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn leftButton\"\n (mousedown)=\"deleteHighlight()\">\n <span>Remove</span>\n </button>\n <button *ngIf=\"canComment\"\n type=\"button\" title=\"Comment\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn rightButton aui__toolbar-button-comment\"\n (mousedown)=\"addOrEditComment()\">\n <span>Comment</span></button>\n <button *ngIf=\"canBookmark\"\n type=\"button\" title=\"Bookmark\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn rightButton aui__toolbar-button-bookmark\"\n id=\"bookmarkButton\"\n (mousedown)=\"createBookmark()\">\n <span>Bookmark</span></button>\n <div class=\"arrow-down\">\n <div class=\"inner-triangle\"></div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
88
- }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CtxToolbarComponent, decorators: [{
90
- type: Component,
91
- args: [{ selector: 'mv-ctx-toolbar', template: "<div class=\"toolbar\" *ngIf=\"rectangle\"\n [style.top.px]=\"top\"\n [style.left.px]=\"left\">\n <button *ngIf=\"canHighlight\"\n type=\"button\" title=\"Highlight\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn leftButton aui__toolbar-button-highlight\"\n (mousedown)=\"createHighlight()\">\n <span>Highlight</span>\n </button>\n <button *ngIf=\"canDelete\"\n type=\"button\" title=\"Delete\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn leftButton\"\n (mousedown)=\"deleteHighlight()\">\n <span>Remove</span>\n </button>\n <button *ngIf=\"canComment\"\n type=\"button\" title=\"Comment\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn rightButton aui__toolbar-button-comment\"\n (mousedown)=\"addOrEditComment()\">\n <span>Comment</span></button>\n <button *ngIf=\"canBookmark\"\n type=\"button\" title=\"Bookmark\"\n class=\"aui__toolbar-button aui__toolbar-button--comments contextual-btn rightButton aui__toolbar-button-bookmark\"\n id=\"bookmarkButton\"\n (mousedown)=\"createBookmark()\">\n <span>Bookmark</span></button>\n <div class=\"arrow-down\">\n <div class=\"inner-triangle\"></div>\n </div>\n</div>\n" }]
92
- }], ctorParameters: () => [], propDecorators: { zoom: [{
93
- type: Input
94
- }], rotate: [{
95
- type: Input
96
- }], pageHeight: [{
97
- type: Input
98
- }], pageWidth: [{
99
- type: Input
100
- }], canHighlight: [{
101
- type: Input
102
- }], canBookmark: [{
103
- type: Input
104
- }], canComment: [{
105
- type: Input
106
- }], canDelete: [{
107
- type: Input
108
- }], createHighlightEvent: [{
109
- type: Output
110
- }], deleteHighlightEvent: [{
111
- type: Output
112
- }], addOrEditCommentEvent: [{
113
- type: Output
114
- }], createBookmarkEvent: [{
115
- type: Output
116
- }], rectangles: [{
117
- type: Input
118
- }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3R4LXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvY3R4LXRvb2xiYXIvY3R4LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvY3R4LXRvb2xiYXIvY3R4LXRvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQzs7O0FBT3ZCLE1BQU0sT0FBTyxtQkFBbUI7SUF5QjlCO1FBVlUseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0Msd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQVE1RCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBYSxVQUFVLENBQUMsVUFBdUI7UUFDN0MsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FB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QUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFrQk0sVUFBVTtzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVjdGFuZ2xlIH0gZnJvbSAnLi4vYW5ub3RhdGlvbi12aWV3L3JlY3RhbmdsZS9yZWN0YW5nbGUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1jdHgtdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jdHgtdG9vbGJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ3R4VG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgcmVhZG9ubHkgZGVmYXVsdEhlaWdodDtcbiAgcmVhZG9ubHkgZGVmYXVsdFdpZHRoO1xuXG4gIEBJbnB1dCgpIHpvb207XG4gIEBJbnB1dCgpIHJvdGF0ZTtcbiAgQElucHV0KCkgcGFnZUhlaWdodDogbnVtYmVyO1xuICBASW5wdXQoKSBwYWdlV2lkdGg6IG51bWJlcjtcblxuICBASW5wdXQoKSBjYW5IaWdobGlnaHQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGNhbkJvb2ttYXJrOiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5Db21tZW50OiBib29sZWFuO1xuICBASW5wdXQoKSBjYW5EZWxldGU6IGJvb2xlYW47XG5cbiAgQE91dHB1dCgpIGNyZWF0ZUhpZ2hsaWdodEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZGVsZXRlSGlnaGxpZ2h0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBhZGRPckVkaXRDb21tZW50RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjcmVhdGVCb29rbWFya0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxSZWN0YW5nbGU+KCk7XG5cbiAgcmVjdGFuZ2xlOiBSZWN0YW5nbGU7XG4gIF9yZWN0YW5nbGVzOiBSZWN0YW5nbGVbXTtcbiAgdG9wOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmRlZmF1bHRIZWlnaHQgPSA3MDtcbiAgICB0aGlzLmRlZmF1bHRXaWR0aCA9IDMwMDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICB0aGlzLnNldFJlY3RhbmdsZSgpO1xuICAgIHRoaXMudG9wID0gdGhpcy5wb3B1cFRvcCgpO1xuICAgIHRoaXMubGVmdCA9IHRoaXMucG9wdXBMZWZ0KCk7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcmVjdGFuZ2xlcyhyZWN0YW5nbGVzOiBSZWN0YW5nbGVbXSkge1xuICAgIGlmIChyZWN0YW5nbGVzKSB7XG4gICAgICB0aGlzLl9yZWN0YW5nbGVzID0gcmVjdGFuZ2xlcztcbiAgICAgIHRoaXMuc2V0UmVjdGFuZ2xlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJlY3RhbmdsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlY3RhbmdsZXM7XG4gIH1cblxuICBjcmVhdGVIaWdobGlnaHQoKSB7XG4gICAgdGhpcy5jcmVhdGVIaWdobGlnaHRFdmVudC5lbWl0KCk7XG4gICAgdGhpcy5yZWN0YW5nbGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBkZWxldGVIaWdobGlnaHQoKSB7XG4gICAgdGhpcy5kZWxldGVIaWdobGlnaHRFdmVudC5lbWl0KCk7XG4gIH1cblxuICBhZGRPckVkaXRDb21tZW50KCkge1xuICAgIHRoaXMuYWRkT3JFZGl0Q29tbWVudEV2ZW50LmVtaXQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIFRoaXMgaGFjayB0byB3YWl0IHVudGlsIHRoZSBlbGVtZW50IGlzIHJlbmRlcmVkIHNlZW1zIHRvIGJlIHVucmVsaWFibGUsXG4gICAgICBpZiAoIWxvY2F0aW9uLmhhc2gpIHtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZXdlckNvbnRhaW5lcicpPy5zY3JvbGxCeSgwLCAxKTtcbiAgICAgIH1cbiAgICB9LCAyMCk7XG4gIH1cblxuICBjcmVhdGVCb29rbWFyaygpIHtcbiAgICB0aGlzLmNyZWF0ZUJvb2ttYXJrRXZlbnQuZW1pdCh0aGlzLnJlY3RhbmdsZSk7XG4gICAgdGhpcy5yZWN0YW5nbGUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBzZXRSZWN0YW5nbGUoKSB7XG4gICAgY29uc3QgcmVjdGFuZ2xlID0gdGhpcy5yZWN0YW5nbGVzXG4gICAgICAucmVkdWNlKChwcmV2LCBjdXJyZW50KSA9PiBwcmV2LnkgPCBjdXJyZW50LnkgPyBwcmV2IDogY3VycmVudCk7XG4gICAgdGhpcy5yZWN0YW5nbGUgPSAgeyAuLi5yZWN0YW5nbGUgfTtcbiAgICBzd2l0Y2ggKHRoaXMucm90YXRlKSB7XG4gICAgICBjYXNlIDkwOlxuICAgICAgICB0aGlzLnJlY3RhbmdsZS53aWR0aCA9IHJlY3RhbmdsZS5oZWlnaHQ7XG4gICAgICAgIHRoaXMucmVjdGFuZ2xlLmhlaWdodCA9IHJlY3RhbmdsZS53aWR0aDtcbiAgICAgICAgdGhpcy5yZWN0YW5nbGUueCA9ICh0aGlzLnBhZ2VXaWR0aCAvIHRoaXMuem9vbSkgLSByZWN0YW5nbGUueSAtIHJlY3RhbmdsZS5oZWlnaHQ7XG4gICAgICAgIHRoaXMucmVjdGFuZ2xlLnkgPSByZWN0YW5nbGUueDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE4MDpcbiAgICAgICAgdGhpcy5yZWN0YW5nbGUueCA9ICh0aGlzLnBhZ2VXaWR0aCAvIHRoaXMuem9vbSkgLSByZWN0YW5nbGUueCAtIHJlY3RhbmdsZS53aWR0aDtcbiAgICAgICAgdGhpcy5yZWN0YW5nbGUueSA9ICh0aGlzLnBhZ2VIZWlnaHQgLyB0aGlzLnpvb20pIC0gcmVjdGFuZ2xlLnkgLSByZWN0YW5nbGUuaGVpZ2h0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjcwOlxuICAgICAgICB0aGlzLnJlY3RhbmdsZS53aWR0aCA9IHJlY3RhbmdsZS5oZWlnaHQ7XG4gICAgICAgIHRoaXMucmVjdGFuZ2xlLmhlaWdodCA9IHJlY3RhbmdsZS53aWR0aDtcbiAgICAgICAgdGhpcy5yZWN0YW5nbGUueCA9IHJlY3RhbmdsZS55O1xuICAgICAgICB0aGlzLnJlY3RhbmdsZS55ID0gKHRoaXMucGFnZUhlaWdodCAvIHRoaXMuem9vbSkgLSByZWN0YW5nbGUueCAtIHJlY3RhbmdsZS53aWR0aDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcG9wdXBUb3AoKSB7XG4gICAgY29uc3QgcG9wdXBUb3AgPSB0aGlzLnJlY3RhbmdsZS55ICogdGhpcy56b29tIC0gdGhpcy5kZWZhdWx0SGVpZ2h0O1xuICAgIHJldHVybiBwb3B1cFRvcCA8PSAwID8gdGhpcy5kZWZhdWx0SGVpZ2h0IDogcG9wdXBUb3A7XG4gIH1cblxuICBwb3B1cExlZnQoKSB7XG4gICAgY29uc3QgcG9wdXBMZWZ0ID0gKHRoaXMucmVjdGFuZ2xlLnggKyAodGhpcy5yZWN0YW5nbGUud2lkdGggLyAyKSkgKiB0aGlzLnpvb20gLSAodGhpcy5kZWZhdWx0V2lkdGggLyAyKTtcbiAgICBpZiAocG9wdXBMZWZ0IDw9IDApIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSBpZiAocG9wdXBMZWZ0ID49IHRoaXMucGFnZVdpZHRoIC0gdGhpcy5kZWZhdWx0V2lkdGgpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhZ2VXaWR0aCAtIHRoaXMuZGVmYXVsdFdpZHRoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcG9wdXBMZWZ0O1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInRvb2xiYXJcIiAqbmdJZj1cInJlY3RhbmdsZVwiXG4gICAgIFtzdHlsZS50b3AucHhdPVwidG9wXCJcbiAgICAgW3N0eWxlLmxlZnQucHhdPVwibGVmdFwiPlxuICA8YnV0dG9uICpuZ0lmPVwiY2FuSGlnaGxpZ2h0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJIaWdobGlnaHRcIlxuICAgICAgICAgIGNsYXNzPVwiYXVpX190b29sYmFyLWJ1dHRvbiBhdWlfX3Rvb2xiYXItYnV0dG9uLS1jb21tZW50cyBjb250ZXh0dWFsLWJ0biBsZWZ0QnV0dG9uIGF1aV9fdG9vbGJhci1idXR0b24taGlnaGxpZ2h0XCJcbiAgICAgICAgICAobW91c2Vkb3duKT1cImNyZWF0ZUhpZ2hsaWdodCgpXCI+XG4gICAgPHNwYW4+SGlnaGxpZ2h0PC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiAqbmdJZj1cImNhbkRlbGV0ZVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiRGVsZXRlXCJcbiAgICAgICAgICBjbGFzcz1cImF1aV9fdG9vbGJhci1idXR0b24gYXVpX190b29sYmFyLWJ1dHRvbi0tY29tbWVudHMgY29udGV4dHVhbC1idG4gbGVmdEJ1dHRvblwiXG4gICAgICAgICAgKG1vdXNlZG93bik9XCJkZWxldGVIaWdobGlnaHQoKVwiPlxuICAgIDxzcGFuPlJlbW92ZTwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b24gKm5nSWY9XCJjYW5Db21tZW50XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9XCJDb21tZW50XCJcbiAgICAgICAgICBjbGFzcz1cImF1aV9fdG9vbGJhci1idXR0b24gYXVpX190b29sYmFyLWJ1dHRvbi0tY29tbWVudHMgY29udGV4dHVhbC1idG4gcmlnaHRCdXR0b24gYXVpX190b29sYmFyLWJ1dHRvbi1jb21tZW50XCJcbiAgICAgICAgICAobW91c2Vkb3duKT1cImFkZE9yRWRpdENvbW1lbnQoKVwiPlxuICAgIDxzcGFuPkNvbW1lbnQ8L3NwYW4+PC9idXR0b24+XG4gIDxidXR0b24gKm5nSWY9XCJjYW5Cb29rbWFya1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiIHRpdGxlPVwiQm9va21hcmtcIlxuICAgICAgICAgIGNsYXNzPVwiYXVpX190b29sYmFyLWJ1dHRvbiBhdWlfX3Rvb2xiYXItYnV0dG9uLS1jb21tZW50cyBjb250ZXh0dWFsLWJ0biByaWdodEJ1dHRvbiBhdWlfX3Rvb2xiYXItYnV0dG9uLWJvb2ttYXJrXCJcbiAgICAgICAgICBpZD1cImJvb2ttYXJrQnV0dG9uXCJcbiAgICAgICAgICAobW91c2Vkb3duKT1cImNyZWF0ZUJvb2ttYXJrKClcIj5cbiAgICA8c3Bhbj5Cb29rbWFyazwvc3Bhbj48L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cImFycm93LWRvd25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5uZXItdHJpYW5nbGVcIj48L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,86 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { take } from 'rxjs/operators';
3
- import { select } from '@ngrx/store';
4
- import { v4 as uuid } from 'uuid';
5
- import * as fromDocument from '../../../store/selectors/document.selectors';
6
- import * as fromSelectors from '../../../store/selectors/annotation.selectors';
7
- import { CreateBookmark } from '../../../store/actions/bookmark.actions';
8
- import * as fromBookmarks from '../../../store/selectors/bookmark.selectors';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@ngrx/store";
11
- import * as i2 from "../annotation-create/highlight-create/highlight-create.service";
12
- import * as i3 from "../../../toolbar/toolbar-event.service";
13
- import * as i4 from "../../../viewers/viewer-event.service";
14
- import * as i5 from "@angular/common";
15
- import * as i6 from "../annotation-create/box-highlight-create/box-highlight-create.component";
16
- import * as i7 from "../annotation-set.component";
17
- import * as i8 from "../ctx-toolbar/ctx-toolbar.component";
18
- export class MetadataLayerComponent {
19
- constructor(store, highlightService, toolbarEvents, viewerEvents) {
20
- this.store = store;
21
- this.highlightService = highlightService;
22
- this.toolbarEvents = toolbarEvents;
23
- this.viewerEvents = viewerEvents;
24
- this.pages = []; // todo add type
25
- this.drawMode = false;
26
- }
27
- ngOnInit() {
28
- this.$subscriptions = this.store.pipe(select(fromDocument.getPages))
29
- .subscribe(pages => this.pages = Object.values(pages));
30
- this.annoPages$ = this.store.pipe(select(fromSelectors.getPageEntities));
31
- this.$subscriptions.add(this.toolbarEvents.drawModeSubject.subscribe(drawMode => this.drawMode = drawMode));
32
- this.$subscriptions.add(this.viewerEvents.textHighlight.subscribe(highlight => this.showContextToolbar(highlight)));
33
- this.$subscriptions.add(this.viewerEvents.ctxToolbarCleared.subscribe(() => this.clearContextToolbar()));
34
- }
35
- ngOnDestroy() {
36
- this.$subscriptions.unsubscribe();
37
- }
38
- showContextToolbar(highlight) {
39
- this.highlightPage = highlight.page;
40
- this.rectangles = highlight.rectangles;
41
- if (this.rectangles) {
42
- this.toolbarEvents.highlightModeSubject.next(false);
43
- }
44
- }
45
- clearContextToolbar() {
46
- this.rectangles = undefined;
47
- }
48
- createHighlight() {
49
- this.highlightService.saveAnnotation(this.rectangles, this.highlightPage);
50
- this.highlightService.resetHighlight();
51
- this.rectangles = undefined;
52
- }
53
- createBookmark(rectangle) {
54
- this.store.pipe(select(fromBookmarks.getBookmarkInfo), take(1))
55
- .subscribe((bookmarkInfo) => {
56
- const selection = window.getSelection().toString();
57
- this.store.dispatch(new CreateBookmark({
58
- ...bookmarkInfo,
59
- name: selection.length > 0 ? selection.substr(0, 30) : 'new bookmark',
60
- id: uuid(),
61
- pageNumber: this.highlightPage - 1,
62
- xCoordinate: rectangle.x,
63
- yCoordinate: rectangle.y
64
- }));
65
- this.toolbarEvents.toggleSideBar(true);
66
- this.toolbarEvents.toggleSideBarView(false);
67
- this.highlightService.resetHighlight();
68
- this.rectangles = undefined;
69
- });
70
- }
71
- saveAnnotation({ rectangles, page }) {
72
- this.highlightService.saveAnnotation(rectangles, page);
73
- this.toolbarEvents.drawModeSubject.next(false);
74
- }
75
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataLayerComponent, deps: [{ token: i1.Store }, { token: i2.HighlightCreateService }, { token: i3.ToolbarEventService }, { token: i4.ViewerEventService }], target: i0.ɵɵFactoryTarget.Component }); }
76
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataLayerComponent, selector: "mv-metadata-layer", inputs: { zoom: "zoom", rotate: "rotate" }, ngImport: i0, template: "<div class=\"pageContainer\">\n <div *ngFor=\"let page of pages; index as i\"\n class=\"pageContainer__page\"\n [ngStyle]=\"{\n 'width.px': page.styles.width,\n 'height.px': page.styles.height\n }\"\n [ngClass]=\"{ 'pageContainer__page--draw' : drawMode }\">\n <mv-box-highlight-create\n [page]=\"i + 1\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n [rotate]=\"rotate\"\n [zoom]=\"zoom\"\n (saveSelection)=\"saveAnnotation($event)\">\n </mv-box-highlight-create>\n <mv-ctx-toolbar *ngIf=\"rectangles && highlightPage === (i + 1)\"\n [rectangles]=\"rectangles\"\n [canBookmark]=\"true\" [canHighlight]=\"true\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n (createBookmarkEvent)=\"createBookmark($event)\"\n (createHighlightEvent)=\"createHighlight()\">\n </mv-ctx-toolbar>\n <div class=\"pageContainer__page-item\">\n <mv-annotation-set *ngIf=\"(annoPages$ | async) as annoPages\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n [page]=\"i\" [annotations]=\"annoPages[i + 1]\"></mv-annotation-set>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.BoxHighlightCreateComponent, selector: "mv-box-highlight-create", inputs: ["page", "pageHeight", "pageWidth", "rotate", "zoom", "container"], outputs: ["saveSelection"] }, { kind: "component", type: i7.AnnotationSetComponent, selector: "mv-annotation-set", inputs: ["page", "annotations", "zoom", "rotate", "pageHeight", "pageWidth"] }, { kind: "component", type: i8.CtxToolbarComponent, selector: "mv-ctx-toolbar", inputs: ["zoom", "rotate", "pageHeight", "pageWidth", "canHighlight", "canBookmark", "canComment", "canDelete", "rectangles"], outputs: ["createHighlightEvent", "deleteHighlightEvent", "addOrEditCommentEvent", "createBookmarkEvent"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
77
- }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataLayerComponent, decorators: [{
79
- type: Component,
80
- args: [{ selector: 'mv-metadata-layer', template: "<div class=\"pageContainer\">\n <div *ngFor=\"let page of pages; index as i\"\n class=\"pageContainer__page\"\n [ngStyle]=\"{\n 'width.px': page.styles.width,\n 'height.px': page.styles.height\n }\"\n [ngClass]=\"{ 'pageContainer__page--draw' : drawMode }\">\n <mv-box-highlight-create\n [page]=\"i + 1\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n [rotate]=\"rotate\"\n [zoom]=\"zoom\"\n (saveSelection)=\"saveAnnotation($event)\">\n </mv-box-highlight-create>\n <mv-ctx-toolbar *ngIf=\"rectangles && highlightPage === (i + 1)\"\n [rectangles]=\"rectangles\"\n [canBookmark]=\"true\" [canHighlight]=\"true\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n (createBookmarkEvent)=\"createBookmark($event)\"\n (createHighlightEvent)=\"createHighlight()\">\n </mv-ctx-toolbar>\n <div class=\"pageContainer__page-item\">\n <mv-annotation-set *ngIf=\"(annoPages$ | async) as annoPages\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [pageHeight]=\"page.styles.height\"\n [pageWidth]=\"page.styles.width\"\n [page]=\"i\" [annotations]=\"annoPages[i + 1]\"></mv-annotation-set>\n </div>\n </div>\n</div>\n" }]
81
- }], ctorParameters: () => [{ type: i1.Store }, { type: i2.HighlightCreateService }, { type: i3.ToolbarEventService }, { type: i4.ViewerEventService }], propDecorators: { zoom: [{
82
- type: Input
83
- }], rotate: [{
84
- type: Input
85
- }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtbGF5ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvbWV0YWRhdGEtbGF5ZXIvbWV0YWRhdGEtbGF5ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvbWV0YWRhdGEtbGF5ZXIvbWV0YWRhdGEtbGF5ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2xDLE9BQU8sS0FBSyxZQUFZLE1BQU0sNkNBQTZDLENBQUM7QUFDNUUsT0FBTyxLQUFLLGFBQWEsTUFBTSwrQ0FBK0MsQ0FBQztBQUcvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxLQUFLLGFBQWEsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7Ozs7OztBQVE3RSxNQUFNLE9BQU8sc0JBQXNCO0lBY2pDLFlBQ1UsS0FBMEMsRUFDakMsZ0JBQXdDLEVBQ3hDLGFBQWtDLEVBQ2xDLFlBQWdDO1FBSHpDLFVBQUssR0FBTCxLQUFLLENBQXFDO1FBQ2pDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBd0I7UUFDeEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQWJuRCxV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LFNBQVMsQ0FBQyxDQUFDO2dCQUN4QixXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDbEIsQ0FBQyxDQUFDLENBQUM7WUFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUU5QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUEwQztRQUN6RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztrSUEzRVUsc0JBQXNCO3NIQUF0QixzQkFBc0IscUdDcEJuQyx5aERBb0NBOzs0RkRoQmEsc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLG1CQUFtQjtrTEFLcEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuXG5pbXBvcnQgKiBhcyBmcm9tU3RvcmUgZnJvbSAnLi4vLi4vLi4vc3RvcmUvcmVkdWNlcnMvcmVkdWNlcnMnO1xuaW1wb3J0ICogYXMgZnJvbURvY3VtZW50IGZyb20gJy4uLy4uLy4uL3N0b3JlL3NlbGVjdG9ycy9kb2N1bWVudC5zZWxlY3RvcnMnO1xuaW1wb3J0ICogYXMgZnJvbVNlbGVjdG9ycyBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZWxlY3RvcnMvYW5ub3RhdGlvbi5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgSGlnaGxpZ2h0Q3JlYXRlU2VydmljZSB9IGZyb20gJy4uL2Fubm90YXRpb24tY3JlYXRlL2hpZ2hsaWdodC1jcmVhdGUvaGlnaGxpZ2h0LWNyZWF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY3RhbmdsZSB9IGZyb20gJy4uL2Fubm90YXRpb24tdmlldy9yZWN0YW5nbGUvcmVjdGFuZ2xlLm1vZGVsJztcbmltcG9ydCB7IENyZWF0ZUJvb2ttYXJrIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvYWN0aW9ucy9ib29rbWFyay5hY3Rpb25zJztcbmltcG9ydCAqIGFzIGZyb21Cb29rbWFya3MgZnJvbSAnLi4vLi4vLi4vc3RvcmUvc2VsZWN0b3JzL2Jvb2ttYXJrLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBUb29sYmFyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdG9vbGJhci90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgSGlnaGxpZ2h0LCBWaWV3ZXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi92aWV3ZXJzL3ZpZXdlci1ldmVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtbWV0YWRhdGEtbGF5ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWV0YWRhdGEtbGF5ZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhTGF5ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgem9vbTogbnVtYmVyO1xuICBASW5wdXQoKSByb3RhdGU6IG51bWJlcjtcblxuICBwYWdlczogYW55W10gPSBbXTsgLy8gdG9kbyBhZGQgdHlwZVxuICBhbm5vUGFnZXMkOiBPYnNlcnZhYmxlPGFueT47IC8vIHRvZG8gYWRkIHR5cGVcblxuICBkcmF3TW9kZSA9IGZhbHNlO1xuICBoaWdobGlnaHRQYWdlOiBudW1iZXI7XG4gIHJlY3RhbmdsZXM6IFJlY3RhbmdsZVtdO1xuXG4gIHByaXZhdGUgJHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxmcm9tU3RvcmUuQW5ub3RhdGlvblNldFN0YXRlPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpZ2hsaWdodFNlcnZpY2U6IEhpZ2hsaWdodENyZWF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld2VyRXZlbnRzOiBWaWV3ZXJFdmVudFNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbnMgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21Eb2N1bWVudC5nZXRQYWdlcykpXG4gICAgICAuc3Vic2NyaWJlKHBhZ2VzID0+IHRoaXMucGFnZXMgPSBPYmplY3QudmFsdWVzKHBhZ2VzKSk7XG4gICAgdGhpcy5hbm5vUGFnZXMkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tU2VsZWN0b3JzLmdldFBhZ2VFbnRpdGllcykpO1xuXG4gICAgdGhpcy4kc3Vic2NyaXB0aW9ucy5hZGQodGhpcy50b29sYmFyRXZlbnRzLmRyYXdNb2RlU3ViamVjdC5zdWJzY3JpYmUoZHJhd01vZGUgPT4gdGhpcy5kcmF3TW9kZSA9IGRyYXdNb2RlKSk7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9ucy5hZGQodGhpcy52aWV3ZXJFdmVudHMudGV4dEhpZ2hsaWdodC5zdWJzY3JpYmUoaGlnaGxpZ2h0ID0+IHRoaXMuc2hvd0NvbnRleHRUb29sYmFyKGhpZ2hsaWdodCkpKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb25zLmFkZCh0aGlzLnZpZXdlckV2ZW50cy5jdHhUb29sYmFyQ2xlYXJlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGVhckNvbnRleHRUb29sYmFyKCkpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHNob3dDb250ZXh0VG9vbGJhcihoaWdobGlnaHQ6IEhpZ2hsaWdodCkge1xuICAgIHRoaXMuaGlnaGxpZ2h0UGFnZSA9IGhpZ2hsaWdodC5wYWdlO1xuICAgIHRoaXMucmVjdGFuZ2xlcyA9IGhpZ2hsaWdodC5yZWN0YW5nbGVzO1xuICAgIGlmICh0aGlzLnJlY3RhbmdsZXMpIHtcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5oaWdobGlnaHRNb2RlU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckNvbnRleHRUb29sYmFyKCkge1xuICAgIHRoaXMucmVjdGFuZ2xlcyA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNyZWF0ZUhpZ2hsaWdodCgpIHtcbiAgICB0aGlzLmhpZ2hsaWdodFNlcnZpY2Uuc2F2ZUFubm90YXRpb24odGhpcy5yZWN0YW5nbGVzLCB0aGlzLmhpZ2hsaWdodFBhZ2UpO1xuICAgIHRoaXMuaGlnaGxpZ2h0U2VydmljZS5yZXNldEhpZ2hsaWdodCgpO1xuICAgIHRoaXMucmVjdGFuZ2xlcyA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNyZWF0ZUJvb2ttYXJrKHJlY3RhbmdsZTogUmVjdGFuZ2xlKSB7XG4gICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tQm9va21hcmtzLmdldEJvb2ttYXJrSW5mbyksIHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChib29rbWFya0luZm8pID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IENyZWF0ZUJvb2ttYXJrKHtcbiAgICAgICAgICAuLi5ib29rbWFya0luZm8sXG4gICAgICAgICAgbmFtZTogc2VsZWN0aW9uLmxlbmd0aCA+IDAgPyBzZWxlY3Rpb24uc3Vic3RyKDAsIDMwKSA6ICduZXcgYm9va21hcmsnLFxuICAgICAgICAgIGlkOiB1dWlkKCksXG4gICAgICAgICAgcGFnZU51bWJlcjogdGhpcy5oaWdobGlnaHRQYWdlIC0gMSxcbiAgICAgICAgICB4Q29vcmRpbmF0ZTogcmVjdGFuZ2xlLngsXG4gICAgICAgICAgeUNvb3JkaW5hdGU6IHJlY3RhbmdsZS55XG4gICAgICAgIH0gYXMgYW55KSk7XG4gICAgICAgIHRoaXMudG9vbGJhckV2ZW50cy50b2dnbGVTaWRlQmFyKHRydWUpO1xuICAgICAgICB0aGlzLnRvb2xiYXJFdmVudHMudG9nZ2xlU2lkZUJhclZpZXcoZmFsc2UpO1xuICAgICAgICB0aGlzLmhpZ2hsaWdodFNlcnZpY2UucmVzZXRIaWdobGlnaHQoKTtcbiAgICAgICAgdGhpcy5yZWN0YW5nbGVzID0gdW5kZWZpbmVkO1xuXG4gICAgICB9KTtcbiAgfVxuXG4gIHNhdmVBbm5vdGF0aW9uKHsgcmVjdGFuZ2xlcywgcGFnZSB9OiB7IHJlY3RhbmdsZXM6IFJlY3RhbmdsZVtdLCBwYWdlOiBhbnkgfSkge1xuICAgIHRoaXMuaGlnaGxpZ2h0U2VydmljZS5zYXZlQW5ub3RhdGlvbihyZWN0YW5nbGVzLCBwYWdlKTtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuZHJhd01vZGVTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicGFnZUNvbnRhaW5lclwiPlxuICA8ZGl2ICAqbmdGb3I9XCJsZXQgcGFnZSBvZiBwYWdlczsgIGluZGV4IGFzIGlcIlxuICAgICAgIGNsYXNzPVwicGFnZUNvbnRhaW5lcl9fcGFnZVwiXG4gICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICd3aWR0aC5weCc6IHBhZ2Uuc3R5bGVzLndpZHRoLFxuICAgICAgICdoZWlnaHQucHgnOiBwYWdlLnN0eWxlcy5oZWlnaHRcbiAgICAgICB9XCJcbiAgICAgICBbbmdDbGFzc109XCJ7ICdwYWdlQ29udGFpbmVyX19wYWdlLS1kcmF3JyA6IGRyYXdNb2RlIH1cIj5cbiAgICA8bXYtYm94LWhpZ2hsaWdodC1jcmVhdGVcbiAgICAgIFtwYWdlXT1cImkgKyAxXCJcbiAgICAgIFtwYWdlSGVpZ2h0XT1cInBhZ2Uuc3R5bGVzLmhlaWdodFwiXG4gICAgICBbcGFnZVdpZHRoXT1cInBhZ2Uuc3R5bGVzLndpZHRoXCJcbiAgICAgIFtyb3RhdGVdPVwicm90YXRlXCJcbiAgICAgIFt6b29tXT1cInpvb21cIlxuICAgICAgKHNhdmVTZWxlY3Rpb24pPVwic2F2ZUFubm90YXRpb24oJGV2ZW50KVwiPlxuICAgIDwvbXYtYm94LWhpZ2hsaWdodC1jcmVhdGU+XG4gICAgPG12LWN0eC10b29sYmFyICpuZ0lmPVwicmVjdGFuZ2xlcyAmJiBoaWdobGlnaHRQYWdlID09PSAoaSArIDEpXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlY3RhbmdsZXNdPVwicmVjdGFuZ2xlc1wiXG4gICAgICAgICAgICAgICAgICAgIFtjYW5Cb29rbWFya109XCJ0cnVlXCIgW2NhbkhpZ2hsaWdodF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3pvb21dPVwiem9vbVwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3RhdGVdPVwicm90YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3BhZ2VIZWlnaHRdPVwicGFnZS5zdHlsZXMuaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgW3BhZ2VXaWR0aF09XCJwYWdlLnN0eWxlcy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgIChjcmVhdGVCb29rbWFya0V2ZW50KT1cImNyZWF0ZUJvb2ttYXJrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY3JlYXRlSGlnaGxpZ2h0RXZlbnQpPVwiY3JlYXRlSGlnaGxpZ2h0KClcIj5cbiAgICA8L212LWN0eC10b29sYmFyPlxuICAgIDxkaXYgY2xhc3M9XCJwYWdlQ29udGFpbmVyX19wYWdlLWl0ZW1cIj5cbiAgICAgIDxtdi1hbm5vdGF0aW9uLXNldCAqbmdJZj1cIihhbm5vUGFnZXMkIHwgYXN5bmMpIGFzIGFubm9QYWdlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3pvb21dPVwiem9vbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3JvdGF0ZV09XCJyb3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlSGVpZ2h0XT1cInBhZ2Uuc3R5bGVzLmhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VXaWR0aF09XCJwYWdlLnN0eWxlcy53aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VdPVwiaVwiIFthbm5vdGF0aW9uc109XCJhbm5vUGFnZXNbaSArIDFdXCI+PC9tdi1hbm5vdGF0aW9uLXNldD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==