@hmcts/media-viewer 2.8.2 → 2.9.2

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 (565) hide show
  1. package/README.md +0 -1
  2. package/assets/images/icon-page.svg +52 -0
  3. package/assets/sass/comment.scss +1 -1
  4. package/assets/sass/outline-attachment.scss +6 -1
  5. package/assets/sass/participants-list.scss +1 -1
  6. package/assets/sass/rectangle.scss +1 -4
  7. package/assets/sass/toolbar/main-toolbar.scss +8 -8
  8. package/assets/sass/toolbar/redaction-toolbar.scss +10 -0
  9. package/bundles/hmcts-media-viewer.umd.js +3392 -10778
  10. package/bundles/hmcts-media-viewer.umd.js.map +1 -1
  11. package/bundles/hmcts-media-viewer.umd.min.js +1 -16
  12. package/bundles/hmcts-media-viewer.umd.min.js.map +1 -1
  13. package/esm2015/hmcts-media-viewer.js +20 -24
  14. package/esm2015/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.js +24 -103
  15. package/esm2015/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.js +14 -111
  16. package/esm2015/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.js +4 -49
  17. package/esm2015/lib/annotations/annotation-set/annotation-set.component.js +2 -51
  18. package/esm2015/lib/annotations/annotation-set/annotation-set.model.js +2 -15
  19. package/esm2015/lib/annotations/annotation-set/annotation-view/annotation-view.component.js +4 -74
  20. package/esm2015/lib/annotations/annotation-set/annotation-view/annotation.model.js +2 -29
  21. package/esm2015/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.js +5 -114
  22. package/esm2015/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.js +2 -21
  23. package/esm2015/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.js +8 -85
  24. package/esm2015/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.js +9 -105
  25. package/esm2015/lib/annotations/annotations.module.js +1 -5
  26. package/esm2015/lib/annotations/comment-set/comment/comment.component.js +4 -152
  27. package/esm2015/lib/annotations/comment-set/comment/comment.model.js +2 -27
  28. package/esm2015/lib/annotations/comment-set/comment/comment.service.js +3 -53
  29. package/esm2015/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.js +1 -37
  30. package/esm2015/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.js +1 -25
  31. package/esm2015/lib/annotations/comment-set/comment-navigate/comments-navigate.component.js +5 -63
  32. package/esm2015/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.js +10 -76
  33. package/esm2015/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.js +5 -53
  34. package/esm2015/lib/annotations/comment-set/comment-set-header/comment-set-header.component.js +6 -63
  35. package/esm2015/lib/annotations/comment-set/comment-set-render.service.js +5 -73
  36. package/esm2015/lib/annotations/comment-set/comment-set.component.js +11 -154
  37. package/esm2015/lib/annotations/comments-summary/comments-summary.component.js +8 -111
  38. package/esm2015/lib/annotations/models/api-persisted.model.js +2 -25
  39. package/esm2015/lib/annotations/models/event-select.model.js +2 -17
  40. package/esm2015/lib/annotations/models/tags.model.js +2 -19
  41. package/esm2015/lib/annotations/models/user.model.js +2 -17
  42. package/esm2015/lib/annotations/pipes/date/date.pipe.js +1 -12
  43. package/esm2015/lib/annotations/pipes/filter/filter.pipe.js +3 -17
  44. package/esm2015/lib/annotations/pipes/unsnake/unsnake.pipe.js +1 -9
  45. package/esm2015/lib/annotations/services/annotation-api/annotation-api.service.js +6 -93
  46. package/esm2015/lib/annotations/services/bookmarks-api/bookmarks-api.service.js +6 -69
  47. package/esm2015/lib/annotations/services/tags/tags.services.js +6 -54
  48. package/esm2015/lib/annotations/tags/tags.component.js +4 -50
  49. package/esm2015/lib/bookmark/components/bookmark-icons.component.js +2 -29
  50. package/esm2015/lib/icp/confirm-exit/confirm-action-dialog.component.js +2 -22
  51. package/esm2015/lib/icp/icp-follower.service.js +4 -63
  52. package/esm2015/lib/icp/icp-presenter.service.js +6 -69
  53. package/esm2015/lib/icp/icp-session-api.service.js +2 -26
  54. package/esm2015/lib/icp/icp-update.service.js +18 -92
  55. package/esm2015/lib/icp/icp.events.js +15 -0
  56. package/esm2015/lib/icp/icp.interfaces.js +2 -51
  57. package/esm2015/lib/icp/icp.service.js +18 -155
  58. package/esm2015/lib/icp/participants-list/participants-list.component.js +3 -43
  59. package/esm2015/lib/icp/socket.service.js +92 -86
  60. package/esm2015/lib/media-viewer.component.js +24 -196
  61. package/esm2015/lib/media-viewer.module.js +3 -7
  62. package/esm2015/lib/print.service.js +2 -18
  63. package/esm2015/lib/redaction/components/redaction.component.js +13 -127
  64. package/esm2015/lib/redaction/services/redaction-api.service.js +6 -75
  65. package/esm2015/lib/redaction/services/redaction.model.js +2 -19
  66. package/esm2015/lib/shared/gov-uk-date/gov-uk-date.component.js +2 -14
  67. package/esm2015/lib/shared/gov-uk-error-message/gov-uk-error-message.component.js +3 -14
  68. package/esm2015/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.js +2 -17
  69. package/esm2015/lib/shared/gov-uk-label/gov-uk-label.component.js +3 -12
  70. package/esm2015/lib/shared/shared.module.js +1 -5
  71. package/esm2015/lib/shared/util/helpers/html-templates.helper.js +1 -10
  72. package/esm2015/lib/shared/util/services/number.helper.service.js +4 -14
  73. package/esm2015/lib/store/actions/annotation.actions.js +1 -140
  74. package/esm2015/lib/store/actions/bookmark.actions.js +1 -150
  75. package/esm2015/lib/store/actions/document.actions.js +1 -130
  76. package/esm2015/lib/store/actions/icp.actions.js +1 -80
  77. package/esm2015/lib/store/actions/redaction.actions.js +1 -155
  78. package/esm2015/lib/store/actions/tag.actions.js +1 -30
  79. package/esm2015/lib/store/bookmarks-store-utils.js +17 -69
  80. package/esm2015/lib/store/effects/annotation.effects.js +16 -90
  81. package/esm2015/lib/store/effects/bookmarks.effects.js +12 -127
  82. package/esm2015/lib/store/effects/document.effects.js +16 -97
  83. package/esm2015/lib/store/effects/icp.effects.js +5 -63
  84. package/esm2015/lib/store/effects/index.js +1 -6
  85. package/esm2015/lib/store/effects/redaction.effects.js +26 -137
  86. package/esm2015/lib/store/models/bookmarks.interface.js +2 -57
  87. package/esm2015/lib/store/models/filters.interface.js +2 -17
  88. package/esm2015/lib/store/reducers/annotations.reducer.js +14 -129
  89. package/esm2015/lib/store/reducers/bookmarks.reducer.js +12 -99
  90. package/esm2015/lib/store/reducers/document.reducer.js +10 -129
  91. package/esm2015/lib/store/reducers/icp.reducer.js +6 -47
  92. package/esm2015/lib/store/reducers/redaction.reducer.js +7 -73
  93. package/esm2015/lib/store/reducers/reducers.js +7 -31
  94. package/esm2015/lib/store/reducers/tags.reducer.js +12 -102
  95. package/esm2015/lib/store/selectors/annotation.selectors.js +29 -118
  96. package/esm2015/lib/store/selectors/bookmark.selectors.js +12 -51
  97. package/esm2015/lib/store/selectors/document.selectors.js +5 -26
  98. package/esm2015/lib/store/selectors/icp.selectors.js +9 -38
  99. package/esm2015/lib/store/selectors/redaction.selectors.js +10 -45
  100. package/esm2015/lib/store/selectors/tag.selectors.js +6 -28
  101. package/esm2015/lib/store/store-utils.js +26 -156
  102. package/esm2015/lib/toolbar/icp-event.service.js +13 -48
  103. package/esm2015/lib/toolbar/icp-toolbar/icp-toolbar.component.js +4 -56
  104. package/esm2015/lib/toolbar/main-toolbar/main-toolbar.component.js +10 -177
  105. package/esm2015/lib/toolbar/redaction-toolbar/redaction-toolbar.component.js +9 -59
  106. package/esm2015/lib/toolbar/search-bar/search-bar.component.js +11 -85
  107. package/esm2015/lib/toolbar/toolbar-button-visibility.service.js +2 -46
  108. package/esm2015/lib/toolbar/toolbar-event.service.js +17 -174
  109. package/esm2015/lib/toolbar/toolbar.module.js +1 -5
  110. package/esm2015/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.js +5 -75
  111. package/esm2015/lib/viewers/convertible-content-viewer/document-conversion-api.service.js +3 -34
  112. package/esm2015/lib/viewers/grab-n-drag.directive.js +1 -38
  113. package/esm2015/lib/viewers/image-viewer/image-viewer.component.js +29 -196
  114. package/esm2015/lib/viewers/multimedia-player/multimedia-player.component.js +3 -55
  115. package/esm2015/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.js +61 -240
  116. package/esm2015/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.js +2 -40
  117. package/esm2015/lib/viewers/pdf-viewer/pdf-viewer.component.js +34 -302
  118. package/esm2015/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.js +12 -107
  119. package/esm2015/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.js +2 -39
  120. package/esm2015/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.js +16 -25
  121. package/esm2015/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.js +2 -31
  122. package/esm2015/lib/viewers/pdf-viewer/side-bar/side-bar.component.js +16 -73
  123. package/esm2015/lib/viewers/rotation-persist/rotation-api.service.js +2 -35
  124. package/esm2015/lib/viewers/rotation-persist/rotation-persist.directive.js +8 -87
  125. package/esm2015/lib/viewers/rotation-persist/rotation.model.js +2 -15
  126. package/esm2015/lib/viewers/unsupported-viewer/unsupported-viewer.component.js +4 -60
  127. package/esm2015/lib/viewers/viewer-event.service.js +2 -41
  128. package/esm2015/lib/viewers/viewer-exception.model.js +7 -32
  129. package/esm2015/lib/viewers/viewer-util.service.js +2 -20
  130. package/esm2015/public_api.js +28 -32
  131. package/fesm2015/hmcts-media-viewer.js +1566 -8060
  132. package/fesm2015/hmcts-media-viewer.js.map +1 -1
  133. package/hmcts-media-viewer-v2.9.2.tgz +0 -0
  134. package/hmcts-media-viewer.d.ts +19 -18
  135. package/hmcts-media-viewer.d.ts.map +1 -0
  136. package/hmcts-media-viewer.metadata.json +1 -1
  137. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +7 -3
  138. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts.map +1 -0
  139. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.ngfactory.d.ts.map +1 -0
  140. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts +1 -0
  141. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts.map +1 -0
  142. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.ngfactory.d.ts.map +1 -0
  143. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts +1 -0
  144. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts.map +1 -0
  145. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.ngfactory.d.ts.map +1 -0
  146. package/lib/annotations/annotation-set/annotation-set.component.d.ts +1 -0
  147. package/lib/annotations/annotation-set/annotation-set.component.d.ts.map +1 -0
  148. package/lib/annotations/annotation-set/annotation-set.component.ngfactory.d.ts.map +1 -0
  149. package/lib/annotations/annotation-set/annotation-set.model.d.ts +1 -0
  150. package/lib/annotations/annotation-set/annotation-set.model.d.ts.map +1 -0
  151. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +4 -3
  152. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts.map +1 -0
  153. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.ngfactory.d.ts.map +1 -0
  154. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts +1 -0
  155. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts.map +1 -0
  156. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +5 -2
  157. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts.map +1 -0
  158. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.ngfactory.d.ts.map +1 -0
  159. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts +1 -0
  160. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts.map +1 -0
  161. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +3 -1
  162. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts.map +1 -0
  163. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.ngfactory.d.ts.map +1 -0
  164. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +1 -0
  165. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts.map +1 -0
  166. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.ngfactory.d.ts.map +1 -0
  167. package/lib/annotations/annotations.module.d.ts +1 -0
  168. package/lib/annotations/annotations.module.d.ts.map +1 -0
  169. package/lib/annotations/annotations.module.ngfactory.d.ts.map +1 -0
  170. package/lib/annotations/comment-set/comment/comment.component.d.ts +7 -5
  171. package/lib/annotations/comment-set/comment/comment.component.d.ts.map +1 -0
  172. package/lib/annotations/comment-set/comment/comment.component.ngfactory.d.ts.map +1 -0
  173. package/lib/annotations/comment-set/comment/comment.model.d.ts +1 -0
  174. package/lib/annotations/comment-set/comment/comment.model.d.ts.map +1 -0
  175. package/lib/annotations/comment-set/comment/comment.service.d.ts +1 -0
  176. package/lib/annotations/comment-set/comment/comment.service.d.ts.map +1 -0
  177. package/lib/annotations/comment-set/comment/comment.service.ngfactory.d.ts.map +1 -0
  178. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +1 -0
  179. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts.map +1 -0
  180. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.ngfactory.d.ts.map +1 -0
  181. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts +1 -0
  182. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts.map +1 -0
  183. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.ngfactory.d.ts.map +1 -0
  184. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +1 -0
  185. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts.map +1 -0
  186. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.ngfactory.d.ts.map +1 -0
  187. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts +1 -0
  188. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts.map +1 -0
  189. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.ngfactory.d.ts.map +1 -0
  190. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +1 -0
  191. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts.map +1 -0
  192. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.ngfactory.d.ts.map +1 -0
  193. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +1 -0
  194. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts.map +1 -0
  195. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.ngfactory.d.ts.map +1 -0
  196. package/lib/annotations/comment-set/comment-set-render.service.d.ts +1 -0
  197. package/lib/annotations/comment-set/comment-set-render.service.d.ts.map +1 -0
  198. package/lib/annotations/comment-set/comment-set-render.service.ngfactory.d.ts.map +1 -0
  199. package/lib/annotations/comment-set/comment-set.component.d.ts +1 -0
  200. package/lib/annotations/comment-set/comment-set.component.d.ts.map +1 -0
  201. package/lib/annotations/comment-set/comment-set.component.ngfactory.d.ts.map +1 -0
  202. package/lib/annotations/comments-summary/comments-summary.component.d.ts +1 -1
  203. package/lib/annotations/comments-summary/comments-summary.component.d.ts.map +1 -0
  204. package/lib/annotations/comments-summary/comments-summary.component.ngfactory.d.ts.map +1 -0
  205. package/lib/annotations/models/api-persisted.model.d.ts +1 -0
  206. package/lib/annotations/models/api-persisted.model.d.ts.map +1 -0
  207. package/lib/annotations/models/event-select.model.d.ts +1 -0
  208. package/lib/annotations/models/event-select.model.d.ts.map +1 -0
  209. package/lib/annotations/models/tags.model.d.ts +1 -0
  210. package/lib/annotations/models/tags.model.d.ts.map +1 -0
  211. package/lib/annotations/models/user.model.d.ts +1 -0
  212. package/lib/annotations/models/user.model.d.ts.map +1 -0
  213. package/lib/annotations/pipes/date/date.pipe.d.ts +2 -1
  214. package/lib/annotations/pipes/date/date.pipe.d.ts.map +1 -0
  215. package/lib/annotations/pipes/date/date.pipe.ngfactory.d.ts.map +1 -0
  216. package/lib/annotations/pipes/filter/filter.pipe.d.ts +1 -0
  217. package/lib/annotations/pipes/filter/filter.pipe.d.ts.map +1 -0
  218. package/lib/annotations/pipes/filter/filter.pipe.ngfactory.d.ts.map +1 -0
  219. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts +1 -0
  220. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts.map +1 -0
  221. package/lib/annotations/pipes/unsnake/unsnake.pipe.ngfactory.d.ts.map +1 -0
  222. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts +3 -2
  223. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts.map +1 -0
  224. package/lib/annotations/services/annotation-api/annotation-api.service.ngfactory.d.ts.map +1 -0
  225. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts +1 -0
  226. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts.map +1 -0
  227. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.ngfactory.d.ts.map +1 -0
  228. package/lib/annotations/services/tags/tags.services.d.ts +1 -0
  229. package/lib/annotations/services/tags/tags.services.d.ts.map +1 -0
  230. package/lib/annotations/services/tags/tags.services.ngfactory.d.ts.map +1 -0
  231. package/lib/annotations/tags/tags.component.d.ts +3 -2
  232. package/lib/annotations/tags/tags.component.d.ts.map +1 -0
  233. package/lib/annotations/tags/tags.component.ngfactory.d.ts.map +1 -0
  234. package/lib/bookmark/components/bookmark-icons.component.d.ts +1 -0
  235. package/lib/bookmark/components/bookmark-icons.component.d.ts.map +1 -0
  236. package/lib/bookmark/components/bookmark-icons.component.ngfactory.d.ts.map +1 -0
  237. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts +1 -0
  238. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts.map +1 -0
  239. package/lib/icp/confirm-exit/confirm-action-dialog.component.ngfactory.d.ts.map +1 -0
  240. package/lib/icp/icp-follower.service.d.ts +1 -0
  241. package/lib/icp/icp-follower.service.d.ts.map +1 -0
  242. package/lib/icp/icp-follower.service.ngfactory.d.ts.map +1 -0
  243. package/lib/icp/icp-presenter.service.d.ts +1 -0
  244. package/lib/icp/icp-presenter.service.d.ts.map +1 -0
  245. package/lib/icp/icp-presenter.service.ngfactory.d.ts.map +1 -0
  246. package/lib/icp/icp-session-api.service.d.ts +1 -0
  247. package/lib/icp/icp-session-api.service.d.ts.map +1 -0
  248. package/lib/icp/icp-session-api.service.ngfactory.d.ts.map +1 -0
  249. package/lib/icp/icp-update.service.d.ts +1 -9
  250. package/lib/icp/icp-update.service.d.ts.map +1 -0
  251. package/lib/icp/icp-update.service.ngfactory.d.ts.map +1 -0
  252. package/lib/icp/icp.events.d.ts +14 -0
  253. package/lib/icp/icp.events.d.ts.map +1 -0
  254. package/lib/icp/icp.interfaces.d.ts +2 -0
  255. package/lib/icp/icp.interfaces.d.ts.map +1 -0
  256. package/lib/icp/icp.service.d.ts +1 -0
  257. package/lib/icp/icp.service.d.ts.map +1 -0
  258. package/lib/icp/icp.service.ngfactory.d.ts.map +1 -0
  259. package/lib/icp/participants-list/participants-list.component.d.ts +1 -0
  260. package/lib/icp/participants-list/participants-list.component.d.ts.map +1 -0
  261. package/lib/icp/participants-list/participants-list.component.ngfactory.d.ts.map +1 -0
  262. package/lib/icp/socket.service.d.ts +14 -4
  263. package/lib/icp/socket.service.d.ts.map +1 -0
  264. package/lib/icp/socket.service.ngfactory.d.ts.map +1 -0
  265. package/lib/media-viewer.component.d.ts +1 -0
  266. package/lib/media-viewer.component.d.ts.map +1 -0
  267. package/lib/media-viewer.component.ngfactory.d.ts.map +1 -0
  268. package/lib/media-viewer.module.d.ts +1 -0
  269. package/lib/media-viewer.module.d.ts.map +1 -0
  270. package/lib/media-viewer.module.ngfactory.d.ts.map +1 -0
  271. package/lib/print.service.d.ts +1 -0
  272. package/lib/print.service.d.ts.map +1 -0
  273. package/lib/print.service.ngfactory.d.ts.map +1 -0
  274. package/lib/redaction/components/redaction.component.d.ts +1 -0
  275. package/lib/redaction/components/redaction.component.d.ts.map +1 -0
  276. package/lib/redaction/components/redaction.component.ngfactory.d.ts.map +1 -0
  277. package/lib/redaction/services/redaction-api.service.d.ts +1 -0
  278. package/lib/redaction/services/redaction-api.service.d.ts.map +1 -0
  279. package/lib/redaction/services/redaction-api.service.ngfactory.d.ts.map +1 -0
  280. package/lib/redaction/services/redaction.model.d.ts +1 -0
  281. package/lib/redaction/services/redaction.model.d.ts.map +1 -0
  282. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +1 -0
  283. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts.map +1 -0
  284. package/lib/shared/gov-uk-date/gov-uk-date.component.ngfactory.d.ts.map +1 -0
  285. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +1 -0
  286. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts.map +1 -0
  287. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.ngfactory.d.ts.map +1 -0
  288. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +1 -0
  289. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts.map +1 -0
  290. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.ngfactory.d.ts.map +1 -0
  291. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +1 -0
  292. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts.map +1 -0
  293. package/lib/shared/gov-uk-label/gov-uk-label.component.ngfactory.d.ts.map +1 -0
  294. package/lib/shared/shared.module.d.ts +1 -0
  295. package/lib/shared/shared.module.d.ts.map +1 -0
  296. package/lib/shared/shared.module.ngfactory.d.ts.map +1 -0
  297. package/lib/shared/util/helpers/html-templates.helper.d.ts +1 -0
  298. package/lib/shared/util/helpers/html-templates.helper.d.ts.map +1 -0
  299. package/lib/shared/util/services/number.helper.service.d.ts +1 -0
  300. package/lib/shared/util/services/number.helper.service.d.ts.map +1 -0
  301. package/lib/shared/util/services/number.helper.service.ngfactory.d.ts.map +1 -0
  302. package/lib/store/actions/annotation.actions.d.ts +1 -0
  303. package/lib/store/actions/annotation.actions.d.ts.map +1 -0
  304. package/lib/store/actions/bookmark.actions.d.ts +1 -0
  305. package/lib/store/actions/bookmark.actions.d.ts.map +1 -0
  306. package/lib/store/actions/document.actions.d.ts +1 -0
  307. package/lib/store/actions/document.actions.d.ts.map +1 -0
  308. package/lib/store/actions/icp.actions.d.ts +1 -0
  309. package/lib/store/actions/icp.actions.d.ts.map +1 -0
  310. package/lib/store/actions/redaction.actions.d.ts +1 -0
  311. package/lib/store/actions/redaction.actions.d.ts.map +1 -0
  312. package/lib/store/actions/tag.actions.d.ts +1 -0
  313. package/lib/store/actions/tag.actions.d.ts.map +1 -0
  314. package/lib/store/bookmarks-store-utils.d.ts +1 -0
  315. package/lib/store/bookmarks-store-utils.d.ts.map +1 -0
  316. package/lib/store/effects/annotation.effects.d.ts +1 -0
  317. package/lib/store/effects/annotation.effects.d.ts.map +1 -0
  318. package/lib/store/effects/annotation.effects.ngfactory.d.ts.map +1 -0
  319. package/lib/store/effects/bookmarks.effects.d.ts +1 -0
  320. package/lib/store/effects/bookmarks.effects.d.ts.map +1 -0
  321. package/lib/store/effects/bookmarks.effects.ngfactory.d.ts.map +1 -0
  322. package/lib/store/effects/document.effects.d.ts +1 -0
  323. package/lib/store/effects/document.effects.d.ts.map +1 -0
  324. package/lib/store/effects/document.effects.ngfactory.d.ts.map +1 -0
  325. package/lib/store/effects/icp.effects.d.ts +1 -0
  326. package/lib/store/effects/icp.effects.d.ts.map +1 -0
  327. package/lib/store/effects/icp.effects.ngfactory.d.ts.map +1 -0
  328. package/lib/store/effects/index.d.ts +1 -0
  329. package/lib/store/effects/index.d.ts.map +1 -0
  330. package/lib/store/effects/redaction.effects.d.ts +1 -0
  331. package/lib/store/effects/redaction.effects.d.ts.map +1 -0
  332. package/lib/store/effects/redaction.effects.ngfactory.d.ts.map +1 -0
  333. package/lib/store/models/bookmarks.interface.d.ts +1 -0
  334. package/lib/store/models/bookmarks.interface.d.ts.map +1 -0
  335. package/lib/store/models/filters.interface.d.ts +1 -0
  336. package/lib/store/models/filters.interface.d.ts.map +1 -0
  337. package/lib/store/reducers/annotations.reducer.d.ts +1 -0
  338. package/lib/store/reducers/annotations.reducer.d.ts.map +1 -0
  339. package/lib/store/reducers/bookmarks.reducer.d.ts +1 -0
  340. package/lib/store/reducers/bookmarks.reducer.d.ts.map +1 -0
  341. package/lib/store/reducers/document.reducer.d.ts +1 -0
  342. package/lib/store/reducers/document.reducer.d.ts.map +1 -0
  343. package/lib/store/reducers/icp.reducer.d.ts +1 -0
  344. package/lib/store/reducers/icp.reducer.d.ts.map +1 -0
  345. package/lib/store/reducers/redaction.reducer.d.ts +1 -0
  346. package/lib/store/reducers/redaction.reducer.d.ts.map +1 -0
  347. package/lib/store/reducers/reducers.d.ts +2 -1
  348. package/lib/store/reducers/reducers.d.ts.map +1 -0
  349. package/lib/store/reducers/tags.reducer.d.ts +1 -0
  350. package/lib/store/reducers/tags.reducer.d.ts.map +1 -0
  351. package/lib/store/selectors/annotation.selectors.d.ts +54 -15
  352. package/lib/store/selectors/annotation.selectors.d.ts.map +1 -0
  353. package/lib/store/selectors/bookmark.selectors.d.ts +18 -7
  354. package/lib/store/selectors/bookmark.selectors.d.ts.map +1 -0
  355. package/lib/store/selectors/document.selectors.d.ts +15 -9
  356. package/lib/store/selectors/document.selectors.d.ts.map +1 -0
  357. package/lib/store/selectors/icp.selectors.d.ts +9 -8
  358. package/lib/store/selectors/icp.selectors.d.ts.map +1 -0
  359. package/lib/store/selectors/redaction.selectors.d.ts +18 -7
  360. package/lib/store/selectors/redaction.selectors.d.ts.map +1 -0
  361. package/lib/store/selectors/tag.selectors.d.ts +16 -6
  362. package/lib/store/selectors/tag.selectors.d.ts.map +1 -0
  363. package/lib/store/store-utils.d.ts +1 -0
  364. package/lib/store/store-utils.d.ts.map +1 -0
  365. package/lib/toolbar/icp-event.service.d.ts +1 -0
  366. package/lib/toolbar/icp-event.service.d.ts.map +1 -0
  367. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts +1 -0
  368. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts.map +1 -0
  369. package/lib/toolbar/icp-toolbar/icp-toolbar.component.ngfactory.d.ts.map +1 -0
  370. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +1 -0
  371. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts.map +1 -0
  372. package/lib/toolbar/main-toolbar/main-toolbar.component.ngfactory.d.ts.map +1 -0
  373. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +2 -0
  374. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts.map +1 -0
  375. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.ngfactory.d.ts.map +1 -0
  376. package/lib/toolbar/search-bar/search-bar.component.d.ts +2 -0
  377. package/lib/toolbar/search-bar/search-bar.component.d.ts.map +1 -0
  378. package/lib/toolbar/search-bar/search-bar.component.ngfactory.d.ts.map +1 -0
  379. package/lib/toolbar/toolbar-button-visibility.service.d.ts +1 -0
  380. package/lib/toolbar/toolbar-button-visibility.service.d.ts.map +1 -0
  381. package/lib/toolbar/toolbar-button-visibility.service.ngfactory.d.ts.map +1 -0
  382. package/lib/toolbar/toolbar-event.service.d.ts +3 -0
  383. package/lib/toolbar/toolbar-event.service.d.ts.map +1 -0
  384. package/lib/toolbar/toolbar-event.service.ngfactory.d.ts.map +1 -0
  385. package/lib/toolbar/toolbar.module.d.ts +1 -0
  386. package/lib/toolbar/toolbar.module.d.ts.map +1 -0
  387. package/lib/toolbar/toolbar.module.ngfactory.d.ts.map +1 -0
  388. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +1 -0
  389. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts.map +1 -0
  390. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.ngfactory.d.ts.map +1 -0
  391. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts +1 -0
  392. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts.map +1 -0
  393. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.ngfactory.d.ts.map +1 -0
  394. package/lib/viewers/grab-n-drag.directive.d.ts +1 -0
  395. package/lib/viewers/grab-n-drag.directive.d.ts.map +1 -0
  396. package/lib/viewers/grab-n-drag.directive.ngfactory.d.ts.map +1 -0
  397. package/lib/viewers/image-viewer/image-viewer.component.d.ts +5 -1
  398. package/lib/viewers/image-viewer/image-viewer.component.d.ts.map +1 -0
  399. package/lib/viewers/image-viewer/image-viewer.component.ngfactory.d.ts.map +1 -0
  400. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +1 -0
  401. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts.map +1 -0
  402. package/lib/viewers/multimedia-player/multimedia-player.component.ngfactory.d.ts.map +1 -0
  403. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts +5 -0
  404. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts.map +1 -0
  405. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts +1 -0
  406. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts.map +1 -0
  407. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.ngfactory.d.ts.map +1 -0
  408. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +6 -2
  409. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts.map +1 -0
  410. package/lib/viewers/pdf-viewer/pdf-viewer.component.ngfactory.d.ts.map +1 -0
  411. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +2 -1
  412. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts.map +1 -0
  413. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.ngfactory.d.ts.map +1 -0
  414. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts +1 -0
  415. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts.map +1 -0
  416. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +7 -0
  417. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts.map +1 -0
  418. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.ngfactory.d.ts.map +1 -0
  419. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts +3 -1
  420. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts.map +1 -0
  421. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +4 -0
  422. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts.map +1 -0
  423. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.ngfactory.d.ts.map +1 -0
  424. package/lib/viewers/rotation-persist/rotation-api.service.d.ts +1 -0
  425. package/lib/viewers/rotation-persist/rotation-api.service.d.ts.map +1 -0
  426. package/lib/viewers/rotation-persist/rotation-api.service.ngfactory.d.ts.map +1 -0
  427. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts +1 -0
  428. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts.map +1 -0
  429. package/lib/viewers/rotation-persist/rotation-persist.directive.ngfactory.d.ts.map +1 -0
  430. package/lib/viewers/rotation-persist/rotation.model.d.ts +1 -0
  431. package/lib/viewers/rotation-persist/rotation.model.d.ts.map +1 -0
  432. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +1 -0
  433. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts.map +1 -0
  434. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.ngfactory.d.ts.map +1 -0
  435. package/lib/viewers/viewer-event.service.d.ts +1 -0
  436. package/lib/viewers/viewer-event.service.d.ts.map +1 -0
  437. package/lib/viewers/viewer-event.service.ngfactory.d.ts.map +1 -0
  438. package/lib/viewers/viewer-exception.model.d.ts +1 -0
  439. package/lib/viewers/viewer-exception.model.d.ts.map +1 -0
  440. package/lib/viewers/viewer-util.service.d.ts +1 -0
  441. package/lib/viewers/viewer-util.service.d.ts.map +1 -0
  442. package/lib/viewers/viewer-util.service.ngfactory.d.ts.map +1 -0
  443. package/package.json +16 -17
  444. package/public_api.d.ts +1 -0
  445. package/public_api.d.ts.map +1 -0
  446. package/esm5/hmcts-media-viewer.js +0 -67
  447. package/esm5/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.js +0 -215
  448. package/esm5/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.js +0 -236
  449. package/esm5/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.js +0 -125
  450. package/esm5/lib/annotations/annotation-set/annotation-set.component.js +0 -109
  451. package/esm5/lib/annotations/annotation-set/annotation-set.model.js +0 -15
  452. package/esm5/lib/annotations/annotation-set/annotation-view/annotation-view.component.js +0 -177
  453. package/esm5/lib/annotations/annotation-set/annotation-view/annotation.model.js +0 -29
  454. package/esm5/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.js +0 -250
  455. package/esm5/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.js +0 -21
  456. package/esm5/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.js +0 -216
  457. package/esm5/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.js +0 -200
  458. package/esm5/lib/annotations/annotations.module.js +0 -109
  459. package/esm5/lib/annotations/comment-set/comment/comment.component.js +0 -353
  460. package/esm5/lib/annotations/comment-set/comment/comment.model.js +0 -27
  461. package/esm5/lib/annotations/comment-set/comment/comment.service.js +0 -125
  462. package/esm5/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.js +0 -98
  463. package/esm5/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.js +0 -63
  464. package/esm5/lib/annotations/comment-set/comment-navigate/comments-navigate.component.js +0 -174
  465. package/esm5/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.js +0 -145
  466. package/esm5/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.js +0 -117
  467. package/esm5/lib/annotations/comment-set/comment-set-header/comment-set-header.component.js +0 -131
  468. package/esm5/lib/annotations/comment-set/comment-set-render.service.js +0 -177
  469. package/esm5/lib/annotations/comment-set/comment-set.component.js +0 -295
  470. package/esm5/lib/annotations/comments-summary/comments-summary.component.js +0 -239
  471. package/esm5/lib/annotations/models/api-persisted.model.js +0 -25
  472. package/esm5/lib/annotations/models/event-select.model.js +0 -17
  473. package/esm5/lib/annotations/models/tags.model.js +0 -19
  474. package/esm5/lib/annotations/models/user.model.js +0 -17
  475. package/esm5/lib/annotations/pipes/date/date.pipe.js +0 -48
  476. package/esm5/lib/annotations/pipes/filter/filter.pipe.js +0 -52
  477. package/esm5/lib/annotations/pipes/unsnake/unsnake.pipe.js +0 -28
  478. package/esm5/lib/annotations/services/annotation-api/annotation-api.service.js +0 -188
  479. package/esm5/lib/annotations/services/bookmarks-api/bookmarks-api.service.js +0 -132
  480. package/esm5/lib/annotations/services/tags/tags.services.js +0 -102
  481. package/esm5/lib/annotations/tags/tags.component.js +0 -112
  482. package/esm5/lib/bookmark/components/bookmark-icons.component.js +0 -55
  483. package/esm5/lib/icp/confirm-exit/confirm-action-dialog.component.js +0 -50
  484. package/esm5/lib/icp/icp-follower.service.js +0 -135
  485. package/esm5/lib/icp/icp-presenter.service.js +0 -135
  486. package/esm5/lib/icp/icp-session-api.service.js +0 -49
  487. package/esm5/lib/icp/icp-update.service.js +0 -165
  488. package/esm5/lib/icp/icp.interfaces.js +0 -51
  489. package/esm5/lib/icp/icp.service.js +0 -261
  490. package/esm5/lib/icp/participants-list/participants-list.component.js +0 -77
  491. package/esm5/lib/icp/socket.service.js +0 -142
  492. package/esm5/lib/media-viewer.component.js +0 -424
  493. package/esm5/lib/media-viewer.module.js +0 -110
  494. package/esm5/lib/print.service.js +0 -53
  495. package/esm5/lib/redaction/components/redaction.component.js +0 -247
  496. package/esm5/lib/redaction/services/redaction-api.service.js +0 -133
  497. package/esm5/lib/redaction/services/redaction.model.js +0 -19
  498. package/esm5/lib/shared/gov-uk-date/gov-uk-date.component.js +0 -37
  499. package/esm5/lib/shared/gov-uk-error-message/gov-uk-error-message.component.js +0 -36
  500. package/esm5/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.js +0 -49
  501. package/esm5/lib/shared/gov-uk-label/gov-uk-label.component.js +0 -33
  502. package/esm5/lib/shared/shared.module.js +0 -42
  503. package/esm5/lib/shared/util/helpers/html-templates.helper.js +0 -36
  504. package/esm5/lib/shared/util/services/number.helper.service.js +0 -39
  505. package/esm5/lib/store/actions/annotation.actions.js +0 -226
  506. package/esm5/lib/store/actions/bookmark.actions.js +0 -242
  507. package/esm5/lib/store/actions/document.actions.js +0 -210
  508. package/esm5/lib/store/actions/icp.actions.js +0 -130
  509. package/esm5/lib/store/actions/redaction.actions.js +0 -255
  510. package/esm5/lib/store/actions/tag.actions.js +0 -50
  511. package/esm5/lib/store/bookmarks-store-utils.js +0 -110
  512. package/esm5/lib/store/effects/annotation.effects.js +0 -128
  513. package/esm5/lib/store/effects/bookmarks.effects.js +0 -193
  514. package/esm5/lib/store/effects/document.effects.js +0 -138
  515. package/esm5/lib/store/effects/icp.effects.js +0 -97
  516. package/esm5/lib/store/effects/index.js +0 -12
  517. package/esm5/lib/store/effects/redaction.effects.js +0 -190
  518. package/esm5/lib/store/models/bookmarks.interface.js +0 -57
  519. package/esm5/lib/store/models/filters.interface.js +0 -17
  520. package/esm5/lib/store/reducers/annotations.reducer.js +0 -231
  521. package/esm5/lib/store/reducers/bookmarks.reducer.js +0 -170
  522. package/esm5/lib/store/reducers/document.reducer.js +0 -222
  523. package/esm5/lib/store/reducers/icp.reducer.js +0 -83
  524. package/esm5/lib/store/reducers/redaction.reducer.js +0 -134
  525. package/esm5/lib/store/reducers/reducers.js +0 -47
  526. package/esm5/lib/store/reducers/tags.reducer.js +0 -159
  527. package/esm5/lib/store/selectors/annotation.selectors.js +0 -175
  528. package/esm5/lib/store/selectors/bookmark.selectors.js +0 -78
  529. package/esm5/lib/store/selectors/document.selectors.js +0 -37
  530. package/esm5/lib/store/selectors/icp.selectors.js +0 -47
  531. package/esm5/lib/store/selectors/redaction.selectors.js +0 -65
  532. package/esm5/lib/store/selectors/tag.selectors.js +0 -40
  533. package/esm5/lib/store/store-utils.js +0 -296
  534. package/esm5/lib/toolbar/icp-event.service.js +0 -65
  535. package/esm5/lib/toolbar/icp-toolbar/icp-toolbar.component.js +0 -112
  536. package/esm5/lib/toolbar/main-toolbar/main-toolbar.component.js +0 -408
  537. package/esm5/lib/toolbar/redaction-toolbar/redaction-toolbar.component.js +0 -130
  538. package/esm5/lib/toolbar/search-bar/search-bar.component.js +0 -226
  539. package/esm5/lib/toolbar/toolbar-button-visibility.service.js +0 -146
  540. package/esm5/lib/toolbar/toolbar-event.service.js +0 -416
  541. package/esm5/lib/toolbar/toolbar.module.js +0 -50
  542. package/esm5/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.js +0 -168
  543. package/esm5/lib/viewers/convertible-content-viewer/document-conversion-api.service.js +0 -57
  544. package/esm5/lib/viewers/grab-n-drag.directive.js +0 -98
  545. package/esm5/lib/viewers/image-viewer/image-viewer.component.js +0 -402
  546. package/esm5/lib/viewers/multimedia-player/multimedia-player.component.js +0 -125
  547. package/esm5/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.js +0 -446
  548. package/esm5/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.js +0 -87
  549. package/esm5/lib/viewers/pdf-viewer/pdf-viewer.component.js +0 -582
  550. package/esm5/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.js +0 -251
  551. package/esm5/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.js +0 -39
  552. package/esm5/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.js +0 -62
  553. package/esm5/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.js +0 -31
  554. package/esm5/lib/viewers/pdf-viewer/side-bar/side-bar.component.js +0 -146
  555. package/esm5/lib/viewers/rotation-persist/rotation-api.service.js +0 -68
  556. package/esm5/lib/viewers/rotation-persist/rotation-persist.directive.js +0 -163
  557. package/esm5/lib/viewers/rotation-persist/rotation.model.js +0 -15
  558. package/esm5/lib/viewers/unsupported-viewer/unsupported-viewer.component.js +0 -120
  559. package/esm5/lib/viewers/viewer-event.service.js +0 -86
  560. package/esm5/lib/viewers/viewer-exception.model.js +0 -36
  561. package/esm5/lib/viewers/viewer-util.service.js +0 -44
  562. package/esm5/public_api.js +0 -35
  563. package/fesm5/hmcts-media-viewer.js +0 -14160
  564. package/fesm5/hmcts-media-viewer.js.map +0 -1
  565. package/hmcts-media-viewer-v2.8.2.tgz +0 -0
@@ -1,95 +1,112 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
1
  import { Injectable } from '@angular/core';
6
- import { BehaviorSubject, Observable } from 'rxjs';
7
- import socketio from 'socket.io-client/dist/socket.io.js';
2
+ import { BehaviorSubject, of, Subject } from 'rxjs';
3
+ import { IcpEvents } from './icp.events';
8
4
  export class SocketService {
9
5
  constructor() {
10
6
  this.connected$ = new BehaviorSubject(false);
7
+ this.sessionJoined$ = new Subject();
8
+ this.presenterUpdated$ = new Subject();
9
+ this.clientDisconnected$ = new Subject();
10
+ this.participantUpdated$ = new Subject();
11
+ this.newParticipantJoined$ = new Subject();
12
+ this.screenUpdated$ = new Subject();
11
13
  }
12
- /**
13
- * @return {?}
14
- */
15
14
  ngOnDestroy() {
16
15
  this.subscription.unsubscribe();
17
16
  }
18
- /**
19
- * @return {?}
20
- */
21
- connect() {
22
- this.socket = this.getSocketClient();
23
- this.socket.on('connect', (/**
24
- * @return {?}
25
- */
26
- () => this.connected$.next(true)));
27
- this.socket.on('disconnect', (/**
28
- * @return {?}
29
- */
30
- () => this.connected$.next(false)));
17
+ connect(url) {
18
+ return this.getSocketClient(url).subscribe((socket) => {
19
+ socket.onopen = (event) => {
20
+ this.connected$.next(true);
21
+ };
22
+ socket.onmessage = (event) => {
23
+ console.log('onmessage');
24
+ const eventData = JSON.parse(event.data);
25
+ if (eventData.data && eventData.data.eventName) {
26
+ this.messageEventHandller(eventData.data.eventName, eventData.data.data);
27
+ }
28
+ };
29
+ socket.onerror = (event) => {
30
+ console.log('onerror');
31
+ };
32
+ socket.onclose = (event) => {
33
+ console.log('onclose');
34
+ };
35
+ });
36
+ }
37
+ connected() {
38
+ return this.connected$.asObservable();
31
39
  }
32
- /**
33
- * @param {?} session
34
- * @return {?}
35
- */
36
40
  join(session) {
37
- this.subscription = this.connected$.subscribe((/**
38
- * @param {?} connected
39
- * @return {?}
40
- */
41
- connected => {
42
- if (connected) {
43
- this.socket.emit('join', session);
44
- }
45
- }));
41
+ this.emit(IcpEvents.SESSION_JOIN, session);
46
42
  }
47
- /**
48
- * @param {?} session
49
- * @return {?}
50
- */
51
43
  leave(session) {
52
- this.socket.emit('leave', session);
44
+ this.emit(IcpEvents.SESSION_LEAVE, session);
53
45
  this.subscription.unsubscribe();
54
46
  }
55
- /**
56
- * @param {?} event
57
- * @param {?} data
58
- * @return {?}
59
- */
60
47
  emit(event, data) {
61
- this.socket.emit(event, data);
48
+ this.socket.send(JSON.stringify({
49
+ type: 'event',
50
+ event,
51
+ data
52
+ }));
62
53
  }
63
- /**
64
- * @param {?} event
65
- * @return {?}
66
- */
67
54
  listen(event) {
68
- return new Observable((/**
69
- * @param {?} observer
70
- * @return {?}
71
- */
72
- observer => {
73
- this.socket.on(event, (/**
74
- * @param {?} data
75
- * @return {?}
76
- */
77
- data => {
78
- observer.next(data);
79
- }));
80
- return (/**
81
- * @return {?}
82
- */
83
- () => this.socket.off(event));
84
- }));
55
+ switch (event) {
56
+ case IcpEvents.SESSION_JOINED: {
57
+ return this.sessionJoined$.asObservable();
58
+ }
59
+ case IcpEvents.PRESENTER_UPDATED: {
60
+ return this.presenterUpdated$.asObservable();
61
+ }
62
+ case IcpEvents.CLIENT_DISCONNECTED: {
63
+ return this.clientDisconnected$.asObservable();
64
+ }
65
+ case IcpEvents.PARTICIPANTS_UPDATED: {
66
+ return this.participantUpdated$.asObservable();
67
+ }
68
+ case IcpEvents.NEW_PARTICIPANT_JOINED: {
69
+ return this.newParticipantJoined$.asObservable();
70
+ }
71
+ case IcpEvents.SCREEN_UPDATED: {
72
+ return this.screenUpdated$.asObservable();
73
+ }
74
+ default: {
75
+ break;
76
+ }
77
+ }
85
78
  }
86
- /**
87
- * @return {?}
88
- */
89
- getSocketClient() {
90
- return socketio('/', {
91
- path: '/icp/socket.io', agent: true
92
- });
79
+ messageEventHandller(eventName, data) {
80
+ switch (eventName) {
81
+ case IcpEvents.SESSION_JOINED: {
82
+ this.sessionJoined$.next(data);
83
+ break;
84
+ }
85
+ case IcpEvents.PRESENTER_UPDATED: {
86
+ this.presenterUpdated$.next(data);
87
+ break;
88
+ }
89
+ case IcpEvents.CLIENT_DISCONNECTED: {
90
+ this.clientDisconnected$.next();
91
+ break;
92
+ }
93
+ case IcpEvents.PARTICIPANTS_UPDATED: {
94
+ this.participantUpdated$.next(data);
95
+ break;
96
+ }
97
+ case IcpEvents.NEW_PARTICIPANT_JOINED: {
98
+ this.newParticipantJoined$.next();
99
+ break;
100
+ }
101
+ case IcpEvents.SCREEN_UPDATED: {
102
+ this.screenUpdated$.next(data);
103
+ break;
104
+ }
105
+ }
106
+ }
107
+ getSocketClient(url) {
108
+ this.socket = new WebSocket(url, 'json.webpubsub.azure.v1');
109
+ return of(this.socket);
93
110
  }
94
111
  }
95
112
  SocketService.decorators = [
@@ -97,15 +114,4 @@ SocketService.decorators = [
97
114
  ];
98
115
  /** @nocollapse */
99
116
  SocketService.ctorParameters = () => [];
100
- if (false) {
101
- /**
102
- * @type {?}
103
- * @private
104
- */
105
- SocketService.prototype.socket;
106
- /** @type {?} */
107
- SocketService.prototype.subscription;
108
- /** @type {?} */
109
- SocketService.prototype.connected$;
110
- }
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaG1jdHMvbWVkaWEtdmlld2VyLyIsInNvdXJjZXMiOlsibGliL2ljcC9zb2NrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxRQUFRLE1BQU0sb0NBQW9DLENBQUM7QUFHMUQsTUFBTSxPQUFPLGFBQWE7SUFPeEI7UUFGQSxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFbEMsQ0FBQzs7OztJQUVoQixXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDOzs7O0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVM7OztRQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWTs7O1FBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQztJQUNsRSxDQUFDOzs7OztJQUVELElBQUksQ0FBQyxPQUFPO1FBQ1YsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVM7Ozs7UUFBQyxTQUFTLENBQUMsRUFBRTtZQUN4RCxJQUFJLFNBQVMsRUFBRTtnQkFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDbkM7UUFDSCxDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDOzs7Ozs7SUFFRCxJQUFJLENBQUMsS0FBYSxFQUFFLElBQVM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Ozs7O0lBRUQsTUFBTSxDQUFDLEtBQWE7UUFDbEIsT0FBTyxJQUFJLFVBQVU7Ozs7UUFBRSxRQUFRLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLOzs7O1lBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQzNCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsQ0FBQyxFQUFDLENBQUM7WUFDSDs7O1lBQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUM7UUFDdEMsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7O0lBRUQsZUFBZTtRQUNiLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLElBQUk7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBbERGLFVBQVU7Ozs7Ozs7OztJQUdULCtCQUFvQjs7SUFDcEIscUNBQTJCOztJQUUzQixtQ0FBaUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgc29ja2V0aW8gZnJvbSAnc29ja2V0LmlvLWNsaWVudC9kaXN0L3NvY2tldC5pby5qcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTb2NrZXRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcml2YXRlIHNvY2tldDogYW55O1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25uZWN0ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBjb25uZWN0KCkge1xuICAgIHRoaXMuc29ja2V0ID0gdGhpcy5nZXRTb2NrZXRDbGllbnQoKTtcbiAgICB0aGlzLnNvY2tldC5vbignY29ubmVjdCcsICgpID0+IHRoaXMuY29ubmVjdGVkJC5uZXh0KHRydWUpKTtcbiAgICB0aGlzLnNvY2tldC5vbignZGlzY29ubmVjdCcsICgpID0+IHRoaXMuY29ubmVjdGVkJC5uZXh0KGZhbHNlKSk7XG4gIH1cblxuICBqb2luKHNlc3Npb24pIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuY29ubmVjdGVkJC5zdWJzY3JpYmUoY29ubmVjdGVkID0+IHtcbiAgICAgIGlmIChjb25uZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5zb2NrZXQuZW1pdCgnam9pbicsIHNlc3Npb24pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbGVhdmUoc2Vzc2lvbikge1xuICAgIHRoaXMuc29ja2V0LmVtaXQoJ2xlYXZlJywgc2Vzc2lvbik7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGVtaXQoZXZlbnQ6IHN0cmluZywgZGF0YTogYW55KSB7XG4gICAgdGhpcy5zb2NrZXQuZW1pdChldmVudCwgZGF0YSk7XG4gIH1cblxuICBsaXN0ZW4oZXZlbnQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKCBvYnNlcnZlciA9PiB7XG4gICAgICB0aGlzLnNvY2tldC5vbihldmVudCwgZGF0YSA9PiB7XG4gICAgICAgIG9ic2VydmVyLm5leHQoZGF0YSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAoKSA9PiB0aGlzLnNvY2tldC5vZmYoZXZlbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0U29ja2V0Q2xpZW50KCkge1xuICAgIHJldHVybiBzb2NrZXRpbygnLycsIHtcbiAgICAgIHBhdGg6ICcvaWNwL3NvY2tldC5pbycsIGFnZW50OiB0cnVlXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9pY3Avc29ja2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSXpDLE1BQU0sT0FBTyxhQUFhO0lBWXhCO1FBUkEsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2pELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUMvQixzQkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDcEMsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNwQywwQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3RDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVmLENBQUM7SUFFakIsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFpQixFQUFFLEVBQUU7WUFFL0QsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO2dCQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUM7WUFFRixNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO2dCQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN6QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekMsSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUM5QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDMUU7WUFDSCxDQUFDLENBQUM7WUFFRixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7Z0JBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDO1lBRUYsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtnQkFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBTztRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQWEsRUFBRSxJQUFTO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDOUIsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLO1lBQ0wsSUFBSTtTQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFnQjtRQUNyQixRQUFRLEtBQUssRUFBRTtZQUNiLEtBQUssU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM3QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDM0M7WUFDRCxLQUFLLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUM5QztZQUNELEtBQUssU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQ2xDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ2hEO1lBQ0QsS0FBSyxTQUFTLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDbkMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDaEQ7WUFDRCxLQUFLLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2dCQUNyQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUNsRDtZQUNELEtBQUssU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM3QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDM0M7WUFDRCxPQUFPLENBQUMsQ0FBQztnQkFDUCxNQUFNO2FBQ1A7U0FDRjtJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxTQUFpQixFQUFFLElBQVM7UUFDL0MsUUFBUSxTQUFTLEVBQUU7WUFDakIsS0FBSyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixNQUFNO2FBQ1A7WUFDRCxLQUFLLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNO2FBQ1A7WUFDRCxLQUFLLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU07YUFDUDtZQUNELEtBQUssU0FBUyxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BDLE1BQU07YUFDUDtZQUNELEtBQUssU0FBUyxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsTUFBTTthQUNQO1lBQ0QsS0FBSyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixNQUFNO2FBQ1A7U0FDRjtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsR0FBVztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBQzVELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QixDQUFDOzs7WUEzSEYsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJY3BFdmVudHMgfSBmcm9tICcuL2ljcC5ldmVudHMnO1xuaW1wb3J0IHsgSWNwUGFydGljaXBhbnQgfSBmcm9tICcuL2ljcC5pbnRlcmZhY2VzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNvY2tldFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgc29ja2V0OiBXZWJTb2NrZXQ7XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBjb25uZWN0ZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHNlc3Npb25Kb2luZWQkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJlc2VudGVyVXBkYXRlZCQgPSBuZXcgU3ViamVjdCgpO1xuICBjbGllbnREaXNjb25uZWN0ZWQkID0gbmV3IFN1YmplY3QoKTtcbiAgcGFydGljaXBhbnRVcGRhdGVkJCA9IG5ldyBTdWJqZWN0KCk7XG4gIG5ld1BhcnRpY2lwYW50Sm9pbmVkJCA9IG5ldyBTdWJqZWN0KCk7XG4gIHNjcmVlblVwZGF0ZWQkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBjb25uZWN0KHVybDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U29ja2V0Q2xpZW50KHVybCkuc3Vic2NyaWJlKChzb2NrZXQ6IFdlYlNvY2tldCkgPT4ge1xuXG4gICAgICBzb2NrZXQub25vcGVuID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3RlZCQubmV4dCh0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIHNvY2tldC5vbm1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnb25tZXNzYWdlJyk7XG4gICAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgIGlmIChldmVudERhdGEuZGF0YSAmJiBldmVudERhdGEuZGF0YS5ldmVudE5hbWUpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VFdmVudEhhbmRsbGVyKGV2ZW50RGF0YS5kYXRhLmV2ZW50TmFtZSwgZXZlbnREYXRhLmRhdGEuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHNvY2tldC5vbmVycm9yID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnb25lcnJvcicpO1xuICAgICAgfTtcblxuICAgICAgc29ja2V0Lm9uY2xvc2UgPSAoZXZlbnQ6IENsb3NlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ29uY2xvc2UnKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBjb25uZWN0ZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGVkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGpvaW4oc2Vzc2lvbikge1xuICAgIHRoaXMuZW1pdChJY3BFdmVudHMuU0VTU0lPTl9KT0lOLCBzZXNzaW9uKTtcbiAgfVxuXG4gIGxlYXZlKHNlc3Npb24pIHtcbiAgICB0aGlzLmVtaXQoSWNwRXZlbnRzLlNFU1NJT05fTEVBVkUsIHNlc3Npb24pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBlbWl0KGV2ZW50OiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICAgIHRoaXMuc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdHlwZTogJ2V2ZW50JyxcbiAgICAgIGV2ZW50LFxuICAgICAgZGF0YVxuICAgIH0pKTtcbiAgfVxuXG4gIGxpc3RlbihldmVudDogSWNwRXZlbnRzKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICBjYXNlIEljcEV2ZW50cy5TRVNTSU9OX0pPSU5FRDoge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXNzaW9uSm9pbmVkJC5hc09ic2VydmFibGUoKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgSWNwRXZlbnRzLlBSRVNFTlRFUl9VUERBVEVEOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXNlbnRlclVwZGF0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgfVxuICAgICAgY2FzZSBJY3BFdmVudHMuQ0xJRU5UX0RJU0NPTk5FQ1RFRDoge1xuICAgICAgICByZXR1cm4gdGhpcy5jbGllbnREaXNjb25uZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgfVxuICAgICAgY2FzZSBJY3BFdmVudHMuUEFSVElDSVBBTlRTX1VQREFURUQ6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFydGljaXBhbnRVcGRhdGVkJC5hc09ic2VydmFibGUoKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgSWNwRXZlbnRzLk5FV19QQVJUSUNJUEFOVF9KT0lORUQ6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmV3UGFydGljaXBhbnRKb2luZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgfVxuICAgICAgY2FzZSBJY3BFdmVudHMuU0NSRUVOX1VQREFURUQ6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NyZWVuVXBkYXRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1lc3NhZ2VFdmVudEhhbmRsbGVyKGV2ZW50TmFtZTogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICBzd2l0Y2ggKGV2ZW50TmFtZSkge1xuICAgICAgY2FzZSBJY3BFdmVudHMuU0VTU0lPTl9KT0lORUQ6IHtcbiAgICAgICAgdGhpcy5zZXNzaW9uSm9pbmVkJC5uZXh0KGRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgSWNwRXZlbnRzLlBSRVNFTlRFUl9VUERBVEVEOiB7XG4gICAgICAgIHRoaXMucHJlc2VudGVyVXBkYXRlZCQubmV4dChkYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEljcEV2ZW50cy5DTElFTlRfRElTQ09OTkVDVEVEOiB7XG4gICAgICAgIHRoaXMuY2xpZW50RGlzY29ubmVjdGVkJC5uZXh0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBJY3BFdmVudHMuUEFSVElDSVBBTlRTX1VQREFURUQ6IHtcbiAgICAgICAgdGhpcy5wYXJ0aWNpcGFudFVwZGF0ZWQkLm5leHQoZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBJY3BFdmVudHMuTkVXX1BBUlRJQ0lQQU5UX0pPSU5FRDoge1xuICAgICAgICB0aGlzLm5ld1BhcnRpY2lwYW50Sm9pbmVkJC5uZXh0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBJY3BFdmVudHMuU0NSRUVOX1VQREFURUQ6IHtcbiAgICAgICAgdGhpcy5zY3JlZW5VcGRhdGVkJC5uZXh0KGRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRTb2NrZXRDbGllbnQodXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdlYlNvY2tldD4ge1xuICAgIHRoaXMuc29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwsICdqc29uLndlYnB1YnN1Yi5henVyZS52MScpO1xuICAgIHJldHVybiBvZih0aGlzLnNvY2tldCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,3 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
1
  import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
6
2
  import { defaultImageOptions, defaultMultimediaOptions, defaultPdfOptions, defaultUnsupportedOptions, ToolbarButtonVisibilityService } from './toolbar/toolbar-button-visibility.service';
7
3
  import { ToolbarEventService } from './toolbar/toolbar-event.service';
@@ -14,34 +10,25 @@ import * as fromDocumentsSelector from './store/selectors/document.selectors';
14
10
  import * as fromAnnoActions from './store/actions/annotation.actions';
15
11
  import * as fromRedactActions from './store/actions/redaction.actions';
16
12
  import * as fromDocumentActions from './store/actions/document.actions';
17
- /** @enum {string} */
18
- const CoreContentTypes = {
19
- PDF: 'pdf',
20
- IMAGE: 'image',
21
- };
22
- /** @enum {string} */
23
- const MultimediaContentTypes = {
24
- MP4: 'mp4',
25
- MP3: 'mp3',
26
- };
27
- /** @enum {string} */
28
- const ConvertibleContentTypes = {
29
- EXCEL: 'excel',
30
- WORD: 'word',
31
- POWERPOINT: 'powerpoint',
32
- TXT: 'txt',
33
- RTF: 'rtf',
34
- };
13
+ var CoreContentTypes;
14
+ (function (CoreContentTypes) {
15
+ CoreContentTypes["PDF"] = "pdf";
16
+ CoreContentTypes["IMAGE"] = "image";
17
+ })(CoreContentTypes || (CoreContentTypes = {}));
18
+ var MultimediaContentTypes;
19
+ (function (MultimediaContentTypes) {
20
+ MultimediaContentTypes["MP4"] = "mp4";
21
+ MultimediaContentTypes["MP3"] = "mp3";
22
+ })(MultimediaContentTypes || (MultimediaContentTypes = {}));
23
+ var ConvertibleContentTypes;
24
+ (function (ConvertibleContentTypes) {
25
+ ConvertibleContentTypes["EXCEL"] = "excel";
26
+ ConvertibleContentTypes["WORD"] = "word";
27
+ ConvertibleContentTypes["POWERPOINT"] = "powerpoint";
28
+ ConvertibleContentTypes["TXT"] = "txt";
29
+ ConvertibleContentTypes["RTF"] = "rtf";
30
+ })(ConvertibleContentTypes || (ConvertibleContentTypes = {}));
35
31
  export class MediaViewerComponent {
36
- /**
37
- * @param {?} store
38
- * @param {?} toolbarButtons
39
- * @param {?} toolbarEvents
40
- * @param {?} api
41
- * @param {?} commentService
42
- * @param {?} elRef
43
- * @param {?} cdr
44
- */
45
32
  constructor(store, toolbarButtons, toolbarEvents, api, commentService, elRef, cdr) {
46
33
  this.store = store;
47
34
  this.toolbarButtons = toolbarButtons;
@@ -69,30 +56,16 @@ export class MediaViewerComponent {
69
56
  api.annotationApiUrl = this.annotationApiUrl;
70
57
  }
71
58
  }
72
- /**
73
- * @return {?}
74
- */
75
59
  ngAfterContentInit() {
76
60
  this.annotationSet$ = this.store.pipe(select(fromAnnoSelectors.getAnnotationSet));
77
61
  this.hasDifferentPageSize$ = this.store.pipe(select(fromDocumentsSelector.getPageDifference));
78
62
  this.setToolbarButtons();
79
63
  this.toolbarEventsOutput.emit(this.toolbarEvents);
80
64
  this.$subscriptions = this.commentService.getUnsavedChanges()
81
- .subscribe((/**
82
- * @param {?} changes
83
- * @return {?}
84
- */
85
- changes => this.onCommentChange(changes)));
65
+ .subscribe(changes => this.onCommentChange(changes));
86
66
  this.$subscriptions.add(this.toolbarEvents.getShowCommentSummary()
87
- .subscribe((/**
88
- * @param {?} changes
89
- * @return {?}
90
- */
91
- changes => this.showCommentSummary = changes)));
67
+ .subscribe(changes => this.showCommentSummary = changes));
92
68
  }
93
- /**
94
- * @return {?}
95
- */
96
69
  ngAfterViewChecked() {
97
70
  if (this.height && this.viewerHeight !== this.height) {
98
71
  this.viewerHeight = this.height;
@@ -100,11 +73,8 @@ export class MediaViewerComponent {
100
73
  return;
101
74
  }
102
75
  if (!this.height) {
103
- /** @type {?} */
104
76
  const compOffsetTop = this.elRef.nativeElement.getBoundingClientRect().top;
105
- /** @type {?} */
106
77
  const viewerOffsetTop = this.viewerRef.nativeElement.offsetTop;
107
- /** @type {?} */
108
78
  const offset = compOffsetTop + viewerOffsetTop;
109
79
  if (this.prevOffset !== offset) {
110
80
  this.viewerHeight = `calc(100vh - ${offset}px)`;
@@ -113,10 +83,6 @@ export class MediaViewerComponent {
113
83
  }
114
84
  }
115
85
  }
116
- /**
117
- * @param {?} changes
118
- * @return {?}
119
- */
120
86
  ngOnChanges(changes) {
121
87
  if (changes.annotationApiUrl) {
122
88
  this.api.annotationApiUrl = this.annotationApiUrl;
@@ -129,7 +95,7 @@ export class MediaViewerComponent {
129
95
  if (this.enableAnnotations && !(this.multimediaContent || this.unsupportedContent)) {
130
96
  this.store.dispatch(new fromAnnoActions.LoadAnnotationSet(this.documentId));
131
97
  }
132
- if (this.enableRedactions && !(this.multimediaContent || this.unsupportedContent)) {
98
+ if (this.enableRedactions && !(this.multimediaContent || this.unsupportedContent) && this.documentId) {
133
99
  this.store.dispatch(new fromRedactActions.LoadRedactions(this.documentId));
134
100
  }
135
101
  if (this.contentType === 'image') {
@@ -145,42 +111,22 @@ export class MediaViewerComponent {
145
111
  this.detectOs();
146
112
  this.typeException = false;
147
113
  }
148
- /**
149
- * @return {?}
150
- */
151
114
  ngOnDestroy() {
152
115
  this.$subscriptions.unsubscribe();
153
116
  }
154
- /**
155
- * @return {?}
156
- */
157
117
  needsConverting() {
158
118
  return this.contentType !== null && Object.keys(ConvertibleContentTypes).includes(this.contentType.toUpperCase());
159
119
  }
160
- /**
161
- * @return {?}
162
- */
163
120
  isMultimedia() {
164
121
  return this.contentType !== null && Object.keys(MultimediaContentTypes).includes(this.contentType.toUpperCase());
165
122
  }
166
- /**
167
- * @return {?}
168
- */
169
123
  isSupported() {
170
- /** @type {?} */
171
124
  const supportedTypes = Object.assign({}, MultimediaContentTypes, ConvertibleContentTypes, CoreContentTypes);
172
125
  return this.contentType !== null && Object.keys(supportedTypes).includes(this.contentType.toUpperCase());
173
126
  }
174
- /**
175
- * @param {?} status
176
- * @return {?}
177
- */
178
127
  onMediaLoad(status) {
179
128
  this.mediaLoadStatus.emit(status);
180
129
  }
181
- /**
182
- * @return {?}
183
- */
184
130
  setToolbarButtons() {
185
131
  if (this.contentType === CoreContentTypes.PDF || this.needsConverting()) {
186
132
  this.toolbarButtons.setup(Object.assign(Object.assign(Object.assign({}, defaultPdfOptions), { showHighlightButton: this.enableAnnotations, showDrawButton: this.enableAnnotations }), this.toolbarButtonOverrides));
@@ -195,10 +141,6 @@ export class MediaViewerComponent {
195
141
  this.toolbarButtons.setup(Object.assign(Object.assign({}, defaultUnsupportedOptions), this.toolbarButtonOverrides));
196
142
  }
197
143
  }
198
- /**
199
- * @param {?} exception
200
- * @return {?}
201
- */
202
144
  onLoadException(exception) {
203
145
  this.viewerException.emit(exception);
204
146
  if (!this.isSupported()) {
@@ -210,33 +152,18 @@ export class MediaViewerComponent {
210
152
  this.setToolbarButtons();
211
153
  }
212
154
  }
213
- /**
214
- * @param {?} changes
215
- * @return {?}
216
- */
217
155
  onCommentChange(changes) {
218
156
  this.unsavedChanges.emit(changes);
219
157
  }
220
- /**
221
- * @param {?} title
222
- * @return {?}
223
- */
224
158
  onDocumentTitleChange(title) {
225
159
  this.documentTitle = title;
226
160
  }
227
- /**
228
- * @private
229
- * @param {?} url
230
- * @return {?}
231
- */
161
+ // If secure mode is enabled (which adds "documentsv2" to the documentId), get rid of it
232
162
  extractDMStoreDocId(url) {
233
163
  url = url.includes('/documents/') ? url.split('/documents/')[1] : url;
234
164
  url = url.includes('/documentsv2/') ? url.split('/documentsv2/')[1] : url;
235
165
  return url.replace('/binary', '');
236
166
  }
237
- /**
238
- * @return {?}
239
- */
240
167
  detectOs() {
241
168
  this.hasScrollBar = window.navigator.userAgent.indexOf('Win') !== -1;
242
169
  }
@@ -246,7 +173,7 @@ MediaViewerComponent.decorators = [
246
173
  selector: 'mv-media-viewer',
247
174
  template: "<div id=\"outerContainer\"\n [ngClass]=\"{\n 'has-redact-bar': toolbarEvents.redactionMode | async,\n 'icp-mode': toolbarEvents.icp.enabled | async,\n 'is-redaction-preview': toolbarEvents.redactionPreview | async,\n sidebarOpen: toolbarEvents.sidebarOpen | async,\n 'has-scroll-bar': hasScrollBar,\n 'has-different-page-size': hasDifferentPageSize$ | async\n }\"\n [ngStyle]=\"{ width: width }\">\n\n <mv-comments-summary *ngIf=\"showCommentSummary\"\n [title]=\"documentTitle || 'Comment Summary'\"\n [contentType]=\"contentType\">\n </mv-comments-summary>\n\n <mv-confirm-action *ngIf=\"toolbarEvents.icp.leavingSession | async\"></mv-confirm-action>\n\n <div id=\"mainContainer\">\n <mv-main-toolbar *ngIf=\"showToolbar\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableICP]=\"enableICP\"\n [enableRedactions]=\"enableRedactions\"\n [contentType]=\"contentType\"\n >\n </mv-main-toolbar>\n <mv-redaction-toolbar *ngIf=\"toolbarEvents.redactionMode | async\"></mv-redaction-toolbar>\n <mv-icp-toolbar *ngIf=\"toolbarEvents.icp.enabled | async\"></mv-icp-toolbar>\n\n <div #viewerRef>\n <mv-conversion-viewer *ngIf=\"convertibleContent\"\n (documentTitle)=\"onDocumentTitleChange($event)\"\n (mediaLoadStatus)=\"onMediaLoad($event)\"\n (viewerException)=\"onLoadException($event)\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableRedactions]=\"enableRedactions\"\n [annotationSet]=\"enableAnnotations ? (annotationSet$ | async) : null\"\n [originalUrl]=\"url\"\n [downloadFileName]=\"downloadFileName\"\n [height]=\"viewerHeight\"\n mvRotationPersist>\n </mv-conversion-viewer>\n <mv-pdf-viewer *ngIf=\"contentType === 'pdf'\"\n #pdfViewer\n (mediaLoadStatus)=\"onMediaLoad($event)\"\n (pdfViewerException)=\"onLoadException($event)\"\n (documentTitle)=\"onDocumentTitleChange($event)\"\n [url]=\"url\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableRedactions]=\"enableRedactions\"\n [enableICP]=\"enableICP\"\n [annotationSet]=\"enableAnnotations ? (annotationSet$ | async) : null\"\n [downloadFileName]=\"downloadFileName\"\n [height]=\"viewerHeight\"\n [caseId]=\"caseId\"\n mvRotationPersist>\n </mv-pdf-viewer>\n <mv-image-viewer *ngIf=\"contentType === 'image'\"\n (mediaLoadStatus)=\"onMediaLoad($event)\"\n (imageViewerException)=\"onLoadException($event)\"\n [url]=\"url\"\n [enableAnnotations]=\"enableAnnotations\"\n [annotationSet]=\"enableAnnotations ? (annotationSet$ | async) : null\"\n [downloadFileName]=\"downloadFileName\"\n [height]=\"viewerHeight\"\n mvRotationPersist>\n </mv-image-viewer>\n <mv-multimedia-player *ngIf=\"multimediaContent\"\n [multimediaOn]=\"multimediaPlayerEnabled\"\n [url]=\"url\"\n [downloadFileName]=\"downloadFileName\"\n (loadStatus)=\"onMediaLoad($event)\">\n </mv-multimedia-player>\n <mv-unsupported-viewer *ngIf=\"unsupportedContent\"\n [url]=\"url\"\n [typeException]=\"typeException\"\n [downloadFileName]=\"downloadFileName\"\n (loadStatus)=\"onMediaLoad($event)\"\n (unsupportedViewerException)=\"onLoadException($event)\">\n </mv-unsupported-viewer>\n </div>\n </div>\n</div>\n",
248
175
  encapsulation: ViewEncapsulation.None
249
- }] }
176
+ },] }
250
177
  ];
251
178
  /** @nocollapse */
252
179
  MediaViewerComponent.ctorParameters = () => [
@@ -278,103 +205,4 @@ MediaViewerComponent.propDecorators = {
278
205
  multimediaPlayerEnabled: [{ type: Input }],
279
206
  caseId: [{ type: Input }]
280
207
  };
281
- if (false) {
282
- /** @type {?} */
283
- MediaViewerComponent.prototype.viewerRef;
284
- /** @type {?} */
285
- MediaViewerComponent.prototype.url;
286
- /** @type {?} */
287
- MediaViewerComponent.prototype.downloadFileName;
288
- /** @type {?} */
289
- MediaViewerComponent.prototype.contentType;
290
- /** @type {?} */
291
- MediaViewerComponent.prototype.showToolbar;
292
- /** @type {?} */
293
- MediaViewerComponent.prototype.toolbarButtonOverrides;
294
- /** @type {?} */
295
- MediaViewerComponent.prototype.height;
296
- /** @type {?} */
297
- MediaViewerComponent.prototype.viewerHeight;
298
- /** @type {?} */
299
- MediaViewerComponent.prototype.width;
300
- /** @type {?} */
301
- MediaViewerComponent.prototype.mediaLoadStatus;
302
- /** @type {?} */
303
- MediaViewerComponent.prototype.viewerException;
304
- /** @type {?} */
305
- MediaViewerComponent.prototype.toolbarEventsOutput;
306
- /** @type {?} */
307
- MediaViewerComponent.prototype.unsavedChanges;
308
- /** @type {?} */
309
- MediaViewerComponent.prototype.enableAnnotations;
310
- /** @type {?} */
311
- MediaViewerComponent.prototype.annotationApiUrl;
312
- /** @type {?} */
313
- MediaViewerComponent.prototype.enableRedactions;
314
- /** @type {?} */
315
- MediaViewerComponent.prototype.enableICP;
316
- /** @type {?} */
317
- MediaViewerComponent.prototype.multimediaPlayerEnabled;
318
- /** @type {?} */
319
- MediaViewerComponent.prototype.caseId;
320
- /** @type {?} */
321
- MediaViewerComponent.prototype.multimediaContent;
322
- /** @type {?} */
323
- MediaViewerComponent.prototype.convertibleContent;
324
- /** @type {?} */
325
- MediaViewerComponent.prototype.unsupportedContent;
326
- /** @type {?} */
327
- MediaViewerComponent.prototype.documentTitle;
328
- /** @type {?} */
329
- MediaViewerComponent.prototype.showCommentSummary;
330
- /** @type {?} */
331
- MediaViewerComponent.prototype.annotationSet$;
332
- /** @type {?} */
333
- MediaViewerComponent.prototype.hasScrollBar;
334
- /** @type {?} */
335
- MediaViewerComponent.prototype.typeException;
336
- /** @type {?} */
337
- MediaViewerComponent.prototype.hasDifferentPageSize$;
338
- /** @type {?} */
339
- MediaViewerComponent.prototype.documentId;
340
- /**
341
- * @type {?}
342
- * @private
343
- */
344
- MediaViewerComponent.prototype.$subscriptions;
345
- /**
346
- * @type {?}
347
- * @private
348
- */
349
- MediaViewerComponent.prototype.prevOffset;
350
- /**
351
- * @type {?}
352
- * @private
353
- */
354
- MediaViewerComponent.prototype.store;
355
- /** @type {?} */
356
- MediaViewerComponent.prototype.toolbarButtons;
357
- /** @type {?} */
358
- MediaViewerComponent.prototype.toolbarEvents;
359
- /**
360
- * @type {?}
361
- * @private
362
- */
363
- MediaViewerComponent.prototype.api;
364
- /**
365
- * @type {?}
366
- * @private
367
- */
368
- MediaViewerComponent.prototype.commentService;
369
- /**
370
- * @type {?}
371
- * @private
372
- */
373
- MediaViewerComponent.prototype.elRef;
374
- /**
375
- * @type {?}
376
- * @private
377
- */
378
- MediaViewerComponent.prototype.cdr;
379
- }
380
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BobWN0cy9tZWRpYS12aWV3ZXIvIiwic291cmNlcyI6WyJsaWIvbWVkaWEtdmlld2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLG1CQUFtQixFQUFFLHdCQUF3QixFQUM3QyxpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUMvQixNQUFNLDZDQUE2QyxDQUFDO0FBRXJELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXBHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLEtBQUssaUJBQWlCLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxLQUFLLHFCQUFxQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sS0FBSyxlQUFlLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxLQUFLLGlCQUFpQixNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxtQkFBbUIsTUFBTSxrQ0FBa0MsQ0FBQzs7O0lBR3RFLEtBQU0sS0FBSztJQUNYLE9BQVEsT0FBTzs7OztJQUlmLEtBQU0sS0FBSztJQUNYLEtBQU0sS0FBSzs7OztJQUlYLE9BQVEsT0FBTztJQUNmLE1BQU8sTUFBTTtJQUNiLFlBQWEsWUFBWTtJQUN6QixLQUFN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O0lBQzNDLDBDQUFtQjs7Ozs7SUFFbkIsOENBQXFDOzs7OztJQUNyQywwQ0FBMkI7Ozs7O0lBR3pCLHFDQUFrRDs7SUFDbEQsOENBQThEOztJQUM5RCw2Q0FBa0Q7Ozs7O0lBQ2xELG1DQUEwQzs7Ozs7SUFDMUMsOENBQStDOzs7OztJQUMvQyxxQ0FBeUI7Ozs7O0lBQ3pCLG1DQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRlZmF1bHRJbWFnZU9wdGlvbnMsIGRlZmF1bHRNdWx0aW1lZGlhT3B0aW9ucyxcbiAgZGVmYXVsdFBkZk9wdGlvbnMsXG4gIGRlZmF1bHRVbnN1cHBvcnRlZE9wdGlvbnMsXG4gIFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZVxufSBmcm9tICcuL3Rvb2xiYXIvdG9vbGJhci1idXR0b24tdmlzaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEFubm90YXRpb25TZXQgfSBmcm9tICcuL2Fubm90YXRpb25zL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tc2V0Lm1vZGVsJztcbmltcG9ydCB7IFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuL3Rvb2xiYXIvdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFubm90YXRpb25BcGlTZXJ2aWNlIH0gZnJvbSAnLi9hbm5vdGF0aW9ucy9zZXJ2aWNlcy9hbm5vdGF0aW9uLWFwaS9hbm5vdGF0aW9uLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNlVHlwZSwgVmlld2VyRXhjZXB0aW9uIH0gZnJvbSAnLi92aWV3ZXJzL3ZpZXdlci1leGNlcHRpb24ubW9kZWwnO1xuaW1wb3J0IHsgQ29tbWVudFNlcnZpY2UgfSBmcm9tICcuL2Fubm90YXRpb25zL2NvbW1lbnQtc2V0L2NvbW1lbnQvY29tbWVudC5zZXJ2aWNlJztcbmltcG9ydCAnaGFtbWVyanMnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCAqIGFzIGZyb21TdG9yZSBmcm9tICcuL3N0b3JlL3JlZHVjZXJzL3JlZHVjZXJzJztcbmltcG9ydCAqIGFzIGZyb21Bbm5vU2VsZWN0b3JzIGZyb20gJy4vc3RvcmUvc2VsZWN0b3JzL2Fubm90YXRpb24uc2VsZWN0b3JzJztcbmltcG9ydCAqIGFzIGZyb21Eb2N1bWVudHNTZWxlY3RvciBmcm9tICcuL3N0b3JlL3NlbGVjdG9ycy9kb2N1bWVudC5zZWxlY3RvcnMnO1xuaW1wb3J0ICogYXMgZnJvbUFubm9BY3Rpb25zIGZyb20gJy4vc3RvcmUvYWN0aW9ucy9hbm5vdGF0aW9uLmFjdGlvbnMnO1xuaW1wb3J0ICogYXMgZnJvbVJlZGFjdEFjdGlvbnMgZnJvbSAnLi9zdG9yZS9hY3Rpb25zL3JlZGFjdGlvbi5hY3Rpb25zJztcbmltcG9ydCAqIGFzIGZyb21Eb2N1bWVudEFjdGlvbnMgZnJvbSAnLi9zdG9yZS9hY3Rpb25zL2RvY3VtZW50LmFjdGlvbnMnO1xuXG5lbnVtIENvcmVDb250ZW50VHlwZXMge1xuICBQREYgPSAncGRmJyxcbiAgSU1BR0UgPSAnaW1hZ2UnXG59XG5cbmVudW0gTXVsdGltZWRpYUNvbnRlbnRUeXBlcyB7XG4gIE1QNCA9ICdtcDQnLFxuICBNUDMgPSAnbXAzJyxcbn1cblxuZW51bSBDb252ZXJ0aWJsZUNvbnRlbnRUeXBlcyB7XG4gIEVYQ0VMID0gJ2V4Y2VsJyxcbiAgV09SRCA9ICd3b3JkJyxcbiAgUE9XRVJQT0lOVCA9ICdwb3dlcnBvaW50JyxcbiAgVFhUID0gJ3R4dCcsXG4gIFJURiA9ICdydGYnXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LW1lZGlhLXZpZXdlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWRpYS12aWV3ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuXG4gIEBWaWV3Q2hpbGQoJ3ZpZXdlclJlZicsIHtzdGF0aWM6IGZhbHNlfSkgdmlld2VyUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHVybDtcbiAgQElucHV0KCkgZG93bmxvYWRGaWxlTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBjb250ZW50VHlwZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHNob3dUb29sYmFyID0gdHJ1ZTtcbiAgQElucHV0KCkgdG9vbGJhckJ1dHRvbk92ZXJyaWRlczogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgcHVibGljIGhlaWdodDogc3RyaW5nO1xuICBwdWJsaWMgdmlld2VySGVpZ2h0OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgd2lkdGggPSAnMTAwJSc7XG5cbiAgQE91dHB1dCgpIG1lZGlhTG9hZFN0YXR1cyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzcG9uc2VUeXBlPigpO1xuICBAT3V0cHV0KCkgdmlld2VyRXhjZXB0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxWaWV3ZXJFeGNlcHRpb24+KCk7XG4gIEBPdXRwdXQoKSB0b29sYmFyRXZlbnRzT3V0cHV0ID0gbmV3IEV2ZW50RW1pdHRlcjxUb29sYmFyRXZlbnRTZXJ2aWNlPigpO1xuICBAT3V0cHV0KCkgdW5zYXZlZENoYW5nZXMgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQElucHV0KCkgZW5hYmxlQW5ub3RhdGlvbnMgPSBmYWxzZTtcbiAgQElucHV0KCkgYW5ub3RhdGlvbkFwaVVybDtcblxuICBASW5wdXQoKSBlbmFibGVSZWRhY3Rpb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZUlDUCA9IGZhbHNlO1xuICBASW5wdXQoKSBtdWx0aW1lZGlhUGxheWVyRW5hYmxlZCA9IGZhbHNlO1xuXG5cbiAgQElucHV0KCkgY2FzZUlkOiBzdHJpbmc7XG5cbiAgbXVsdGltZWRpYUNvbnRlbnQgPSBmYWxzZTtcbiAgY29udmVydGlibGVDb250ZW50ID0gZmFsc2U7XG4gIHVuc3VwcG9ydGVkQ29udGVudCA9IGZhbHNlO1xuXG4gIGRvY3VtZW50VGl0bGU6IHN0cmluZztcbiAgc2hvd0NvbW1lbnRTdW1tYXJ5OiBib29sZWFuO1xuICBhbm5vdGF0aW9uU2V0JDogT2JzZXJ2YWJsZTxBbm5vdGF0aW9uU2V0IHwge30+O1xuICBoYXNTY3JvbGxCYXI6IGJvb2xlYW47XG4gIHR5cGVFeGNlcHRpb24gPSBmYWxzZTtcbiAgaGFzRGlmZmVyZW50UGFnZVNpemUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBkb2N1bWVudElkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSAkc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHByZXZPZmZzZXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxmcm9tU3RvcmUuQW5ub3RhdGlvblNldFN0YXRlPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckJ1dHRvbnM6IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckV2ZW50czogVG9vbGJhckV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwaTogQW5ub3RhdGlvbkFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgaWYgKHRoaXMuYW5ub3RhdGlvbkFwaVVybCkge1xuICAgICAgYXBpLmFubm90YXRpb25BcGlVcmwgPSB0aGlzLmFubm90YXRpb25BcGlVcmw7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuYW5ub3RhdGlvblNldCQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21Bbm5vU2VsZWN0b3JzLmdldEFubm90YXRpb25TZXQpKTtcbiAgICB0aGlzLmhhc0RpZmZlcmVudFBhZ2VTaXplJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbURvY3VtZW50c1NlbGVjdG9yLmdldFBhZ2VEaWZmZXJlbmNlKSk7XG4gICAgdGhpcy5zZXRUb29sYmFyQnV0dG9ucygpO1xuICAgIHRoaXMudG9vbGJhckV2ZW50c091dHB1dC5lbWl0KHRoaXMudG9vbGJhckV2ZW50cyk7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9ucyA9IHRoaXMuY29tbWVudFNlcnZpY2UuZ2V0VW5zYXZlZENoYW5nZXMoKVxuICAgICAgLnN1YnNjcmliZShjaGFuZ2VzID0+IHRoaXMub25Db21tZW50Q2hhbmdlKGNoYW5nZXMpKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb25zLmFkZCh0aGlzLnRvb2xiYXJFdmVudHMuZ2V0U2hvd0NvbW1lbnRTdW1tYXJ5KClcbiAgICAgIC5zdWJzY3JpYmUoY2hhbmdlcyA9PiB0aGlzLnNob3dDb21tZW50U3VtbWFyeSA9IGNoYW5nZXMpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oZWlnaHQgJiYgdGhpcy52aWV3ZXJIZWlnaHQgIT09IHRoaXMuaGVpZ2h0KSB7XG4gICAgICB0aGlzLnZpZXdlckhlaWdodCA9IHRoaXMuaGVpZ2h0O1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5oZWlnaHQpIHtcbiAgICAgIGNvbnN0IGNvbXBPZmZzZXRUb3AgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgICAgY29uc3Qgdmlld2VyT2Zmc2V0VG9wID0gdGhpcy52aWV3ZXJSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICBjb25zdCBvZmZzZXQgPSBjb21wT2Zmc2V0VG9wICsgdmlld2VyT2Zmc2V0VG9wO1xuXG4gICAgICBpZiAodGhpcy5wcmV2T2Zmc2V0ICE9PSBvZmZzZXQpIHtcbiAgICAgICAgdGhpcy52aWV3ZXJIZWlnaHQgPSBgY2FsYygxMDB2aCAtICR7b2Zmc2V0fXB4KWA7XG4gICAgICAgIHRoaXMucHJldk9mZnNldCA9IG9mZnNldDtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5hbm5vdGF0aW9uQXBpVXJsKSB7XG4gICAgICB0aGlzLmFwaS5hbm5vdGF0aW9uQXBpVXJsID0gdGhpcy5hbm5vdGF0aW9uQXBpVXJsO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnVybCkge1xuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnJlc2V0KCk7XG4gICAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLnJlc2V0Q29tbWVudFNldCgpO1xuICAgICAgdGhpcy5kb2N1bWVudElkID0gdGhpcy5leHRyYWN0RE1TdG9yZURvY0lkKHRoaXMudXJsKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21Eb2N1bWVudEFjdGlvbnMuU2V0RG9jdW1lbnRJZCh0aGlzLmRvY3VtZW50SWQpKTtcbiAgICAgIGlmICh0aGlzLmVuYWJsZUFubm90YXRpb25zICYmICEodGhpcy5tdWx0aW1lZGlhQ29udGVudCB8fCB0aGlzLnVuc3VwcG9ydGVkQ29udGVudCkpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUFubm9BY3Rpb25zLkxvYWRBbm5vdGF0aW9uU2V0KHRoaXMuZG9jdW1lbnRJZCkpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZW5hYmxlUmVkYWN0aW9ucyAmJiAhKHRoaXMubXVsdGltZWRpYUNvbnRlbnQgfHwgdGhpcy51bnN1cHBvcnRlZENvbnRlbnQpKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21SZWRhY3RBY3Rpb25zLkxvYWRSZWRhY3Rpb25zKHRoaXMuZG9jdW1lbnRJZCkpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29udGVudFR5cGUgPT09ICdpbWFnZScpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudFRpdGxlID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5jb250ZW50VHlwZSkge1xuICAgICAgdGhpcy5jb252ZXJ0aWJsZUNvbnRlbnQgPSB0aGlzLm5lZWRzQ29udmVydGluZygpO1xuICAgICAgdGhpcy5tdWx0aW1lZGlhQ29udGVudCA9IHRoaXMuaXNNdWx0aW1lZGlhKCk7XG4gICAgICB0aGlzLnVuc3VwcG9ydGVkQ29udGVudCA9ICF0aGlzLmlzU3VwcG9ydGVkKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRUb29sYmFyQnV0dG9ucygpO1xuICAgIHRoaXMuZGV0ZWN0T3MoKTtcbiAgICB0aGlzLnR5cGVFeGNlcHRpb24gPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5lZWRzQ29udmVydGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50VHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyhDb252ZXJ0aWJsZUNvbnRlbnRUeXBlcykuaW5jbHVkZXModGhpcy5jb250ZW50VHlwZS50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuXG4gIGlzTXVsdGltZWRpYSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50VHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyhNdWx0aW1lZGlhQ29udGVudFR5cGVzKS5pbmNsdWRlcyh0aGlzLmNvbnRlbnRUeXBlLnRvVXBwZXJDYXNlKCkpO1xuICB9XG5cbiAgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3VwcG9ydGVkVHlwZXMgPSBPYmplY3QuYXNzaWduKHt9LCBNdWx0aW1lZGlhQ29udGVudFR5cGVzLCBDb252ZXJ0aWJsZUNvbnRlbnRUeXBlcywgQ29yZUNvbnRlbnRUeXBlcyk7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFR5cGUgIT09IG51bGwgJiYgT2JqZWN0LmtleXMoc3VwcG9ydGVkVHlwZXMpLmluY2x1ZGVzKHRoaXMuY29udGVudFR5cGUudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICBvbk1lZGlhTG9hZChzdGF0dXM6IFJlc3BvbnNlVHlwZSkge1xuICAgIHRoaXMubWVkaWFMb2FkU3RhdHVzLmVtaXQoc3RhdHVzKTtcbiAgfVxuXG4gIHNldFRvb2xiYXJCdXR0b25zKCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnRUeXBlID09PSBDb3JlQ29udGVudFR5cGVzLlBERiB8fCB0aGlzLm5lZWRzQ29udmVydGluZygpKSB7XG4gICAgICB0aGlzLnRvb2xiYXJCdXR0b25zLnNldHVwKHtcbiAgICAgICAgLi4uZGVmYXVsdFBkZk9wdGlvbnMsIHNob3dIaWdobGlnaHRCdXR0b246IHRoaXMuZW5hYmxlQW5ub3RhdGlvbnMsIHNob3dEcmF3QnV0dG9uOiB0aGlzLmVuYWJsZUFubm90YXRpb25zLFxuICAgICAgICAuLi50aGlzLnRvb2xiYXJCdXR0b25PdmVycmlkZXNcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb250ZW50VHlwZSA9PT0gQ29yZUNvbnRlbnRUeXBlcy5JTUFHRSkge1xuICAgICAgdGhpcy50b29sYmFyQnV0dG9ucy5zZXR1cCh7XG4gICAgICAgIC4uLmRlZmF1bHRJbWFnZU9wdGlvbnMsIHNob3dEcmF3QnV0dG9uOiB0aGlzLmVuYWJsZUFubm90YXRpb25zLFxuICAgICAgICAuLi50aGlzLnRvb2xiYXJCdXR0b25PdmVycmlkZXNcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc011bHRpbWVkaWEoKSkge1xuICAgICAgdGhpcy50b29sYmFyQnV0dG9ucy5zZXR1cCh7XG4gICAgICAgIC4uLmRlZmF1bHRNdWx0aW1lZGlhT3B0aW9ucyxcbiAgICAgICAgLi4udGhpcy50b29sYmFyQnV0dG9uT3ZlcnJpZGVzXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50b29sYmFyQnV0dG9ucy5zZXR1cCh7XG4gICAgICAgIC4uLmRlZmF1bHRVbnN1cHBvcnRlZE9wdGlvbnMsXG4gICAgICAgIC4uLnRoaXMudG9vbGJhckJ1dHRvbk92ZXJyaWRlc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25Mb2FkRXhjZXB0aW9uKGV4Y2VwdGlvbjogVmlld2VyRXhjZXB0aW9uKSB7XG4gICAgdGhpcy52aWV3ZXJFeGNlcHRpb24uZW1pdChleGNlcHRpb24pO1xuICAgIGlmICghdGhpcy5pc1N1cHBvcnRlZCgpKSB7XG4gICAgICB0aGlzLnR5cGVFeGNlcHRpb24gPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50eXBlRXhjZXB0aW9uID0gdHJ1ZTtcbiAgICAgIHRoaXMuY29udGVudFR5cGUgPSBudWxsO1xuICAgICAgdGhpcy5zZXRUb29sYmFyQnV0dG9ucygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ29tbWVudENoYW5nZShjaGFuZ2VzOiBib29sZWFuKSB7XG4gICAgdGhpcy51bnNhdmVkQ2hhbmdlcy5lbWl0KGNoYW5nZXMpO1xuICB9XG5cbiAgb25Eb2N1bWVudFRpdGxlQ2hhbmdlKHRpdGxlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRvY3VtZW50VGl0bGUgPSB0aXRsZTtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdERNU3RvcmVEb2NJZCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdXJsID0gdXJsLmluY2x1ZGVzKCcvZG9jdW1lbnRzLycpID8gdXJsLnNwbGl0KCcvZG9jdW1lbnRzLycpWzFdIDogdXJsO1xuICAgIHVybCA9IHVybC5pbmNsdWRlcygnL2RvY3VtZW50c3YyLycpID8gdXJsLnNwbGl0KCcvZG9jdW1lbnRzdjIvJylbMV0gOiB1cmw7XG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKCcvYmluYXJ5JywgJycpO1xuICB9XG5cbiAgZGV0ZWN0T3MoKSB7XG4gICAgdGhpcy5oYXNTY3JvbGxCYXIgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdXaW4nKSAhPT0gLTE7XG4gIH1cbn1cbiJdfQ==
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL21lZGlhLXZpZXdlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLG1CQUFtQixFQUFFLHdCQUF3QixFQUM3QyxpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUMvQixNQUFNLDZDQUE2QyxDQUFDO0FBRXJELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXBHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1QyxPQUFPLEtBQUssaUJBQWlCLE1BQU0sd0NBQXdDLENBQUM7QUFDNUUsT0FBTyxLQUFLLHFCQUFxQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sS0FBSyxlQUFlLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxLQUFLLGlCQUFpQixNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxtQkFBbUIsTUFBTSxrQ0FBa0MsQ0FBQztBQUV4RSxJQUFLLGdCQUdKO0FBSEQsV0FBSyxnQkFBZ0I7SUFDbkIsK0JBQVcsQ0FBQTtJQUNYLG1DQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhJLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFHcEI7QUFFRCxJ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Q0FBQztRQUN0RSxHQUFHLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzFFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDOzs7WUExTUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLDZySUFBNEM7Z0JBQzVDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7O1lBOUJnQixLQUFLO1lBUnBCLDhCQUE4QjtZQUd2QixtQkFBbUI7WUFDbkIsb0JBQW9CO1lBRXBCLGNBQWM7WUFyQnJCLFVBQVU7WUFGVixpQkFBaUI7Ozt3QkEwRGhCLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2tCQUV0QyxLQUFLOytCQUNMLEtBQUs7MEJBQ0wsS0FBSzswQkFFTCxLQUFLO3FDQUNMLEtBQUs7cUJBRUwsS0FBSztvQkFJTCxLQUFLOzhCQUVMLE1BQU07OEJBQ04sTUFBTTtrQ0FDTixNQUFNOzZCQUNOLE1BQU07Z0NBRU4sS0FBSzsrQkFDTCxLQUFLOytCQUVMLEtBQUs7d0JBQ0wsS0FBSztzQ0FDTCxLQUFLO3FCQUdMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkZWZhdWx0SW1hZ2VPcHRpb25zLCBkZWZhdWx0TXVsdGltZWRpYU9wdGlvbnMsXG4gIGRlZmF1bHRQZGZPcHRpb25zLFxuICBkZWZhdWx0VW5zdXBwb3J0ZWRPcHRpb25zLFxuICBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2Vcbn0gZnJvbSAnLi90b29sYmFyL3Rvb2xiYXItYnV0dG9uLXZpc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBBbm5vdGF0aW9uU2V0IH0gZnJvbSAnLi9hbm5vdGF0aW9ucy9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLXNldC5tb2RlbCc7XG5pbXBvcnQgeyBUb29sYmFyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi90b29sYmFyL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBbm5vdGF0aW9uQXBpU2VydmljZSB9IGZyb20gJy4vYW5ub3RhdGlvbnMvc2VydmljZXMvYW5ub3RhdGlvbi1hcGkvYW5ub3RhdGlvbi1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBSZXNwb25zZVR5cGUsIFZpZXdlckV4Y2VwdGlvbiB9IGZyb20gJy4vdmlld2Vycy92aWV3ZXItZXhjZXB0aW9uLm1vZGVsJztcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9hbm5vdGF0aW9ucy9jb21tZW50LXNldC9jb21tZW50L2NvbW1lbnQuc2VydmljZSc7XG5pbXBvcnQgJ2hhbW1lcmpzJztcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgKiBhcyBmcm9tU3RvcmUgZnJvbSAnLi9zdG9yZS9yZWR1Y2Vycy9yZWR1Y2Vycyc7XG5pbXBvcnQgKiBhcyBmcm9tQW5ub1NlbGVjdG9ycyBmcm9tICcuL3N0b3JlL3NlbGVjdG9ycy9hbm5vdGF0aW9uLnNlbGVjdG9ycyc7XG5pbXBvcnQgKiBhcyBmcm9tRG9jdW1lbnRzU2VsZWN0b3IgZnJvbSAnLi9zdG9yZS9zZWxlY3RvcnMvZG9jdW1lbnQuc2VsZWN0b3JzJztcbmltcG9ydCAqIGFzIGZyb21Bbm5vQWN0aW9ucyBmcm9tICcuL3N0b3JlL2FjdGlvbnMvYW5ub3RhdGlvbi5hY3Rpb25zJztcbmltcG9ydCAqIGFzIGZyb21SZWRhY3RBY3Rpb25zIGZyb20gJy4vc3RvcmUvYWN0aW9ucy9yZWRhY3Rpb24uYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBmcm9tRG9jdW1lbnRBY3Rpb25zIGZyb20gJy4vc3RvcmUvYWN0aW9ucy9kb2N1bWVudC5hY3Rpb25zJztcblxuZW51bSBDb3JlQ29udGVudFR5cGVzIHtcbiAgUERGID0gJ3BkZicsXG4gIElNQUdFID0gJ2ltYWdlJ1xufVxuXG5lbnVtIE11bHRpbWVkaWFDb250ZW50VHlwZXMge1xuICBNUDQgPSAnbXA0JyxcbiAgTVAzID0gJ21wMycsXG59XG5cbmVudW0gQ29udmVydGlibGVDb250ZW50VHlwZXMge1xuICBFWENFTCA9ICdleGNlbCcsXG4gIFdPUkQgPSAnd29yZCcsXG4gIFBPV0VSUE9JTlQgPSAncG93ZXJwb2ludCcsXG4gIFRYVCA9ICd0eHQnLFxuICBSVEYgPSAncnRmJ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1tZWRpYS12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBNZWRpYVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdDaGVja2VkIHtcblxuICBAVmlld0NoaWxkKCd2aWV3ZXJSZWYnLCB7c3RhdGljOiBmYWxzZX0pIHZpZXdlclJlZjogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSB1cmw7XG4gIEBJbnB1dCgpIGRvd25sb2FkRmlsZU5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgY29udGVudFR5cGU6IHN0cmluZztcblxuICBASW5wdXQoKSBzaG93VG9vbGJhciA9IHRydWU7XG4gIEBJbnB1dCgpIHRvb2xiYXJCdXR0b25PdmVycmlkZXM6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWlnaHQ6IHN0cmluZztcbiAgcHVibGljIHZpZXdlckhlaWdodDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHdpZHRoID0gJzEwMCUnO1xuXG4gIEBPdXRwdXQoKSBtZWRpYUxvYWRTdGF0dXMgPSBuZXcgRXZlbnRFbWl0dGVyPFJlc3BvbnNlVHlwZT4oKTtcbiAgQE91dHB1dCgpIHZpZXdlckV4Y2VwdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8Vmlld2VyRXhjZXB0aW9uPigpO1xuICBAT3V0cHV0KCkgdG9vbGJhckV2ZW50c091dHB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8VG9vbGJhckV2ZW50U2VydmljZT4oKTtcbiAgQE91dHB1dCgpIHVuc2F2ZWRDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBJbnB1dCgpIGVuYWJsZUFubm90YXRpb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFubm90YXRpb25BcGlVcmw7XG5cbiAgQElucHV0KCkgZW5hYmxlUmVkYWN0aW9ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVJQ1AgPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGltZWRpYVBsYXllckVuYWJsZWQgPSBmYWxzZTtcblxuXG4gIEBJbnB1dCgpIGNhc2VJZDogc3RyaW5nO1xuXG4gIG11bHRpbWVkaWFDb250ZW50ID0gZmFsc2U7XG4gIGNvbnZlcnRpYmxlQ29udGVudCA9IGZhbHNlO1xuICB1bnN1cHBvcnRlZENvbnRlbnQgPSBmYWxzZTtcblxuICBkb2N1bWVudFRpdGxlOiBzdHJpbmc7XG4gIHNob3dDb21tZW50U3VtbWFyeTogYm9vbGVhbjtcbiAgYW5ub3RhdGlvblNldCQ6IE9ic2VydmFibGU8QW5ub3RhdGlvblNldCB8IHt9PjtcbiAgaGFzU2Nyb2xsQmFyOiBib29sZWFuO1xuICB0eXBlRXhjZXB0aW9uID0gZmFsc2U7XG4gIGhhc0RpZmZlcmVudFBhZ2VTaXplJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgJHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBwcmV2T2Zmc2V0OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8ZnJvbVN0b3JlLkFubm90YXRpb25TZXRTdGF0ZT4sXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2xiYXJCdXR0b25zOiBUb29sYmFyQnV0dG9uVmlzaWJpbGl0eVNlcnZpY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcGk6IEFubm90YXRpb25BcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbWVudFNlcnZpY2U6IENvbW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIGlmICh0aGlzLmFubm90YXRpb25BcGlVcmwpIHtcbiAgICAgIGFwaS5hbm5vdGF0aW9uQXBpVXJsID0gdGhpcy5hbm5vdGF0aW9uQXBpVXJsO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmFubm90YXRpb25TZXQkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tQW5ub1NlbGVjdG9ycy5nZXRBbm5vdGF0aW9uU2V0KSk7XG4gICAgdGhpcy5oYXNEaWZmZXJlbnRQYWdlU2l6ZSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21Eb2N1bWVudHNTZWxlY3Rvci5nZXRQYWdlRGlmZmVyZW5jZSkpO1xuICAgIHRoaXMuc2V0VG9vbGJhckJ1dHRvbnMoKTtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHNPdXRwdXQuZW1pdCh0aGlzLnRvb2xiYXJFdmVudHMpO1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbnMgPSB0aGlzLmNvbW1lbnRTZXJ2aWNlLmdldFVuc2F2ZWRDaGFuZ2VzKClcbiAgICAgIC5zdWJzY3JpYmUoY2hhbmdlcyA9PiB0aGlzLm9uQ29tbWVudENoYW5nZShjaGFuZ2VzKSk7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9ucy5hZGQodGhpcy50b29sYmFyRXZlbnRzLmdldFNob3dDb21tZW50U3VtbWFyeSgpXG4gICAgICAuc3Vic2NyaWJlKGNoYW5nZXMgPT4gdGhpcy5zaG93Q29tbWVudFN1bW1hcnkgPSBjaGFuZ2VzKSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGVpZ2h0ICYmIHRoaXMudmlld2VySGVpZ2h0ICE9PSB0aGlzLmhlaWdodCkge1xuICAgICAgdGhpcy52aWV3ZXJIZWlnaHQgPSB0aGlzLmhlaWdodDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGVpZ2h0KSB7XG4gICAgICBjb25zdCBjb21wT2Zmc2V0VG9wID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICAgIGNvbnN0IHZpZXdlck9mZnNldFRvcCA9IHRoaXMudmlld2VyUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgY29uc3Qgb2Zmc2V0ID0gY29tcE9mZnNldFRvcCArIHZpZXdlck9mZnNldFRvcDtcblxuICAgICAgaWYgKHRoaXMucHJldk9mZnNldCAhPT0gb2Zmc2V0KSB7XG4gICAgICAgIHRoaXMudmlld2VySGVpZ2h0ID0gYGNhbGMoMTAwdmggLSAke29mZnNldH1weClgO1xuICAgICAgICB0aGlzLnByZXZPZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuYW5ub3RhdGlvbkFwaVVybCkge1xuICAgICAgdGhpcy5hcGkuYW5ub3RhdGlvbkFwaVVybCA9IHRoaXMuYW5ub3RhdGlvbkFwaVVybDtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy51cmwpIHtcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5yZXNldCgpO1xuICAgICAgdGhpcy5jb21tZW50U2VydmljZS5yZXNldENvbW1lbnRTZXQoKTtcbiAgICAgIHRoaXMuZG9jdW1lbnRJZCA9IHRoaXMuZXh0cmFjdERNU3RvcmVEb2NJZCh0aGlzLnVybCk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tRG9jdW1lbnRBY3Rpb25zLlNldERvY3VtZW50SWQodGhpcy5kb2N1bWVudElkKSk7XG4gICAgICBpZiAodGhpcy5lbmFibGVBbm5vdGF0aW9ucyAmJiAhKHRoaXMubXVsdGltZWRpYUNvbnRlbnQgfHwgdGhpcy51bnN1cHBvcnRlZENvbnRlbnQpKSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21Bbm5vQWN0aW9ucy5Mb2FkQW5ub3RhdGlvblNldCh0aGlzLmRvY3VtZW50SWQpKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmVuYWJsZVJlZGFjdGlvbnMgJiYgISh0aGlzLm11bHRpbWVkaWFDb250ZW50IHx8IHRoaXMudW5zdXBwb3J0ZWRDb250ZW50KSAmJiB0aGlzLmRvY3VtZW50SWQpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbVJlZGFjdEFjdGlvbnMuTG9hZFJlZGFjdGlvbnModGhpcy5kb2N1bWVudElkKSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jb250ZW50VHlwZSA9PT0gJ2ltYWdlJykge1xuICAgICAgICB0aGlzLmRvY3VtZW50VGl0bGUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmNvbnRlbnRUeXBlKSB7XG4gICAgICB0aGlzLmNvbnZlcnRpYmxlQ29udGVudCA9IHRoaXMubmVlZHNDb252ZXJ0aW5nKCk7XG4gICAgICB0aGlzLm11bHRpbWVkaWFDb250ZW50ID0gdGhpcy5pc011bHRpbWVkaWEoKTtcbiAgICAgIHRoaXMudW5zdXBwb3J0ZWRDb250ZW50ID0gIXRoaXMuaXNTdXBwb3J0ZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFRvb2xiYXJCdXR0b25zKCk7XG4gICAgdGhpcy5kZXRlY3RPcygpO1xuICAgIHRoaXMudHlwZUV4Y2VwdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy4kc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmVlZHNDb252ZXJ0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRUeXBlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKENvbnZlcnRpYmxlQ29udGVudFR5cGVzKS5pbmNsdWRlcyh0aGlzLmNvbnRlbnRUeXBlLnRvVXBwZXJDYXNlKCkpO1xuICB9XG5cbiAgaXNNdWx0aW1lZGlhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRUeXBlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKE11bHRpbWVkaWFDb250ZW50VHlwZXMpLmluY2x1ZGVzKHRoaXMuY29udGVudFR5cGUudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdXBwb3J0ZWRUeXBlcyA9IE9iamVjdC5hc3NpZ24oe30sIE11bHRpbWVkaWFDb250ZW50VHlwZXMsIENvbnZlcnRpYmxlQ29udGVudFR5cGVzLCBDb3JlQ29udGVudFR5cGVzKTtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50VHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyhzdXBwb3J0ZWRUeXBlcykuaW5jbHVkZXModGhpcy5jb250ZW50VHlwZS50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuXG4gIG9uTWVkaWFMb2FkKHN0YXR1czogUmVzcG9uc2VUeXBlKSB7XG4gICAgdGhpcy5tZWRpYUxvYWRTdGF0dXMuZW1pdChzdGF0dXMpO1xuICB9XG5cbiAgc2V0VG9vbGJhckJ1dHRvbnMoKSB7XG4gICAgaWYgKHRoaXMuY29udGVudFR5cGUgPT09IENvcmVDb250ZW50VHlwZXMuUERGIHx8IHRoaXMubmVlZHNDb252ZXJ0aW5nKCkpIHtcbiAgICAgIHRoaXMudG9vbGJhckJ1dHRvbnMuc2V0dXAoe1xuICAgICAgICAuLi5kZWZhdWx0UGRmT3B0aW9ucywgc2hvd0hpZ2hsaWdodEJ1dHRvbjogdGhpcy5lbmFibGVBbm5vdGF0aW9ucywgc2hvd0RyYXdCdXR0b246IHRoaXMuZW5hYmxlQW5ub3RhdGlvbnMsXG4gICAgICAgIC4uLnRoaXMudG9vbGJhckJ1dHRvbk92ZXJyaWRlc1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbnRlbnRUeXBlID09PSBDb3JlQ29udGVudFR5cGVzLklNQUdFKSB7XG4gICAgICB0aGlzLnRvb2xiYXJCdXR0b25zLnNldHVwKHtcbiAgICAgICAgLi4uZGVmYXVsdEltYWdlT3B0aW9ucywgc2hvd0RyYXdCdXR0b246IHRoaXMuZW5hYmxlQW5ub3RhdGlvbnMsXG4gICAgICAgIC4uLnRoaXMudG9vbGJhckJ1dHRvbk92ZXJyaWRlc1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzTXVsdGltZWRpYSgpKSB7XG4gICAgICB0aGlzLnRvb2xiYXJCdXR0b25zLnNldHVwKHtcbiAgICAgICAgLi4uZGVmYXVsdE11bHRpbWVkaWFPcHRpb25zLFxuICAgICAgICAuLi50aGlzLnRvb2xiYXJCdXR0b25PdmVycmlkZXNcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRvb2xiYXJCdXR0b25zLnNldHVwKHtcbiAgICAgICAgLi4uZGVmYXVsdFVuc3VwcG9ydGVkT3B0aW9ucyxcbiAgICAgICAgLi4udGhpcy50b29sYmFyQnV0dG9uT3ZlcnJpZGVzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkxvYWRFeGNlcHRpb24oZXhjZXB0aW9uOiBWaWV3ZXJFeGNlcHRpb24pIHtcbiAgICB0aGlzLnZpZXdlckV4Y2VwdGlvbi5lbWl0KGV4Y2VwdGlvbik7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKCkpIHtcbiAgICAgIHRoaXMudHlwZUV4Y2VwdGlvbiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnR5cGVFeGNlcHRpb24gPSB0cnVlO1xuICAgICAgdGhpcy5jb250ZW50VHlwZSA9IG51bGw7XG4gICAgICB0aGlzLnNldFRvb2xiYXJCdXR0b25zKCk7XG4gICAgfVxuICB9XG5cbiAgb25Db21tZW50Q2hhbmdlKGNoYW5nZXM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnVuc2F2ZWRDaGFuZ2VzLmVtaXQoY2hhbmdlcyk7XG4gIH1cblxuICBvbkRvY3VtZW50VGl0bGVDaGFuZ2UodGl0bGU6IHN0cmluZykge1xuICAgIHRoaXMuZG9jdW1lbnRUaXRsZSA9IHRpdGxlO1xuICB9XG5cbiAgLy8gSWYgc2VjdXJlIG1vZGUgaXMgZW5hYmxlZCAod2hpY2ggYWRkcyBcImRvY3VtZW50c3YyXCIgdG8gdGhlIGRvY3VtZW50SWQpLCBnZXQgcmlkIG9mIGl0XG4gIHByaXZhdGUgZXh0cmFjdERNU3RvcmVEb2NJZCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdXJsID0gdXJsLmluY2x1ZGVzKCcvZG9jdW1lbnRzLycpID8gdXJsLnNwbGl0KCcvZG9jdW1lbnRzLycpWzFdIDogdXJsO1xuICAgIHVybCA9IHVybC5pbmNsdWRlcygnL2RvY3VtZW50c3YyLycpID8gdXJsLnNwbGl0KCcvZG9jdW1lbnRzdjIvJylbMV0gOiB1cmw7XG4gICAgcmV0dXJuIHVybC5yZXBsYWNlKCcvYmluYXJ5JywgJycpO1xuICB9XG5cbiAgZGV0ZWN0T3MoKSB7XG4gICAgdGhpcy5oYXNTY3JvbGxCYXIgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdXaW4nKSAhPT0gLTE7XG4gIH1cbn1cbiJdfQ==