@hmcts/rpx-xui-common-lib 2.0.0-rc.3 → 2.1.0-angular-upgrade-11

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 (282) hide show
  1. package/bundles/hmcts-rpx-xui-common-lib.umd.js +3788 -3772
  2. package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +1 -1
  3. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +1 -1
  4. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +1 -1
  5. package/esm2015/hmcts-rpx-xui-common-lib.js +59 -50
  6. package/esm2015/lib/components/accessibility/accessibility.component.js +2 -8
  7. package/esm2015/lib/components/checkbox-list/checkbox-list.component.js +14 -112
  8. package/esm2015/lib/components/contact-details/contact-details.component.js +2 -12
  9. package/esm2015/lib/components/cookie-banner/cookie-banner.component.js +68 -0
  10. package/esm2015/lib/components/due-date/due-date.component.js +7 -102
  11. package/esm2015/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +7 -21
  12. package/esm2015/lib/components/find-location/find-location.component.js +120 -0
  13. package/esm2015/lib/components/find-person/find-person.component.js +118 -0
  14. package/esm2015/lib/components/generic-filter/generic-filter-utils.js +21 -0
  15. package/esm2015/lib/components/generic-filter/generic-filter.component.js +381 -0
  16. package/esm2015/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +3 -18
  17. package/esm2015/lib/components/index.js +2 -7
  18. package/esm2015/lib/components/invite-user-form/invite-user-form.component.js +2 -22
  19. package/esm2015/lib/components/invite-user-permissions/invite-user-permission.component.js +2 -21
  20. package/esm2015/lib/components/loading-spinner/loading-spinner.component.js +7 -45
  21. package/esm2015/lib/components/pagination/pagination.component.js +28 -0
  22. package/esm2015/lib/components/public_api.js +33 -30
  23. package/esm2015/lib/components/search-judicials/search-judicials.component.js +126 -0
  24. package/esm2015/lib/components/search-location/search-location.component.js +114 -0
  25. package/esm2015/lib/components/search-venue/search-venue.component.js +123 -0
  26. package/esm2015/lib/components/selected-case/selected-case.component.js +20 -176
  27. package/esm2015/lib/components/selected-case-confirm/selected-case-confirm.component.js +6 -51
  28. package/esm2015/lib/components/selected-case-list/selected-case-list.component.js +3 -52
  29. package/esm2015/lib/components/service-message/service-message.component.js +2 -20
  30. package/esm2015/lib/components/service-messages/service-messages.component.js +8 -66
  31. package/esm2015/lib/components/share-case/share-case.component.js +7 -88
  32. package/esm2015/lib/components/share-case-confirm/share-case-confirm.component.js +4 -37
  33. package/esm2015/lib/components/tab/tab.component.js +2 -26
  34. package/esm2015/lib/components/tc-confirm/tc-confirm.component.js +2 -17
  35. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.js +2 -8
  36. package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.js +2 -8
  37. package/esm2015/lib/components/terms-and-conditions/terms-and-conditions.component.js +2 -12
  38. package/esm2015/lib/components/user-details/user-details.component.js +2 -39
  39. package/esm2015/lib/components/user-list/user-list.component.js +15 -19
  40. package/esm2015/lib/components/user-select/user-select.component.js +5 -52
  41. package/esm2015/lib/directives/feature-toggle/feature-toggle.directive.js +3 -56
  42. package/esm2015/lib/directives/index.js +2 -7
  43. package/esm2015/lib/directives/let/let.directive.js +1 -39
  44. package/esm2015/lib/directives/public-api.js +3 -8
  45. package/esm2015/lib/exui-common-lib.module.js +33 -34
  46. package/esm2015/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +2 -22
  47. package/esm2015/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +2 -13
  48. package/esm2015/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.js +49 -27
  49. package/esm2015/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +2 -14
  50. package/esm2015/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +2 -17
  51. package/esm2015/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +2 -24
  52. package/esm2015/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.js +2 -16
  53. package/esm2015/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +3 -23
  54. package/esm2015/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +2 -12
  55. package/esm2015/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +6 -24
  56. package/esm2015/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +2 -13
  57. package/esm2015/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +2 -21
  58. package/esm2015/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +2 -32
  59. package/esm2015/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +2 -18
  60. package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +2 -14
  61. package/esm2015/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +2 -44
  62. package/esm2015/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +2 -16
  63. package/esm2015/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +2 -36
  64. package/esm2015/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.js +28 -0
  65. package/esm2015/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +2 -22
  66. package/esm2015/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +4 -26
  67. package/esm2015/lib/gov-ui/components/index.js +2 -7
  68. package/esm2015/lib/gov-ui/components/public_api.js +22 -26
  69. package/esm2015/lib/gov-ui/directives/remove-host.directive.js +1 -22
  70. package/esm2015/lib/gov-ui/gov-ui.service.js +2 -8
  71. package/esm2015/lib/gov-ui/index.js +2 -7
  72. package/esm2015/lib/gov-ui/models/banner-data-model.js +2 -16
  73. package/esm2015/lib/gov-ui/models/checkboxes-model.js +2 -22
  74. package/esm2015/lib/gov-ui/models/error-messages-model.js +2 -16
  75. package/esm2015/lib/gov-ui/models/gov-ui-config-model.js +2 -36
  76. package/esm2015/lib/gov-ui/models/index.js +2 -7
  77. package/esm2015/lib/gov-ui/models/isession-storage.interface.js +2 -0
  78. package/esm2015/lib/gov-ui/models/public_api.js +5 -10
  79. package/esm2015/lib/gov-ui/public_api.js +5 -11
  80. package/esm2015/lib/gov-ui/util/helpers/html-templates.helper.js +4 -14
  81. package/esm2015/lib/gov-ui/util/session-storage/session-storage-utils.js +22 -0
  82. package/esm2015/lib/gov-ui/validators/checkboxes-be-checked.validator.js +5 -24
  83. package/esm2015/lib/gov-ui/validators/date.validator.js +3 -20
  84. package/esm2015/lib/gov-ui/validators/index.js +2 -7
  85. package/esm2015/lib/gov-ui/validators/public_api.js +4 -9
  86. package/esm2015/lib/gov-ui/validators/radio-group.validator.js +3 -15
  87. package/esm2015/lib/models/case-share.model.js +2 -26
  88. package/esm2015/lib/models/contact-details.model.js +7 -31
  89. package/esm2015/lib/models/due-date.model.js +7 -14
  90. package/esm2015/lib/models/feature-user.js +1 -16
  91. package/esm2015/lib/models/filter.model.js +3 -0
  92. package/esm2015/lib/models/idle-config.model.js +2 -20
  93. package/esm2015/lib/models/index.js +14 -7
  94. package/esm2015/lib/models/location.model.js +2 -0
  95. package/esm2015/lib/models/pagination.model.js +2 -0
  96. package/esm2015/lib/models/person.model.js +17 -0
  97. package/esm2015/lib/models/public_api.js +6 -15
  98. package/esm2015/lib/models/search-options.model.js +2 -0
  99. package/esm2015/lib/models/tcDocument.model.js +2 -18
  100. package/esm2015/lib/models/timeout-notification.model.js +2 -18
  101. package/esm2015/lib/models/user-details.model.js +2 -22
  102. package/esm2015/lib/models/user.model.js +2 -25
  103. package/esm2015/lib/services/case-sharing-state/case-sharing-state.service.js +9 -84
  104. package/esm2015/lib/services/cookie/cookie.service.js +47 -0
  105. package/esm2015/lib/services/feature-toggle/feature-toggle.guard.js +10 -43
  106. package/esm2015/lib/services/feature-toggle/feature-toggle.service.js +3 -28
  107. package/esm2015/lib/services/feature-toggle/launch-darkly.service.js +20 -95
  108. package/esm2015/lib/services/filter/filter.service.js +64 -0
  109. package/esm2015/lib/services/find-person/find-person.service.js +106 -0
  110. package/esm2015/lib/services/google-analytics/google-analytics.service.js +8 -63
  111. package/esm2015/lib/services/google-tag-manager/google-tag-manager.service.js +10 -64
  112. package/esm2015/lib/services/index.js +2 -7
  113. package/esm2015/lib/services/loading/loading.service.js +10 -50
  114. package/esm2015/lib/services/locations/location.service.js +39 -0
  115. package/esm2015/lib/services/manage-session/manage-session.services.js +11 -64
  116. package/esm2015/lib/services/public-api.js +13 -17
  117. package/esm2015/lib/services/role-guard/role.guard.js +12 -53
  118. package/esm2015/lib/services/role-guard/role.service.js +2 -21
  119. package/esm2015/lib/services/session-storage/session-storage.service.js +41 -0
  120. package/esm2015/lib/services/timeout-notifications/timeout-notifications.service.js +10 -76
  121. package/esm2015/lib/window.js +1 -10
  122. package/esm2015/public-api.js +8 -13
  123. package/fesm2015/hmcts-rpx-xui-common-lib.js +1862 -1835
  124. package/fesm2015/hmcts-rpx-xui-common-lib.js.map +1 -1
  125. package/hmcts-rpx-xui-common-lib.d.ts +57 -43
  126. package/hmcts-rpx-xui-common-lib.metadata.json +1 -1
  127. package/lib/components/checkbox-list/checkbox-list.component.d.ts +6 -5
  128. package/lib/components/cookie-banner/cookie-banner.component.d.ts +20 -0
  129. package/lib/components/due-date/due-date.component.d.ts +4 -4
  130. package/lib/components/find-location/find-location.component.d.ts +33 -0
  131. package/lib/components/find-person/find-person.component.d.ts +40 -0
  132. package/lib/components/generic-filter/generic-filter-utils.d.ts +8 -0
  133. package/lib/components/generic-filter/generic-filter.component.d.ts +42 -0
  134. package/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.d.ts +1 -1
  135. package/lib/components/invite-user-form/invite-user-form.component.d.ts +2 -2
  136. package/lib/components/loading-spinner/loading-spinner.component.d.ts +1 -7
  137. package/lib/components/pagination/pagination.component.d.ts +10 -0
  138. package/lib/components/public_api.d.ts +12 -4
  139. package/lib/components/search-judicials/search-judicials.component.d.ts +37 -0
  140. package/lib/components/search-location/search-location.component.d.ts +40 -0
  141. package/lib/components/search-venue/search-venue.component.d.ts +37 -0
  142. package/lib/components/user-list/user-list.component.d.ts +9 -2
  143. package/lib/directives/feature-toggle/feature-toggle.directive.d.ts +1 -1
  144. package/lib/directives/let/let.directive.d.ts +1 -1
  145. package/lib/exui-common-lib.module.d.ts +11 -11
  146. package/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.d.ts +8 -0
  147. package/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.d.ts +1 -1
  148. package/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.d.ts +1 -1
  149. package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +1 -1
  150. package/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.d.ts +10 -0
  151. package/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.d.ts +1 -1
  152. package/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.d.ts +2 -0
  153. package/lib/gov-ui/components/public_api.d.ts +20 -19
  154. package/lib/gov-ui/models/isession-storage.interface.d.ts +4 -0
  155. package/lib/gov-ui/public_api.d.ts +1 -2
  156. package/lib/gov-ui/util/session-storage/session-storage-utils.d.ts +6 -0
  157. package/lib/models/due-date.model.d.ts +1 -1
  158. package/lib/models/filter.model.d.ts +65 -0
  159. package/lib/models/index.d.ts +12 -0
  160. package/lib/models/location.model.d.ts +49 -0
  161. package/lib/models/pagination.model.d.ts +5 -0
  162. package/lib/models/person.model.d.ts +43 -0
  163. package/lib/models/public_api.d.ts +2 -6
  164. package/lib/models/search-options.model.d.ts +8 -0
  165. package/lib/services/case-sharing-state/case-sharing-state.service.d.ts +1 -1
  166. package/lib/services/cookie/cookie.service.d.ts +9 -0
  167. package/lib/services/feature-toggle/feature-toggle.service.d.ts +1 -1
  168. package/lib/services/feature-toggle/launch-darkly.service.d.ts +4 -5
  169. package/lib/services/filter/filter.service.d.ts +15 -0
  170. package/lib/services/find-person/find-person.service.d.ts +17 -0
  171. package/lib/services/loading/loading.service.d.ts +2 -2
  172. package/lib/services/locations/location.service.d.ts +23 -0
  173. package/lib/services/public-api.d.ts +4 -3
  174. package/lib/services/role-guard/role.service.d.ts +2 -1
  175. package/lib/services/session-storage/session-storage.service.d.ts +20 -0
  176. package/lib/window.d.ts +2 -2
  177. package/package.json +8 -16
  178. package/public-api.d.ts +2 -2
  179. package/esm2015/lib/gov-ui/directives/index.js +0 -7
  180. package/esm2015/lib/gov-ui/directives/public_api.js +0 -7
  181. package/esm5/hmcts-rpx-xui-common-lib.js +0 -59
  182. package/esm5/lib/components/accessibility/accessibility.component.js +0 -22
  183. package/esm5/lib/components/checkbox-list/checkbox-list.component.js +0 -391
  184. package/esm5/lib/components/contact-details/contact-details.component.js +0 -29
  185. package/esm5/lib/components/due-date/due-date.component.js +0 -254
  186. package/esm5/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +0 -45
  187. package/esm5/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +0 -47
  188. package/esm5/lib/components/index.js +0 -7
  189. package/esm5/lib/components/invite-user-form/invite-user-form.component.js +0 -54
  190. package/esm5/lib/components/invite-user-permissions/invite-user-permission.component.js +0 -46
  191. package/esm5/lib/components/loading-spinner/loading-spinner.component.js +0 -61
  192. package/esm5/lib/components/public_api.js +0 -30
  193. package/esm5/lib/components/selected-case/selected-case.component.js +0 -430
  194. package/esm5/lib/components/selected-case-confirm/selected-case-confirm.component.js +0 -91
  195. package/esm5/lib/components/selected-case-list/selected-case-list.component.js +0 -109
  196. package/esm5/lib/components/service-message/service-message.component.js +0 -46
  197. package/esm5/lib/components/service-messages/service-messages.component.js +0 -122
  198. package/esm5/lib/components/share-case/share-case.component.js +0 -223
  199. package/esm5/lib/components/share-case-confirm/share-case-confirm.component.js +0 -70
  200. package/esm5/lib/components/tab/tab.component.js +0 -51
  201. package/esm5/lib/components/tc-confirm/tc-confirm.component.js +0 -42
  202. package/esm5/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.js +0 -22
  203. package/esm5/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.js +0 -22
  204. package/esm5/lib/components/terms-and-conditions/terms-and-conditions.component.js +0 -29
  205. package/esm5/lib/components/user-details/user-details.component.js +0 -92
  206. package/esm5/lib/components/user-list/user-list.component.js +0 -43
  207. package/esm5/lib/components/user-select/user-select.component.js +0 -131
  208. package/esm5/lib/directives/feature-toggle/feature-toggle.directive.js +0 -104
  209. package/esm5/lib/directives/index.js +0 -7
  210. package/esm5/lib/directives/let/let.directive.js +0 -78
  211. package/esm5/lib/directives/public-api.js +0 -8
  212. package/esm5/lib/exui-common-lib.module.js +0 -156
  213. package/esm5/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +0 -56
  214. package/esm5/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +0 -36
  215. package/esm5/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.js +0 -48
  216. package/esm5/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +0 -37
  217. package/esm5/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +0 -49
  218. package/esm5/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +0 -65
  219. package/esm5/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.js +0 -40
  220. package/esm5/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +0 -66
  221. package/esm5/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +0 -34
  222. package/esm5/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +0 -67
  223. package/esm5/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +0 -36
  224. package/esm5/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +0 -52
  225. package/esm5/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +0 -77
  226. package/esm5/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +0 -50
  227. package/esm5/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +0 -38
  228. package/esm5/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +0 -108
  229. package/esm5/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +0 -40
  230. package/esm5/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +0 -87
  231. package/esm5/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +0 -49
  232. package/esm5/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +0 -41
  233. package/esm5/lib/gov-ui/components/index.js +0 -7
  234. package/esm5/lib/gov-ui/components/public_api.js +0 -26
  235. package/esm5/lib/gov-ui/directives/index.js +0 -7
  236. package/esm5/lib/gov-ui/directives/public_api.js +0 -7
  237. package/esm5/lib/gov-ui/directives/remove-host.directive.js +0 -52
  238. package/esm5/lib/gov-ui/gov-ui.service.js +0 -22
  239. package/esm5/lib/gov-ui/index.js +0 -7
  240. package/esm5/lib/gov-ui/models/banner-data-model.js +0 -16
  241. package/esm5/lib/gov-ui/models/checkboxes-model.js +0 -22
  242. package/esm5/lib/gov-ui/models/error-messages-model.js +0 -16
  243. package/esm5/lib/gov-ui/models/gov-ui-config-model.js +0 -36
  244. package/esm5/lib/gov-ui/models/index.js +0 -7
  245. package/esm5/lib/gov-ui/models/public_api.js +0 -13
  246. package/esm5/lib/gov-ui/public_api.js +0 -14
  247. package/esm5/lib/gov-ui/util/helpers/html-templates.helper.js +0 -57
  248. package/esm5/lib/gov-ui/validators/checkboxes-be-checked.validator.js +0 -38
  249. package/esm5/lib/gov-ui/validators/date.validator.js +0 -32
  250. package/esm5/lib/gov-ui/validators/index.js +0 -7
  251. package/esm5/lib/gov-ui/validators/public_api.js +0 -12
  252. package/esm5/lib/gov-ui/validators/radio-group.validator.js +0 -27
  253. package/esm5/lib/models/case-share.model.js +0 -26
  254. package/esm5/lib/models/contact-details.model.js +0 -31
  255. package/esm5/lib/models/due-date.model.js +0 -15
  256. package/esm5/lib/models/feature-user.js +0 -28
  257. package/esm5/lib/models/idle-config.model.js +0 -20
  258. package/esm5/lib/models/index.js +0 -7
  259. package/esm5/lib/models/public_api.js +0 -15
  260. package/esm5/lib/models/tcDocument.model.js +0 -18
  261. package/esm5/lib/models/timeout-notification.model.js +0 -18
  262. package/esm5/lib/models/user-details.model.js +0 -22
  263. package/esm5/lib/models/user.model.js +0 -25
  264. package/esm5/lib/services/case-sharing-state/case-sharing-state.service.js +0 -289
  265. package/esm5/lib/services/feature-toggle/feature-toggle.guard.js +0 -83
  266. package/esm5/lib/services/feature-toggle/feature-toggle.service.js +0 -88
  267. package/esm5/lib/services/feature-toggle/launch-darkly.service.js +0 -177
  268. package/esm5/lib/services/google-analytics/google-analytics.service.js +0 -128
  269. package/esm5/lib/services/google-tag-manager/google-tag-manager.service.js +0 -135
  270. package/esm5/lib/services/index.js +0 -7
  271. package/esm5/lib/services/loading/loading.service.js +0 -100
  272. package/esm5/lib/services/manage-session/manage-session.services.js +0 -111
  273. package/esm5/lib/services/public-api.js +0 -20
  274. package/esm5/lib/services/role-guard/role.guard.js +0 -81
  275. package/esm5/lib/services/role-guard/role.service.js +0 -45
  276. package/esm5/lib/services/timeout-notifications/timeout-notifications.service.js +0 -190
  277. package/esm5/lib/window.js +0 -13
  278. package/esm5/public-api.js +0 -16
  279. package/fesm5/hmcts-rpx-xui-common-lib.js +0 -4751
  280. package/fesm5/hmcts-rpx-xui-common-lib.js.map +0 -1
  281. package/lib/gov-ui/directives/index.d.ts +0 -1
  282. package/lib/gov-ui/directives/public_api.d.ts +0 -1
@@ -0,0 +1,68 @@
1
+ import { Component, EventEmitter, Inject, Input, Output } from '@angular/core';
2
+ import { CookieService } from '../../services/cookie/cookie.service';
3
+ import { windowToken } from '../../window';
4
+ export class CookieBannerComponent {
5
+ constructor(cookieService, window) {
6
+ this.cookieService = cookieService;
7
+ this.rejectionNotifier = new EventEmitter();
8
+ this.acceptanceNotifier = new EventEmitter();
9
+ this.isCookieBannerVisible = false;
10
+ this.window = window;
11
+ }
12
+ ngOnInit() {
13
+ this.setState();
14
+ }
15
+ acceptCookie() {
16
+ this.cookieService.setCookie(this.identifier, 'true', this.getExpiryDate());
17
+ this.setState(true);
18
+ }
19
+ rejectCookie() {
20
+ this.cookieService.setCookie(this.identifier, 'false', this.getExpiryDate());
21
+ this.setState(true);
22
+ }
23
+ setState(reload = false) {
24
+ this.isCookieBannerVisible = !this.cookieService.checkCookie(this.identifier);
25
+ if (this.areCookiesAccepted()) {
26
+ this.notifyAcceptance();
27
+ }
28
+ else {
29
+ this.notifyRejection();
30
+ }
31
+ if (reload) { // reload if any of the buttons are pressed
32
+ this.window.location.reload();
33
+ }
34
+ }
35
+ areCookiesAccepted() {
36
+ return this.cookieService.checkCookie(this.identifier) && this.cookieService.getCookie(this.identifier) === 'true';
37
+ }
38
+ notifyRejection() {
39
+ this.rejectionNotifier.emit();
40
+ }
41
+ notifyAcceptance() {
42
+ this.acceptanceNotifier.emit();
43
+ }
44
+ getExpiryDate() {
45
+ const now = new Date();
46
+ const time = now.getTime();
47
+ const expireTime = time + 31536000000; // in 365 days = 3600 * 1000 * 24 * 365
48
+ now.setTime(expireTime);
49
+ return now.toUTCString();
50
+ }
51
+ }
52
+ CookieBannerComponent.decorators = [
53
+ { type: Component, args: [{
54
+ selector: 'xuilib-cookie-banner',
55
+ template: "<div class=\"govuk-cookie-banner \" role=\"region\" attr.aria-label=\"'Cookies on {{appName}}'\" *ngIf=\"isCookieBannerVisible\">\n <div class=\"govuk-cookie-banner__message govuk-width-container\">\n\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <h2 class=\"govuk-cookie-banner__heading govuk-heading-m\">Cookies on {{appName}}</h2>\n\n <div class=\"govuk-cookie-banner__content\">\n <p>We use some essential cookies to make this service work.</p>\n <p>We\u2019d also like to use analytics cookies so we can understand how you use the service and make improvements.</p>\n </div>\n </div>\n </div>\n\n <div class=\"govuk-button-group\">\n <button value=\"accept\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"acceptCookie()\">\n Accept analytics cookies\n </button>\n <button value=\"reject\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"rejectCookie()\">\n Reject analytics cookies\n </button>\n <a class=\"govuk-link\" routerLink=\"/cookies\">View cookies</a>\n </div>\n </div>\n</div>"
56
+ },] }
57
+ ];
58
+ CookieBannerComponent.ctorParameters = () => [
59
+ { type: CookieService },
60
+ { type: undefined, decorators: [{ type: Inject, args: [windowToken,] }] }
61
+ ];
62
+ CookieBannerComponent.propDecorators = {
63
+ identifier: [{ type: Input }],
64
+ appName: [{ type: Input }],
65
+ rejectionNotifier: [{ type: Output }],
66
+ acceptanceNotifier: [{ type: Output }]
67
+ };
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFPM0MsTUFBTSxPQUFPLHFCQUFxQjtJQVNoQyxZQUNtQixhQUE0QixFQUN4QixNQUFXO1FBRGYsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFQOUIsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUM1Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXZELDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQU81QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQWdCLENBQUM7SUFDakMsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxRQUFRLENBQUMsU0FBa0IsS0FBSztRQUNyQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxNQUFNLEVBQUUsRUFBRSwyQ0FBMkM7WUFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLENBQUM7SUFDckgsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTyxhQUFhO1FBQ25CLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxXQUFXLENBQUMsQ0FBRSx3Q0FBd0M7UUFDaEYsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixPQUFPLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs7WUFuRUYsU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLHF0Q0FBNkM7YUFDaEQ7OztZQU5RLGFBQWE7NENBbUJqQixNQUFNLFNBQUMsV0FBVzs7O3lCQVZwQixLQUFLO3NCQUNMLEtBQUs7Z0NBQ0wsTUFBTTtpQ0FDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29va2llL2Nvb2tpZS5zZXJ2aWNlJztcbmltcG9ydCB7IHdpbmRvd1Rva2VuIH0gZnJvbSAnLi4vLi4vd2luZG93JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd4dWlsaWItY29va2llLWJhbm5lcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nvb2tpZS1iYW5uZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgQ29va2llQmFubmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHVibGljIGlkZW50aWZpZXI6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGFwcE5hbWU6IHN0cmluZztcbiAgQE91dHB1dCgpIHB1YmxpYyByZWplY3Rpb25Ob3RpZmllciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcHVibGljIGFjY2VwdGFuY2VOb3RpZmllciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHB1YmxpYyBpc0Nvb2tpZUJhbm5lclZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IFdpbmRvdztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXG4gICAgQEluamVjdCh3aW5kb3dUb2tlbikgd2luZG93OiBhbnksXG4gICkge1xuICAgIHRoaXMud2luZG93ID0gd2luZG93IGFzIFdpbmRvdztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYWNjZXB0Q29va2llKCk6IHZvaWQge1xuICAgIHRoaXMuY29va2llU2VydmljZS5zZXRDb29raWUodGhpcy5pZGVudGlmaWVyLCAndHJ1ZScsIHRoaXMuZ2V0RXhwaXJ5RGF0ZSgpKTtcbiAgICB0aGlzLnNldFN0YXRlKHRydWUpO1xuICB9XG5cbiAgcHVibGljIHJlamVjdENvb2tpZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0Q29va2llKHRoaXMuaWRlbnRpZmllciwgJ2ZhbHNlJywgdGhpcy5nZXRFeHBpcnlEYXRlKCkpO1xuICAgIHRoaXMuc2V0U3RhdGUodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdGUocmVsb2FkOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ29va2llQmFubmVyVmlzaWJsZSA9ICF0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2tDb29raWUodGhpcy5pZGVudGlmaWVyKTtcblxuICAgIGlmICh0aGlzLmFyZUNvb2tpZXNBY2NlcHRlZCgpKSB7XG4gICAgICB0aGlzLm5vdGlmeUFjY2VwdGFuY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnlSZWplY3Rpb24oKTtcbiAgICB9XG5cbiAgICBpZiAocmVsb2FkKSB7IC8vIHJlbG9hZCBpZiBhbnkgb2YgdGhlIGJ1dHRvbnMgYXJlIHByZXNzZWRcbiAgICAgIHRoaXMud2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhcmVDb29raWVzQWNjZXB0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29va2llU2VydmljZS5jaGVja0Nvb2tpZSh0aGlzLmlkZW50aWZpZXIpICYmIHRoaXMuY29va2llU2VydmljZS5nZXRDb29raWUodGhpcy5pZGVudGlmaWVyKSA9PT0gJ3RydWUnO1xuICB9XG5cbiAgcHVibGljIG5vdGlmeVJlamVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnJlamVjdGlvbk5vdGlmaWVyLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBub3RpZnlBY2NlcHRhbmNlKCk6IHZvaWQge1xuICAgIHRoaXMuYWNjZXB0YW5jZU5vdGlmaWVyLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhwaXJ5RGF0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgdGltZSA9IG5vdy5nZXRUaW1lKCk7XG4gICAgY29uc3QgZXhwaXJlVGltZSA9IHRpbWUgKyAzMTUzNjAwMDAwMDsgIC8vICBpbiAzNjUgZGF5cyA9IDM2MDAgKiAxMDAwICogMjQgKiAzNjVcbiAgICBub3cuc2V0VGltZShleHBpcmVUaW1lKTtcbiAgICByZXR1cm4gbm93LnRvVVRDU3RyaW5nKCk7XG4gIH1cblxufVxuIl19
@@ -1,11 +1,6 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: lib/components/due-date/due-date.component.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
1
  import { formatDate } from '@angular/common';
7
2
  import { Component, Input, ViewEncapsulation } from '@angular/core';
8
- import { BadgeColour, SECONDS_IN_A_DAY } from '../../models/due-date.model';
3
+ import { DateBadgeColour, SECONDS_IN_A_DAY } from '../../models/due-date.model';
9
4
  export class DueDateComponent {
10
5
  constructor() {
11
6
  /**
@@ -24,7 +19,6 @@ export class DueDateComponent {
24
19
  * ALSO NOTE: Anything overdue is automatically considered HIGH urgency.
25
20
  */
26
21
  this.highUrgencyCutoff = 0; // Default
27
- // Default
28
22
  /**
29
23
  * This should be considered MEDIUM urgency if there are fewer than this
30
24
  * many days until the due date.
@@ -40,42 +34,23 @@ export class DueDateComponent {
40
34
  */
41
35
  this.mediumUrgencyCutoff = 2;
42
36
  }
43
- /**
44
- * @return {?}
45
- */
46
37
  get badge() {
47
38
  return this.pBadge;
48
39
  }
49
- /**
50
- * @return {?}
51
- */
52
40
  get label() {
53
41
  return this.pLabel;
54
42
  }
55
- /**
56
- * @return {?}
57
- */
58
43
  get accessibleLabel() {
59
44
  return this.pAccessibleLabel;
60
45
  }
61
- /**
62
- * @return {?}
63
- */
64
46
  get daysDiff() {
65
47
  return this.pDaysDiff;
66
48
  }
67
49
  // Catch any changes to any of the Input() properties.
68
- /**
69
- * @return {?}
70
- */
71
50
  ngOnChanges() {
72
51
  this.handleInputChanges();
73
52
  }
74
53
  // Set up the label, urgency class, and accessibility fields.
75
- /**
76
- * @private
77
- * @return {?}
78
- */
79
54
  handleInputChanges() {
80
55
  // If we don't have a dueDate, skip out of here.
81
56
  if (!this.dueDate) {
@@ -88,8 +63,7 @@ export class DueDateComponent {
88
63
  this.pDaysDiff = this.getDaysDifference(this.dueDate, new Date());
89
64
  // Is it overdue?
90
65
  if (this.daysDiff > 0) {
91
- this.pBadge = BadgeColour.RED;
92
- /** @type {?} */
66
+ this.pBadge = DateBadgeColour.RED;
93
67
  const daysLabel = this.daysDiff === 1 ? 'day' : 'days';
94
68
  this.pLabel = `+${this.daysDiff} ${daysLabel}`;
95
69
  this.pAccessibleLabel = `This task is ${this.daysDiff} ${daysLabel} past its due date`;
@@ -105,31 +79,22 @@ export class DueDateComponent {
105
79
  this.pAccessibleLabel = `This task is due to be completed by ${formatDate(this.dueDate, 'd MMMM y', 'en-GB')}`;
106
80
  }
107
81
  if (this.daysDiff + this.highUrgencyCutoff > 0) {
108
- this.pBadge = BadgeColour.RED;
82
+ this.pBadge = DateBadgeColour.RED;
109
83
  }
110
84
  else if (this.daysDiff + this.mediumUrgencyCutoff > 0) {
111
- this.pBadge = BadgeColour.ORANGE;
85
+ this.pBadge = DateBadgeColour.ORANGE;
112
86
  }
113
87
  else {
114
- this.pBadge = BadgeColour.GREEN;
88
+ this.pBadge = DateBadgeColour.GREEN;
115
89
  }
116
90
  }
117
91
  }
118
92
  // This will return the difference between two dates.
119
93
  // If fromDate is BEFORE toDate, it will be a positive number.
120
94
  // If fromDate is AFTER toDate, it will be a negative number.
121
- /**
122
- * @private
123
- * @param {?} fromDate
124
- * @param {?} toDate
125
- * @return {?}
126
- */
127
95
  getDaysDifference(fromDate, toDate) {
128
- /** @type {?} */
129
96
  const fromEpoch = fromDate.getTime();
130
- /** @type {?} */
131
97
  const toEpoch = toDate.getTime();
132
- /** @type {?} */
133
98
  const diffSecs = Math.floor((toEpoch - fromEpoch) / 1000);
134
99
  return Math.floor(diffSecs / SECONDS_IN_A_DAY);
135
100
  }
@@ -140,71 +105,11 @@ DueDateComponent.decorators = [
140
105
  template: "<span *ngIf=\"dueDate\" class=\"due-date hmcts-badge\" [ngClass]=\"badge\"\n [title]=\"accessibleLabel\" [attr.aria-label]=\"accessibleLabel\">\n {{label}}\n</span>",
141
106
  encapsulation: ViewEncapsulation.None,
142
107
  styles: [".due-date{white-space:nowrap}.due-date.hmcts-badge--orange{color:#f47738;border-color:#f47738}"]
143
- }] }
108
+ },] }
144
109
  ];
145
110
  DueDateComponent.propDecorators = {
146
111
  dueDate: [{ type: Input }],
147
112
  highUrgencyCutoff: [{ type: Input }],
148
113
  mediumUrgencyCutoff: [{ type: Input }]
149
114
  };
150
- if (false) {
151
- /**
152
- * The due date to use as the basis for rendering this component. It is
153
- * compared to the current date and displayed accordingly.
154
- * @type {?}
155
- */
156
- DueDateComponent.prototype.dueDate;
157
- /**
158
- * This should be considered HIGH urgency if there are fewer than this
159
- * many days until the due date.
160
- * * Set to 0 if you want it to show HIGH if it was due yesterday.
161
- * * Set to 1 if you want it to show HIGH if it's due today.
162
- * * Set to 2 if you want it to show HIGH if it's due tomorrow.
163
- *
164
- * Defaults to 0 (ZERO), which means it won't show as HIGH urgency until the
165
- * due date is in the past.
166
- *
167
- * NOTE: If this is higher than the mediumUrgencyCutoff value, MEDIUM urgency
168
- * will never be shown.
169
- *
170
- * ALSO NOTE: Anything overdue is automatically considered HIGH urgency.
171
- * @type {?}
172
- */
173
- DueDateComponent.prototype.highUrgencyCutoff;
174
- /**
175
- * This should be considered MEDIUM urgency if there are fewer than this
176
- * many days until the due date.
177
- * * Set to 1 if you want it to show MEDIUM if it's due today.
178
- * * Set to 2 if you want it to show MEDIUM if it's due tomorrow.
179
- * * Set to 3 if you want it to show MEDIUM if it's due the day after tomorrow.
180
- *
181
- * Defaults to 2, which means it won't show as MEDIUM urgency unless the
182
- * due date is today or tomorrow.
183
- *
184
- * NOTE: If this is lower than the highUrgencyCutoff value, MEDIUM urgency
185
- * will never be shown.
186
- * @type {?}
187
- */
188
- DueDateComponent.prototype.mediumUrgencyCutoff;
189
- /**
190
- * @type {?}
191
- * @private
192
- */
193
- DueDateComponent.prototype.pBadge;
194
- /**
195
- * @type {?}
196
- * @private
197
- */
198
- DueDateComponent.prototype.pLabel;
199
- /**
200
- * @type {?}
201
- * @private
202
- */
203
- DueDateComponent.prototype.pAccessibleLabel;
204
- /**
205
- * @type {?}
206
- * @private
207
- */
208
- DueDateComponent.prototype.pDaysDiff;
209
- }
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL3JweC14dWktY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2R1ZS1kYXRlL2R1ZS1kYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFRNUUsTUFBTSxPQUFPLGdCQUFnQjtJQU43Qjs7Ozs7Ozs7Ozs7Ozs7OztRQTZCa0Isc0JBQWlCLEdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVTs7Ozs7Ozs7Ozs7Ozs7O1FBZXpDLHdCQUFtQixHQUFXLENBQUMsQ0FBQztJQThFbEQsQ0FBQzs7OztJQTFFQyxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQzs7OztJQUlELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDOzs7O0lBSUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7Ozs7SUFJRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Ozs7O0lBR00sV0FBVztRQUNoQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDOzs7Ozs7SUFHTyxrQkFBa0I7UUFDeEIsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELDRDQUE0QztRQUM1Qyx1Q0FBdUM7UUFDdkMsNEJBQTRCO1FBQzVCLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVsRSxpQkFBaUI7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7O2tCQUN4QixTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUN0RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUyxvQkFBb0IsQ0FBQztTQUN4RjthQUFNO1lBQ0wsNkJBQTZCO1lBQzdCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO2dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsd0NBQXdDLENBQUM7YUFDbEU7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsdUNBQXVDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO2FBQ2hIO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQzthQUMvQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsRUFBRTtnQkFDdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO2FBQ2xDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQzthQUNqQztTQUNGO0lBQ0gsQ0FBQzs7Ozs7Ozs7OztJQUtPLGlCQUFpQixDQUFDLFFBQWMsRUFBRSxNQUFZOztjQUM5QyxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRTs7Y0FDOUIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUU7O2NBQzFCLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLENBQUM7SUFDakQsQ0FBQzs7O1lBekhGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixzTEFBc0M7Z0JBRXRDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOzthQUN0Qzs7O3NCQU9FLEtBQUs7Z0NBaUJMLEtBQUs7a0NBZUwsS0FBSzs7Ozs7Ozs7SUFoQ04sbUNBQThCOzs7Ozs7Ozs7Ozs7Ozs7OztJQWlCOUIsNkNBQThDOzs7Ozs7Ozs7Ozs7Ozs7SUFlOUMsK0NBQWdEOzs7OztJQUdoRCxrQ0FBdUI7Ozs7O0lBTXZCLGtDQUF1Qjs7Ozs7SUFNdkIsNENBQWlDOzs7OztJQU1qQyxxQ0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFkZ2VDb2xvdXIsIFNFQ09ORFNfSU5fQV9EQVkgfSBmcm9tICcuLi8uLi9tb2RlbHMvZHVlLWRhdGUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd4dWlsaWItZHVlLWRhdGUnLFxuICB0ZW1wbGF0ZVVybDogJ2R1ZS1kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2R1ZS1kYXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRHVlRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgLyoqXG4gICAqIFRoZSBkdWUgZGF0ZSB0byB1c2UgYXMgdGhlIGJhc2lzIGZvciByZW5kZXJpbmcgdGhpcyBjb21wb25lbnQuIEl0IGlzXG4gICAqIGNvbXBhcmVkIHRvIHRoZSBjdXJyZW50IGRhdGUgYW5kIGRpc3BsYXllZCBhY2NvcmRpbmdseS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBkdWVEYXRlOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaGlzIHNob3VsZCBiZSBjb25zaWRlcmVkIEhJR0ggdXJnZW5jeSBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiB0aGlzXG4gICAqIG1hbnkgZGF5cyB1bnRpbCB0aGUgZHVlIGRhdGUuXG4gICAqICAgICogU2V0IHRvIDAgaWYgeW91IHdhbnQgaXQgdG8gc2hvdyBISUdIIGlmIGl0IHdhcyBkdWUgeWVzdGVyZGF5LlxuICAgKiAgICAqIFNldCB0byAxIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgSElHSCBpZiBpdCdzIGR1ZSB0b2RheS5cbiAgICogICAgKiBTZXQgdG8gMiBpZiB5b3Ugd2FudCBpdCB0byBzaG93IEhJR0ggaWYgaXQncyBkdWUgdG9tb3Jyb3cuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDAgKFpFUk8pLCB3aGljaCBtZWFucyBpdCB3b24ndCBzaG93IGFzIEhJR0ggdXJnZW5jeSB1bnRpbCB0aGVcbiAgICogZHVlIGRhdGUgaXMgaW4gdGhlIHBhc3QuXG4gICAqXG4gICAqIE5PVEU6IElmIHRoaXMgaXMgaGlnaGVyIHRoYW4gdGhlIG1lZGl1bVVyZ2VuY3lDdXRvZmYgdmFsdWUsIE1FRElVTSB1cmdlbmN5XG4gICAqIHdpbGwgbmV2ZXIgYmUgc2hvd24uXG4gICAqXG4gICAqIEFMU08gTk9URTogQW55dGhpbmcgb3ZlcmR1ZSBpcyBhdXRvbWF0aWNhbGx5IGNvbnNpZGVyZWQgSElHSCB1cmdlbmN5LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGhpZ2hVcmdlbmN5Q3V0b2ZmOiBudW1iZXIgPSAwOyAvLyBEZWZhdWx0XG5cbiAgLyoqXG4gICAqIFRoaXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQgTUVESVVNIHVyZ2VuY3kgaWYgdGhlcmUgYXJlIGZld2VyIHRoYW4gdGhpc1xuICAgKiBtYW55IGRheXMgdW50aWwgdGhlIGR1ZSBkYXRlLlxuICAgKiAgICAqIFNldCB0byAxIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRvZGF5LlxuICAgKiAgICAqIFNldCB0byAyIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRvbW9ycm93LlxuICAgKiAgICAqIFNldCB0byAzIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgTUVESVVNIGlmIGl0J3MgZHVlIHRoZSBkYXkgYWZ0ZXIgdG9tb3Jyb3cuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDIsIHdoaWNoIG1lYW5zIGl0IHdvbid0IHNob3cgYXMgTUVESVVNIHVyZ2VuY3kgdW5sZXNzIHRoZVxuICAgKiBkdWUgZGF0ZSBpcyB0b2RheSBvciB0b21vcnJvdy5cbiAgICpcbiAgICogTk9URTogSWYgdGhpcyBpcyBsb3dlciB0aGFuIHRoZSBoaWdoVXJnZW5jeUN1dG9mZiB2YWx1ZSwgTUVESVVNIHVyZ2VuY3lcbiAgICogd2lsbCBuZXZlciBiZSBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBtZWRpdW1VcmdlbmN5Q3V0b2ZmOiBudW1iZXIgPSAyO1xuXG4gIC8vIFRoZSBITUNUUyBiYWRnZSBjbGFzcywgdXNlZCBmb3IgY29sb3VyYXRpb24uXG4gIHByaXZhdGUgcEJhZGdlOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgYmFkZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wQmFkZ2U7XG4gIH1cblxuICAvLyBUaGUgdGV4dHVhbCBsYWJlbCB0byBkaXNwbGF5IGluIHRoZSBjb21wb25lbnQuXG4gIHByaXZhdGUgcExhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wTGFiZWw7XG4gIH1cblxuICAvLyBUaGUgYWNjZXNzaWJsZSBsYWJlbCwgd2hpY2ggaXMgYWxzbyB1c2VkIGZvciB0aGUgdG9vbHRpcC5cbiAgcHJpdmF0ZSBwQWNjZXNzaWJsZUxhYmVsOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgYWNjZXNzaWJsZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucEFjY2Vzc2libGVMYWJlbDtcbiAgfVxuXG4gIC8vIEhvdyBtYW55IGRheXMgdGhlIGR1ZURhdGUgdmFyaWVzIGZyb20gdG9kYXkuXG4gIHByaXZhdGUgcERheXNEaWZmOiBudW1iZXI7XG4gIHB1YmxpYyBnZXQgZGF5c0RpZmYoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wRGF5c0RpZmY7XG4gIH1cblxuICAvLyBDYXRjaCBhbnkgY2hhbmdlcyB0byBhbnkgb2YgdGhlIElucHV0KCkgcHJvcGVydGllcy5cbiAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyBTZXQgdXAgdGhlIGxhYmVsLCB1cmdlbmN5IGNsYXNzLCBhbmQgYWNjZXNzaWJpbGl0eSBmaWVsZHMuXG4gIHByaXZhdGUgaGFuZGxlSW5wdXRDaGFuZ2VzKCkge1xuICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBkdWVEYXRlLCBza2lwIG91dCBvZiBoZXJlLlxuICAgIGlmICghdGhpcy5kdWVEYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSG93IG1hbnkgZGF5cyBmcm9tIHRvZGF5IGlzIHRoZSBkdWUgZGF0ZT9cbiAgICAvLyBBbHJlYWR5IGhhcHBlbmVkIG1lYW5zIGRheXNEaWZmID4gMDtcbiAgICAvLyBUb2RheSBtZWFucyBkYXlzRGlmZiA9IDA7XG4gICAgLy8gWWV0IHRvIGNvbWUgbWVhbnMgZGF5c0RpZmYgPCAwO1xuICAgIHRoaXMucERheXNEaWZmID0gdGhpcy5nZXREYXlzRGlmZmVyZW5jZSh0aGlzLmR1ZURhdGUsIG5ldyBEYXRlKCkpO1xuXG4gICAgLy8gSXMgaXQgb3ZlcmR1ZT9cbiAgICBpZiAodGhpcy5kYXlzRGlmZiA+IDApIHtcbiAgICAgIHRoaXMucEJhZGdlID0gQmFkZ2VDb2xvdXIuUkVEO1xuICAgICAgY29uc3QgZGF5c0xhYmVsID0gdGhpcy5kYXlzRGlmZiA9PT0gMSA/ICdkYXknIDogJ2RheXMnO1xuICAgICAgdGhpcy5wTGFiZWwgPSBgKyR7dGhpcy5kYXlzRGlmZn0gJHtkYXlzTGFiZWx9YDtcbiAgICAgIHRoaXMucEFjY2Vzc2libGVMYWJlbCA9IGBUaGlzIHRhc2sgaXMgJHt0aGlzLmRheXNEaWZmfSAke2RheXNMYWJlbH0gcGFzdCBpdHMgZHVlIGRhdGVgO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTcGVjaWFsIGxhYmVsIGZvciBcIlRvZGF5XCIuXG4gICAgICBpZiAodGhpcy5kYXlzRGlmZiA9PT0gMCkge1xuICAgICAgICB0aGlzLnBMYWJlbCA9ICdUT0RBWSc7XG4gICAgICAgIHRoaXMucEFjY2Vzc2libGVMYWJlbCA9ICdUaGlzIHRhc2sgaXMgZHVlIHRvIGJlIGNvbXBsZXRlZCB0b2RheSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBMYWJlbCA9IGAke2Zvcm1hdERhdGUodGhpcy5kdWVEYXRlLCAnZCBNTU0nLCAnZW4tR0InKX1gO1xuICAgICAgICB0aGlzLnBBY2Nlc3NpYmxlTGFiZWwgPSBgVGhpcyB0YXNrIGlzIGR1ZSB0byBiZSBjb21wbGV0ZWQgYnkgJHtmb3JtYXREYXRlKHRoaXMuZHVlRGF0ZSwgJ2QgTU1NTSB5JywgJ2VuLUdCJyl9YDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRheXNEaWZmICsgdGhpcy5oaWdoVXJnZW5jeUN1dG9mZiA+IDApIHtcbiAgICAgICAgdGhpcy5wQmFkZ2UgPSBCYWRnZUNvbG91ci5SRUQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZGF5c0RpZmYgKyB0aGlzLm1lZGl1bVVyZ2VuY3lDdXRvZmYgPiAwKSB7XG4gICAgICAgIHRoaXMucEJhZGdlID0gQmFkZ2VDb2xvdXIuT1JBTkdFO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wQmFkZ2UgPSBCYWRnZUNvbG91ci5HUkVFTjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGVzLlxuICAvLyBJZiBmcm9tRGF0ZSBpcyBCRUZPUkUgdG9EYXRlLCBpdCB3aWxsIGJlIGEgcG9zaXRpdmUgbnVtYmVyLlxuICAvLyBJZiBmcm9tRGF0ZSBpcyBBRlRFUiB0b0RhdGUsIGl0IHdpbGwgYmUgYSBuZWdhdGl2ZSBudW1iZXIuXG4gIHByaXZhdGUgZ2V0RGF5c0RpZmZlcmVuY2UoZnJvbURhdGU6IERhdGUsIHRvRGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgZnJvbUVwb2NoID0gZnJvbURhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHRvRXBvY2ggPSB0b0RhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRpZmZTZWNzID0gTWF0aC5mbG9vcigodG9FcG9jaCAtIGZyb21FcG9jaCkgLyAxMDAwKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihkaWZmU2VjcyAvIFNFQ09ORFNfSU5fQV9EQVkpO1xuICB9XG59XG4iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQVFoRixNQUFNLE9BQU8sZ0JBQWdCO0lBTjdCO1FBY0U7Ozs7Ozs7Ozs7Ozs7O1dBY0c7UUFDYSxzQkFBaUIsR0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVO1FBRXpEOzs7Ozs7Ozs7Ozs7V0FZRztRQUNhLHdCQUFtQixHQUFXLENBQUMsQ0FBQztJQThFbEQsQ0FBQztJQTFFQyxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUlELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBSUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFJRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxzREFBc0Q7SUFDL0MsV0FBVztRQUNoQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsNkRBQTZEO0lBQ3JELGtCQUFrQjtRQUN4QixnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBRUQsNENBQTRDO1FBQzVDLHVDQUF1QztRQUN2Qyw0QkFBNEI7UUFDNUIsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWxFLGlCQUFpQjtRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQztZQUNsQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVMsb0JBQW9CLENBQUM7U0FDeEY7YUFBTTtZQUNMLDZCQUE2QjtZQUM3QixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLHdDQUF3QyxDQUFDO2FBQ2xFO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLHVDQUF1QyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQzthQUNoSDtZQUNELElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxFQUFFO2dCQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUM7YUFDbkM7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQzthQUN0QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7YUFDckM7U0FDRjtJQUNILENBQUM7SUFFRCxxREFBcUQ7SUFDckQsOERBQThEO0lBQzlELDZEQUE2RDtJQUNyRCxpQkFBaUIsQ0FBQyxRQUFjLEVBQUUsTUFBWTtRQUNwRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDMUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pELENBQUM7OztZQXpIRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0Isc0xBQXNDO2dCQUV0QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7YUFDdEM7OztzQkFPRSxLQUFLO2dDQWlCTCxLQUFLO2tDQWVMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGF0ZUJhZGdlQ29sb3VyLCBTRUNPTkRTX0lOX0FfREFZIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2R1ZS1kYXRlLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLWR1ZS1kYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICdkdWUtZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydkdWUtZGF0ZS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIER1ZURhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuXG4gIC8qKlxuICAgKiBUaGUgZHVlIGRhdGUgdG8gdXNlIGFzIHRoZSBiYXNpcyBmb3IgcmVuZGVyaW5nIHRoaXMgY29tcG9uZW50LiBJdCBpc1xuICAgKiBjb21wYXJlZCB0byB0aGUgY3VycmVudCBkYXRlIGFuZCBkaXNwbGF5ZWQgYWNjb3JkaW5nbHkuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgZHVlRGF0ZTogRGF0ZTtcblxuICAvKipcbiAgICogVGhpcyBzaG91bGQgYmUgY29uc2lkZXJlZCBISUdIIHVyZ2VuY3kgaWYgdGhlcmUgYXJlIGZld2VyIHRoYW4gdGhpc1xuICAgKiBtYW55IGRheXMgdW50aWwgdGhlIGR1ZSBkYXRlLlxuICAgKiAgICAqIFNldCB0byAwIGlmIHlvdSB3YW50IGl0IHRvIHNob3cgSElHSCBpZiBpdCB3YXMgZHVlIHllc3RlcmRheS5cbiAgICogICAgKiBTZXQgdG8gMSBpZiB5b3Ugd2FudCBpdCB0byBzaG93IEhJR0ggaWYgaXQncyBkdWUgdG9kYXkuXG4gICAqICAgICogU2V0IHRvIDIgaWYgeW91IHdhbnQgaXQgdG8gc2hvdyBISUdIIGlmIGl0J3MgZHVlIHRvbW9ycm93LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byAwIChaRVJPKSwgd2hpY2ggbWVhbnMgaXQgd29uJ3Qgc2hvdyBhcyBISUdIIHVyZ2VuY3kgdW50aWwgdGhlXG4gICAqIGR1ZSBkYXRlIGlzIGluIHRoZSBwYXN0LlxuICAgKlxuICAgKiBOT1RFOiBJZiB0aGlzIGlzIGhpZ2hlciB0aGFuIHRoZSBtZWRpdW1VcmdlbmN5Q3V0b2ZmIHZhbHVlLCBNRURJVU0gdXJnZW5jeVxuICAgKiB3aWxsIG5ldmVyIGJlIHNob3duLlxuICAgKlxuICAgKiBBTFNPIE5PVEU6IEFueXRoaW5nIG92ZXJkdWUgaXMgYXV0b21hdGljYWxseSBjb25zaWRlcmVkIEhJR0ggdXJnZW5jeS5cbiAgICovXG4gIEBJbnB1dCgpIHB1YmxpYyBoaWdoVXJnZW5jeUN1dG9mZjogbnVtYmVyID0gMDsgLy8gRGVmYXVsdFxuXG4gIC8qKlxuICAgKiBUaGlzIHNob3VsZCBiZSBjb25zaWRlcmVkIE1FRElVTSB1cmdlbmN5IGlmIHRoZXJlIGFyZSBmZXdlciB0aGFuIHRoaXNcbiAgICogbWFueSBkYXlzIHVudGlsIHRoZSBkdWUgZGF0ZS5cbiAgICogICAgKiBTZXQgdG8gMSBpZiB5b3Ugd2FudCBpdCB0byBzaG93IE1FRElVTSBpZiBpdCdzIGR1ZSB0b2RheS5cbiAgICogICAgKiBTZXQgdG8gMiBpZiB5b3Ugd2FudCBpdCB0byBzaG93IE1FRElVTSBpZiBpdCdzIGR1ZSB0b21vcnJvdy5cbiAgICogICAgKiBTZXQgdG8gMyBpZiB5b3Ugd2FudCBpdCB0byBzaG93IE1FRElVTSBpZiBpdCdzIGR1ZSB0aGUgZGF5IGFmdGVyIHRvbW9ycm93LlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byAyLCB3aGljaCBtZWFucyBpdCB3b24ndCBzaG93IGFzIE1FRElVTSB1cmdlbmN5IHVubGVzcyB0aGVcbiAgICogZHVlIGRhdGUgaXMgdG9kYXkgb3IgdG9tb3Jyb3cuXG4gICAqXG4gICAqIE5PVEU6IElmIHRoaXMgaXMgbG93ZXIgdGhhbiB0aGUgaGlnaFVyZ2VuY3lDdXRvZmYgdmFsdWUsIE1FRElVTSB1cmdlbmN5XG4gICAqIHdpbGwgbmV2ZXIgYmUgc2hvd24uXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgbWVkaXVtVXJnZW5jeUN1dG9mZjogbnVtYmVyID0gMjtcblxuICAvLyBUaGUgSE1DVFMgYmFkZ2UgY2xhc3MsIHVzZWQgZm9yIGNvbG91cmF0aW9uLlxuICBwcml2YXRlIHBCYWRnZTogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IGJhZGdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucEJhZGdlO1xuICB9XG5cbiAgLy8gVGhlIHRleHR1YWwgbGFiZWwgdG8gZGlzcGxheSBpbiB0aGUgY29tcG9uZW50LlxuICBwcml2YXRlIHBMYWJlbDogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucExhYmVsO1xuICB9XG5cbiAgLy8gVGhlIGFjY2Vzc2libGUgbGFiZWwsIHdoaWNoIGlzIGFsc28gdXNlZCBmb3IgdGhlIHRvb2x0aXAuXG4gIHByaXZhdGUgcEFjY2Vzc2libGVMYWJlbDogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IGFjY2Vzc2libGVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBBY2Nlc3NpYmxlTGFiZWw7XG4gIH1cblxuICAvLyBIb3cgbWFueSBkYXlzIHRoZSBkdWVEYXRlIHZhcmllcyBmcm9tIHRvZGF5LlxuICBwcml2YXRlIHBEYXlzRGlmZjogbnVtYmVyO1xuICBwdWJsaWMgZ2V0IGRheXNEaWZmKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucERheXNEaWZmO1xuICB9XG5cbiAgLy8gQ2F0Y2ggYW55IGNoYW5nZXMgdG8gYW55IG9mIHRoZSBJbnB1dCgpIHByb3BlcnRpZXMuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlcygpO1xuICB9XG5cbiAgLy8gU2V0IHVwIHRoZSBsYWJlbCwgdXJnZW5jeSBjbGFzcywgYW5kIGFjY2Vzc2liaWxpdHkgZmllbGRzLlxuICBwcml2YXRlIGhhbmRsZUlucHV0Q2hhbmdlcygpIHtcbiAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgZHVlRGF0ZSwgc2tpcCBvdXQgb2YgaGVyZS5cbiAgICBpZiAoIXRoaXMuZHVlRGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEhvdyBtYW55IGRheXMgZnJvbSB0b2RheSBpcyB0aGUgZHVlIGRhdGU/XG4gICAgLy8gQWxyZWFkeSBoYXBwZW5lZCBtZWFucyBkYXlzRGlmZiA+IDA7XG4gICAgLy8gVG9kYXkgbWVhbnMgZGF5c0RpZmYgPSAwO1xuICAgIC8vIFlldCB0byBjb21lIG1lYW5zIGRheXNEaWZmIDwgMDtcbiAgICB0aGlzLnBEYXlzRGlmZiA9IHRoaXMuZ2V0RGF5c0RpZmZlcmVuY2UodGhpcy5kdWVEYXRlLCBuZXcgRGF0ZSgpKTtcblxuICAgIC8vIElzIGl0IG92ZXJkdWU/XG4gICAgaWYgKHRoaXMuZGF5c0RpZmYgPiAwKSB7XG4gICAgICB0aGlzLnBCYWRnZSA9IERhdGVCYWRnZUNvbG91ci5SRUQ7XG4gICAgICBjb25zdCBkYXlzTGFiZWwgPSB0aGlzLmRheXNEaWZmID09PSAxID8gJ2RheScgOiAnZGF5cyc7XG4gICAgICB0aGlzLnBMYWJlbCA9IGArJHt0aGlzLmRheXNEaWZmfSAke2RheXNMYWJlbH1gO1xuICAgICAgdGhpcy5wQWNjZXNzaWJsZUxhYmVsID0gYFRoaXMgdGFzayBpcyAke3RoaXMuZGF5c0RpZmZ9ICR7ZGF5c0xhYmVsfSBwYXN0IGl0cyBkdWUgZGF0ZWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNwZWNpYWwgbGFiZWwgZm9yIFwiVG9kYXlcIi5cbiAgICAgIGlmICh0aGlzLmRheXNEaWZmID09PSAwKSB7XG4gICAgICAgIHRoaXMucExhYmVsID0gJ1RPREFZJztcbiAgICAgICAgdGhpcy5wQWNjZXNzaWJsZUxhYmVsID0gJ1RoaXMgdGFzayBpcyBkdWUgdG8gYmUgY29tcGxldGVkIHRvZGF5JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucExhYmVsID0gYCR7Zm9ybWF0RGF0ZSh0aGlzLmR1ZURhdGUsICdkIE1NTScsICdlbi1HQicpfWA7XG4gICAgICAgIHRoaXMucEFjY2Vzc2libGVMYWJlbCA9IGBUaGlzIHRhc2sgaXMgZHVlIHRvIGJlIGNvbXBsZXRlZCBieSAke2Zvcm1hdERhdGUodGhpcy5kdWVEYXRlLCAnZCBNTU1NIHknLCAnZW4tR0InKX1gO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZGF5c0RpZmYgKyB0aGlzLmhpZ2hVcmdlbmN5Q3V0b2ZmID4gMCkge1xuICAgICAgICB0aGlzLnBCYWRnZSA9IERhdGVCYWRnZUNvbG91ci5SRUQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZGF5c0RpZmYgKyB0aGlzLm1lZGl1bVVyZ2VuY3lDdXRvZmYgPiAwKSB7XG4gICAgICAgIHRoaXMucEJhZGdlID0gRGF0ZUJhZGdlQ29sb3VyLk9SQU5HRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucEJhZGdlID0gRGF0ZUJhZGdlQ29sb3VyLkdSRUVOO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRoaXMgd2lsbCByZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXMuXG4gIC8vIElmIGZyb21EYXRlIGlzIEJFRk9SRSB0b0RhdGUsIGl0IHdpbGwgYmUgYSBwb3NpdGl2ZSBudW1iZXIuXG4gIC8vIElmIGZyb21EYXRlIGlzIEFGVEVSIHRvRGF0ZSwgaXQgd2lsbCBiZSBhIG5lZ2F0aXZlIG51bWJlci5cbiAgcHJpdmF0ZSBnZXREYXlzRGlmZmVyZW5jZShmcm9tRGF0ZTogRGF0ZSwgdG9EYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICBjb25zdCBmcm9tRXBvY2ggPSBmcm9tRGF0ZS5nZXRUaW1lKCk7XG4gICAgY29uc3QgdG9FcG9jaCA9IHRvRGF0ZS5nZXRUaW1lKCk7XG4gICAgY29uc3QgZGlmZlNlY3MgPSBNYXRoLmZsb29yKCh0b0Vwb2NoIC0gZnJvbUVwb2NoKSAvIDEwMDApO1xuICAgIHJldHVybiBNYXRoLmZsb29yKGRpZmZTZWNzIC8gU0VDT05EU19JTl9BX0RBWSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,18 +1,13 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: lib/components/exui-main-wrapper/exui-page-wrapper.component.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
1
  import { Component, Input } from '@angular/core';
7
2
  /**
8
3
  * Main Page Wrapper
9
4
  * Responsible for:
10
5
  * Wrapping content within the gov-uk html elements bellow
11
- * \@prop showBackLink - switch for back link
12
- * \@prop appHeaderTitle = appHeaderTitle
13
- * \@prop appFunctionalTitle = appFunctionalTitle
14
- * \@prop summaryErrors list of errors
15
- * \@prop back link, appHeaderTitle (appHeaderTitle), summaryErrors (array of errors)
6
+ * @prop showBackLink - switch for back link
7
+ * @prop appHeaderTitle = appHeaderTitle
8
+ * @prop appFunctionalTitle = appFunctionalTitle
9
+ * @prop summaryErrors list of errors
10
+ * @prop back link, appHeaderTitle (appHeaderTitle), summaryErrors (array of errors)
16
11
  */
17
12
  export class ExuiPageWrapperComponent {
18
13
  constructor() { }
@@ -22,21 +17,12 @@ ExuiPageWrapperComponent.decorators = [
22
17
  selector: 'exui-page-wrapper',
23
18
  template: "<div class=\"page\">\n <a *ngIf=\"backLink\" [routerLink]=\"backLink\" class=\"govuk-back-link\">Back</a>\n <div class=\"govuk-width-container\">\n <main id=\"content\" role=\"main\" class=\"govuk-main-wrapper\">\n <div class=\"govuk-grid-row\">\n <h1 *ngIf=\"title\" class=\"govuk-heading-xl\">\n <span *ngIf=\"fnTitle\" class=\"govuk-caption-xl\">{{fnTitle}}</span>\n {{title}}\n </h1>\n <ng-content>\n\n </ng-content>\n </div>\n </main>\n </div>\n</div>\n",
24
19
  styles: [".page{width:100%}"]
25
- }] }
20
+ },] }
26
21
  ];
27
- /** @nocollapse */
28
22
  ExuiPageWrapperComponent.ctorParameters = () => [];
29
23
  ExuiPageWrapperComponent.propDecorators = {
30
24
  backLink: [{ type: Input }],
31
25
  title: [{ type: Input }],
32
26
  fnTitle: [{ type: Input }]
33
27
  };
34
- if (false) {
35
- /** @type {?} */
36
- ExuiPageWrapperComponent.prototype.backLink;
37
- /** @type {?} */
38
- ExuiPageWrapperComponent.prototype.title;
39
- /** @type {?} */
40
- ExuiPageWrapperComponent.prototype.fnTitle;
41
- }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh1aS1wYWdlLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhtY3RzL3JweC14dWktY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2V4dWktbWFpbi13cmFwcGVyL2V4dWktcGFnZS13cmFwcGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQWdCL0MsTUFBTSxPQUFPLHdCQUF3QjtJQU1uQyxnQkFBZ0IsQ0FBQzs7O1lBWGxCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3Qix1aEJBQStDOzthQUVoRDs7Ozs7dUJBR0UsS0FBSztvQkFDTCxLQUFLO3NCQUNMLEtBQUs7Ozs7SUFGTiw0Q0FBaUM7O0lBQ2pDLHlDQUE4Qjs7SUFDOUIsMkNBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8qKlxuICogTWFpbiBQYWdlIFdyYXBwZXJcbiAqIFJlc3BvbnNpYmxlIGZvcjpcbiAqIFdyYXBwaW5nIGNvbnRlbnQgd2l0aGluIHRoZSBnb3YtdWsgaHRtbCBlbGVtZW50cyBiZWxsb3dcbiAqIEBwcm9wIHNob3dCYWNrTGluayAtIHN3aXRjaCBmb3IgYmFjayBsaW5rXG4gKiBAcHJvcCBhcHBIZWFkZXJUaXRsZSA9IGFwcEhlYWRlclRpdGxlXG4gKiBAcHJvcCBhcHBGdW5jdGlvbmFsVGl0bGUgPSBhcHBGdW5jdGlvbmFsVGl0bGVcbiAqIEBwcm9wIHN1bW1hcnlFcnJvcnMgbGlzdCBvZiBlcnJvcnNcbiAqIEBwcm9wIGJhY2sgbGluaywgYXBwSGVhZGVyVGl0bGUgKGFwcEhlYWRlclRpdGxlKSwgc3VtbWFyeUVycm9ycyAoYXJyYXkgb2YgZXJyb3JzKVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdleHVpLXBhZ2Utd3JhcHBlcicsXG4gIHRlbXBsYXRlVXJsOiAnZXh1aS1wYWdlLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZXh1aS1wYWdlLXdyYXBwZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFeHVpUGFnZVdyYXBwZXJDb21wb25lbnQgIHtcblxuICBASW5wdXQoKSBwdWJsaWMgYmFja0xpbms6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBmblRpdGxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxufVxuIl19
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh1aS1wYWdlLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9leHVpLW1haW4td3JhcHBlci9leHVpLXBhZ2Utd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0M7Ozs7Ozs7OztHQVNHO0FBTUgsTUFBTSxPQUFPLHdCQUF3QjtJQU1uQyxnQkFBZ0IsQ0FBQzs7O1lBWGxCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3Qix1aEJBQStDOzthQUVoRDs7Ozt1QkFHRSxLQUFLO29CQUNMLEtBQUs7c0JBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vKipcbiAqIE1haW4gUGFnZSBXcmFwcGVyXG4gKiBSZXNwb25zaWJsZSBmb3I6XG4gKiBXcmFwcGluZyBjb250ZW50IHdpdGhpbiB0aGUgZ292LXVrIGh0bWwgZWxlbWVudHMgYmVsbG93XG4gKiBAcHJvcCBzaG93QmFja0xpbmsgLSBzd2l0Y2ggZm9yIGJhY2sgbGlua1xuICogQHByb3AgYXBwSGVhZGVyVGl0bGUgPSBhcHBIZWFkZXJUaXRsZVxuICogQHByb3AgYXBwRnVuY3Rpb25hbFRpdGxlID0gYXBwRnVuY3Rpb25hbFRpdGxlXG4gKiBAcHJvcCBzdW1tYXJ5RXJyb3JzIGxpc3Qgb2YgZXJyb3JzXG4gKiBAcHJvcCBiYWNrIGxpbmssIGFwcEhlYWRlclRpdGxlIChhcHBIZWFkZXJUaXRsZSksIHN1bW1hcnlFcnJvcnMgKGFycmF5IG9mIGVycm9ycylcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXh1aS1wYWdlLXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJ2V4dWktcGFnZS13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2V4dWktcGFnZS13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRXh1aVBhZ2VXcmFwcGVyQ29tcG9uZW50ICB7XG5cbiAgQElucHV0KCkgcHVibGljIGJhY2tMaW5rOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZm5UaXRsZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,120 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { getValues } from '../generic-filter/generic-filter-utils';
4
+ import { SearchLocationComponent } from '../search-location/search-location.component';
5
+ export class FindLocationComponent {
6
+ constructor() {
7
+ this.locationFieldChanged = new EventEmitter();
8
+ this.selectedLocations = [];
9
+ this.submitted = true;
10
+ this.enableAddLocationButton = true;
11
+ this.locationTitle = 'Search for a location by name';
12
+ this.disableInputField = false;
13
+ this.locations = [];
14
+ this.tempSelectedLocation = null;
15
+ this.serviceIds = 'SSCS,IA';
16
+ this.pServices = [];
17
+ this.pDisabled = false;
18
+ }
19
+ get disabled() {
20
+ return this.pDisabled;
21
+ }
22
+ set disabled(value) {
23
+ if (value) {
24
+ this.searchLocationComponent.resetSearchTerm();
25
+ this.removeSelectedValues();
26
+ }
27
+ this.pDisabled = this.disableInputField === true ? true : null;
28
+ }
29
+ get services() {
30
+ return this.pServices;
31
+ }
32
+ set services(value) {
33
+ this.pServices = value;
34
+ const field = this.fields.find(f => f.name === this.field.findLocationField);
35
+ if (field) {
36
+ if (typeof value === 'string') {
37
+ this.serviceIds = value;
38
+ }
39
+ else {
40
+ this.serviceIds = getValues(field.options, value).filter(x => x !== 'services_all').join(',');
41
+ }
42
+ }
43
+ }
44
+ addLocation() {
45
+ if (this.tempSelectedLocation) {
46
+ this.selectedLocations = [...this.selectedLocations, this.tempSelectedLocation];
47
+ this.addSelectedLocationsToForm([this.tempSelectedLocation]);
48
+ this.tempSelectedLocation = null;
49
+ this.locations = [];
50
+ this.searchLocationComponent.resetSearchTerm();
51
+ }
52
+ }
53
+ removeLocation(location) {
54
+ if (location.epimms_id) {
55
+ this.selectedLocations = this.selectedLocations.filter(selectedLocation => selectedLocation.epimms_id !== location.epimms_id);
56
+ const formArray = this.form.get(this.field.name);
57
+ const index = formArray.value.findIndex(selectedLocation => selectedLocation.epimms_id === location.epimms_id);
58
+ if (index > -1) {
59
+ formArray.removeAt(index);
60
+ }
61
+ }
62
+ }
63
+ onInputChanged(term) {
64
+ // if the filter is in single mode clear the selected locations
65
+ if (typeof term === 'string' && this.field.maxSelected === 1) {
66
+ this.removeSelectedValues();
67
+ }
68
+ }
69
+ onSearchInputChanged() {
70
+ this.locationFieldChanged.emit();
71
+ }
72
+ onLocationSelected(location) {
73
+ if (this.field.maxSelected === 1) {
74
+ this.removeSelectedValues();
75
+ this.addSelectedLocationsToForm([location]);
76
+ }
77
+ else {
78
+ if (!this.selectedLocations.find(x => x.epimms_id === location.epimms_id)) {
79
+ if (location.epimms_id) {
80
+ this.tempSelectedLocation = location;
81
+ }
82
+ }
83
+ }
84
+ }
85
+ removeSelectedValues() {
86
+ const formArray = this.form.get(this.field.name);
87
+ for (let i = 0; i < formArray.length; i++) {
88
+ formArray.removeAt(i);
89
+ }
90
+ this.selectedLocations = [];
91
+ }
92
+ addSelectedLocationsToForm(locations) {
93
+ const formArray = this.form.get(this.field.name);
94
+ for (const location of locations) {
95
+ formArray.push(new FormControl(location));
96
+ }
97
+ }
98
+ }
99
+ FindLocationComponent.decorators = [
100
+ { type: Component, args: [{
101
+ selector: 'xuilib-find-location',
102
+ template: "<div class=\"location-picker-custom\">\n <div class=\"search-location\">\n <div>\n <label id=\"input-selected-location-label\" *ngIf=\"locationTitle\">{{locationTitle}}</label>\n </div>\n <exui-search-location class=\"search-location\"\n [locations]=\"locations\"\n [selectedLocations]=\"selectedLocations\"\n [singleMode]=\"field.maxSelected === 1\"\n [delay]=\"300\"\n [disabled]=\"disabled\"\n [serviceIds]=\"serviceIds\"\n (locationInputChanged)=\"onInputChanged($event)\"\n (locationSelected)=\"onLocationSelected($event)\"\n (searchLocationChanged)=\"onSearchInputChanged()\"\n [locationType]=\"'case-management'\"></exui-search-location>\n <a href=\"javascript:void(0)\" (click)=\"addLocation()\" class=\"govuk-button\" data-module=\"govuk-button\" *ngIf=\"enableAddLocationButton\">\n Add location\n </a>\n </div>\n <ul class=\"hmcts-filter-tags selection-container\" *ngIf=\"field.maxSelected != 1\">\n <li class=\"location-selection\" *ngFor=\"let selection of selectedLocations\">\n <a class=\"hmcts-filter__tag\" (click)=\"removeLocation(selection)\" href=\"javascript:void(0)\">\n {{ selection.site_name }}\n </a>\n </li>\n </ul>\n</div>\n",
103
+ styles: [""]
104
+ },] }
105
+ ];
106
+ FindLocationComponent.propDecorators = {
107
+ locationFieldChanged: [{ type: Output }],
108
+ selectedLocations: [{ type: Input }],
109
+ submitted: [{ type: Input }],
110
+ enableAddLocationButton: [{ type: Input }],
111
+ form: [{ type: Input }],
112
+ field: [{ type: Input }],
113
+ fields: [{ type: Input }],
114
+ locationTitle: [{ type: Input }],
115
+ disableInputField: [{ type: Input }],
116
+ searchLocationComponent: [{ type: ViewChild, args: [SearchLocationComponent, { static: true },] }],
117
+ disabled: [{ type: Input }],
118
+ services: [{ type: Input }]
119
+ };
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1sb2NhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbmQtbG9jYXRpb24vZmluZC1sb2NhdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFZLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFDakUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFPckYsTUFBTSxPQUFPLHFCQUFxQjtJQUxsQztRQU1tQix5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2pELHNCQUFpQixHQUE0QixFQUFFLENBQUM7UUFDaEQsY0FBUyxHQUFZLElBQUksQ0FBQztRQUMxQiw0QkFBdUIsR0FBWSxJQUFJLENBQUM7UUFJeEMsa0JBQWEsR0FBRywrQkFBK0IsQ0FBQztRQUNoRCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsY0FBUyxHQUE0QixFQUFFLENBQUM7UUFDeEMseUJBQW9CLEdBQTBCLElBQUksQ0FBQztRQUNuRCxlQUFVLEdBQVcsU0FBUyxDQUFDO1FBRTlCLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFZLEtBQUssQ0FBQztJQTJGckMsQ0FBQztJQXpGQyxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUNXLFFBQVEsQ0FBQyxLQUFjO1FBQ2hDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLHVC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Q0wsS0FBSztzQ0FDTCxLQUFLO21CQUNMLEtBQUs7b0JBQ0wsS0FBSztxQkFDTCxLQUFLOzRCQUNMLEtBQUs7Z0NBQ0wsS0FBSztzQ0FJTCxTQUFTLFNBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3VCQVFuRCxLQUFLO3VCQWFMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RmlsdGVyRmllbGRDb25maWd9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0xvY2F0aW9uQnlFUElNTVNNb2RlbH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xvY2F0aW9uLm1vZGVsJztcbmltcG9ydCB7Z2V0VmFsdWVzfSBmcm9tICcuLi9nZW5lcmljLWZpbHRlci9nZW5lcmljLWZpbHRlci11dGlscyc7XG5pbXBvcnQge1NlYXJjaExvY2F0aW9uQ29tcG9uZW50fSBmcm9tICcuLi9zZWFyY2gtbG9jYXRpb24vc2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi1maW5kLWxvY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbmQtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLWxvY2F0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmluZExvY2F0aW9uQ29tcG9uZW50IHtcbiAgQE91dHB1dCgpIHB1YmxpYyBsb2NhdGlvbkZpZWxkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkTG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGVuYWJsZUFkZExvY2F0aW9uQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGZpZWxkOiBGaWx0ZXJGaWVsZENvbmZpZztcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmlsdGVyRmllbGRDb25maWdbXTtcbiAgQElucHV0KCkgcHVibGljIGxvY2F0aW9uVGl0bGUgPSAnU2VhcmNoIGZvciBhIGxvY2F0aW9uIGJ5IG5hbWUnO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZUlucHV0RmllbGQgPSBmYWxzZTtcbiAgcHVibGljIGxvY2F0aW9uczogTG9jYXRpb25CeUVQSU1NU01vZGVsW10gPSBbXTtcbiAgcHVibGljIHRlbXBTZWxlY3RlZExvY2F0aW9uOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwgPSBudWxsO1xuICBwdWJsaWMgc2VydmljZUlkczogc3RyaW5nID0gJ1NTQ1MsSUEnO1xuICBAVmlld0NoaWxkKFNlYXJjaExvY2F0aW9uQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgc2VhcmNoTG9jYXRpb25Db21wb25lbnQ6IFNlYXJjaExvY2F0aW9uQ29tcG9uZW50O1xuICBwcml2YXRlIHBTZXJ2aWNlczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBwRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBEaXNhYmxlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoTG9jYXRpb25Db21wb25lbnQucmVzZXRTZWFyY2hUZXJtKCk7XG4gICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkVmFsdWVzKCk7XG4gICAgfVxuICAgIHRoaXMucERpc2FibGVkID0gdGhpcy5kaXNhYmxlSW5wdXRGaWVsZCA9PT0gdHJ1ZSA/IHRydWUgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXJ2aWNlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucFNlcnZpY2VzO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZXJ2aWNlcyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLnBTZXJ2aWNlcyA9IHZhbHVlO1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHMuZmluZChmID0+IGYubmFtZSA9PT0gdGhpcy5maWVsZC5maW5kTG9jYXRpb25GaWVsZCk7XG4gICAgaWYgKGZpZWxkKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLnNlcnZpY2VJZHMgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VydmljZUlkcyA9IGdldFZhbHVlcyhmaWVsZC5vcHRpb25zLCB2YWx1ZSkuZmlsdGVyKHggPT4geCAhPT0gJ3NlcnZpY2VzX2FsbCcpLmpvaW4oJywnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkTG9jYXRpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGVtcFNlbGVjdGVkTG9jYXRpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMgPSBbLi4udGhpcy5zZWxlY3RlZExvY2F0aW9ucywgdGhpcy50ZW1wU2VsZWN0ZWRMb2NhdGlvbl07XG4gICAgICB0aGlzLmFkZFNlbGVjdGVkTG9jYXRpb25zVG9Gb3JtKFt0aGlzLnRlbXBTZWxlY3RlZExvY2F0aW9uXSk7XG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZExvY2F0aW9uID0gbnVsbDtcbiAgICAgIHRoaXMubG9jYXRpb25zID0gW107XG4gICAgICB0aGlzLnNlYXJjaExvY2F0aW9uQ29tcG9uZW50LnJlc2V0U2VhcmNoVGVybSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVMb2NhdGlvbihsb2NhdGlvbjogTG9jYXRpb25CeUVQSU1NU01vZGVsKTogdm9pZCB7XG4gICAgaWYgKGxvY2F0aW9uLmVwaW1tc19pZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZExvY2F0aW9ucyA9IHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMuZmlsdGVyKHNlbGVjdGVkTG9jYXRpb24gPT4gc2VsZWN0ZWRMb2NhdGlvbi5lcGltbXNfaWQgIT09IGxvY2F0aW9uLmVwaW1tc19pZCk7XG4gICAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgICAgY29uc3QgaW5kZXggPSAoZm9ybUFycmF5LnZhbHVlIGFzIExvY2F0aW9uQnlFUElNTVNNb2RlbFtdKS5maW5kSW5kZXgoc2VsZWN0ZWRMb2NhdGlvbiA9PiBzZWxlY3RlZExvY2F0aW9uLmVwaW1tc19pZCA9PT0gbG9jYXRpb24uZXBpbW1zX2lkKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSW5wdXRDaGFuZ2VkKHRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIGlmIHRoZSBmaWx0ZXIgaXMgaW4gc2luZ2xlIG1vZGUgY2xlYXIgdGhlIHNlbGVjdGVkIGxvY2F0aW9uc1xuICAgIGlmICh0eXBlb2YgdGVybSA9PT0gJ3N0cmluZycgJiYgdGhpcy5maWVsZC5tYXhTZWxlY3RlZCA9PT0gMSkge1xuICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoSW5wdXRDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYXRpb25GaWVsZENoYW5nZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uTG9jYXRpb25TZWxlY3RlZChsb2NhdGlvbjogTG9jYXRpb25CeUVQSU1NU01vZGVsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmllbGQubWF4U2VsZWN0ZWQgPT09IDEpIHtcbiAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWRWYWx1ZXMoKTtcbiAgICAgIHRoaXMuYWRkU2VsZWN0ZWRMb2NhdGlvbnNUb0Zvcm0oW2xvY2F0aW9uXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZExvY2F0aW9ucy5maW5kKHggPT4geC5lcGltbXNfaWQgPT09IGxvY2F0aW9uLmVwaW1tc19pZCkpIHtcbiAgICAgICAgaWYgKGxvY2F0aW9uLmVwaW1tc19pZCkge1xuICAgICAgICAgIHRoaXMudGVtcFNlbGVjdGVkTG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlU2VsZWN0ZWRWYWx1ZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLm5hbWUpIGFzIEZvcm1BcnJheTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1BcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgZm9ybUFycmF5LnJlbW92ZUF0KGkpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkTG9jYXRpb25zID0gW107XG4gIH1cblxuICBwcml2YXRlIGFkZFNlbGVjdGVkTG9jYXRpb25zVG9Gb3JtKGxvY2F0aW9uczogTG9jYXRpb25CeUVQSU1NU01vZGVsW10pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtQXJyYXkgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuZmllbGQubmFtZSkgYXMgRm9ybUFycmF5O1xuICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2YgbG9jYXRpb25zKSB7XG4gICAgICBmb3JtQXJyYXkucHVzaChuZXcgRm9ybUNvbnRyb2wobG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,118 @@
1
+ import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { of, zip } from 'rxjs';
4
+ import { catchError, debounceTime, filter, map, switchMap, tap } from 'rxjs/operators';
5
+ import { PersonRole } from '../../models';
6
+ import { FindAPersonService } from '../../services/find-person/find-person.service';
7
+ export class FindPersonComponent {
8
+ constructor(findPersonService, cd) {
9
+ this.findPersonService = findPersonService;
10
+ this.cd = cd;
11
+ this.personSelected = new EventEmitter();
12
+ this.personFieldChanged = new EventEmitter();
13
+ this.boldTitle = 'Find the person';
14
+ this.subTitle = 'Type the name of the person and select them.';
15
+ this.domain = PersonRole.ALL;
16
+ this.findPersonGroup = new FormGroup({});
17
+ this.submitted = true;
18
+ this.userIncluded = false;
19
+ this.placeholderContent = '';
20
+ this.isNoResultsShown = true;
21
+ this.showUpdatedColor = false;
22
+ this.selectedPersons = [];
23
+ this.errorMessage = 'You must select a name';
24
+ this.idValue = '';
25
+ this.services = ['IA'];
26
+ this.disabled = null;
27
+ this.showAutocomplete = false;
28
+ this.filteredOptions = [];
29
+ this.minSearchCharacters = 2;
30
+ }
31
+ ngOnDestroy() {
32
+ if (this.sub) {
33
+ this.sub.unsubscribe();
34
+ }
35
+ }
36
+ ngOnInit() {
37
+ this.findPersonControl = new FormControl(this.selectedPerson);
38
+ this.findPersonGroup.addControl('findPersonControl', this.findPersonControl);
39
+ this.sub = this.findPersonControl.valueChanges.pipe(tap(() => this.showAutocomplete = false), tap(() => this.filteredOptions = []), debounceTime(300), tap((searchTerm) => typeof searchTerm === 'string' ? this.personSelected.emit(null) : void 0), filter((searchTerm) => searchTerm && searchTerm.length > this.minSearchCharacters), switchMap((searchTerm) => this.filter(searchTerm).pipe(tap(() => this.showAutocomplete = true), catchError(() => this.filteredOptions = [])))).subscribe((people) => {
40
+ this.filteredOptions = people;
41
+ this.cd.detectChanges();
42
+ });
43
+ }
44
+ filter(searchTerm) {
45
+ const findJudicialPeople = this.findPersonService.find({ searchTerm, userRole: this.domain, services: this.services, userIncluded: this.userIncluded, assignedUser: this.assignedUser });
46
+ const findCaseworkersOrAdmins = this.findPersonService.findCaseworkers({ searchTerm, userRole: this.domain, services: this.services, userIncluded: this.userIncluded, assignedUser: this.assignedUser });
47
+ if (searchTerm && searchTerm.length > this.minSearchCharacters) {
48
+ switch (this.domain) {
49
+ case PersonRole.JUDICIAL: {
50
+ return findJudicialPeople.pipe(map(persons => {
51
+ const ids = this.selectedPersons.map(({ id }) => id);
52
+ return persons.filter(({ id }) => !ids.includes(id));
53
+ }));
54
+ }
55
+ case PersonRole.ALL: {
56
+ return zip(findJudicialPeople, findCaseworkersOrAdmins).pipe(map(separatePeople => separatePeople[0].concat(separatePeople[1])));
57
+ }
58
+ case PersonRole.CASEWORKER:
59
+ case PersonRole.ADMIN: {
60
+ return findCaseworkersOrAdmins;
61
+ }
62
+ default: {
63
+ return of([]);
64
+ }
65
+ }
66
+ }
67
+ return of([]);
68
+ }
69
+ onSelectionChange(selectedPerson) {
70
+ this.personSelected.emit(selectedPerson);
71
+ this.findPersonControl.setValue(this.getDisplayName(selectedPerson), { emitEvent: false, onlySelf: true });
72
+ }
73
+ getDisplayName(selectedPerson) {
74
+ if (!selectedPerson) {
75
+ return '';
76
+ }
77
+ if (selectedPerson.domain === PersonRole.JUDICIAL && selectedPerson.knownAs) {
78
+ return `${selectedPerson.knownAs} (${selectedPerson.email})`;
79
+ }
80
+ return selectedPerson.email ? `${selectedPerson.name} (${selectedPerson.email})` : selectedPerson.name;
81
+ }
82
+ onInput() {
83
+ this.personFieldChanged.emit();
84
+ }
85
+ }
86
+ FindPersonComponent.decorators = [
87
+ { type: Component, args: [{
88
+ selector: 'xuilib-find-person',
89
+ template: "<h1 class=\"govuk-heading-l\" *ngIf=\"title && title.length\">\n <span class=\"govuk-caption-l\">{{title}}</span>\n {{boldTitle}}\n</h1>\n<div class=\"govuk-form-group\" [formGroup]=\"findPersonGroup\"\n [ngClass]=\"{'form-group-error': findPersonGroup.get('findPersonControl').invalid && submitted}\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"sub-title-hint\">\n <div id=\"sub-title-hint\" class=\"govuk-hint\" *ngIf=\"subTitle && subTitle.length\">\n {{subTitle}}\n </div>\n <span id=\"validation-error\" class=\"govuk-error-message\" *ngIf=\"findPersonGroup && findPersonGroup.errors\">\n <span class=\"govuk-visually-hidden\">Error:</span>{{findPersonGroup.errors.error ? findPersonGroup.errors.error : errorMessage}}\n </span>\n <input id=\"inputSelectPerson{{idValue}}\" type=\"text\" aria-label=\"select a person\"\n formControlName=\"findPersonControl\"\n [matAutocomplete]=\"auto\"\n class=\"govuk-input govuk-!-width-one-third\"\n [placeholder]=\"placeholderContent\"\n [attr.disabled]=\"disabled\"\n (input)=\"onInput()\">\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\" (optionSelected)=\"onSelectionChange($event.option.value)\">\n <mat-option *ngFor=\"let option of filteredOptions\"\n [value]=\"option\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete, 'select-option': showUpdatedColor}\">\n {{getDisplayName(option)}}\n </mat-option>\n <mat-option [ngClass]=\"{'select-option': showUpdatedColor}\" *ngIf=\"isNoResultsShown && !filteredOptions.length && showAutocomplete\">No results found</mat-option>\n </mat-autocomplete>\n </fieldset>\n</div>\n",
90
+ styles: [".mat-option:hover{background:#2596be}.mat-option.select-option:hover{background:#1d70b8;color:#fff}.hide-autocomplete{display:none}"]
91
+ },] }
92
+ ];
93
+ FindPersonComponent.ctorParameters = () => [
94
+ { type: FindAPersonService },
95
+ { type: ChangeDetectorRef }
96
+ ];
97
+ FindPersonComponent.propDecorators = {
98
+ personSelected: [{ type: Output }],
99
+ personFieldChanged: [{ type: Output }],
100
+ title: [{ type: Input }],
101
+ boldTitle: [{ type: Input }],
102
+ subTitle: [{ type: Input }],
103
+ domain: [{ type: Input }],
104
+ findPersonGroup: [{ type: Input }],
105
+ selectedPerson: [{ type: Input }],
106
+ submitted: [{ type: Input }],
107
+ userIncluded: [{ type: Input }],
108
+ assignedUser: [{ type: Input }],
109
+ placeholderContent: [{ type: Input }],
110
+ isNoResultsShown: [{ type: Input }],
111
+ showUpdatedColor: [{ type: Input }],
112
+ selectedPersons: [{ type: Input }],
113
+ errorMessage: [{ type: Input }],
114
+ idValue: [{ type: Input }],
115
+ services: [{ type: Input }],
116
+ disabled: [{ type: Input }]
117
+ };
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1wZXJzb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9maW5kLXBlcnNvbi9maW5kLXBlcnNvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQWEsRUFBRSxFQUFnQixHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFTLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQVFsRixNQUFNLE9BQU8sbUJBQW1CO0lBMEI5QixZQUE2QixpQkFBcUMsRUFBbUIsRUFBcUI7UUFBN0Usc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFvQjtRQUFtQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQXpCekYsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0MsY0FBUyxHQUFHLGlCQUFpQixDQUFDO1FBQzlCLGFBQVEsR0FBRyw4Q0FBOEMsQ0FBQztRQUMxRCxXQUFNLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUN4QixvQkFBZSxHQUFjLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRS9D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QUNMLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxLQUFLO3VCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24sIHppcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BlcnNvbiwgUGVyc29uUm9sZX0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7RmluZEFQZXJzb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maW5kLXBlcnNvbi9maW5kLXBlcnNvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLWZpbmQtcGVyc29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbmQtcGVyc29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC1wZXJzb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5cbmV4cG9ydCBjbGFzcyBGaW5kUGVyc29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBAT3V0cHV0KCkgcHVibGljIHBlcnNvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxQZXJzb24+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcGVyc29uRmllbGRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBASW5wdXQoKSBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGJvbGRUaXRsZSA9ICdGaW5kIHRoZSBwZXJzb24nO1xuICBASW5wdXQoKSBwdWJsaWMgc3ViVGl0bGUgPSAnVHlwZSB0aGUgbmFtZSBvZiB0aGUgcGVyc29uIGFuZCBzZWxlY3QgdGhlbS4nO1xuICBASW5wdXQoKSBwdWJsaWMgZG9tYWluID0gUGVyc29uUm9sZS5BTEw7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaW5kUGVyc29uR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRQZXJzb246IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHN1Ym1pdHRlZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyB1c2VySW5jbHVkZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBhc3NpZ25lZFVzZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlckNvbnRlbnQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgaXNOb1Jlc3VsdHNTaG93bjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93VXBkYXRlZENvbG9yOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZFBlcnNvbnM6IFBlcnNvbltdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICdZb3UgbXVzdCBzZWxlY3QgYSBuYW1lJztcbiAgQElucHV0KCkgcHVibGljIGlkVmFsdWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgc2VydmljZXM6IHN0cmluZ1tdID0gWydJQSddO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBudWxsO1xuICBwdWJsaWMgc2hvd0F1dG9jb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgZmluZFBlcnNvbkNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgZmlsdGVyZWRPcHRpb25zOiBQZXJzb25bXSA9IFtdO1xuICBwdWJsaWMgcmVhZG9ubHkgbWluU2VhcmNoQ2hhcmFjdGVycyA9IDI7XG4gIHByaXZhdGUgc3ViOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmaW5kUGVyc29uU2VydmljZTogRmluZEFQZXJzb25TZXJ2aWNlLCBwcml2YXRlIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnN1Yikge1xuICAgICAgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maW5kUGVyc29uQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh0aGlzLnNlbGVjdGVkUGVyc29uKTtcbiAgICB0aGlzLmZpbmRQZXJzb25Hcm91cC5hZGRDb250cm9sKCdmaW5kUGVyc29uQ29udHJvbCcsIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wpO1xuICAgIHRoaXMuc3ViID0gdGhpcy5maW5kUGVyc29uQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnNob3dBdXRvY29tcGxldGUgPSBmYWxzZSksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXSksXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgIHRhcCgoc2VhcmNoVGVybSkgPT4gdHlwZW9mIHNlYXJjaFRlcm0gPT09ICdzdHJpbmcnID8gdGhpcy5wZXJzb25TZWxlY3RlZC5lbWl0KG51bGwpIDogdm9pZCAwKSxcbiAgICAgIGZpbHRlcigoc2VhcmNoVGVybTogc3RyaW5nKSA9PiBzZWFyY2hUZXJtICYmIHNlYXJjaFRlcm0ubGVuZ3RoID4gdGhpcy5taW5TZWFyY2hDaGFyYWN0ZXJzKSxcbiAgICAgIHN3aXRjaE1hcCgoc2VhcmNoVGVybTogc3RyaW5nKSA9PiB0aGlzLmZpbHRlcihzZWFyY2hUZXJtKS5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5zaG93QXV0b2NvbXBsZXRlID0gdHJ1ZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBbXSksXG4gICAgICApKVxuICAgICkuc3Vic2NyaWJlKChwZW9wbGU6IFBlcnNvbltdKSA9PiB7XG4gICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHBlb3BsZTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcihzZWFyY2hUZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFBlcnNvbltdPiB7XG4gICAgY29uc3QgZmluZEp1ZGljaWFsUGVvcGxlID0gdGhpcy5maW5kUGVyc29uU2VydmljZS5maW5kKHtzZWFyY2hUZXJtLCB1c2VyUm9sZTogdGhpcy5kb21haW4sIHNlcnZpY2VzOiB0aGlzLnNlcnZpY2VzLCB1c2VySW5jbHVkZWQ6IHRoaXMudXNlckluY2x1ZGVkLCBhc3NpZ25lZFVzZXI6IHRoaXMuYXNzaWduZWRVc2VyfSk7XG4gICAgY29uc3QgZmluZENhc2V3b3JrZXJzT3JBZG1pbnMgPSB0aGlzLmZpbmRQZXJzb25TZXJ2aWNlLmZpbmRDYXNld29ya2Vycyh7c2VhcmNoVGVybSwgdXNlclJvbGU6IHRoaXMuZG9tYWluLCBzZXJ2aWNlczogdGhpcy5zZXJ2aWNlcywgdXNlckluY2x1ZGVkOiB0aGlzLnVzZXJJbmNsdWRlZCwgYXNzaWduZWRVc2VyOiB0aGlzLmFzc2lnbmVkVXNlcn0pO1xuICAgIGlmIChzZWFyY2hUZXJtICYmIHNlYXJjaFRlcm0ubGVuZ3RoID4gdGhpcy5taW5TZWFyY2hDaGFyYWN0ZXJzKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuZG9tYWluKSB7XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5KVURJQ0lBTDoge1xuICAgICAgICAgIHJldHVybiBmaW5kSnVkaWNpYWxQZW9wbGUucGlwZShtYXAocGVyc29ucyA9PiB7XG4gICAgICAgICAgICBjb25zdCBpZHM6IHN0cmluZ1tdID0gdGhpcy5zZWxlY3RlZFBlcnNvbnMubWFwKCh7aWR9KSA9PiBpZCk7XG4gICAgICAgICAgICByZXR1cm4gcGVyc29ucy5maWx0ZXIoKHsgaWQgfSkgPT4gIWlkcy5pbmNsdWRlcyhpZCkpO1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFBlcnNvblJvbGUuQUxMOiB7XG4gICAgICAgICAgcmV0dXJuIHppcChmaW5kSnVkaWNpYWxQZW9wbGUsIGZpbmRDYXNld29ya2Vyc09yQWRtaW5zKS5waXBlKG1hcChzZXBhcmF0ZVBlb3BsZSA9PiBzZXBhcmF0ZVBlb3BsZVswXS5jb25jYXQoc2VwYXJhdGVQZW9wbGVbMV0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBQZXJzb25Sb2xlLkNBU0VXT1JLRVI6XG4gICAgICAgIGNhc2UgUGVyc29uUm9sZS5BRE1JTjoge1xuICAgICAgICAgIHJldHVybiBmaW5kQ2FzZXdvcmtlcnNPckFkbWlucztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2YoW10pO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkUGVyc29uOiBQZXJzb24pOiB2b2lkIHtcbiAgICB0aGlzLnBlcnNvblNlbGVjdGVkLmVtaXQoc2VsZWN0ZWRQZXJzb24pO1xuICAgIHRoaXMuZmluZFBlcnNvbkNvbnRyb2wuc2V0VmFsdWUodGhpcy5nZXREaXNwbGF5TmFtZShzZWxlY3RlZFBlcnNvbiksIHtlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZX0pO1xuICB9XG5cbiAgcHVibGljIGdldERpc3BsYXlOYW1lKHNlbGVjdGVkUGVyc29uOiBQZXJzb24pOiBzdHJpbmcge1xuICAgIGlmICghc2VsZWN0ZWRQZXJzb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKHNlbGVjdGVkUGVyc29uLmRvbWFpbiA9PT0gUGVyc29uUm9sZS5KVURJQ0lBTCAmJiBzZWxlY3RlZFBlcnNvbi5rbm93bkFzKSB7XG4gICAgICByZXR1cm4gYCR7c2VsZWN0ZWRQZXJzb24ua25vd25Bc30gKCR7c2VsZWN0ZWRQZXJzb24uZW1haWx9KWA7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZFBlcnNvbi5lbWFpbCA/IGAke3NlbGVjdGVkUGVyc29uLm5hbWV9ICgke3NlbGVjdGVkUGVyc29uLmVtYWlsfSlgIDogc2VsZWN0ZWRQZXJzb24ubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBvbklucHV0KCk6IHZvaWQge1xuICAgIHRoaXMucGVyc29uRmllbGRDaGFuZ2VkLmVtaXQoKTtcbiAgfVxufVxuIl19