@hmcts/media-viewer 4.1.5 → 4.1.6-angular-20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/LICENCE +9 -0
  2. package/assets/sass/settings.scss +0 -4
  3. package/fesm2022/hmcts-media-viewer.mjs +303 -286
  4. package/fesm2022/hmcts-media-viewer.mjs.map +1 -1
  5. package/index.d.ts +2304 -4
  6. package/index.d.ts.map +1 -0
  7. package/package.json +10 -12
  8. package/LICENSE +0 -0
  9. package/esm2022/hmcts-media-viewer.mjs +0 -5
  10. package/esm2022/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.mjs +0 -122
  11. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.mjs +0 -120
  12. package/esm2022/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.mjs +0 -101
  13. package/esm2022/lib/annotations/annotation-set/annotation-set.component.mjs +0 -50
  14. package/esm2022/lib/annotations/annotation-set/annotation-set.model.mjs +0 -2
  15. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation-view.component.mjs +0 -94
  16. package/esm2022/lib/annotations/annotation-set/annotation-view/annotation.model.mjs +0 -2
  17. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.mjs +0 -116
  18. package/esm2022/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.mjs +0 -2
  19. package/esm2022/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.mjs +0 -119
  20. package/esm2022/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.mjs +0 -86
  21. package/esm2022/lib/annotations/annotations.module.mjs +0 -162
  22. package/esm2022/lib/annotations/comment-set/comment/comment.component.mjs +0 -178
  23. package/esm2022/lib/annotations/comment-set/comment/comment.model.mjs +0 -2
  24. package/esm2022/lib/annotations/comment-set/comment/comment.service.mjs +0 -50
  25. package/esm2022/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.mjs +0 -47
  26. package/esm2022/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.mjs +0 -31
  27. package/esm2022/lib/annotations/comment-set/comment-navigate/comments-navigate.component.mjs +0 -91
  28. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.mjs +0 -62
  29. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.mjs +0 -54
  30. package/esm2022/lib/annotations/comment-set/comment-set-header/comment-set-header.component.mjs +0 -72
  31. package/esm2022/lib/annotations/comment-set/comment-set-render.service.mjs +0 -55
  32. package/esm2022/lib/annotations/comment-set/comment-set.component.mjs +0 -123
  33. package/esm2022/lib/annotations/comments-summary/comments-summary.component.mjs +0 -120
  34. package/esm2022/lib/annotations/models/api-persisted.model.mjs +0 -2
  35. package/esm2022/lib/annotations/models/event-select.model.mjs +0 -2
  36. package/esm2022/lib/annotations/models/tags.model.mjs +0 -2
  37. package/esm2022/lib/annotations/models/user.model.mjs +0 -2
  38. package/esm2022/lib/annotations/pipes/date/date.pipe.mjs +0 -26
  39. package/esm2022/lib/annotations/pipes/filter/filter.pipe.mjs +0 -32
  40. package/esm2022/lib/annotations/pipes/unsnake/unsnake.pipe.mjs +0 -16
  41. package/esm2022/lib/annotations/services/annotation-api/annotation-api.service.mjs +0 -58
  42. package/esm2022/lib/annotations/services/bookmarks-api/bookmarks-api.service.mjs +0 -45
  43. package/esm2022/lib/annotations/services/tags/tags.services.mjs +0 -41
  44. package/esm2022/lib/annotations/tags/tags.component.mjs +0 -53
  45. package/esm2022/lib/bookmark/components/bookmark-icons.component.mjs +0 -25
  46. package/esm2022/lib/icp/confirm-exit/confirm-action-dialog.component.mjs +0 -22
  47. package/esm2022/lib/icp/icp-follower.service.mjs +0 -65
  48. package/esm2022/lib/icp/icp-presenter.service.mjs +0 -56
  49. package/esm2022/lib/icp/icp-session-api.service.mjs +0 -28
  50. package/esm2022/lib/icp/icp-update.service.mjs +0 -66
  51. package/esm2022/lib/icp/icp.events.mjs +0 -15
  52. package/esm2022/lib/icp/icp.interfaces.mjs +0 -2
  53. package/esm2022/lib/icp/icp.service.mjs +0 -98
  54. package/esm2022/lib/icp/participants-list/participants-list.component.mjs +0 -32
  55. package/esm2022/lib/icp/socket.service.mjs +0 -119
  56. package/esm2022/lib/media-viewer.component.mjs +0 -247
  57. package/esm2022/lib/media-viewer.module.mjs +0 -139
  58. package/esm2022/lib/print.service.mjs +0 -32
  59. package/esm2022/lib/redaction/components/redaction.component.mjs +0 -91
  60. package/esm2022/lib/redaction/services/redaction-api.service.mjs +0 -50
  61. package/esm2022/lib/redaction/services/redaction.model.mjs +0 -2
  62. package/esm2022/lib/shared/gov-uk-date/gov-uk-date.component.mjs +0 -28
  63. package/esm2022/lib/shared/gov-uk-error-message/gov-uk-error-message.component.mjs +0 -34
  64. package/esm2022/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.mjs +0 -63
  65. package/esm2022/lib/shared/gov-uk-label/gov-uk-label.component.mjs +0 -44
  66. package/esm2022/lib/shared/shared.module.mjs +0 -53
  67. package/esm2022/lib/shared/util/helpers/html-templates.helper.mjs +0 -29
  68. package/esm2022/lib/shared/util/services/number.helper.service.mjs +0 -23
  69. package/esm2022/lib/store/actions/annotation.actions.mjs +0 -119
  70. package/esm2022/lib/store/actions/bookmark.actions.mjs +0 -112
  71. package/esm2022/lib/store/actions/document.actions.mjs +0 -91
  72. package/esm2022/lib/store/actions/icp.actions.mjs +0 -56
  73. package/esm2022/lib/store/actions/redaction.actions.mjs +0 -132
  74. package/esm2022/lib/store/actions/tag.actions.mjs +0 -21
  75. package/esm2022/lib/store/bookmarks-store-utils.mjs +0 -49
  76. package/esm2022/lib/store/effects/annotation.effects.mjs +0 -51
  77. package/esm2022/lib/store/effects/bookmarks.effects.mjs +0 -44
  78. package/esm2022/lib/store/effects/document.effects.mjs +0 -44
  79. package/esm2022/lib/store/effects/icp.effects.mjs +0 -26
  80. package/esm2022/lib/store/effects/index.mjs +0 -7
  81. package/esm2022/lib/store/effects/redaction.effects.mjs +0 -67
  82. package/esm2022/lib/store/models/bookmarks.interface.mjs +0 -2
  83. package/esm2022/lib/store/models/filters.interface.mjs +0 -2
  84. package/esm2022/lib/store/reducers/annotations.reducer.mjs +0 -208
  85. package/esm2022/lib/store/reducers/bookmarks.reducer.mjs +0 -125
  86. package/esm2022/lib/store/reducers/document.reducer.mjs +0 -158
  87. package/esm2022/lib/store/reducers/icp.reducer.mjs +0 -56
  88. package/esm2022/lib/store/reducers/redaction.reducer.mjs +0 -116
  89. package/esm2022/lib/store/reducers/reducers.mjs +0 -23
  90. package/esm2022/lib/store/reducers/tags.reducer.mjs +0 -93
  91. package/esm2022/lib/store/selectors/annotation.selectors.mjs +0 -81
  92. package/esm2022/lib/store/selectors/bookmark.selectors.mjs +0 -37
  93. package/esm2022/lib/store/selectors/document.selectors.mjs +0 -13
  94. package/esm2022/lib/store/selectors/icp.selectors.mjs +0 -13
  95. package/esm2022/lib/store/selectors/redaction.selectors.mjs +0 -26
  96. package/esm2022/lib/store/selectors/tag.selectors.mjs +0 -15
  97. package/esm2022/lib/store/store-utils.mjs +0 -131
  98. package/esm2022/lib/toolbar/highlight-toolbar/highlight-toolbar.component.mjs +0 -44
  99. package/esm2022/lib/toolbar/icp-event.service.mjs +0 -44
  100. package/esm2022/lib/toolbar/icp-toolbar/icp-toolbar.component.mjs +0 -43
  101. package/esm2022/lib/toolbar/main-toolbar/main-toolbar.component.mjs +0 -206
  102. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search-bar.component.mjs +0 -237
  103. package/esm2022/lib/toolbar/redaction-search-bar/redaction-search.model.mjs +0 -2
  104. package/esm2022/lib/toolbar/redaction-toolbar/redaction-toolbar.component.mjs +0 -68
  105. package/esm2022/lib/toolbar/search-bar/search-bar.component.mjs +0 -109
  106. package/esm2022/lib/toolbar/toolbar-button-visibility.service.mjs +0 -94
  107. package/esm2022/lib/toolbar/toolbar-event.service.mjs +0 -178
  108. package/esm2022/lib/toolbar/toolbar.module.mjs +0 -72
  109. package/esm2022/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.mjs +0 -82
  110. package/esm2022/lib/viewers/convertible-content-viewer/document-conversion-api.service.mjs +0 -22
  111. package/esm2022/lib/viewers/grab-n-drag.directive.mjs +0 -57
  112. package/esm2022/lib/viewers/image-viewer/image-viewer.component.mjs +0 -166
  113. package/esm2022/lib/viewers/multimedia-player/multimedia-player.component.mjs +0 -59
  114. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.mjs +0 -266
  115. package/esm2022/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.mjs +0 -40
  116. package/esm2022/lib/viewers/pdf-viewer/pdf-viewer.component.mjs +0 -242
  117. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.mjs +0 -379
  118. package/esm2022/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.mjs +0 -2
  119. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.mjs +0 -49
  120. package/esm2022/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.mjs +0 -2
  121. package/esm2022/lib/viewers/pdf-viewer/side-bar/side-bar.component.mjs +0 -99
  122. package/esm2022/lib/viewers/rotation-persist/rotation-api.service.mjs +0 -27
  123. package/esm2022/lib/viewers/rotation-persist/rotation-persist.directive.mjs +0 -61
  124. package/esm2022/lib/viewers/rotation-persist/rotation.model.mjs +0 -2
  125. package/esm2022/lib/viewers/unsupported-viewer/unsupported-viewer.component.mjs +0 -49
  126. package/esm2022/lib/viewers/viewer-event.service.mjs +0 -34
  127. package/esm2022/lib/viewers/viewer-exception.model.mjs +0 -13
  128. package/esm2022/lib/viewers/viewer-util.service.mjs +0 -20
  129. package/esm2022/public_api.mjs +0 -33
  130. package/hmcts-media-viewer.d.ts.map +0 -1
  131. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts +0 -48
  132. package/lib/annotations/annotation-set/annotation-create/box-highlight-create/box-highlight-create.component.d.ts.map +0 -1
  133. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts +0 -32
  134. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.directive.d.ts.map +0 -1
  135. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts +0 -18
  136. package/lib/annotations/annotation-set/annotation-create/highlight-create/highlight-create.service.d.ts.map +0 -1
  137. package/lib/annotations/annotation-set/annotation-set.component.d.ts +0 -27
  138. package/lib/annotations/annotation-set/annotation-set.component.d.ts.map +0 -1
  139. package/lib/annotations/annotation-set/annotation-set.model.d.ts +0 -7
  140. package/lib/annotations/annotation-set/annotation-set.model.d.ts.map +0 -1
  141. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts +0 -34
  142. package/lib/annotations/annotation-set/annotation-view/annotation-view.component.d.ts.map +0 -1
  143. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts +0 -16
  144. package/lib/annotations/annotation-set/annotation-view/annotation.model.d.ts.map +0 -1
  145. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts +0 -41
  146. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.component.d.ts.map +0 -1
  147. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts +0 -9
  148. package/lib/annotations/annotation-set/annotation-view/rectangle/rectangle.model.d.ts.map +0 -1
  149. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts +0 -37
  150. package/lib/annotations/annotation-set/ctx-toolbar/ctx-toolbar.component.d.ts.map +0 -1
  151. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts +0 -37
  152. package/lib/annotations/annotation-set/metadata-layer/metadata-layer.component.d.ts.map +0 -1
  153. package/lib/annotations/annotations.module.d.ts +0 -36
  154. package/lib/annotations/annotations.module.d.ts.map +0 -1
  155. package/lib/annotations/comment-set/comment/comment.component.d.ts +0 -69
  156. package/lib/annotations/comment-set/comment/comment.component.d.ts.map +0 -1
  157. package/lib/annotations/comment-set/comment/comment.model.d.ts +0 -13
  158. package/lib/annotations/comment-set/comment/comment.model.d.ts.map +0 -1
  159. package/lib/annotations/comment-set/comment/comment.service.d.ts +0 -22
  160. package/lib/annotations/comment-set/comment/comment.service.d.ts.map +0 -1
  161. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts +0 -14
  162. package/lib/annotations/comment-set/comment/text-highlight/text-highlight.directive.d.ts.map +0 -1
  163. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts +0 -12
  164. package/lib/annotations/comment-set/comment/textarea-auto-expand/textarea-auto-expand.directive.d.ts.map +0 -1
  165. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts +0 -28
  166. package/lib/annotations/comment-set/comment-navigate/comments-navigate.component.d.ts.map +0 -1
  167. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts +0 -26
  168. package/lib/annotations/comment-set/comment-set-header/comment-filter/comment-filter.component.d.ts.map +0 -1
  169. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts +0 -21
  170. package/lib/annotations/comment-set/comment-set-header/comment-search/comment-search.component.d.ts.map +0 -1
  171. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts +0 -36
  172. package/lib/annotations/comment-set/comment-set-header/comment-set-header.component.d.ts.map +0 -1
  173. package/lib/annotations/comment-set/comment-set-render.service.d.ts +0 -15
  174. package/lib/annotations/comment-set/comment-set-render.service.d.ts.map +0 -1
  175. package/lib/annotations/comment-set/comment-set.component.d.ts +0 -56
  176. package/lib/annotations/comment-set/comment-set.component.d.ts.map +0 -1
  177. package/lib/annotations/comments-summary/comments-summary.component.d.ts +0 -42
  178. package/lib/annotations/comments-summary/comments-summary.component.d.ts.map +0 -1
  179. package/lib/annotations/models/api-persisted.model.d.ts +0 -11
  180. package/lib/annotations/models/api-persisted.model.d.ts.map +0 -1
  181. package/lib/annotations/models/event-select.model.d.ts +0 -6
  182. package/lib/annotations/models/event-select.model.d.ts.map +0 -1
  183. package/lib/annotations/models/tags.model.d.ts +0 -7
  184. package/lib/annotations/models/tags.model.d.ts.map +0 -1
  185. package/lib/annotations/models/user.model.d.ts +0 -6
  186. package/lib/annotations/models/user.model.d.ts.map +0 -1
  187. package/lib/annotations/pipes/date/date.pipe.d.ts +0 -16
  188. package/lib/annotations/pipes/date/date.pipe.d.ts.map +0 -1
  189. package/lib/annotations/pipes/filter/filter.pipe.d.ts +0 -8
  190. package/lib/annotations/pipes/filter/filter.pipe.d.ts.map +0 -1
  191. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts +0 -8
  192. package/lib/annotations/pipes/unsnake/unsnake.pipe.d.ts.map +0 -1
  193. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts +0 -28
  194. package/lib/annotations/services/annotation-api/annotation-api.service.d.ts.map +0 -1
  195. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts +0 -21
  196. package/lib/annotations/services/bookmarks-api/bookmarks-api.service.d.ts.map +0 -1
  197. package/lib/annotations/services/tags/tags.services.d.ts +0 -18
  198. package/lib/annotations/services/tags/tags.services.d.ts.map +0 -1
  199. package/lib/annotations/tags/tags.component.d.ts +0 -28
  200. package/lib/annotations/tags/tags.component.d.ts.map +0 -1
  201. package/lib/bookmark/components/bookmark-icons.component.d.ts +0 -19
  202. package/lib/bookmark/components/bookmark-icons.component.d.ts.map +0 -1
  203. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts +0 -11
  204. package/lib/icp/confirm-exit/confirm-action-dialog.component.d.ts.map +0 -1
  205. package/lib/icp/icp-follower.service.d.ts +0 -26
  206. package/lib/icp/icp-follower.service.d.ts.map +0 -1
  207. package/lib/icp/icp-presenter.service.d.ts +0 -25
  208. package/lib/icp/icp-presenter.service.d.ts.map +0 -1
  209. package/lib/icp/icp-session-api.service.d.ts +0 -15
  210. package/lib/icp/icp-session-api.service.d.ts.map +0 -1
  211. package/lib/icp/icp-update.service.d.ts +0 -21
  212. package/lib/icp/icp-update.service.d.ts.map +0 -1
  213. package/lib/icp/icp.events.d.ts +0 -14
  214. package/lib/icp/icp.events.d.ts.map +0 -1
  215. package/lib/icp/icp.interfaces.d.ts +0 -23
  216. package/lib/icp/icp.interfaces.d.ts.map +0 -1
  217. package/lib/icp/icp.service.d.ts +0 -40
  218. package/lib/icp/icp.service.d.ts.map +0 -1
  219. package/lib/icp/participants-list/participants-list.component.d.ts +0 -23
  220. package/lib/icp/participants-list/participants-list.component.d.ts.map +0 -1
  221. package/lib/icp/socket.service.d.ts +0 -28
  222. package/lib/icp/socket.service.d.ts.map +0 -1
  223. package/lib/media-viewer.component.d.ts +0 -72
  224. package/lib/media-viewer.component.d.ts.map +0 -1
  225. package/lib/media-viewer.module.d.ts +0 -36
  226. package/lib/media-viewer.module.d.ts.map +0 -1
  227. package/lib/print.service.d.ts +0 -8
  228. package/lib/print.service.d.ts.map +0 -1
  229. package/lib/redaction/components/redaction.component.d.ts +0 -42
  230. package/lib/redaction/components/redaction.component.d.ts.map +0 -1
  231. package/lib/redaction/services/redaction-api.service.d.ts +0 -20
  232. package/lib/redaction/services/redaction-api.service.d.ts.map +0 -1
  233. package/lib/redaction/services/redaction.model.d.ts +0 -11
  234. package/lib/redaction/services/redaction.model.d.ts.map +0 -1
  235. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts +0 -15
  236. package/lib/shared/gov-uk-date/gov-uk-date.component.d.ts.map +0 -1
  237. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts +0 -11
  238. package/lib/shared/gov-uk-error-message/gov-uk-error-message.component.d.ts.map +0 -1
  239. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +0 -16
  240. package/lib/shared/gov-uk-fieldset/gov-uk-fieldset.component.d.ts.map +0 -1
  241. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts +0 -14
  242. package/lib/shared/gov-uk-label/gov-uk-label.component.d.ts.map +0 -1
  243. package/lib/shared/shared.module.d.ts +0 -14
  244. package/lib/shared/shared.module.d.ts.map +0 -1
  245. package/lib/shared/util/helpers/html-templates.helper.d.ts +0 -9
  246. package/lib/shared/util/helpers/html-templates.helper.d.ts.map +0 -1
  247. package/lib/shared/util/services/number.helper.service.d.ts +0 -11
  248. package/lib/shared/util/services/number.helper.service.d.ts.map +0 -1
  249. package/lib/store/actions/annotation.actions.d.ts +0 -126
  250. package/lib/store/actions/annotation.actions.d.ts.map +0 -1
  251. package/lib/store/actions/bookmark.actions.d.ts +0 -117
  252. package/lib/store/actions/bookmark.actions.d.ts.map +0 -1
  253. package/lib/store/actions/document.actions.d.ts +0 -90
  254. package/lib/store/actions/document.actions.d.ts.map +0 -1
  255. package/lib/store/actions/icp.actions.d.ts +0 -75
  256. package/lib/store/actions/icp.actions.d.ts.map +0 -1
  257. package/lib/store/actions/redaction.actions.d.ts +0 -127
  258. package/lib/store/actions/redaction.actions.d.ts.map +0 -1
  259. package/lib/store/actions/tag.actions.d.ts +0 -30
  260. package/lib/store/actions/tag.actions.d.ts.map +0 -1
  261. package/lib/store/bookmarks-store-utils.d.ts +0 -9
  262. package/lib/store/bookmarks-store-utils.d.ts.map +0 -1
  263. package/lib/store/effects/annotation.effects.d.ts +0 -16
  264. package/lib/store/effects/annotation.effects.d.ts.map +0 -1
  265. package/lib/store/effects/bookmarks.effects.d.ts +0 -21
  266. package/lib/store/effects/bookmarks.effects.d.ts.map +0 -1
  267. package/lib/store/effects/document.effects.d.ts +0 -17
  268. package/lib/store/effects/document.effects.d.ts.map +0 -1
  269. package/lib/store/effects/icp.effects.d.ts +0 -16
  270. package/lib/store/effects/icp.effects.d.ts.map +0 -1
  271. package/lib/store/effects/index.d.ts +0 -2
  272. package/lib/store/effects/index.d.ts.map +0 -1
  273. package/lib/store/effects/redaction.effects.d.ts +0 -20
  274. package/lib/store/effects/redaction.effects.d.ts.map +0 -1
  275. package/lib/store/models/bookmarks.interface.d.ts +0 -31
  276. package/lib/store/models/bookmarks.interface.d.ts.map +0 -1
  277. package/lib/store/models/filters.interface.d.ts +0 -8
  278. package/lib/store/models/filters.interface.d.ts.map +0 -1
  279. package/lib/store/reducers/annotations.reducer.d.ts +0 -48
  280. package/lib/store/reducers/annotations.reducer.d.ts.map +0 -1
  281. package/lib/store/reducers/bookmarks.reducer.d.ts +0 -27
  282. package/lib/store/reducers/bookmarks.reducer.d.ts.map +0 -1
  283. package/lib/store/reducers/document.reducer.d.ts +0 -52
  284. package/lib/store/reducers/document.reducer.d.ts.map +0 -1
  285. package/lib/store/reducers/icp.reducer.d.ts +0 -9
  286. package/lib/store/reducers/icp.reducer.d.ts.map +0 -1
  287. package/lib/store/reducers/redaction.reducer.d.ts +0 -32
  288. package/lib/store/reducers/redaction.reducer.d.ts.map +0 -1
  289. package/lib/store/reducers/reducers.d.ts +0 -24
  290. package/lib/store/reducers/reducers.d.ts.map +0 -1
  291. package/lib/store/reducers/tags.reducer.d.ts +0 -32
  292. package/lib/store/reducers/tags.reducer.d.ts.map +0 -1
  293. package/lib/store/selectors/annotation.selectors.d.ts +0 -136
  294. package/lib/store/selectors/annotation.selectors.d.ts.map +0 -1
  295. package/lib/store/selectors/bookmark.selectors.d.ts +0 -38
  296. package/lib/store/selectors/bookmark.selectors.d.ts.map +0 -1
  297. package/lib/store/selectors/document.selectors.d.ts +0 -23
  298. package/lib/store/selectors/document.selectors.d.ts.map +0 -1
  299. package/lib/store/selectors/icp.selectors.d.ts +0 -10
  300. package/lib/store/selectors/icp.selectors.d.ts.map +0 -1
  301. package/lib/store/selectors/redaction.selectors.d.ts +0 -35
  302. package/lib/store/selectors/redaction.selectors.d.ts.map +0 -1
  303. package/lib/store/selectors/tag.selectors.d.ts +0 -28
  304. package/lib/store/selectors/tag.selectors.d.ts.map +0 -1
  305. package/lib/store/store-utils.d.ts +0 -25
  306. package/lib/store/store-utils.d.ts.map +0 -1
  307. package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts +0 -20
  308. package/lib/toolbar/highlight-toolbar/highlight-toolbar.component.d.ts.map +0 -1
  309. package/lib/toolbar/icp-event.service.d.ts +0 -21
  310. package/lib/toolbar/icp-event.service.d.ts.map +0 -1
  311. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts +0 -24
  312. package/lib/toolbar/icp-toolbar/icp-toolbar.component.d.ts.map +0 -1
  313. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts +0 -69
  314. package/lib/toolbar/main-toolbar/main-toolbar.component.d.ts.map +0 -1
  315. package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts +0 -60
  316. package/lib/toolbar/redaction-search-bar/redaction-search-bar.component.d.ts.map +0 -1
  317. package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts +0 -12
  318. package/lib/toolbar/redaction-search-bar/redaction-search.model.d.ts.map +0 -1
  319. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts +0 -30
  320. package/lib/toolbar/redaction-toolbar/redaction-toolbar.component.d.ts.map +0 -1
  321. package/lib/toolbar/search-bar/search-bar.component.d.ts +0 -34
  322. package/lib/toolbar/search-bar/search-bar.component.d.ts.map +0 -1
  323. package/lib/toolbar/toolbar-button-visibility.service.d.ts +0 -67
  324. package/lib/toolbar/toolbar-button-visibility.service.d.ts.map +0 -1
  325. package/lib/toolbar/toolbar-event.service.d.ts +0 -96
  326. package/lib/toolbar/toolbar-event.service.d.ts.map +0 -1
  327. package/lib/toolbar/toolbar.module.d.ts +0 -19
  328. package/lib/toolbar/toolbar.module.d.ts.map +0 -1
  329. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts +0 -31
  330. package/lib/viewers/convertible-content-viewer/convertible-content-viewer.component.d.ts.map +0 -1
  331. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts +0 -12
  332. package/lib/viewers/convertible-content-viewer/document-conversion-api.service.d.ts.map +0 -1
  333. package/lib/viewers/grab-n-drag.directive.d.ts +0 -19
  334. package/lib/viewers/grab-n-drag.directive.d.ts.map +0 -1
  335. package/lib/viewers/image-viewer/image-viewer.component.d.ts +0 -57
  336. package/lib/viewers/image-viewer/image-viewer.component.d.ts.map +0 -1
  337. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts +0 -25
  338. package/lib/viewers/multimedia-player/multimedia-player.component.d.ts.map +0 -1
  339. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts +0 -69
  340. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.d.ts.map +0 -1
  341. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts +0 -17
  342. package/lib/viewers/pdf-viewer/pdf-js/pdf-js-wrapper.provider.d.ts.map +0 -1
  343. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts +0 -82
  344. package/lib/viewers/pdf-viewer/pdf-viewer.component.d.ts.map +0 -1
  345. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts +0 -82
  346. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.component.d.ts.map +0 -1
  347. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts +0 -22
  348. package/lib/viewers/pdf-viewer/side-bar/bookmarks/bookmarks.interfaces.d.ts.map +0 -1
  349. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts +0 -20
  350. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline-item.component.d.ts.map +0 -1
  351. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts +0 -14
  352. package/lib/viewers/pdf-viewer/side-bar/outline-item/outline.model.d.ts.map +0 -1
  353. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts +0 -42
  354. package/lib/viewers/pdf-viewer/side-bar/side-bar.component.d.ts.map +0 -1
  355. package/lib/viewers/rotation-persist/rotation-api.service.d.ts +0 -14
  356. package/lib/viewers/rotation-persist/rotation-api.service.d.ts.map +0 -1
  357. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts +0 -27
  358. package/lib/viewers/rotation-persist/rotation-persist.directive.d.ts.map +0 -1
  359. package/lib/viewers/rotation-persist/rotation.model.d.ts +0 -5
  360. package/lib/viewers/rotation-persist/rotation.model.d.ts.map +0 -1
  361. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts +0 -23
  362. package/lib/viewers/unsupported-viewer/unsupported-viewer.component.d.ts.map +0 -1
  363. package/lib/viewers/viewer-event.service.d.ts +0 -23
  364. package/lib/viewers/viewer-event.service.d.ts.map +0 -1
  365. package/lib/viewers/viewer-exception.model.d.ts +0 -15
  366. package/lib/viewers/viewer-exception.model.d.ts.map +0 -1
  367. package/lib/viewers/viewer-util.service.d.ts +0 -10
  368. package/lib/viewers/viewer-util.service.d.ts.map +0 -1
  369. package/public_api.d.ts +0 -30
  370. package/public_api.d.ts.map +0 -1
@@ -1,237 +0,0 @@
1
- import { SearchType } from './../toolbar-event.service';
2
- import { Component, HostListener, ViewChild } from '@angular/core';
3
- import { select } from '@ngrx/store';
4
- import * as fromDocument from '../../store/selectors/document.selectors';
5
- import * as fromRedactionActions from '../../store/actions/redaction.actions';
6
- import { v4 as uuid } from 'uuid';
7
- import { some } from 'lodash';
8
- import { HtmlTemplatesHelper } from '../../shared/util/helpers/html-templates.helper';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@ngrx/store";
11
- import * as i2 from "../toolbar-button-visibility.service";
12
- import * as i3 from "../toolbar-event.service";
13
- import * as i4 from "../../annotations/annotation-set/annotation-create/highlight-create/highlight-create.service";
14
- import * as i5 from "@angular/common";
15
- import * as i6 from "@angular/forms";
16
- import * as i7 from "rpx-xui-translation";
17
- export class RedactionSearchBarComponent {
18
- constructor(store, toolbarButtons, toolbarEvents, highlightService) {
19
- this.store = store;
20
- this.toolbarButtons = toolbarButtons;
21
- this.toolbarEvents = toolbarEvents;
22
- this.highlightService = highlightService;
23
- this.highlightAll = true;
24
- this.matchCase = false;
25
- this.wholeWord = false;
26
- this.resultsText = '';
27
- this.searchText = '';
28
- this.resultCount = 0;
29
- this.redactElements = [];
30
- this.advancedSearchVisible = false;
31
- }
32
- ngOnInit() {
33
- this.subscription = this.toolbarEvents.redactionSerachSubject.subscribe((results) => this.redactAllSearched(results));
34
- this.subscription.add(this.store.pipe(select(fromDocument.getDocumentId)).subscribe(docId => this.documentId = docId));
35
- this.subscription.add(this.store.pipe(select(fromDocument.getPages)).subscribe((pages) => {
36
- if (pages[1]) {
37
- this.allPages = pages;
38
- }
39
- }));
40
- this.subscription.add(this.toolbarEvents.searchResultsCountSubject.subscribe(results => this.setSearchResultsCount(results)));
41
- this.subscription.add(this.toolbarEvents.openRedactionSearch.subscribe((searchMode) => {
42
- if (searchMode) {
43
- this.openSearchModal = searchMode.isOpen;
44
- this.searchType = searchMode.modeType;
45
- this.modeText();
46
- }
47
- }));
48
- this.subscription.add(this.toolbarEvents.redactAllInProgressSubject
49
- .subscribe(inProgress => this.redactAllInProgress = inProgress));
50
- }
51
- ngOnDestroy() {
52
- this.subscription.unsubscribe();
53
- }
54
- onWindowKeyDown(e) {
55
- if (e.code === 'F3' || (e.ctrlKey && e.code === 'KeyF')) {
56
- e.preventDefault();
57
- this.toolbarEvents.searchBarHidden.next(false);
58
- setTimeout(() => this.findInput.nativeElement.focus(), 200);
59
- }
60
- }
61
- search(reset = true) {
62
- this.redactAll = !reset;
63
- if (this.redactAll) {
64
- this.toolbarEvents.redactAllInProgressSubject.next(true);
65
- }
66
- if (reset) {
67
- this.redactElements = [];
68
- }
69
- this.toolbarEvents.search({
70
- searchTerm: this.searchText,
71
- highlightAll: this.highlightAll,
72
- matchCase: this.matchCase,
73
- wholeWord: this.wholeWord,
74
- previous: false,
75
- reset
76
- });
77
- }
78
- modeText() {
79
- if (this.searchType === SearchType.Highlight) {
80
- this.inProgressText = 'Highlighting';
81
- this.titleText = 'Highlight';
82
- }
83
- else if (this.searchType === SearchType.Redact) {
84
- this.inProgressText = 'Redacting';
85
- this.titleText = 'Redact';
86
- }
87
- }
88
- saveRedaction(redactRectangle) {
89
- const redaction = redactRectangle.map(ele => {
90
- return { page: ele.page, rectangles: ele.rectangles, redactionId: uuid(), documentId: this.documentId };
91
- });
92
- this.store.dispatch(new fromRedactionActions.SaveBulkRedaction({ searchRedactions: redaction }));
93
- }
94
- existInRedactElements(pageNumber, matechedIndex, rectangles) {
95
- if (this.redactElements && this.redactElements.length > 0) {
96
- const pagesFound = this.redactElements.find(re => re.page === pageNumber && re.matchedIndex === matechedIndex);
97
- const pageRectangles = pagesFound?.rectangles;
98
- if (!pageRectangles || pageRectangles.length <= 0) {
99
- return false;
100
- }
101
- let matchesRectangles = 0;
102
- for (let rectIndx = 0; rectIndx < pageRectangles.length; rectIndx++) {
103
- const rectangle = pageRectangles[rectIndx];
104
- const foundRectangle = rectangles.find(re => re.width === rectangle.width &&
105
- re.height === rectangle.height && re.x === rectangle.x && re.y === rectangle.y);
106
- if (foundRectangle) {
107
- matchesRectangles++;
108
- }
109
- }
110
- return pageRectangles.length === matchesRectangles;
111
- }
112
- return false;
113
- }
114
- onCloseSearchModal() {
115
- this.toolbarEvents.openRedactionSearch.next({ isOpen: false, modeType: this.searchType });
116
- }
117
- setSearchResultsCount(results) {
118
- this.resultCount = results.total;
119
- this.resultsText = this.resultCount > 0
120
- ? `${results.total} results founds`
121
- : 'No results found';
122
- }
123
- redactAllSearched(results) {
124
- const $this = this;
125
- const intervalId = setInterval(() => {
126
- const highlightElement = document.getElementsByClassName('highlight selected');
127
- if (highlightElement && highlightElement.length > 0) {
128
- clearInterval(intervalId);
129
- $this.redactAllSearchedTick(results);
130
- }
131
- }, 100);
132
- }
133
- redactAllSearchedTick(results) {
134
- const highlightElement = document.getElementsByClassName('highlight selected');
135
- if (highlightElement && highlightElement.length > 0) {
136
- this.resultCount = results.matchesCount;
137
- const pageNumber = results.page + 1;
138
- const rectangles = this.getRectangles(pageNumber);
139
- if (rectangles && this.redactElements.length <= this.resultCount
140
- && !this.existInRedactElements(pageNumber, results.matchedIndex, rectangles)) {
141
- this.redactElements.push({ page: pageNumber, matchedIndex: results?.matchedIndex, rectangles });
142
- this.CreateRedactAllText();
143
- }
144
- if (this.redactAll && this.resultCount && this.resultCount > 0
145
- && rectangles && this.redactElements.length < this.resultCount) {
146
- this.search(false);
147
- }
148
- if (this.redactAll && this.resultCount && this.redactElements.length === this.resultCount) {
149
- this.redactAll = false;
150
- this.redactAllText = null;
151
- if (this.searchType === SearchType.Redact) {
152
- this.saveRedaction(this.redactElements);
153
- }
154
- else if (this.searchType === SearchType.Highlight) {
155
- this.highlightService.saveAnnotationSet(this.redactElements);
156
- this.cleanUpPostSave();
157
- }
158
- }
159
- }
160
- }
161
- cleanUpPostSave() {
162
- this.toolbarEvents.redactAllInProgressSubject.next(false);
163
- this.searchText = '';
164
- this.search();
165
- }
166
- CreateRedactAllText() {
167
- this.redactAllText = `${this.redactElements.length} of ${this.resultCount}`;
168
- }
169
- onEscapeKeyPress(e) {
170
- this.toolbarEvents.searchBarHidden.next(true);
171
- }
172
- onEnterKeyPress(e) {
173
- this.search();
174
- }
175
- toggleSearchBar() {
176
- this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());
177
- }
178
- getRectangles(page) {
179
- this.pageHeight = this.allPages[page].styles.height;
180
- this.pageWidth = this.allPages[page].styles.width;
181
- this.zoom = parseFloat(this.allPages[page].scaleRotation.scale);
182
- this.rotate = parseInt(this.allPages[page].scaleRotation.rotation, 10);
183
- const selectedHighLightedElements = document.getElementsByClassName('highlight selected');
184
- if (selectedHighLightedElements && selectedHighLightedElements.length > 0) {
185
- const docRange = document.createRange();
186
- if (some(selectedHighLightedElements, element => element.className === 'highlight begin selected' || element.className === 'highlight end selected')) {
187
- docRange.setStart(selectedHighLightedElements[0], 0);
188
- const endNode = selectedHighLightedElements[selectedHighLightedElements.length - 1];
189
- docRange.setEnd(endNode, endNode.childNodes.length);
190
- }
191
- else {
192
- docRange.selectNodeContents(selectedHighLightedElements[0]);
193
- }
194
- const selection = window.getSelection();
195
- selection?.removeAllRanges();
196
- selection?.addRange(docRange);
197
- if (selection.rangeCount && !selection.isCollapsed) {
198
- const range = selection.getRangeAt(0).cloneRange();
199
- const clientRects = range.getClientRects();
200
- if (clientRects) {
201
- const parentRect = HtmlTemplatesHelper.getAdjustedBoundingRect(selectedHighLightedElements[0]?.parentElement?.parentElement);
202
- const selectionRectangles = [];
203
- for (let i = 0; i < clientRects.length; i++) {
204
- const selectionRectangle = this.createTextRectangle(clientRects[i], parentRect);
205
- const findSelecttionRectangle = selectionRectangles.find((rect) => rect.width === selectionRectangle.width && rect.x === selectionRectangle.x);
206
- if (!findSelecttionRectangle) {
207
- selectionRectangles.push(selectionRectangle);
208
- }
209
- }
210
- return selectionRectangles;
211
- }
212
- }
213
- }
214
- }
215
- createTextRectangle(rect, parentRect) {
216
- const height = rect.bottom - rect.top;
217
- const width = rect.right - rect.left;
218
- const top = rect.top - parentRect.top;
219
- const left = rect.left - parentRect.left;
220
- let rectangle = this.highlightService.applyRotation(this.pageHeight, this.pageWidth, height, width, top, left, this.rotate, this.zoom);
221
- rectangle = { id: uuid(), ...rectangle };
222
- return rectangle;
223
- }
224
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedactionSearchBarComponent, deps: [{ token: i1.Store }, { token: i2.ToolbarButtonVisibilityService }, { token: i3.ToolbarEventService }, { token: i4.HighlightCreateService }], target: i0.ɵɵFactoryTarget.Component }); }
225
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RedactionSearchBarComponent, selector: "mv-redaction-search-bar", host: { listeners: { "window:keydown": "onWindowKeyDown($event)" } }, viewQueries: [{ propertyName: "findInput", first: true, predicate: ["findInput"], descendants: true, static: true }], ngImport: i0, template: "<div\n *ngIf=\"openSearchModal\"\n class=\"searchbar redaction-search-bar govuk-!-padding-3\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full govuk-!-padding-right-0\">\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"onCloseSearchModal()\"\n ></button>\n </div>\n <input\n id=\"search_input\"\n class=\"govuk-input govuk-!-width-three-quarters govuk-!-display-inline-block govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Redact from search\"\n #findInput\n title=\"Redact from search\"\n placeholder=\"{{ titleText + ' from search...' | rpxTranslate }}\"\n data-l10n-id=\"search_input\"\n [ngModel]=\"searchText\"\n (ngModelChange)=\"searchText = $event\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n />\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvSearchAllBtn\"\n class=\"govuk-button govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n [disabled]=\"redactAllInProgress\"\n >\n {{ \"Search\" | rpxTranslate }}\n </button>\n <button\n id=\"mvRedactAllBtn\"\n class=\"govuk-button govuk-!-margin-left-2 govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search(false)\"\n [disabled]=\"redactAllInProgress || resultCount <= 0\"\n >\n {{ titleText + \" all\" | rpxTranslate }}\n </button>\n </div>\n <div\n class=\"govuk-grid-column-three-quarters govuk-!-padding-left-0 govuk-!-padding-top-2 redaction-status-text\"\n >\n <span\n id=\"findRedactResultsCount\"\n class=\"govuk-grid-column-full govuk-!-margin-right-4 govuk-!-margin-left-0 govuk-!-padding-left-0\"\n ><h4\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n *ngIf=\"redactAllInProgress\"\n >\n {{ inProgressText + \" in progress\" | rpxTranslate }}\n </h4>\n {{ redactAllInProgress ? \"\" : resultsText }}</span\n >\n <span>\n <h5\n id=\"redactAllInProgressCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n >\n {{ redactAllInProgress ? redactAllText : \"\" }}\n </h5>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".redaction-search-buttons-area{display:flex;flex-direction:row;padding-top:.5rem}.redaction-search-bar{width:20rem;left:73%;top:2%}.redaction-status-text{height:2.6rem}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i7.RpxTranslatePipe, name: "rpxTranslate" }] }); }
226
- }
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedactionSearchBarComponent, decorators: [{
228
- type: Component,
229
- args: [{ selector: 'mv-redaction-search-bar', template: "<div\n *ngIf=\"openSearchModal\"\n class=\"searchbar redaction-search-bar govuk-!-padding-3\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full govuk-!-padding-right-0\">\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"onCloseSearchModal()\"\n ></button>\n </div>\n <input\n id=\"search_input\"\n class=\"govuk-input govuk-!-width-three-quarters govuk-!-display-inline-block govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Redact from search\"\n #findInput\n title=\"Redact from search\"\n placeholder=\"{{ titleText + ' from search...' | rpxTranslate }}\"\n data-l10n-id=\"search_input\"\n [ngModel]=\"searchText\"\n (ngModelChange)=\"searchText = $event\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n />\n <div class=\"redaction-search-buttons-area\">\n <button\n id=\"mvSearchAllBtn\"\n class=\"govuk-button govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n [disabled]=\"redactAllInProgress\"\n >\n {{ \"Search\" | rpxTranslate }}\n </button>\n <button\n id=\"mvRedactAllBtn\"\n class=\"govuk-button govuk-!-margin-left-2 govuk-!-margin-bottom-0\"\n data-module=\"govuk-button\"\n (click)=\"search(false)\"\n [disabled]=\"redactAllInProgress || resultCount <= 0\"\n >\n {{ titleText + \" all\" | rpxTranslate }}\n </button>\n </div>\n <div\n class=\"govuk-grid-column-three-quarters govuk-!-padding-left-0 govuk-!-padding-top-2 redaction-status-text\"\n >\n <span\n id=\"findRedactResultsCount\"\n class=\"govuk-grid-column-full govuk-!-margin-right-4 govuk-!-margin-left-0 govuk-!-padding-left-0\"\n ><h4\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n *ngIf=\"redactAllInProgress\"\n >\n {{ inProgressText + \" in progress\" | rpxTranslate }}\n </h4>\n {{ redactAllInProgress ? \"\" : resultsText }}</span\n >\n <span>\n <h5\n id=\"redactAllInProgressCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-top-0 govuk-!-margin-bottom-1\"\n >\n {{ redactAllInProgress ? redactAllText : \"\" }}\n </h5>\n </span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".redaction-search-buttons-area{display:flex;flex-direction:row;padding-top:.5rem}.redaction-search-bar{width:20rem;left:73%;top:2%}.redaction-status-text{height:2.6rem}\n"] }]
230
- }], ctorParameters: () => [{ type: i1.Store }, { type: i2.ToolbarButtonVisibilityService }, { type: i3.ToolbarEventService }, { type: i4.HighlightCreateService }], propDecorators: { findInput: [{
231
- type: ViewChild,
232
- args: ['findInput', { static: true }]
233
- }], onWindowKeyDown: [{
234
- type: HostListener,
235
- args: ['window:keydown', ['$event']]
236
- }] } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkYWN0aW9uLXNlYXJjaC1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvdG9vbGJhci9yZWRhY3Rpb24tc2VhcmNoLWJhci9yZWRhY3Rpb24tc2VhcmNoLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3JlZGFjdGlvbi1zZWFyY2gtYmFyL3JlZGFjdGlvbi1zZWFyY2gtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0MsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFeEYsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlsRyxPQUFPLEVBQVMsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sS0FBSyxZQUFZLE1BQU0sMENBQTBDLENBQUM7QUFDekUsT0FBTyxLQUFLLG9CQUFvQixNQUFNLHVDQUF1QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7Ozs7OztBQU90RixNQUFNLE9BQU8sMkJBQTJCO0lBOEJ0QyxZQUNVLEtBQTZCLEVBQ3JCLGNBQThDLEVBQzlDLGFBQWtDLEVBQ2xDLGdCQUF3QztRQUhoRCxVQUFLLEdBQUwsS0FBSyxDQUF3QjtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0M7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBd0I7UUE5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QWU7c0JBRHJCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWxrUmVkYWN0aW9uLCBSZWRhY3Rpb24gfSBmcm9tICcuLy4uLy4uL3JlZGFjdGlvbi9zZXJ2aWNlcy9yZWRhY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgU2VhcmNoTW9kZSwgU2VhcmNoUmVzdWx0c0NvdW50LCBTZWFyY2hUeXBlIH0gZnJvbSAnLi8uLi90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVkYWN0aW9uU2VhcmNoLCBSZWRhY3RSZWN0YW5nbGUgfSBmcm9tICcuL3JlZGFjdGlvbi1zZWFyY2gubW9kZWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vdG9vbGJhci1idXR0b24tdmlzaWJpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmUsIHNlbGVjdCB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCAqIGFzIGZyb21TdG9yZSBmcm9tICcuLi8uLi9zdG9yZS9yZWR1Y2Vycy9yZWR1Y2Vycyc7XG5pbXBvcnQgeyBSZWN0YW5nbGUgfSBmcm9tICcuLi8uLi9hbm5vdGF0aW9ucy9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLXZpZXcvcmVjdGFuZ2xlL3JlY3RhbmdsZS5tb2RlbCc7XG5pbXBvcnQgKiBhcyBmcm9tRG9jdW1lbnQgZnJvbSAnLi4vLi4vc3RvcmUvc2VsZWN0b3JzL2RvY3VtZW50LnNlbGVjdG9ycyc7XG5pbXBvcnQgKiBhcyBmcm9tUmVkYWN0aW9uQWN0aW9ucyBmcm9tICcuLi8uLi9zdG9yZS9hY3Rpb25zL3JlZGFjdGlvbi5hY3Rpb25zJztcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEhpZ2hsaWdodENyZWF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hbm5vdGF0aW9ucy9hbm5vdGF0aW9uLXNldC9hbm5vdGF0aW9uLWNyZWF0ZS9oaWdobGlnaHQtY3JlYXRlL2hpZ2hsaWdodC1jcmVhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBzb21lIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEh0bWxUZW1wbGF0ZXNIZWxwZXIgfSBmcm9tICcuLi8uLi9zaGFyZWQvdXRpbC9oZWxwZXJzL2h0bWwtdGVtcGxhdGVzLmhlbHBlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LXJlZGFjdGlvbi1zZWFyY2gtYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZGFjdGlvbi1zZWFyY2gtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVkYWN0aW9uLXNlYXJjaC1iYXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSZWRhY3Rpb25TZWFyY2hCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQFZpZXdDaGlsZCgnZmluZElucHV0JywgeyBzdGF0aWM6IHRydWUgfSkgZmluZElucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIGhpZ2hsaWdodEFsbCA9IHRydWU7XG4gIG1hdGNoQ2FzZSA9IGZhbHNlO1xuICB3aG9sZVdvcmQgPSBmYWxzZTtcbiAgcmVzdWx0c1RleHQgPSAnJztcbiAgc2VhcmNoVGV4dCA9ICcnO1xuICByZXN1bHRDb3VudCA9IDA7XG4gIHJlZGFjdEVsZW1lbnRzOiBSZWRhY3RSZWN0YW5nbGVbXSA9IFtdO1xuICBwYWdlSGVpZ2h0OiBudW1iZXI7XG4gIHBhZ2VXaWR0aDogbnVtYmVyO1xuICB6b29tOiBudW1iZXI7XG4gIHJvdGF0ZTogbnVtYmVyO1xuICBhbGxQYWdlczogb2JqZWN0O1xuICByZWRhY3RBbGw6IGJvb2xlYW47XG4gIG9wZW5TZWFyY2hNb2RhbDogYm9vbGVhbjtcbiAgcmVkYWN0QWxsSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgcmVkYWN0QWxsVGV4dD86IHN0cmluZztcbiAgc2VhcmNoVHlwZTogU2VhcmNoVHlwZTtcbiAgaW5Qcm9ncmVzc1RleHQ6IHN0cmluZztcbiAgdGl0bGVUZXh0OiBzdHJpbmc7XG5cblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGRvY3VtZW50SWQ6IHN0cmluZztcbiAgcHVibGljIGFkdmFuY2VkU2VhcmNoVmlzaWJsZSA9IGZhbHNlO1xuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8ZnJvbVN0b3JlLlN0YXRlPixcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckJ1dHRvbnM6IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckV2ZW50czogVG9vbGJhckV2ZW50U2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGlnaGxpZ2h0U2VydmljZTogSGlnaGxpZ2h0Q3JlYXRlU2VydmljZSxcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnRvb2xiYXJFdmVudHMucmVkYWN0aW9uU2VyYWNoU3ViamVjdC5zdWJzY3JpYmUoKHJlc3VsdHM6IFJlZGFjdGlvblNlYXJjaCkgPT4gdGhpcy5yZWRhY3RBbGxTZWFyY2hlZChyZXN1bHRzKSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuc3RvcmUucGlwZShzZWxlY3QoZnJvbURvY3VtZW50LmdldERvY3VtZW50SWQpKS5zdWJzY3JpYmUoZG9jSWQgPT4gdGhpcy5kb2N1bWVudElkID0gZG9jSWQpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tRG9jdW1lbnQuZ2V0UGFnZXMpKS5zdWJzY3JpYmUoKHBhZ2VzKSA9PiB7XG4gICAgICBpZiAocGFnZXNbMV0pIHtcbiAgICAgICAgdGhpcy5hbGxQYWdlcyA9IHBhZ2VzO1xuICAgICAgfVxuICAgIH0pKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoUmVzdWx0c0NvdW50U3ViamVjdC5zdWJzY3JpYmUocmVzdWx0cyA9PiB0aGlzLnNldFNlYXJjaFJlc3VsdHNDb3VudChyZXN1bHRzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRvb2xiYXJFdmVudHMub3BlblJlZGFjdGlvblNlYXJjaC5zdWJzY3JpYmUoKHNlYXJjaE1vZGU6IFNlYXJjaE1vZGUpID0+IHtcbiAgICAgIGlmIChzZWFyY2hNb2RlKSB7XG4gICAgICAgIHRoaXMub3BlblNlYXJjaE1vZGFsID0gc2VhcmNoTW9kZS5pc09wZW47XG4gICAgICAgIHRoaXMuc2VhcmNoVHlwZSA9IHNlYXJjaE1vZGUubW9kZVR5cGU7XG4gICAgICAgIHRoaXMubW9kZVRleHQoKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMudG9vbGJhckV2ZW50cy5yZWRhY3RBbGxJblByb2dyZXNzU3ViamVjdFxuICAgICAgLnN1YnNjcmliZShpblByb2dyZXNzID0+IHRoaXMucmVkYWN0QWxsSW5Qcm9ncmVzcyA9IGluUHJvZ3Jlc3MpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbldpbmRvd0tleURvd24oZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChlLmNvZGUgPT09ICdGMycgfHwgKGUuY3RybEtleSAmJiBlLmNvZGUgPT09ICdLZXlGJykpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4ubmV4dChmYWxzZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZmluZElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMjAwKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2gocmVzZXQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5yZWRhY3RBbGwgPSAhcmVzZXQ7XG4gICAgaWYgKHRoaXMucmVkYWN0QWxsKSB7XG4gICAgICB0aGlzLnRvb2xiYXJFdmVudHMucmVkYWN0QWxsSW5Qcm9ncmVzc1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG4gICAgaWYgKHJlc2V0KSB7XG4gICAgICB0aGlzLnJlZGFjdEVsZW1lbnRzID0gW107XG4gICAgfVxuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2goe1xuICAgICAgc2VhcmNoVGVybTogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgaGlnaGxpZ2h0QWxsOiB0aGlzLmhpZ2hsaWdodEFsbCxcbiAgICAgIG1hdGNoQ2FzZTogdGhpcy5tYXRjaENhc2UsXG4gICAgICB3aG9sZVdvcmQ6IHRoaXMud2hvbGVXb3JkLFxuICAgICAgcHJldmlvdXM6IGZhbHNlLFxuICAgICAgcmVzZXRcbiAgICB9KTtcbiAgfVxuXG4gIG1vZGVUZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IFNlYXJjaFR5cGUuSGlnaGxpZ2h0KSB7XG4gICAgICB0aGlzLmluUHJvZ3Jlc3NUZXh0ID0gJ0hpZ2hsaWdodGluZyc7XG4gICAgICB0aGlzLnRpdGxlVGV4dCA9ICdIaWdobGlnaHQnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBTZWFyY2hUeXBlLlJlZGFjdCkge1xuICAgICAgdGhpcy5pblByb2dyZXNzVGV4dCA9ICdSZWRhY3RpbmcnO1xuICAgICAgdGhpcy50aXRsZVRleHQgPSAnUmVkYWN0JztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhdmVSZWRhY3Rpb24ocmVkYWN0UmVjdGFuZ2xlOiBSZWRhY3RSZWN0YW5nbGVbXSkge1xuICAgIGNvbnN0IHJlZGFjdGlvbiA9IHJlZGFjdFJlY3RhbmdsZS5tYXAoZWxlID0+IHtcbiAgICAgIHJldHVybiB7IHBhZ2U6IGVsZS5wYWdlLCByZWN0YW5nbGVzOiBlbGUucmVjdGFuZ2xlcywgcmVkYWN0aW9uSWQ6IHV1aWQoKSwgZG9jdW1lbnRJZDogdGhpcy5kb2N1bWVudElkIH0gYXMgUmVkYWN0aW9uO1xuICAgIH0pO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IGZyb21SZWRhY3Rpb25BY3Rpb25zLlNhdmVCdWxrUmVkYWN0aW9uKHsgc2VhcmNoUmVkYWN0aW9uczogcmVkYWN0aW9uIH0gYXMgQnVsa1JlZGFjdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBleGlzdEluUmVkYWN0RWxlbWVudHMocGFnZU51bWJlcjogbnVtYmVyLCBtYXRlY2hlZEluZGV4OiBudW1iZXIsIHJlY3RhbmdsZXM6IFJlY3RhbmdsZVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMucmVkYWN0RWxlbWVudHMgJiYgdGhpcy5yZWRhY3RFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBwYWdlc0ZvdW5kID0gdGhpcy5yZWRhY3RFbGVtZW50cy5maW5kKHJlID0+IHJlLnBhZ2UgPT09IHBhZ2VOdW1iZXIgJiYgcmUubWF0Y2hlZEluZGV4ID09PSBtYXRlY2hlZEluZGV4KTtcbiAgICAgIGNvbnN0IHBhZ2VSZWN0YW5nbGVzID0gcGFnZXNGb3VuZD8ucmVjdGFuZ2xlcztcbiAgICAgIGlmICghcGFnZVJlY3RhbmdsZXMgfHwgcGFnZVJlY3RhbmdsZXMubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgbGV0IG1hdGNoZXNSZWN0YW5nbGVzID0gMDtcbiAgICAgIGZvciAobGV0IHJlY3RJbmR4ID0gMDsgcmVjdEluZHggPCBwYWdlUmVjdGFuZ2xlcy5sZW5ndGg7IHJlY3RJbmR4KyspIHtcbiAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gcGFnZVJlY3RhbmdsZXNbcmVjdEluZHhdO1xuICAgICAgICBjb25zdCBmb3VuZFJlY3RhbmdsZSA9IHJlY3RhbmdsZXMuZmluZChyZSA9PiByZS53aWR0aCA9PT0gcmVjdGFuZ2xlLndpZHRoICYmXG4gICAgICAgICAgcmUuaGVpZ2h0ID09PSByZWN0YW5nbGUuaGVpZ2h0ICYmIHJlLnggPT09IHJlY3RhbmdsZS54ICYmIHJlLnkgPT09IHJlY3RhbmdsZS55KTtcbiAgICAgICAgaWYgKGZvdW5kUmVjdGFuZ2xlKSB7XG4gICAgICAgICAgbWF0Y2hlc1JlY3RhbmdsZXMrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHBhZ2VSZWN0YW5nbGVzLmxlbmd0aCA9PT0gbWF0Y2hlc1JlY3RhbmdsZXM7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG9uQ2xvc2VTZWFyY2hNb2RhbCgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMub3BlblJlZGFjdGlvblNlYXJjaC5uZXh0KHsgaXNPcGVuOiBmYWxzZSwgbW9kZVR5cGU6IHRoaXMuc2VhcmNoVHlwZSB9KTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBzZXRTZWFyY2hSZXN1bHRzQ291bnQocmVzdWx0czogU2VhcmNoUmVzdWx0c0NvdW50KTogdm9pZCB7XG4gICAgdGhpcy5yZXN1bHRDb3VudCA9IHJlc3VsdHMudG90YWw7XG4gICAgdGhpcy5yZXN1bHRzVGV4dCA9IHRoaXMucmVzdWx0Q291bnQgPiAwXG4gICAgICA/IGAke3Jlc3VsdHMudG90YWx9IHJlc3VsdHMgZm91bmRzYFxuICAgICAgOiAnTm8gcmVzdWx0cyBmb3VuZCc7XG4gIH1cblxuICBwcml2YXRlIHJlZGFjdEFsbFNlYXJjaGVkKHJlc3VsdHM6IFJlZGFjdGlvblNlYXJjaCk6IHZvaWQge1xuICAgIGNvbnN0ICR0aGlzID0gdGhpcztcbiAgICBjb25zdCBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgY29uc3QgaGlnaGxpZ2h0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hpZ2hsaWdodCBzZWxlY3RlZCcpO1xuICAgICAgaWYgKGhpZ2hsaWdodEVsZW1lbnQgJiYgaGlnaGxpZ2h0RWxlbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICAgICR0aGlzLnJlZGFjdEFsbFNlYXJjaGVkVGljayhyZXN1bHRzKTtcbiAgICAgIH1cbiAgICB9LCAxMDApO1xuICB9XG5cblxuICBwcml2YXRlIHJlZGFjdEFsbFNlYXJjaGVkVGljayhyZXN1bHRzOiBSZWRhY3Rpb25TZWFyY2gpOiB2b2lkIHtcbiAgICBjb25zdCBoaWdobGlnaHRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGlnaGxpZ2h0IHNlbGVjdGVkJyk7XG4gICAgaWYgKGhpZ2hsaWdodEVsZW1lbnQgJiYgaGlnaGxpZ2h0RWxlbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlc3VsdENvdW50ID0gcmVzdWx0cy5tYXRjaGVzQ291bnQ7XG4gICAgICBjb25zdCBwYWdlTnVtYmVyID0gcmVzdWx0cy5wYWdlICsgMTtcbiAgICAgIGNvbnN0IHJlY3RhbmdsZXMgPSB0aGlzLmdldFJlY3RhbmdsZXMocGFnZU51bWJlcik7XG4gICAgICBpZiAocmVjdGFuZ2xlcyAmJiB0aGlzLnJlZGFjdEVsZW1lbnRzLmxlbmd0aCA8PSB0aGlzLnJlc3VsdENvdW50XG4gICAgICAgICYmICF0aGlzLmV4aXN0SW5SZWRhY3RFbGVtZW50cyhwYWdlTnVtYmVyLCByZXN1bHRzLm1hdGNoZWRJbmRleCwgcmVjdGFuZ2xlcykpIHtcbiAgICAgICAgdGhpcy5yZWRhY3RFbGVtZW50cy5wdXNoKHsgcGFnZTogcGFnZU51bWJlciwgbWF0Y2hlZEluZGV4OiByZXN1bHRzPy5tYXRjaGVkSW5kZXgsIHJlY3RhbmdsZXMgfSBhcyBSZWRhY3RSZWN0YW5nbGUpO1xuICAgICAgICB0aGlzLkNyZWF0ZVJlZGFjdEFsbFRleHQoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnJlZGFjdEFsbCAmJiB0aGlzLnJlc3VsdENvdW50ICYmIHRoaXMucmVzdWx0Q291bnQgPiAwXG4gICAgICAgICYmIHJlY3RhbmdsZXMgJiYgdGhpcy5yZWRhY3RFbGVtZW50cy5sZW5ndGggPCB0aGlzLnJlc3VsdENvdW50KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoKGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucmVkYWN0QWxsICYmIHRoaXMucmVzdWx0Q291bnQgJiYgdGhpcy5yZWRhY3RFbGVtZW50cy5sZW5ndGggPT09IHRoaXMucmVzdWx0Q291bnQpIHtcbiAgICAgICAgdGhpcy5yZWRhY3RBbGwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZWRhY3RBbGxUZXh0ID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gU2VhcmNoVHlwZS5SZWRhY3QpIHtcbiAgICAgICAgICB0aGlzLnNhdmVSZWRhY3Rpb24odGhpcy5yZWRhY3RFbGVtZW50cyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBTZWFyY2hUeXBlLkhpZ2hsaWdodCkge1xuICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0U2VydmljZS5zYXZlQW5ub3RhdGlvblNldCh0aGlzLnJlZGFjdEVsZW1lbnRzKTtcbiAgICAgICAgICB0aGlzLmNsZWFuVXBQb3N0U2F2ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGVhblVwUG9zdFNhdmUoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnJlZGFjdEFsbEluUHJvZ3Jlc3NTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuICBwcml2YXRlIENyZWF0ZVJlZGFjdEFsbFRleHQoKSB7XG4gICAgdGhpcy5yZWRhY3RBbGxUZXh0ID0gYCR7dGhpcy5yZWRhY3RFbGVtZW50cy5sZW5ndGh9IG9mICR7dGhpcy5yZXN1bHRDb3VudH1gO1xuICB9XG5cbiAgcHVibGljIG9uRXNjYXBlS2V5UHJlc3MoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4ubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVudGVyS2V5UHJlc3MoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlU2VhcmNoQmFyKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4ubmV4dCghdGhpcy50b29sYmFyRXZlbnRzLnNlYXJjaEJhckhpZGRlbi5nZXRWYWx1ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVjdGFuZ2xlcyhwYWdlOiBudW1iZXIpOiBSZWN0YW5nbGVbXSB7XG4gICAgdGhpcy5wYWdlSGVpZ2h0ID0gdGhpcy5hbGxQYWdlc1twYWdlXS5zdHlsZXMuaGVpZ2h0O1xuICAgIHRoaXMucGFnZVdpZHRoID0gdGhpcy5hbGxQYWdlc1twYWdlXS5zdHlsZXMud2lkdGg7XG4gICAgdGhpcy56b29tID0gcGFyc2VGbG9hdCh0aGlzLmFsbFBhZ2VzW3BhZ2VdLnNjYWxlUm90YXRpb24uc2NhbGUpO1xuICAgIHRoaXMucm90YXRlID0gcGFyc2VJbnQodGhpcy5hbGxQYWdlc1twYWdlXS5zY2FsZVJvdGF0aW9uLnJvdGF0aW9uLCAxMCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRIaWdoTGlnaHRlZEVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaGlnaGxpZ2h0IHNlbGVjdGVkJyk7XG4gICAgaWYgKHNlbGVjdGVkSGlnaExpZ2h0ZWRFbGVtZW50cyAmJiBzZWxlY3RlZEhpZ2hMaWdodGVkRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZG9jUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgaWYgKHNvbWUoc2VsZWN0ZWRIaWdoTGlnaHRlZEVsZW1lbnRzLCBlbGVtZW50ID0+IGVsZW1lbnQuY2xhc3NOYW1lID09PSAnaGlnaGxpZ2h0IGJlZ2luIHNlbGVjdGVkJyB8fCBlbGVtZW50LmNsYXNzTmFtZSA9PT0gJ2hpZ2hsaWdodCBlbmQgc2VsZWN0ZWQnKSkge1xuICAgICAgICBkb2NSYW5nZS5zZXRTdGFydChzZWxlY3RlZEhpZ2hMaWdodGVkRWxlbWVudHNbMF0sIDApO1xuICAgICAgICBjb25zdCBlbmROb2RlID0gc2VsZWN0ZWRIaWdoTGlnaHRlZEVsZW1lbnRzW3NlbGVjdGVkSGlnaExpZ2h0ZWRFbGVtZW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgZG9jUmFuZ2Uuc2V0RW5kKGVuZE5vZGUsIGVuZE5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGRvY1JhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhzZWxlY3RlZEhpZ2hMaWdodGVkRWxlbWVudHNbMF0gYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UoZG9jUmFuZ2UpO1xuICAgICAgaWYgKHNlbGVjdGlvbi5yYW5nZUNvdW50ICYmICFzZWxlY3Rpb24uaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5jbG9uZVJhbmdlKCk7XG4gICAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gcmFuZ2UuZ2V0Q2xpZW50UmVjdHMoKTtcblxuICAgICAgICBpZiAoY2xpZW50UmVjdHMpIHtcbiAgICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gSHRtbFRlbXBsYXRlc0hlbHBlci5nZXRBZGp1c3RlZEJvdW5kaW5nUmVjdChzZWxlY3RlZEhpZ2hMaWdodGVkRWxlbWVudHNbMF0/LnBhcmVudEVsZW1lbnQ/LnBhcmVudEVsZW1lbnQpO1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGlvblJlY3RhbmdsZXM6IFJlY3RhbmdsZVtdID0gW107XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbGllbnRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gdGhpcy5jcmVhdGVUZXh0UmVjdGFuZ2xlKGNsaWVudFJlY3RzW2ldLCBwYXJlbnRSZWN0KTtcbiAgICAgICAgICAgIGNvbnN0IGZpbmRTZWxlY3R0aW9uUmVjdGFuZ2xlID0gc2VsZWN0aW9uUmVjdGFuZ2xlcy5maW5kKFxuICAgICAgICAgICAgICAocmVjdCkgPT4gcmVjdC53aWR0aCA9PT0gc2VsZWN0aW9uUmVjdGFuZ2xlLndpZHRoICYmIHJlY3QueCA9PT0gc2VsZWN0aW9uUmVjdGFuZ2xlLnhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIWZpbmRTZWxlY3R0aW9uUmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZXMucHVzaChzZWxlY3Rpb25SZWN0YW5nbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBzZWxlY3Rpb25SZWN0YW5nbGVzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUZXh0UmVjdGFuZ2xlKHJlY3Q6IERPTVJlY3QsIHBhcmVudFJlY3Q6IGFueSk6IFJlY3RhbmdsZSB7XG4gICAgY29uc3QgaGVpZ2h0ID0gcmVjdC5ib3R0b20gLSByZWN0LnRvcDtcbiAgICBjb25zdCB3aWR0aCA9IHJlY3QucmlnaHQgLSByZWN0LmxlZnQ7XG4gICAgY29uc3QgdG9wID0gcmVjdC50b3AgLSBwYXJlbnRSZWN0LnRvcDtcbiAgICBjb25zdCBsZWZ0ID0gcmVjdC5sZWZ0IC0gcGFyZW50UmVjdC5sZWZ0O1xuXG4gICAgbGV0IHJlY3RhbmdsZSA9IHRoaXMuaGlnaGxpZ2h0U2VydmljZS5hcHBseVJvdGF0aW9uKFxuICAgICAgdGhpcy5wYWdlSGVpZ2h0LFxuICAgICAgdGhpcy5wYWdlV2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICB3aWR0aCxcbiAgICAgIHRvcCxcbiAgICAgIGxlZnQsXG4gICAgICB0aGlzLnJvdGF0ZSxcbiAgICAgIHRoaXMuem9vbVxuICAgICk7XG4gICAgcmVjdGFuZ2xlID0geyBpZDogdXVpZCgpLCAuLi5yZWN0YW5nbGUgfTtcblxuICAgIHJldHVybiByZWN0YW5nbGUgYXMgUmVjdGFuZ2xlO1xuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwib3BlblNlYXJjaE1vZGFsXCJcbiAgY2xhc3M9XCJzZWFyY2hiYXIgcmVkYWN0aW9uLXNlYXJjaC1iYXIgZ292dWstIS1wYWRkaW5nLTNcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbCBnb3Z1ay0hLXBhZGRpbmctcmlnaHQtMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJlZGFjdGlvbi1zZWFyY2gtYnV0dG9ucy1hcmVhXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBpZD1cIm12Q2xvc2VCdG5cIlxuICAgICAgICAgICNtdkNsb3NlQnRuXG4gICAgICAgICAgY2xhc3M9XCJtdi1idXR0b24gc2VhcmNoYmFyLWJ1dHRvbi0tY2xvc2VcIlxuICAgICAgICAgIHRpdGxlPVwiQ2xvc2UgU2VhcmNoXCJcbiAgICAgICAgICBkYXRhLWwxMG4taWQ9XCJtdlJlZGFjdEJ0blwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2VTZWFyY2hNb2RhbCgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8aW5wdXRcbiAgICAgICAgaWQ9XCJzZWFyY2hfaW5wdXRcIlxuICAgICAgICBjbGFzcz1cImdvdnVrLWlucHV0IGdvdnVrLSEtd2lkdGgtdGhyZWUtcXVhcnRlcnMgZ292dWstIS1kaXNwbGF5LWlubGluZS1ibG9jayBnb3Z1ay0hLW1hcmdpbi10b3AtNVwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlJlZGFjdCBmcm9tIHNlYXJjaFwiXG4gICAgICAgICNmaW5kSW5wdXRcbiAgICAgICAgdGl0bGU9XCJSZWRhY3QgZnJvbSBzZWFyY2hcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHRpdGxlVGV4dCArICcgZnJvbSBzZWFyY2guLi4nIHwgcnB4VHJhbnNsYXRlIH19XCJcbiAgICAgICAgZGF0YS1sMTBuLWlkPVwic2VhcmNoX2lucHV0XCJcbiAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoVGV4dFwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaFRleHQgPSAkZXZlbnRcIlxuICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwib25Fc2NhcGVLZXlQcmVzcygkZXZlbnQpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25FbnRlcktleVByZXNzKCRldmVudClcIlxuICAgICAgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZWRhY3Rpb24tc2VhcmNoLWJ1dHRvbnMtYXJlYVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgaWQ9XCJtdlNlYXJjaEFsbEJ0blwiXG4gICAgICAgICAgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIlxuICAgICAgICAgIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwic2VhcmNoKClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJyZWRhY3RBbGxJblByb2dyZXNzXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwiU2VhcmNoXCIgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBpZD1cIm12UmVkYWN0QWxsQnRuXCJcbiAgICAgICAgICBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay0hLW1hcmdpbi1sZWZ0LTIgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIlxuICAgICAgICAgIGRhdGEtbW9kdWxlPVwiZ292dWstYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwic2VhcmNoKGZhbHNlKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInJlZGFjdEFsbEluUHJvZ3Jlc3MgfHwgcmVzdWx0Q291bnQgPD0gMFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyB0aXRsZVRleHQgKyBcIiBhbGxcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXRocmVlLXF1YXJ0ZXJzIGdvdnVrLSEtcGFkZGluZy1sZWZ0LTAgZ292dWstIS1wYWRkaW5nLXRvcC0yIHJlZGFjdGlvbi1zdGF0dXMtdGV4dFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgaWQ9XCJmaW5kUmVkYWN0UmVzdWx0c0NvdW50XCJcbiAgICAgICAgICBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLWZ1bGwgZ292dWstIS1tYXJnaW4tcmlnaHQtNCBnb3Z1ay0hLW1hcmdpbi1sZWZ0LTAgZ292dWstIS1wYWRkaW5nLWxlZnQtMFwiXG4gICAgICAgICAgPjxoNFxuICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay0hLWRpc3BsYXktaW5saW5lLWJsb2NrIGdvdnVrLSEtbWFyZ2luLXRvcC0wIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0xXCJcbiAgICAgICAgICAgICpuZ0lmPVwicmVkYWN0QWxsSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgaW5Qcm9ncmVzc1RleHQgKyBcIiBpbiBwcm9ncmVzc1wiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9oND5cbiAgICAgICAgICB7eyByZWRhY3RBbGxJblByb2dyZXNzID8gXCJcIiA6IHJlc3VsdHNUZXh0IH19PC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAgPGg1XG4gICAgICAgICAgICBpZD1cInJlZGFjdEFsbEluUHJvZ3Jlc3NDb3VudFwiXG4gICAgICAgICAgICBjbGFzcz1cImdvdnVrLSEtZGlzcGxheS1pbmxpbmUtYmxvY2sgZ292dWstIS1tYXJnaW4tdG9wLTAgZ292dWstIS1tYXJnaW4tYm90dG9tLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHJlZGFjdEFsbEluUHJvZ3Jlc3MgPyByZWRhY3RBbGxUZXh0IDogXCJcIiB9fVxuICAgICAgICAgIDwvaDU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkYWN0aW9uLXNlYXJjaC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhLXZpZXdlci9zcmMvbGliL3Rvb2xiYXIvcmVkYWN0aW9uLXNlYXJjaC1iYXIvcmVkYWN0aW9uLXNlYXJjaC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVjdGFuZ2xlIH0gZnJvbSAnLi4vLi4vYW5ub3RhdGlvbnMvYW5ub3RhdGlvbi1zZXQvYW5ub3RhdGlvbi12aWV3L3JlY3RhbmdsZS9yZWN0YW5nbGUubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlZGFjdGlvblNlYXJjaCB7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIG1hdGNoZWRJbmRleD86IG51bWJlcjtcbiAgbWF0Y2hlc0NvdW50PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZGFjdFJlY3RhbmdsZSB7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIG1hdGNoZWRJbmRleD86IG51bWJlcjtcbiAgcmVjdGFuZ2xlcz86IFJlY3RhbmdsZVtdO1xufVxuIl19
@@ -1,68 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { SearchType } from '../toolbar-event.service';
3
- import { select } from '@ngrx/store';
4
- import * as fromRedactSelectors from '../../store/selectors/redaction.selectors';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../toolbar-event.service";
7
- import * as i2 from "../toolbar-button-visibility.service";
8
- import * as i3 from "@ngrx/store";
9
- import * as i4 from "@angular/common";
10
- import * as i5 from "rpx-xui-translation";
11
- export class RedactionToolbarComponent {
12
- constructor(toolbarEventService, toolbarButtons, store) {
13
- this.toolbarEventService = toolbarEventService;
14
- this.toolbarButtons = toolbarButtons;
15
- this.store = store;
16
- this.preview = false;
17
- this.hasRedactions = false;
18
- this.subscriptions = [];
19
- }
20
- ngOnInit() {
21
- this.subscriptions.push(this.store.pipe(select(fromRedactSelectors.getRedactionArray)).subscribe(redactions => {
22
- this.hasRedactions = !!redactions.redactions.length;
23
- }));
24
- this.subscriptions.push(this.toolbarEventService.redactAllInProgressSubject.subscribe(inprogress => {
25
- this.redactionAllInProgress = inprogress;
26
- }));
27
- }
28
- onRedactAllSearch() {
29
- this.toolbarEventService.openRedactionSearch.next({ modeType: SearchType.Redact, isOpen: true });
30
- }
31
- toggleTextRedactionMode() {
32
- this.toolbarEventService.highlightModeSubject.next(true);
33
- }
34
- toggleDrawMode() {
35
- this.toolbarEventService.drawModeSubject.next(true);
36
- }
37
- togglePreview() {
38
- this.preview = !this.preview;
39
- this.toolbarEventService.toggleRedactionPreview(this.preview);
40
- }
41
- unmarkAll() {
42
- this.toolbarEventService.unmarkAll();
43
- }
44
- redact() {
45
- this.toolbarEventService.applyRedactionToDocument();
46
- }
47
- toggleRedactBar() {
48
- this.toolbarEventService.toggleRedactionMode();
49
- }
50
- redactPage() {
51
- this.toolbarEventService.drawModeSubject.next(true);
52
- this.toolbarEventService.redactPage();
53
- }
54
- ngOnDestroy() {
55
- for (const subscription of this.subscriptions) {
56
- subscription.unsubscribe();
57
- }
58
- }
59
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedactionToolbarComponent, deps: [{ token: i1.ToolbarEventService }, { token: i2.ToolbarButtonVisibilityService }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Component }); }
60
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RedactionToolbarComponent, selector: "mv-redaction-toolbar", inputs: { showRedactSearch: "showRedactSearch" }, ngImport: i0, template: "<div class=\"redaction\">\n <label class=\"govuk-label redaction-title\" data-l10n-id=\"redaction_options\">{{\n \"Redaction options\" | rpxTranslate\n }}</label>\n <button\n id=\"toggleDrawButton\"\n class=\"mv-button redaction-button--draw\"\n title=\"{{ 'Draw a box' | rpxTranslate }}}\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"toggleDrawMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleDrawButton_label\">{{\n \"Draw a box\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"redactPageButton\"\n class=\"mv-button redaction-button--redact-page\"\n title=\"{{ 'Redact page' | rpxTranslate }}\"\n data-l10n-id=\"redactPageButton\"\n (click)=\"redactPage()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"redactPageButton_label\">{{\n \"Redact page\" | rpxTranslate\n }}</span>\n </button>\n <button\n *ngIf=\"showRedactSearch\"\n id=\"mvRedactFromSearchBtn\"\n title=\"{{ 'From search' | rpxTranslate }}\"\n data-l10n-id=\"fromSearchButton\"\n class=\"mv-button redaction-button--search\"\n (click)=\"onRedactAllSearch()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span style=\"width: 5rem\" data-l10n-id=\"fromSearchButton_label\">{{\n \"From search\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n id=\"toggleHighlightButton\"\n class=\"mv-button redaction-button--redact\"\n aria-pressed=\"false\"\n title=\"{{ 'Redact text' | rpxTranslate }}\"\n data-l10n-id=\"toggleTextRedactionButton\"\n (click)=\"toggleTextRedactionMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleTextRedactionButton_label\">{{\n \"Redact text\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvClearBtn\"\n #mvClearBtn\n class=\"mv-button redaction-button--clear\"\n aria-pressed=\"false\"\n title=\"{{ 'Clear all' | rpxTranslate }}\"\n data-l10n-id=\"toggleClearAllButton\"\n (click)=\"unmarkAll()\"\n >\n <span data-l10n-id=\"Clear all\">{{ \"Clear all\" | rpxTranslate }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvPreviewBtn\"\n class=\"mv-button\"\n [class.redaction-button--preview]=\"!preview\"\n [class.redaction-button--hide-preview]=\"preview\"\n redaction-button--preview\n aria-pressed=\"false\"\n title=\"{{ 'Preview' | rpxTranslate }}\"\n data-l10n-id=\"togglePreviewButton\"\n (click)=\"togglePreview()\"\n >\n <span *ngIf=\"!preview\" data-l10n-id=\"redaction-preview_label\">{{\n \"Preview\" | rpxTranslate\n }}</span>\n <span *ngIf=\"preview\" data-l10n-id=\"redaction-hide-preview_label\">{{\n \"Hide preview\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvRedactBtn\"\n class=\"mv-button redaction-button--download\"\n aria-pressed=\"false\"\n title=\"{{ 'Save document' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"redact()\"\n >\n <span data-l10n-id=\"Save Document\">{{\n \"Save document\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button redaction-button--close\"\n title=\"{{ 'Close Redaction' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleRedactBar()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"Close Redaction\">{{\n \"Close Redaction\" | rpxTranslate\n }}</span>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.RpxTranslatePipe, name: "rpxTranslate" }] }); }
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedactionToolbarComponent, decorators: [{
63
- type: Component,
64
- args: [{ selector: 'mv-redaction-toolbar', template: "<div class=\"redaction\">\n <label class=\"govuk-label redaction-title\" data-l10n-id=\"redaction_options\">{{\n \"Redaction options\" | rpxTranslate\n }}</label>\n <button\n id=\"toggleDrawButton\"\n class=\"mv-button redaction-button--draw\"\n title=\"{{ 'Draw a box' | rpxTranslate }}}\"\n data-l10n-id=\"toggleDrawButton\"\n (click)=\"toggleDrawMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleDrawButton_label\">{{\n \"Draw a box\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"redactPageButton\"\n class=\"mv-button redaction-button--redact-page\"\n title=\"{{ 'Redact page' | rpxTranslate }}\"\n data-l10n-id=\"redactPageButton\"\n (click)=\"redactPage()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"redactPageButton_label\">{{\n \"Redact page\" | rpxTranslate\n }}</span>\n </button>\n <button\n *ngIf=\"showRedactSearch\"\n id=\"mvRedactFromSearchBtn\"\n title=\"{{ 'From search' | rpxTranslate }}\"\n data-l10n-id=\"fromSearchButton\"\n class=\"mv-button redaction-button--search\"\n (click)=\"onRedactAllSearch()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span style=\"width: 5rem\" data-l10n-id=\"fromSearchButton_label\">{{\n \"From search\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n *ngIf=\"toolbarButtons.showHighlightButton\"\n id=\"toggleHighlightButton\"\n class=\"mv-button redaction-button--redact\"\n aria-pressed=\"false\"\n title=\"{{ 'Redact text' | rpxTranslate }}\"\n data-l10n-id=\"toggleTextRedactionButton\"\n (click)=\"toggleTextRedactionMode()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"toggleTextRedactionButton_label\">{{\n \"Redact text\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvClearBtn\"\n #mvClearBtn\n class=\"mv-button redaction-button--clear\"\n aria-pressed=\"false\"\n title=\"{{ 'Clear all' | rpxTranslate }}\"\n data-l10n-id=\"toggleClearAllButton\"\n (click)=\"unmarkAll()\"\n >\n <span data-l10n-id=\"Clear all\">{{ \"Clear all\" | rpxTranslate }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvPreviewBtn\"\n class=\"mv-button\"\n [class.redaction-button--preview]=\"!preview\"\n [class.redaction-button--hide-preview]=\"preview\"\n redaction-button--preview\n aria-pressed=\"false\"\n title=\"{{ 'Preview' | rpxTranslate }}\"\n data-l10n-id=\"togglePreviewButton\"\n (click)=\"togglePreview()\"\n >\n <span *ngIf=\"!preview\" data-l10n-id=\"redaction-preview_label\">{{\n \"Preview\" | rpxTranslate\n }}</span>\n <span *ngIf=\"preview\" data-l10n-id=\"redaction-hide-preview_label\">{{\n \"Hide preview\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n [disabled]=\"!hasRedactions || redactionAllInProgress\"\n id=\"mvRedactBtn\"\n class=\"mv-button redaction-button--download\"\n aria-pressed=\"false\"\n title=\"{{ 'Save document' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"redact()\"\n >\n <span data-l10n-id=\"Save Document\">{{\n \"Save document\" | rpxTranslate\n }}</span>\n </button>\n\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button redaction-button--close\"\n title=\"{{ 'Close Redaction' | rpxTranslate }}\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleRedactBar()\"\n [disabled]=\"redactionAllInProgress\"\n >\n <span data-l10n-id=\"Close Redaction\">{{\n \"Close Redaction\" | rpxTranslate\n }}</span>\n </button>\n</div>\n" }]
65
- }], ctorParameters: () => [{ type: i1.ToolbarEventService }, { type: i2.ToolbarButtonVisibilityService }, { type: i3.Store }], propDecorators: { showRedactSearch: [{
66
- type: Input
67
- }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvdG9vbGJhci9yZWRhY3Rpb24tdG9vbGJhci9yZWRhY3Rpb24tdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3JlZGFjdGlvbi10b29sYmFyL3JlZGFjdGlvbi10b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUF1QixNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxNQUFNLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLG1CQUFtQixNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7O0FBVWpGLE1BQU0sT0FBTyx5QkFBeUI7SUFVcEMsWUFBNEIsbUJBQXdDLEVBQ2xELGNBQThDLEVBQ3RELEtBQTBDO1FBRnhCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDbEQsbUJBQWMsR0FBZCxjQUFjLENBQWdDO1FBQ3RELFVBQUssR0FBTCxLQUFLLENBQXFDO1FBUnBELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFZCxrQkFBYSxHQUFtQixFQUFFLENBQUM7SUFLYSxDQUFDO0lBRXpELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1RyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNqRyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVc7UUFDVCxLQUFLLE1BQU0sWUFBWSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM5QyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7a0lBN0RVLHlCQUF5QjtzSEFBekIseUJBQXlCLDhHQ2J0Qyx5ckhBdUhBOzs0RkQxR2EseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNFLHNCQUFzQjt5SkFLdkIsZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaFR5cGUsIFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCAqIGFzIGZyb21SZWRhY3RTZWxlY3RvcnMgZnJvbSAnLi4vLi4vc3RvcmUvc2VsZWN0b3JzL3JlZGFjdGlvbi5zZWxlY3RvcnMnO1xuaW1wb3J0ICogYXMgZnJvbVN0b3JlIGZyb20gJy4uLy4uL3N0b3JlL3JlZHVjZXJzL3JlZHVjZXJzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVG9vbGJhckJ1dHRvblZpc2liaWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vdG9vbGJhci1idXR0b24tdmlzaWJpbGl0eS5zZXJ2aWNlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdi1yZWRhY3Rpb24tdG9vbGJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWRhY3Rpb24tdG9vbGJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUmVkYWN0aW9uVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBzaG93UmVkYWN0U2VhcmNoOiBib29sZWFuO1xuXG4gIHByZXZpZXcgPSBmYWxzZTtcbiAgaGFzUmVkYWN0aW9ucyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcmVkYWN0aW9uQWxsSW5Qcm9ncmVzczogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckV2ZW50U2VydmljZTogVG9vbGJhckV2ZW50U2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckJ1dHRvbnM6IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxmcm9tU3RvcmUuQW5ub3RhdGlvblNldFN0YXRlPikgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tUmVkYWN0U2VsZWN0b3JzLmdldFJlZGFjdGlvbkFycmF5KSkuc3Vic2NyaWJlKHJlZGFjdGlvbnMgPT4ge1xuICAgICAgdGhpcy5oYXNSZWRhY3Rpb25zID0gISFyZWRhY3Rpb25zLnJlZGFjdGlvbnMubGVuZ3RoO1xuICAgIH0pKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnRvb2xiYXJFdmVudFNlcnZpY2UucmVkYWN0QWxsSW5Qcm9ncmVzc1N1YmplY3Quc3Vic2NyaWJlKGlucHJvZ3Jlc3MgPT4ge1xuICAgICAgdGhpcy5yZWRhY3Rpb25BbGxJblByb2dyZXNzID0gaW5wcm9ncmVzcztcbiAgICB9KSk7XG4gIH1cblxuICBvblJlZGFjdEFsbFNlYXJjaCgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudFNlcnZpY2Uub3BlblJlZGFjdGlvblNlYXJjaC5uZXh0KHsgbW9kZVR5cGU6IFNlYXJjaFR5cGUuUmVkYWN0LCBpc09wZW46IHRydWUgfSk7XG4gIH1cblxuICB0b2dnbGVUZXh0UmVkYWN0aW9uTW9kZSgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudFNlcnZpY2UuaGlnaGxpZ2h0TW9kZVN1YmplY3QubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHRvZ2dsZURyYXdNb2RlKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50U2VydmljZS5kcmF3TW9kZVN1YmplY3QubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHRvZ2dsZVByZXZpZXcoKSB7XG4gICAgdGhpcy5wcmV2aWV3ID0gIXRoaXMucHJldmlldztcbiAgICB0aGlzLnRvb2xiYXJFdmVudFNlcnZpY2UudG9nZ2xlUmVkYWN0aW9uUHJldmlldyh0aGlzLnByZXZpZXcpO1xuICB9XG5cbiAgdW5tYXJrQWxsKCkge1xuICAgIHRoaXMudG9vbGJhckV2ZW50U2VydmljZS51bm1hcmtBbGwoKTtcbiAgfVxuXG4gIHJlZGFjdCgpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudFNlcnZpY2UuYXBwbHlSZWRhY3Rpb25Ub0RvY3VtZW50KCk7XG4gIH1cblxuICB0b2dnbGVSZWRhY3RCYXIoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRTZXJ2aWNlLnRvZ2dsZVJlZGFjdGlvbk1vZGUoKTtcbiAgfVxuXG4gIHJlZGFjdFBhZ2UoKSB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRTZXJ2aWNlLmRyYXdNb2RlU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIHRoaXMudG9vbGJhckV2ZW50U2VydmljZS5yZWRhY3RQYWdlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN1YnNjcmlwdGlvbiBvZiB0aGlzLnN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJlZGFjdGlvblwiPlxuICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCByZWRhY3Rpb24tdGl0bGVcIiBkYXRhLWwxMG4taWQ9XCJyZWRhY3Rpb25fb3B0aW9uc1wiPnt7XG4gICAgXCJSZWRhY3Rpb24gb3B0aW9uc1wiIHwgcnB4VHJhbnNsYXRlXG4gIH19PC9sYWJlbD5cbiAgPGJ1dHRvblxuICAgIGlkPVwidG9nZ2xlRHJhd0J1dHRvblwiXG4gICAgY2xhc3M9XCJtdi1idXR0b24gcmVkYWN0aW9uLWJ1dHRvbi0tZHJhd1wiXG4gICAgdGl0bGU9XCJ7eyAnRHJhdyBhIGJveCcgfCBycHhUcmFuc2xhdGUgfX19XCJcbiAgICBkYXRhLWwxMG4taWQ9XCJ0b2dnbGVEcmF3QnV0dG9uXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRHJhd01vZGUoKVwiXG4gICAgW2Rpc2FibGVkXT1cInJlZGFjdGlvbkFsbEluUHJvZ3Jlc3NcIlxuICA+XG4gICAgPHNwYW4gZGF0YS1sMTBuLWlkPVwidG9nZ2xlRHJhd0J1dHRvbl9sYWJlbFwiPnt7XG4gICAgICBcIkRyYXcgYSBib3hcIiB8IHJweFRyYW5zbGF0ZVxuICAgIH19PC9zcGFuPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgaWQ9XCJyZWRhY3RQYWdlQnV0dG9uXCJcbiAgICBjbGFzcz1cIm12LWJ1dHRvbiByZWRhY3Rpb24tYnV0dG9uLS1yZWRhY3QtcGFnZVwiXG4gICAgdGl0bGU9XCJ7eyAnUmVkYWN0IHBhZ2UnIHwgcnB4VHJhbnNsYXRlIH19XCJcbiAgICBkYXRhLWwxMG4taWQ9XCJyZWRhY3RQYWdlQnV0dG9uXCJcbiAgICAoY2xpY2spPVwicmVkYWN0UGFnZSgpXCJcbiAgICBbZGlzYWJsZWRdPVwicmVkYWN0aW9uQWxsSW5Qcm9ncmVzc1wiXG4gID5cbiAgICA8c3BhbiBkYXRhLWwxMG4taWQ9XCJyZWRhY3RQYWdlQnV0dG9uX2xhYmVsXCI+e3tcbiAgICAgIFwiUmVkYWN0IHBhZ2VcIiB8IHJweFRyYW5zbGF0ZVxuICAgIH19PC9zcGFuPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwic2hvd1JlZGFjdFNlYXJjaFwiXG4gICAgaWQ9XCJtdlJlZGFjdEZyb21TZWFyY2hCdG5cIlxuICAgIHRpdGxlPVwie3sgJ0Zyb20gc2VhcmNoJyB8IHJweFRyYW5zbGF0ZSB9fVwiXG4gICAgZGF0YS1sMTBuLWlkPVwiZnJvbVNlYXJjaEJ1dHRvblwiXG4gICAgY2xhc3M9XCJtdi1idXR0b24gcmVkYWN0aW9uLWJ1dHRvbi0tc2VhcmNoXCJcbiAgICAoY2xpY2spPVwib25SZWRhY3RBbGxTZWFyY2goKVwiXG4gICAgW2Rpc2FibGVkXT1cInJlZGFjdGlvbkFsbEluUHJvZ3Jlc3NcIlxuICA+XG4gICAgPHNwYW4gc3R5bGU9XCJ3aWR0aDogNXJlbVwiIGRhdGEtbDEwbi1pZD1cImZyb21TZWFyY2hCdXR0b25fbGFiZWxcIj57e1xuICAgICAgXCJGcm9tIHNlYXJjaFwiIHwgcnB4VHJhbnNsYXRlXG4gICAgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgICAqbmdJZj1cInRvb2xiYXJCdXR0b25zLnNob3dIaWdobGlnaHRCdXR0b25cIlxuICAgIGlkPVwidG9nZ2xlSGlnaGxpZ2h0QnV0dG9uXCJcbiAgICBjbGFzcz1cIm12LWJ1dHRvbiByZWRhY3Rpb24tYnV0dG9uLS1yZWRhY3RcIlxuICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICB0aXRsZT1cInt7ICdSZWRhY3QgdGV4dCcgfCBycHhUcmFuc2xhdGUgfX1cIlxuICAgIGRhdGEtbDEwbi1pZD1cInRvZ2dsZVRleHRSZWRhY3Rpb25CdXR0b25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVUZXh0UmVkYWN0aW9uTW9kZSgpXCJcbiAgICBbZGlzYWJsZWRdPVwicmVkYWN0aW9uQWxsSW5Qcm9ncmVzc1wiXG4gID5cbiAgICA8c3BhbiBkYXRhLWwxMG4taWQ9XCJ0b2dnbGVUZXh0UmVkYWN0aW9uQnV0dG9uX2xhYmVsXCI+e3tcbiAgICAgIFwiUmVkYWN0IHRleHRcIiB8IHJweFRyYW5zbGF0ZVxuICAgIH19PC9zcGFuPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgW2Rpc2FibGVkXT1cIiFoYXNSZWRhY3Rpb25zIHx8IHJlZGFjdGlvbkFsbEluUHJvZ3Jlc3NcIlxuICAgIGlkPVwibXZDbGVhckJ0blwiXG4gICAgI212Q2xlYXJCdG5cbiAgICBjbGFzcz1cIm12LWJ1dHRvbiByZWRhY3Rpb24tYnV0dG9uLS1jbGVhclwiXG4gICAgYXJpYS1wcmVzc2VkPVwiZmFsc2VcIlxuICAgIHRpdGxlPVwie3sgJ0NsZWFyIGFsbCcgfCBycHhUcmFuc2xhdGUgfX1cIlxuICAgIGRhdGEtbDEwbi1pZD1cInRvZ2dsZUNsZWFyQWxsQnV0dG9uXCJcbiAgICAoY2xpY2spPVwidW5tYXJrQWxsKClcIlxuICA+XG4gICAgPHNwYW4gZGF0YS1sMTBuLWlkPVwiQ2xlYXIgYWxsXCI+e3sgXCJDbGVhciBhbGxcIiB8IHJweFRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvblxuICAgIFtkaXNhYmxlZF09XCIhaGFzUmVkYWN0aW9ucyB8fCByZWRhY3Rpb25BbGxJblByb2dyZXNzXCJcbiAgICBpZD1cIm12UHJldmlld0J0blwiXG4gICAgY2xhc3M9XCJtdi1idXR0b25cIlxuICAgIFtjbGFzcy5yZWRhY3Rpb24tYnV0dG9uLS1wcmV2aWV3XT1cIiFwcmV2aWV3XCJcbiAgICBbY2xhc3MucmVkYWN0aW9uLWJ1dHRvbi0taGlkZS1wcmV2aWV3XT1cInByZXZpZXdcIlxuICAgIHJlZGFjdGlvbi1idXR0b24tLXByZXZpZXdcbiAgICBhcmlhLXByZXNzZWQ9XCJmYWxzZVwiXG4gICAgdGl0bGU9XCJ7eyAnUHJldmlldycgfCBycHhUcmFuc2xhdGUgfX1cIlxuICAgIGRhdGEtbDEwbi1pZD1cInRvZ2dsZVByZXZpZXdCdXR0b25cIlxuICAgIChjbGljayk9XCJ0b2dnbGVQcmV2aWV3KClcIlxuICA+XG4gICAgPHNwYW4gKm5nSWY9XCIhcHJldmlld1wiIGRhdGEtbDEwbi1pZD1cInJlZGFjdGlvbi1wcmV2aWV3X2xhYmVsXCI+e3tcbiAgICAgIFwiUHJldmlld1wiIHwgcnB4VHJhbnNsYXRlXG4gICAgfX08L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJwcmV2aWV3XCIgZGF0YS1sMTBuLWlkPVwicmVkYWN0aW9uLWhpZGUtcHJldmlld19sYWJlbFwiPnt7XG4gICAgICBcIkhpZGUgcHJldmlld1wiIHwgcnB4VHJhbnNsYXRlXG4gICAgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgICBbZGlzYWJsZWRdPVwiIWhhc1JlZGFjdGlvbnMgfHwgcmVkYWN0aW9uQWxsSW5Qcm9ncmVzc1wiXG4gICAgaWQ9XCJtdlJlZGFjdEJ0blwiXG4gICAgY2xhc3M9XCJtdi1idXR0b24gcmVkYWN0aW9uLWJ1dHRvbi0tZG93bmxvYWRcIlxuICAgIGFyaWEtcHJlc3NlZD1cImZhbHNlXCJcbiAgICB0aXRsZT1cInt7ICdTYXZlIGRvY3VtZW50JyB8IHJweFRyYW5zbGF0ZSB9fVwiXG4gICAgZGF0YS1sMTBuLWlkPVwibXZSZWRhY3RCdG5cIlxuICAgIChjbGljayk9XCJyZWRhY3QoKVwiXG4gID5cbiAgICA8c3BhbiBkYXRhLWwxMG4taWQ9XCJTYXZlIERvY3VtZW50XCI+e3tcbiAgICAgIFwiU2F2ZSBkb2N1bWVudFwiIHwgcnB4VHJhbnNsYXRlXG4gICAgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgICBpZD1cIm12Q2xvc2VCdG5cIlxuICAgICNtdkNsb3NlQnRuXG4gICAgY2xhc3M9XCJtdi1idXR0b24gcmVkYWN0aW9uLWJ1dHRvbi0tY2xvc2VcIlxuICAgIHRpdGxlPVwie3sgJ0Nsb3NlIFJlZGFjdGlvbicgfCBycHhUcmFuc2xhdGUgfX1cIlxuICAgIGRhdGEtbDEwbi1pZD1cIm12UmVkYWN0QnRuXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlUmVkYWN0QmFyKClcIlxuICAgIFtkaXNhYmxlZF09XCJyZWRhY3Rpb25BbGxJblByb2dyZXNzXCJcbiAgPlxuICAgIDxzcGFuIGRhdGEtbDEwbi1pZD1cIkNsb3NlIFJlZGFjdGlvblwiPnt7XG4gICAgICBcIkNsb3NlIFJlZGFjdGlvblwiIHwgcnB4VHJhbnNsYXRlXG4gICAgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -1,109 +0,0 @@
1
- import { Component, HostListener, ViewChild } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../toolbar-button-visibility.service";
4
- import * as i2 from "../toolbar-event.service";
5
- import * as i3 from "@angular/common";
6
- import * as i4 from "@angular/forms";
7
- import * as i5 from "@angular/router";
8
- import * as i6 from "rpx-xui-translation";
9
- export class SearchBarComponent {
10
- constructor(toolbarButtons, toolbarEvents) {
11
- this.toolbarButtons = toolbarButtons;
12
- this.toolbarEvents = toolbarEvents;
13
- this.highlightAll = true;
14
- this.matchCase = false;
15
- this.wholeWord = false;
16
- this.resultsText = '';
17
- this.searchText = '';
18
- this.resultCount = 0;
19
- this.subscriptions = [];
20
- this.advancedSearchVisible = false;
21
- }
22
- ngOnInit() {
23
- this.subscriptions.push(this.toolbarEvents.searchResultsCountSubject.subscribe(results => this.setSearchResultsCount(results)));
24
- }
25
- ngAfterViewInit() {
26
- this.findInput.nativeElement.focus();
27
- }
28
- ngOnDestroy() {
29
- for (const subscription of this.subscriptions) {
30
- subscription.unsubscribe();
31
- }
32
- }
33
- onWindowKeyDown(e) {
34
- if (e.code === 'F3' || (e.ctrlKey && e.code === 'KeyF')) {
35
- e.preventDefault();
36
- this.toolbarEvents.searchBarHidden.next(false);
37
- setTimeout(() => this.findInput.nativeElement.focus(), 200);
38
- }
39
- }
40
- searchNext() {
41
- this.toolbarEvents.search({
42
- searchTerm: this.searchText,
43
- highlightAll: this.highlightAll,
44
- matchCase: this.matchCase,
45
- wholeWord: this.wholeWord,
46
- previous: false,
47
- reset: false
48
- });
49
- }
50
- searchPrev() {
51
- this.toolbarEvents.search({
52
- searchTerm: this.searchText,
53
- highlightAll: this.highlightAll,
54
- matchCase: this.matchCase,
55
- wholeWord: this.wholeWord,
56
- previous: true,
57
- reset: false
58
- });
59
- }
60
- search() {
61
- this.toolbarEvents.search({
62
- searchTerm: this.searchText,
63
- highlightAll: this.highlightAll,
64
- matchCase: this.matchCase,
65
- wholeWord: this.wholeWord,
66
- previous: false,
67
- reset: true
68
- });
69
- }
70
- setSearchResultsCount(results) {
71
- this.resultCount = results.total;
72
- this.resultsText = this.resultCount > 0
73
- ? `Found ${results.current} of ${results.total}`
74
- : 'No results found';
75
- if (this.resultCount && this.resultCount > 0 && !results.isPrevious) {
76
- setTimeout(() => {
77
- this.findNext.nativeElement.focus();
78
- }, 1000);
79
- }
80
- }
81
- onEscapeKeyPress(e) {
82
- this.toolbarEvents.searchBarHidden.next(true);
83
- }
84
- onEnterKeyPress(e) {
85
- this.search();
86
- }
87
- toggleAdvancedSearch() {
88
- this.advancedSearchVisible = !this.advancedSearchVisible;
89
- }
90
- toggleSearchBar() {
91
- this.toolbarEvents.searchBarHidden.next(!this.toolbarEvents.searchBarHidden.getValue());
92
- }
93
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchBarComponent, deps: [{ token: i1.ToolbarButtonVisibilityService }, { token: i2.ToolbarEventService }], target: i0.ɵɵFactoryTarget.Component }); }
94
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchBarComponent, selector: "mv-search-bar", host: { listeners: { "window:keydown": "onWindowKeyDown($event)" } }, viewQueries: [{ propertyName: "findInput", first: true, predicate: ["findInput"], descendants: true, static: true }, { propertyName: "findNext", first: true, predicate: ["findNext"], descendants: true }], ngImport: i0, template: "<div\n class=\"searchbar govuk-!-padding-3\"\n [hidden]=\"toolbarEvents.searchBarHidden | async\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <input\n class=\"govuk-input govuk-!-display-inline-block govuk-!-width-three-quarters govuk-!-margin-bottom-5 govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Search document\"\n #findInput\n [ngModel]=\"searchText\"\n (ngModelChange)=\"searchText = $event\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n title=\"Search document\"\n placeholder=\"Search document for\u2026\"\n tabindex=\"0\"\n data-l10n-id=\"find_input\"\n />\n <button\n class=\"govuk-button govuk-!-display-inline-block govuk-!-margin-bottom-4\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n style=\"position: absolute; top: 40px; right: 10px\"\n >\n Search\n </button>\n </div>\n </div>\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-three-quarters\">\n <span\n id=\"findResultsCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-right-4\"\n role=\"status\"\n >{{ resultsText }}</span\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findPrevious\"\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state govuk-!-margin-right-2\"\n (click)=\"searchPrev()\"\n title=\"Find the previous occurrence of the phrase\"\n data-l10n-id=\"find_previous\"\n >{{ \"Prev\" | rpxTranslate }}</a\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findNext\"\n #findNext\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state\"\n (click)=\"searchNext()\"\n title=\"Find the next occurrence of the phrase\"\n data-l10n-id=\"find_next\"\n >{{ \"Next\" | rpxTranslate }}</a\n >\n </div>\n <div class=\"govuk-grid-column-one-quarter\">\n <a\n [routerLink]=\"[]\"\n class=\"govuk-link govuk-link--no-visited-state\"\n role=\"button\"\n (click)=\"toggleAdvancedSearch()\"\n title=\"Advanced\"\n [attr.aria-expanded]=\"advancedSearchVisible\"\n aria-controls=\"advancedSearchVisible\"\n data-l10n-id=\"find_advanced\"\n style=\"position: absolute; top: 95px; right: 15px\"\n >{{ \"Advanced\" | rpxTranslate }}</a\n >\n </div>\n </div>\n\n <div\n id=\"advancedSearchVisible\"\n class=\"govuk-grid-row\"\n *ngIf=\"advancedSearchVisible\"\n >\n <div class=\"govuk-grid-column-full\">\n <div\n class=\"govuk-form-group govuk-!-margin-top-3 govuk-!-margin-bottom-1\"\n >\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"advanced\">\n <div class=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findHighlightAll\"\n name=\"findHighlightAll\"\n type=\"checkbox\"\n (change)=\"highlightAll = !highlightAll; search()\"\n [checked]=\"highlightAll\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findHighlightAll\"\n data-l10n-id=\"find_highlight\"\n >\n {{ \"Highlight all\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findMatchCase\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"matchCase = !matchCase; search()\"\n [checked]=\"matchCase\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findMatchCase\"\n data-l10n-id=\"find_match_case_label\"\n >\n {{ \"Match text (exact case)\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findEntireWord\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"wholeWord = !wholeWord; search()\"\n [checked]=\"wholeWord\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findEntireWord\"\n data-l10n-id=\"find_entire_word_label\"\n >\n {{ \"Match whole words or sentences\" | rpxTranslate }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n <div>\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleSearchBar()\"\n ></button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.RpxTranslatePipe, name: "rpxTranslate" }] }); }
95
- }
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchBarComponent, decorators: [{
97
- type: Component,
98
- args: [{ selector: 'mv-search-bar', template: "<div\n class=\"searchbar govuk-!-padding-3\"\n [hidden]=\"toolbarEvents.searchBarHidden | async\"\n>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-full\">\n <input\n class=\"govuk-input govuk-!-display-inline-block govuk-!-width-three-quarters govuk-!-margin-bottom-5 govuk-!-margin-top-5\"\n type=\"text\"\n aria-label=\"Search document\"\n #findInput\n [ngModel]=\"searchText\"\n (ngModelChange)=\"searchText = $event\"\n (keydown.escape)=\"onEscapeKeyPress($event)\"\n (keydown.enter)=\"onEnterKeyPress($event)\"\n title=\"Search document\"\n placeholder=\"Search document for\u2026\"\n tabindex=\"0\"\n data-l10n-id=\"find_input\"\n />\n <button\n class=\"govuk-button govuk-!-display-inline-block govuk-!-margin-bottom-4\"\n data-module=\"govuk-button\"\n (click)=\"search()\"\n style=\"position: absolute; top: 40px; right: 10px\"\n >\n Search\n </button>\n </div>\n </div>\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-three-quarters\">\n <span\n id=\"findResultsCount\"\n class=\"govuk-!-display-inline-block govuk-!-margin-right-4\"\n role=\"status\"\n >{{ resultsText }}</span\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findPrevious\"\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state govuk-!-margin-right-2\"\n (click)=\"searchPrev()\"\n title=\"Find the previous occurrence of the phrase\"\n data-l10n-id=\"find_previous\"\n >{{ \"Prev\" | rpxTranslate }}</a\n >\n <a\n *ngIf=\"resultCount > 0\"\n id=\"findNext\"\n #findNext\n [routerLink]=\"[]\"\n role=\"button\"\n class=\"govuk-link govuk-link--no-visited-state\"\n (click)=\"searchNext()\"\n title=\"Find the next occurrence of the phrase\"\n data-l10n-id=\"find_next\"\n >{{ \"Next\" | rpxTranslate }}</a\n >\n </div>\n <div class=\"govuk-grid-column-one-quarter\">\n <a\n [routerLink]=\"[]\"\n class=\"govuk-link govuk-link--no-visited-state\"\n role=\"button\"\n (click)=\"toggleAdvancedSearch()\"\n title=\"Advanced\"\n [attr.aria-expanded]=\"advancedSearchVisible\"\n aria-controls=\"advancedSearchVisible\"\n data-l10n-id=\"find_advanced\"\n style=\"position: absolute; top: 95px; right: 15px\"\n >{{ \"Advanced\" | rpxTranslate }}</a\n >\n </div>\n </div>\n\n <div\n id=\"advancedSearchVisible\"\n class=\"govuk-grid-row\"\n *ngIf=\"advancedSearchVisible\"\n >\n <div class=\"govuk-grid-column-full\">\n <div\n class=\"govuk-form-group govuk-!-margin-top-3 govuk-!-margin-bottom-1\"\n >\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"advanced\">\n <div class=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findHighlightAll\"\n name=\"findHighlightAll\"\n type=\"checkbox\"\n (change)=\"highlightAll = !highlightAll; search()\"\n [checked]=\"highlightAll\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findHighlightAll\"\n data-l10n-id=\"find_highlight\"\n >\n {{ \"Highlight all\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findMatchCase\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"matchCase = !matchCase; search()\"\n [checked]=\"matchCase\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findMatchCase\"\n data-l10n-id=\"find_match_case_label\"\n >\n {{ \"Match text (exact case)\" | rpxTranslate }}\n </label>\n </div>\n <div class=\"govuk-checkboxes__item\">\n <input\n class=\"govuk-checkboxes__input\"\n id=\"findEntireWord\"\n name=\"findMatchCase\"\n type=\"checkbox\"\n (change)=\"wholeWord = !wholeWord; search()\"\n [checked]=\"wholeWord\"\n />\n <label\n class=\"govuk-label govuk-checkboxes__label\"\n for=\"findEntireWord\"\n data-l10n-id=\"find_entire_word_label\"\n >\n {{ \"Match whole words or sentences\" | rpxTranslate }}\n </label>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n <div>\n <button\n id=\"mvCloseBtn\"\n #mvCloseBtn\n class=\"mv-button searchbar-button--close\"\n title=\"Close Search\"\n data-l10n-id=\"mvRedactBtn\"\n (click)=\"toggleSearchBar()\"\n ></button>\n </div>\n</div>\n" }]
99
- }], ctorParameters: () => [{ type: i1.ToolbarButtonVisibilityService }, { type: i2.ToolbarEventService }], propDecorators: { findInput: [{
100
- type: ViewChild,
101
- args: ['findInput', { static: true }]
102
- }], findNext: [{
103
- type: ViewChild,
104
- args: ['findNext', { static: false }]
105
- }], onWindowKeyDown: [{
106
- type: HostListener,
107
- args: ['window:keydown', ['$event']]
108
- }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYS12aWV3ZXIvc3JjL2xpYi90b29sYmFyL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBVSxTQUFTLEVBQTRCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVNqSCxNQUFNLE9BQU8sa0JBQWtCO0lBZ0I3QixZQUNrQixjQUE4QyxFQUM5QyxhQUFrQztRQURsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0M7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBYnBELGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRVIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBRXBDLDBCQUFxQixHQUFHLEtBQUssQ0FBQztJQUtqQyxDQUFDO0lBRUUsUUFBUTtRQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUN2RyxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxL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QUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUMzRCxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLENBQUM7a0lBM0dVLGtCQUFrQjtzSEFBbEIsa0JBQWtCLHdVQ1QvQixpd0tBNkpBOzs0RkRwSmEsa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLGVBQWU7cUlBS2lCLFNBQVM7c0JBQWxELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRSxRQUFRO3NCQUFqRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBbUNqQyxlQUFlO3NCQURyQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE9uSW5pdCwgVmlld0NoaWxkLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3Rvb2xiYXItYnV0dG9uLXZpc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2hSZXN1bHRzQ291bnQsIFRvb2xiYXJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi90b29sYmFyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ212LXNlYXJjaC1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbmRJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIGZpbmRJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnZmluZE5leHQnLCB7IHN0YXRpYzogZmFsc2UgfSkgZmluZE5leHQ6IEVsZW1lbnRSZWY8SFRNTEFuY2hvckVsZW1lbnQ+O1xuXG4gIGhpZ2hsaWdodEFsbCA9IHRydWU7XG4gIG1hdGNoQ2FzZSA9IGZhbHNlO1xuICB3aG9sZVdvcmQgPSBmYWxzZTtcbiAgcmVzdWx0c1RleHQgPSAnJztcbiAgc2VhcmNoVGV4dCA9ICcnO1xuICByZXN1bHRDb3VudCA9IDA7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIHB1YmxpYyBhZHZhbmNlZFNlYXJjaFZpc2libGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckJ1dHRvbnM6IFRvb2xiYXJCdXR0b25WaXNpYmlsaXR5U2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9vbGJhckV2ZW50czogVG9vbGJhckV2ZW50U2VydmljZVxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hSZXN1bHRzQ291bnRTdWJqZWN0LnN1YnNjcmliZShyZXN1bHRzID0+IHRoaXMuc2V0U2VhcmNoUmVzdWx0c0NvdW50KHJlc3VsdHMpKVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maW5kSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgdGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbldpbmRvd0tleURvd24oZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChlLmNvZGUgPT09ICdGMycgfHwgKGUuY3RybEtleSAmJiBlLmNvZGUgPT09ICdLZXlGJykpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgdGhpcy50b29sYmFyRXZlbnRzLnNlYXJjaEJhckhpZGRlbi5uZXh0KGZhbHNlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5maW5kSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpLCAyMDApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2hOZXh0KCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2goe1xuICAgICAgc2VhcmNoVGVybTogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgaGlnaGxpZ2h0QWxsOiB0aGlzLmhpZ2hsaWdodEFsbCxcbiAgICAgIG1hdGNoQ2FzZTogdGhpcy5tYXRjaENhc2UsXG4gICAgICB3aG9sZVdvcmQ6IHRoaXMud2hvbGVXb3JkLFxuICAgICAgcHJldmlvdXM6IGZhbHNlLFxuICAgICAgcmVzZXQ6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoUHJldigpOiB2b2lkIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoKHtcbiAgICAgIHNlYXJjaFRlcm06IHRoaXMuc2VhcmNoVGV4dCxcbiAgICAgIGhpZ2hsaWdodEFsbDogdGhpcy5oaWdobGlnaHRBbGwsXG4gICAgICBtYXRjaENhc2U6IHRoaXMubWF0Y2hDYXNlLFxuICAgICAgd2hvbGVXb3JkOiB0aGlzLndob2xlV29yZCxcbiAgICAgIHByZXZpb3VzOiB0cnVlLFxuICAgICAgcmVzZXQ6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2goe1xuICAgICAgc2VhcmNoVGVybTogdGhpcy5zZWFyY2hUZXh0LFxuICAgICAgaGlnaGxpZ2h0QWxsOiB0aGlzLmhpZ2hsaWdodEFsbCxcbiAgICAgIG1hdGNoQ2FzZTogdGhpcy5tYXRjaENhc2UsXG4gICAgICB3aG9sZVdvcmQ6IHRoaXMud2hvbGVXb3JkLFxuICAgICAgcHJldmlvdXM6IGZhbHNlLFxuICAgICAgcmVzZXQ6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2VhcmNoUmVzdWx0c0NvdW50KHJlc3VsdHM6IFNlYXJjaFJlc3VsdHNDb3VudCk6IHZvaWQge1xuICAgIHRoaXMucmVzdWx0Q291bnQgPSByZXN1bHRzLnRvdGFsO1xuICAgIHRoaXMucmVzdWx0c1RleHQgPSB0aGlzLnJlc3VsdENvdW50ID4gMFxuICAgICAgPyBgRm91bmQgJHtyZXN1bHRzLmN1cnJlbnR9IG9mICR7cmVzdWx0cy50b3RhbH1gXG4gICAgICA6ICdObyByZXN1bHRzIGZvdW5kJztcbiAgICBpZiAodGhpcy5yZXN1bHRDb3VudCAmJiB0aGlzLnJlc3VsdENvdW50ID4gMCAmJiAhcmVzdWx0cy5pc1ByZXZpb3VzKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5maW5kTmV4dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9LCAxMDAwKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Fc2NhcGVLZXlQcmVzcyhlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy50b29sYmFyRXZlbnRzLnNlYXJjaEJhckhpZGRlbi5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uRW50ZXJLZXlQcmVzcyhlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2goKTtcbiAgfVxuXG5cbiAgcHVibGljIHRvZ2dsZUFkdmFuY2VkU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuYWR2YW5jZWRTZWFyY2hWaXNpYmxlID0gIXRoaXMuYWR2YW5jZWRTZWFyY2hWaXNpYmxlO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZVNlYXJjaEJhcigpIHtcbiAgICB0aGlzLnRvb2xiYXJFdmVudHMuc2VhcmNoQmFySGlkZGVuLm5leHQoIXRoaXMudG9vbGJhckV2ZW50cy5zZWFyY2hCYXJIaWRkZW4uZ2V0VmFsdWUoKSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzZWFyY2hiYXIgZ292dWstIS1wYWRkaW5nLTNcIlxuICBbaGlkZGVuXT1cInRvb2xiYXJFdmVudHMuc2VhcmNoQmFySGlkZGVuIHwgYXN5bmNcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiZ292dWstaW5wdXQgZ292dWstIS1kaXNwbGF5LWlubGluZS1ibG9jayBnb3Z1ay0hLXdpZHRoLXRocmVlLXF1YXJ0ZXJzIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS01IGdvdnVrLSEtbWFyZ2luLXRvcC01XCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIGRvY3VtZW50XCJcbiAgICAgICAgI2ZpbmRJbnB1dFxuICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoVGV4dCA9ICRldmVudFwiXG4gICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJvbkVzY2FwZUtleVByZXNzKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgICAgIHRpdGxlPVwiU2VhcmNoIGRvY3VtZW50XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggZG9jdW1lbnQgZm9y4oCmXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgZGF0YS1sMTBuLWlkPVwiZmluZF9pbnB1dFwiXG4gICAgICAvPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay0hLWRpc3BsYXktaW5saW5lLWJsb2NrIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCJcbiAgICAgICAgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwic2VhcmNoKClcIlxuICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA0MHB4OyByaWdodDogMTBweFwiXG4gICAgICA+XG4gICAgICAgIFNlYXJjaFxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10aHJlZS1xdWFydGVyc1wiPlxuICAgICAgPHNwYW5cbiAgICAgICAgaWQ9XCJmaW5kUmVzdWx0c0NvdW50XCJcbiAgICAgICAgY2xhc3M9XCJnb3Z1ay0hLWRpc3BsYXktaW5saW5lLWJsb2NrIGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTRcIlxuICAgICAgICByb2xlPVwic3RhdHVzXCJcbiAgICAgICAgPnt7IHJlc3VsdHNUZXh0IH19PC9zcGFuXG4gICAgICA+XG4gICAgICA8YVxuICAgICAgICAqbmdJZj1cInJlc3VsdENvdW50ID4gMFwiXG4gICAgICAgIGlkPVwiZmluZFByZXZpb3VzXCJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiW11cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJnb3Z1ay1saW5rIGdvdnVrLWxpbmstLW5vLXZpc2l0ZWQtc3RhdGUgZ292dWstIS1tYXJnaW4tcmlnaHQtMlwiXG4gICAgICAgIChjbGljayk9XCJzZWFyY2hQcmV2KClcIlxuICAgICAgICB0aXRsZT1cIkZpbmQgdGhlIHByZXZpb3VzIG9jY3VycmVuY2Ugb2YgdGhlIHBocmFzZVwiXG4gICAgICAgIGRhdGEtbDEwbi1pZD1cImZpbmRfcHJldmlvdXNcIlxuICAgICAgICA+e3sgXCJQcmV2XCIgfCBycHhUcmFuc2xhdGUgfX08L2FcbiAgICAgID5cbiAgICAgIDxhXG4gICAgICAgICpuZ0lmPVwicmVzdWx0Q291bnQgPiAwXCJcbiAgICAgICAgaWQ9XCJmaW5kTmV4dFwiXG4gICAgICAgICNmaW5kTmV4dFxuICAgICAgICBbcm91dGVyTGlua109XCJbXVwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImdvdnVrLWxpbmsgZ292dWstbGluay0tbm8tdmlzaXRlZC1zdGF0ZVwiXG4gICAgICAgIChjbGljayk9XCJzZWFyY2hOZXh0KClcIlxuICAgICAgICB0aXRsZT1cIkZpbmQgdGhlIG5leHQgb2NjdXJyZW5jZSBvZiB0aGUgcGhyYXNlXCJcbiAgICAgICAgZGF0YS1sMTBuLWlkPVwiZmluZF9uZXh0XCJcbiAgICAgICAgPnt7IFwiTmV4dFwiIHwgcnB4VHJhbnNsYXRlIH19PC9hXG4gICAgICA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLW9uZS1xdWFydGVyXCI+XG4gICAgICA8YVxuICAgICAgICBbcm91dGVyTGlua109XCJbXVwiXG4gICAgICAgIGNsYXNzPVwiZ292dWstbGluayBnb3Z1ay1saW5rLS1uby12aXNpdGVkLXN0YXRlXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBZHZhbmNlZFNlYXJjaCgpXCJcbiAgICAgICAgdGl0bGU9XCJBZHZhbmNlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiYWR2YW5jZWRTZWFyY2hWaXNpYmxlXCJcbiAgICAgICAgYXJpYS1jb250cm9scz1cImFkdmFuY2VkU2VhcmNoVmlzaWJsZVwiXG4gICAgICAgIGRhdGEtbDEwbi1pZD1cImZpbmRfYWR2YW5jZWRcIlxuICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA5NXB4OyByaWdodDogMTVweFwiXG4gICAgICAgID57eyBcIkFkdmFuY2VkXCIgfCBycHhUcmFuc2xhdGUgfX08L2FcbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGlkPVwiYWR2YW5jZWRTZWFyY2hWaXNpYmxlXCJcbiAgICBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCJcbiAgICAqbmdJZj1cImFkdmFuY2VkU2VhcmNoVmlzaWJsZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tZnVsbFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXAgZ292dWstIS1tYXJnaW4tdG9wLTMgZ292dWstIS1tYXJnaW4tYm90dG9tLTFcIlxuICAgICAgPlxuICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJhZHZhbmNlZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICBpZD1cImZpbmRIaWdobGlnaHRBbGxcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJmaW5kSGlnaGxpZ2h0QWxsXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiaGlnaGxpZ2h0QWxsID0gIWhpZ2hsaWdodEFsbDsgc2VhcmNoKClcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImhpZ2hsaWdodEFsbFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstbGFiZWwgZ292dWstY2hlY2tib3hlc19fbGFiZWxcIlxuICAgICAgICAgICAgICAgIGZvcj1cImZpbmRIaWdobGlnaHRBbGxcIlxuICAgICAgICAgICAgICAgIGRhdGEtbDEwbi1pZD1cImZpbmRfaGlnaGxpZ2h0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IFwiSGlnaGxpZ2h0IGFsbFwiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pdGVtXCI+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIlxuICAgICAgICAgICAgICAgIGlkPVwiZmluZE1hdGNoQ2FzZVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImZpbmRNYXRjaENhc2VcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtYXRjaENhc2UgPSAhbWF0Y2hDYXNlOyBzZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwibWF0Y2hDYXNlXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1jaGVja2JveGVzX19sYWJlbFwiXG4gICAgICAgICAgICAgICAgZm9yPVwiZmluZE1hdGNoQ2FzZVwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwiZmluZF9tYXRjaF9jYXNlX2xhYmVsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IFwiTWF0Y2ggdGV4dCAoZXhhY3QgY2FzZSlcIiB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2lucHV0XCJcbiAgICAgICAgICAgICAgICBpZD1cImZpbmRFbnRpcmVXb3JkXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiZmluZE1hdGNoQ2FzZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIndob2xlV29yZCA9ICF3aG9sZVdvcmQ7IHNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJ3aG9sZVdvcmRcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCJcbiAgICAgICAgICAgICAgICBmb3I9XCJmaW5kRW50aXJlV29yZFwiXG4gICAgICAgICAgICAgICAgZGF0YS1sMTBuLWlkPVwiZmluZF9lbnRpcmVfd29yZF9sYWJlbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBcIk1hdGNoIHdob2xlIHdvcmRzIG9yIHNlbnRlbmNlc1wiIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8YnV0dG9uXG4gICAgICBpZD1cIm12Q2xvc2VCdG5cIlxuICAgICAgI212Q2xvc2VCdG5cbiAgICAgIGNsYXNzPVwibXYtYnV0dG9uIHNlYXJjaGJhci1idXR0b24tLWNsb3NlXCJcbiAgICAgIHRpdGxlPVwiQ2xvc2UgU2VhcmNoXCJcbiAgICAgIGRhdGEtbDEwbi1pZD1cIm12UmVkYWN0QnRuXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVTZWFyY2hCYXIoKVwiXG4gICAgPjwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19