@hmcts/media-viewer 3.1.2 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +116 -0
  2. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +109 -0
  3. package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +5 -5
  4. package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +50 -0
  5. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +94 -0
  6. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +116 -0
  7. package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +118 -0
  8. package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +86 -0
  9. package/{esm2020 → esm2022}/lib/annotations/annotations.module.mjs +61 -61
  10. package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +177 -0
  11. package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +50 -0
  12. package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +47 -0
  13. package/{esm2020 → esm2022}/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +5 -5
  14. package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +91 -0
  15. package/{esm2020 → esm2022}/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +5 -5
  16. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +54 -0
  17. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +68 -0
  18. package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +54 -0
  19. package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +123 -0
  20. package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +120 -0
  21. package/{esm2020 → esm2022}/lib/annotations/pipes/date/date.pipe.mjs +4 -4
  22. package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +32 -0
  23. package/{esm2020 → esm2022}/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/annotations/services/annotation-api/annotation-api.service.mjs +5 -5
  25. package/{esm2020 → esm2022}/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +5 -5
  26. package/{esm2020 → esm2022}/lib/annotations/services/tags/tags.services.mjs +5 -5
  27. package/esm2022/lib/annotations/tags/tags.component.mjs +53 -0
  28. package/{esm2020 → esm2022}/lib/bookmark/components/bookmark-icons.component.mjs +5 -5
  29. package/{esm2020 → esm2022}/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +5 -5
  30. package/esm2022/lib/icp/icp-follower.service.mjs +60 -0
  31. package/esm2022/lib/icp/icp-presenter.service.mjs +55 -0
  32. package/{esm2020 → esm2022}/lib/icp/icp-session-api.service.mjs +5 -5
  33. package/esm2022/lib/icp/icp-update.service.mjs +57 -0
  34. package/esm2022/lib/icp/icp.service.mjs +93 -0
  35. package/{esm2020 → esm2022}/lib/icp/participants-list/participants-list.component.mjs +5 -5
  36. package/esm2022/lib/icp/socket.service.mjs +118 -0
  37. package/esm2022/lib/media-viewer.component.mjs +244 -0
  38. package/{esm2020 → esm2022}/lib/media-viewer.module.mjs +55 -55
  39. package/{esm2020 → esm2022}/lib/print.service.mjs +4 -4
  40. package/esm2022/lib/redaction/components/redaction.component.mjs +91 -0
  41. package/{esm2020 → esm2022}/lib/redaction/services/redaction-api.service.mjs +5 -5
  42. package/{esm2020 → esm2022}/lib/shared/gov-uk-date/gov-uk-date.component.mjs +4 -4
  43. package/{esm2020 → esm2022}/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +7 -7
  44. package/{esm2020 → esm2022}/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +6 -6
  45. package/{esm2020 → esm2022}/lib/shared/gov-uk-label/gov-uk-label.component.mjs +7 -7
  46. package/{esm2020 → esm2022}/lib/shared/shared.module.mjs +19 -19
  47. package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +18 -0
  48. package/{esm2020 → esm2022}/lib/shared/util/services/number.helper.service.mjs +5 -5
  49. package/esm2022/lib/store/bookmarks-store-utils.mjs +49 -0
  50. package/esm2022/lib/store/effects/annotation.effects.mjs +51 -0
  51. package/{esm2020 → esm2022}/lib/store/effects/bookmarks.effects.mjs +5 -5
  52. package/{esm2020 → esm2022}/lib/store/effects/document.effects.mjs +5 -5
  53. package/{esm2020 → esm2022}/lib/store/effects/icp.effects.mjs +5 -5
  54. package/{esm2020 → esm2022}/lib/store/effects/redaction.effects.mjs +5 -5
  55. package/esm2022/lib/store/reducers/annotations.reducer.mjs +208 -0
  56. package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +116 -0
  57. package/esm2022/lib/store/reducers/document.reducer.mjs +135 -0
  58. package/esm2022/lib/store/reducers/icp.reducer.mjs +56 -0
  59. package/esm2022/lib/store/reducers/redaction.reducer.mjs +116 -0
  60. package/esm2022/lib/store/reducers/tags.reducer.mjs +93 -0
  61. package/esm2022/lib/store/selectors/annotation.selectors.mjs +81 -0
  62. package/{esm2020 → esm2022}/lib/store/selectors/bookmark.selectors.mjs +1 -1
  63. package/{esm2020 → esm2022}/lib/store/selectors/redaction.selectors.mjs +1 -1
  64. package/esm2022/lib/store/store-utils.mjs +131 -0
  65. package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +44 -0
  66. package/{esm2020 → esm2022}/lib/toolbar/icp-event.service.mjs +1 -1
  67. package/{esm2020 → esm2022}/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +5 -5
  68. package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +189 -0
  69. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +236 -0
  70. package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +68 -0
  71. package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +109 -0
  72. package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +94 -0
  73. package/esm2022/lib/toolbar/toolbar-event.service.mjs +178 -0
  74. package/{esm2020 → esm2022}/lib/toolbar/toolbar.module.mjs +25 -25
  75. package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +82 -0
  76. package/{esm2020 → esm2022}/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +5 -5
  77. package/esm2022/lib/viewers/grab-n-drag.directive.mjs +57 -0
  78. package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +166 -0
  79. package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +59 -0
  80. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +209 -0
  81. package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +5 -5
  82. package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +236 -0
  83. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +352 -0
  84. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +49 -0
  85. package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +5 -5
  86. package/{esm2020 → esm2022}/lib/viewers/rotation-persist/rotation-api.service.mjs +5 -5
  87. package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +61 -0
  88. package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +49 -0
  89. package/{esm2020 → esm2022}/lib/viewers/viewer-event.service.mjs +5 -5
  90. package/{esm2020 → esm2022}/lib/viewers/viewer-util.service.mjs +5 -5
  91. package/{fesm2020 → fesm2022}/hmcts-media-viewer.mjs +443 -444
  92. package/fesm2022/hmcts-media-viewer.mjs.map +1 -0
  93. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +1 -1
  94. package/lib/annotations/annotation-set/annotation-set.component.d.ts +1 -1
  95. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +1 -1
  96. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +1 -1
  97. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +1 -1
  98. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +1 -1
  99. package/lib/annotations/comment-set/comment/comment.component.d.ts +1 -1
  100. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +1 -1
  101. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +1 -1
  102. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +1 -1
  103. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +1 -1
  104. package/lib/annotations/comment-set/comment-set.component.d.ts +1 -1
  105. package/lib/annotations/comments-summary/comments-summary.component.d.ts +1 -1
  106. package/lib/annotations/tags/tags.component.d.ts +1 -1
  107. package/lib/bookmark/components/bookmark-icons.component.d.ts +1 -1
  108. package/lib/icp/socket.service.d.ts +6 -6
  109. package/lib/icp/socket.service.d.ts.map +1 -1
  110. package/lib/media-viewer.component.d.ts +1 -2
  111. package/lib/media-viewer.component.d.ts.map +1 -1
  112. package/lib/redaction/components/redaction.component.d.ts +1 -1
  113. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +1 -1
  114. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +1 -1
  115. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +1 -1
  116. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +1 -1
  117. package/lib/store/bookmarks-store-utils.d.ts.map +1 -1
  118. package/lib/toolbar/icp-event.service.d.ts +4 -4
  119. package/lib/toolbar/icp-event.service.d.ts.map +1 -1
  120. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +1 -1
  121. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +1 -1
  122. package/lib/toolbar/toolbar-event.service.d.ts +6 -6
  123. package/lib/toolbar/toolbar-event.service.d.ts.map +1 -1
  124. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +1 -1
  125. package/lib/viewers/grab-n-drag.directive.d.ts +1 -1
  126. package/lib/viewers/image-viewer/image-viewer.component.d.ts +1 -1
  127. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +1 -1
  128. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +1 -1
  129. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +1 -1
  130. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +1 -1
  131. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +1 -1
  132. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +1 -1
  133. package/lib/viewers/viewer-event.service.d.ts +1 -1
  134. package/lib/viewers/viewer-event.service.d.ts.map +1 -1
  135. package/package.json +16 -23
  136. package/esm2020/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +0 -116
  137. package/esm2020/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +0 -109
  138. package/esm2020/lib/annotations/annotation-set/annotation-set.component.mjs +0 -50
  139. package/esm2020/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +0 -94
  140. package/esm2020/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +0 -116
  141. package/esm2020/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +0 -118
  142. package/esm2020/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +0 -86
  143. package/esm2020/lib/annotations/comment-set/comment/comment.component.mjs +0 -177
  144. package/esm2020/lib/annotations/comment-set/comment/comment.service.mjs +0 -50
  145. package/esm2020/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +0 -47
  146. package/esm2020/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +0 -91
  147. package/esm2020/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +0 -54
  148. package/esm2020/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +0 -68
  149. package/esm2020/lib/annotations/comment-set/comment-set-render.service.mjs +0 -54
  150. package/esm2020/lib/annotations/comment-set/comment-set.component.mjs +0 -123
  151. package/esm2020/lib/annotations/comments-summary/comments-summary.component.mjs +0 -120
  152. package/esm2020/lib/annotations/pipes/filter/filter.pipe.mjs +0 -32
  153. package/esm2020/lib/annotations/tags/tags.component.mjs +0 -53
  154. package/esm2020/lib/icp/icp-follower.service.mjs +0 -60
  155. package/esm2020/lib/icp/icp-presenter.service.mjs +0 -55
  156. package/esm2020/lib/icp/icp-update.service.mjs +0 -57
  157. package/esm2020/lib/icp/icp.service.mjs +0 -93
  158. package/esm2020/lib/icp/socket.service.mjs +0 -118
  159. package/esm2020/lib/media-viewer.component.mjs +0 -245
  160. package/esm2020/lib/redaction/components/redaction.component.mjs +0 -91
  161. package/esm2020/lib/shared/util/helpers/html-templates.helper.mjs +0 -18
  162. package/esm2020/lib/store/bookmarks-store-utils.mjs +0 -49
  163. package/esm2020/lib/store/effects/annotation.effects.mjs +0 -51
  164. package/esm2020/lib/store/reducers/annotations.reducer.mjs +0 -208
  165. package/esm2020/lib/store/reducers/bookmarks.reducer.mjs +0 -116
  166. package/esm2020/lib/store/reducers/document.reducer.mjs +0 -135
  167. package/esm2020/lib/store/reducers/icp.reducer.mjs +0 -56
  168. package/esm2020/lib/store/reducers/redaction.reducer.mjs +0 -116
  169. package/esm2020/lib/store/reducers/tags.reducer.mjs +0 -93
  170. package/esm2020/lib/store/selectors/annotation.selectors.mjs +0 -81
  171. package/esm2020/lib/store/store-utils.mjs +0 -131
  172. package/esm2020/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +0 -44
  173. package/esm2020/lib/toolbar/main-toolbar/main-toolbar.component.mjs +0 -189
  174. package/esm2020/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +0 -236
  175. package/esm2020/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +0 -68
  176. package/esm2020/lib/toolbar/search-bar/search-bar.component.mjs +0 -109
  177. package/esm2020/lib/toolbar/toolbar-button-visibility.service.mjs +0 -94
  178. package/esm2020/lib/toolbar/toolbar-event.service.mjs +0 -178
  179. package/esm2020/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +0 -82
  180. package/esm2020/lib/viewers/grab-n-drag.directive.mjs +0 -57
  181. package/esm2020/lib/viewers/image-viewer/image-viewer.component.mjs +0 -166
  182. package/esm2020/lib/viewers/multimedia-player/multimedia-player.component.mjs +0 -59
  183. package/esm2020/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +0 -209
  184. package/esm2020/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +0 -236
  185. package/esm2020/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +0 -352
  186. package/esm2020/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +0 -49
  187. package/esm2020/lib/viewers/rotation-persist/rotation-persist.directive.mjs +0 -61
  188. package/esm2020/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +0 -49
  189. package/fesm2015/hmcts-media-viewer.mjs +0 -6946
  190. package/fesm2015/hmcts-media-viewer.mjs.map +0 -1
  191. package/fesm2020/hmcts-media-viewer.mjs.map +0 -1
  192. /package/{esm2020 → esm2022}/hmcts-media-viewer.mjs +0 -0
  193. /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-set.model.mjs +0 -0
  194. /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +0 -0
  195. /package/{esm2020 → esm2022}/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +0 -0
  196. /package/{esm2020 → esm2022}/lib/annotations/comment-set/comment/comment.model.mjs +0 -0
  197. /package/{esm2020 → esm2022}/lib/annotations/models/api-persisted.model.mjs +0 -0
  198. /package/{esm2020 → esm2022}/lib/annotations/models/event-select.model.mjs +0 -0
  199. /package/{esm2020 → esm2022}/lib/annotations/models/tags.model.mjs +0 -0
  200. /package/{esm2020 → esm2022}/lib/annotations/models/user.model.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/icp/icp.events.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/icp/icp.interfaces.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/redaction/services/redaction.model.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/store/actions/annotation.actions.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/store/actions/bookmark.actions.mjs +0 -0
  206. /package/{esm2020 → esm2022}/lib/store/actions/document.actions.mjs +0 -0
  207. /package/{esm2020 → esm2022}/lib/store/actions/icp.actions.mjs +0 -0
  208. /package/{esm2020 → esm2022}/lib/store/actions/redaction.actions.mjs +0 -0
  209. /package/{esm2020 → esm2022}/lib/store/actions/tag.actions.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/store/effects/index.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/store/models/bookmarks.interface.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/store/models/filters.interface.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/store/reducers/reducers.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/store/selectors/document.selectors.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/store/selectors/icp.selectors.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/store/selectors/tag.selectors.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/viewers/rotation-persist/rotation.model.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/viewers/viewer-exception.model.mjs +0 -0
  222. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
@@ -0,0 +1,93 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { select } from '@ngrx/store';
3
+ import * as fromIcpActions from '../store/actions/icp.actions';
4
+ import * as fromIcpSelectors from '../store/selectors/icp.selectors';
5
+ import { filter, take } from 'rxjs/operators';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../toolbar/toolbar-event.service";
8
+ import * as i2 from "../viewers/viewer-event.service";
9
+ import * as i3 from "./icp-update.service";
10
+ import * as i4 from "./icp-presenter.service";
11
+ import * as i5 from "./icp-follower.service";
12
+ import * as i6 from "@ngrx/store";
13
+ export class IcpService {
14
+ constructor(toolbarEvents, viewerEvents, socketService, presenterSubscriptions, followerSubscriptions, store) {
15
+ this.toolbarEvents = toolbarEvents;
16
+ this.viewerEvents = viewerEvents;
17
+ this.socketService = socketService;
18
+ this.presenterSubscriptions = presenterSubscriptions;
19
+ this.followerSubscriptions = followerSubscriptions;
20
+ this.store = store;
21
+ this.subscription = this.store.pipe(select(fromIcpSelectors.getCaseId), filter(value => !!value)).subscribe(caseId => {
22
+ this.caseId = caseId;
23
+ });
24
+ this.subscription.add(this.toolbarEvents.icp.sessionLaunch.subscribe(() => {
25
+ if (this.caseId) {
26
+ this.launchSession();
27
+ }
28
+ }));
29
+ }
30
+ ngOnDestroy() {
31
+ this.unsubscribeSession();
32
+ this.subscription.unsubscribe();
33
+ }
34
+ launchSession() {
35
+ this.store.dispatch(new fromIcpActions.LoadIcpSession(this.caseId));
36
+ this.subscription.add(this.store.pipe(select(fromIcpSelectors.getIcpSession), filter(value => !!value && Object.keys(value).length > 1), take(1)).subscribe(() => { this.setUpSessionSubscriptions(); }));
37
+ }
38
+ setUpSessionSubscriptions() {
39
+ this.sessionSubscription = this.toolbarEvents.icp.becomingPresenter.subscribe(() => this.becomePresenter());
40
+ this.sessionSubscription.add(this.toolbarEvents.icp.stoppingPresenting.subscribe(() => this.stopPresenting()));
41
+ this.sessionSubscription.add(this.toolbarEvents.icp.sessionExitConfirmed.subscribe(() => this.leavePresentation()));
42
+ this.sessionSubscription.add(this.store.pipe(select(fromIcpSelectors.getPresenter)).subscribe(presenter => this.presenter = presenter));
43
+ this.sessionSubscription.add(this.store.pipe(select(fromIcpSelectors.getClient)).subscribe(client => this.client = client));
44
+ this.sessionSubscription.add(this.store.pipe(select(fromIcpSelectors.isPresenter)).subscribe(isPresenter => {
45
+ this.isPresenter = isPresenter;
46
+ this.presenterSubscriptions.update(isPresenter);
47
+ this.followerSubscriptions.update(!isPresenter);
48
+ }));
49
+ this.sessionSubscription.add(this.socketService.clientDisconnected().subscribe(cli => this.clientDisconnected(cli)));
50
+ this.sessionSubscription.add(this.socketService.presenterUpdated().subscribe(pres => {
51
+ this.store.dispatch(new fromIcpActions.IcpPresenterUpdated(pres));
52
+ }));
53
+ this.sessionSubscription.add(this.socketService.participantListUpdated().subscribe(participants => {
54
+ this.store.dispatch(new fromIcpActions.IcpParticipantListUpdated(participants));
55
+ }));
56
+ }
57
+ unsubscribeSession() {
58
+ this.presenterSubscriptions.update(false);
59
+ this.followerSubscriptions.update(false);
60
+ this.sessionSubscription.unsubscribe();
61
+ }
62
+ leavePresentation() {
63
+ if (this.isPresenter) {
64
+ this.stopPresenting();
65
+ }
66
+ this.removeParticipant(this.client.id);
67
+ this.socketService.leaveSession();
68
+ this.store.dispatch(new fromIcpActions.LeaveIcpSocketSession());
69
+ this.unsubscribeSession();
70
+ }
71
+ stopPresenting() {
72
+ const presenter = { username: '', id: '' };
73
+ this.socketService.updatePresenter(presenter);
74
+ }
75
+ becomePresenter() {
76
+ this.socketService.updatePresenter(this.client);
77
+ }
78
+ clientDisconnected(client) {
79
+ if (client === this.presenter.id) {
80
+ this.stopPresenting();
81
+ }
82
+ this.removeParticipant(client);
83
+ }
84
+ removeParticipant(participantId) {
85
+ this.socketService.removeParticipant(participantId);
86
+ }
87
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: IcpService, deps: [{ token: i1.ToolbarEventService }, { token: i2.ViewerEventService }, { token: i3.IcpUpdateService }, { token: i4.IcpPresenterService }, { token: i5.IcpFollowerService }, { token: i6.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
88
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: IcpService }); }
89
+ }
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: IcpService, decorators: [{
91
+ type: Injectable
92
+ }], ctorParameters: () => [{ type: i1.ToolbarEventService }, { type: i2.ViewerEventService }, { type: i3.IcpUpdateService }, { type: i4.IcpPresenterService }, { type: i5.IcpFollowerService }, { type: i6.Store }] });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9pY3AvaWNwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQVF0RCxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxjQUFjLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxLQUFLLGdCQUFnQixNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBRzlDLE1BQU0sT0FBTyxVQUFVO0lBVXJCLFlBQTZCLGFBQWtDLEVBQ2xDLFlBQWdDLEVBQ2hDLGFBQStCLEVBQy9CLHNCQUEyQyxFQUMzQyxxQkFBeUMsRUFDbEQsS0FBc0I7UUFMYixrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXFCO1FBQzNDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBb0I7UUFDbEQsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25ILElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlB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QyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxjQUFjLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxTQUFTLEdBQW1CLEVBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQU07UUFDdkIsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsYUFBYTtRQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7aUlBNUZVLFVBQVU7cUlBQVYsVUFBVTs7MkZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNwUGFydGljaXBhbnQsIEljcFN0YXRlIH0gZnJvbSAnLi9pY3AuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi90b29sYmFyL3Rvb2xiYXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3ZXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi92aWV3ZXJzL3ZpZXdlci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEljcFVwZGF0ZVNlcnZpY2UgfSBmcm9tICcuL2ljcC11cGRhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBJY3BQcmVzZW50ZXJTZXJ2aWNlIH0gZnJvbSAnLi9pY3AtcHJlc2VudGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNwRm9sbG93ZXJTZXJ2aWNlIH0gZnJvbSAnLi9pY3AtZm9sbG93ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0ICogYXMgZnJvbUljcEFjdGlvbnMgZnJvbSAnLi4vc3RvcmUvYWN0aW9ucy9pY3AuYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBmcm9tSWNwU2VsZWN0b3JzIGZyb20gJy4uL3N0b3JlL3NlbGVjdG9ycy9pY3Auc2VsZWN0b3JzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEljcFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kgIHtcblxuICBjYXNlSWQ6IHN0cmluZztcbiAgY2xpZW50OiBJY3BQYXJ0aWNpcGFudDtcbiAgcHJlc2VudGVyOiBJY3BQYXJ0aWNpcGFudDtcbiAgaXNQcmVzZW50ZXI6IGJvb2xlYW47XG5cbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHNlc3Npb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld2VyRXZlbnRzOiBWaWV3ZXJFdmVudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgc29ja2V0U2VydmljZTogSWNwVXBkYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcmVzZW50ZXJTdWJzY3JpcHRpb25zOiBJY3BQcmVzZW50ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvbGxvd2VyU3Vic2NyaXB0aW9uczogSWNwRm9sbG93ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxJY3BTdGF0ZT4pIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbUljcFNlbGVjdG9ycy5nZXRDYXNlSWQpLCBmaWx0ZXIodmFsdWUgPT4gISF2YWx1ZSkpLnN1YnNjcmliZShjYXNlSWQgPT4ge1xuICAgICAgdGhpcy5jYXNlSWQgPSBjYXNlSWQ7XG4gICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMudG9vbGJhckV2ZW50cy5pY3Auc2Vzc2lvbkxhdW5jaC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY2FzZUlkKSB7IHRoaXMubGF1bmNoU2Vzc2lvbigpOyB9XG4gICAgfSkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy51bnN1YnNjcmliZVNlc3Npb24oKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbGF1bmNoU2Vzc2lvbigpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tSWNwQWN0aW9ucy5Mb2FkSWNwU2Vzc2lvbih0aGlzLmNhc2VJZCkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21JY3BTZWxlY3RvcnMuZ2V0SWNwU2Vzc2lvbiksXG4gICAgICBmaWx0ZXIodmFsdWUgPT4gISF2YWx1ZSAmJiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID4gMSApLFxuICAgICAgdGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHsgdGhpcy5zZXRVcFNlc3Npb25TdWJzY3JpcHRpb25zKCk7IH0pKTtcbiAgfVxuXG4gIHNldFVwU2Vzc2lvblN1YnNjcmlwdGlvbnMoKSB7XG4gICAgdGhpcy5zZXNzaW9uU3Vic2NyaXB0aW9uID0gdGhpcy50b29sYmFyRXZlbnRzLmljcC5iZWNvbWluZ1ByZXNlbnRlci5zdWJzY3JpYmUoKCkgPT4gdGhpcy5iZWNvbWVQcmVzZW50ZXIoKSk7XG4gICAgdGhpcy5zZXNzaW9uU3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRvb2xiYXJFdmVudHMuaWNwLnN0b3BwaW5nUHJlc2VudGluZy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdG9wUHJlc2VudGluZygpKSk7XG4gICAgdGhpcy5zZXNzaW9uU3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRvb2xiYXJFdmVudHMuaWNwLnNlc3Npb25FeGl0Q29uZmlybWVkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmxlYXZlUHJlc2VudGF0aW9uKCkpKTtcbiAgICB0aGlzLnNlc3Npb25TdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tSWNwU2VsZWN0b3JzLmdldFByZXNlbnRlcikpLnN1YnNjcmliZShwcmVzZW50ZXIgPT4gdGhpcy5wcmVzZW50ZXIgPSBwcmVzZW50ZXIgKVxuICAgICk7XG4gICAgdGhpcy5zZXNzaW9uU3Vic2NyaXB0aW9uLmFkZCh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21JY3BTZWxlY3RvcnMuZ2V0Q2xpZW50KSkuc3Vic2NyaWJlKGNsaWVudCA9PiB0aGlzLmNsaWVudCA9IGNsaWVudCkpO1xuICAgIHRoaXMuc2Vzc2lvblN1YnNjcmlwdGlvbi5hZGQodGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tSWNwU2VsZWN0b3JzLmlzUHJlc2VudGVyKSkuc3Vic2NyaWJlKGlzUHJlc2VudGVyID0+IHtcbiAgICAgICAgdGhpcy5pc1ByZXNlbnRlciA9IGlzUHJlc2VudGVyO1xuICAgICAgICB0aGlzLnByZXNlbnRlclN1YnNjcmlwdGlvbnMudXBkYXRlKGlzUHJlc2VudGVyKTtcbiAgICAgICAgdGhpcy5mb2xsb3dlclN1YnNjcmlwdGlvbnMudXBkYXRlKCFpc1ByZXNlbnRlcik7XG4gICAgfSkpO1xuICAgIHRoaXMuc2Vzc2lvblN1YnNjcmlwdGlvbi5hZGQodGhpcy5zb2NrZXRTZXJ2aWNlLmNsaWVudERpc2Nvbm5lY3RlZCgpLnN1YnNjcmliZShjbGkgPT4gdGhpcy5jbGllbnREaXNjb25uZWN0ZWQoY2xpKSkpO1xuICAgIHRoaXMuc2Vzc2lvblN1YnNjcmlwdGlvbi5hZGQodGhpcy5zb2NrZXRTZXJ2aWNlLnByZXNlbnRlclVwZGF0ZWQoKS5zdWJzY3JpYmUocHJlcyA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21JY3BBY3Rpb25zLkljcFByZXNlbnRlclVwZGF0ZWQocHJlcykpO1xuICAgIH0pKTtcbiAgICB0aGlzLnNlc3Npb25TdWJzY3JpcHRpb24uYWRkKHRoaXMuc29ja2V0U2VydmljZS5wYXJ0aWNpcGFudExpc3RVcGRhdGVkKCkuc3Vic2NyaWJlKHBhcnRpY2lwYW50cyA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21JY3BBY3Rpb25zLkljcFBhcnRpY2lwYW50TGlzdFVwZGF0ZWQocGFydGljaXBhbnRzKSk7XG4gICAgfSkpO1xuICB9XG5cbiAgdW5zdWJzY3JpYmVTZXNzaW9uKCkge1xuICAgIHRoaXMucHJlc2VudGVyU3Vic2NyaXB0aW9ucy51cGRhdGUoZmFsc2UpO1xuICAgIHRoaXMuZm9sbG93ZXJTdWJzY3JpcHRpb25zLnVwZGF0ZShmYWxzZSk7XG4gICAgdGhpcy5zZXNzaW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBsZWF2ZVByZXNlbnRhdGlvbigpIHtcbiAgICBpZiAodGhpcy5pc1ByZXNlbnRlcikge1xuICAgICAgdGhpcy5zdG9wUHJlc2VudGluZygpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZVBhcnRpY2lwYW50KHRoaXMuY2xpZW50LmlkKTtcbiAgICB0aGlzLnNvY2tldFNlcnZpY2UubGVhdmVTZXNzaW9uKCk7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUljcEFjdGlvbnMuTGVhdmVJY3BTb2NrZXRTZXNzaW9uKCkpO1xuICAgIHRoaXMudW5zdWJzY3JpYmVTZXNzaW9uKCk7XG4gIH1cblxuICBzdG9wUHJlc2VudGluZygpIHtcbiAgICBjb25zdCBwcmVzZW50ZXI6IEljcFBhcnRpY2lwYW50ID0ge3VzZXJuYW1lOiAnJywgaWQ6ICcnfTtcbiAgICB0aGlzLnNvY2tldFNlcnZpY2UudXBkYXRlUHJlc2VudGVyKHByZXNlbnRlcik7XG4gIH1cblxuICBiZWNvbWVQcmVzZW50ZXIoKSB7XG4gICAgdGhpcy5zb2NrZXRTZXJ2aWNlLnVwZGF0ZVByZXNlbnRlcih0aGlzLmNsaWVudCk7XG4gIH1cblxuICBjbGllbnREaXNjb25uZWN0ZWQoY2xpZW50KSB7XG4gICAgaWYgKGNsaWVudCA9PT0gdGhpcy5wcmVzZW50ZXIuaWQpIHtcbiAgICAgIHRoaXMuc3RvcFByZXNlbnRpbmcoKTtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVQYXJ0aWNpcGFudChjbGllbnQpO1xuICB9XG5cbiAgcmVtb3ZlUGFydGljaXBhbnQocGFydGljaXBhbnRJZCkge1xuICAgIHRoaXMuc29ja2V0U2VydmljZS5yZW1vdmVQYXJ0aWNpcGFudChwYXJ0aWNpcGFudElkKTtcbiAgfVxufVxuIl19
@@ -20,11 +20,11 @@ export class ParticipantsListComponent {
20
20
  ngOnDestroy() {
21
21
  this.subscription.unsubscribe();
22
22
  }
23
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ParticipantsListComponent, deps: [{ token: i1.ToolbarEventService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Component }); }
24
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: ParticipantsListComponent, selector: "mv-participants-list", ngImport: i0, template: "<div class=\"comments-panel comment-container icp-mode\" [ngClass]=\"{'expanded': showParticipantsList }\">\n\n <div class=\"participant__card no-shadow\">\n <p class=\"participant__name\">All Participants</p>\n </div>\n\n <div *ngIf=\"(presenter$ | async)?.username !== ''\" class=\"participant__card\">\n <div class=\"participant__header\"> Presenting </div>\n <p class=\"participant__name\">{{(presenter$ | async)?.username}}</p>\n </div>\n\n <div *ngIf=\"(participants$ | async).length > 1\" class=\"participant__card\">\n <div class=\"participant__header\">Following</div>\n <ng-container *ngFor=\"let participant of (participants$ | async)\">\n <p *ngIf=\"participant.id !== (presenter$ | async)?.id\" class=\"participant__name\">{{participant.username}}</p>\n </ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
23
25
  }
24
- /** @nocollapse */ ParticipantsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ParticipantsListComponent, deps: [{ token: i1.ToolbarEventService }, { token: i2.Store }], target: i0.ɵɵFactoryTarget.Component });
25
- /** @nocollapse */ ParticipantsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ParticipantsListComponent, selector: "mv-participants-list", ngImport: i0, template: "<div class=\"comments-panel comment-container icp-mode\" [ngClass]=\"{'expanded': showParticipantsList }\">\n\n <div class=\"participant__card no-shadow\">\n <p class=\"participant__name\">All Participants</p>\n </div>\n\n <div *ngIf=\"(presenter$ | async)?.username !== ''\" class=\"participant__card\">\n <div class=\"participant__header\"> Presenting </div>\n <p class=\"participant__name\">{{(presenter$ | async)?.username}}</p>\n </div>\n\n <div *ngIf=\"(participants$ | async).length > 1\" class=\"participant__card\">\n <div class=\"participant__header\">Following</div>\n <ng-container *ngFor=\"let participant of (participants$ | async)\">\n <p *ngIf=\"participant.id !== (presenter$ | async)?.id\" class=\"participant__name\">{{participant.username}}</p>\n </ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ParticipantsListComponent, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ParticipantsListComponent, decorators: [{
27
27
  type: Component,
28
28
  args: [{ selector: 'mv-participants-list', template: "<div class=\"comments-panel comment-container icp-mode\" [ngClass]=\"{'expanded': showParticipantsList }\">\n\n <div class=\"participant__card no-shadow\">\n <p class=\"participant__name\">All Participants</p>\n </div>\n\n <div *ngIf=\"(presenter$ | async)?.username !== ''\" class=\"participant__card\">\n <div class=\"participant__header\"> Presenting </div>\n <p class=\"participant__name\">{{(presenter$ | async)?.username}}</p>\n </div>\n\n <div *ngIf=\"(participants$ | async).length > 1\" class=\"participant__card\">\n <div class=\"participant__header\">Following</div>\n <ng-container *ngFor=\"let participant of (participants$ | async)\">\n <p *ngIf=\"participant.id !== (presenter$ | async)?.id\" class=\"participant__name\">{{participant.username}}</p>\n </ng-container>\n </div>\n</div>\n" }]
29
- }], ctorParameters: function () { return [{ type: i1.ToolbarEventService }, { type: i2.Store }]; } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljaXBhbnRzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvaWNwL3BhcnRpY2lwYW50cy1saXN0L3BhcnRpY2lwYW50cy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL2ljcC9wYXJ0aWNpcGFudHMtbGlzdC9wYXJ0aWNpcGFudHMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUk3RCxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxhQUFhLE1BQU0scUNBQXFDLENBQUM7Ozs7O0FBTXJFLE1BQU0sT0FBTyx5QkFBeUI7SUFTcEMsWUFBNkIsYUFBa0MsRUFDM0MsS0FBc0I7UUFEYixrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDM0MsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFIMUMseUJBQW9CLEdBQUcsS0FBSyxDQUFDO0lBR2dCLENBQUM7SUFFOUMsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBRXZFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ25JLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDOzswSUF0QlUseUJBQXlCOzhIQUF6Qix5QkFBeUIsNERDWHRDLGswQkFrQkE7NEZEUGEseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3Rvb2xiYXIvdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEljcFBhcnRpY2lwYW50LCBJY3BTdGF0ZSB9IGZyb20gJy4uL2ljcC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgKiBhcyBmcm9tU2VsZWN0b3JzIGZyb20gJy4uLy4uL3N0b3JlL3NlbGVjdG9ycy9pY3Auc2VsZWN0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtcGFydGljaXBhbnRzLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFydGljaXBhbnRzLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBhcnRpY2lwYW50c0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHBhcnRpY2lwYW50cyQ6IE9ic2VydmFibGU8SWNwUGFydGljaXBhbnRbXT47XG4gIHByZXNlbnRlciQ6IE9ic2VydmFibGU8SWNwUGFydGljaXBhbnQ+O1xuICBpc1ByZXNlbnRlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgc2hvd1BhcnRpY2lwYW50c0xpc3QgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPEljcFN0YXRlPikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhcnRpY2lwYW50cyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21TZWxlY3RvcnMuZ2V0UGFydGljaXBhbnRzKSk7XG4gICAgdGhpcy5wcmVzZW50ZXIkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tU2VsZWN0b3JzLmdldFByZXNlbnRlcikpO1xuICAgIHRoaXMuaXNQcmVzZW50ZXIkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tU2VsZWN0b3JzLmlzUHJlc2VudGVyKSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudG9vbGJhckV2ZW50cy5pY3AucGFydGljaXBhbnRzTGlzdFZpc2libGUuc3Vic2NyaWJlKGlzVmlzaWJsZSA9PiB0aGlzLnNob3dQYXJ0aWNpcGFudHNMaXN0ID0gaXNWaXNpYmxlKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb21tZW50cy1wYW5lbCBjb21tZW50LWNvbnRhaW5lciBpY3AtbW9kZVwiIFtuZ0NsYXNzXT1cInsnZXhwYW5kZWQnOiBzaG93UGFydGljaXBhbnRzTGlzdCB9XCI+XG5cbiAgPGRpdiBjbGFzcz1cInBhcnRpY2lwYW50X19jYXJkIG5vLXNoYWRvd1wiPlxuICAgIDxwIGNsYXNzPVwicGFydGljaXBhbnRfX25hbWVcIj5BbGwgUGFydGljaXBhbnRzPC9wPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiKHByZXNlbnRlciQgfCBhc3luYyk/LnVzZXJuYW1lICE9PSAnJ1wiIGNsYXNzPVwicGFydGljaXBhbnRfX2NhcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFydGljaXBhbnRfX2hlYWRlclwiPiBQcmVzZW50aW5nIDwvZGl2PlxuICAgIDxwIGNsYXNzPVwicGFydGljaXBhbnRfX25hbWVcIj57eyhwcmVzZW50ZXIkIHwgYXN5bmMpPy51c2VybmFtZX19PC9wPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiKHBhcnRpY2lwYW50cyQgfCBhc3luYykubGVuZ3RoID4gMVwiIGNsYXNzPVwicGFydGljaXBhbnRfX2NhcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFydGljaXBhbnRfX2hlYWRlclwiPkZvbGxvd2luZzwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhcnRpY2lwYW50IG9mIChwYXJ0aWNpcGFudHMkIHwgYXN5bmMpXCI+XG4gICAgICAgIDxwICpuZ0lmPVwicGFydGljaXBhbnQuaWQgIT09IChwcmVzZW50ZXIkIHwgYXN5bmMpPy5pZFwiIGNsYXNzPVwicGFydGljaXBhbnRfX25hbWVcIj57e3BhcnRpY2lwYW50LnVzZXJuYW1lfX08L3A+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
29
+ }], ctorParameters: () => [{ type: i1.ToolbarEventService }, { type: i2.Store }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGljaXBhbnRzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvaWNwL3BhcnRpY2lwYW50cy1saXN0L3BhcnRpY2lwYW50cy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL2ljcC9wYXJ0aWNpcGFudHMtbGlzdC9wYXJ0aWNpcGFudHMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUk3RCxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxhQUFhLE1BQU0scUNBQXFDLENBQUM7Ozs7O0FBTXJFLE1BQU0sT0FBTyx5QkFBeUI7SUFTcEMsWUFBNkIsYUFBa0MsRUFDM0MsS0FBc0I7UUFEYixrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDM0MsVUFBSyxHQUFMLEtBQUssQ0FBaUI7UUFIMUMseUJBQW9CLEdBQUcsS0FBSyxDQUFDO0lBR2dCLENBQUM7SUFFOUMsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBRXZFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ25JLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO2lJQXRCVSx5QkFBeUI7cUhBQXpCLHlCQUF5Qiw0RENYdEMsazBCQWtCQTs7MkZEUGEseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3Rvb2xiYXIvdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEljcFBhcnRpY2lwYW50LCBJY3BTdGF0ZSB9IGZyb20gJy4uL2ljcC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgKiBhcyBmcm9tU2VsZWN0b3JzIGZyb20gJy4uLy4uL3N0b3JlL3NlbGVjdG9ycy9pY3Auc2VsZWN0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXYtcGFydGljaXBhbnRzLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFydGljaXBhbnRzLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBhcnRpY2lwYW50c0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHBhcnRpY2lwYW50cyQ6IE9ic2VydmFibGU8SWNwUGFydGljaXBhbnRbXT47XG4gIHByZXNlbnRlciQ6IE9ic2VydmFibGU8SWNwUGFydGljaXBhbnQ+O1xuICBpc1ByZXNlbnRlciQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgc2hvd1BhcnRpY2lwYW50c0xpc3QgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPEljcFN0YXRlPikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhcnRpY2lwYW50cyQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21TZWxlY3RvcnMuZ2V0UGFydGljaXBhbnRzKSk7XG4gICAgdGhpcy5wcmVzZW50ZXIkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tU2VsZWN0b3JzLmdldFByZXNlbnRlcikpO1xuICAgIHRoaXMuaXNQcmVzZW50ZXIkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tU2VsZWN0b3JzLmlzUHJlc2VudGVyKSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMudG9vbGJhckV2ZW50cy5pY3AucGFydGljaXBhbnRzTGlzdFZpc2libGUuc3Vic2NyaWJlKGlzVmlzaWJsZSA9PiB0aGlzLnNob3dQYXJ0aWNpcGFudHNMaXN0ID0gaXNWaXNpYmxlKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb21tZW50cy1wYW5lbCBjb21tZW50LWNvbnRhaW5lciBpY3AtbW9kZVwiIFtuZ0NsYXNzXT1cInsnZXhwYW5kZWQnOiBzaG93UGFydGljaXBhbnRzTGlzdCB9XCI+XG5cbiAgPGRpdiBjbGFzcz1cInBhcnRpY2lwYW50X19jYXJkIG5vLXNoYWRvd1wiPlxuICAgIDxwIGNsYXNzPVwicGFydGljaXBhbnRfX25hbWVcIj5BbGwgUGFydGljaXBhbnRzPC9wPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiKHByZXNlbnRlciQgfCBhc3luYyk/LnVzZXJuYW1lICE9PSAnJ1wiIGNsYXNzPVwicGFydGljaXBhbnRfX2NhcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFydGljaXBhbnRfX2hlYWRlclwiPiBQcmVzZW50aW5nIDwvZGl2PlxuICAgIDxwIGNsYXNzPVwicGFydGljaXBhbnRfX25hbWVcIj57eyhwcmVzZW50ZXIkIHwgYXN5bmMpPy51c2VybmFtZX19PC9wPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiKHBhcnRpY2lwYW50cyQgfCBhc3luYykubGVuZ3RoID4gMVwiIGNsYXNzPVwicGFydGljaXBhbnRfX2NhcmRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFydGljaXBhbnRfX2hlYWRlclwiPkZvbGxvd2luZzwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhcnRpY2lwYW50IG9mIChwYXJ0aWNpcGFudHMkIHwgYXN5bmMpXCI+XG4gICAgICAgIDxwICpuZ0lmPVwicGFydGljaXBhbnQuaWQgIT09IChwcmVzZW50ZXIkIHwgYXN5bmMpPy5pZFwiIGNsYXNzPVwicGFydGljaXBhbnRfX25hbWVcIj57e3BhcnRpY2lwYW50LnVzZXJuYW1lfX08L3A+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,118 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject, of, Subject } from 'rxjs';
3
+ import { IcpEvents } from './icp.events';
4
+ import * as i0 from "@angular/core";
5
+ export class SocketService {
6
+ constructor() {
7
+ this.connected$ = new BehaviorSubject(false);
8
+ this.sessionJoined$ = new Subject();
9
+ this.presenterUpdated$ = new Subject();
10
+ this.clientDisconnected$ = new Subject();
11
+ this.participantUpdated$ = new Subject();
12
+ this.newParticipantJoined$ = new Subject();
13
+ this.screenUpdated$ = new Subject();
14
+ }
15
+ ngOnDestroy() {
16
+ this.subscription.unsubscribe();
17
+ }
18
+ connect(url) {
19
+ return this.getSocketClient(url).subscribe((socket) => {
20
+ socket.onopen = (event) => {
21
+ this.connected$.next(true);
22
+ };
23
+ socket.onmessage = (event) => {
24
+ console.log('onmessage');
25
+ const eventData = JSON.parse(event.data);
26
+ if (eventData.data && eventData.data.eventName) {
27
+ this.messageEventHandller(eventData.data.eventName, eventData.data.data);
28
+ }
29
+ };
30
+ socket.onerror = (event) => {
31
+ console.log('onerror');
32
+ };
33
+ socket.onclose = (event) => {
34
+ console.log('onclose');
35
+ };
36
+ });
37
+ }
38
+ connected() {
39
+ return this.connected$.asObservable();
40
+ }
41
+ join(session) {
42
+ this.emit(IcpEvents.SESSION_JOIN, session);
43
+ }
44
+ leave(session) {
45
+ this.emit(IcpEvents.SESSION_LEAVE, session);
46
+ this.subscription.unsubscribe();
47
+ }
48
+ emit(event, data) {
49
+ this.socket.send(JSON.stringify({
50
+ type: 'event',
51
+ event,
52
+ data
53
+ }));
54
+ }
55
+ listen(event) {
56
+ switch (event) {
57
+ case IcpEvents.SESSION_JOINED: {
58
+ return this.sessionJoined$.asObservable();
59
+ }
60
+ case IcpEvents.PRESENTER_UPDATED: {
61
+ return this.presenterUpdated$.asObservable();
62
+ }
63
+ case IcpEvents.CLIENT_DISCONNECTED: {
64
+ return this.clientDisconnected$.asObservable();
65
+ }
66
+ case IcpEvents.PARTICIPANTS_UPDATED: {
67
+ return this.participantUpdated$.asObservable();
68
+ }
69
+ case IcpEvents.NEW_PARTICIPANT_JOINED: {
70
+ return this.newParticipantJoined$.asObservable();
71
+ }
72
+ case IcpEvents.SCREEN_UPDATED: {
73
+ return this.screenUpdated$.asObservable();
74
+ }
75
+ default: {
76
+ break;
77
+ }
78
+ }
79
+ }
80
+ messageEventHandller(eventName, data) {
81
+ switch (eventName) {
82
+ case IcpEvents.SESSION_JOINED: {
83
+ this.sessionJoined$.next(data);
84
+ break;
85
+ }
86
+ case IcpEvents.PRESENTER_UPDATED: {
87
+ this.presenterUpdated$.next(data);
88
+ break;
89
+ }
90
+ case IcpEvents.CLIENT_DISCONNECTED: {
91
+ this.clientDisconnected$.next();
92
+ break;
93
+ }
94
+ case IcpEvents.PARTICIPANTS_UPDATED: {
95
+ this.participantUpdated$.next(data);
96
+ break;
97
+ }
98
+ case IcpEvents.NEW_PARTICIPANT_JOINED: {
99
+ this.newParticipantJoined$.next();
100
+ break;
101
+ }
102
+ case IcpEvents.SCREEN_UPDATED: {
103
+ this.screenUpdated$.next(data);
104
+ break;
105
+ }
106
+ }
107
+ }
108
+ getSocketClient(url) {
109
+ this.socket = new WebSocket(url, 'json.webpubsub.azure.v1');
110
+ return of(this.socket);
111
+ }
112
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: SocketService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
113
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: SocketService }); }
114
+ }
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: SocketService, decorators: [{
116
+ type: Injectable
117
+ }], ctorParameters: () => [] });
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9pY3Avc29ja2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUl6QyxNQUFNLE9BQU8sYUFBYTtJQVl4QjtRQVJBLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqRCxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDckMsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN4Qyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzFDLHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDMUMsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUM1QyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFckIsQ0FBQztJQUVqQixXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQWlCLEVBQUUsRUFBRTtZQUUvRCxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQztZQUVGLE1BQU0sQ0FB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WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSWNwRXZlbnRzIH0gZnJvbSAnLi9pY3AuZXZlbnRzJztcbmltcG9ydCB7IEljcFBhcnRpY2lwYW50IH0gZnJvbSAnLi9pY3AuaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTb2NrZXRTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwcml2YXRlIHNvY2tldDogV2ViU29ja2V0O1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgY29ubmVjdGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBzZXNzaW9uSm9pbmVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByZXNlbnRlclVwZGF0ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY2xpZW50RGlzY29ubmVjdGVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHBhcnRpY2lwYW50VXBkYXRlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBuZXdQYXJ0aWNpcGFudEpvaW5lZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBzY3JlZW5VcGRhdGVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgY29ubmVjdCh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmdldFNvY2tldENsaWVudCh1cmwpLnN1YnNjcmliZSgoc29ja2V0OiBXZWJTb2NrZXQpID0+IHtcblxuICAgICAgc29ja2V0Lm9ub3BlbiA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgICB9O1xuXG4gICAgICBzb2NrZXQub25tZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ29ubWVzc2FnZScpO1xuICAgICAgICBjb25zdCBldmVudERhdGEgPSBKU09OLnBhcnNlKGV2ZW50LmRhdGEpO1xuICAgICAgICBpZiAoZXZlbnREYXRhLmRhdGEgJiYgZXZlbnREYXRhLmRhdGEuZXZlbnROYW1lKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlRXZlbnRIYW5kbGxlcihldmVudERhdGEuZGF0YS5ldmVudE5hbWUsIGV2ZW50RGF0YS5kYXRhLmRhdGEpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBzb2NrZXQub25lcnJvciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ29uZXJyb3InKTtcbiAgICAgIH07XG5cbiAgICAgIHNvY2tldC5vbmNsb3NlID0gKGV2ZW50OiBDbG9zZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdvbmNsb3NlJyk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgY29ubmVjdGVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3RlZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBqb2luKHNlc3Npb24pIHtcbiAgICB0aGlzLmVtaXQoSWNwRXZlbnRzLlNFU1NJT05fSk9JTiwgc2Vzc2lvbik7XG4gIH1cblxuICBsZWF2ZShzZXNzaW9uKSB7XG4gICAgdGhpcy5lbWl0KEljcEV2ZW50cy5TRVNTSU9OX0xFQVZFLCBzZXNzaW9uKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZW1pdChldmVudDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHR5cGU6ICdldmVudCcsXG4gICAgICBldmVudCxcbiAgICAgIGRhdGFcbiAgICB9KSk7XG4gIH1cblxuICBsaXN0ZW4oZXZlbnQ6IEljcEV2ZW50cyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgc3dpdGNoIChldmVudCkge1xuICAgICAgY2FzZSBJY3BFdmVudHMuU0VTU0lPTl9KT0lORUQ6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkpvaW5lZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgICB9XG4gICAgICBjYXNlIEljcEV2ZW50cy5QUkVTRU5URVJfVVBEQVRFRDoge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVzZW50ZXJVcGRhdGVkJC5hc09ic2VydmFibGUoKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgSWNwRXZlbnRzLkNMSUVOVF9ESVNDT05ORUNURUQ6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xpZW50RGlzY29ubmVjdGVkJC5hc09ic2VydmFibGUoKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgSWNwRXZlbnRzLlBBUlRJQ0lQQU5UU19VUERBVEVEOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRpY2lwYW50VXBkYXRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgICB9XG4gICAgICBjYXNlIEljcEV2ZW50cy5ORVdfUEFSVElDSVBBTlRfSk9JTkVEOiB7XG4gICAgICAgIHJldHVybiB0aGlzLm5ld1BhcnRpY2lwYW50Sm9pbmVkJC5hc09ic2VydmFibGUoKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgSWNwRXZlbnRzLlNDUkVFTl9VUERBVEVEOiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjcmVlblVwZGF0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtZXNzYWdlRXZlbnRIYW5kbGxlcihldmVudE5hbWU6IHN0cmluZywgZGF0YTogYW55KSB7XG4gICAgc3dpdGNoIChldmVudE5hbWUpIHtcbiAgICAgIGNhc2UgSWNwRXZlbnRzLlNFU1NJT05fSk9JTkVEOiB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbkpvaW5lZCQubmV4dChkYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEljcEV2ZW50cy5QUkVTRU5URVJfVVBEQVRFRDoge1xuICAgICAgICB0aGlzLnByZXNlbnRlclVwZGF0ZWQkLm5leHQoZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBJY3BFdmVudHMuQ0xJRU5UX0RJU0NPTk5FQ1RFRDoge1xuICAgICAgICB0aGlzLmNsaWVudERpc2Nvbm5lY3RlZCQubmV4dCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgSWNwRXZlbnRzLlBBUlRJQ0lQQU5UU19VUERBVEVEOiB7XG4gICAgICAgIHRoaXMucGFydGljaXBhbnRVcGRhdGVkJC5uZXh0KGRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgSWNwRXZlbnRzLk5FV19QQVJUSUNJUEFOVF9KT0lORUQ6IHtcbiAgICAgICAgdGhpcy5uZXdQYXJ0aWNpcGFudEpvaW5lZCQubmV4dCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgSWNwRXZlbnRzLlNDUkVFTl9VUERBVEVEOiB7XG4gICAgICAgIHRoaXMuc2NyZWVuVXBkYXRlZCQubmV4dChkYXRhKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0U29ja2V0Q2xpZW50KHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxXZWJTb2NrZXQ+IHtcbiAgICB0aGlzLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQodXJsLCAnanNvbi53ZWJwdWJzdWIuYXp1cmUudjEnKTtcbiAgICByZXR1cm4gb2YodGhpcy5zb2NrZXQpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,244 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import { defaultImageOptions, defaultMultimediaOptions, defaultPdfOptions, defaultUnsupportedOptions } from './toolbar/toolbar-button-visibility.service';
3
+ import { select } from '@ngrx/store';
4
+ import * as fromAnnoSelectors from './store/selectors/annotation.selectors';
5
+ import * as fromDocumentsSelector from './store/selectors/document.selectors';
6
+ import * as fromAnnoActions from './store/actions/annotation.actions';
7
+ import * as fromRedactActions from './store/actions/redaction.actions';
8
+ import * as fromDocumentActions from './store/actions/document.actions';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@ngrx/store";
11
+ import * as i2 from "./toolbar/toolbar-button-visibility.service";
12
+ import * as i3 from "./toolbar/toolbar-event.service";
13
+ import * as i4 from "./annotations/services/annotation-api/annotation-api.service";
14
+ import * as i5 from "./annotations/comment-set/comment/comment.service";
15
+ import * as i6 from "@angular/common";
16
+ import * as i7 from "./toolbar/main-toolbar/main-toolbar.component";
17
+ import * as i8 from "./toolbar/redaction-toolbar/redaction-toolbar.component";
18
+ import * as i9 from "./toolbar/icp-toolbar/icp-toolbar.component";
19
+ import * as i10 from "./toolbar/highlight-toolbar/highlight-toolbar.component";
20
+ import * as i11 from "./annotations/comments-summary/comments-summary.component";
21
+ import * as i12 from "./viewers/pdf-viewer/pdf-viewer.component";
22
+ import * as i13 from "./viewers/image-viewer/image-viewer.component";
23
+ import * as i14 from "./viewers/unsupported-viewer/unsupported-viewer.component";
24
+ import * as i15 from "./viewers/multimedia-player/multimedia-player.component";
25
+ import * as i16 from "./viewers/convertible-content-viewer/convertible-content-viewer.component";
26
+ import * as i17 from "./viewers/rotation-persist/rotation-persist.directive";
27
+ import * as i18 from "./icp/confirm-exit/confirm-action-dialog.component";
28
+ var CoreContentTypes;
29
+ (function (CoreContentTypes) {
30
+ CoreContentTypes["PDF"] = "pdf";
31
+ CoreContentTypes["IMAGE"] = "image";
32
+ })(CoreContentTypes || (CoreContentTypes = {}));
33
+ var MultimediaContentTypes;
34
+ (function (MultimediaContentTypes) {
35
+ MultimediaContentTypes["MP4"] = "mp4";
36
+ MultimediaContentTypes["MP3"] = "mp3";
37
+ })(MultimediaContentTypes || (MultimediaContentTypes = {}));
38
+ var ConvertibleContentTypes;
39
+ (function (ConvertibleContentTypes) {
40
+ ConvertibleContentTypes["EXCEL"] = "excel";
41
+ ConvertibleContentTypes["WORD"] = "word";
42
+ ConvertibleContentTypes["POWERPOINT"] = "powerpoint";
43
+ ConvertibleContentTypes["TXT"] = "txt";
44
+ ConvertibleContentTypes["RTF"] = "rtf";
45
+ })(ConvertibleContentTypes || (ConvertibleContentTypes = {}));
46
+ export class MediaViewerComponent {
47
+ constructor(store, toolbarButtons, toolbarEvents, api, commentService, elRef, cdr) {
48
+ this.store = store;
49
+ this.toolbarButtons = toolbarButtons;
50
+ this.toolbarEvents = toolbarEvents;
51
+ this.api = api;
52
+ this.commentService = commentService;
53
+ this.elRef = elRef;
54
+ this.cdr = cdr;
55
+ this.showToolbar = true;
56
+ this.toolbarButtonOverrides = {};
57
+ this.width = '100%';
58
+ this.mediaLoadStatus = new EventEmitter();
59
+ this.viewerException = new EventEmitter();
60
+ this.toolbarEventsOutput = new EventEmitter();
61
+ this.unsavedChanges = new EventEmitter();
62
+ this.enableAnnotations = false;
63
+ this.enableRedactions = false;
64
+ this.enableICP = false;
65
+ this.multimediaPlayerEnabled = false;
66
+ this.enableRedactSearch = false;
67
+ this.multimediaContent = false;
68
+ this.convertibleContent = false;
69
+ this.unsupportedContent = false;
70
+ this.typeException = false;
71
+ if (this.annotationApiUrl) {
72
+ api.annotationApiUrl = this.annotationApiUrl;
73
+ }
74
+ }
75
+ ngAfterContentInit() {
76
+ this.annotationSet$ = this.store.pipe(select(fromAnnoSelectors.getAnnotationSet));
77
+ this.hasDifferentPageSize$ = this.store.pipe(select(fromDocumentsSelector.getPageDifference));
78
+ this.setToolbarButtons();
79
+ this.toolbarEventsOutput.emit(this.toolbarEvents);
80
+ this.$subscriptions = this.commentService.getUnsavedChanges()
81
+ .subscribe(changes => this.onCommentChange(changes));
82
+ this.$subscriptions.add(this.toolbarEvents.getShowCommentSummary()
83
+ .subscribe(changes => this.showCommentSummary = changes));
84
+ }
85
+ ngAfterViewChecked() {
86
+ if (this.height && this.viewerHeight !== this.height) {
87
+ this.viewerHeight = this.height;
88
+ this.cdr.detectChanges();
89
+ return;
90
+ }
91
+ if (!this.height) {
92
+ const compOffsetTop = this.elRef.nativeElement.getBoundingClientRect().top;
93
+ const viewerOffsetTop = this.viewerRef.nativeElement.offsetTop;
94
+ const offset = compOffsetTop + viewerOffsetTop;
95
+ if (this.prevOffset !== offset) {
96
+ this.viewerHeight = `calc(100vh - ${offset}px)`;
97
+ this.prevOffset = offset;
98
+ this.cdr.detectChanges();
99
+ }
100
+ }
101
+ }
102
+ ngOnChanges(changes) {
103
+ if (changes.annotationApiUrl) {
104
+ this.api.annotationApiUrl = this.annotationApiUrl;
105
+ }
106
+ if (changes.contentType) {
107
+ this.convertibleContent = this.needsConverting();
108
+ this.multimediaContent = this.isMultimedia();
109
+ this.unsupportedContent = !this.isSupported();
110
+ }
111
+ if (changes.url) {
112
+ this.toolbarEvents.reset();
113
+ this.commentService.resetCommentSet();
114
+ this.documentId = this.extractDMStoreDocId(this.url);
115
+ this.store.dispatch(new fromDocumentActions.SetDocumentId(this.documentId));
116
+ if (this.enableAnnotations && !(this.multimediaContent || this.unsupportedContent)) {
117
+ this.store.dispatch(new fromAnnoActions.LoadAnnotationSet(this.documentId));
118
+ }
119
+ if (this.enableRedactions && !(this.multimediaContent || this.unsupportedContent) && this.documentId) {
120
+ this.store.dispatch(new fromRedactActions.LoadRedactions(this.documentId));
121
+ }
122
+ if (this.contentType === 'image') {
123
+ this.documentTitle = null;
124
+ }
125
+ }
126
+ this.setToolbarButtons();
127
+ this.detectOs();
128
+ this.typeException = false;
129
+ }
130
+ ngOnDestroy() {
131
+ this.$subscriptions.unsubscribe();
132
+ }
133
+ needsConverting() {
134
+ return this.contentType !== null && Object.keys(ConvertibleContentTypes).includes(this.contentType.toUpperCase());
135
+ }
136
+ isMultimedia() {
137
+ return this.contentType !== null && Object.keys(MultimediaContentTypes).includes(this.contentType.toUpperCase());
138
+ }
139
+ isSupported() {
140
+ const supportedTypes = Object.assign({}, MultimediaContentTypes, ConvertibleContentTypes, CoreContentTypes);
141
+ return this.contentType !== null && Object.keys(supportedTypes).includes(this.contentType.toUpperCase());
142
+ }
143
+ onMediaLoad(status) {
144
+ this.mediaLoadStatus.emit(status);
145
+ }
146
+ setToolbarButtons() {
147
+ if (this.contentType === CoreContentTypes.PDF || this.needsConverting()) {
148
+ this.toolbarButtons.setup({
149
+ ...defaultPdfOptions, showHighlightButton: this.enableAnnotations, showDrawButton: false,
150
+ ...this.toolbarButtonOverrides
151
+ });
152
+ }
153
+ else if (this.contentType === CoreContentTypes.IMAGE) {
154
+ this.toolbarButtons.setup({
155
+ ...defaultImageOptions, showDrawButton: this.enableAnnotations,
156
+ ...this.toolbarButtonOverrides
157
+ });
158
+ }
159
+ else if (this.isMultimedia()) {
160
+ this.toolbarButtons.setup({
161
+ ...defaultMultimediaOptions,
162
+ ...this.toolbarButtonOverrides
163
+ });
164
+ }
165
+ else {
166
+ this.toolbarButtons.setup({
167
+ ...defaultUnsupportedOptions,
168
+ ...this.toolbarButtonOverrides
169
+ });
170
+ }
171
+ }
172
+ onLoadException(exception) {
173
+ this.viewerException.emit(exception);
174
+ if (!this.isSupported()) {
175
+ this.typeException = false;
176
+ }
177
+ else {
178
+ this.typeException = true;
179
+ this.contentType = null;
180
+ this.setToolbarButtons();
181
+ }
182
+ }
183
+ onCommentChange(changes) {
184
+ this.unsavedChanges.emit(changes);
185
+ }
186
+ onDocumentTitleChange(title) {
187
+ this.documentTitle = title;
188
+ }
189
+ // If secure mode is enabled (which adds "documentsv2" to the documentId), get rid of it
190
+ extractDMStoreDocId(url) {
191
+ url = url.includes('/documents/') ? url.split('/documents/')[1] : url;
192
+ url = url.includes('/documentsv2/') ? url.split('/documentsv2/')[1] : url;
193
+ return url.replace('/binary', '');
194
+ }
195
+ detectOs() {
196
+ this.hasScrollBar = window.navigator.userAgent.indexOf('Win') !== -1;
197
+ }
198
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: MediaViewerComponent, deps: [{ token: i1.Store }, { token: i2.ToolbarButtonVisibilityService }, { token: i3.ToolbarEventService }, { token: i4.AnnotationApiService }, { token: i5.CommentService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
199
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: MediaViewerComponent, selector: "mv-media-viewer", inputs: { url: "url", downloadFileName: "downloadFileName", contentType: "contentType", showToolbar: "showToolbar", toolbarButtonOverrides: "toolbarButtonOverrides", height: "height", width: "width", enableAnnotations: "enableAnnotations", annotationApiUrl: "annotationApiUrl", enableRedactions: "enableRedactions", enableICP: "enableICP", multimediaPlayerEnabled: "multimediaPlayerEnabled", enableRedactSearch: "enableRedactSearch", caseId: "caseId" }, outputs: { mediaLoadStatus: "mediaLoadStatus", viewerException: "viewerException", toolbarEventsOutput: "toolbarEventsOutput", unsavedChanges: "unsavedChanges" }, viewQueries: [{ propertyName: "viewerRef", first: true, predicate: ["viewerRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n 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\n *ngIf=\"showCommentSummary\"\n [title]=\"documentTitle || 'Comment Summary'\"\n [contentType]=\"contentType\"\n >\n </mv-comments-summary>\n\n <mv-confirm-action\n *ngIf=\"toolbarEvents.icp.leavingSession | async\"\n ></mv-confirm-action>\n\n <div id=\"mainContainer\">\n <mv-main-toolbar\n *ngIf=\"showToolbar\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableICP]=\"enableICP\"\n [enableRedactions]=\"enableRedactions\"\n [contentType]=\"contentType\"\n >\n </mv-main-toolbar>\n <mv-redaction-toolbar\n [showRedactSearch]=\"enableRedactSearch\"\n *ngIf=\"toolbarEvents.redactionMode | async\"\n ></mv-redaction-toolbar>\n <mv-highlight-toolbar\n *ngIf=\"toolbarEvents.highlightToolbarSubject | async\"\n ></mv-highlight-toolbar>\n <mv-icp-toolbar *ngIf=\"toolbarEvents.icp.enabled | async\"></mv-icp-toolbar>\n\n <div #viewerRef>\n <mv-conversion-viewer\n *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 >\n </mv-conversion-viewer>\n <mv-pdf-viewer\n *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 >\n </mv-pdf-viewer>\n <mv-image-viewer\n *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 >\n </mv-image-viewer>\n <mv-multimedia-player\n *ngIf=\"multimediaContent\"\n [multimediaOn]=\"multimediaPlayerEnabled\"\n [url]=\"url\"\n [downloadFileName]=\"downloadFileName\"\n (loadStatus)=\"onMediaLoad($event)\"\n >\n </mv-multimedia-player>\n <mv-unsupported-viewer\n *ngIf=\"unsupportedContent\"\n [url]=\"url\"\n [typeException]=\"typeException\"\n [downloadFileName]=\"downloadFileName\"\n (loadStatus)=\"onMediaLoad($event)\"\n (unsupportedViewerException)=\"onLoadException($event)\"\n >\n </mv-unsupported-viewer>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i7.MainToolbarComponent, selector: "mv-main-toolbar", inputs: ["enableAnnotations", "enableRedactions", "enableICP", "contentType"] }, { kind: "component", type: i8.RedactionToolbarComponent, selector: "mv-redaction-toolbar", inputs: ["showRedactSearch"] }, { kind: "component", type: i9.IcpToolbarComponent, selector: "mv-icp-toolbar" }, { kind: "component", type: i10.HighlightToolbarComponent, selector: "mv-highlight-toolbar" }, { kind: "component", type: i11.CommentsSummaryComponent, selector: "mv-comments-summary", inputs: ["title", "contentType"] }, { kind: "component", type: i12.PdfViewerComponent, selector: "mv-pdf-viewer", inputs: ["downloadUrl", "url", "downloadFileName", "enableAnnotations", "enableRedactions", "enableICP", "annotationSet", "enableRedactSearch", "height", "caseId", "searchBarHidden"], outputs: ["mediaLoadStatus", "pdfViewerException", "documentTitle"] }, { kind: "component", type: i13.ImageViewerComponent, selector: "mv-image-viewer", inputs: ["url", "downloadFileName", "enableAnnotations", "annotationSet", "height"], outputs: ["mediaLoadStatus", "imageViewerException"] }, { kind: "component", type: i14.UnsupportedViewerComponent, selector: "mv-unsupported-viewer", inputs: ["url", "downloadFileName", "typeException"], outputs: ["loadStatus", "unsupportedViewerException"] }, { kind: "component", type: i15.MultimediaPlayerComponent, selector: "mv-multimedia-player", inputs: ["url", "downloadFileName", "multimediaOn"], outputs: ["loadStatus"] }, { kind: "component", type: i16.ConvertibleContentViewerComponent, selector: "mv-conversion-viewer", inputs: ["originalUrl", "downloadFileName", "height", "enableAnnotations", "enableRedactions", "annotationSet"], outputs: ["mediaLoadStatus", "viewerException", "documentTitle"] }, { kind: "directive", type: i17.RotationPersistDirective, selector: "[mvRotationPersist]" }, { kind: "component", type: i18.ConfirmActionDialogComponent, selector: "mv-confirm-action" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
200
+ }
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: MediaViewerComponent, decorators: [{
202
+ type: Component,
203
+ args: [{ selector: 'mv-media-viewer', encapsulation: ViewEncapsulation.None, template: "<div\n 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\n *ngIf=\"showCommentSummary\"\n [title]=\"documentTitle || 'Comment Summary'\"\n [contentType]=\"contentType\"\n >\n </mv-comments-summary>\n\n <mv-confirm-action\n *ngIf=\"toolbarEvents.icp.leavingSession | async\"\n ></mv-confirm-action>\n\n <div id=\"mainContainer\">\n <mv-main-toolbar\n *ngIf=\"showToolbar\"\n [enableAnnotations]=\"enableAnnotations\"\n [enableICP]=\"enableICP\"\n [enableRedactions]=\"enableRedactions\"\n [contentType]=\"contentType\"\n >\n </mv-main-toolbar>\n <mv-redaction-toolbar\n [showRedactSearch]=\"enableRedactSearch\"\n *ngIf=\"toolbarEvents.redactionMode | async\"\n ></mv-redaction-toolbar>\n <mv-highlight-toolbar\n *ngIf=\"toolbarEvents.highlightToolbarSubject | async\"\n ></mv-highlight-toolbar>\n <mv-icp-toolbar *ngIf=\"toolbarEvents.icp.enabled | async\"></mv-icp-toolbar>\n\n <div #viewerRef>\n <mv-conversion-viewer\n *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 >\n </mv-conversion-viewer>\n <mv-pdf-viewer\n *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 >\n </mv-pdf-viewer>\n <mv-image-viewer\n *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 >\n </mv-image-viewer>\n <mv-multimedia-player\n *ngIf=\"multimediaContent\"\n [multimediaOn]=\"multimediaPlayerEnabled\"\n [url]=\"url\"\n [downloadFileName]=\"downloadFileName\"\n (loadStatus)=\"onMediaLoad($event)\"\n >\n </mv-multimedia-player>\n <mv-unsupported-viewer\n *ngIf=\"unsupportedContent\"\n [url]=\"url\"\n [typeException]=\"typeException\"\n [downloadFileName]=\"downloadFileName\"\n (loadStatus)=\"onMediaLoad($event)\"\n (unsupportedViewerException)=\"onLoadException($event)\"\n >\n </mv-unsupported-viewer>\n </div>\n </div>\n</div>\n" }]
204
+ }], ctorParameters: () => [{ type: i1.Store }, { type: i2.ToolbarButtonVisibilityService }, { type: i3.ToolbarEventService }, { type: i4.AnnotationApiService }, { type: i5.CommentService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { viewerRef: [{
205
+ type: ViewChild,
206
+ args: ['viewerRef', { static: false }]
207
+ }], url: [{
208
+ type: Input
209
+ }], downloadFileName: [{
210
+ type: Input
211
+ }], contentType: [{
212
+ type: Input
213
+ }], showToolbar: [{
214
+ type: Input
215
+ }], toolbarButtonOverrides: [{
216
+ type: Input
217
+ }], height: [{
218
+ type: Input
219
+ }], width: [{
220
+ type: Input
221
+ }], mediaLoadStatus: [{
222
+ type: Output
223
+ }], viewerException: [{
224
+ type: Output
225
+ }], toolbarEventsOutput: [{
226
+ type: Output
227
+ }], unsavedChanges: [{
228
+ type: Output
229
+ }], enableAnnotations: [{
230
+ type: Input
231
+ }], annotationApiUrl: [{
232
+ type: Input
233
+ }], enableRedactions: [{
234
+ type: Input
235
+ }], enableICP: [{
236
+ type: Input
237
+ }], multimediaPlayerEnabled: [{
238
+ type: Input
239
+ }], enableRedactSearch: [{
240
+ type: Input
241
+ }], caseId: [{
242
+ type: Input
243
+ }] } });
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL21lZGlhLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9tZWRpYS12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxtQkFBbUIsRUFBRSx3QkFBd0IsRUFDN0MsaUJBQWlCLEVBQ2pCLHlCQUF5QixFQUUxQixNQUFNLDZDQUE2QyxDQUFDO0FBTXJELE9BQU8sRUFBRSxNQUFNLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxLQUFLLGlCQUFpQixNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sS0FBSyxxQkFBcUIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEtBQUssZUFBZSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxpQkFBaUIsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEtBQUssbUJBQW1CLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXhFLElBQUssZ0JBR0o7QUFIRCxXQUFLLGdCQUFnQjtJQUNuQiwrQkFBVyxDQUFBO0lBQ1gsbUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSEksZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUdwQjtBQUVELElBQUssc0JBR0o7QUFIRCxXQUFLLHNCQUFzQjtJQUN6QixxQ0FBVyxDQUFBO0lBQ1gscUNBQVcsQ0FBQTtBQUNiLENBQUMsRUFISSxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBRzFCO0FBRUQsSUFB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Z0JBRUUsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRlZmF1bHRJbWFnZU9wdGlvbnMsIGRlZmF1bHRNdWx0aW1lZGlhT3B0aW9ucyxcbiAgZGVmYXVsdFBkZk9wdGlvbnMsXG4gIGRlZmF1bHRVbnN1cHBvcnRlZE9wdGlvbnMsXG4gIFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZVxufSBmcm9tICcuL3Rvb2xiYXIvdG9vbGJhci1idXR0b24tdmlzaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEFubm90YXRpb25TZXQgfSBmcm9tICcuL2Fubm90YXRpb25zL2Fubm90YXRpb24tc2V0L2Fubm90YXRpb24tc2V0Lm1vZGVsJztcbmltcG9ydCB7IFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuL3Rvb2xiYXIvdG9vbGJhci1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEFubm90YXRpb25BcGlTZXJ2aWNlIH0gZnJvbSAnLi9hbm5vdGF0aW9ucy9zZXJ2aWNlcy9hbm5vdGF0aW9uLWFwaS9hbm5vdGF0aW9uLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc3BvbnNlVHlwZSwgVmlld2VyRXhjZXB0aW9uIH0gZnJvbSAnLi92aWV3ZXJzL3ZpZXdlci1leGNlcHRpb24ubW9kZWwnO1xuaW1wb3J0IHsgQ29tbWVudFNlcnZpY2UgfSBmcm9tICcuL2Fubm90YXRpb25zL2NvbW1lbnQtc2V0L2NvbW1lbnQvY29tbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgKiBhcyBmcm9tU3RvcmUgZnJvbSAnLi9zdG9yZS9yZWR1Y2Vycy9yZWR1Y2Vycyc7XG5pbXBvcnQgKiBhcyBmcm9tQW5ub1NlbGVjdG9ycyBmcm9tICcuL3N0b3JlL3NlbGVjdG9ycy9hbm5vdGF0aW9uLnNlbGVjdG9ycyc7XG5pbXBvcnQgKiBhcyBmcm9tRG9jdW1lbnRzU2VsZWN0b3IgZnJvbSAnLi9zdG9yZS9zZWxlY3RvcnMvZG9jdW1lbnQuc2VsZWN0b3JzJztcbmltcG9ydCAqIGFzIGZyb21Bbm5vQWN0aW9ucyBmcm9tICcuL3N0b3JlL2FjdGlvbnMvYW5ub3RhdGlvbi5hY3Rpb25zJztcbmltcG9ydCAqIGFzIGZyb21SZWRhY3RBY3Rpb25zIGZyb20gJy4vc3RvcmUvYWN0aW9ucy9yZWRhY3Rpb24uYWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBmcm9tRG9jdW1lbnRBY3Rpb25zIGZyb20gJy4vc3RvcmUvYWN0aW9ucy9kb2N1bWVudC5hY3Rpb25zJztcblxuZW51bSBDb3JlQ29udGVudFR5cGVzIHtcbiAgUERGID0gJ3BkZicsXG4gIElNQUdFID0gJ2ltYWdlJ1xufVxuXG5lbnVtIE11bHRpbWVkaWFDb250ZW50VHlwZXMge1xuICBNUDQgPSAnbXA0JyxcbiAgTVAzID0gJ21wMycsXG59XG5cbmVudW0gQ29udmVydGlibGVDb250ZW50VHlwZXMge1xuICBFWENFTCA9ICdleGNlbCcsXG4gIFdPUkQgPSAnd29yZCcsXG4gIFBPV0VSUE9JTlQgPSAncG93ZXJwb2ludCcsXG4gIFRYVCA9ICd0eHQnLFxuICBSVEYgPSAncnRmJ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1tZWRpYS12aWV3ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVkaWEtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBNZWRpYVZpZXdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdDaGVja2VkIHtcblxuICBAVmlld0NoaWxkKCd2aWV3ZXJSZWYnLCB7c3RhdGljOiBmYWxzZX0pIHZpZXdlclJlZjogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKSB1cmw7XG4gIEBJbnB1dCgpIGRvd25sb2FkRmlsZU5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgY29udGVudFR5cGU6IHN0cmluZztcblxuICBASW5wdXQoKSBzaG93VG9vbGJhciA9IHRydWU7XG4gIEBJbnB1dCgpIHRvb2xiYXJCdXR0b25PdmVycmlkZXM6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWlnaHQ6IHN0cmluZztcbiAgcHVibGljIHZpZXdlckhlaWdodDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHdpZHRoID0gJzEwMCUnO1xuXG4gIEBPdXRwdXQoKSBtZWRpYUxvYWRTdGF0dXMgPSBuZXcgRXZlbnRFbWl0dGVyPFJlc3BvbnNlVHlwZT4oKTtcbiAgQE91dHB1dCgpIHZpZXdlckV4Y2VwdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8Vmlld2VyRXhjZXB0aW9uPigpO1xuICBAT3V0cHV0KCkgdG9vbGJhckV2ZW50c091dHB1dCA9IG5ldyBFdmVudEVtaXR0ZXI8VG9vbGJhckV2ZW50U2VydmljZT4oKTtcbiAgQE91dHB1dCgpIHVuc2F2ZWRDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBJbnB1dCgpIGVuYWJsZUFubm90YXRpb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFubm90YXRpb25BcGlVcmw7XG5cbiAgQElucHV0KCkgZW5hYmxlUmVkYWN0aW9ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBlbmFibGVJQ1AgPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGltZWRpYVBsYXllckVuYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZW5hYmxlUmVkYWN0U2VhcmNoID0gZmFsc2U7XG5cblxuICBASW5wdXQoKSBjYXNlSWQ6IHN0cmluZztcblxuICBtdWx0aW1lZGlhQ29udGVudCA9IGZhbHNlO1xuICBjb252ZXJ0aWJsZUNvbnRlbnQgPSBmYWxzZTtcbiAgdW5zdXBwb3J0ZWRDb250ZW50ID0gZmFsc2U7XG5cbiAgZG9jdW1lbnRUaXRsZTogc3RyaW5nO1xuICBzaG93Q29tbWVudFN1bW1hcnk6IGJvb2xlYW47XG4gIGFubm90YXRpb25TZXQkOiBPYnNlcnZhYmxlPEFubm90YXRpb25TZXQgfCB7fT47XG4gIGhhc1Njcm9sbEJhcjogYm9vbGVhbjtcbiAgdHlwZUV4Y2VwdGlvbiA9IGZhbHNlO1xuICBoYXNEaWZmZXJlbnRQYWdlU2l6ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGRvY3VtZW50SWQ6IHN0cmluZztcblxuICBwcml2YXRlICRzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcHJldk9mZnNldDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlPGZyb21TdG9yZS5Bbm5vdGF0aW9uU2V0U3RhdGU+LFxuICAgIHB1YmxpYyByZWFkb25seSB0b29sYmFyQnV0dG9uczogVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFkb25seSB0b29sYmFyRXZlbnRzOiBUb29sYmFyRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBpOiBBbm5vdGF0aW9uQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1lbnRTZXJ2aWNlOiBDb21tZW50U2VydmljZSxcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBpZiAodGhpcy5hbm5vdGF0aW9uQXBpVXJsKSB7XG4gICAgICBhcGkuYW5ub3RhdGlvbkFwaVVybCA9IHRoaXMuYW5ub3RhdGlvbkFwaVVybDtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5hbm5vdGF0aW9uU2V0JCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbUFubm9TZWxlY3RvcnMuZ2V0QW5ub3RhdGlvblNldCkpO1xuICAgIHRoaXMuaGFzRGlmZmVyZW50UGFnZVNpemUkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tRG9jdW1lbnRzU2VsZWN0b3IuZ2V0UGFnZURpZmZlcmVuY2UpKTtcbiAgICB0aGlzLnNldFRvb2xiYXJCdXR0b25zKCk7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzT3V0cHV0LmVtaXQodGhpcy50b29sYmFyRXZlbnRzKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb25zID0gdGhpcy5jb21tZW50U2VydmljZS5nZXRVbnNhdmVkQ2hhbmdlcygpXG4gICAgICAuc3Vic2NyaWJlKGNoYW5nZXMgPT4gdGhpcy5vbkNvbW1lbnRDaGFuZ2UoY2hhbmdlcykpO1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbnMuYWRkKHRoaXMudG9vbGJhckV2ZW50cy5nZXRTaG93Q29tbWVudFN1bW1hcnkoKVxuICAgICAgLnN1YnNjcmliZShjaGFuZ2VzID0+IHRoaXMuc2hvd0NvbW1lbnRTdW1tYXJ5ID0gY2hhbmdlcykpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhlaWdodCAmJiB0aGlzLnZpZXdlckhlaWdodCAhPT0gdGhpcy5oZWlnaHQpIHtcbiAgICAgIHRoaXMudmlld2VySGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmhlaWdodCkge1xuICAgICAgY29uc3QgY29tcE9mZnNldFRvcCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG4gICAgICBjb25zdCB2aWV3ZXJPZmZzZXRUb3AgPSB0aGlzLnZpZXdlclJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgIGNvbnN0IG9mZnNldCA9IGNvbXBPZmZzZXRUb3AgKyB2aWV3ZXJPZmZzZXRUb3A7XG5cbiAgICAgIGlmICh0aGlzLnByZXZPZmZzZXQgIT09IG9mZnNldCkge1xuICAgICAgICB0aGlzLnZpZXdlckhlaWdodCA9IGBjYWxjKDEwMHZoIC0gJHtvZmZzZXR9cHgpYDtcbiAgICAgICAgdGhpcy5wcmV2T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmFubm90YXRpb25BcGlVcmwpIHtcbiAgICAgIHRoaXMuYXBpLmFubm90YXRpb25BcGlVcmwgPSB0aGlzLmFubm90YXRpb25BcGlVcmw7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuY29udGVudFR5cGUpIHtcbiAgICAgIHRoaXMuY29udmVydGlibGVDb250ZW50ID0gdGhpcy5uZWVkc0NvbnZlcnRpbmcoKTtcbiAgICAgIHRoaXMubXVsdGltZWRpYUNvbnRlbnQgPSB0aGlzLmlzTXVsdGltZWRpYSgpO1xuICAgICAgdGhpcy51bnN1cHBvcnRlZENvbnRlbnQgPSAhdGhpcy5pc1N1cHBvcnRlZCgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnVybCkge1xuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnJlc2V0KCk7XG4gICAgICB0aGlzLmNvbW1lbnRTZXJ2aWNlLnJlc2V0Q29tbWVudFNldCgpO1xuICAgICAgdGhpcy5kb2N1bWVudElkID0gdGhpcy5leHRyYWN0RE1TdG9yZURvY0lkKHRoaXMudXJsKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21Eb2N1bWVudEFjdGlvbnMuU2V0RG9jdW1lbnRJZCh0aGlzLmRvY3VtZW50SWQpKTtcbiAgICAgIGlmICh0aGlzLmVuYWJsZUFubm90YXRpb25zICYmICEodGhpcy5tdWx0aW1lZGlhQ29udGVudCB8fCB0aGlzLnVuc3VwcG9ydGVkQ29udGVudCkpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUFubm9BY3Rpb25zLkxvYWRBbm5vdGF0aW9uU2V0KHRoaXMuZG9jdW1lbnRJZCkpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZW5hYmxlUmVkYWN0aW9ucyAmJiAhKHRoaXMubXVsdGltZWRpYUNvbnRlbnQgfHwgdGhpcy51bnN1cHBvcnRlZENvbnRlbnQpICYmIHRoaXMuZG9jdW1lbnRJZCkge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tUmVkYWN0QWN0aW9ucy5Mb2FkUmVkYWN0aW9ucyh0aGlzLmRvY3VtZW50SWQpKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNvbnRlbnRUeXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRUaXRsZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXRUb29sYmFyQnV0dG9ucygpO1xuICAgIHRoaXMuZGV0ZWN0T3MoKTtcbiAgICB0aGlzLnR5cGVFeGNlcHRpb24gPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5lZWRzQ29udmVydGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50VHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyhDb252ZXJ0aWJsZUNvbnRlbnRUeXBlcykuaW5jbHVkZXModGhpcy5jb250ZW50VHlwZS50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuXG4gIGlzTXVsdGltZWRpYSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50VHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyhNdWx0aW1lZGlhQ29udGVudFR5cGVzKS5pbmNsdWRlcyh0aGlzLmNvbnRlbnRUeXBlLnRvVXBwZXJDYXNlKCkpO1xuICB9XG5cbiAgaXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3VwcG9ydGVkVHlwZXMgPSBPYmplY3QuYXNzaWduKHt9LCBNdWx0aW1lZGlhQ29udGVudFR5cGVzLCBDb252ZXJ0aWJsZUNvbnRlbnRUeXBlcywgQ29yZUNvbnRlbnRUeXBlcyk7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFR5cGUgIT09IG51bGwgJiYgT2JqZWN0LmtleXMoc3VwcG9ydGVkVHlwZXMpLmluY2x1ZGVzKHRoaXMuY29udGVudFR5cGUudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICBvbk1lZGlhTG9hZChzdGF0dXM6IFJlc3BvbnNlVHlwZSkge1xuICAgIHRoaXMubWVkaWFMb2FkU3RhdHVzLmVtaXQoc3RhdHVzKTtcbiAgfVxuXG4gIHNldFRvb2xiYXJCdXR0b25zKCkge1xuICAgIGlmICh0aGlzLmNvbnRlbnRUeXBlID09PSBDb3JlQ29udGVudFR5cGVzLlBERiB8fCB0aGlzLm5lZWRzQ29udmVydGluZygpKSB7XG4gICAgICB0aGlzLnRvb2xiYXJCdXR0b25zLnNldHVwKHtcbiAgICAgICAgLi4uZGVmYXVsdFBkZk9wdGlvbnMsIHNob3dIaWdobGlnaHRCdXR0b246IHRoaXMuZW5hYmxlQW5ub3RhdGlvbnMsIHNob3dEcmF3QnV0dG9uOiBmYWxzZSxcbiAgICAgICAgLi4udGhpcy50b29sYmFyQnV0dG9uT3ZlcnJpZGVzXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29udGVudFR5cGUgPT09IENvcmVDb250ZW50VHlwZXMuSU1BR0UpIHtcbiAgICAgIHRoaXMudG9vbGJhckJ1dHRvbnMuc2V0dXAoe1xuICAgICAgICAuLi5kZWZhdWx0SW1hZ2VPcHRpb25zLCBzaG93RHJhd0J1dHRvbjogdGhpcy5lbmFibGVBbm5vdGF0aW9ucyxcbiAgICAgICAgLi4udGhpcy50b29sYmFyQnV0dG9uT3ZlcnJpZGVzXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNNdWx0aW1lZGlhKCkpIHtcbiAgICAgIHRoaXMudG9vbGJhckJ1dHRvbnMuc2V0dXAoe1xuICAgICAgICAuLi5kZWZhdWx0TXVsdGltZWRpYU9wdGlvbnMsXG4gICAgICAgIC4uLnRoaXMudG9vbGJhckJ1dHRvbk92ZXJyaWRlc1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9vbGJhckJ1dHRvbnMuc2V0dXAoe1xuICAgICAgICAuLi5kZWZhdWx0VW5zdXBwb3J0ZWRPcHRpb25zLFxuICAgICAgICAuLi50aGlzLnRvb2xiYXJCdXR0b25PdmVycmlkZXNcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uTG9hZEV4Y2VwdGlvbihleGNlcHRpb246IFZpZXdlckV4Y2VwdGlvbikge1xuICAgIHRoaXMudmlld2VyRXhjZXB0aW9uLmVtaXQoZXhjZXB0aW9uKTtcbiAgICBpZiAoIXRoaXMuaXNTdXBwb3J0ZWQoKSkge1xuICAgICAgdGhpcy50eXBlRXhjZXB0aW9uID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHlwZUV4Y2VwdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLmNvbnRlbnRUeXBlID0gbnVsbDtcbiAgICAgIHRoaXMuc2V0VG9vbGJhckJ1dHRvbnMoKTtcbiAgICB9XG4gIH1cblxuICBvbkNvbW1lbnRDaGFuZ2UoY2hhbmdlczogYm9vbGVhbikge1xuICAgIHRoaXMudW5zYXZlZENoYW5nZXMuZW1pdChjaGFuZ2VzKTtcbiAgfVxuXG4gIG9uRG9jdW1lbnRUaXRsZUNoYW5nZSh0aXRsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5kb2N1bWVudFRpdGxlID0gdGl0bGU7XG4gIH1cblxuICAvLyBJZiBzZWN1cmUgbW9kZSBpcyBlbmFibGVkICh3aGljaCBhZGRzIFwiZG9jdW1lbnRzdjJcIiB0byB0aGUgZG9jdW1lbnRJZCksIGdldCByaWQgb2YgaXRcbiAgcHJpdmF0ZSBleHRyYWN0RE1TdG9yZURvY0lkKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB1cmwgPSB1cmwuaW5jbHVkZXMoJy9kb2N1bWVudHMvJykgPyB1cmwuc3BsaXQoJy9kb2N1bWVudHMvJylbMV0gOiB1cmw7XG4gICAgdXJsID0gdXJsLmluY2x1ZGVzKCcvZG9jdW1lbnRzdjIvJykgPyB1cmwuc3BsaXQoJy9kb2N1bWVudHN2Mi8nKVsxXSA6IHVybDtcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoJy9iaW5hcnknLCAnJyk7XG4gIH1cblxuICBkZXRlY3RPcygpIHtcbiAgICB0aGlzLmhhc1Njcm9sbEJhciA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ1dpbicpICE9PSAtMTtcbiAgfVxufVxuIiwiPGRpdlxuICBpZD1cIm91dGVyQ29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdoYXMtcmVkYWN0LWJhcic6IHRvb2xiYXJFdmVudHMucmVkYWN0aW9uTW9kZSB8IGFzeW5jLFxuICAgICdpY3AtbW9kZSc6IHRvb2xiYXJFdmVudHMuaWNwLmVuYWJsZWQgfCBhc3luYyxcbiAgICAnaXMtcmVkYWN0aW9uLXByZXZpZXcnOiB0b29sYmFyRXZlbnRzLnJlZGFjdGlvblByZXZpZXcgfCBhc3luYyxcbiAgICBzaWRlYmFyT3BlbjogdG9vbGJhckV2ZW50cy5zaWRlYmFyT3BlbiB8IGFzeW5jLFxuICAgICdoYXMtc2Nyb2xsLWJhcic6IGhhc1Njcm9sbEJhcixcbiAgICAnaGFzLWRpZmZlcmVudC1wYWdlLXNpemUnOiBoYXNEaWZmZXJlbnRQYWdlU2l6ZSQgfCBhc3luY1xuICB9XCJcbiAgW25nU3R5bGVdPVwieyB3aWR0aDogd2lkdGggfVwiXG4+XG4gIDxtdi1jb21tZW50cy1zdW1tYXJ5XG4gICAgKm5nSWY9XCJzaG93Q29tbWVudFN1bW1hcnlcIlxuICAgIFt0aXRsZV09XCJkb2N1bWVudFRpdGxlIHx8ICdDb21tZW50IFN1bW1hcnknXCJcbiAgICBbY29udGVudFR5cGVdPVwiY29udGVudFR5cGVcIlxuICA+XG4gIDwvbXYtY29tbWVudHMtc3VtbWFyeT5cblxuICA8bXYtY29uZmlybS1hY3Rpb25cbiAgICAqbmdJZj1cInRvb2xiYXJFdmVudHMuaWNwLmxlYXZpbmdTZXNzaW9uIHwgYXN5bmNcIlxuICA+PC9tdi1jb25maXJtLWFjdGlvbj5cblxuICA8ZGl2IGlkPVwibWFpbkNvbnRhaW5lclwiPlxuICAgIDxtdi1tYWluLXRvb2xiYXJcbiAgICAgICpuZ0lmPVwic2hvd1Rvb2xiYXJcIlxuICAgICAgW2VuYWJsZUFubm90YXRpb25zXT1cImVuYWJsZUFubm90YXRpb25zXCJcbiAgICAgIFtlbmFibGVJQ1BdPVwiZW5hYmxlSUNQXCJcbiAgICAgIFtlbmFibGVSZWRhY3Rpb25zXT1cImVuYWJsZVJlZGFjdGlvbnNcIlxuICAgICAgW2NvbnRlbnRUeXBlXT1cImNvbnRlbnRUeXBlXCJcbiAgICA+XG4gICAgPC9tdi1tYWluLXRvb2xiYXI+XG4gICAgPG12LXJlZGFjdGlvbi10b29sYmFyXG4gICAgICBbc2hvd1JlZGFjdFNlYXJjaF09XCJlbmFibGVSZWRhY3RTZWFyY2hcIlxuICAgICAgKm5nSWY9XCJ0b29sYmFyRXZlbnRzLnJlZGFjdGlvbk1vZGUgfCBhc3luY1wiXG4gICAgPjwvbXYtcmVkYWN0aW9uLXRvb2xiYXI+XG4gICAgPG12LWhpZ2hsaWdodC10b29sYmFyXG4gICAgICAqbmdJZj1cInRvb2xiYXJFdmVudHMuaGlnaGxpZ2h0VG9vbGJhclN1YmplY3QgfCBhc3luY1wiXG4gICAgPjwvbXYtaGlnaGxpZ2h0LXRvb2xiYXI+XG4gICAgPG12LWljcC10b29sYmFyICpuZ0lmPVwidG9vbGJhckV2ZW50cy5pY3AuZW5hYmxlZCB8IGFzeW5jXCI+PC9tdi1pY3AtdG9vbGJhcj5cblxuICAgIDxkaXYgI3ZpZXdlclJlZj5cbiAgICAgIDxtdi1jb252ZXJzaW9uLXZpZXdlclxuICAgICAgICAqbmdJZj1cImNvbnZlcnRpYmxlQ29udGVudFwiXG4gICAgICAgIChkb2N1bWVudFRpdGxlKT1cIm9uRG9jdW1lbnRUaXRsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKG1lZGlhTG9hZFN0YXR1cyk9XCJvbk1lZGlhTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgKHZpZXdlckV4Y2VwdGlvbik9XCJvbkxvYWRFeGNlcHRpb24oJGV2ZW50KVwiXG4gICAgICAgIFtlbmFibGVBbm5vdGF0aW9uc109XCJlbmFibGVBbm5vdGF0aW9uc1wiXG4gICAgICAgIFtlbmFibGVSZWRhY3Rpb25zXT1cImVuYWJsZVJlZGFjdGlvbnNcIlxuICAgICAgICBbYW5ub3RhdGlvblNldF09XCJlbmFibGVBbm5vdGF0aW9ucyA/IChhbm5vdGF0aW9uU2V0JCB8IGFzeW5jKSA6IG51bGxcIlxuICAgICAgICBbb3JpZ2luYWxVcmxdPVwidXJsXCJcbiAgICAgICAgW2Rvd25sb2FkRmlsZU5hbWVdPVwiZG93bmxvYWRGaWxlTmFtZVwiXG4gICAgICAgIFtoZWlnaHRdPVwidmlld2VySGVpZ2h0XCJcbiAgICAgICAgbXZSb3RhdGlvblBlcnNpc3RcbiAgICAgID5cbiAgICAgIDwvbXYtY29udmVyc2lvbi12aWV3ZXI+XG4gICAgICA8bXYtcGRmLXZpZXdlclxuICAgICAgICAqbmdJZj1cImNvbnRlbnRUeXBlID09PSAncGRmJ1wiXG4gICAgICAgICNwZGZWaWV3ZXJcbiAgICAgICAgKG1lZGlhTG9hZFN0YXR1cyk9XCJvbk1lZGlhTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgKHBkZlZpZXdlckV4Y2VwdGlvbik9XCJvbkxvYWRFeGNlcHRpb24oJGV2ZW50KVwiXG4gICAgICAgIChkb2N1bWVudFRpdGxlKT1cIm9uRG9jdW1lbnRUaXRsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW3VybF09XCJ1cmxcIlxuICAgICAgICBbZW5hYmxlQW5ub3RhdGlvbnNdPVwiZW5hYmxlQW5ub3RhdGlvbnNcIlxuICAgICAgICBbZW5hYmxlUmVkYWN0aW9uc109XCJlbmFibGVSZWRhY3Rpb25zXCJcbiAgICAgICAgW2VuYWJsZUlDUF09XCJlbmFibGVJQ1BcIlxuICAgICAgICBbYW5ub3RhdGlvblNldF09XCJlbmFibGVBbm5vdGF0aW9ucyA/IChhbm5vdGF0aW9uU2V0JCB8IGFzeW5jKSA6IG51bGxcIlxuICAgICAgICBbZG93bmxvYWRGaWxlTmFtZV09XCJkb3dubG9hZEZpbGVOYW1lXCJcbiAgICAgICAgW2hlaWdodF09XCJ2aWV3ZXJIZWlnaHRcIlxuICAgICAgICBbY2FzZUlkXT1cImNhc2VJZFwiXG4gICAgICAgIG12Um90YXRpb25QZXJzaXN0XG4gICAgICA+XG4gICAgICA8L212LXBkZi12aWV3ZXI+XG4gICAgICA8bXYtaW1hZ2Utdmlld2VyXG4gICAgICAgICpuZ0lmPVwiY29udGVudFR5cGUgPT09ICdpbWFnZSdcIlxuICAgICAgICAobWVkaWFMb2FkU3RhdHVzKT1cIm9uTWVkaWFMb2FkKCRldmVudClcIlxuICAgICAgICAoaW1hZ2VWaWV3ZXJFeGNlcHRpb24pPVwib25Mb2FkRXhjZXB0aW9uKCRldmVudClcIlxuICAgICAgICBbdXJsXT1cInVybFwiXG4gICAgICAgIFtlbmFibGVBbm5vdGF0aW9uc109XCJlbmFibGVBbm5vdGF0aW9uc1wiXG4gICAgICAgIFthbm5vdGF0aW9uU2V0XT1cImVuYWJsZUFubm90YXRpb25zID8gKGFubm90YXRpb25TZXQkIHwgYXN5bmMpIDogbnVsbFwiXG4gICAgICAgIFtkb3dubG9hZEZpbGVOYW1lXT1cImRvd25sb2FkRmlsZU5hbWVcIlxuICAgICAgICBbaGVpZ2h0XT1cInZpZXdlckhlaWdodFwiXG4gICAgICAgIG12Um90YXRpb25QZXJzaXN0XG4gICAgICA+XG4gICAgICA8L212LWltYWdlLXZpZXdlcj5cbiAgICAgIDxtdi1tdWx0aW1lZGlhLXBsYXllclxuICAgICAgICAqbmdJZj1cIm11bHRpbWVkaWFDb250ZW50XCJcbiAgICAgICAgW211bHRpbWVkaWFPbl09XCJtdWx0aW1lZGlhUGxheWVyRW5hYmxlZFwiXG4gICAgICAgIFt1cmxdPVwidXJsXCJcbiAgICAgICAgW2Rvd25sb2FkRmlsZU5hbWVdPVwiZG93bmxvYWRGaWxlTmFtZVwiXG4gICAgICAgIChsb2FkU3RhdHVzKT1cIm9uTWVkaWFMb2FkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgPC9tdi1tdWx0aW1lZGlhLXBsYXllcj5cbiAgICAgIDxtdi11bnN1cHBvcnRlZC12aWV3ZXJcbiAgICAgICAgKm5nSWY9XCJ1bnN1cHBvcnRlZENvbnRlbnRcIlxuICAgICAgICBbdXJsXT1cInVybFwiXG4gICAgICAgIFt0eXBlRXhjZXB0aW9uXT1cInR5cGVFeGNlcHRpb25cIlxuICAgICAgICBbZG93bmxvYWRGaWxlTmFtZV09XCJkb3dubG9hZEZpbGVOYW1lXCJcbiAgICAgICAgKGxvYWRTdGF0dXMpPVwib25NZWRpYUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICh1bnN1cHBvcnRlZFZpZXdlckV4Y2VwdGlvbik9XCJvbkxvYWRFeGNlcHRpb24oJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICA8L212LXVuc3VwcG9ydGVkLXZpZXdlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==