@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,237 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { iif, of } from 'rxjs';
4
+ import { debounceTime, map, switchMap, tap } from 'rxjs/operators';
5
+ import { BookingCheckType } from '../../models';
6
+ import { LocationService } from '../../services/locations/location.service';
7
+ import { RefDataService } from '../../services/ref-data';
8
+ import { SessionStorageService } from '../../services/storage/session-storage/session-storage.service';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../../services/locations/location.service";
11
+ import * as i2 from "../../services/storage/session-storage/session-storage.service";
12
+ import * as i3 from "../../services/ref-data";
13
+ import * as i4 from "@angular/common";
14
+ import * as i5 from "@angular/forms";
15
+ import * as i6 from "@angular/material/legacy-autocomplete";
16
+ import * as i7 from "@angular/material/legacy-core";
17
+ import * as i8 from "rpx-xui-translation";
18
+ function SearchLocationComponent_ng_container_5_ng_container_1_mat_option_1_Template(rf, ctx) { if (rf & 1) {
19
+ const _r2 = i0.ɵɵgetCurrentView();
20
+ i0.ɵɵelementStart(0, "mat-option", 7);
21
+ i0.ɵɵlistener("onSelectionChange", function SearchLocationComponent_ng_container_5_ng_container_1_mat_option_1_Template_mat_option_onSelectionChange_0_listener() { const location_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.onSelectedLocation(location_r3)); });
22
+ i0.ɵɵtext(1);
23
+ i0.ɵɵelementEnd();
24
+ } if (rf & 2) {
25
+ const location_r3 = ctx.$implicit;
26
+ const ctx_r3 = i0.ɵɵnextContext(3);
27
+ i0.ɵɵadvance();
28
+ i0.ɵɵtextInterpolate1(" ", location_r3[ctx_r3.propertyNameFilter], " ");
29
+ } }
30
+ function SearchLocationComponent_ng_container_5_ng_container_1_mat_option_2_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelementStart(0, "mat-option");
32
+ i0.ɵɵtext(1);
33
+ i0.ɵɵpipe(2, "rpxTranslate");
34
+ i0.ɵɵelementEnd();
35
+ } if (rf & 2) {
36
+ i0.ɵɵadvance();
37
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "No results found"));
38
+ } }
39
+ function SearchLocationComponent_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
40
+ i0.ɵɵelementContainerStart(0);
41
+ i0.ɵɵtemplate(1, SearchLocationComponent_ng_container_5_ng_container_1_mat_option_1_Template, 2, 1, "mat-option", 6)(2, SearchLocationComponent_ng_container_5_ng_container_1_mat_option_2_Template, 3, 3, "mat-option", 5);
42
+ i0.ɵɵelementContainerEnd();
43
+ } if (rf & 2) {
44
+ const filteredList_r5 = i0.ɵɵnextContext().ngIf;
45
+ i0.ɵɵadvance();
46
+ i0.ɵɵproperty("ngForOf", filteredList_r5);
47
+ i0.ɵɵadvance();
48
+ i0.ɵɵproperty("ngIf", filteredList_r5.length === 0);
49
+ } }
50
+ function SearchLocationComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵelementContainerStart(0);
52
+ i0.ɵɵtemplate(1, SearchLocationComponent_ng_container_5_ng_container_1_Template, 3, 2, "ng-container", 5);
53
+ i0.ɵɵelementContainerEnd();
54
+ } if (rf & 2) {
55
+ const filteredList_r5 = ctx.ngIf;
56
+ i0.ɵɵadvance();
57
+ i0.ɵɵproperty("ngIf", filteredList_r5 && filteredList_r5.length >= 0);
58
+ } }
59
+ export class SearchLocationComponent {
60
+ static { this.allLocationAPI = `api/locations/getLocations`; }
61
+ get reset() {
62
+ return this.pReset;
63
+ }
64
+ set reset(value) {
65
+ this.pReset = value;
66
+ this.resetSearchTerm();
67
+ }
68
+ constructor(locationService, sessionStorageService, refDataService) {
69
+ this.locationService = locationService;
70
+ this.sessionStorageService = sessionStorageService;
71
+ this.refDataService = refDataService;
72
+ this.disabled = null;
73
+ this.singleMode = false;
74
+ this.locationType = '';
75
+ this.serviceIds = '';
76
+ this.submitted = true;
77
+ this.selectedLocations = [];
78
+ this.propertyNameFilter = 'site_name';
79
+ this.delay = 500;
80
+ this.locationSelected = new EventEmitter();
81
+ this.locationTermSearchInputChanged = new EventEmitter();
82
+ this.searchLocationChanged = new EventEmitter();
83
+ this.searchTermFormControl = new FormControl('');
84
+ this.minSearchCharacters = 3;
85
+ this.term = '';
86
+ this.pReset = true;
87
+ this.debounceTimeInput = 300;
88
+ this.previousValue = '';
89
+ }
90
+ ngOnInit() {
91
+ const searchInputChanges$ = this.searchTermFormControl.valueChanges
92
+ .pipe(tap((term) => this.locationTermSearchInputChanged.emit(term)));
93
+ // if servicesField exists, then we should filter locations by the service codes
94
+ if (this.field && this.field.servicesField) {
95
+ this.filteredList$ = searchInputChanges$.pipe(switchMap((term) => iif(
96
+ // Seems more responsive to do length 0 if locationsByServiceCodes are cached
97
+ () => (!!term && term.length >= 0), this.refDataService.getLocationsByServiceCodes((this.form.get(this.field.servicesField)?.value).map((service) => service.key)).pipe(
98
+ // Filter locations by the search input term and the chosen property name
99
+ map((locations) => locations
100
+ .filter((location) => location[this.propertyNameFilter].toLowerCase().includes(term.toLowerCase()))),
101
+ // Filter out locations that are already selected
102
+ map((locations) => this.filterUnselectedLocations(locations, this.selectedLocations, this.singleMode)),
103
+ // Filter out duplicate locations (by propertyNameFilter)
104
+ map((locations) => locations.filter((location, index, array) => index === array.findIndex((item) => item[this.propertyNameFilter] === location[this.propertyNameFilter])))),
105
+ // Returns false if the search term is empty to not show the autocomplete field i.e. ngIf should be false
106
+ of(false))));
107
+ }
108
+ else {
109
+ this.filteredList$ = searchInputChanges$.pipe(
110
+ // Debounce needed to prevent multiple API calls being made
111
+ debounceTime(this.debounceTimeInput), switchMap((term) => iif(() => (!!term && term.length >= this.minSearchCharacters), this.getLocations(term).pipe(map((locations) => this.filterUnselectedLocations(locations, this.selectedLocations, this.singleMode))), of(false))));
112
+ }
113
+ if (this.singleMode && this.selectedLocations.length > 0) {
114
+ const location = this.selectedLocations[0];
115
+ this.searchTermFormControl.patchValue(location[this.propertyNameFilter], { emitEvent: false, onlySelf: true });
116
+ }
117
+ }
118
+ onSelectedLocation(location) {
119
+ this.searchTermFormControl.patchValue(location[this.propertyNameFilter], { emitEvent: false, onlySelf: true });
120
+ this.locationSelected.emit(location);
121
+ }
122
+ onInput() {
123
+ this.searchLocationChanged.emit();
124
+ }
125
+ getLocations(term) {
126
+ let userLocations;
127
+ // Booking type info - can create more
128
+ // NO_CHECK - All work - Do not filter out locations - Default assumption
129
+ // BOOKINGS_AND_BASE - My work - Try to only show base locations/regions
130
+ // POSSIBLE_BOOKINGS - Create booking screen - Show only potential bookings
131
+ if (this.bookingCheck === BookingCheckType.BOOKINGS_AND_BASE) {
132
+ userLocations = JSON.parse(this.sessionStorageService.getItem('userLocations'));
133
+ }
134
+ else if (this.bookingCheck === BookingCheckType.POSSIBLE_BOOKINGS) {
135
+ this.serviceIds = this.serviceIds && this.serviceIds.length ? this.serviceIds : JSON.parse(this.sessionStorageService.getItem('bookableServices'));
136
+ userLocations = JSON.parse(this.sessionStorageService.getItem('bookableUserLocations'));
137
+ }
138
+ // get all locations will resolve filter setting using objects above
139
+ // if no userLocations, NO_CHECK
140
+ // if just getting all substantive user locations, BOOKINGS_AND_BASE
141
+ // fee paid user locations are used for POSSIBLE_BOOKINGS
142
+ return this.locationService.getAllLocations(SearchLocationComponent.allLocationAPI, this.serviceIds, this.locationType, term, userLocations);
143
+ }
144
+ resetSearchTerm() {
145
+ this.searchTermFormControl.setValue('');
146
+ }
147
+ filterUnselectedLocations(locations, selectedLocations, singleMode) {
148
+ if (singleMode) {
149
+ return locations;
150
+ }
151
+ return locations.filter(location => !selectedLocations.map(selectedLocation => selectedLocation.epimms_id).includes(location.epimms_id) && location[this.propertyNameFilter]);
152
+ }
153
+ removeInvalidString(formInputValue) {
154
+ if (!this.isCharacterValid(formInputValue)) {
155
+ formInputValue.preventDefault();
156
+ }
157
+ }
158
+ isCharacterValid(event) {
159
+ let pressed = undefined;
160
+ if (event.key !== undefined) {
161
+ pressed = event.key;
162
+ if (pressed.length > 1) {
163
+ switch (pressed) {
164
+ case 'Tab':
165
+ return true;
166
+ case 'ArrowRight':
167
+ return true;
168
+ case 'ArrowLeft':
169
+ return true;
170
+ case 'Backspace':
171
+ return true;
172
+ case 'Enter':
173
+ return true;
174
+ default: return false;
175
+ }
176
+ }
177
+ }
178
+ else if (event.keyCode !== undefined) {
179
+ pressed = String.fromCharCode(event.keyCode);
180
+ }
181
+ return pressed && (/[a-zA-Z \s'-]/).test(pressed);
182
+ }
183
+ static { this.ɵfac = function SearchLocationComponent_Factory(t) { return new (t || SearchLocationComponent)(i0.ɵɵdirectiveInject(i1.LocationService), i0.ɵɵdirectiveInject(i2.SessionStorageService), i0.ɵɵdirectiveInject(i3.RefDataService)); }; }
184
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchLocationComponent, selectors: [["exui-search-location"]], inputs: { form: "form", field: "field", disabled: "disabled", singleMode: "singleMode", locationType: "locationType", serviceIds: "serviceIds", submitted: "submitted", bookingCheck: "bookingCheck", selectedLocations: "selectedLocations", propertyNameFilter: "propertyNameFilter", delay: "delay", reset: "reset" }, outputs: { locationSelected: "locationSelected", locationTermSearchInputChanged: "locationTermSearchInputChanged", searchLocationChanged: "searchLocationChanged" }, decls: 7, vars: 6, consts: [["char", ""], ["autoSearchLocation", "matAutocomplete"], [1, "auto-complete-container"], ["id", "inputLocationSearch", 1, "govuk-input", 3, "keydown", "input", "formControl", "matAutocomplete"], ["autoActiveFirstOption", "", 1, "mat-autocomplete-panel-extend"], [4, "ngIf"], [3, "onSelectionChange", 4, "ngFor", "ngForOf"], [3, "onSelectionChange"]], template: function SearchLocationComponent_Template(rf, ctx) { if (rf & 1) {
185
+ const _r1 = i0.ɵɵgetCurrentView();
186
+ i0.ɵɵelementStart(0, "div", 2)(1, "input", 3, 0);
187
+ i0.ɵɵlistener("keydown", function SearchLocationComponent_Template_input_keydown_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.removeInvalidString($event)); })("input", function SearchLocationComponent_Template_input_input_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onInput()); });
188
+ i0.ɵɵelementEnd();
189
+ i0.ɵɵelementStart(3, "mat-autocomplete", 4, 1);
190
+ i0.ɵɵtemplate(5, SearchLocationComponent_ng_container_5_Template, 2, 1, "ng-container", 5);
191
+ i0.ɵɵpipe(6, "async");
192
+ i0.ɵɵelementEnd()();
193
+ } if (rf & 2) {
194
+ const autoSearchLocation_r6 = i0.ɵɵreference(4);
195
+ i0.ɵɵadvance();
196
+ i0.ɵɵproperty("formControl", ctx.searchTermFormControl)("matAutocomplete", autoSearchLocation_r6);
197
+ i0.ɵɵattribute("disabled", ctx.disabled);
198
+ i0.ɵɵadvance(4);
199
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 4, ctx.filteredList$));
200
+ } }, dependencies: [i4.NgForOf, i4.NgIf, i5.DefaultValueAccessor, i5.NgControlStatus, i5.FormControlDirective, i6.MatLegacyAutocomplete, i6.MatLegacyAutocompleteTrigger, i7.MatLegacyOption, i4.AsyncPipe, i8.RpxTranslatePipe], styles: [".autocomplete__input--show-all-values[_ngcontent-%COMP%]{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down[_ngcontent-%COMP%]{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu[_ngcontent-%COMP%]{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:calc(100% - 4px)}.autocomplete__menu--visible[_ngcontent-%COMP%]{display:block}.autocomplete__menu--hidden[_ngcontent-%COMP%]{display:none}.autocomplete__menu--overlay[_ngcontent-%COMP%]{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline[_ngcontent-%COMP%]{position:relative}.autocomplete__option[_ngcontent-%COMP%]{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{pointer-events:none}.autocomplete__option[_ngcontent-%COMP%]:first-of-type{border-top-width:0}.autocomplete__option[_ngcontent-%COMP%]:last-of-type{border-bottom-width:0}.autocomplete__option--odd[_ngcontent-%COMP%]{background-color:#fafafa}.autocomplete__option--focused[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results[_ngcontent-%COMP%]{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.25}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{padding:5px}@media (min-width: 641px){.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.31579}}.div-action[_ngcontent-%COMP%]{display:inline-block}.add-location[_ngcontent-%COMP%]{display:inline}.remove-location-button[_ngcontent-%COMP%]{margin:5px}.hide-autocomplete[_ngcontent-%COMP%]{display:none}.auto-complete-container[_ngcontent-%COMP%]{display:inline-block;margin-right:4px;width:calc(100% - 4px)}.autocomplete__input[_ngcontent-%COMP%]{line-height:24px;font-size:19px}"] }); }
201
+ }
202
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchLocationComponent, [{
203
+ type: Component,
204
+ args: [{ selector: 'exui-search-location', template: "<div class=\"auto-complete-container\">\n <input\n id=\"inputLocationSearch\"\n #char\n (keydown)=\"removeInvalidString($event)\"\n (input)=\"onInput()\"\n [formControl]=\"searchTermFormControl\"\n [matAutocomplete]=\"autoSearchLocation\"\n class=\"govuk-input\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchLocation=\"matAutocomplete\">\n <ng-container *ngIf=\"filteredList$ | async as filteredList\">\n <ng-container *ngIf=\"filteredList && filteredList.length >= 0\">\n <mat-option *ngFor=\"let location of filteredList\" (onSelectionChange)=\"onSelectedLocation(location)\">\n {{ location[propertyNameFilter] }}\n </mat-option>\n <mat-option *ngIf=\"filteredList.length === 0\">{{'No results found' | rpxTranslate}}</mat-option>\n </ng-container>\n </ng-container>\n </mat-autocomplete>\n</div>\n", styles: [".autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width: 641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.31579}}.div-action{display:inline-block}.add-location{display:inline}.remove-location-button{margin:5px}.hide-autocomplete{display:none}.auto-complete-container{display:inline-block;margin-right:4px;width:calc(100% - 4px)}.autocomplete__input{line-height:24px;font-size:19px}\n"] }]
205
+ }], () => [{ type: i1.LocationService }, { type: i2.SessionStorageService }, { type: i3.RefDataService }], { form: [{
206
+ type: Input
207
+ }], field: [{
208
+ type: Input
209
+ }], disabled: [{
210
+ type: Input
211
+ }], singleMode: [{
212
+ type: Input
213
+ }], locationType: [{
214
+ type: Input
215
+ }], serviceIds: [{
216
+ type: Input
217
+ }], submitted: [{
218
+ type: Input
219
+ }], bookingCheck: [{
220
+ type: Input
221
+ }], selectedLocations: [{
222
+ type: Input
223
+ }], propertyNameFilter: [{
224
+ type: Input
225
+ }], delay: [{
226
+ type: Input
227
+ }], locationSelected: [{
228
+ type: Output
229
+ }], locationTermSearchInputChanged: [{
230
+ type: Output
231
+ }], searchLocationChanged: [{
232
+ type: Output
233
+ }], reset: [{
234
+ type: Input
235
+ }] }); })();
236
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchLocationComponent, { className: "SearchLocationComponent", filePath: "lib/components/search-location/search-location.component.ts", lineNumber: 20 }); })();
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWxvY2F0aW9uL3NlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1sb2NhdGlvbi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBSWpCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7Ozs7Ozs7Ozs7OztJQ0MvRixxQ0FBcUc7SUFBbkQsbVJBQXFCLHNDQUE0QixLQUFDO0lBQ2xHLFlBQ0Y7SUFBQSxpQkFBYTs7OztJQURYLGNBQ0Y7SUFERSx1RUFDRjs7O0lBQ0Esa0NBQThDO0lBQUEsWUFBcUM7O0lBQUEsaUJBQWE7O0lBQWxELGNBQXFDO0lBQXJDLDhEQUFx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QzlCLGFBQVMsS0FBQztZQUpyQixpQkFRNkI7WUFDN0IsOENBQW9IO1lBQ2xILDBGQUE0RDs7WUFTaEUsQUFERSxpQkFBbUIsRUFDZjs7O1lBZEYsY0FBcUM7WUFDckMsQUFEQSx1REFBcUMsMENBQ0M7O1lBSXZCLGVBQTRCO1lBQTVCLDhEQUE0Qjs7O2lGRFFsQyx1QkFBdUI7Y0FMbkMsU0FBUzsyQkFDRSxzQkFBc0I7aUhBTWhCLElBQUk7a0JBQW5CLEtBQUs7WUFDVSxLQUFLO2tCQUFwQixLQUFLO1lBQ1UsUUFBUTtrQkFBdkIsS0FBSztZQUNVLFVBQVU7a0JBQXpCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBQ1UsVUFBVTtrQkFBekIsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxZQUFZO2tCQUEzQixLQUFLO1lBQ1UsaUJBQWlCO2tCQUFoQyxLQUFLO1lBQ1Usa0JBQWtCO2tCQUFqQyxLQUFLO1lBQ1UsS0FBSztrQkFBcEIsS0FBSztZQUNXLGdCQUFnQjtrQkFBaEMsTUFBTTtZQUNVLDhCQUE4QjtrQkFBOUMsTUFBTTtZQUNVLHFCQUFxQjtrQkFBckMsTUFBTTtZQWNJLEtBQUs7a0JBRGYsS0FBSzs7a0ZBNUJLLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpaWYsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBCb29raW5nQ2hlY2tUeXBlLCBGaWx0ZXJDb25maWdPcHRpb24sXG4gIEZpbHRlckZpZWxkQ29uZmlnLFxuICBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwsXG4gIExvY2F0aW9uc0J5U2VydmljZVxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgTG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYXRpb25zL2xvY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZWYtZGF0YSc7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlL3Nlc3Npb24tc3RvcmFnZS9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V4dWktc2VhcmNoLWxvY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaExvY2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgYWxsTG9jYXRpb25BUEkgPSBgYXBpL2xvY2F0aW9ucy9nZXRMb2NhdGlvbnNgO1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgZmllbGQ6IEZpbHRlckZpZWxkQ29uZmlnO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgc2luZ2xlTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgbG9jYXRpb25UeXBlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2VJZHM6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgc3VibWl0dGVkPzogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBib29raW5nQ2hlY2s6IEJvb2tpbmdDaGVja1R5cGU7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZExvY2F0aW9uczogTG9jYXRpb25CeUVQSU1NU01vZGVsW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIHByb3BlcnR5TmFtZUZpbHRlcjoga2V5b2YgTG9jYXRpb25CeUVQSU1NU01vZGVsID0gJ3NpdGVfbmFtZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkZWxheT86IG51bWJlciA9IDUwMDtcbiAgQE91dHB1dCgpIHB1YmxpYyBsb2NhdGlvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxMb2NhdGlvbkJ5RVBJTU1TTW9kZWw+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgbG9jYXRpb25UZXJtU2VhcmNoSW5wdXRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHNlYXJjaExvY2F0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBwdWJsaWMgc2VhcmNoVGVybUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IG1pblNlYXJjaENoYXJhY3RlcnMgPSAzO1xuICBwdWJsaWMgdGVybTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgcFJlc2V0OiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGZpbHRlcmVkTGlzdCQ6IE9ic2VydmFibGU8TG9jYXRpb25CeUVQSU1NU01vZGVsW10gfCBib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZVRpbWVJbnB1dCA9IDMwMDtcbiAgcHVibGljIHByZXZpb3VzVmFsdWUgPSAnJztcblxuICBwdWJsaWMgZ2V0IHJlc2V0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBSZXNldDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcmVzZXQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnBSZXNldCA9IHZhbHVlO1xuICAgIHRoaXMucmVzZXRTZWFyY2hUZXJtKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uU2VydmljZTogTG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWZEYXRhU2VydmljZTogUmVmRGF0YVNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VhcmNoSW5wdXRDaGFuZ2VzJCA9IHRoaXMuc2VhcmNoVGVybUZvcm1Db250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgodGVybSkgPT4gdGhpcy5sb2NhdGlvblRlcm1TZWFyY2hJbnB1dENoYW5nZWQuZW1pdCh0ZXJtKSlcbiAgICAgICk7XG5cbiAgICAvLyBpZiBzZXJ2aWNlc0ZpZWxkIGV4aXN0cywgdGhlbiB3ZSBzaG91bGQgZmlsdGVyIGxvY2F0aW9ucyBieSB0aGUgc2VydmljZSBjb2Rlc1xuICAgIGlmICh0aGlzLmZpZWxkICYmIHRoaXMuZmllbGQuc2VydmljZXNGaWVsZCkge1xuICAgICAgdGhpcy5maWx0ZXJlZExpc3QkID0gc2VhcmNoSW5wdXRDaGFuZ2VzJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHRlcm06IHN0cmluZykgPT4gaWlmKFxuICAgICAgICAgIC8vIFNlZW1zIG1vcmUgcmVzcG9uc2l2ZSB0byBkbyBsZW5ndGggMCBpZiBsb2NhdGlvbnNCeVNlcnZpY2VDb2RlcyBhcmUgY2FjaGVkXG4gICAgICAgICAgKCkgPT4gKCEhdGVybSAmJiB0ZXJtLmxlbmd0aCA+PSAwKSxcbiAgICAgICAgICB0aGlzLnJlZkRhdGFTZXJ2aWNlLmdldExvY2F0aW9uc0J5U2VydmljZUNvZGVzKFxuICAgICAgICAgICAgKHRoaXMuZm9ybS5nZXQodGhpcy5maWVsZC5zZXJ2aWNlc0ZpZWxkKT8udmFsdWUgYXMgRmlsdGVyQ29uZmlnT3B0aW9uW10pLm1hcCgoc2VydmljZSkgPT4gc2VydmljZS5rZXkpXG4gICAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgLy8gRmlsdGVyIGxvY2F0aW9ucyBieSB0aGUgc2VhcmNoIGlucHV0IHRlcm0gYW5kIHRoZSBjaG9zZW4gcHJvcGVydHkgbmFtZVxuICAgICAgICAgICAgbWFwKChsb2NhdGlvbnMpID0+IGxvY2F0aW9uc1xuICAgICAgICAgICAgICAuZmlsdGVyKChsb2NhdGlvbikgPT4gbG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybS50b0xvd2VyQ2FzZSgpKSkpLFxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBsb2NhdGlvbnMgdGhhdCBhcmUgYWxyZWFkeSBzZWxlY3RlZFxuICAgICAgICAgICAgbWFwKChsb2NhdGlvbnMpID0+IHRoaXMuZmlsdGVyVW5zZWxlY3RlZExvY2F0aW9ucyhsb2NhdGlvbnMsIHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnMsIHRoaXMuc2luZ2xlTW9kZSkpLFxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCBkdXBsaWNhdGUgbG9jYXRpb25zIChieSBwcm9wZXJ0eU5hbWVGaWx0ZXIpXG4gICAgICAgICAgICBtYXAoKGxvY2F0aW9ucykgPT4gbG9jYXRpb25zLmZpbHRlcigobG9jYXRpb24sIGluZGV4LCBhcnJheSkgPT5cbiAgICAgICAgICAgICAgaW5kZXggPT09IGFycmF5LmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbVt0aGlzLnByb3BlcnR5TmFtZUZpbHRlcl0gPT09IGxvY2F0aW9uW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXSlcbiAgICAgICAgICAgICkpLFxuICAgICAgICAgICksXG4gICAgICAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgc2VhcmNoIHRlcm0gaXMgZW1wdHkgdG8gbm90IHNob3cgdGhlIGF1dG9jb21wbGV0ZSBmaWVsZCBpLmUuIG5nSWYgc2hvdWxkIGJlIGZhbHNlXG4gICAgICAgICAgb2YoZmFsc2UpXG4gICAgICAgICkpLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZExpc3QkID0gc2VhcmNoSW5wdXRDaGFuZ2VzJC5waXBlKFxuICAgICAgICAvLyBEZWJvdW5jZSBuZWVkZWQgdG8gcHJldmVudCBtdWx0aXBsZSBBUEkgY2FsbHMgYmVpbmcgbWFkZVxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWVJbnB1dCksXG4gICAgICAgIHN3aXRjaE1hcCgodGVybTogc3RyaW5nKSA9PiBpaWYoXG4gICAgICAgICAgKCkgPT4gKCEhdGVybSAmJiB0ZXJtLmxlbmd0aCA+PSB0aGlzLm1pblNlYXJjaENoYXJhY3RlcnMpLFxuICAgICAgICAgIHRoaXMuZ2V0TG9jYXRpb25zKHRlcm0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGxvY2F0aW9ucykgPT4gdGhpcy5maWx0ZXJVbnNlbGVjdGVkTG9jYXRpb25zKGxvY2F0aW9ucywgdGhpcy5zZWxlY3RlZExvY2F0aW9ucywgdGhpcy5zaW5nbGVNb2RlKSksXG4gICAgICAgICAgKSxcbiAgICAgICAgICBvZihmYWxzZSlcbiAgICAgICAgKSksXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNpbmdsZU1vZGUgJiYgdGhpcy5zZWxlY3RlZExvY2F0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMuc2VsZWN0ZWRMb2NhdGlvbnNbMF07XG4gICAgICB0aGlzLnNlYXJjaFRlcm1Gb3JtQ29udHJvbC5wYXRjaFZhbHVlKGxvY2F0aW9uW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXSwgeyBlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RlZExvY2F0aW9uKGxvY2F0aW9uOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm1Gb3JtQ29udHJvbC5wYXRjaFZhbHVlKGxvY2F0aW9uW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXSwgeyBlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICB0aGlzLmxvY2F0aW9uU2VsZWN0ZWQuZW1pdChsb2NhdGlvbik7XG4gIH1cbiAgcHVibGljIG9uSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hMb2NhdGlvbkNoYW5nZWQuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIGdldExvY2F0aW9ucyh0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPExvY2F0aW9uQnlFUElNTVNNb2RlbFtdPiB7XG4gICAgbGV0IHVzZXJMb2NhdGlvbnM7XG4gICAgLy8gQm9va2luZyB0eXBlIGluZm8gLSBjYW4gY3JlYXRlIG1vcmVcbiAgICAvLyBOT19DSEVDSyAtIEFsbCB3b3JrIC0gRG8gbm90IGZpbHRlciBvdXQgbG9jYXRpb25zIC0gRGVmYXVsdCBhc3N1bXB0aW9uXG4gICAgLy8gQk9PS0lOR1NfQU5EX0JBU0UgLSBNeSB3b3JrIC0gVHJ5IHRvIG9ubHkgc2hvdyBiYXNlIGxvY2F0aW9ucy9yZWdpb25zXG4gICAgLy8gUE9TU0lCTEVfQk9PS0lOR1MgLSBDcmVhdGUgYm9va2luZyBzY3JlZW4gLSBTaG93IG9ubHkgcG90ZW50aWFsIGJvb2tpbmdzXG4gICAgaWYgKHRoaXMuYm9va2luZ0NoZWNrID09PSBCb29raW5nQ2hlY2tUeXBlLkJPT0tJTkdTX0FORF9CQVNFKSB7XG4gICAgICB1c2VyTG9jYXRpb25zID0gSlNPTi5wYXJzZSh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCd1c2VyTG9jYXRpb25zJykpIGFzIExvY2F0aW9uc0J5U2VydmljZVtdO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ib29raW5nQ2hlY2sgPT09IEJvb2tpbmdDaGVja1R5cGUuUE9TU0lCTEVfQk9PS0lOR1MpIHtcbiAgICAgIHRoaXMuc2VydmljZUlkcyA9IHRoaXMuc2VydmljZUlkcyAmJiB0aGlzLnNlcnZpY2VJZHMubGVuZ3RoID8gdGhpcy5zZXJ2aWNlSWRzIDogSlNPTi5wYXJzZSh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCdib29rYWJsZVNlcnZpY2VzJykpO1xuICAgICAgdXNlckxvY2F0aW9ucyA9IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnYm9va2FibGVVc2VyTG9jYXRpb25zJykpIGFzIExvY2F0aW9uc0J5U2VydmljZVtdO1xuICAgIH1cbiAgICAvLyBnZXQgYWxsIGxvY2F0aW9ucyB3aWxsIHJlc29sdmUgZmlsdGVyIHNldHRpbmcgdXNpbmcgb2JqZWN0cyBhYm92ZVxuICAgIC8vIGlmIG5vIHVzZXJMb2NhdGlvbnMsIE5PX0NIRUNLXG4gICAgLy8gaWYganVzdCBnZXR0aW5nIGFsbCBzdWJzdGFudGl2ZSB1c2VyIGxvY2F0aW9ucywgQk9PS0lOR1NfQU5EX0JBU0VcbiAgICAvLyBmZWUgcGFpZCB1c2VyIGxvY2F0aW9ucyBhcmUgdXNlZCBmb3IgUE9TU0lCTEVfQk9PS0lOR1NcbiAgICByZXR1cm4gdGhpcy5sb2NhdGlvblNlcnZpY2UuZ2V0QWxsTG9jYXRpb25zKFNlYXJjaExvY2F0aW9uQ29tcG9uZW50LmFsbExvY2F0aW9uQVBJLCB0aGlzLnNlcnZpY2VJZHMsIHRoaXMubG9jYXRpb25UeXBlLCB0ZXJtLCB1c2VyTG9jYXRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldFNlYXJjaFRlcm0oKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtRm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJVbnNlbGVjdGVkTG9jYXRpb25zKFxuICAgIGxvY2F0aW9uczogTG9jYXRpb25CeUVQSU1NU01vZGVsW10sXG4gICAgc2VsZWN0ZWRMb2NhdGlvbnM6IExvY2F0aW9uQnlFUElNTVNNb2RlbFtdLFxuICAgIHNpbmdsZU1vZGU6IGJvb2xlYW5cbiAgKTogTG9jYXRpb25CeUVQSU1NU01vZGVsW10ge1xuICAgIGlmIChzaW5nbGVNb2RlKSB7XG4gICAgICByZXR1cm4gbG9jYXRpb25zO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYXRpb25zLmZpbHRlcihcbiAgICAgIGxvY2F0aW9uID0+ICFzZWxlY3RlZExvY2F0aW9ucy5tYXAoc2VsZWN0ZWRMb2NhdGlvbiA9PiBzZWxlY3RlZExvY2F0aW9uLmVwaW1tc19pZCkuaW5jbHVkZXMobG9jYXRpb24uZXBpbW1zX2lkKSAmJiBsb2NhdGlvblt0aGlzLnByb3BlcnR5TmFtZUZpbHRlcl1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUludmFsaWRTdHJpbmcoZm9ybUlucHV0VmFsdWU6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNDaGFyYWN0ZXJWYWxpZChmb3JtSW5wdXRWYWx1ZSkpIHtcbiAgICAgIGZvcm1JbnB1dFZhbHVlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzQ2hhcmFjdGVyVmFsaWQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICBsZXQgcHJlc3NlZCA9IHVuZGVmaW5lZFxuICAgIGlmIChldmVudC5rZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJlc3NlZCA9IGV2ZW50LmtleTtcbiAgICAgIGlmIChwcmVzc2VkLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgc3dpdGNoIChwcmVzc2VkKSB7XG4gICAgICAgICAgY2FzZSAnVGFiJzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJlc3NlZCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQua2V5Q29kZSk7XG4gICAgfVxuICAgIHJldHVybiBwcmVzc2VkICYmICgvW2EtekEtWiBcXHMnLV0vKS50ZXN0KHByZXNzZWQpO1xuICB9XG5cbn0iLCI8ZGl2IGNsYXNzPVwiYXV0by1jb21wbGV0ZS1jb250YWluZXJcIj5cbiAgPGlucHV0XG4gICAgaWQ9XCJpbnB1dExvY2F0aW9uU2VhcmNoXCJcbiAgICAjY2hhclxuICAgIChrZXlkb3duKT1cInJlbW92ZUludmFsaWRTdHJpbmcoJGV2ZW50KVwiXG4gICAgKGlucHV0KT1cIm9uSW5wdXQoKVwiXG4gICAgW2Zvcm1Db250cm9sXT1cInNlYXJjaFRlcm1Gb3JtQ29udHJvbFwiXG4gICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvU2VhcmNoTG9jYXRpb25cIlxuICAgIGNsYXNzPVwiZ292dWstaW5wdXRcIlxuICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gIDxtYXQtYXV0b2NvbXBsZXRlIGNsYXNzPVwibWF0LWF1dG9jb21wbGV0ZS1wYW5lbC1leHRlbmRcIiBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG9TZWFyY2hMb2NhdGlvbj1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZExpc3QkIHwgYXN5bmMgYXMgZmlsdGVyZWRMaXN0XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRMaXN0ICYmIGZpbHRlcmVkTGlzdC5sZW5ndGggPj0gMFwiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbG9jYXRpb24gb2YgZmlsdGVyZWRMaXN0XCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0ZWRMb2NhdGlvbihsb2NhdGlvbilcIj5cbiAgICAgICAgICB7eyBsb2NhdGlvbltwcm9wZXJ0eU5hbWVGaWx0ZXJdIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJmaWx0ZXJlZExpc3QubGVuZ3RoID09PSAwXCI+e3snTm8gcmVzdWx0cyBmb3VuZCcgfCBycHhUcmFuc2xhdGV9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L21hdC1hdXRvY29tcGxldGU+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,83 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/forms";
5
+ import * as i3 from "@angular/material/legacy-autocomplete";
6
+ import * as i4 from "@angular/material/legacy-core";
7
+ function SearchServiceComponent_mat_option_4_Template(rf, ctx) { if (rf & 1) {
8
+ const _r2 = i0.ɵɵgetCurrentView();
9
+ i0.ɵɵelementStart(0, "mat-option", 6);
10
+ i0.ɵɵlistener("onSelectionChange", function SearchServiceComponent_mat_option_4_Template_mat_option_onSelectionChange_0_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSelectionChanged($event)); });
11
+ i0.ɵɵtext(1);
12
+ i0.ɵɵelementEnd();
13
+ } if (rf & 2) {
14
+ const service_r4 = ctx.$implicit;
15
+ i0.ɵɵproperty("value", service_r4.label);
16
+ i0.ɵɵadvance();
17
+ i0.ɵɵtextInterpolate1(" ", service_r4.label, " ");
18
+ } }
19
+ function SearchServiceComponent_mat_option_5_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelementStart(0, "mat-option");
21
+ i0.ɵɵtext(1, " No results found ");
22
+ i0.ɵɵelementEnd();
23
+ } }
24
+ export class SearchServiceComponent {
25
+ constructor() {
26
+ this.showAutocomplete = false;
27
+ this.optionChanged = new EventEmitter();
28
+ this.searchTerm = '';
29
+ this.MIN_SEARCH_CHARACTERS = 3;
30
+ }
31
+ get filteredOptions() {
32
+ const remainingServices = this.options.filter((s) => !this.selectedOptions.find((ss) => ss.key === s.key));
33
+ return this.searchTerm?.length >= this.MIN_SEARCH_CHARACTERS ?
34
+ remainingServices.filter((s) => s.label.toLowerCase().includes(this.searchTerm.toLowerCase()))
35
+ : remainingServices;
36
+ }
37
+ resetSearchTerm() {
38
+ this.searchTerm = '';
39
+ }
40
+ onSelectionChanged($event) {
41
+ const label = $event.source?.value;
42
+ if (label && $event.source.selected) {
43
+ const selectedService = this.options.find((s) => s.label === label);
44
+ this.optionChanged.emit(selectedService);
45
+ }
46
+ }
47
+ static { this.ɵfac = function SearchServiceComponent_Factory(t) { return new (t || SearchServiceComponent)(); }; }
48
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchServiceComponent, selectors: [["exui-search-service"]], inputs: { options: "options", selectedOptions: "selectedOptions", disabled: "disabled", showAutocomplete: "showAutocomplete" }, outputs: { optionChanged: "optionChanged" }, decls: 6, vars: 5, consts: [["autoSearchService", "matAutocomplete"], [1, "auto-complete-container"], ["id", "inputServiceSearch", 1, "govuk-input", 3, "ngModelChange", "ngModel", "matAutocomplete"], ["autoActiveFirstOption", "", 1, "mat-autocomplete-panel-extend"], [3, "value", "onSelectionChange", 4, "ngFor", "ngForOf"], [4, "ngIf"], [3, "onSelectionChange", "value"]], template: function SearchServiceComponent_Template(rf, ctx) { if (rf & 1) {
49
+ const _r1 = i0.ɵɵgetCurrentView();
50
+ i0.ɵɵelementStart(0, "div", 1)(1, "input", 2);
51
+ i0.ɵɵtwoWayListener("ngModelChange", function SearchServiceComponent_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.searchTerm, $event) || (ctx.searchTerm = $event); return i0.ɵɵresetView($event); });
52
+ i0.ɵɵelementEnd();
53
+ i0.ɵɵelementStart(2, "mat-autocomplete", 3, 0);
54
+ i0.ɵɵtemplate(4, SearchServiceComponent_mat_option_4_Template, 2, 2, "mat-option", 4)(5, SearchServiceComponent_mat_option_5_Template, 2, 0, "mat-option", 5);
55
+ i0.ɵɵelementEnd()();
56
+ } if (rf & 2) {
57
+ const autoSearchService_r5 = i0.ɵɵreference(3);
58
+ i0.ɵɵadvance();
59
+ i0.ɵɵtwoWayProperty("ngModel", ctx.searchTerm);
60
+ i0.ɵɵproperty("matAutocomplete", autoSearchService_r5);
61
+ i0.ɵɵattribute("disabled", ctx.disabled);
62
+ i0.ɵɵadvance(3);
63
+ i0.ɵɵproperty("ngForOf", ctx.filteredOptions);
64
+ i0.ɵɵadvance();
65
+ i0.ɵɵproperty("ngIf", !(ctx.filteredOptions == null ? null : ctx.filteredOptions.length) && ctx.showAutocomplete);
66
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.MatLegacyAutocomplete, i3.MatLegacyAutocompleteTrigger, i4.MatLegacyOption], styles: [".autocomplete__input--show-all-values[_ngcontent-%COMP%]{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down[_ngcontent-%COMP%]{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu[_ngcontent-%COMP%]{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:100%;width:calc(100% - 4px)}.autocomplete__menu--visible[_ngcontent-%COMP%]{display:block}.autocomplete__menu--hidden[_ngcontent-%COMP%]{display:none}.autocomplete__menu--overlay[_ngcontent-%COMP%]{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline[_ngcontent-%COMP%]{position:relative}.autocomplete__option[_ngcontent-%COMP%]{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{pointer-events:none}.autocomplete__option[_ngcontent-%COMP%]:first-of-type{border-top-width:0}.autocomplete__option[_ngcontent-%COMP%]:last-of-type{border-bottom-width:0}.autocomplete__option--odd[_ngcontent-%COMP%]{background-color:#fafafa}.autocomplete__option--focused[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results[_ngcontent-%COMP%]{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.25}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{padding:5px}@media (min-width: 641px){.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.31579}}.div-action[_ngcontent-%COMP%]{display:inline-block}.add-location[_ngcontent-%COMP%]{display:inline}.remove-location-button[_ngcontent-%COMP%]{margin:5px}.hide-autocomplete[_ngcontent-%COMP%]{display:none}.auto-complete-container[_ngcontent-%COMP%]{min-width:250px;display:inline-block;margin-right:4px}.autocomplete__input[_ngcontent-%COMP%]{line-height:24px;font-size:19px}"] }); }
67
+ }
68
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchServiceComponent, [{
69
+ type: Component,
70
+ args: [{ selector: 'exui-search-service', template: "<div class=\"auto-complete-container\">\n <input id=\"inputServiceSearch\"\n class=\"govuk-input\"\n [(ngModel)]=\"searchTerm\"\n [matAutocomplete]=\"autoSearchService\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchService=\"matAutocomplete\">\n <mat-option *ngFor=\"let service of filteredOptions\" (onSelectionChange)=\"onSelectionChanged($event)\" [value]=\"service.label\">\n {{ service.label }}\n </mat-option>\n <mat-option *ngIf=\"!filteredOptions?.length && showAutocomplete\">\n No results found\n </mat-option>\n </mat-autocomplete>\n</div>\n", styles: [".autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:100%;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width: 641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.31579}}.div-action{display:inline-block}.add-location{display:inline}.remove-location-button{margin:5px}.hide-autocomplete{display:none}.auto-complete-container{min-width:250px;display:inline-block;margin-right:4px}.autocomplete__input{line-height:24px;font-size:19px}\n"] }]
71
+ }], null, { options: [{
72
+ type: Input
73
+ }], selectedOptions: [{
74
+ type: Input
75
+ }], disabled: [{
76
+ type: Input
77
+ }], showAutocomplete: [{
78
+ type: Input
79
+ }], optionChanged: [{
80
+ type: Output
81
+ }] }); })();
82
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchServiceComponent, { className: "SearchServiceComponent", filePath: "lib/components/search-service/search-service.component.ts", lineNumber: 10 }); })();
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlcnZpY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gtc2VydmljZS9zZWFyY2gtc2VydmljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1zZXJ2aWNlL3NlYXJjaC1zZXJ2aWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0lDT25FLHFDQUE2SDtJQUF6RSwyTkFBcUIsaUNBQTBCLEtBQUM7SUFDbEcsWUFDRjtJQUFBLGlCQUFhOzs7SUFGd0Ysd0NBQXVCO0lBQzFILGNBQ0Y7SUFERSxpREFDRjs7O0lBQ0Esa0NBQWlFO0lBQy9ELGtDQUNGO0lBQUEsaUJBQWE7O0FESGpCLE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFTa0IscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFhLEdBQXFDLElBQUksWUFBWSxFQUFzQixDQUFDO1FBQ25HLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDUCwwQkFBcUIsR0FBRyxDQUFDLENBQUM7S0FxQjNDO0lBbkJDLElBQVcsZUFBZTtRQUN4QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTNHLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDNUQsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDOUYsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO0lBQ3hCLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxNQUFnQztRQUN4RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztRQUNuQyxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO3VGQTNCVSxzQkFBc0I7b0VBQXRCLHNCQUFzQjs7WUNSakMsQUFERiw4QkFBcUMsZUFLRDtZQUYzQiwyUEFBd0I7WUFGL0IsaUJBSWtDO1lBQ2xDLDhDQUFtSDtZQUlqSCxBQUhBLHFGQUE2SCx3RUFHNUQ7WUFJckUsQUFERSxpQkFBbUIsRUFDZjs7O1lBWEcsY0FBd0I7WUFBeEIsOENBQXdCO1lBQ3hCLHNEQUFxQzs7WUFHVixlQUFrQjtZQUFsQiw2Q0FBa0I7WUFHckMsY0FBa0Q7WUFBbEQsaUhBQWtEOzs7aUZERHRELHNCQUFzQjtjQUxsQyxTQUFTOzJCQUNFLHFCQUFxQjtnQkFLZixPQUFPO2tCQUF0QixLQUFLO1lBQ1UsZUFBZTtrQkFBOUIsS0FBSztZQUNVLFFBQVE7a0JBQXZCLEtBQUs7WUFDVSxnQkFBZ0I7a0JBQS9CLEtBQUs7WUFDVyxhQUFhO2tCQUE3QixNQUFNOztrRkFMSSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IE1hdExlZ2FjeU9wdGlvblNlbGVjdGlvbkNoYW5nZSBhcyBNYXRPcHRpb25TZWxlY3Rpb25DaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V4dWktc2VhcmNoLXNlcnZpY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXNlcnZpY2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtc2VydmljZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlcnZpY2VDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgb3B0aW9uczogRmlsdGVyQ29uZmlnT3B0aW9uW107XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZE9wdGlvbnM6IEZpbHRlckNvbmZpZ09wdGlvbltdO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGFueTtcbiAgQElucHV0KCkgcHVibGljIHNob3dBdXRvY29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHB1YmxpYyBvcHRpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8RmlsdGVyQ29uZmlnT3B0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyQ29uZmlnT3B0aW9uPigpO1xuICBwdWJsaWMgc2VhcmNoVGVybSA9ICcnO1xuICBwdWJsaWMgcmVhZG9ubHkgTUlOX1NFQVJDSF9DSEFSQUNURVJTID0gMztcblxuICBwdWJsaWMgZ2V0IGZpbHRlcmVkT3B0aW9ucygpOiBGaWx0ZXJDb25maWdPcHRpb25bXSB7XG4gICAgY29uc3QgcmVtYWluaW5nU2VydmljZXMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKChzKSA9PiAhdGhpcy5zZWxlY3RlZE9wdGlvbnMuZmluZCgoc3MpID0+IHNzLmtleSA9PT0gcy5rZXkpKTtcblxuICAgIHJldHVybiB0aGlzLnNlYXJjaFRlcm0/Lmxlbmd0aCA+PSB0aGlzLk1JTl9TRUFSQ0hfQ0hBUkFDVEVSUyA/XG4gICAgICByZW1haW5pbmdTZXJ2aWNlcy5maWx0ZXIoKHMpID0+IHMubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKSkpXG4gICAgICA6IHJlbWFpbmluZ1NlcnZpY2VzO1xuICB9XG5cbiAgcHVibGljIHJlc2V0U2VhcmNoVGVybSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSAnJztcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50OiBNYXRPcHRpb25TZWxlY3Rpb25DaGFuZ2UpOiB2b2lkIHtcbiAgICBjb25zdCBsYWJlbCA9ICRldmVudC5zb3VyY2U/LnZhbHVlO1xuICAgIGlmIChsYWJlbCAmJiAkZXZlbnQuc291cmNlLnNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFNlcnZpY2UgPSB0aGlzLm9wdGlvbnMuZmluZCgocykgPT4gcy5sYWJlbCA9PT0gbGFiZWwpO1xuICAgICAgdGhpcy5vcHRpb25DaGFuZ2VkLmVtaXQoc2VsZWN0ZWRTZXJ2aWNlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhdXRvLWNvbXBsZXRlLWNvbnRhaW5lclwiPlxuICA8aW5wdXQgaWQ9XCJpbnB1dFNlcnZpY2VTZWFyY2hcIlxuICAgICAgICAgY2xhc3M9XCJnb3Z1ay1pbnB1dFwiXG4gICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvU2VhcmNoU2VydmljZVwiXG4gICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICA8bWF0LWF1dG9jb21wbGV0ZSBjbGFzcz1cIm1hdC1hdXRvY29tcGxldGUtcGFuZWwtZXh0ZW5kXCIgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvU2VhcmNoU2VydmljZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzZXJ2aWNlIG9mIGZpbHRlcmVkT3B0aW9uc1wiIChvblNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiIFt2YWx1ZV09XCJzZXJ2aWNlLmxhYmVsXCI+XG4gICAgICB7eyBzZXJ2aWNlLmxhYmVsIH19XG4gICAgPC9tYXQtb3B0aW9uPlxuICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiIWZpbHRlcmVkT3B0aW9ucz8ubGVuZ3RoICYmIHNob3dBdXRvY29tcGxldGVcIj5cbiAgICAgIE5vIHJlc3VsdHMgZm91bmRcbiAgICA8L21hdC1vcHRpb24+XG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cbjwvZGl2PlxuIl19
@@ -0,0 +1,190 @@
1
+ import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { AbstractControl, FormArray, FormBuilder, FormControl } from '@angular/forms';
3
+ import { Subject } from 'rxjs';
4
+ import { debounceTime, mergeMap } from 'rxjs/operators';
5
+ import { LocationService } from '../../services/locations/location.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../services/locations/location.service";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@angular/common";
10
+ import * as i4 from "@angular/material/legacy-autocomplete";
11
+ import * as i5 from "@angular/material/legacy-core";
12
+ const _c0 = ["inputSelectedLocation"];
13
+ const _c1 = a0 => ({ "hide-autocomplete": a0 });
14
+ function SearchVenueComponent_div_1_mat_option_5_Template(rf, ctx) { if (rf & 1) {
15
+ const _r3 = i0.ɵɵgetCurrentView();
16
+ i0.ɵɵelementStart(0, "mat-option", 9);
17
+ i0.ɵɵlistener("onSelectionChange", function SearchVenueComponent_div_1_mat_option_5_Template_mat_option_onSelectionChange_0_listener() { const location_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSelectionChange(location_r4)); });
18
+ i0.ɵɵtext(1);
19
+ i0.ɵɵelementEnd();
20
+ } if (rf & 2) {
21
+ const location_r4 = ctx.$implicit;
22
+ const ctx_r1 = i0.ɵɵnextContext(2);
23
+ i0.ɵɵproperty("value", ctx_r1.getDisplayName(location_r4))("ngClass", i0.ɵɵpureFunction1(3, _c1, !ctx_r1.showAutocomplete));
24
+ i0.ɵɵadvance();
25
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.getDisplayName(location_r4), " ");
26
+ } }
27
+ function SearchVenueComponent_div_1_mat_option_6_Template(rf, ctx) { if (rf & 1) {
28
+ i0.ɵɵelementStart(0, "mat-option");
29
+ i0.ɵɵtext(1);
30
+ i0.ɵɵelementEnd();
31
+ } if (rf & 2) {
32
+ i0.ɵɵadvance();
33
+ i0.ɵɵtextInterpolate("No results found");
34
+ } }
35
+ function SearchVenueComponent_div_1_Template(rf, ctx) { if (rf & 1) {
36
+ const _r1 = i0.ɵɵgetCurrentView();
37
+ i0.ɵɵelementStart(0, "div", 4)(1, "input", 5, 0);
38
+ i0.ɵɵlistener("keydown", function SearchVenueComponent_div_1_Template_input_keydown_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onKeyDown()); })("keyup", function SearchVenueComponent_div_1_Template_input_keyup_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onKeyUp($event)); })("focus", function SearchVenueComponent_div_1_Template_input_focus_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFocus()); });
39
+ i0.ɵɵelementEnd();
40
+ i0.ɵɵelementStart(3, "mat-autocomplete", 6, 1);
41
+ i0.ɵɵtemplate(5, SearchVenueComponent_div_1_mat_option_5_Template, 2, 5, "mat-option", 7)(6, SearchVenueComponent_div_1_mat_option_6_Template, 2, 1, "mat-option", 8);
42
+ i0.ɵɵelementEnd()();
43
+ } if (rf & 2) {
44
+ const autoSearchLocation_r5 = i0.ɵɵreference(4);
45
+ const ctx_r1 = i0.ɵɵnextContext();
46
+ i0.ɵɵadvance();
47
+ i0.ɵɵproperty("formControl", ctx_r1.findLocationFormGroup.controls.findLocationFormControl)("matAutocomplete", autoSearchLocation_r5)("value", ctx_r1.getControlCourtNameValue());
48
+ i0.ɵɵattribute("disabled", !ctx_r1.disabled ? null : ctx_r1.disabled);
49
+ i0.ɵɵadvance(4);
50
+ i0.ɵɵproperty("ngForOf", ctx_r1.displayedLocationsDuplicationFiltered);
51
+ i0.ɵɵadvance();
52
+ i0.ɵɵproperty("ngIf", !(ctx_r1.displayedLocationsDuplicationFiltered == null ? null : ctx_r1.displayedLocationsDuplicationFiltered.length) && ctx_r1.showAutocomplete && !ctx_r1.searchInProgress);
53
+ } }
54
+ export class SearchVenueComponent {
55
+ constructor(locationService, fb) {
56
+ this.locationService = locationService;
57
+ this.disabled = null;
58
+ this.locationType = '';
59
+ this.serviceIds = '';
60
+ this.submitted = true;
61
+ this.showAutocomplete = false;
62
+ this.locationChanged = new EventEmitter();
63
+ this.minSearchCharacters = 3;
64
+ this.keyUpSubject$ = new Subject();
65
+ this.readyAfterContent = false;
66
+ this.searchInProgress = false;
67
+ this.findLocationFormGroup = fb.group({
68
+ findLocationFormControl: [null],
69
+ locationSelectedFormControl: [null]
70
+ });
71
+ this.selectedLocations = [];
72
+ }
73
+ ngAfterContentInit() {
74
+ this.readyAfterContent = true;
75
+ }
76
+ ngOnInit() {
77
+ this.displayedLocations = [];
78
+ if (this.control) {
79
+ if (this.findLocationFormGroup && this.findLocationFormGroup.controls) {
80
+ this.findLocationFormGroup.controls.locationSelectedFormControl = this.control;
81
+ }
82
+ }
83
+ this.keyUpSubject$.pipe(debounceTime(500)).subscribe(searchValue => this.search(searchValue));
84
+ }
85
+ onKeyDown() {
86
+ this.locationChanged.emit();
87
+ }
88
+ onKeyUp(event) {
89
+ this.showAutocomplete = false;
90
+ this.keyUpSubject$.next(event.target.value);
91
+ }
92
+ onFocus() {
93
+ this.showAutocomplete = false;
94
+ }
95
+ get displayedLocationsDuplicationFiltered() {
96
+ return this.displayedLocations.filter(location => !this.selectedLocations.map(selectedLocation => selectedLocation.epimms_id).includes(location.epimms_id) && location.court_name);
97
+ }
98
+ filter(term) {
99
+ this.searchLocations(term).pipe(mergeMap((apiData) => {
100
+ const apiFilter = apiData.filter(apiLocation => !this.selectedLocations.map(selectedLocation => selectedLocation.epimms_id).includes(apiLocation.epimms_id));
101
+ this.displayedLocations = apiFilter;
102
+ this.searchInProgress = false;
103
+ return apiFilter;
104
+ })).subscribe(location => {
105
+ if (term === location.court_name) {
106
+ this.findLocationFormGroup.controls.locationSelectedFormControl.setValue(location);
107
+ this.displayedLocations = [];
108
+ this.locationChanged.emit(location);
109
+ this.showAutocomplete = false;
110
+ }
111
+ this.searchInProgress = false;
112
+ });
113
+ }
114
+ onSelectionChange(selection) {
115
+ if (this.findLocationFormGroup.controls.findLocationFormControl instanceof FormArray) {
116
+ this.findLocationFormGroup.controls.locationSelectedFormControl.push(new FormControl(selection.epimms_id));
117
+ }
118
+ else {
119
+ this.findLocationFormGroup.controls.locationSelectedFormControl.setValue(selection);
120
+ }
121
+ this.locationChanged.emit(selection);
122
+ }
123
+ search(currentValue) {
124
+ this.searchInProgress = true;
125
+ this.showAutocomplete = !!currentValue && (currentValue.length >= this.minSearchCharacters);
126
+ if (!!currentValue) {
127
+ this.findLocationFormGroup.controls.locationSelectedFormControl.markAsDirty();
128
+ }
129
+ else {
130
+ this.findLocationFormGroup.controls.locationSelectedFormControl.reset();
131
+ }
132
+ if (this.showAutocomplete) {
133
+ this.filter(currentValue);
134
+ }
135
+ else {
136
+ this.searchInProgress = false;
137
+ }
138
+ }
139
+ getDisplayName(selectedLocation) {
140
+ return selectedLocation.court_name;
141
+ }
142
+ searchLocations(term) {
143
+ return this.locationService.searchLocations(this.serviceIds, this.locationType, term);
144
+ }
145
+ getControlCourtNameValue() {
146
+ return this.findLocationFormGroup && this.findLocationFormGroup.controls && this.findLocationFormGroup.controls.locationSelectedFormControl.value ?
147
+ this.findLocationFormGroup.controls.locationSelectedFormControl.value.court_name : '';
148
+ }
149
+ static { this.ɵfac = function SearchVenueComponent_Factory(t) { return new (t || SearchVenueComponent)(i0.ɵɵdirectiveInject(i1.LocationService), i0.ɵɵdirectiveInject(i2.FormBuilder)); }; }
150
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchVenueComponent, selectors: [["xuilib-search-venue"]], viewQuery: function SearchVenueComponent_Query(rf, ctx) { if (rf & 1) {
151
+ i0.ɵɵviewQuery(_c0, 5, ElementRef);
152
+ } if (rf & 2) {
153
+ let _t;
154
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.autoCompleteInputBox = _t.first);
155
+ } }, inputs: { control: "control", disabled: "disabled", locationType: "locationType", selectedLocations: "selectedLocations", serviceIds: "serviceIds", submitted: "submitted", showAutocomplete: "showAutocomplete", displayedLocations: "displayedLocations" }, outputs: { locationChanged: "locationChanged" }, decls: 2, vars: 1, consts: [["inputSelectedLocation", ""], ["autoSearchLocation", "matAutocomplete"], [1, "auto-complete-container"], ["class", "autocomplete__wrapper", 4, "ngIf"], [1, "autocomplete__wrapper"], [1, "autocomplete__input", "autocomplete__input--default", "search-box", 3, "keydown", "keyup", "focus", "formControl", "matAutocomplete", "value"], ["autoActiveFirstOption", "", 1, "mat-autocomplete-panel-extend"], [3, "value", "ngClass", "onSelectionChange", 4, "ngFor", "ngForOf"], [4, "ngIf"], [3, "onSelectionChange", "value", "ngClass"]], template: function SearchVenueComponent_Template(rf, ctx) { if (rf & 1) {
156
+ i0.ɵɵelementStart(0, "div", 2);
157
+ i0.ɵɵtemplate(1, SearchVenueComponent_div_1_Template, 7, 6, "div", 3);
158
+ i0.ɵɵelementEnd();
159
+ } if (rf & 2) {
160
+ i0.ɵɵadvance();
161
+ i0.ɵɵproperty("ngIf", ctx.readyAfterContent);
162
+ } }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.FormControlDirective, i4.MatLegacyAutocomplete, i4.MatLegacyAutocompleteTrigger, i5.MatLegacyOption], styles: [".autocomplete__input[_ngcontent-%COMP%]{-webkit-appearance:none;border:2px solid #0b0c0c;border-radius:0;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;margin-bottom:0;width:100%;line-height:24px;font-size:19px;background-color:transparent;position:relative}.autocomplete__hint[_ngcontent-%COMP%]{color:#b1b4b6;position:absolute}.autocomplete__input--default[_ngcontent-%COMP%]{padding:5px}.autocomplete__input--focused[_ngcontent-%COMP%]{outline:3px solid #fd0;outline-offset:0;box-shadow:inset 0 0 0 2px}.autocomplete__input--show-all-values[_ngcontent-%COMP%]{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down[_ngcontent-%COMP%]{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu[_ngcontent-%COMP%]{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:100%;width:calc(100% - 4px)}.autocomplete__menu--visible[_ngcontent-%COMP%]{display:block}.autocomplete__menu--hidden[_ngcontent-%COMP%]{display:none}.autocomplete__menu--overlay[_ngcontent-%COMP%]{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline[_ngcontent-%COMP%]{position:relative}.autocomplete__option[_ngcontent-%COMP%]{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{pointer-events:none}.autocomplete__option[_ngcontent-%COMP%]:first-of-type{border-top-width:0}.autocomplete__option[_ngcontent-%COMP%]:last-of-type{border-bottom-width:0}.autocomplete__option--odd[_ngcontent-%COMP%]{background-color:#fafafa}.autocomplete__option--focused[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results[_ngcontent-%COMP%]{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.25}.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{padding:5px}@media (min-width: 641px){.autocomplete__hint[_ngcontent-%COMP%], .autocomplete__input[_ngcontent-%COMP%], .autocomplete__option[_ngcontent-%COMP%]{font-size:13px;line-height:1.31579}}.div-action[_ngcontent-%COMP%]{display:inline-block}.add-location[_ngcontent-%COMP%]{display:inline}.remove-location-button[_ngcontent-%COMP%]{margin:5px}.hide-autocomplete[_ngcontent-%COMP%]{display:none}.auto-complete-container[_ngcontent-%COMP%]{min-width:550px;display:inline-block;margin-right:4px}"] }); }
163
+ }
164
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchVenueComponent, [{
165
+ type: Component,
166
+ args: [{ selector: 'xuilib-search-venue', template: "<div class=\"auto-complete-container\">\n <div *ngIf=\"readyAfterContent\" class=\"autocomplete__wrapper\">\n <input\n [formControl]=\"findLocationFormGroup.controls.findLocationFormControl\"\n [matAutocomplete]=\"autoSearchLocation\"\n (keydown)=\"onKeyDown()\"\n (keyup)=\"onKeyUp($event)\"\n (focus)=\"onFocus()\"\n class=\"autocomplete__input autocomplete__input--default search-box\"\n [attr.disabled]=\"!disabled ? null: disabled\"\n [value]=\"getControlCourtNameValue()\"\n #inputSelectedLocation>\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchLocation=\"matAutocomplete\">\n <mat-option *ngFor=\"let location of displayedLocationsDuplicationFiltered\"\n [value]=\"getDisplayName(location)\"\n (onSelectionChange)=\"onSelectionChange(location)\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete}\">\n {{ getDisplayName(location) }}\n </mat-option>\n <mat-option *ngIf=\"!displayedLocationsDuplicationFiltered?.length && showAutocomplete && !searchInProgress\">{{ 'No results found' }}</mat-option>\n </mat-autocomplete>\n </div>\n</div>\n", styles: [".autocomplete__input{-webkit-appearance:none;border:2px solid #0b0c0c;border-radius:0;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;margin-bottom:0;width:100%;line-height:24px;font-size:19px;background-color:transparent;position:relative}.autocomplete__hint{color:#b1b4b6;position:absolute}.autocomplete__input--default{padding:5px}.autocomplete__input--focused{outline:3px solid #fd0;outline-offset:0;box-shadow:inset 0 0 0 2px}.autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:100%;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:#00000042 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width: 641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.31579}}.div-action{display:inline-block}.add-location{display:inline}.remove-location-button{margin:5px}.hide-autocomplete{display:none}.auto-complete-container{min-width:550px;display:inline-block;margin-right:4px}\n"] }]
167
+ }], () => [{ type: i1.LocationService }, { type: i2.FormBuilder }], { control: [{
168
+ type: Input
169
+ }], disabled: [{
170
+ type: Input
171
+ }], locationType: [{
172
+ type: Input
173
+ }], selectedLocations: [{
174
+ type: Input
175
+ }], serviceIds: [{
176
+ type: Input
177
+ }], submitted: [{
178
+ type: Input
179
+ }], autoCompleteInputBox: [{
180
+ type: ViewChild,
181
+ args: ['inputSelectedLocation', { read: ElementRef }]
182
+ }], showAutocomplete: [{
183
+ type: Input
184
+ }], displayedLocations: [{
185
+ type: Input
186
+ }], locationChanged: [{
187
+ type: Output
188
+ }] }); })();
189
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchVenueComponent, { className: "SearchVenueComponent", filePath: "lib/components/search-venue/search-venue.component.ts", lineNumber: 13 }); })();
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXZlbnVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLXZlbnVlL3NlYXJjaC12ZW51ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC12ZW51ZS9zZWFyY2gtdmVudWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0YsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUMsWUFBWSxFQUFFLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7Ozs7SUNRcEUscUNBR2lFO0lBRHJELHdQQUFxQixxQ0FBMkIsS0FBQztJQUUzRCxZQUNGO0lBQUEsaUJBQWE7Ozs7SUFGRCxBQUZBLDBEQUFrQyxpRUFFa0I7SUFDOUQsY0FDRjtJQURFLG1FQUNGOzs7SUFDQSxrQ0FBNEc7SUFBQSxZQUF3QjtJQUFBLGlCQUFhOztJQUFyQyxjQUF3QjtJQUF4Qix3Q0FBd0I7Ozs7SUFqQnRJLEFBREYsOEJBQTZELGtCQVVsQztJQUp2QixBQURBLEFBREEsbUxBQVcsa0JBQVcsS0FBQyx3S0FDZCxzQkFBZSxLQUFDLGtLQUNoQixnQkFBUyxLQUFDO0lBTHJCLGlCQVN5QjtJQUN6Qiw4Q0FBb0g7SUFPbEgsQUFOQSx5RkFHaUUsNEVBRzJDO0lBRWhILEFBREUsaUJBQW1CLEVBQ2Y7Ozs7SUFsQkYsY0FBc0U7SUFPdEUsQUFOQSxBQURBLDJGQUFzRSwwQ0FDaEMsNENBTUY7O0lBR0gsZUFBd0M7SUFBeEMsc0VBQXdDO0lBTTVELGNBQTZGO0lBQTdGLGtNQUE2Rjs7QURQaEgsTUFBTSxPQUFPLG9CQUFvQjtJQWtCL0IsWUFBNkIsZUFBZ0MsRUFBRSxFQUFlO1FBQWpELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQWhCN0MsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUUxQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGNBQVMsR0FBYSxJQUFJLENBQUM7UUFHM0IscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRWpDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFFNUQsd0JBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLGtCQUFhLEdBQW9CLElBQUksT0FBTyxFQUFFLENBQUM7UUFDL0Msc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUd2QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNwQyx1QkFBdUIsRUFBRSxDQUFDLElBQUksQ0FBQztZQUMvQiwyQkFBMkIsRUFBRSxDQUFDLElBQUksQ0FBQztTQUNwQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0RSxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDakYsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sT0FBTyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxxQ0FBcUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUNuQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUM1SSxDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFZO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUM3QixRQUFRLENBQUMsQ0FBQyxPQUFnQyxFQUFFLEVBQUU7WUFDNUMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FDOUIsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQzNILENBQUM7WUFDRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDOUIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDckIsSUFBSSxJQUFJLEtBQUssUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbkYsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDaEMsQ0FBQztZQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsU0FBaUM7UUFDeEQsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLHVCQUF1QixZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQ3BGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsMkJBQXlDLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQzVILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxNQUFNLENBQUMsWUFBb0I7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFTSxjQUFjLENBQUMsZ0JBQXVDO1FBQzNELE9BQU8sZ0JBQWdCLENBQUMsVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFFTSxlQUFlLENBQUMsSUFBWTtRQUNqQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRU0sd0JBQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoSixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLDJCQUEyQixDQUFDLEtBQStCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckgsQ0FBQztxRkFuSFUsb0JBQW9CO29FQUFwQixvQkFBb0I7bUNBT2EsVUFBVTs7Ozs7WUNuQnhELDhCQUFxQztZQUNuQyxxRUFBNkQ7WUFxQi9ELGlCQUFNOztZQXJCRSxjQUF1QjtZQUF2Qiw0Q0FBdUI7OztpRkRXbEIsb0JBQW9CO2NBTGhDLFNBQVM7MkJBQ0UscUJBQXFCOzBFQUtmLE9BQU87a0JBQXRCLEtBQUs7WUFDVSxRQUFRO2tCQUF2QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLGlCQUFpQjtrQkFBaEMsS0FBSztZQUNVLFVBQVU7a0JBQXpCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQzJELG9CQUFvQjtrQkFBcEYsU0FBUzttQkFBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7WUFFeEMsZ0JBQWdCO2tCQUEvQixLQUFLO1lBQ1Usa0JBQWtCO2tCQUFqQyxLQUFLO1lBQ1csZUFBZTtrQkFBL0IsTUFBTTs7a0ZBWEksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TG9jYXRpb25CeUVQSU1NU01vZGVsfSBmcm9tICcuLi8uLi9tb2RlbHMvbG9jYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtMb2NhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvY2F0aW9ucy9sb2NhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneHVpbGliLXNlYXJjaC12ZW51ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtdmVudWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtdmVudWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hWZW51ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2NhdGlvblR5cGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRMb2NhdGlvbnM6IExvY2F0aW9uQnlFUElNTVNNb2RlbFtdO1xuICBASW5wdXQoKSBwdWJsaWMgc2VydmljZUlkczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJtaXR0ZWQ/OiBib29sZWFuID0gdHJ1ZTtcbiAgQFZpZXdDaGlsZCgnaW5wdXRTZWxlY3RlZExvY2F0aW9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHB1YmxpYyBhdXRvQ29tcGxldGVJbnB1dEJveDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgcHVibGljIGZpbmRMb2NhdGlvbkZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd0F1dG9jb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzcGxheWVkTG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXTtcbiAgQE91dHB1dCgpIHB1YmxpYyBsb2NhdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPExvY2F0aW9uQnlFUElNTVNNb2RlbD4oKTtcbiAgcHVibGljIHNlbGVjdGVkTG9jYXRpb246IExvY2F0aW9uQnlFUElNTVNNb2RlbDtcbiAgcHJpdmF0ZSByZWFkb25seSBtaW5TZWFyY2hDaGFyYWN0ZXJzID0gMztcbiAgcHVibGljIGtleVVwU3ViamVjdCQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyByZWFkeUFmdGVyQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2VhcmNoSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb25TZXJ2aWNlOiBMb2NhdGlvblNlcnZpY2UsIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZmluZExvY2F0aW9uRm9ybUdyb3VwID0gZmIuZ3JvdXAoe1xuICAgICAgZmluZExvY2F0aW9uRm9ybUNvbnRyb2w6IFtudWxsXSxcbiAgICAgIGxvY2F0aW9uU2VsZWN0ZWRGb3JtQ29udHJvbDogW251bGxdXG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RlZExvY2F0aW9ucyA9IFtdO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWR5QWZ0ZXJDb250ZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXllZExvY2F0aW9ucyA9IFtdO1xuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIGlmICh0aGlzLmZpbmRMb2NhdGlvbkZvcm1Hcm91cCAmJiB0aGlzLmZpbmRMb2NhdGlvbkZvcm1Hcm91cC5jb250cm9scykge1xuICAgICAgICB0aGlzLmZpbmRMb2NhdGlvbkZvcm1Hcm91cC5jb250cm9scy5sb2NhdGlvblNlbGVjdGVkRm9ybUNvbnRyb2wgPSB0aGlzLmNvbnRyb2w7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMua2V5VXBTdWJqZWN0JC5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUoc2VhcmNoVmFsdWUgPT4gdGhpcy5zZWFyY2goc2VhcmNoVmFsdWUgYXMgc3RyaW5nKSk7XG4gIH1cblxuICBwdWJsaWMgb25LZXlEb3duKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYXRpb25DaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleVVwKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dBdXRvY29tcGxldGUgPSBmYWxzZTtcbiAgICB0aGlzLmtleVVwU3ViamVjdCQubmV4dChldmVudC50YXJnZXQudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5zaG93QXV0b2NvbXBsZXRlID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXllZExvY2F0aW9uc0R1cGxpY2F0aW9uRmlsdGVyZWQoKTogTG9jYXRpb25CeUVQSU1NU01vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXllZExvY2F0aW9ucy5maWx0ZXIoXG4gICAgICBsb2NhdGlvbiA9PiAhdGhpcy5zZWxlY3RlZExvY2F0aW9ucy5tYXAoc2VsZWN0ZWRMb2NhdGlvbiA9PiBzZWxlY3RlZExvY2F0aW9uLmVwaW1tc19pZCkuaW5jbHVkZXMobG9jYXRpb24uZXBpbW1zX2lkKSAmJiBsb2NhdGlvbi5jb3VydF9uYW1lXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXIodGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hMb2NhdGlvbnModGVybSkucGlwZShcbiAgICAgIG1lcmdlTWFwKChhcGlEYXRhOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSkgPT4ge1xuICAgICAgICBjb25zdCBhcGlGaWx0ZXIgPSBhcGlEYXRhLmZpbHRlcihcbiAgICAgICAgICBhcGlMb2NhdGlvbiA9PiAhdGhpcy5zZWxlY3RlZExvY2F0aW9ucy5tYXAoc2VsZWN0ZWRMb2NhdGlvbiA9PiBzZWxlY3RlZExvY2F0aW9uLmVwaW1tc19pZCkuaW5jbHVkZXMoYXBpTG9jYXRpb24uZXBpbW1zX2lkKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRpc3BsYXllZExvY2F0aW9ucyA9IGFwaUZpbHRlcjtcbiAgICAgICAgdGhpcy5zZWFyY2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBhcGlGaWx0ZXI7XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKGxvY2F0aW9uID0+IHtcbiAgICAgIGlmICh0ZXJtID09PSBsb2NhdGlvbi5jb3VydF9uYW1lKSB7XG4gICAgICAgIHRoaXMuZmluZExvY2F0aW9uRm9ybUdyb3VwLmNvbnRyb2xzLmxvY2F0aW9uU2VsZWN0ZWRGb3JtQ29udHJvbC5zZXRWYWx1ZShsb2NhdGlvbik7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkTG9jYXRpb25zID0gW107XG4gICAgICAgIHRoaXMubG9jYXRpb25DaGFuZ2VkLmVtaXQobG9jYXRpb24pO1xuICAgICAgICB0aGlzLnNob3dBdXRvY29tcGxldGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VhcmNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGlvbj86IExvY2F0aW9uQnlFUElNTVNNb2RlbCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbmRMb2NhdGlvbkZvcm1Hcm91cC5jb250cm9scy5maW5kTG9jYXRpb25Gb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgKHRoaXMuZmluZExvY2F0aW9uRm9ybUdyb3VwLmNvbnRyb2xzLmxvY2F0aW9uU2VsZWN0ZWRGb3JtQ29udHJvbCBhcyBGb3JtQXJyYXkpLnB1c2gobmV3IEZvcm1Db250cm9sKHNlbGVjdGlvbi5lcGltbXNfaWQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maW5kTG9jYXRpb25Gb3JtR3JvdXAuY29udHJvbHMubG9jYXRpb25TZWxlY3RlZEZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGlvbik7XG4gICAgfVxuICAgIHRoaXMubG9jYXRpb25DaGFuZ2VkLmVtaXQoc2VsZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2goY3VycmVudFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHRoaXMuc2hvd0F1dG9jb21wbGV0ZSA9ICEhY3VycmVudFZhbHVlICYmIChjdXJyZW50VmFsdWUubGVuZ3RoID49IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyk7XG4gICAgaWYgKCEhY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmZpbmRMb2NhdGlvbkZvcm1Hcm91cC5jb250cm9scy5sb2NhdGlvblNlbGVjdGVkRm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maW5kTG9jYXRpb25Gb3JtR3JvdXAuY29udHJvbHMubG9jYXRpb25TZWxlY3RlZEZvcm1Db250cm9sLnJlc2V0KCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dBdXRvY29tcGxldGUpIHtcbiAgICAgIHRoaXMuZmlsdGVyKGN1cnJlbnRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXREaXNwbGF5TmFtZShzZWxlY3RlZExvY2F0aW9uOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBzZWxlY3RlZExvY2F0aW9uLmNvdXJ0X25hbWU7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoTG9jYXRpb25zKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8TG9jYXRpb25CeUVQSU1NU01vZGVsW10+IHtcbiAgICByZXR1cm4gdGhpcy5sb2NhdGlvblNlcnZpY2Uuc2VhcmNoTG9jYXRpb25zKHRoaXMuc2VydmljZUlkcywgdGhpcy5sb2NhdGlvblR5cGUsIHRlcm0pO1xuICB9XG5cbiAgcHVibGljIGdldENvbnRyb2xDb3VydE5hbWVWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpbmRMb2NhdGlvbkZvcm1Hcm91cCAmJiB0aGlzLmZpbmRMb2NhdGlvbkZvcm1Hcm91cC5jb250cm9scyAmJiB0aGlzLmZpbmRMb2NhdGlvbkZvcm1Hcm91cC5jb250cm9scy5sb2NhdGlvblNlbGVjdGVkRm9ybUNvbnRyb2wudmFsdWUgP1xuICAgICAgKHRoaXMuZmluZExvY2F0aW9uRm9ybUdyb3VwLmNvbnRyb2xzLmxvY2F0aW9uU2VsZWN0ZWRGb3JtQ29udHJvbC52YWx1ZSBhcyBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwpLmNvdXJ0X25hbWUgOiAnJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF1dG8tY29tcGxldGUtY29udGFpbmVyXCI+XG4gIDxkaXYgKm5nSWY9XCJyZWFkeUFmdGVyQ29udGVudFwiIGNsYXNzPVwiYXV0b2NvbXBsZXRlX193cmFwcGVyXCI+XG4gICAgPGlucHV0XG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZmluZExvY2F0aW9uRm9ybUdyb3VwLmNvbnRyb2xzLmZpbmRMb2NhdGlvbkZvcm1Db250cm9sXCJcbiAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1NlYXJjaExvY2F0aW9uXCJcbiAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigpXCJcbiAgICAgIChrZXl1cCk9XCJvbktleVVwKCRldmVudClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZV9faW5wdXQgYXV0b2NvbXBsZXRlX19pbnB1dC0tZGVmYXVsdCBzZWFyY2gtYm94XCJcbiAgICAgIFthdHRyLmRpc2FibGVkXT1cIiFkaXNhYmxlZCA/IG51bGw6IGRpc2FibGVkXCJcbiAgICAgIFt2YWx1ZV09XCJnZXRDb250cm9sQ291cnROYW1lVmFsdWUoKVwiXG4gICAgICAjaW5wdXRTZWxlY3RlZExvY2F0aW9uPlxuICAgIDxtYXQtYXV0b2NvbXBsZXRlIGNsYXNzPVwibWF0LWF1dG9jb21wbGV0ZS1wYW5lbC1leHRlbmRcIiBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG9TZWFyY2hMb2NhdGlvbj1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGxvY2F0aW9uIG9mIGRpc3BsYXllZExvY2F0aW9uc0R1cGxpY2F0aW9uRmlsdGVyZWRcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdldERpc3BsYXlOYW1lKGxvY2F0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UobG9jYXRpb24pXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGlkZS1hdXRvY29tcGxldGUnOiAhc2hvd0F1dG9jb21wbGV0ZX1cIj5cbiAgICAgICAge3sgZ2V0RGlzcGxheU5hbWUobG9jYXRpb24pIH19XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cIiFkaXNwbGF5ZWRMb2NhdGlvbnNEdXBsaWNhdGlvbkZpbHRlcmVkPy5sZW5ndGggJiYgc2hvd0F1dG9jb21wbGV0ZSAmJiAhc2VhcmNoSW5Qcm9ncmVzc1wiPnt7ICdObyByZXN1bHRzIGZvdW5kJyB9fTwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=