@hmcts/media-viewer 4.0.1 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/esm2020/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +116 -0
  2. package/esm2020/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +109 -0
  3. package/{esm2022 → esm2020}/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +5 -5
  4. package/esm2020/lib/annotations/annotation-set/annotation-set.component.mjs +50 -0
  5. package/esm2020/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +94 -0
  6. package/esm2020/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +116 -0
  7. package/esm2020/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +118 -0
  8. package/esm2020/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +86 -0
  9. package/{esm2022 → esm2020}/lib/annotations/annotations.module.mjs +61 -61
  10. package/esm2020/lib/annotations/comment-set/comment/comment.component.mjs +177 -0
  11. package/esm2020/lib/annotations/comment-set/comment/comment.service.mjs +50 -0
  12. package/esm2020/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +47 -0
  13. package/{esm2022 → esm2020}/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +5 -5
  14. package/esm2020/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +91 -0
  15. package/{esm2022 → esm2020}/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +5 -5
  16. package/esm2020/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +54 -0
  17. package/esm2020/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +68 -0
  18. package/esm2020/lib/annotations/comment-set/comment-set-render.service.mjs +54 -0
  19. package/esm2020/lib/annotations/comment-set/comment-set.component.mjs +123 -0
  20. package/esm2020/lib/annotations/comments-summary/comments-summary.component.mjs +120 -0
  21. package/{esm2022 → esm2020}/lib/annotations/pipes/date/date.pipe.mjs +4 -4
  22. package/esm2020/lib/annotations/pipes/filter/filter.pipe.mjs +32 -0
  23. package/{esm2022 → esm2020}/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +4 -4
  24. package/{esm2022 → esm2020}/lib/annotations/services/annotation-api/annotation-api.service.mjs +5 -5
  25. package/{esm2022 → esm2020}/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +5 -5
  26. package/{esm2022 → esm2020}/lib/annotations/services/tags/tags.services.mjs +5 -5
  27. package/esm2020/lib/annotations/tags/tags.component.mjs +53 -0
  28. package/{esm2022 → esm2020}/lib/bookmark/components/bookmark-icons.component.mjs +5 -5
  29. package/{esm2022 → esm2020}/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +5 -5
  30. package/esm2020/lib/icp/icp-follower.service.mjs +60 -0
  31. package/esm2020/lib/icp/icp-presenter.service.mjs +55 -0
  32. package/esm2020/lib/icp/icp-session-api.service.mjs +21 -0
  33. package/esm2020/lib/icp/icp-update.service.mjs +65 -0
  34. package/{esm2022 → esm2020}/lib/icp/icp.interfaces.mjs +1 -1
  35. package/esm2020/lib/icp/icp.service.mjs +95 -0
  36. package/{esm2022 → esm2020}/lib/icp/participants-list/participants-list.component.mjs +5 -5
  37. package/esm2020/lib/icp/socket.service.mjs +118 -0
  38. package/esm2020/lib/media-viewer.component.mjs +245 -0
  39. package/{esm2022 → esm2020}/lib/media-viewer.module.mjs +55 -55
  40. package/{esm2022 → esm2020}/lib/print.service.mjs +4 -4
  41. package/esm2020/lib/redaction/components/redaction.component.mjs +91 -0
  42. package/{esm2022 → esm2020}/lib/redaction/services/redaction-api.service.mjs +5 -5
  43. package/{esm2022 → esm2020}/lib/shared/gov-uk-date/gov-uk-date.component.mjs +4 -4
  44. package/{esm2022 → esm2020}/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +7 -7
  45. package/{esm2022 → esm2020}/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +6 -6
  46. package/{esm2022 → esm2020}/lib/shared/gov-uk-label/gov-uk-label.component.mjs +7 -7
  47. package/{esm2022 → esm2020}/lib/shared/shared.module.mjs +19 -19
  48. package/esm2020/lib/shared/util/helpers/html-templates.helper.mjs +18 -0
  49. package/{esm2022 → esm2020}/lib/shared/util/services/number.helper.service.mjs +5 -5
  50. package/esm2020/lib/store/actions/icp.actions.mjs +56 -0
  51. package/esm2020/lib/store/bookmarks-store-utils.mjs +49 -0
  52. package/esm2020/lib/store/effects/annotation.effects.mjs +51 -0
  53. package/{esm2022 → esm2020}/lib/store/effects/bookmarks.effects.mjs +5 -5
  54. package/{esm2022 → esm2020}/lib/store/effects/document.effects.mjs +5 -5
  55. package/esm2020/lib/store/effects/icp.effects.mjs +26 -0
  56. package/{esm2022 → esm2020}/lib/store/effects/redaction.effects.mjs +5 -5
  57. package/esm2020/lib/store/reducers/annotations.reducer.mjs +208 -0
  58. package/esm2020/lib/store/reducers/bookmarks.reducer.mjs +116 -0
  59. package/esm2020/lib/store/reducers/document.reducer.mjs +135 -0
  60. package/esm2020/lib/store/reducers/icp.reducer.mjs +56 -0
  61. package/esm2020/lib/store/reducers/redaction.reducer.mjs +116 -0
  62. package/esm2020/lib/store/reducers/tags.reducer.mjs +93 -0
  63. package/esm2020/lib/store/selectors/annotation.selectors.mjs +81 -0
  64. package/{esm2022 → esm2020}/lib/store/selectors/bookmark.selectors.mjs +1 -1
  65. package/{esm2022 → esm2020}/lib/store/selectors/redaction.selectors.mjs +1 -1
  66. package/esm2020/lib/store/store-utils.mjs +131 -0
  67. package/esm2020/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +44 -0
  68. package/{esm2022 → esm2020}/lib/toolbar/icp-event.service.mjs +1 -1
  69. package/{esm2022 → esm2020}/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +5 -5
  70. package/esm2020/lib/toolbar/main-toolbar/main-toolbar.component.mjs +189 -0
  71. package/esm2020/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +236 -0
  72. package/esm2020/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +68 -0
  73. package/esm2020/lib/toolbar/search-bar/search-bar.component.mjs +109 -0
  74. package/esm2020/lib/toolbar/toolbar-button-visibility.service.mjs +94 -0
  75. package/esm2020/lib/toolbar/toolbar-event.service.mjs +178 -0
  76. package/{esm2022 → esm2020}/lib/toolbar/toolbar.module.mjs +25 -25
  77. package/esm2020/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +82 -0
  78. package/{esm2022 → esm2020}/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +5 -5
  79. package/esm2020/lib/viewers/grab-n-drag.directive.mjs +57 -0
  80. package/esm2020/lib/viewers/image-viewer/image-viewer.component.mjs +166 -0
  81. package/esm2020/lib/viewers/multimedia-player/multimedia-player.component.mjs +59 -0
  82. package/esm2020/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +209 -0
  83. package/{esm2022 → esm2020}/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +5 -5
  84. package/esm2020/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +236 -0
  85. package/esm2020/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +352 -0
  86. package/esm2020/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +49 -0
  87. package/{esm2022 → esm2020}/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +5 -5
  88. package/{esm2022 → esm2020}/lib/viewers/rotation-persist/rotation-api.service.mjs +5 -5
  89. package/esm2020/lib/viewers/rotation-persist/rotation-persist.directive.mjs +61 -0
  90. package/esm2020/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +49 -0
  91. package/{esm2022 → esm2020}/lib/viewers/viewer-event.service.mjs +5 -5
  92. package/{esm2022 → esm2020}/lib/viewers/viewer-util.service.mjs +5 -5
  93. package/fesm2015/hmcts-media-viewer.mjs +6953 -0
  94. package/fesm2015/hmcts-media-viewer.mjs.map +1 -0
  95. package/{fesm2022 → fesm2020}/hmcts-media-viewer.mjs +462 -453
  96. package/fesm2020/hmcts-media-viewer.mjs.map +1 -0
  97. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +1 -1
  98. package/lib/annotations/annotation-set/annotation-set.component.d.ts +1 -1
  99. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +1 -1
  100. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +1 -1
  101. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +1 -1
  102. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +1 -1
  103. package/lib/annotations/comment-set/comment/comment.component.d.ts +1 -1
  104. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +1 -1
  105. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +1 -1
  106. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +1 -1
  107. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +1 -1
  108. package/lib/annotations/comment-set/comment-set.component.d.ts +1 -1
  109. package/lib/annotations/comments-summary/comments-summary.component.d.ts +1 -1
  110. package/lib/annotations/tags/tags.component.d.ts +1 -1
  111. package/lib/bookmark/components/bookmark-icons.component.d.ts +1 -1
  112. package/lib/icp/icp-session-api.service.d.ts +4 -1
  113. package/lib/icp/icp-session-api.service.d.ts.map +1 -1
  114. package/lib/icp/icp-update.service.d.ts.map +1 -1
  115. package/lib/icp/icp.interfaces.d.ts +1 -0
  116. package/lib/icp/icp.interfaces.d.ts.map +1 -1
  117. package/lib/icp/icp.service.d.ts +1 -0
  118. package/lib/icp/icp.service.d.ts.map +1 -1
  119. package/lib/icp/socket.service.d.ts +6 -6
  120. package/lib/icp/socket.service.d.ts.map +1 -1
  121. package/lib/media-viewer.component.d.ts +2 -1
  122. package/lib/media-viewer.component.d.ts.map +1 -1
  123. package/lib/redaction/components/redaction.component.d.ts +1 -1
  124. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +1 -1
  125. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +1 -1
  126. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +1 -1
  127. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +1 -1
  128. package/lib/store/actions/icp.actions.d.ts +8 -2
  129. package/lib/store/actions/icp.actions.d.ts.map +1 -1
  130. package/lib/store/bookmarks-store-utils.d.ts.map +1 -1
  131. package/lib/store/effects/icp.effects.d.ts.map +1 -1
  132. package/lib/toolbar/icp-event.service.d.ts +4 -4
  133. package/lib/toolbar/icp-event.service.d.ts.map +1 -1
  134. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +1 -1
  135. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +1 -1
  136. package/lib/toolbar/toolbar-event.service.d.ts +6 -6
  137. package/lib/toolbar/toolbar-event.service.d.ts.map +1 -1
  138. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +1 -1
  139. package/lib/viewers/grab-n-drag.directive.d.ts +1 -1
  140. package/lib/viewers/image-viewer/image-viewer.component.d.ts +1 -1
  141. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +1 -1
  142. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts.map +1 -1
  143. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +1 -1
  144. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +1 -1
  145. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +1 -1
  146. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +1 -1
  147. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +1 -1
  148. package/lib/viewers/viewer-event.service.d.ts +1 -1
  149. package/lib/viewers/viewer-event.service.d.ts.map +1 -1
  150. package/package.json +23 -16
  151. package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +0 -116
  152. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +0 -109
  153. package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +0 -50
  154. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +0 -94
  155. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +0 -116
  156. package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +0 -118
  157. package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +0 -86
  158. package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +0 -177
  159. package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +0 -50
  160. package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +0 -47
  161. package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +0 -91
  162. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +0 -54
  163. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +0 -68
  164. package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +0 -54
  165. package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +0 -123
  166. package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +0 -120
  167. package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +0 -32
  168. package/esm2022/lib/annotations/tags/tags.component.mjs +0 -53
  169. package/esm2022/lib/icp/icp-follower.service.mjs +0 -60
  170. package/esm2022/lib/icp/icp-presenter.service.mjs +0 -55
  171. package/esm2022/lib/icp/icp-session-api.service.mjs +0 -21
  172. package/esm2022/lib/icp/icp-update.service.mjs +0 -57
  173. package/esm2022/lib/icp/icp.service.mjs +0 -93
  174. package/esm2022/lib/icp/socket.service.mjs +0 -118
  175. package/esm2022/lib/media-viewer.component.mjs +0 -244
  176. package/esm2022/lib/redaction/components/redaction.component.mjs +0 -91
  177. package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +0 -18
  178. package/esm2022/lib/store/actions/icp.actions.mjs +0 -56
  179. package/esm2022/lib/store/bookmarks-store-utils.mjs +0 -49
  180. package/esm2022/lib/store/effects/annotation.effects.mjs +0 -51
  181. package/esm2022/lib/store/effects/icp.effects.mjs +0 -26
  182. package/esm2022/lib/store/reducers/annotations.reducer.mjs +0 -208
  183. package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +0 -116
  184. package/esm2022/lib/store/reducers/document.reducer.mjs +0 -135
  185. package/esm2022/lib/store/reducers/icp.reducer.mjs +0 -56
  186. package/esm2022/lib/store/reducers/redaction.reducer.mjs +0 -116
  187. package/esm2022/lib/store/reducers/tags.reducer.mjs +0 -93
  188. package/esm2022/lib/store/selectors/annotation.selectors.mjs +0 -81
  189. package/esm2022/lib/store/store-utils.mjs +0 -131
  190. package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +0 -44
  191. package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +0 -189
  192. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +0 -236
  193. package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +0 -68
  194. package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +0 -109
  195. package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +0 -94
  196. package/esm2022/lib/toolbar/toolbar-event.service.mjs +0 -178
  197. package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +0 -82
  198. package/esm2022/lib/viewers/grab-n-drag.directive.mjs +0 -57
  199. package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +0 -166
  200. package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +0 -59
  201. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +0 -210
  202. package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +0 -236
  203. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +0 -352
  204. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +0 -49
  205. package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +0 -61
  206. package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +0 -49
  207. package/fesm2022/hmcts-media-viewer.mjs.map +0 -1
  208. /package/{esm2022 → esm2020}/hmcts-media-viewer.mjs +0 -0
  209. /package/{esm2022 → esm2020}/lib/annotations/annotation-set/annotation-set.model.mjs +0 -0
  210. /package/{esm2022 → esm2020}/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +0 -0
  211. /package/{esm2022 → esm2020}/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +0 -0
  212. /package/{esm2022 → esm2020}/lib/annotations/comment-set/comment/comment.model.mjs +0 -0
  213. /package/{esm2022 → esm2020}/lib/annotations/models/api-persisted.model.mjs +0 -0
  214. /package/{esm2022 → esm2020}/lib/annotations/models/event-select.model.mjs +0 -0
  215. /package/{esm2022 → esm2020}/lib/annotations/models/tags.model.mjs +0 -0
  216. /package/{esm2022 → esm2020}/lib/annotations/models/user.model.mjs +0 -0
  217. /package/{esm2022 → esm2020}/lib/icp/icp.events.mjs +0 -0
  218. /package/{esm2022 → esm2020}/lib/redaction/services/redaction.model.mjs +0 -0
  219. /package/{esm2022 → esm2020}/lib/store/actions/annotation.actions.mjs +0 -0
  220. /package/{esm2022 → esm2020}/lib/store/actions/bookmark.actions.mjs +0 -0
  221. /package/{esm2022 → esm2020}/lib/store/actions/document.actions.mjs +0 -0
  222. /package/{esm2022 → esm2020}/lib/store/actions/redaction.actions.mjs +0 -0
  223. /package/{esm2022 → esm2020}/lib/store/actions/tag.actions.mjs +0 -0
  224. /package/{esm2022 → esm2020}/lib/store/effects/index.mjs +0 -0
  225. /package/{esm2022 → esm2020}/lib/store/models/bookmarks.interface.mjs +0 -0
  226. /package/{esm2022 → esm2020}/lib/store/models/filters.interface.mjs +0 -0
  227. /package/{esm2022 → esm2020}/lib/store/reducers/reducers.mjs +0 -0
  228. /package/{esm2022 → esm2020}/lib/store/selectors/document.selectors.mjs +0 -0
  229. /package/{esm2022 → esm2020}/lib/store/selectors/icp.selectors.mjs +0 -0
  230. /package/{esm2022 → esm2020}/lib/store/selectors/tag.selectors.mjs +0 -0
  231. /package/{esm2022 → esm2020}/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +0 -0
  232. /package/{esm2022 → esm2020}/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +0 -0
  233. /package/{esm2022 → esm2020}/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +0 -0
  234. /package/{esm2022 → esm2020}/lib/viewers/rotation-persist/rotation.model.mjs +0 -0
  235. /package/{esm2022 → esm2020}/lib/viewers/viewer-exception.model.mjs +0 -0
  236. /package/{esm2022 → esm2020}/public_api.mjs +0 -0
@@ -1,244 +0,0 @@
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==
@@ -1,91 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { select } from '@ngrx/store';
3
- import { v4 as uuid } from 'uuid';
4
- import { filter, take } from 'rxjs/operators';
5
- import * as fromSelectors from '../../store/selectors/redaction.selectors';
6
- import * as fromRedaSelectors from '../../store/selectors/redaction.selectors';
7
- import * as fromDocument from '../../store/selectors/document.selectors';
8
- import * as fromActions from '../../store/actions/redaction.actions';
9
- import * as fromRedactionActions from '../../store/actions/redaction.actions';
10
- import * as fromRedaActions from '../../store/actions/redaction.actions';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@ngrx/store";
13
- import * as i2 from "../../viewers/viewer-event.service";
14
- import * as i3 from "../../toolbar/toolbar.module";
15
- import * as i4 from "@angular/common";
16
- import * as i5 from "../../annotations/annotation-set/annotation-view/annotation-view.component";
17
- import * as i6 from "../../annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component";
18
- export class RedactionComponent {
19
- constructor(store, viewerEvents, toolbarEvents) {
20
- this.store = store;
21
- this.viewerEvents = viewerEvents;
22
- this.toolbarEvents = toolbarEvents;
23
- }
24
- ngOnInit() {
25
- this.redactionsPerPage$ = this.store.pipe(select(fromSelectors.getRedactionsPerPage));
26
- this.selectedRedaction$ = this.store.pipe(select(fromSelectors.getSelected));
27
- this.$subscription = this.toolbarEvents.drawModeSubject.subscribe(drawMode => this.drawMode = drawMode);
28
- this.$subscription.add(this.store.pipe(select(fromSelectors.getRedactedDocumentInfo), filter(value => !!value))
29
- .subscribe(redactedDocInfo => this.downloadDocument(redactedDocInfo)));
30
- this.$subscription.add(this.store.pipe(select(fromDocument.getDocumentId)).subscribe(docId => this.documentId = docId));
31
- this.$subscription.add(this.viewerEvents.textHighlight.subscribe(highlight => this.markTextRedaction(highlight)));
32
- this.toolbarEvents.applyRedactToDocument.subscribe(() => {
33
- this.store.pipe(select(fromRedaSelectors.getRedactionArray), take(1)).subscribe(redactions => {
34
- this.store.dispatch(new fromRedaActions.Redact(redactions));
35
- });
36
- });
37
- this.toolbarEvents.clearAllRedactMarkers.subscribe(() => {
38
- this.store.dispatch(new fromRedaActions.UnmarkAll(this.documentId));
39
- });
40
- }
41
- ngOnDestroy() {
42
- this.$subscription.unsubscribe();
43
- }
44
- markTextRedaction(highlight) {
45
- const redactionHighlight = highlight.rectangles;
46
- if (redactionHighlight && redactionHighlight.length) {
47
- this.saveRedaction(highlight.page, [...redactionHighlight]);
48
- }
49
- this.toolbarEvents.highlightModeSubject.next(false);
50
- }
51
- markBoxRedaction({ rectangles, page }) {
52
- this.saveRedaction(page, rectangles);
53
- this.toolbarEvents.drawModeSubject.next(false);
54
- }
55
- saveRedaction(page, rectangles) {
56
- const redaction = { page, rectangles, redactionId: uuid(), documentId: this.documentId };
57
- this.store.dispatch(new fromRedactionActions.SaveRedaction(redaction));
58
- }
59
- onMarkerDelete(event) {
60
- this.store.dispatch(new fromActions.DeleteRedaction(event));
61
- }
62
- selectRedaction(event) {
63
- this.store.dispatch(new fromActions.SelectRedaction(event));
64
- }
65
- onMarkerUpdate(redaction) {
66
- this.store.dispatch(new fromActions.SaveRedaction(redaction));
67
- }
68
- downloadDocument({ blob, filename }) {
69
- const url = URL.createObjectURL(blob);
70
- const a = document.createElement('a');
71
- document.body.appendChild(a);
72
- a.setAttribute('style', 'display: none');
73
- a.href = url;
74
- a.download = filename;
75
- a.click();
76
- a.remove();
77
- URL.revokeObjectURL(url);
78
- this.store.dispatch(new fromRedactionActions.ResetRedactedDocument());
79
- }
80
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: RedactionComponent, deps: [{ token: i1.Store }, { token: i2.ViewerEventService }, { token: i3.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component }); }
81
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: RedactionComponent, selector: "mv-redactions", inputs: { zoom: "zoom", rotate: "rotate" }, ngImport: i0, template: "<div class=\"pageContainer\">\n <div *ngFor=\"let redaction of (redactionsPerPage$ | async); index as i\"\n class=\"pageContainer__page\"\n [ngStyle]=\"{\n 'width.px': redaction.styles.width,\n 'height.px': redaction.styles.height\n }\"\n [ngClass]=\"{ 'pageContainer__page--draw' : drawMode }\">\n <mv-box-highlight-create\n [page]=\"i + 1\"\n [pageHeight]=\"redaction.styles.height\"\n [pageWidth]=\"redaction.styles.width\"\n [rotate]=\"rotate\"\n [zoom]=\"zoom\"\n (saveSelection)=\"markBoxRedaction($event)\">\n </mv-box-highlight-create>\n <div class=\"pageContainer__page-item\">\n <ng-container *ngFor=\"let anno of redaction.anno\">\n <!-- TODO rename this to selection -->\n <mv-annotation [annotation]=\"anno\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [selectedAnnoId]=\"selectedRedaction$ | async\"\n [pageHeight]=\"redaction.styles.height\"\n [pageWidth]=\"redaction.styles.width\"\n (update)=\"onMarkerUpdate($event)\"\n (delete)=\"onMarkerDelete($event)\"\n (annotationClick)=\"selectRedaction($event)\">\n </mv-annotation>\n </ng-container>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.AnnotationViewComponent, selector: "mv-annotation", inputs: ["annotation", "zoom", "rotate", "selectedAnnoId", "pageHeight", "pageWidth"], outputs: ["update", "delete", "annotationClick"] }, { kind: "component", type: i6.BoxHighlightCreateComponent, selector: "mv-box-highlight-create", inputs: ["page", "pageHeight", "pageWidth", "rotate", "zoom", "container"], outputs: ["saveSelection"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
82
- }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: RedactionComponent, decorators: [{
84
- type: Component,
85
- args: [{ selector: 'mv-redactions', template: "<div class=\"pageContainer\">\n <div *ngFor=\"let redaction of (redactionsPerPage$ | async); index as i\"\n class=\"pageContainer__page\"\n [ngStyle]=\"{\n 'width.px': redaction.styles.width,\n 'height.px': redaction.styles.height\n }\"\n [ngClass]=\"{ 'pageContainer__page--draw' : drawMode }\">\n <mv-box-highlight-create\n [page]=\"i + 1\"\n [pageHeight]=\"redaction.styles.height\"\n [pageWidth]=\"redaction.styles.width\"\n [rotate]=\"rotate\"\n [zoom]=\"zoom\"\n (saveSelection)=\"markBoxRedaction($event)\">\n </mv-box-highlight-create>\n <div class=\"pageContainer__page-item\">\n <ng-container *ngFor=\"let anno of redaction.anno\">\n <!-- TODO rename this to selection -->\n <mv-annotation [annotation]=\"anno\"\n [zoom]=\"zoom\"\n [rotate]=\"rotate\"\n [selectedAnnoId]=\"selectedRedaction$ | async\"\n [pageHeight]=\"redaction.styles.height\"\n [pageWidth]=\"redaction.styles.width\"\n (update)=\"onMarkerUpdate($event)\"\n (delete)=\"onMarkerDelete($event)\"\n (annotationClick)=\"selectRedaction($event)\">\n </mv-annotation>\n </ng-container>\n </div>\n </div>\n</div>\n" }]
86
- }], ctorParameters: () => [{ type: i1.Store }, { type: i2.ViewerEventService }, { type: i3.ToolbarEventService }], propDecorators: { zoom: [{
87
- type: Input
88
- }], rotate: [{
89
- type: Input
90
- }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3JlZGFjdGlvbi9jb21wb25lbnRzL3JlZGFjdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9yZWRhY3Rpb24vY29tcG9uZW50cy9yZWRhY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxNQUFNLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUk5QyxPQUFPLEtBQUssYUFBYSxNQUFNLDJDQUEyQyxDQUFDO0FBQzNFLE9BQU8sS0FBSyxpQkFBaUIsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEtBQUssWUFBWSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3pFLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxLQUFLLG9CQUFvQixNQUFNLHVDQUF1QyxDQUFDO0FBQzlFLE9BQU8sS0FBSyxlQUFlLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7O0FBVXpFLE1BQU0sT0FBTyxrQkFBa0I7SUFhN0IsWUFBb0IsS0FBNkIsRUFDOUIsWUFBZ0MsRUFDekMsYUFBa0M7UUFGeEIsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ3pDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtJQUFJLENBQUM7SUFFakQsUUFBUTtRQUNOLElBQUks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LElBQUksR0FBRyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN0QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWCxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksb0JBQW9CLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7aUlBaEZVLGtCQUFrQjtxSEFBbEIsa0JBQWtCLGlHQ3ZCL0IsZzJDQWlDQTs7MkZEVmEsa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLGVBQWU7NklBS2hCLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzZWxlY3QsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBSZWN0YW5nbGUgfSBmcm9tICcuLi8uLi9hbm5vdGF0aW9ucy9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLXZpZXcvcmVjdGFuZ2xlL3JlY3RhbmdsZS5tb2RlbCc7XG5pbXBvcnQgKiBhcyBmcm9tU3RvcmUgZnJvbSAnLi4vLi4vc3RvcmUvcmVkdWNlcnMvcmVkdWNlcnMnO1xuaW1wb3J0ICogYXMgZnJvbVNlbGVjdG9ycyBmcm9tICcuLi8uLi9zdG9yZS9zZWxlY3RvcnMvcmVkYWN0aW9uLnNlbGVjdG9ycyc7XG5pbXBvcnQgKiBhcyBmcm9tUmVkYVNlbGVjdG9ycyBmcm9tICcuLi8uLi9zdG9yZS9zZWxlY3RvcnMvcmVkYWN0aW9uLnNlbGVjdG9ycyc7XG5pbXBvcnQgKiBhcyBmcm9tRG9jdW1lbnQgZnJvbSAnLi4vLi4vc3RvcmUvc2VsZWN0b3JzL2RvY3VtZW50LnNlbGVjdG9ycyc7XG5pbXBvcnQgKiBhcyBmcm9tQWN0aW9ucyBmcm9tICcuLi8uLi9zdG9yZS9hY3Rpb25zL3JlZGFjdGlvbi5hY3Rpb25zJztcbmltcG9ydCAqIGFzIGZyb21SZWRhY3Rpb25BY3Rpb25zIGZyb20gJy4uLy4uL3N0b3JlL2FjdGlvbnMvcmVkYWN0aW9uLmFjdGlvbnMnO1xuaW1wb3J0ICogYXMgZnJvbVJlZGFBY3Rpb25zIGZyb20gJy4uLy4uL3N0b3JlL2FjdGlvbnMvcmVkYWN0aW9uLmFjdGlvbnMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQW5ub3RhdGlvbiB9IGZyb20gJy4uLy4uL2Fubm90YXRpb25zL21vZGVscy9ldmVudC1zZWxlY3QubW9kZWwnO1xuaW1wb3J0IHsgVG9vbGJhckV2ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3Rvb2xiYXIvdG9vbGJhci5tb2R1bGUnO1xuaW1wb3J0IHsgVmlld2VyRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdmlld2Vycy92aWV3ZXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBSZWRhY3Rpb24gfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWRhY3Rpb24ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1yZWRhY3Rpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZGFjdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUmVkYWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHpvb206IG51bWJlcjtcbiAgQElucHV0KCkgcm90YXRlOiBudW1iZXI7XG5cbiAgcmVkYWN0aW9uc1BlclBhZ2UkOiBPYnNlcnZhYmxlPGFueT47IC8vIHRvZG8gYWRkIHR5cGVcbiAgc2VsZWN0ZWRSZWRhY3Rpb24kOiBPYnNlcnZhYmxlPFNlbGVjdGlvbkFubm90YXRpb24gfCB7fT47XG4gIHJlY3RhbmdsZXM6IFJlY3RhbmdsZVtdO1xuICBkcmF3TW9kZTogYm9vbGVhbjtcbiAgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgJHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlPGZyb21TdG9yZS5TdGF0ZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3ZXJFdmVudHM6IFZpZXdlckV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHRvb2xiYXJFdmVudHM6IFRvb2xiYXJFdmVudFNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVkYWN0aW9uc1BlclBhZ2UkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tU2VsZWN0b3JzLmdldFJlZGFjdGlvbnNQZXJQYWdlKSk7XG4gICAgdGhpcy5zZWxlY3RlZFJlZGFjdGlvbiQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21TZWxlY3RvcnMuZ2V0U2VsZWN0ZWQpKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24gPSB0aGlzLnRvb2xiYXJFdmVudHMuZHJhd01vZGVTdWJqZWN0LnN1YnNjcmliZShkcmF3TW9kZSA9PiB0aGlzLmRyYXdNb2RlID0gZHJhd01vZGUpO1xuICAgIHRoaXMuJHN1YnNjcmlwdGlvbi5hZGQodGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tU2VsZWN0b3JzLmdldFJlZGFjdGVkRG9jdW1lbnRJbmZvKSwgZmlsdGVyKHZhbHVlID0+ICEhdmFsdWUpKVxuICAgICAgLnN1YnNjcmliZShyZWRhY3RlZERvY0luZm8gPT4gdGhpcy5kb3dubG9hZERvY3VtZW50KHJlZGFjdGVkRG9jSW5mbykpKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24uYWRkKHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbURvY3VtZW50LmdldERvY3VtZW50SWQpKS5zdWJzY3JpYmUoZG9jSWQgPT4gdGhpcy5kb2N1bWVudElkID0gZG9jSWQpKTtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24uYWRkKHRoaXMudmlld2VyRXZlbnRzLnRleHRIaWdobGlnaHQuc3Vic2NyaWJlKGhpZ2hsaWdodCA9PiB0aGlzLm1hcmtUZXh0UmVkYWN0aW9uKGhpZ2hsaWdodCkpKTtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuYXBwbHlSZWRhY3RUb0RvY3VtZW50LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KGZyb21SZWRhU2VsZWN0b3JzLmdldFJlZGFjdGlvbkFycmF5KSwgdGFrZSgxKSkuc3Vic2NyaWJlKHJlZGFjdGlvbnMgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tUmVkYUFjdGlvbnMuUmVkYWN0KHJlZGFjdGlvbnMpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5jbGVhckFsbFJlZGFjdE1hcmtlcnMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21SZWRhQWN0aW9ucy5Vbm1hcmtBbGwodGhpcy5kb2N1bWVudElkKSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiRzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG1hcmtUZXh0UmVkYWN0aW9uKGhpZ2hsaWdodCkge1xuICAgIGNvbnN0IHJlZGFjdGlvbkhpZ2hsaWdodCA9IGhpZ2hsaWdodC5yZWN0YW5nbGVzO1xuICAgIGlmIChyZWRhY3Rpb25IaWdobGlnaHQgJiYgcmVkYWN0aW9uSGlnaGxpZ2h0Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zYXZlUmVkYWN0aW9uKGhpZ2hsaWdodC5wYWdlLCBbLi4ucmVkYWN0aW9uSGlnaGxpZ2h0XSk7XG4gICAgfVxuICAgIHRoaXMudG9vbGJhckV2ZW50cy5oaWdobGlnaHRNb2RlU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIG1hcmtCb3hSZWRhY3Rpb24oeyByZWN0YW5nbGVzLCBwYWdlIH0pIHtcbiAgICB0aGlzLnNhdmVSZWRhY3Rpb24ocGFnZSwgcmVjdGFuZ2xlcyk7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLmRyYXdNb2RlU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHNhdmVSZWRhY3Rpb24ocGFnZTogbnVtYmVyLCByZWN0YW5nbGVzOiBSZWN0YW5nbGVbXSkge1xuICAgIGNvbnN0IHJlZGFjdGlvbiA9IHsgcGFnZSwgcmVjdGFuZ2xlcywgcmVkYWN0aW9uSWQ6IHV1aWQoKSwgZG9jdW1lbnRJZDogdGhpcy5kb2N1bWVudElkIH07XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbVJlZGFjdGlvbkFjdGlvbnMuU2F2ZVJlZGFjdGlvbihyZWRhY3Rpb24pKTtcbiAgfVxuXG4gIG9uTWFya2VyRGVsZXRlKGV2ZW50KSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUFjdGlvbnMuRGVsZXRlUmVkYWN0aW9uKGV2ZW50KSk7XG4gIH1cblxuICBzZWxlY3RSZWRhY3Rpb24oZXZlbnQpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tQWN0aW9ucy5TZWxlY3RSZWRhY3Rpb24oZXZlbnQpKTtcbiAgfVxuXG4gIG9uTWFya2VyVXBkYXRlKHJlZGFjdGlvbjogUmVkYWN0aW9uKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgZnJvbUFjdGlvbnMuU2F2ZVJlZGFjdGlvbihyZWRhY3Rpb24pKTtcbiAgfVxuXG4gIGRvd25sb2FkRG9jdW1lbnQoeyBibG9iLCBmaWxlbmFtZSB9KSB7XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gICAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6IG5vbmUnKTtcbiAgICBhLmhyZWYgPSB1cmw7XG4gICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgIGEuY2xpY2soKTtcbiAgICBhLnJlbW92ZSgpO1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBmcm9tUmVkYWN0aW9uQWN0aW9ucy5SZXNldFJlZGFjdGVkRG9jdW1lbnQoKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwYWdlQ29udGFpbmVyXCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHJlZGFjdGlvbiBvZiAocmVkYWN0aW9uc1BlclBhZ2UkIHwgYXN5bmMpOyAgaW5kZXggYXMgaVwiXG4gICAgICAgY2xhc3M9XCJwYWdlQ29udGFpbmVyX19wYWdlXCJcbiAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgJ3dpZHRoLnB4JzogcmVkYWN0aW9uLnN0eWxlcy53aWR0aCxcbiAgICAgICAnaGVpZ2h0LnB4JzogcmVkYWN0aW9uLnN0eWxlcy5oZWlnaHRcbiAgICAgICB9XCJcbiAgICAgICBbbmdDbGFzc109XCJ7ICdwYWdlQ29udGFpbmVyX19wYWdlLS1kcmF3JyA6IGRyYXdNb2RlIH1cIj5cbiAgICA8bXYtYm94LWhpZ2hsaWdodC1jcmVhdGVcbiAgICAgIFtwYWdlXT1cImkgKyAxXCJcbiAgICAgIFtwYWdlSGVpZ2h0XT1cInJlZGFjdGlvbi5zdHlsZXMuaGVpZ2h0XCJcbiAgICAgIFtwYWdlV2lkdGhdPVwicmVkYWN0aW9uLnN0eWxlcy53aWR0aFwiXG4gICAgICBbcm90YXRlXT1cInJvdGF0ZVwiXG4gICAgICBbem9vbV09XCJ6b29tXCJcbiAgICAgIChzYXZlU2VsZWN0aW9uKT1cIm1hcmtCb3hSZWRhY3Rpb24oJGV2ZW50KVwiPlxuICAgIDwvbXYtYm94LWhpZ2hsaWdodC1jcmVhdGU+XG4gICAgPGRpdiBjbGFzcz1cInBhZ2VDb250YWluZXJfX3BhZ2UtaXRlbVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYW5ubyBvZiByZWRhY3Rpb24uYW5ub1wiPlxuICAgICAgICA8IS0tICBUT0RPIHJlbmFtZSB0aGlzIHRvIHNlbGVjdGlvbiAtLT5cbiAgICAgICAgPG12LWFubm90YXRpb24gW2Fubm90YXRpb25dPVwiYW5ub1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFt6b29tXT1cInpvb21cIlxuICAgICAgICAgICAgICAgICAgICAgICBbcm90YXRlXT1cInJvdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZEFubm9JZF09XCJzZWxlY3RlZFJlZGFjdGlvbiQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtwYWdlSGVpZ2h0XT1cInJlZGFjdGlvbi5zdHlsZXMuaGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VXaWR0aF09XCJyZWRhY3Rpb24uc3R5bGVzLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKHVwZGF0ZSk9XCJvbk1hcmtlclVwZGF0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKGRlbGV0ZSk9XCJvbk1hcmtlckRlbGV0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFubm90YXRpb25DbGljayk9XCJzZWxlY3RSZWRhY3Rpb24oJGV2ZW50KVwiPlxuICAgICAgICA8L212LWFubm90YXRpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,18 +0,0 @@
1
- /**
2
- * Helper Class
3
- * Used for dynamic templates manipulation
4
- * */
5
- export class HtmlTemplatesHelper {
6
- static setDescribedBy(errorMessage, config) {
7
- if (!errorMessage) {
8
- return config.hint ? `${config.id}-hint` : null;
9
- }
10
- else if (errorMessage && errorMessage.isInvalid) {
11
- return config.hint ? `${config.id}-hint ${config.id}-error` : `${config.id}-error`;
12
- }
13
- else {
14
- return config.hint ? `${config.id}-hint` : null;
15
- }
16
- }
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC10ZW1wbGF0ZXMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvc2hhcmVkL3V0aWwvaGVscGVycy9odG1sLXRlbXBsYXRlcy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztLQUdLO0FBRUwsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxNQUFNO1FBQ3hDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEQsQ0FBQzthQUFNLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsRCxPQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsU0FBUyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDO1FBQ3RGLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEhlbHBlciBDbGFzc1xuICogVXNlZCBmb3IgZHluYW1pYyB0ZW1wbGF0ZXMgbWFuaXB1bGF0aW9uXG4gKiAqL1xuXG5leHBvcnQgY2xhc3MgSHRtbFRlbXBsYXRlc0hlbHBlciB7XG5cbiAgc3RhdGljIHNldERlc2NyaWJlZEJ5KGVycm9yTWVzc2FnZSwgY29uZmlnKSB7XG4gICAgaWYgKCFlcnJvck1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBjb25maWcuaGludCA/IGAke2NvbmZpZy5pZH0taGludGAgOiBudWxsO1xuICAgIH0gZWxzZSBpZiAoZXJyb3JNZXNzYWdlICYmIGVycm9yTWVzc2FnZS5pc0ludmFsaWQpIHtcbiAgICAgIHJldHVybiAgY29uZmlnLmhpbnQgPyBgJHtjb25maWcuaWR9LWhpbnQgJHtjb25maWcuaWR9LWVycm9yYCA6IGAke2NvbmZpZy5pZH0tZXJyb3JgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY29uZmlnLmhpbnQgPyBgJHtjb25maWcuaWR9LWhpbnRgIDogbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,56 +0,0 @@
1
- export const SET_CASE_ID = '[Icp] Set Case Id';
2
- export const LOAD_ICP_SESSION = '[Icp] Load Session';
3
- export const LOAD_ICP_SESSION_FAIL = '[Icp] Load Session Failure';
4
- export const JOIN_ICP_SOCKET_SESSION = '[Icp] Join Socket Session';
5
- export const ICP_SOCKET_SESSION_JOINED = '[Icp] Socket Session Joined';
6
- export const LEAVE_ICP_SOCKET_SESSION = '[Icp] Leave Socket Session';
7
- export const ICP_PRESENTER_UPDATED = '[Icp] Presenter Updated';
8
- export const ICP_PARTICIPANT_LIST_UPDATED = '[Icp] Participant List Updated';
9
- export class SetCaseId {
10
- constructor(payload) {
11
- this.payload = payload;
12
- this.type = SET_CASE_ID;
13
- }
14
- }
15
- export class LoadIcpSession {
16
- constructor(payload) {
17
- this.payload = payload;
18
- this.type = LOAD_ICP_SESSION;
19
- }
20
- }
21
- export class LoadIcpSessionFailure {
22
- constructor(payload) {
23
- this.payload = payload;
24
- this.type = LOAD_ICP_SESSION_FAIL;
25
- }
26
- }
27
- export class JoinIcpSocketSession {
28
- constructor(payload) {
29
- this.payload = payload;
30
- this.type = JOIN_ICP_SOCKET_SESSION;
31
- }
32
- }
33
- export class IcpSocketSessionJoined {
34
- constructor(payload) {
35
- this.payload = payload;
36
- this.type = ICP_SOCKET_SESSION_JOINED;
37
- }
38
- }
39
- export class LeaveIcpSocketSession {
40
- constructor() {
41
- this.type = LEAVE_ICP_SOCKET_SESSION;
42
- }
43
- }
44
- export class IcpPresenterUpdated {
45
- constructor(payload) {
46
- this.payload = payload;
47
- this.type = ICP_PRESENTER_UPDATED;
48
- }
49
- }
50
- export class IcpParticipantListUpdated {
51
- constructor(payload) {
52
- this.payload = payload;
53
- this.type = ICP_PARTICIPANT_LIST_UPDATED;
54
- }
55
- }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNwLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi9zdG9yZS9hY3Rpb25zL2ljcC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQztBQUMvQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBb0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyw0QkFBNEIsQ0FBQztBQUNsRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRywyQkFBMkIsQ0FBQztBQUNuRSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyw2QkFBNkIsQ0FBQztBQUN2RSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyw0QkFBNEIsQ0FBQztBQUNyRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyx5QkFBeUIsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUU3RSxNQUFNLE9BQU8sU0FBUztJQUVwQixZQUFtQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUR6QixTQUFJLEdBQUcsV0FBVyxDQUFDO0lBQ1MsQ0FBQztDQUN2QztBQUVELE1BQU0sT0FBTyxjQUFjO0lBRXpCLFlBQW1CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBRHpCLFNBQUksR0FBRyxnQkFBZ0IsQ0FBQztJQUNJLENBQUM7Q0FDdkM7QUFFRCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQW1CLE9BQWM7UUFBZCxZQUFPLEdBQVAsT0FBTyxDQUFPO1FBRHhCLFNBQUksR0FBRyxxQkFBcUIsQ0FBQztJQUNGLENBQUM7Q0FDdEM7QUFFRCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQW1CLE9BQWtEO1FBQWxELFlBQU8sR0FBUCxPQUFPLENBQTJDO1FBRDVELFNBQUksR0FBRyx1QkFBdUIsQ0FBQztJQUNnQyxDQUFDO0NBQzFFO0FBRUQsTUFBTSxPQUFPLHNCQUFzQjtJQUVqQyxZQUFtQixPQUF3RztRQUF4RyxZQUFPLEdBQVAsT0FBTyxDQUFpRztRQURsSCxTQUFJLEdBQUcseUJBQXlCLENBQUM7SUFDb0YsQ0FBQztDQUNoSTtBQUVELE1BQU0sT0FBTyxxQkFBcUI7SUFFaEM7UUFEUyxTQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFDMUIsQ0FBQztDQUNqQjtBQUVELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBbUIsT0FBdUI7UUFBdkIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFEakMsU0FBSSxHQUFHLHFCQUFxQixDQUFDO0lBQ08sQ0FBQztDQUMvQztBQUVELE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsWUFBbUIsT0FBWTtRQUFaLFlBQU8sR0FBUCxPQUFPLENBQUs7UUFEdEIsU0FBSSxHQUFHLDRCQUE0QixDQUFDO0lBQ1gsQ0FBQztDQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEljcFBhcnRpY2lwYW50LCBJY3BTZXNzaW9uIH0gZnJvbSAnLi4vLi4vaWNwL2ljcC5pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IFNFVF9DQVNFX0lEID0gJ1tJY3BdIFNldCBDYXNlIElkJztcbmV4cG9ydCBjb25zdCBMT0FEX0lDUF9TRVNTSU9OID0gJ1tJY3BdIExvYWQgU2Vzc2lvbic7XG5leHBvcnQgY29uc3QgTE9BRF9JQ1BfU0VTU0lPTl9GQUlMID0gJ1tJY3BdIExvYWQgU2Vzc2lvbiBGYWlsdXJlJztcbmV4cG9ydCBjb25zdCBKT0lOX0lDUF9TT0NLRVRfU0VTU0lPTiA9ICdbSWNwXSBKb2luIFNvY2tldCBTZXNzaW9uJztcbmV4cG9ydCBjb25zdCBJQ1BfU09DS0VUX1NFU1NJT05fSk9JTkVEID0gJ1tJY3BdIFNvY2tldCBTZXNzaW9uIEpvaW5lZCc7XG5leHBvcnQgY29uc3QgTEVBVkVfSUNQX1NPQ0tFVF9TRVNTSU9OID0gJ1tJY3BdIExlYXZlIFNvY2tldCBTZXNzaW9uJztcbmV4cG9ydCBjb25zdCBJQ1BfUFJFU0VOVEVSX1VQREFURUQgPSAnW0ljcF0gUHJlc2VudGVyIFVwZGF0ZWQnO1xuZXhwb3J0IGNvbnN0IElDUF9QQVJUSUNJUEFOVF9MSVNUX1VQREFURUQgPSAnW0ljcF0gUGFydGljaXBhbnQgTGlzdCBVcGRhdGVkJztcblxuZXhwb3J0IGNsYXNzIFNldENhc2VJZCBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBTRVRfQ0FTRV9JRDtcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IHN0cmluZykge31cbn1cblxuZXhwb3J0IGNsYXNzIExvYWRJY3BTZXNzaW9uIGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IExPQURfSUNQX1NFU1NJT047XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBzdHJpbmcpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBMb2FkSWNwU2Vzc2lvbkZhaWx1cmUgaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gTE9BRF9JQ1BfU0VTU0lPTl9GQUlMO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogRXJyb3IpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBKb2luSWNwU29ja2V0U2Vzc2lvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBKT0lOX0lDUF9TT0NLRVRfU0VTU0lPTjtcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IHsgdXNlcm5hbWU6IHN0cmluZywgc2Vzc2lvbjogSWNwU2Vzc2lvbiB9KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgSWNwU29ja2V0U2Vzc2lvbkpvaW5lZCBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBJQ1BfU09DS0VUX1NFU1NJT05fSk9JTkVEO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogeyBzZXNzaW9uOiBJY3BTZXNzaW9uLCBwYXJ0aWNpcGFudEluZm86IHsgY2xpZW50OiBJY3BQYXJ0aWNpcGFudCwgcHJlc2VudGVyOiBJY3BQYXJ0aWNpcGFudCB9IH0pIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBMZWF2ZUljcFNvY2tldFNlc3Npb24gaW1wbGVtZW50cyBBY3Rpb24ge1xuICByZWFkb25seSB0eXBlID0gTEVBVkVfSUNQX1NPQ0tFVF9TRVNTSU9OO1xuICBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBJY3BQcmVzZW50ZXJVcGRhdGVkIGltcGxlbWVudHMgQWN0aW9uIHtcbiAgcmVhZG9ubHkgdHlwZSA9IElDUF9QUkVTRU5URVJfVVBEQVRFRDtcbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ6IEljcFBhcnRpY2lwYW50KSB7fVxufVxuXG5leHBvcnQgY2xhc3MgSWNwUGFydGljaXBhbnRMaXN0VXBkYXRlZCBpbXBsZW1lbnRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGUgPSBJQ1BfUEFSVElDSVBBTlRfTElTVF9VUERBVEVEO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGF5bG9hZDogYW55KSB7fVxufVxuXG5leHBvcnQgdHlwZSBJY3BBY3Rpb25zID1cbiAgfCBTZXRDYXNlSWRcbiAgfCBMb2FkSWNwU2Vzc2lvblxuICB8IExvYWRJY3BTZXNzaW9uRmFpbHVyZVxuICB8IEpvaW5JY3BTb2NrZXRTZXNzaW9uXG4gIHwgSWNwU29ja2V0U2Vzc2lvbkpvaW5lZFxuICB8IExlYXZlSWNwU29ja2V0U2Vzc2lvblxuICB8IEljcFByZXNlbnRlclVwZGF0ZWRcbiAgfCBJY3BQYXJ0aWNpcGFudExpc3RVcGRhdGVkO1xuIl19
@@ -1,49 +0,0 @@
1
- export const getBookmarkChildren = (bookmarks) => {
2
- if (bookmarks) {
3
- return bookmarks.reduce((childIds, bookmark) => {
4
- if (bookmark.children && bookmark.children.length > 0) {
5
- return [...childIds, bookmark.id, ...getBookmarkChildren(bookmark.children)];
6
- }
7
- return [...childIds, bookmark.id];
8
- }, []);
9
- }
10
- else {
11
- return [];
12
- }
13
- };
14
- export const generateBookmarkEntities = (bookmarks) => {
15
- return bookmarks.reduce((bookmarkEntities, bookmark) => Object.assign(bookmarkEntities, { [bookmark.id]: bookmark }), {});
16
- };
17
- const indexEntities = (entities) => {
18
- const entityIds = Object.keys(entities);
19
- for (let index = 0; entityIds.length > 0; index++) {
20
- let keysToRemove = [];
21
- entityIds.forEach(key => {
22
- if (!entities[key].previous || !entityIds.includes(entities[key].previous.toString())) {
23
- entities[key].index = index;
24
- keysToRemove.push(key);
25
- }
26
- });
27
- keysToRemove.forEach(key => entityIds.splice(entityIds.indexOf(key), 1));
28
- keysToRemove = [];
29
- }
30
- };
31
- export const generateBookmarkNodes = (entities) => {
32
- const bookmarkEntities = JSON.parse(JSON.stringify(entities));
33
- indexEntities(bookmarkEntities);
34
- return Object.keys(bookmarkEntities).reduce((nodes, bookmarkId) => {
35
- const bookmarkEntity = bookmarkEntities[bookmarkId];
36
- if (bookmarkEntity.parent) {
37
- const parentEntity = bookmarkEntities[bookmarkEntity.parent];
38
- if (!parentEntity.children) {
39
- parentEntity.children = [];
40
- }
41
- parentEntity.children[bookmarkEntity.index] = bookmarkEntity;
42
- }
43
- else {
44
- nodes[bookmarkEntity.index] = bookmarkEntity;
45
- }
46
- return nodes;
47
- }, []);
48
- };
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va21hcmtzLXN0b3JlLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvc3RvcmUvYm9va21hcmtzLXN0b3JlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsU0FBcUIsRUFBRSxFQUFFO0lBQzNELElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQy9FLENBQUM7WUFDRCxPQUFPLENBQUMsR0FBRyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxTQUFxQixFQUE0QixFQUFFO0lBQzFGLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FDckIsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFDOUQsRUFBRSxDQUFDLENBQUM7QUFDUixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQW9DLEVBQUUsRUFBRTtJQUM3RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDbEQsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN0RixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDNUIsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxRQUFvQyxFQUFFLEVBQUU7SUFDNUUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5RCxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNoQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7UUFDaEUsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEQsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzNCLFlBQVksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQzdCLENBQUM7WUFDRCxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxjQUFjLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLGNBQWMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29rbWFyayB9IGZyb20gJy4uL3ZpZXdlcnMvcGRmLXZpZXdlci9zaWRlLWJhci9ib29rbWFya3MvYm9va21hcmtzLmludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0Qm9va21hcmtDaGlsZHJlbiA9IChib29rbWFya3M6IEJvb2ttYXJrW10pID0+IHtcbiAgaWYgKGJvb2ttYXJrcykge1xuICAgIHJldHVybiBib29rbWFya3MucmVkdWNlKChjaGlsZElkcywgYm9va21hcmspID0+IHtcbiAgICAgIGlmIChib29rbWFyay5jaGlsZHJlbiAmJiBib29rbWFyay5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBbLi4uY2hpbGRJZHMsIGJvb2ttYXJrLmlkLCAuLi5nZXRCb29rbWFya0NoaWxkcmVuKGJvb2ttYXJrLmNoaWxkcmVuKV07XG4gICAgICB9XG4gICAgICByZXR1cm4gWy4uLmNoaWxkSWRzLCBib29rbWFyay5pZF07XG4gICAgfSwgW10pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbXTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQm9va21hcmtFbnRpdGllcyA9IChib29rbWFya3M6IEJvb2ttYXJrW10pOiB7W2lkOiBzdHJpbmddOiBCb29rbWFya30gPT4ge1xuICByZXR1cm4gYm9va21hcmtzLnJlZHVjZShcbiAgICAoYm9va21hcmtFbnRpdGllcywgYm9va21hcmspID0+XG4gICAgICBPYmplY3QuYXNzaWduKGJvb2ttYXJrRW50aXRpZXMsIHsgW2Jvb2ttYXJrLmlkXTogYm9va21hcmsgfSksXG4gICAge30pO1xufTtcblxuY29uc3QgaW5kZXhFbnRpdGllcyA9IChlbnRpdGllczogeyBbaWQ6IHN0cmluZ106IEJvb2ttYXJrIH0pID0+IHtcbiAgY29uc3QgZW50aXR5SWRzID0gT2JqZWN0LmtleXMoZW50aXRpZXMpO1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGVudGl0eUlkcy5sZW5ndGggPiAwOyBpbmRleCsrKSB7XG4gICAgbGV0IGtleXNUb1JlbW92ZSA9IFtdO1xuICAgIGVudGl0eUlkcy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoIWVudGl0aWVzW2tleV0ucHJldmlvdXMgfHwgIWVudGl0eUlkcy5pbmNsdWRlcyhlbnRpdGllc1trZXldLnByZXZpb3VzLnRvU3RyaW5nKCkpKSB7XG4gICAgICAgIGVudGl0aWVzW2tleV0uaW5kZXggPSBpbmRleDtcbiAgICAgICAga2V5c1RvUmVtb3ZlLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBrZXlzVG9SZW1vdmUuZm9yRWFjaChrZXkgPT4gZW50aXR5SWRzLnNwbGljZShlbnRpdHlJZHMuaW5kZXhPZihrZXkpLCAxKSk7XG4gICAga2V5c1RvUmVtb3ZlID0gW107XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUJvb2ttYXJrTm9kZXMgPSAoZW50aXRpZXM6IHsgW2lkOiBzdHJpbmddOiBCb29rbWFyayB9KSA9PiB7XG4gIGNvbnN0IGJvb2ttYXJrRW50aXRpZXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGVudGl0aWVzKSk7XG4gIGluZGV4RW50aXRpZXMoYm9va21hcmtFbnRpdGllcyk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhib29rbWFya0VudGl0aWVzKS5yZWR1Y2UoKG5vZGVzLCBib29rbWFya0lkKSA9PiB7XG4gICAgY29uc3QgYm9va21hcmtFbnRpdHkgPSBib29rbWFya0VudGl0aWVzW2Jvb2ttYXJrSWRdO1xuICAgIGlmIChib29rbWFya0VudGl0eS5wYXJlbnQpIHtcbiAgICAgIGNvbnN0IHBhcmVudEVudGl0eSA9IGJvb2ttYXJrRW50aXRpZXNbYm9va21hcmtFbnRpdHkucGFyZW50XTtcbiAgICAgIGlmICghcGFyZW50RW50aXR5LmNoaWxkcmVuKSB7XG4gICAgICAgIHBhcmVudEVudGl0eS5jaGlsZHJlbiA9IFtdO1xuICAgICAgfVxuICAgICAgcGFyZW50RW50aXR5LmNoaWxkcmVuW2Jvb2ttYXJrRW50aXR5LmluZGV4XSA9IGJvb2ttYXJrRW50aXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICBub2Rlc1tib29rbWFya0VudGl0eS5pbmRleF0gPSBib29rbWFya0VudGl0eTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVzO1xuICB9LCBbXSk7XG59O1xuIl19