@hmcts/rpx-xui-common-lib 2.0.19 → 2.0.21

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 (279) hide show
  1. package/README.md +1 -1
  2. package/esm2022/lib/components/accessibility/accessibility.component.mjs +725 -0
  3. package/esm2022/lib/components/checkbox-list/checkbox-list.component.mjs +232 -0
  4. package/esm2022/lib/components/contact-details/contact-details.component.mjs +104 -0
  5. package/esm2022/lib/components/cookie-banner/cookie-banner.component.mjs +151 -0
  6. package/esm2022/lib/components/due-date/due-date.component.mjs +141 -0
  7. package/esm2022/lib/components/exui-main-wrapper/exui-page-wrapper.component.mjs +80 -0
  8. package/esm2022/lib/components/find-location/find-location.component.mjs +220 -0
  9. package/esm2022/lib/components/find-person/find-person.component.mjs +234 -0
  10. package/esm2022/lib/components/find-service/find-service.component.mjs +193 -0
  11. package/{esm2020 → esm2022}/lib/components/find-task-name/find-task-name.component.mjs +53 -53
  12. package/{esm2020 → esm2022}/lib/components/generic-filter/generic-filter-utils.mjs +1 -1
  13. package/esm2022/lib/components/generic-filter/generic-filter.component.mjs +1184 -0
  14. package/esm2022/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.mjs +56 -0
  15. package/esm2022/lib/components/invite-user-form/invite-user-form.component.mjs +51 -0
  16. package/esm2022/lib/components/invite-user-permissions/invite-user-permission.component.mjs +54 -0
  17. package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +33 -0
  18. package/esm2022/lib/components/pagination/pagination.component.mjs +92 -0
  19. package/esm2022/lib/components/search-judicials/search-judicials.component.mjs +185 -0
  20. package/esm2022/lib/components/search-location/search-location.component.mjs +237 -0
  21. package/esm2022/lib/components/search-service/search-service.component.mjs +83 -0
  22. package/esm2022/lib/components/search-venue/search-venue.component.mjs +190 -0
  23. package/esm2022/lib/components/selected-case/selected-case.component.mjs +379 -0
  24. package/esm2022/lib/components/selected-case-confirm/selected-case-confirm.component.mjs +135 -0
  25. package/esm2022/lib/components/selected-case-list/selected-case-list.component.mjs +98 -0
  26. package/esm2022/lib/components/service-message/service-message.component.mjs +51 -0
  27. package/esm2022/lib/components/service-messages/service-messages.component.mjs +76 -0
  28. package/esm2022/lib/components/share-case/share-case.component.mjs +420 -0
  29. package/esm2022/lib/components/share-case-confirm/share-case-confirm.component.mjs +85 -0
  30. package/esm2022/lib/components/tab/tab.component.mjs +40 -0
  31. package/esm2022/lib/components/tc-confirm/tc-confirm.component.mjs +66 -0
  32. package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.mjs +17 -0
  33. package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.mjs +17 -0
  34. package/esm2022/lib/components/terms-and-conditions/terms-and-conditions.component.mjs +58 -0
  35. package/esm2022/lib/components/user-details/user-details.component.mjs +273 -0
  36. package/esm2022/lib/components/user-list/user-list.component.mjs +100 -0
  37. package/esm2022/lib/components/user-select/user-select.component.mjs +94 -0
  38. package/esm2022/lib/components/write-address/write-address.component.mjs +342 -0
  39. package/esm2022/lib/components/write-address-inputs/write-address-inputs.component.mjs +165 -0
  40. package/esm2022/lib/directives/feature-toggle/feature-toggle.directive.mjs +41 -0
  41. package/{esm2020 → esm2022}/lib/directives/let/let.directive.mjs +5 -5
  42. package/{esm2020 → esm2022}/lib/exui-common-lib.module.mjs +15 -15
  43. package/esm2022/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.mjs +55 -0
  44. package/esm2022/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.mjs +137 -0
  45. package/esm2022/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.mjs +121 -0
  46. package/esm2022/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.mjs +46 -0
  47. package/esm2022/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.mjs +79 -0
  48. package/esm2022/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.mjs +79 -0
  49. package/esm2022/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.mjs +45 -0
  50. package/esm2022/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.mjs +71 -0
  51. package/esm2022/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.mjs +84 -0
  52. package/esm2022/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.mjs +48 -0
  53. package/esm2022/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.mjs +42 -0
  54. package/esm2022/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.mjs +80 -0
  55. package/esm2022/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.mjs +185 -0
  56. package/esm2022/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.mjs +57 -0
  57. package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.mjs +111 -0
  58. package/esm2022/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.mjs +140 -0
  59. package/esm2022/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.mjs +34 -0
  60. package/esm2022/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.mjs +129 -0
  61. package/esm2022/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.mjs +204 -0
  62. package/esm2022/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.mjs +60 -0
  63. package/esm2022/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.mjs +58 -0
  64. package/esm2022/lib/gov-ui/directives/remove-host.directive.mjs +30 -0
  65. package/{esm2020 → esm2022}/lib/gov-ui/gov-ui.service.mjs +5 -5
  66. package/esm2022/lib/gov-ui/util/helpers/html-templates.helper.mjs +22 -0
  67. package/{esm2020 → esm2022}/lib/gov-ui/validators/checkboxes-be-checked.validator.mjs +1 -1
  68. package/{esm2020 → esm2022}/lib/gov-ui/validators/date.validator.mjs +1 -1
  69. package/esm2022/lib/gov-ui/validators/radio-group.validator.mjs +15 -0
  70. package/esm2022/lib/models/address-option.model.mjs +21 -0
  71. package/{esm2020 → esm2022}/lib/pipes/capitalize/capitalize.pipe.mjs +4 -4
  72. package/esm2022/lib/services/address/address-parser.mjs +76 -0
  73. package/esm2022/lib/services/address/address.service.mjs +55 -0
  74. package/esm2022/lib/services/case-sharing-state/case-sharing-state.service.mjs +170 -0
  75. package/{esm2020 → esm2022}/lib/services/cookie/cookie.service.mjs +6 -6
  76. package/{esm2020 → esm2022}/lib/services/feature-toggle/feature-toggle.guard.mjs +5 -5
  77. package/{esm2020 → esm2022}/lib/services/feature-toggle/feature-toggle.service.mjs +4 -4
  78. package/esm2022/lib/services/feature-toggle/launch-darkly.service.mjs +65 -0
  79. package/esm2022/lib/services/filter/filter.service.mjs +95 -0
  80. package/esm2022/lib/services/find-person/find-person.service.mjs +83 -0
  81. package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +68 -0
  82. package/esm2022/lib/services/google-tag-manager/google-tag-manager.service.mjs +71 -0
  83. package/{esm2020 → esm2022}/lib/services/loading/loading.service.mjs +4 -4
  84. package/{esm2020 → esm2022}/lib/services/locations/location.service.mjs +5 -5
  85. package/{esm2020 → esm2022}/lib/services/manage-session/manage-session.services.mjs +5 -5
  86. package/esm2022/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +33 -0
  87. package/esm2022/lib/services/ref-data/ref-data.service.mjs +34 -0
  88. package/{esm2020 → esm2022}/lib/services/role-guard/role.guard.mjs +5 -5
  89. package/{esm2020 → esm2022}/lib/services/role-guard/role.service.mjs +4 -4
  90. package/esm2022/lib/services/storage/session-storage/session-storage.service.mjs +43 -0
  91. package/esm2022/lib/services/task-name/task-name.service.mjs +35 -0
  92. package/{esm2020 → esm2022}/lib/services/timeout-notifications/timeout-notifications.service.mjs +5 -5
  93. package/{fesm2020 → fesm2022}/hmcts-rpx-xui-common-lib.mjs +2823 -2835
  94. package/fesm2022/hmcts-rpx-xui-common-lib.mjs.map +1 -0
  95. package/lib/components/checkbox-list/checkbox-list.component.d.ts +1 -1
  96. package/lib/components/contact-details/contact-details.component.d.ts +1 -1
  97. package/lib/components/cookie-banner/cookie-banner.component.d.ts +1 -1
  98. package/lib/components/due-date/due-date.component.d.ts +1 -1
  99. package/lib/components/exui-main-wrapper/exui-page-wrapper.component.d.ts +1 -1
  100. package/lib/components/find-location/find-location.component.d.ts +1 -1
  101. package/lib/components/find-person/find-person.component.d.ts +1 -1
  102. package/lib/components/find-service/find-service.component.d.ts +1 -1
  103. package/lib/components/find-task-name/find-task-name.component.d.ts +1 -1
  104. package/lib/components/generic-filter/generic-filter.component.d.ts +1 -1
  105. package/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.d.ts +1 -1
  106. package/lib/components/invite-user-form/invite-user-form.component.d.ts +1 -1
  107. package/lib/components/invite-user-permissions/invite-user-permission.component.d.ts +1 -1
  108. package/lib/components/loading-spinner/loading-spinner.component.d.ts +1 -1
  109. package/lib/components/pagination/pagination.component.d.ts +1 -1
  110. package/lib/components/search-judicials/search-judicials.component.d.ts +1 -1
  111. package/lib/components/search-location/search-location.component.d.ts +1 -1
  112. package/lib/components/search-service/search-service.component.d.ts +1 -1
  113. package/lib/components/search-venue/search-venue.component.d.ts +1 -1
  114. package/lib/components/selected-case/selected-case.component.d.ts +1 -1
  115. package/lib/components/selected-case-confirm/selected-case-confirm.component.d.ts +1 -1
  116. package/lib/components/selected-case-list/selected-case-list.component.d.ts +1 -1
  117. package/lib/components/service-message/service-message.component.d.ts +1 -1
  118. package/lib/components/service-messages/service-messages.component.d.ts +1 -1
  119. package/lib/components/share-case/share-case.component.d.ts +1 -1
  120. package/lib/components/share-case-confirm/share-case-confirm.component.d.ts +1 -1
  121. package/lib/components/tab/tab.component.d.ts +1 -1
  122. package/lib/components/tc-confirm/tc-confirm.component.d.ts +1 -1
  123. package/lib/components/terms-and-conditions/terms-and-conditions.component.d.ts +1 -1
  124. package/lib/components/user-details/user-details.component.d.ts +1 -1
  125. package/lib/components/user-list/user-list.component.d.ts +1 -1
  126. package/lib/components/user-select/user-select.component.d.ts +1 -1
  127. package/lib/components/write-address/write-address.component.d.ts +1 -1
  128. package/lib/components/write-address-inputs/write-address-inputs.component.d.ts +1 -1
  129. package/lib/directives/feature-toggle/feature-toggle.directive.d.ts +1 -1
  130. package/lib/directives/let/let.directive.d.ts +1 -1
  131. package/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.d.ts +1 -1
  132. package/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.d.ts +1 -1
  133. package/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.d.ts +1 -1
  134. package/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.d.ts +1 -1
  135. package/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +1 -1
  136. package/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.d.ts +1 -1
  137. package/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.d.ts +1 -1
  138. package/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.d.ts +1 -1
  139. package/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.d.ts +1 -1
  140. package/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.d.ts +1 -1
  141. package/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.d.ts +1 -1
  142. package/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.d.ts +1 -1
  143. package/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.d.ts +1 -1
  144. package/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.d.ts +1 -1
  145. package/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.d.ts +1 -1
  146. package/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.d.ts +1 -1
  147. package/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.d.ts +1 -1
  148. package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +1 -1
  149. package/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.d.ts +1 -1
  150. package/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.d.ts +1 -1
  151. package/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.d.ts +1 -1
  152. package/lib/services/feature-toggle/feature-toggle.guard.d.ts +2 -2
  153. package/lib/services/role-guard/role.guard.d.ts +2 -2
  154. package/package.json +5 -11
  155. package/esm2020/lib/components/accessibility/accessibility.component.mjs +0 -737
  156. package/esm2020/lib/components/checkbox-list/checkbox-list.component.mjs +0 -231
  157. package/esm2020/lib/components/contact-details/contact-details.component.mjs +0 -107
  158. package/esm2020/lib/components/cookie-banner/cookie-banner.component.mjs +0 -150
  159. package/esm2020/lib/components/due-date/due-date.component.mjs +0 -140
  160. package/esm2020/lib/components/exui-main-wrapper/exui-page-wrapper.component.mjs +0 -79
  161. package/esm2020/lib/components/find-location/find-location.component.mjs +0 -219
  162. package/esm2020/lib/components/find-person/find-person.component.mjs +0 -234
  163. package/esm2020/lib/components/find-service/find-service.component.mjs +0 -192
  164. package/esm2020/lib/components/generic-filter/generic-filter.component.mjs +0 -1198
  165. package/esm2020/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.mjs +0 -55
  166. package/esm2020/lib/components/invite-user-form/invite-user-form.component.mjs +0 -50
  167. package/esm2020/lib/components/invite-user-permissions/invite-user-permission.component.mjs +0 -54
  168. package/esm2020/lib/components/loading-spinner/loading-spinner.component.mjs +0 -32
  169. package/esm2020/lib/components/pagination/pagination.component.mjs +0 -93
  170. package/esm2020/lib/components/search-judicials/search-judicials.component.mjs +0 -184
  171. package/esm2020/lib/components/search-location/search-location.component.mjs +0 -236
  172. package/esm2020/lib/components/search-service/search-service.component.mjs +0 -81
  173. package/esm2020/lib/components/search-venue/search-venue.component.mjs +0 -188
  174. package/esm2020/lib/components/selected-case/selected-case.component.mjs +0 -380
  175. package/esm2020/lib/components/selected-case-confirm/selected-case-confirm.component.mjs +0 -135
  176. package/esm2020/lib/components/selected-case-list/selected-case-list.component.mjs +0 -98
  177. package/esm2020/lib/components/service-message/service-message.component.mjs +0 -50
  178. package/esm2020/lib/components/service-messages/service-messages.component.mjs +0 -75
  179. package/esm2020/lib/components/share-case/share-case.component.mjs +0 -420
  180. package/esm2020/lib/components/share-case-confirm/share-case-confirm.component.mjs +0 -85
  181. package/esm2020/lib/components/tab/tab.component.mjs +0 -39
  182. package/esm2020/lib/components/tc-confirm/tc-confirm.component.mjs +0 -65
  183. package/esm2020/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.mjs +0 -16
  184. package/esm2020/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.mjs +0 -16
  185. package/esm2020/lib/components/terms-and-conditions/terms-and-conditions.component.mjs +0 -59
  186. package/esm2020/lib/components/user-details/user-details.component.mjs +0 -281
  187. package/esm2020/lib/components/user-list/user-list.component.mjs +0 -99
  188. package/esm2020/lib/components/user-select/user-select.component.mjs +0 -92
  189. package/esm2020/lib/components/write-address/write-address.component.mjs +0 -345
  190. package/esm2020/lib/components/write-address-inputs/write-address-inputs.component.mjs +0 -165
  191. package/esm2020/lib/directives/feature-toggle/feature-toggle.directive.mjs +0 -41
  192. package/esm2020/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.mjs +0 -54
  193. package/esm2020/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.mjs +0 -136
  194. package/esm2020/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.mjs +0 -120
  195. package/esm2020/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.mjs +0 -45
  196. package/esm2020/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.mjs +0 -80
  197. package/esm2020/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.mjs +0 -78
  198. package/esm2020/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.mjs +0 -45
  199. package/esm2020/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.mjs +0 -70
  200. package/esm2020/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.mjs +0 -84
  201. package/esm2020/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.mjs +0 -47
  202. package/esm2020/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.mjs +0 -41
  203. package/esm2020/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.mjs +0 -79
  204. package/esm2020/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.mjs +0 -188
  205. package/esm2020/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.mjs +0 -56
  206. package/esm2020/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.mjs +0 -112
  207. package/esm2020/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.mjs +0 -141
  208. package/esm2020/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.mjs +0 -33
  209. package/esm2020/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.mjs +0 -130
  210. package/esm2020/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.mjs +0 -204
  211. package/esm2020/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.mjs +0 -59
  212. package/esm2020/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.mjs +0 -57
  213. package/esm2020/lib/gov-ui/directives/remove-host.directive.mjs +0 -30
  214. package/esm2020/lib/gov-ui/util/helpers/html-templates.helper.mjs +0 -22
  215. package/esm2020/lib/gov-ui/validators/radio-group.validator.mjs +0 -15
  216. package/esm2020/lib/models/address-option.model.mjs +0 -21
  217. package/esm2020/lib/services/address/address-parser.mjs +0 -76
  218. package/esm2020/lib/services/address/address.service.mjs +0 -55
  219. package/esm2020/lib/services/case-sharing-state/case-sharing-state.service.mjs +0 -170
  220. package/esm2020/lib/services/feature-toggle/launch-darkly.service.mjs +0 -65
  221. package/esm2020/lib/services/filter/filter.service.mjs +0 -95
  222. package/esm2020/lib/services/find-person/find-person.service.mjs +0 -83
  223. package/esm2020/lib/services/google-analytics/google-analytics.service.mjs +0 -68
  224. package/esm2020/lib/services/google-tag-manager/google-tag-manager.service.mjs +0 -71
  225. package/esm2020/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +0 -33
  226. package/esm2020/lib/services/ref-data/ref-data.service.mjs +0 -34
  227. package/esm2020/lib/services/storage/session-storage/session-storage.service.mjs +0 -43
  228. package/esm2020/lib/services/task-name/task-name.service.mjs +0 -35
  229. package/fesm2015/hmcts-rpx-xui-common-lib.mjs +0 -11073
  230. package/fesm2015/hmcts-rpx-xui-common-lib.mjs.map +0 -1
  231. package/fesm2020/hmcts-rpx-xui-common-lib.mjs.map +0 -1
  232. /package/{esm2020 → esm2022}/hmcts-rpx-xui-common-lib.mjs +0 -0
  233. /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
  234. /package/{esm2020 → esm2022}/lib/components/public_api.mjs +0 -0
  235. /package/{esm2020 → esm2022}/lib/directives/index.mjs +0 -0
  236. /package/{esm2020 → esm2022}/lib/directives/public-api.mjs +0 -0
  237. /package/{esm2020 → esm2022}/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.mjs +0 -0
  238. /package/{esm2020 → esm2022}/lib/gov-ui/components/index.mjs +0 -0
  239. /package/{esm2020 → esm2022}/lib/gov-ui/components/public_api.mjs +0 -0
  240. /package/{esm2020 → esm2022}/lib/gov-ui/index.mjs +0 -0
  241. /package/{esm2020 → esm2022}/lib/gov-ui/models/checkboxes-model.mjs +0 -0
  242. /package/{esm2020 → esm2022}/lib/gov-ui/models/error-messages-model.mjs +0 -0
  243. /package/{esm2020 → esm2022}/lib/gov-ui/models/gov-ui-config-model.mjs +0 -0
  244. /package/{esm2020 → esm2022}/lib/gov-ui/models/index.mjs +0 -0
  245. /package/{esm2020 → esm2022}/lib/gov-ui/models/public_api.mjs +0 -0
  246. /package/{esm2020 → esm2022}/lib/gov-ui/models/radio-buttons.model.mjs +0 -0
  247. /package/{esm2020 → esm2022}/lib/gov-ui/public_api.mjs +0 -0
  248. /package/{esm2020 → esm2022}/lib/gov-ui/validators/index.mjs +0 -0
  249. /package/{esm2020 → esm2022}/lib/gov-ui/validators/public_api.mjs +0 -0
  250. /package/{esm2020 → esm2022}/lib/models/address-message.enum.mjs +0 -0
  251. /package/{esm2020 → esm2022}/lib/models/address.model.mjs +0 -0
  252. /package/{esm2020 → esm2022}/lib/models/case-share.model.mjs +0 -0
  253. /package/{esm2020 → esm2022}/lib/models/contact-details.model.mjs +0 -0
  254. /package/{esm2020 → esm2022}/lib/models/due-date.model.mjs +0 -0
  255. /package/{esm2020 → esm2022}/lib/models/feature-user.mjs +0 -0
  256. /package/{esm2020 → esm2022}/lib/models/filter.model.mjs +0 -0
  257. /package/{esm2020 → esm2022}/lib/models/idle-config.model.mjs +0 -0
  258. /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
  259. /package/{esm2020 → esm2022}/lib/models/location.model.mjs +0 -0
  260. /package/{esm2020 → esm2022}/lib/models/pagination.model.mjs +0 -0
  261. /package/{esm2020 → esm2022}/lib/models/person.model.mjs +0 -0
  262. /package/{esm2020 → esm2022}/lib/models/public_api.mjs +0 -0
  263. /package/{esm2020 → esm2022}/lib/models/search-options.model.mjs +0 -0
  264. /package/{esm2020 → esm2022}/lib/models/task-name.model.mjs +0 -0
  265. /package/{esm2020 → esm2022}/lib/models/tcDocument.model.mjs +0 -0
  266. /package/{esm2020 → esm2022}/lib/models/timeout-notification.model.mjs +0 -0
  267. /package/{esm2020 → esm2022}/lib/models/user-access-type.model.mjs +0 -0
  268. /package/{esm2020 → esm2022}/lib/models/user-details.model.mjs +0 -0
  269. /package/{esm2020 → esm2022}/lib/models/user.model.mjs +0 -0
  270. /package/{esm2020 → esm2022}/lib/pipes/index.mjs +0 -0
  271. /package/{esm2020 → esm2022}/lib/services/address/address-type.enum.mjs +0 -0
  272. /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
  273. /package/{esm2020 → esm2022}/lib/services/public-api.mjs +0 -0
  274. /package/{esm2020 → esm2022}/lib/services/ref-data/index.mjs +0 -0
  275. /package/{esm2020 → esm2022}/lib/services/ref-data/models/ref-data-htmcs-service.model.mjs +0 -0
  276. /package/{esm2020 → esm2022}/lib/services/ref-data/models/ref-data-region.model.mjs +0 -0
  277. /package/{esm2020 → esm2022}/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.mjs +0 -0
  278. /package/{esm2020 → esm2022}/lib/window.mjs +0 -0
  279. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
@@ -0,0 +1,232 @@
1
+ import { ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "rpx-xui-translation";
5
+ function CheckboxListComponent_div_0_div_7_Template(rf, ctx) { if (rf & 1) {
6
+ const _r3 = i0.ɵɵgetCurrentView();
7
+ i0.ɵɵelementStart(0, "div", 7)(1, "input", 8);
8
+ i0.ɵɵlistener("change", function CheckboxListComponent_div_0_div_7_Template_input_change_1_listener() { const item_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleItemSelection(item_r4)); });
9
+ i0.ɵɵelementEnd();
10
+ i0.ɵɵelementStart(2, "label", 9);
11
+ i0.ɵɵtext(3);
12
+ i0.ɵɵpipe(4, "rpxTranslate");
13
+ i0.ɵɵelementEnd()();
14
+ } if (rf & 2) {
15
+ const item_r4 = ctx.$implicit;
16
+ const i_r5 = ctx.index;
17
+ const ctx_r1 = i0.ɵɵnextContext(2);
18
+ i0.ɵɵadvance();
19
+ i0.ɵɵproperty("id", "select_" + i_r5)("checked", ctx_r1.isSelected(item_r4));
20
+ i0.ɵɵadvance();
21
+ i0.ɵɵproperty("for", "select_" + i_r5);
22
+ i0.ɵɵadvance();
23
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 4, ctx_r1.labelFunction(item_r4)));
24
+ } }
25
+ function CheckboxListComponent_div_0_Template(rf, ctx) { if (rf & 1) {
26
+ const _r1 = i0.ɵɵgetCurrentView();
27
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "input", 3);
28
+ i0.ɵɵlistener("change", function CheckboxListComponent_div_0_Template_input_change_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSelectAll()); });
29
+ i0.ɵɵelementEnd();
30
+ i0.ɵɵelementStart(3, "label", 4);
31
+ i0.ɵɵtext(4);
32
+ i0.ɵɵpipe(5, "rpxTranslate");
33
+ i0.ɵɵelementEnd()();
34
+ i0.ɵɵelementStart(6, "div", 5);
35
+ i0.ɵɵtemplate(7, CheckboxListComponent_div_0_div_7_Template, 5, 6, "div", 6);
36
+ i0.ɵɵelementEnd()();
37
+ } if (rf & 2) {
38
+ const ctx_r1 = i0.ɵɵnextContext();
39
+ i0.ɵɵadvance(2);
40
+ i0.ɵɵproperty("checked", ctx_r1.allSelected);
41
+ i0.ɵɵadvance(2);
42
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(5, 3, "Select all / Deselect all"));
43
+ i0.ɵɵadvance(3);
44
+ i0.ɵɵproperty("ngForOf", ctx_r1.options);
45
+ } }
46
+ export class CheckboxListComponent {
47
+ constructor(ref) {
48
+ this.ref = ref;
49
+ /**
50
+ * The options to show checkboxes for. Note that the type
51
+ * within the array corresponds to the one for the component.
52
+ */
53
+ this.options = [];
54
+ /**
55
+ * Whenever the selection changes, this event fires. What is dispatched
56
+ * is the current selection, also retrievable from .selection.
57
+ */
58
+ this.selectionChange = new EventEmitter();
59
+ }
60
+ /**
61
+ * The currently selected values.
62
+ * Note: This array is immutable, which means pushing and popping will
63
+ * have no effect on which checkboxes are selected.
64
+ */
65
+ get selection() {
66
+ return this.pSelection ? [...this.pSelection] : [];
67
+ }
68
+ set selection(value) {
69
+ this.pSelection = this.getSelection(value);
70
+ }
71
+ /**
72
+ * Indicates whether or not all of the items are selected.
73
+ */
74
+ get allSelected() {
75
+ return this.selection.length === this.options.length;
76
+ }
77
+ // Catch any changes to any of the Input() properties.
78
+ ngOnChanges() {
79
+ // Set up the pre-selected values.
80
+ this.setupPreselection();
81
+ // Now check the current selection to make sure it's valid.
82
+ this.checkSelection();
83
+ }
84
+ // checks the data projected into the component
85
+ ngAfterContentChecked() {
86
+ this.ref.detectChanges();
87
+ }
88
+ /**
89
+ * Indicates whether or not there are any options to render.
90
+ */
91
+ get hasOptions() {
92
+ return this.options && this.options.length > 0;
93
+ }
94
+ get isFunctional() {
95
+ return this.labelFunction && this.hasOptions;
96
+ }
97
+ /**
98
+ * Indicates whether or not an item is part of the current selection.
99
+ * @param item The item in question.
100
+ */
101
+ isSelected(item) {
102
+ return this.selection.includes(item);
103
+ }
104
+ /**
105
+ * If an item is already selected, it will be removed from the selection.
106
+ * Otherwise, it will be added to the selection..
107
+ */
108
+ toggleItemSelection(item) {
109
+ if (this.pSelection === undefined) {
110
+ // If we don't have any selection at all yet, make it just this item.
111
+ this.pSelection = [item];
112
+ }
113
+ else if (this.isSelected(item)) {
114
+ // If this item is already selected, remove it.
115
+ this.pSelection.splice(this.pSelection.indexOf(item), 1);
116
+ }
117
+ else {
118
+ // If it's not selected, add it.
119
+ this.pSelection.push(item);
120
+ }
121
+ // Indicate that the user has now made an active selection.
122
+ this.pSelectionMade = true;
123
+ // Now emit an event so any containers know about the change to selection.
124
+ this.selectionChange.emit(this.selection);
125
+ }
126
+ /**
127
+ * If all of the items are selected, deselect them all.
128
+ * Otherwise, select them all.
129
+ */
130
+ toggleSelectAll() {
131
+ // Do we already have them all selected?
132
+ if (this.allSelected) {
133
+ // If so, clear out the selection.
134
+ this.pSelection = [];
135
+ }
136
+ else {
137
+ // If not, select all of them.
138
+ this.pSelection = [...this.options];
139
+ }
140
+ // Indicate that the user has now made an active selection.
141
+ this.pSelectionMade = true;
142
+ // Now emit an event so any containers know about the change to selection.
143
+ this.selectionChange.emit(this.pSelection);
144
+ }
145
+ /**
146
+ * Use the labelFunction to determine whether the options include the item.
147
+ * This is to handle partial objects being set in the pre-selection where
148
+ * they may not be available by the same mechanism as the options.
149
+ *
150
+ * @param items The array of items in which to look for the item.
151
+ * @param item The item to check in the options.
152
+ */
153
+ containsItem(items, item) {
154
+ if (this.isFunctional) {
155
+ const itemLabel = this.labelFunction(item);
156
+ return items.some(opt => {
157
+ return this.labelFunction(opt) === itemLabel;
158
+ });
159
+ }
160
+ return false;
161
+ }
162
+ // Simple utility function to indicate whether there is an active preselection.
163
+ get hasPreselection() {
164
+ return this.preselection && this.preselection.length > 0;
165
+ }
166
+ // Set up the initially selected values.
167
+ // NOTE: If the preselection changes and the user has NOT made an active selection,
168
+ // the current selection will also be changed. As soon as the user has made an
169
+ // active selection, however, the preselection is no longer relevant.
170
+ setupPreselection() {
171
+ if (this.isFunctional && !this.pSelectionMade && this.hasPreselection) {
172
+ let changed = true; // Assume this is a change.
173
+ if (this.pSelection) {
174
+ // If there is no difference between the arrays, this is not a change.
175
+ changed = this.pSelection.filter((item) => {
176
+ return !this.containsItem(this.preselection, item);
177
+ }).length > 0;
178
+ }
179
+ // If this is a change, update the selection and then emit an
180
+ // event so any containers know about the change to selection.
181
+ if (changed) {
182
+ this.pSelection = this.getSelection(this.preselection);
183
+ this.selectionChange.emit(this.selection);
184
+ }
185
+ }
186
+ }
187
+ getSelection(items) {
188
+ return [
189
+ ...this.options.filter(opt => {
190
+ return this.containsItem(items, opt);
191
+ })
192
+ ];
193
+ }
194
+ // The options have changed. Let's make sure the selection
195
+ // doesn't contain anything that's not currently an option.
196
+ checkSelection() {
197
+ if (this.isFunctional) {
198
+ // Check which of the currently selected items are actually options.
199
+ const allowedSelection = this.selection.filter((item) => {
200
+ return this.containsItem(this.options, item);
201
+ });
202
+ // If any have dropped out, change the selection.
203
+ if (allowedSelection.length !== this.selection.length) {
204
+ this.pSelection = [...allowedSelection];
205
+ // And emit an event so any containers know about the change to selection.
206
+ this.selectionChange.emit(this.selection);
207
+ }
208
+ }
209
+ }
210
+ static { this.ɵfac = function CheckboxListComponent_Factory(t) { return new (t || CheckboxListComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
211
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CheckboxListComponent, selectors: [["xuilib-checkbox-list"]], inputs: { options: "options", preselection: "preselection", labelFunction: "labelFunction", selection: "selection" }, outputs: { selectionChange: "selectionChange" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["class", "xui-checkbox-list govuk-checkboxes govuk-checkboxes--small", 4, "ngIf"], [1, "xui-checkbox-list", "govuk-checkboxes", "govuk-checkboxes--small"], [1, "select-all", "govuk-checkboxes__item"], ["type", "checkbox", "id", "select_all", 1, "govuk-checkboxes__input", 3, "change", "checked"], ["for", "select_all", 1, "govuk-label", "govuk-checkboxes__label"], [1, "checkbox-items"], ["class", "govuk-checkboxes__item", 4, "ngFor", "ngForOf"], [1, "govuk-checkboxes__item"], ["type", "checkbox", 1, "govuk-checkboxes__input", 3, "change", "id", "checked"], [1, "govuk-label", "govuk-checkboxes__label", 3, "for"]], template: function CheckboxListComponent_Template(rf, ctx) { if (rf & 1) {
212
+ i0.ɵɵtemplate(0, CheckboxListComponent_div_0_Template, 8, 5, "div", 0);
213
+ } if (rf & 2) {
214
+ i0.ɵɵproperty("ngIf", ctx.isFunctional);
215
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i2.RpxTranslatePipe], styles: [".xui-checkbox-list .select-all{margin-bottom:10px}.xui-checkbox-list .checkbox-items{display:flex;flex-direction:column;flex-wrap:wrap;height:100%;max-height:100%;align-items:flex-start;align-content:flex-start;width:100%;max-width:100%;overflow-x:scroll}\n"], encapsulation: 2 }); }
216
+ }
217
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CheckboxListComponent, [{
218
+ type: Component,
219
+ args: [{ selector: 'xuilib-checkbox-list', encapsulation: ViewEncapsulation.None, template: "<div class=\"xui-checkbox-list govuk-checkboxes govuk-checkboxes--small\" *ngIf=\"isFunctional\">\n <div class=\"select-all govuk-checkboxes__item\">\n <input type=\"checkbox\" id=\"select_all\" class=\"govuk-checkboxes__input\" [checked]=\"allSelected\"\n (change)=\"toggleSelectAll()\" />\n <label for=\"select_all\" class=\"govuk-label govuk-checkboxes__label\">{{'Select all / Deselect all' | rpxTranslate}}</label>\n </div>\n <div class=\"checkbox-items\">\n <div *ngFor=\"let item of options; let i = index\" class=\"govuk-checkboxes__item\">\n <input type=\"checkbox\" [id]=\"'select_' + i\" class=\"govuk-checkboxes__input\" [checked]=\"isSelected(item)\"\n (change)=\"toggleItemSelection(item)\" />\n <label [for]=\"'select_' + i\" class=\"govuk-label govuk-checkboxes__label\">{{labelFunction(item) | rpxTranslate}}</label>\n </div>\n </div>\n</div>\n", styles: [".xui-checkbox-list .select-all{margin-bottom:10px}.xui-checkbox-list .checkbox-items{display:flex;flex-direction:column;flex-wrap:wrap;height:100%;max-height:100%;align-items:flex-start;align-content:flex-start;width:100%;max-width:100%;overflow-x:scroll}\n"] }]
220
+ }], () => [{ type: i0.ChangeDetectorRef }], { options: [{
221
+ type: Input
222
+ }], preselection: [{
223
+ type: Input
224
+ }], labelFunction: [{
225
+ type: Input
226
+ }], selectionChange: [{
227
+ type: Output
228
+ }], selection: [{
229
+ type: Input
230
+ }] }); })();
231
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CheckboxListComponent, { className: "CheckboxListComponent", filePath: "lib/components/checkbox-list/checkbox-list.component.ts", lineNumber: 9 }); })();
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NoZWNrYm94LWxpc3QvY2hlY2tib3gtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NoZWNrYm94LWxpc3QvY2hlY2tib3gtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0lDUXZJLEFBREYsOEJBQWdGLGVBRWhDO0lBQXZDLG1OQUFVLG1DQUF5QixLQUFDO0lBRDNDLGlCQUM4QztJQUM5QyxnQ0FBeUU7SUFBQSxZQUFzQzs7SUFDakgsQUFEaUgsaUJBQVEsRUFDbkg7Ozs7O0lBSG1CLGNBQW9CO0lBQWlDLEFBQXJELHFDQUFvQix1Q0FBNkQ7SUFFakcsY0FBcUI7SUFBckIsc0NBQXFCO0lBQTZDLGNBQXNDO0lBQXRDLHlFQUFzQzs7OztJQVJqSCxBQURGLEFBREYsOEJBQTZGLGFBQzVDLGVBRVA7SUFBL0Isa0xBQVUsd0JBQWlCLEtBQUM7SUFEbkMsaUJBQ3NDO0lBQ3RDLGdDQUFvRTtJQUFBLFlBQThDOztJQUNwSCxBQURvSCxpQkFBUSxFQUN0SDtJQUNOLDhCQUE0QjtJQUMxQiw0RUFBZ0Y7SUFNcEYsQUFERSxpQkFBTSxFQUNGOzs7SUFYcUUsZUFBdUI7SUFBdkIsNENBQXVCO0lBRTFCLGVBQThDO0lBQTlDLHVFQUE4QztJQUc1RixlQUFZO0lBQVosd0NBQVk7O0FEQ3RDLE1BQU0sT0FBTyxxQkFBcUI7SUFFaEMsWUFBNkIsR0FBc0I7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Q1JsQyxzRUFBNkY7O1lBQXBCLHVDQUFrQjs7O2lGRFE5RSxxQkFBcUI7Y0FOakMsU0FBUzsyQkFDRSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUk7a0RBV3JCLE9BQU87a0JBQXRCLEtBQUs7WUFNVSxZQUFZO2tCQUEzQixLQUFLO1lBTVUsYUFBYTtrQkFBNUIsS0FBSztZQU1XLGVBQWU7a0JBQS9CLE1BQU07WUFRSSxTQUFTO2tCQURuQixLQUFLOztrRkFsQ0sscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi1jaGVja2JveC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICdjaGVja2JveC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2NoZWNrYm94LWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveExpc3RDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyQ29udGVudENoZWNrZWQge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIHRvIHNob3cgY2hlY2tib3hlcyBmb3IuIE5vdGUgdGhhdCB0aGUgdHlwZVxuICAgKiB3aXRoaW4gdGhlIGFycmF5IGNvcnJlc3BvbmRzIHRvIHRoZSBvbmUgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBwdWJsaWMgb3B0aW9uczogVFtdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsbHktc2VsZWN0ZWQgdmFsdWVzIHRvIHVzZS4gV2hlbiB0aGUgY29tcG9uZW50IHJlbmRlcnMsXG4gICAqIHRoZSBjaGVja2JveGVzIHRoYXQgY29ycmVzcG9uZCB0byB0aGVzZSB2YWx1ZXMgd2lsbCBiZSBjaGVja2VkLlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIHByZXNlbGVjdGlvbjogVFtdO1xuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgZm9yIGVhY2ggaXRlbSB0byBkaXNwbGF5IHRoZSBhcHByb3ByaWF0ZVxuICAgKiBsYWJlbCBiZXNpZGUgdGhlIGNoZWNrYm94LlxuICAgKi9cbiAgQElucHV0KCkgcHVibGljIGxhYmVsRnVuY3Rpb246IChpdGVtOiBUKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW5ldmVyIHRoZSBzZWxlY3Rpb24gY2hhbmdlcywgdGhpcyBldmVudCBmaXJlcy4gV2hhdCBpcyBkaXNwYXRjaGVkXG4gICAqIGlzIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgYWxzbyByZXRyaWV2YWJsZSBmcm9tIC5zZWxlY3Rpb24uXG4gICAqL1xuICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCB2YWx1ZXMuXG4gICAqIE5vdGU6IFRoaXMgYXJyYXkgaXMgaW1tdXRhYmxlLCB3aGljaCBtZWFucyBwdXNoaW5nIGFuZCBwb3BwaW5nIHdpbGxcbiAgICogaGF2ZSBubyBlZmZlY3Qgb24gd2hpY2ggY2hlY2tib3hlcyBhcmUgc2VsZWN0ZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHNlbGVjdGlvbigpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLnBTZWxlY3Rpb24gPyBbIC4uLnRoaXMucFNlbGVjdGlvbiBdIDogW107XG4gIH1cbiAgcHVibGljIHNldCBzZWxlY3Rpb24odmFsdWU6IFRbXSkge1xuICAgIHRoaXMucFNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIHBTZWxlY3Rpb246IFRbXTtcbiAgcHJpdmF0ZSBwU2VsZWN0aW9uTWFkZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGFsbCBvZiB0aGUgaXRlbXMgYXJlIHNlbGVjdGVkLlxuICAgKi9cbiAgcHVibGljIGdldCBhbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24ubGVuZ3RoID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgLy8gQ2F0Y2ggYW55IGNoYW5nZXMgdG8gYW55IG9mIHRoZSBJbnB1dCgpIHByb3BlcnRpZXMuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAvLyBTZXQgdXAgdGhlIHByZS1zZWxlY3RlZCB2YWx1ZXMuXG4gICAgdGhpcy5zZXR1cFByZXNlbGVjdGlvbigpO1xuICAgIC8vIE5vdyBjaGVjayB0aGUgY3VycmVudCBzZWxlY3Rpb24gdG8gbWFrZSBzdXJlIGl0J3MgdmFsaWQuXG4gICAgdGhpcy5jaGVja1NlbGVjdGlvbigpO1xuICB9XG5cbiAgLy8gY2hlY2tzIHRoZSBkYXRhIHByb2plY3RlZCBpbnRvIHRoZSBjb21wb25lbnRcbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZXJlIGFyZSBhbnkgb3B0aW9ucyB0byByZW5kZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGhhc09wdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNGdW5jdGlvbmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxhYmVsRnVuY3Rpb24gJiYgdGhpcy5oYXNPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhbiBpdGVtIGlzIHBhcnQgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSBpbiBxdWVzdGlvbi5cbiAgICovXG4gIHB1YmxpYyBpc1NlbGVjdGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24uaW5jbHVkZXMoaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgYW4gaXRlbSBpcyBhbHJlYWR5IHNlbGVjdGVkLCBpdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VsZWN0aW9uLlxuICAgKiBPdGhlcndpc2UsIGl0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHNlbGVjdGlvbi4uXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlSXRlbVNlbGVjdGlvbihpdGVtOiBUKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucFNlbGVjdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFueSBzZWxlY3Rpb24gYXQgYWxsIHlldCwgbWFrZSBpdCBqdXN0IHRoaXMgaXRlbS5cbiAgICAgIHRoaXMucFNlbGVjdGlvbiA9IFsgaXRlbSBdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc1NlbGVjdGVkKGl0ZW0pKSB7XG4gICAgICAvLyBJZiB0aGlzIGl0ZW0gaXMgYWxyZWFkeSBzZWxlY3RlZCwgcmVtb3ZlIGl0LlxuICAgICAgdGhpcy5wU2VsZWN0aW9uLnNwbGljZSh0aGlzLnBTZWxlY3Rpb24uaW5kZXhPZihpdGVtKSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIGl0J3Mgbm90IHNlbGVjdGVkLCBhZGQgaXQuXG4gICAgICB0aGlzLnBTZWxlY3Rpb24ucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICAvLyBJbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBub3cgbWFkZSBhbiBhY3RpdmUgc2VsZWN0aW9uLlxuICAgIHRoaXMucFNlbGVjdGlvbk1hZGUgPSB0cnVlO1xuXG4gICAgLy8gTm93IGVtaXQgYW4gZXZlbnQgc28gYW55IGNvbnRhaW5lcnMga25vdyBhYm91dCB0aGUgY2hhbmdlIHRvIHNlbGVjdGlvbi5cbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBhbGwgb2YgdGhlIGl0ZW1zIGFyZSBzZWxlY3RlZCwgZGVzZWxlY3QgdGhlbSBhbGwuXG4gICAqIE90aGVyd2lzZSwgc2VsZWN0IHRoZW0gYWxsLlxuICAgKi9cbiAgcHVibGljIHRvZ2dsZVNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAvLyBEbyB3ZSBhbHJlYWR5IGhhdmUgdGhlbSBhbGwgc2VsZWN0ZWQ/XG4gICAgaWYgKHRoaXMuYWxsU2VsZWN0ZWQpIHtcbiAgICAgIC8vIElmIHNvLCBjbGVhciBvdXQgdGhlIHNlbGVjdGlvbi5cbiAgICAgIHRoaXMucFNlbGVjdGlvbiA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBub3QsIHNlbGVjdCBhbGwgb2YgdGhlbS5cbiAgICAgIHRoaXMucFNlbGVjdGlvbiA9IFsgLi4udGhpcy5vcHRpb25zIF07XG4gICAgfVxuXG4gICAgLy8gSW5kaWNhdGUgdGhhdCB0aGUgdXNlciBoYXMgbm93IG1hZGUgYW4gYWN0aXZlIHNlbGVjdGlvbi5cbiAgICB0aGlzLnBTZWxlY3Rpb25NYWRlID0gdHJ1ZTtcblxuICAgIC8vIE5vdyBlbWl0IGFuIGV2ZW50IHNvIGFueSBjb250YWluZXJzIGtub3cgYWJvdXQgdGhlIGNoYW5nZSB0byBzZWxlY3Rpb24uXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnBTZWxlY3Rpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGUgbGFiZWxGdW5jdGlvbiB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgb3B0aW9ucyBpbmNsdWRlIHRoZSBpdGVtLlxuICAgKiBUaGlzIGlzIHRvIGhhbmRsZSBwYXJ0aWFsIG9iamVjdHMgYmVpbmcgc2V0IGluIHRoZSBwcmUtc2VsZWN0aW9uIHdoZXJlXG4gICAqIHRoZXkgbWF5IG5vdCBiZSBhdmFpbGFibGUgYnkgdGhlIHNhbWUgbWVjaGFuaXNtIGFzIHRoZSBvcHRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbXMgVGhlIGFycmF5IG9mIGl0ZW1zIGluIHdoaWNoIHRvIGxvb2sgZm9yIHRoZSBpdGVtLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB0byBjaGVjayBpbiB0aGUgb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBjb250YWluc0l0ZW0oaXRlbXM6IFRbXSwgaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzRnVuY3Rpb25hbCkge1xuICAgICAgY29uc3QgaXRlbUxhYmVsOiBzdHJpbmcgPSB0aGlzLmxhYmVsRnVuY3Rpb24oaXRlbSk7XG4gICAgICByZXR1cm4gaXRlbXMuc29tZShvcHQgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sYWJlbEZ1bmN0aW9uKG9wdCkgPT09IGl0ZW1MYWJlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBTaW1wbGUgdXRpbGl0eSBmdW5jdGlvbiB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZXJlIGlzIGFuIGFjdGl2ZSBwcmVzZWxlY3Rpb24uXG4gIHByaXZhdGUgZ2V0IGhhc1ByZXNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5wcmVzZWxlY3Rpb24gJiYgdGhpcy5wcmVzZWxlY3Rpb24ubGVuZ3RoID4gMDtcbiAgfVxuXG4gIC8vIFNldCB1cCB0aGUgaW5pdGlhbGx5IHNlbGVjdGVkIHZhbHVlcy5cbiAgLy8gTk9URTogSWYgdGhlIHByZXNlbGVjdGlvbiBjaGFuZ2VzIGFuZCB0aGUgdXNlciBoYXMgTk9UIG1hZGUgYW4gYWN0aXZlIHNlbGVjdGlvbixcbiAgLy8gdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHdpbGwgYWxzbyBiZSBjaGFuZ2VkLiBBcyBzb29uIGFzIHRoZSB1c2VyIGhhcyBtYWRlIGFuXG4gIC8vIGFjdGl2ZSBzZWxlY3Rpb24sIGhvd2V2ZXIsIHRoZSBwcmVzZWxlY3Rpb24gaXMgbm8gbG9uZ2VyIHJlbGV2YW50LlxuICBwcml2YXRlIHNldHVwUHJlc2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRnVuY3Rpb25hbCAmJiAhdGhpcy5wU2VsZWN0aW9uTWFkZSAmJiB0aGlzLmhhc1ByZXNlbGVjdGlvbikge1xuICAgICAgbGV0IGNoYW5nZWQgPSB0cnVlOyAvLyBBc3N1bWUgdGhpcyBpcyBhIGNoYW5nZS5cbiAgICAgIGlmICh0aGlzLnBTZWxlY3Rpb24pIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBhcnJheXMsIHRoaXMgaXMgbm90IGEgY2hhbmdlLlxuICAgICAgICBjaGFuZ2VkID0gdGhpcy5wU2VsZWN0aW9uLmZpbHRlcigoaXRlbTogVCkgPT4ge1xuICAgICAgICAgIHJldHVybiAhdGhpcy5jb250YWluc0l0ZW0odGhpcy5wcmVzZWxlY3Rpb24sIGl0ZW0pO1xuICAgICAgICB9KS5sZW5ndGggPiAwO1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY2hhbmdlLCB1cGRhdGUgdGhlIHNlbGVjdGlvbiBhbmQgdGhlbiBlbWl0IGFuXG4gICAgICAvLyBldmVudCBzbyBhbnkgY29udGFpbmVycyBrbm93IGFib3V0IHRoZSBjaGFuZ2UgdG8gc2VsZWN0aW9uLlxuICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgdGhpcy5wU2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24odGhpcy5wcmVzZWxlY3Rpb24pO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFNlbGVjdGlvbihpdGVtczogVFtdKTogVFtdIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4udGhpcy5vcHRpb25zLmZpbHRlcihvcHQgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluc0l0ZW0oaXRlbXMsIG9wdCk7XG4gICAgICB9KVxuICAgIF07XG4gIH1cblxuICAvLyBUaGUgb3B0aW9ucyBoYXZlIGNoYW5nZWQuIExldCdzIG1ha2Ugc3VyZSB0aGUgc2VsZWN0aW9uXG4gIC8vIGRvZXNuJ3QgY29udGFpbiBhbnl0aGluZyB0aGF0J3Mgbm90IGN1cnJlbnRseSBhbiBvcHRpb24uXG4gIHByaXZhdGUgY2hlY2tTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNGdW5jdGlvbmFsKSB7XG4gICAgICAvLyBDaGVjayB3aGljaCBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW1zIGFyZSBhY3R1YWxseSBvcHRpb25zLlxuICAgICAgY29uc3QgYWxsb3dlZFNlbGVjdGlvbjogVFtdID0gdGhpcy5zZWxlY3Rpb24uZmlsdGVyKChpdGVtOiBUKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5zSXRlbSh0aGlzLm9wdGlvbnMsIGl0ZW0pO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIElmIGFueSBoYXZlIGRyb3BwZWQgb3V0LCBjaGFuZ2UgdGhlIHNlbGVjdGlvbi5cbiAgICAgIGlmIChhbGxvd2VkU2VsZWN0aW9uLmxlbmd0aCAhPT0gdGhpcy5zZWxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucFNlbGVjdGlvbiA9IFsgLi4uYWxsb3dlZFNlbGVjdGlvbiBdO1xuXG4gICAgICAgIC8vIEFuZCBlbWl0IGFuIGV2ZW50IHNvIGFueSBjb250YWluZXJzIGtub3cgYWJvdXQgdGhlIGNoYW5nZSB0byBzZWxlY3Rpb24uXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInh1aS1jaGVja2JveC1saXN0IGdvdnVrLWNoZWNrYm94ZXMgZ292dWstY2hlY2tib3hlcy0tc21hbGxcIiAqbmdJZj1cImlzRnVuY3Rpb25hbFwiPlxuICA8ZGl2IGNsYXNzPVwic2VsZWN0LWFsbCBnb3Z1ay1jaGVja2JveGVzX19pdGVtXCI+XG4gICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGlkPVwic2VsZWN0X2FsbFwiIGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIiBbY2hlY2tlZF09XCJhbGxTZWxlY3RlZFwiXG4gICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsKClcIiAvPlxuICAgIDxsYWJlbCBmb3I9XCJzZWxlY3RfYWxsXCIgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1jaGVja2JveGVzX19sYWJlbFwiPnt7J1NlbGVjdCBhbGwgLyBEZXNlbGVjdCBhbGwnIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNoZWNrYm94LWl0ZW1zXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pdGVtXCI+XG4gICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2lkXT1cIidzZWxlY3RfJyArIGlcIiBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2lucHV0XCIgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVJdGVtU2VsZWN0aW9uKGl0ZW0pXCIgLz5cbiAgICAgIDxsYWJlbCBbZm9yXT1cIidzZWxlY3RfJyArIGlcIiBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCI+e3tsYWJlbEZ1bmN0aW9uKGl0ZW0pIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,104 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "rpx-xui-translation";
5
+ function ContactDetailsComponent_div_0_h3_1_Template(rf, ctx) { if (rf & 1) {
6
+ i0.ɵɵelementStart(0, "h3", 7);
7
+ i0.ɵɵtext(1);
8
+ i0.ɵɵelementEnd();
9
+ } if (rf & 2) {
10
+ const ctx_r0 = i0.ɵɵnextContext(2);
11
+ i0.ɵɵadvance();
12
+ i0.ɵɵtextInterpolate(ctx_r0.data.title);
13
+ } }
14
+ function ContactDetailsComponent_div_0_p_2_Template(rf, ctx) { if (rf & 1) {
15
+ i0.ɵɵelementStart(0, "p")(1, "span", 8);
16
+ i0.ɵɵtext(2);
17
+ i0.ɵɵelementEnd()();
18
+ } if (rf & 2) {
19
+ const ctx_r0 = i0.ɵɵnextContext(2);
20
+ i0.ɵɵadvance();
21
+ i0.ɵɵproperty("className", "hmcts-badge " + ctx_r0.data.badgeColour);
22
+ i0.ɵɵadvance();
23
+ i0.ɵɵtextInterpolate(ctx_r0.data.badgeText);
24
+ } }
25
+ function ContactDetailsComponent_div_0_div_3_Template(rf, ctx) { if (rf & 1) {
26
+ i0.ɵɵelementStart(0, "div", 9)(1, "span", 10);
27
+ i0.ɵɵtext(2);
28
+ i0.ɵɵpipe(3, "rpxTranslate");
29
+ i0.ɵɵelementEnd();
30
+ i0.ɵɵelementStart(4, "a", 11);
31
+ i0.ɵɵtext(5);
32
+ i0.ɵɵelementEnd()();
33
+ } if (rf & 2) {
34
+ const ctx_r0 = i0.ɵɵnextContext(2);
35
+ i0.ɵɵadvance(2);
36
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(3, 4, "Email:"), " ");
37
+ i0.ɵɵadvance(2);
38
+ i0.ɵɵpropertyInterpolate1("href", "mailto:", ctx_r0.data.email, "", i0.ɵɵsanitizeUrl);
39
+ i0.ɵɵadvance();
40
+ i0.ɵɵtextInterpolate(ctx_r0.data.email);
41
+ } }
42
+ function ContactDetailsComponent_div_0_div_4_Template(rf, ctx) { if (rf & 1) {
43
+ i0.ɵɵelementStart(0, "div", 12)(1, "span", 10);
44
+ i0.ɵɵtext(2);
45
+ i0.ɵɵpipe(3, "rpxTranslate");
46
+ i0.ɵɵelementEnd();
47
+ i0.ɵɵtext(4);
48
+ i0.ɵɵelementEnd();
49
+ } if (rf & 2) {
50
+ const ctx_r0 = i0.ɵɵnextContext(2);
51
+ i0.ɵɵadvance(2);
52
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(3, 2, "Phone:"), " ");
53
+ i0.ɵɵadvance(2);
54
+ i0.ɵɵtextInterpolate(ctx_r0.data.phone);
55
+ } }
56
+ function ContactDetailsComponent_div_0_div_5_Template(rf, ctx) { if (rf & 1) {
57
+ i0.ɵɵelementStart(0, "div", 13)(1, "span", 10);
58
+ i0.ɵɵtext(2);
59
+ i0.ɵɵpipe(3, "rpxTranslate");
60
+ i0.ɵɵelementEnd();
61
+ i0.ɵɵtext(4);
62
+ i0.ɵɵelementEnd();
63
+ } if (rf & 2) {
64
+ const ctx_r0 = i0.ɵɵnextContext(2);
65
+ i0.ɵɵadvance(2);
66
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(3, 2, "Opening times:"), " ");
67
+ i0.ɵɵadvance(2);
68
+ i0.ɵɵtextInterpolate(ctx_r0.data.openingTimes);
69
+ } }
70
+ function ContactDetailsComponent_div_0_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelementStart(0, "div", 1);
72
+ i0.ɵɵtemplate(1, ContactDetailsComponent_div_0_h3_1_Template, 2, 1, "h3", 2)(2, ContactDetailsComponent_div_0_p_2_Template, 3, 2, "p", 3)(3, ContactDetailsComponent_div_0_div_3_Template, 6, 6, "div", 4)(4, ContactDetailsComponent_div_0_div_4_Template, 5, 4, "div", 5)(5, ContactDetailsComponent_div_0_div_5_Template, 5, 4, "div", 6);
73
+ i0.ɵɵelementEnd();
74
+ } if (rf & 2) {
75
+ const ctx_r0 = i0.ɵɵnextContext();
76
+ i0.ɵɵadvance();
77
+ i0.ɵɵproperty("ngIf", ctx_r0.data.title);
78
+ i0.ɵɵadvance();
79
+ i0.ɵɵproperty("ngIf", ctx_r0.data.badgeText);
80
+ i0.ɵɵadvance();
81
+ i0.ɵɵproperty("ngIf", ctx_r0.data.email);
82
+ i0.ɵɵadvance();
83
+ i0.ɵɵproperty("ngIf", ctx_r0.data.phone);
84
+ i0.ɵɵadvance();
85
+ i0.ɵɵproperty("ngIf", ctx_r0.data.openingTimes);
86
+ } }
87
+ export class ContactDetailsComponent {
88
+ constructor() {
89
+ }
90
+ static { this.ɵfac = function ContactDetailsComponent_Factory(t) { return new (t || ContactDetailsComponent)(); }; }
91
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ContactDetailsComponent, selectors: [["xuilib-contact-details"]], inputs: { data: "data" }, decls: 1, vars: 1, consts: [["class", "contact-details", 4, "ngIf"], [1, "contact-details"], ["class", "govuk-heading-m", 4, "ngIf"], [4, "ngIf"], ["class", "email", 4, "ngIf"], ["class", "phone", 4, "ngIf"], ["class", "opening-times", 4, "ngIf"], [1, "govuk-heading-m"], [3, "className"], [1, "email"], [1, "govuk-!-font-weight-bold"], [3, "href"], [1, "phone"], [1, "opening-times"]], template: function ContactDetailsComponent_Template(rf, ctx) { if (rf & 1) {
92
+ i0.ɵɵtemplate(0, ContactDetailsComponent_div_0_Template, 6, 5, "div", 0);
93
+ } if (rf & 2) {
94
+ i0.ɵɵproperty("ngIf", ctx.data);
95
+ } }, dependencies: [i1.NgIf, i2.RpxTranslatePipe], styles: [".contact-details[_ngcontent-%COMP%]{margin-top:30px}.contact-details[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], .contact-details[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin-bottom:10px}"] }); }
96
+ }
97
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContactDetailsComponent, [{
98
+ type: Component,
99
+ args: [{ selector: 'xuilib-contact-details', template: "<div class=\"contact-details\" *ngIf=\"data\">\n <h3 class=\"govuk-heading-m\" *ngIf=\"data.title\">{{ data.title }}</h3>\n <p *ngIf=\"data.badgeText\"><span [className]=\"'hmcts-badge ' + data.badgeColour\">{{ data.badgeText }}</span></p>\n <div class=\"email\" *ngIf=\"data.email\"><span class=\"govuk-!-font-weight-bold\">{{'Email:' | rpxTranslate}} </span> <a href=\"mailto:{{ data.email }}\">{{ data.email }}</a></div>\n <div class=\"phone\" *ngIf=\"data.phone\"><span class=\"govuk-!-font-weight-bold\">{{'Phone:' | rpxTranslate}} </span>{{ data.phone }}</div>\n <div class=\"opening-times\" *ngIf=\"data.openingTimes\"><span class=\"govuk-!-font-weight-bold\">{{'Opening times:' | rpxTranslate }} </span>{{ data.openingTimes}}</div>\n</div>\n\n", styles: [".contact-details{margin-top:30px}.contact-details h3,.contact-details p{margin-bottom:10px}\n"] }]
100
+ }], () => [], { data: [{
101
+ type: Input
102
+ }] }); })();
103
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ContactDetailsComponent, { className: "ContactDetailsComponent", filePath: "lib/components/contact-details/contact-details.component.ts", lineNumber: 9 }); })();
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY29udGFjdC1kZXRhaWxzL2NvbnRhY3QtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NvbnRhY3QtZGV0YWlscy9jb250YWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0lDQy9DLDZCQUErQztJQUFBLFlBQWdCO0lBQUEsaUJBQUs7OztJQUFyQixjQUFnQjtJQUFoQix1Q0FBZ0I7OztJQUNyQyxBQUExQix5QkFBMEIsY0FBc0Q7SUFBQSxZQUFvQjtJQUFPLEFBQVAsaUJBQU8sRUFBSTs7O0lBQS9FLGNBQStDO0lBQS9DLG9FQUErQztJQUFDLGNBQW9CO0lBQXBCLDJDQUFvQjs7O0lBQzlELEFBQXRDLDhCQUFzQyxlQUF1QztJQUFBLFlBQTRCOztJQUFBLGlCQUFPO0lBQUMsNkJBQWtDO0lBQUEsWUFBZ0I7SUFBSSxBQUFKLGlCQUFJLEVBQU07OztJQUFoRyxlQUE0QjtJQUE1Qiw4REFBNEI7SUFBVyxlQUE4QjtJQUE5QixxRkFBOEI7SUFBQyxjQUFnQjtJQUFoQix1Q0FBZ0I7OztJQUM3SCxBQUF0QywrQkFBc0MsZUFBdUM7SUFBQSxZQUE0Qjs7SUFBQSxpQkFBTztJQUFBLFlBQWdCO0lBQUEsaUJBQU07OztJQUF6RCxlQUE0QjtJQUE1Qiw4REFBNEI7SUFBTyxlQUFnQjtJQUFoQix1Q0FBZ0I7OztJQUMzRSxBQUFyRCwrQkFBcUQsZUFBdUM7SUFBQSxZQUFxQzs7SUFBQSxpQkFBTztJQUFBLFlBQXNCO0lBQUEsaUJBQU07OztJQUF4RSxlQUFxQztJQUFyQyxzRUFBcUM7SUFBTyxlQUFzQjtJQUF0Qiw4Q0FBc0I7OztJQUxoSyw4QkFBMEM7SUFLeEMsQUFEQSxBQURBLEFBREEsQUFEQSw0RUFBK0MsNkRBQ3JCLGlFQUNZLGlFQUNBLGlFQUNlO0lBQ3ZELGlCQUFNOzs7SUFMeUIsY0FBZ0I7SUFBaEIsd0NBQWdCO0lBQ3pDLGNBQW9CO0lBQXBCLDRDQUFvQjtJQUNKLGNBQWdCO0lBQWhCLHdDQUFnQjtJQUNoQixjQUFnQjtJQUFoQix3Q0FBZ0I7SUFDUixjQUF1QjtJQUF2QiwrQ0FBdUI7O0FER3JELE1BQU0sT0FBTyx1QkFBdUI7SUFJaEM7SUFDQSxDQUFDO3dGQUxRLHVCQUF1QjtvRUFBdkIsdUJBQXVCO1lDUnBDLHdFQUEwQzs7WUFBWiwrQkFBVTs7O2lGRFEzQix1QkFBdUI7Y0FMbkMsU0FBUzsyQkFDSSx3QkFBd0I7b0JBTWxCLElBQUk7a0JBQW5CLEtBQUs7O2tGQUZHLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRhY3REZXRhaWxzRGF0YU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd4dWlsaWItY29udGFjdC1kZXRhaWxzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29udGFjdC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnY29udGFjdC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29udGFjdERldGFpbHNDb21wb25lbnQge1xuXG4gICAgQElucHV0KCkgcHVibGljIGRhdGE6IENvbnRhY3REZXRhaWxzRGF0YU1vZGVsO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhY3QtZGV0YWlsc1wiICpuZ0lmPVwiZGF0YVwiPlxuICA8aDMgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLW1cIiAqbmdJZj1cImRhdGEudGl0bGVcIj57eyBkYXRhLnRpdGxlIH19PC9oMz5cbiAgPHAgKm5nSWY9XCJkYXRhLmJhZGdlVGV4dFwiPjxzcGFuIFtjbGFzc05hbWVdPVwiJ2htY3RzLWJhZGdlICcgKyBkYXRhLmJhZGdlQ29sb3VyXCI+e3sgZGF0YS5iYWRnZVRleHQgfX08L3NwYW4+PC9wPlxuICA8ZGl2IGNsYXNzPVwiZW1haWxcIiAqbmdJZj1cImRhdGEuZW1haWxcIj48c3BhbiBjbGFzcz1cImdvdnVrLSEtZm9udC13ZWlnaHQtYm9sZFwiPnt7J0VtYWlsOicgfCBycHhUcmFuc2xhdGV9fSA8L3NwYW4+IDxhIGhyZWY9XCJtYWlsdG86e3sgZGF0YS5lbWFpbCB9fVwiPnt7IGRhdGEuZW1haWwgfX08L2E+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwaG9uZVwiICpuZ0lmPVwiZGF0YS5waG9uZVwiPjxzcGFuIGNsYXNzPVwiZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3snUGhvbmU6JyB8IHJweFRyYW5zbGF0ZX19IDwvc3Bhbj57eyBkYXRhLnBob25lIH19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvcGVuaW5nLXRpbWVzXCIgKm5nSWY9XCJkYXRhLm9wZW5pbmdUaW1lc1wiPjxzcGFuIGNsYXNzPVwiZ292dWstIS1mb250LXdlaWdodC1ib2xkXCI+e3snT3BlbmluZyB0aW1lczonIHwgcnB4VHJhbnNsYXRlIH19IDwvc3Bhbj57eyBkYXRhLm9wZW5pbmdUaW1lc319PC9kaXY+XG48L2Rpdj5cblxuIl19
@@ -0,0 +1,151 @@
1
+ import { Component, EventEmitter, Inject, Input, Output } from '@angular/core';
2
+ import { CookieService } from '../../services/cookie/cookie.service';
3
+ import { windowToken } from '../../window';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services/cookie/cookie.service";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@angular/router";
8
+ import * as i4 from "rpx-xui-translation";
9
+ function CookieBannerComponent_div_0_Template(rf, ctx) { if (rf & 1) {
10
+ const _r1 = i0.ɵɵgetCurrentView();
11
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "div", 3)(3, "div", 4)(4, "h2", 5);
12
+ i0.ɵɵtext(5);
13
+ i0.ɵɵpipe(6, "rpxTranslate");
14
+ i0.ɵɵpipe(7, "rpxTranslate");
15
+ i0.ɵɵelementEnd();
16
+ i0.ɵɵelementStart(8, "div", 6)(9, "p");
17
+ i0.ɵɵtext(10);
18
+ i0.ɵɵpipe(11, "rpxTranslate");
19
+ i0.ɵɵelementEnd();
20
+ i0.ɵɵelementStart(12, "p");
21
+ i0.ɵɵtext(13);
22
+ i0.ɵɵpipe(14, "rpxTranslate");
23
+ i0.ɵɵelementEnd()()()();
24
+ i0.ɵɵelementStart(15, "div", 7)(16, "button", 8);
25
+ i0.ɵɵlistener("click", function CookieBannerComponent_div_0_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.acceptCookie()); });
26
+ i0.ɵɵtext(17);
27
+ i0.ɵɵpipe(18, "rpxTranslate");
28
+ i0.ɵɵelementEnd();
29
+ i0.ɵɵelementStart(19, "button", 9);
30
+ i0.ɵɵlistener("click", function CookieBannerComponent_div_0_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.rejectCookie()); });
31
+ i0.ɵɵtext(20);
32
+ i0.ɵɵpipe(21, "rpxTranslate");
33
+ i0.ɵɵelementEnd();
34
+ i0.ɵɵelementStart(22, "a", 10);
35
+ i0.ɵɵtext(23);
36
+ i0.ɵɵpipe(24, "rpxTranslate");
37
+ i0.ɵɵelementEnd()()()();
38
+ } if (rf & 2) {
39
+ const ctx_r1 = i0.ɵɵnextContext();
40
+ i0.ɵɵattributeInterpolate1("aria-label", "'Cookies on ", ctx_r1.appName, "'");
41
+ i0.ɵɵadvance(5);
42
+ i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind1(6, 9, "Cookies on"), " ", i0.ɵɵpipeBind1(7, 11, ctx_r1.appName), "");
43
+ i0.ɵɵadvance(5);
44
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 13, "We use some essential cookies to make this service work."));
45
+ i0.ɵɵadvance(3);
46
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(14, 15, "We'd also like to use analytics cookies so we can understand how you use the service and make improvements."));
47
+ i0.ɵɵadvance(4);
48
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 17, "Accept analytics cookies"), " ");
49
+ i0.ɵɵadvance(3);
50
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 19, "Reject analytics cookies"), " ");
51
+ i0.ɵɵadvance(3);
52
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(24, 21, "View cookies"));
53
+ } }
54
+ export class CookieBannerComponent {
55
+ constructor(cookieService, window) {
56
+ this.cookieService = cookieService;
57
+ this.enableDynatrace = false;
58
+ this.rejectionNotifier = new EventEmitter();
59
+ this.acceptanceNotifier = new EventEmitter();
60
+ this.isCookieBannerVisible = false;
61
+ this.window = window;
62
+ }
63
+ ngOnInit() {
64
+ this.setState();
65
+ }
66
+ acceptCookie() {
67
+ this.cookieService.setCookie(this.identifier, 'true', this.getExpiryDate());
68
+ this.setState(true);
69
+ }
70
+ rejectCookie() {
71
+ this.cookieService.setCookie(this.identifier, 'false', this.getExpiryDate());
72
+ this.setState(true);
73
+ }
74
+ setState(reload = false) {
75
+ this.isCookieBannerVisible = !this.cookieService.checkCookie(this.identifier);
76
+ if (this.areCookiesAccepted()) {
77
+ this.notifyAcceptance();
78
+ }
79
+ else {
80
+ this.notifyRejection();
81
+ }
82
+ if (reload) { // reload if any of the buttons are pressed
83
+ this.window.location.reload();
84
+ }
85
+ }
86
+ areCookiesAccepted() {
87
+ return this.cookieService.checkCookie(this.identifier) && this.cookieService.getCookie(this.identifier) === 'true';
88
+ }
89
+ notifyRejection() {
90
+ this.rejectionNotifier.emit();
91
+ }
92
+ notifyAcceptance() {
93
+ if (this.enableDynatrace) {
94
+ if (this.window.hasOwnProperty('dtrum')) {
95
+ // @ts-ignore
96
+ const dtrum = this.window['dtrum'];
97
+ if (dtrum) {
98
+ try {
99
+ dtrum.enable();
100
+ dtrum.enableSessionReplay(true);
101
+ }
102
+ catch (e) {
103
+ console.error('Error enabling DynaTrace', e);
104
+ }
105
+ }
106
+ else {
107
+ console.info("DynaTrace not enabled on the server");
108
+ }
109
+ }
110
+ else {
111
+ console.info("DynaTrace not enabled on the server");
112
+ }
113
+ }
114
+ else {
115
+ console.info("Dyntrace RUM not enabled via component parameter");
116
+ }
117
+ this.acceptanceNotifier.emit();
118
+ }
119
+ getExpiryDate() {
120
+ const now = new Date();
121
+ const time = now.getTime();
122
+ const expireTime = time + 31536000000; // in 365 days = 3600 * 1000 * 24 * 365
123
+ now.setTime(expireTime);
124
+ return now.toUTCString();
125
+ }
126
+ static { this.ɵfac = function CookieBannerComponent_Factory(t) { return new (t || CookieBannerComponent)(i0.ɵɵdirectiveInject(i1.CookieService), i0.ɵɵdirectiveInject(windowToken)); }; }
127
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CookieBannerComponent, selectors: [["xuilib-cookie-banner"]], inputs: { identifier: "identifier", appName: "appName", enableDynatrace: "enableDynatrace" }, outputs: { rejectionNotifier: "rejectionNotifier", acceptanceNotifier: "acceptanceNotifier" }, decls: 1, vars: 1, consts: [["class", "govuk-cookie-banner ", "role", "region", 4, "ngIf"], ["role", "region", 1, "govuk-cookie-banner"], [1, "govuk-cookie-banner__message", "govuk-width-container"], [1, "govuk-grid-row"], [1, "govuk-grid-column-two-thirds"], [1, "govuk-cookie-banner__heading", "govuk-heading-m"], [1, "govuk-cookie-banner__content"], [1, "govuk-button-group"], ["value", "accept", "type", "button", "name", "cookies", "data-module", "govuk-button", 1, "govuk-button", 3, "click"], ["value", "reject", "type", "button", "name", "cookies", "data-module", "govuk-button", 1, "govuk-button", 3, "click"], ["routerLink", "/cookies", 1, "govuk-link"]], template: function CookieBannerComponent_Template(rf, ctx) { if (rf & 1) {
128
+ i0.ɵɵtemplate(0, CookieBannerComponent_div_0_Template, 25, 23, "div", 0);
129
+ } if (rf & 2) {
130
+ i0.ɵɵproperty("ngIf", ctx.isCookieBannerVisible);
131
+ } }, dependencies: [i2.NgIf, i3.RouterLink, i4.RpxTranslatePipe], encapsulation: 2 }); }
132
+ }
133
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CookieBannerComponent, [{
134
+ type: Component,
135
+ args: [{ selector: 'xuilib-cookie-banner', 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' | rpxTranslate}} {{appName | rpxTranslate}}</h2>\n\n <div class=\"govuk-cookie-banner__content\">\n <p>{{'We use some essential cookies to make this service work.' | rpxTranslate}}</p>\n <p>{{'We\\'d also like to use analytics cookies so we can understand how you use the service and make improvements.' | rpxTranslate}}</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' | rpxTranslate}}\n </button>\n <button value=\"reject\" type=\"button\" name=\"cookies\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"rejectCookie()\">\n {{'Reject analytics cookies' | rpxTranslate}}\n </button>\n <a class=\"govuk-link\" routerLink=\"/cookies\">{{'View cookies' | rpxTranslate}}</a>\n </div>\n </div>\n</div>\n" }]
136
+ }], () => [{ type: i1.CookieService }, { type: undefined, decorators: [{
137
+ type: Inject,
138
+ args: [windowToken]
139
+ }] }], { identifier: [{
140
+ type: Input
141
+ }], appName: [{
142
+ type: Input
143
+ }], enableDynatrace: [{
144
+ type: Input
145
+ }], rejectionNotifier: [{
146
+ type: Output
147
+ }], acceptanceNotifier: [{
148
+ type: Output
149
+ }] }); })();
150
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CookieBannerComponent, { className: "CookieBannerComponent", filePath: "lib/components/cookie-banner/cookie-banner.component.ts", lineNumber: 10 }); })();
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWJhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nvb2tpZS1iYW5uZXIvY29va2llLWJhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7SUNHbkMsQUFERixBQURGLEFBRkYsQUFERiw4QkFBeUgsYUFDdkQsYUFFbEMsYUFDZ0IsWUFDaUI7SUFBQSxZQUEwRDs7O0lBQUEsaUJBQUs7SUFHdEgsQUFERiw4QkFBMEMsUUFDckM7SUFBQSxhQUE2RTs7SUFBQSxpQkFBSTtJQUNwRiwwQkFBRztJQUFBLGFBQWlJOztJQUcxSSxBQURFLEFBREUsQUFEc0ksaUJBQUksRUFDcEksRUFDRixFQUNGO0lBR0osQUFERiwrQkFBZ0MsaUJBQytGO0lBQXpCLGtMQUFTLHFCQUFjLEtBQUM7SUFDMUgsYUFDRjs7SUFBQSxpQkFBUztJQUNULGtDQUE2SDtJQUF6QixrTEFBUyxxQkFBYyxLQUFDO0lBQzFILGFBQ0Y7O0lBQUEsaUJBQVM7SUFDVCw4QkFBNEM7SUFBQSxhQUFpQzs7SUFHbkYsQUFERSxBQURFLEFBRCtFLGlCQUFJLEVBQzdFLEVBQ0YsRUFDRjs7O0lBeEIwQyw2RUFBMEM7SUFLekIsZUFBMEQ7SUFBMUQsNkdBQTBEO0lBRzlHLGVBQTZFO0lBQTdFLHdHQUE2RTtJQUM3RSxlQUFpSTtJQUFqSSwySkFBaUk7SUFPdEksZUFDRjtJQURFLG1GQUNGO0lBRUUsZUFDRjtJQURFLG1GQUNGO0lBQzRDLGVBQWlDO0lBQWpDLDREQUFpQzs7QURabkYsTUFBTSxPQUFPLHFCQUFxQjtJQVVoQyxZQUNtQixhQUE0QixFQUN4QixNQUFXO1FBRGYsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFSL0Isb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDaEMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUM1Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXZELDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQU81QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxTQUFrQixLQUFLO1FBQ3JDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5RSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQywyQ0FBMkM7WUFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLE1BQU0sQ0FBQztJQUNySCxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLGFBQWE7Z0JBQ2IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUM7d0JBQ0gsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNmLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbEMsQ0FBQztvQkFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO3dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQy9DLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQztnQkFDdEQsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7WUFDdEQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLGFBQWE7UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFFLHdDQUF3QztRQUNoRixHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7c0ZBbkZVLHFCQUFxQiwrREFZdEIsV0FBVztvRUFaVixxQkFBcUI7WUNUbEMsd0VBQXlIOztZQUE3QixnREFBMkI7OztpRkRTMUcscUJBQXFCO2NBTGpDLFNBQVM7MkJBQ0ksc0JBQXNCOztzQkFnQi9CLE1BQU07dUJBQUMsV0FBVztxQkFYTCxVQUFVO2tCQUF6QixLQUFLO1lBQ1UsT0FBTztrQkFBdEIsS0FBSztZQUNVLGVBQWU7a0JBQTlCLEtBQUs7WUFDVyxpQkFBaUI7a0JBQWpDLE1BQU07WUFDVSxrQkFBa0I7a0JBQWxDLE1BQU07O2tGQUxJLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Nvb2tpZS9jb29raWUuc2VydmljZSc7XG5pbXBvcnQgeyB3aW5kb3dUb2tlbiB9IGZyb20gJy4uLy4uL3dpbmRvdyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAneHVpbGliLWNvb2tpZS1iYW5uZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb29raWUtYmFubmVyLmNvbXBvbmVudC5odG1sJ1xufSlcblxuZXhwb3J0IGNsYXNzIENvb2tpZUJhbm5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBlbmFibGVEeW5hdHJhY2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZWplY3Rpb25Ob3RpZmllciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgcHVibGljIGFjY2VwdGFuY2VOb3RpZmllciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHB1YmxpYyBpc0Nvb2tpZUJhbm5lclZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHJlYWRvbmx5IHdpbmRvdzogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29va2llU2VydmljZTogQ29va2llU2VydmljZSxcbiAgICBASW5qZWN0KHdpbmRvd1Rva2VuKSB3aW5kb3c6IGFueSxcbiAgKSB7XG4gICAgdGhpcy53aW5kb3cgPSB3aW5kb3c7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTdGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIGFjY2VwdENvb2tpZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0Q29va2llKHRoaXMuaWRlbnRpZmllciwgJ3RydWUnLCB0aGlzLmdldEV4cGlyeURhdGUoKSk7XG4gICAgdGhpcy5zZXRTdGF0ZSh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyByZWplY3RDb29raWUoKTogdm9pZCB7XG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldENvb2tpZSh0aGlzLmlkZW50aWZpZXIsICdmYWxzZScsIHRoaXMuZ2V0RXhwaXJ5RGF0ZSgpKTtcbiAgICB0aGlzLnNldFN0YXRlKHRydWUpO1xuICB9XG5cbiAgcHVibGljIHNldFN0YXRlKHJlbG9hZDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5pc0Nvb2tpZUJhbm5lclZpc2libGUgPSAhdGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrQ29va2llKHRoaXMuaWRlbnRpZmllcik7XG5cbiAgICBpZiAodGhpcy5hcmVDb29raWVzQWNjZXB0ZWQoKSkge1xuICAgICAgdGhpcy5ub3RpZnlBY2NlcHRhbmNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZ5UmVqZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKHJlbG9hZCkgeyAvLyByZWxvYWQgaWYgYW55IG9mIHRoZSBidXR0b25zIGFyZSBwcmVzc2VkXG4gICAgICB0aGlzLndpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXJlQ29va2llc0FjY2VwdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvb2tpZVNlcnZpY2UuY2hlY2tDb29raWUodGhpcy5pZGVudGlmaWVyKSAmJiB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0Q29va2llKHRoaXMuaWRlbnRpZmllcikgPT09ICd0cnVlJztcbiAgfVxuXG4gIHB1YmxpYyBub3RpZnlSZWplY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5yZWplY3Rpb25Ob3RpZmllci5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgbm90aWZ5QWNjZXB0YW5jZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbmFibGVEeW5hdHJhY2UpIHtcbiAgICAgIGlmICh0aGlzLndpbmRvdy5oYXNPd25Qcm9wZXJ0eSgnZHRydW0nKSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNvbnN0IGR0cnVtID0gdGhpcy53aW5kb3dbJ2R0cnVtJ107XG4gICAgICAgIGlmIChkdHJ1bSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkdHJ1bS5lbmFibGUoKTtcbiAgICAgICAgICAgIGR0cnVtLmVuYWJsZVNlc3Npb25SZXBsYXkodHJ1ZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZW5hYmxpbmcgRHluYVRyYWNlJywgZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuaW5mbyhcIkR5bmFUcmFjZSBub3QgZW5hYmxlZCBvbiB0aGUgc2VydmVyXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmluZm8oXCJEeW5hVHJhY2Ugbm90IGVuYWJsZWQgb24gdGhlIHNlcnZlclwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5pbmZvKFwiRHludHJhY2UgUlVNIG5vdCBlbmFibGVkIHZpYSBjb21wb25lbnQgcGFyYW1ldGVyXCIpO1xuICAgIH1cbiAgICB0aGlzLmFjY2VwdGFuY2VOb3RpZmllci5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4cGlyeURhdGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHRpbWUgPSBub3cuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGV4cGlyZVRpbWUgPSB0aW1lICsgMzE1MzYwMDAwMDA7ICAvLyAgaW4gMzY1IGRheXMgPSAzNjAwICogMTAwMCAqIDI0ICogMzY1XG4gICAgbm93LnNldFRpbWUoZXhwaXJlVGltZSk7XG4gICAgcmV0dXJuIG5vdy50b1VUQ1N0cmluZygpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJnb3Z1ay1jb29raWUtYmFubmVyIFwiIHJvbGU9XCJyZWdpb25cIiBhdHRyLmFyaWEtbGFiZWw9XCInQ29va2llcyBvbiB7e2FwcE5hbWV9fSdcIiAqbmdJZj1cImlzQ29va2llQmFubmVyVmlzaWJsZVwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstY29va2llLWJhbm5lcl9fbWVzc2FnZSBnb3Z1ay13aWR0aC1jb250YWluZXJcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHNcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiZ292dWstY29va2llLWJhbm5lcl9faGVhZGluZyBnb3Z1ay1oZWFkaW5nLW1cIj57eydDb29raWVzIG9uJyB8IHJweFRyYW5zbGF0ZX19IHt7YXBwTmFtZSB8IHJweFRyYW5zbGF0ZX19PC9oMj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY29va2llLWJhbm5lcl9fY29udGVudFwiPlxuICAgICAgICAgIDxwPnt7J1dlIHVzZSBzb21lIGVzc2VudGlhbCBjb29raWVzIHRvIG1ha2UgdGhpcyBzZXJ2aWNlIHdvcmsuJyB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICAgICAgICAgIDxwPnt7J1dlXFwnZCBhbHNvIGxpa2UgdG8gdXNlIGFuYWx5dGljcyBjb29raWVzIHNvIHdlIGNhbiB1bmRlcnN0YW5kIGhvdyB5b3UgdXNlIHRoZSBzZXJ2aWNlIGFuZCBtYWtlIGltcHJvdmVtZW50cy4nIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstYnV0dG9uLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIHZhbHVlPVwiYWNjZXB0XCIgdHlwZT1cImJ1dHRvblwiIG5hbWU9XCJjb29raWVzXCIgY2xhc3M9XCJnb3Z1ay1idXR0b25cIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiIChjbGljayk9XCJhY2NlcHRDb29raWUoKVwiPlxuICAgICAgICB7eydBY2NlcHQgYW5hbHl0aWNzIGNvb2tpZXMnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB2YWx1ZT1cInJlamVjdFwiIHR5cGU9XCJidXR0b25cIiBuYW1lPVwiY29va2llc1wiIGNsYXNzPVwiZ292dWstYnV0dG9uXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIiAoY2xpY2spPVwicmVqZWN0Q29va2llKClcIj5cbiAgICAgICAge3snUmVqZWN0IGFuYWx5dGljcyBjb29raWVzJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxhIGNsYXNzPVwiZ292dWstbGlua1wiIHJvdXRlckxpbms9XCIvY29va2llc1wiPnt7J1ZpZXcgY29va2llcycgfCBycHhUcmFuc2xhdGV9fTwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==