@hmcts/rpx-xui-common-lib 2.1.7-angular-upgrade-11 → 2.1.7-javascript-void
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.
- package/README.md +1 -1
- package/esm2022/hmcts-rpx-xui-common-lib.mjs +5 -0
- package/esm2022/lib/components/accessibility/accessibility.component.mjs +833 -0
- package/esm2022/lib/components/checkbox-list/checkbox-list.component.mjs +232 -0
- package/esm2022/lib/components/contact-details/contact-details.component.mjs +123 -0
- package/esm2022/lib/components/cookie-banner/cookie-banner.component.mjs +151 -0
- package/esm2022/lib/components/due-date/due-date.component.mjs +141 -0
- package/esm2022/lib/components/exui-main-wrapper/exui-page-wrapper.component.mjs +80 -0
- package/esm2022/lib/components/find-location/find-location.component.mjs +220 -0
- package/esm2022/lib/components/find-person/find-person.component.mjs +234 -0
- package/esm2022/lib/components/find-service/find-service.component.mjs +193 -0
- package/esm2022/lib/components/find-task-name/find-task-name.component.mjs +200 -0
- package/esm2022/lib/components/generic-filter/generic-filter-utils.mjs +21 -0
- package/esm2022/lib/components/generic-filter/generic-filter.component.mjs +1224 -0
- package/esm2022/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.mjs +56 -0
- package/esm2022/lib/components/invite-user-form/invite-user-form.component.mjs +51 -0
- package/esm2022/lib/components/invite-user-permissions/invite-user-permission.component.mjs +54 -0
- package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +33 -0
- package/esm2022/lib/components/pagination/pagination.component.mjs +92 -0
- package/esm2022/lib/components/public_api.mjs +39 -0
- package/esm2022/lib/components/search-judicials/search-judicials.component.mjs +185 -0
- package/esm2022/lib/components/search-location/search-location.component.mjs +240 -0
- package/esm2022/lib/components/search-service/search-service.component.mjs +94 -0
- package/esm2022/lib/components/search-venue/search-venue.component.mjs +188 -0
- package/esm2022/lib/components/selected-case/selected-case.component.mjs +381 -0
- package/esm2022/lib/components/selected-case-confirm/selected-case-confirm.component.mjs +135 -0
- package/esm2022/lib/components/selected-case-list/selected-case-list.component.mjs +98 -0
- package/esm2022/lib/components/service-message/service-message.component.mjs +62 -0
- package/esm2022/lib/components/service-messages/service-messages.component.mjs +167 -0
- package/esm2022/lib/components/share-case/share-case.component.mjs +427 -0
- package/esm2022/lib/components/share-case-confirm/share-case-confirm.component.mjs +85 -0
- package/esm2022/lib/components/tab/tab.component.mjs +40 -0
- package/esm2022/lib/components/tc-confirm/tc-confirm.component.mjs +66 -0
- package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.mjs +17 -0
- package/esm2022/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.mjs +17 -0
- package/esm2022/lib/components/terms-and-conditions/terms-and-conditions.component.mjs +58 -0
- package/esm2022/lib/components/user-details/user-details.component.mjs +276 -0
- package/esm2022/lib/components/user-list/user-list.component.mjs +100 -0
- package/esm2022/lib/components/user-select/user-select.component.mjs +94 -0
- package/esm2022/lib/components/write-address/write-address.component.mjs +342 -0
- package/esm2022/lib/components/write-address-inputs/write-address-inputs.component.mjs +165 -0
- package/esm2022/lib/directives/feature-toggle/feature-toggle.directive.mjs +41 -0
- package/esm2022/lib/directives/let/let.directive.mjs +29 -0
- package/esm2022/lib/exui-common-lib.module.mjs +313 -0
- package/esm2022/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.mjs +55 -0
- package/esm2022/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.mjs +137 -0
- package/esm2022/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.mjs +127 -0
- package/esm2022/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.mjs +46 -0
- package/esm2022/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.mjs +79 -0
- package/esm2022/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.mjs +79 -0
- package/esm2022/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.mjs +45 -0
- package/esm2022/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.mjs +71 -0
- package/esm2022/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.mjs +84 -0
- package/esm2022/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.mjs +48 -0
- package/esm2022/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.mjs +42 -0
- package/esm2022/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.mjs +80 -0
- package/esm2022/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.mjs +185 -0
- package/esm2022/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.mjs +57 -0
- package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.mjs +2 -0
- package/esm2022/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.mjs +111 -0
- package/esm2022/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.mjs +140 -0
- package/esm2022/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.mjs +34 -0
- package/esm2022/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.mjs +129 -0
- package/esm2022/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.mjs +204 -0
- package/esm2022/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.mjs +60 -0
- package/esm2022/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.mjs +58 -0
- package/esm2022/lib/gov-ui/directives/remove-host.directive.mjs +30 -0
- package/esm2022/lib/gov-ui/gov-ui.service.mjs +14 -0
- package/esm2022/lib/gov-ui/models/checkboxes-model.mjs +2 -0
- package/{esm2015/lib/gov-ui/models/gov-ui-config-model.js → esm2022/lib/gov-ui/models/gov-ui-config-model.mjs} +1 -1
- package/{esm2015/lib/gov-ui/models/public_api.js → esm2022/lib/gov-ui/models/public_api.mjs} +1 -2
- package/esm2022/lib/gov-ui/models/radio-buttons.model.mjs +2 -0
- package/esm2022/lib/gov-ui/util/helpers/html-templates.helper.mjs +22 -0
- package/{esm2015/lib/gov-ui/validators/checkboxes-be-checked.validator.js → esm2022/lib/gov-ui/validators/checkboxes-be-checked.validator.mjs} +1 -1
- package/{esm2015/lib/gov-ui/validators/date.validator.js → esm2022/lib/gov-ui/validators/date.validator.mjs} +1 -1
- package/esm2022/lib/gov-ui/validators/radio-group.validator.mjs +15 -0
- package/esm2022/lib/models/address-message.enum.mjs +11 -0
- package/esm2022/lib/models/address-option.model.mjs +21 -0
- package/esm2022/lib/models/address.model.mjs +4 -0
- package/{esm2015/lib/models/contact-details.model.js → esm2022/lib/models/contact-details.model.mjs} +1 -1
- package/esm2022/lib/models/feature-user.mjs +5 -0
- package/esm2022/lib/models/filter.model.mjs +3 -0
- package/esm2022/lib/models/index.mjs +19 -0
- package/esm2022/lib/models/location.model.mjs +7 -0
- package/esm2022/lib/models/person.model.mjs +21 -0
- package/{esm2015/lib/models/public_api.js → esm2022/lib/models/public_api.mjs} +2 -1
- package/{esm2015/lib/models/search-options.model.js → esm2022/lib/models/search-options.model.mjs} +1 -1
- package/esm2022/lib/models/service-message.model.mjs +2 -0
- package/esm2022/lib/models/task-name.model.mjs +2 -0
- package/esm2022/lib/models/user-access-type.model.mjs +2 -0
- package/esm2022/lib/models/user-details.model.mjs +2 -0
- package/esm2022/lib/pipes/capitalize/capitalize.pipe.mjs +15 -0
- package/esm2022/lib/pipes/index.mjs +2 -0
- package/esm2022/lib/services/address/address-parser.mjs +76 -0
- package/esm2022/lib/services/address/address-type.enum.mjs +7 -0
- package/esm2022/lib/services/address/address.service.mjs +55 -0
- package/esm2022/lib/services/case-sharing-state/case-sharing-state.service.mjs +170 -0
- package/esm2022/lib/services/cookie/cookie.service.mjs +48 -0
- package/esm2022/lib/services/feature-toggle/feature-toggle.guard.mjs +37 -0
- package/esm2022/lib/services/feature-toggle/feature-toggle.service.mjs +33 -0
- package/esm2022/lib/services/feature-toggle/launch-darkly.service.mjs +70 -0
- package/esm2022/lib/services/filter/filter.service.mjs +95 -0
- package/esm2022/lib/services/find-person/find-person.service.mjs +92 -0
- package/esm2022/lib/services/google-analytics/google-analytics.service.mjs +73 -0
- package/esm2022/lib/services/google-tag-manager/google-tag-manager.service.mjs +85 -0
- package/{esm2015/lib/services/loading/loading.service.js → esm2022/lib/services/loading/loading.service.mjs} +8 -6
- package/esm2022/lib/services/locations/location.service.mjs +38 -0
- package/{esm2015/lib/services/manage-session/manage-session.services.js → esm2022/lib/services/manage-session/manage-session.services.mjs} +8 -10
- package/esm2022/lib/services/public-api.mjs +18 -0
- package/esm2022/lib/services/ref-data/index.mjs +4 -0
- package/esm2022/lib/services/ref-data/models/ref-data-htmcs-service.model.mjs +2 -0
- package/esm2022/lib/services/ref-data/models/ref-data-region.model.mjs +2 -0
- package/esm2022/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.mjs +2 -0
- package/esm2022/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.mjs +33 -0
- package/esm2022/lib/services/ref-data/ref-data.service.mjs +34 -0
- package/esm2022/lib/services/role-guard/role.guard.mjs +43 -0
- package/esm2022/lib/services/role-guard/role.service.mjs +22 -0
- package/esm2022/lib/services/storage/session-storage/session-storage.service.mjs +43 -0
- package/esm2022/lib/services/task-name/task-name.service.mjs +35 -0
- package/esm2022/lib/services/timeout-notifications/timeout-notifications.service.mjs +103 -0
- package/{esm2015/public-api.js → esm2022/public-api.mjs} +2 -1
- package/fesm2022/hmcts-rpx-xui-common-lib.mjs +10386 -0
- package/fesm2022/hmcts-rpx-xui-common-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/accessibility/accessibility.component.d.ts +7 -1
- package/lib/components/checkbox-list/checkbox-list.component.d.ts +8 -2
- package/lib/components/contact-details/contact-details.component.d.ts +3 -0
- package/lib/components/cookie-banner/cookie-banner.component.d.ts +5 -1
- package/lib/components/due-date/due-date.component.d.ts +8 -2
- package/lib/components/exui-main-wrapper/exui-page-wrapper.component.d.ts +3 -0
- package/lib/components/find-location/find-location.component.d.ts +12 -6
- package/lib/components/find-person/find-person.component.d.ts +5 -2
- package/lib/components/find-service/find-service.component.d.ts +24 -9
- package/lib/components/find-task-name/find-task-name.component.d.ts +44 -0
- package/lib/components/generic-filter/generic-filter-utils.d.ts +2 -5
- package/lib/components/generic-filter/generic-filter.component.d.ts +25 -6
- package/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.d.ts +3 -0
- package/lib/components/invite-user-form/invite-user-form.component.d.ts +3 -0
- package/lib/components/invite-user-permissions/invite-user-permission.component.d.ts +3 -0
- package/lib/components/loading-spinner/loading-spinner.component.d.ts +8 -1
- package/lib/components/pagination/pagination.component.d.ts +3 -0
- package/lib/components/public_api.d.ts +6 -0
- package/lib/components/search-judicials/search-judicials.component.d.ts +3 -0
- package/lib/components/search-location/search-location.component.d.ts +25 -20
- package/lib/components/search-service/search-service.component.d.ts +16 -9
- package/lib/components/search-venue/search-venue.component.d.ts +3 -1
- package/lib/components/selected-case/selected-case.component.d.ts +3 -0
- package/lib/components/selected-case-confirm/selected-case-confirm.component.d.ts +3 -0
- package/lib/components/selected-case-list/selected-case-list.component.d.ts +3 -0
- package/lib/components/service-message/service-message.component.d.ts +9 -4
- package/lib/components/service-messages/service-messages.component.d.ts +15 -5
- package/lib/components/share-case/share-case.component.d.ts +4 -0
- package/lib/components/share-case-confirm/share-case-confirm.component.d.ts +3 -0
- package/lib/components/tab/tab.component.d.ts +3 -0
- package/lib/components/tc-confirm/tc-confirm.component.d.ts +3 -0
- package/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.d.ts +3 -0
- package/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.d.ts +3 -0
- package/lib/components/terms-and-conditions/terms-and-conditions.component.d.ts +3 -0
- package/lib/components/user-details/user-details.component.d.ts +4 -0
- package/lib/components/user-list/user-list.component.d.ts +3 -0
- package/lib/components/user-select/user-select.component.d.ts +5 -3
- package/lib/components/write-address/write-address.component.d.ts +45 -0
- package/lib/components/write-address-inputs/write-address-inputs.component.d.ts +16 -0
- package/lib/directives/feature-toggle/feature-toggle.directive.d.ts +3 -0
- package/lib/directives/let/let.directive.d.ts +3 -0
- package/lib/exui-common-lib.module.d.ts +83 -4
- package/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.d.ts +3 -0
- package/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.d.ts +17 -5
- package/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.d.ts +3 -0
- package/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.d.ts +3 -0
- package/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.d.ts +3 -0
- package/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.d.ts +3 -0
- package/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.d.ts +3 -0
- package/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.d.ts +4 -2
- package/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.d.ts +4 -0
- package/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.d.ts +3 -0
- package/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.d.ts +5 -2
- package/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.d.ts +3 -0
- package/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.d.ts +3 -0
- package/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.d.ts +3 -0
- package/lib/gov-ui/components/hmcts-banner/hmcts-banner-info.interface.d.ts +7 -0
- package/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.d.ts +7 -2
- package/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.d.ts +3 -0
- package/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.d.ts +3 -0
- package/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.d.ts +6 -3
- package/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.d.ts +3 -0
- package/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.d.ts +3 -0
- package/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.d.ts +3 -0
- package/lib/gov-ui/directives/remove-host.directive.d.ts +3 -0
- package/lib/gov-ui/gov-ui.service.d.ts +3 -0
- package/lib/gov-ui/models/checkboxes-model.d.ts +4 -7
- package/lib/gov-ui/models/gov-ui-config-model.d.ts +2 -0
- package/lib/gov-ui/models/public_api.d.ts +0 -1
- package/lib/gov-ui/models/radio-buttons.model.d.ts +9 -0
- package/lib/models/address-message.enum.d.ts +9 -0
- package/lib/models/address-option.model.d.ts +9 -0
- package/lib/models/address.model.d.ts +9 -0
- package/lib/models/contact-details.model.d.ts +4 -0
- package/lib/models/feature-user.d.ts +4 -6
- package/lib/models/filter.model.d.ts +42 -9
- package/lib/models/index.d.ts +4 -0
- package/lib/models/location.model.d.ts +12 -12
- package/lib/models/person.model.d.ts +5 -3
- package/lib/models/public_api.d.ts +1 -0
- package/lib/models/search-options.model.d.ts +1 -1
- package/lib/models/service-message.model.d.ts +8 -0
- package/lib/models/task-name.model.d.ts +4 -0
- package/lib/models/user-access-type.model.d.ts +6 -0
- package/lib/models/user-details.model.d.ts +2 -0
- package/lib/pipes/capitalize/capitalize.pipe.d.ts +7 -0
- package/lib/pipes/index.d.ts +1 -0
- package/lib/services/address/address-parser.d.ts +17 -0
- package/lib/services/address/address-type.enum.d.ts +5 -0
- package/lib/services/address/address.service.d.ts +15 -0
- package/lib/services/case-sharing-state/case-sharing-state.service.d.ts +3 -0
- package/lib/services/cookie/cookie.service.d.ts +3 -0
- package/lib/services/feature-toggle/feature-toggle.guard.d.ts +8 -2
- package/lib/services/feature-toggle/feature-toggle.service.d.ts +4 -0
- package/lib/services/feature-toggle/launch-darkly.service.d.ts +14 -10
- package/lib/services/filter/filter.service.d.ts +6 -0
- package/lib/services/find-person/find-person.service.d.ts +5 -2
- package/lib/services/google-analytics/google-analytics.service.d.ts +4 -1
- package/lib/services/google-tag-manager/google-tag-manager.service.d.ts +5 -1
- package/lib/services/loading/loading.service.d.ts +3 -0
- package/lib/services/locations/location.service.d.ts +4 -1
- package/lib/services/manage-session/manage-session.services.d.ts +3 -0
- package/lib/services/public-api.d.ts +2 -0
- package/lib/services/ref-data/index.d.ts +3 -0
- package/lib/services/ref-data/models/ref-data-htmcs-service.model.d.ts +13 -0
- package/lib/services/ref-data/models/ref-data-region.model.d.ts +4 -0
- package/lib/services/ref-data/ref-data-data-access/models/ref-data-locations-by-service-code-response.model.d.ts +8 -0
- package/lib/services/ref-data/ref-data-data-access/ref-data-data-access.service.d.ts +18 -0
- package/lib/services/ref-data/ref-data.service.d.ts +17 -0
- package/lib/services/role-guard/role.guard.d.ts +7 -3
- package/lib/services/role-guard/role.service.d.ts +8 -4
- package/lib/services/{session-storage → storage/session-storage}/session-storage.service.d.ts +3 -0
- package/lib/services/task-name/task-name.service.d.ts +17 -0
- package/lib/services/timeout-notifications/timeout-notifications.service.d.ts +8 -2
- package/package.json +21 -11
- package/public-api.d.ts +1 -0
- package/bundles/hmcts-rpx-xui-common-lib.umd.js +0 -5141
- package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +0 -1
- package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +0 -2
- package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +0 -1
- package/esm2015/hmcts-rpx-xui-common-lib.js +0 -70
- package/esm2015/lib/components/accessibility/accessibility.component.js +0 -14
- package/esm2015/lib/components/checkbox-list/checkbox-list.component.js +0 -177
- package/esm2015/lib/components/contact-details/contact-details.component.js +0 -17
- package/esm2015/lib/components/cookie-banner/cookie-banner.component.js +0 -68
- package/esm2015/lib/components/due-date/due-date.component.js +0 -115
- package/esm2015/lib/components/exui-main-wrapper/exui-page-wrapper.component.js +0 -28
- package/esm2015/lib/components/find-location/find-location.component.js +0 -124
- package/esm2015/lib/components/find-person/find-person.component.js +0 -118
- package/esm2015/lib/components/find-service/find-service.component.js +0 -31
- package/esm2015/lib/components/generic-filter/generic-filter-utils.js +0 -21
- package/esm2015/lib/components/generic-filter/generic-filter.component.js +0 -387
- package/esm2015/lib/components/hmcts-session-dialog/hmcts-session-dialog.component.js +0 -27
- package/esm2015/lib/components/invite-user-form/invite-user-form.component.js +0 -25
- package/esm2015/lib/components/invite-user-permissions/invite-user-permission.component.js +0 -25
- package/esm2015/lib/components/loading-spinner/loading-spinner.component.js +0 -18
- package/esm2015/lib/components/pagination/pagination.component.js +0 -28
- package/esm2015/lib/components/public_api.js +0 -33
- package/esm2015/lib/components/search-judicials/search-judicials.component.js +0 -126
- package/esm2015/lib/components/search-location/search-location.component.js +0 -133
- package/esm2015/lib/components/search-service/search-service.component.js +0 -31
- package/esm2015/lib/components/search-venue/search-venue.component.js +0 -123
- package/esm2015/lib/components/selected-case/selected-case.component.js +0 -158
- package/esm2015/lib/components/selected-case-confirm/selected-case-confirm.component.js +0 -36
- package/esm2015/lib/components/selected-case-list/selected-case-list.component.js +0 -49
- package/esm2015/lib/components/service-message/service-message.component.js +0 -22
- package/esm2015/lib/components/service-messages/service-messages.component.js +0 -48
- package/esm2015/lib/components/share-case/share-case.component.js +0 -205
- package/esm2015/lib/components/share-case-confirm/share-case-confirm.component.js +0 -34
- package/esm2015/lib/components/tab/tab.component.js +0 -21
- package/esm2015/lib/components/tc-confirm/tc-confirm.component.js +0 -22
- package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-html/tc-display-html.component.js +0 -13
- package/esm2015/lib/components/terms-and-conditions/tc-display/tc-display-plain/tc-display-plain.component.js +0 -13
- package/esm2015/lib/components/terms-and-conditions/terms-and-conditions.component.js +0 -16
- package/esm2015/lib/components/user-details/user-details.component.js +0 -41
- package/esm2015/lib/components/user-list/user-list.component.js +0 -33
- package/esm2015/lib/components/user-select/user-select.component.js +0 -58
- package/esm2015/lib/directives/feature-toggle/feature-toggle.directive.js +0 -42
- package/esm2015/lib/directives/let/let.directive.js +0 -30
- package/esm2015/lib/exui-common-lib.module.js +0 -160
- package/esm2015/lib/gov-ui/components/gov-uk-checkbox/gov-uk-checkbox.component.js +0 -31
- package/esm2015/lib/gov-ui/components/gov-uk-checkboxes/gov-uk-checkboxes.component.js +0 -21
- package/esm2015/lib/gov-ui/components/gov-uk-date/gov-uk-date.component.js +0 -64
- package/esm2015/lib/gov-ui/components/gov-uk-error-message/gov-uk-error-message.component.js +0 -22
- package/esm2015/lib/gov-ui/components/gov-uk-fieldset/gov-uk-fieldset.component.js +0 -28
- package/esm2015/lib/gov-ui/components/gov-uk-file-upload/gov-uk-file-upload.component.js +0 -35
- package/esm2015/lib/gov-ui/components/gov-uk-form-group-wrapper/gov-uk-form-group-wrapper.component.js +0 -23
- package/esm2015/lib/gov-ui/components/gov-uk-input/gov-uk-input.component.js +0 -34
- package/esm2015/lib/gov-ui/components/gov-uk-label/gov-uk-label.component.js +0 -21
- package/esm2015/lib/gov-ui/components/gov-uk-radio/gov-uk-radio.component.js +0 -33
- package/esm2015/lib/gov-ui/components/gov-uk-radios/gov-uk-radios.component.js +0 -21
- package/esm2015/lib/gov-ui/components/gov-uk-select/gov-uk-select.component.js +0 -27
- package/esm2015/lib/gov-ui/components/gov-uk-table/gov-uk-table.component.js +0 -39
- package/esm2015/lib/gov-ui/components/gov-uk-textarea/gov-uk-textarea.component.js +0 -27
- package/esm2015/lib/gov-ui/components/hmcts-banner/hmcts-banner.component.js +0 -23
- package/esm2015/lib/gov-ui/components/hmcts-error-summary/hmcts-error-summary.component.js +0 -48
- package/esm2015/lib/gov-ui/components/hmcts-identity-bar/hmcts-identity-bar.component.js +0 -19
- package/esm2015/lib/gov-ui/components/hmcts-main-wrapper/hmcts-main-wrapper.component.js +0 -41
- package/esm2015/lib/gov-ui/components/hmcts-pagination/hmcts-pagination.component.js +0 -28
- package/esm2015/lib/gov-ui/components/hmcts-primary-navigation/hmcts-primary-navigation.component.js +0 -23
- package/esm2015/lib/gov-ui/components/hmcts-sub-navigation/hmcts-sub-navigation.component.js +0 -15
- package/esm2015/lib/gov-ui/directives/remove-host.directive.js +0 -29
- package/esm2015/lib/gov-ui/gov-ui.service.js +0 -13
- package/esm2015/lib/gov-ui/models/banner-data-model.js +0 -2
- package/esm2015/lib/gov-ui/models/checkboxes-model.js +0 -2
- package/esm2015/lib/gov-ui/models/isession-storage.interface.js +0 -2
- package/esm2015/lib/gov-ui/util/helpers/html-templates.helper.js +0 -22
- package/esm2015/lib/gov-ui/util/session-storage/session-storage-utils.js +0 -22
- package/esm2015/lib/gov-ui/validators/radio-group.validator.js +0 -15
- package/esm2015/lib/models/feature-user.js +0 -5
- package/esm2015/lib/models/filter.model.js +0 -3
- package/esm2015/lib/models/index.js +0 -15
- package/esm2015/lib/models/location.model.js +0 -7
- package/esm2015/lib/models/person.model.js +0 -19
- package/esm2015/lib/models/user-details.model.js +0 -2
- package/esm2015/lib/services/case-sharing-state/case-sharing-state.service.js +0 -157
- package/esm2015/lib/services/cookie/cookie.service.js +0 -47
- package/esm2015/lib/services/feature-toggle/feature-toggle.guard.js +0 -35
- package/esm2015/lib/services/feature-toggle/feature-toggle.service.js +0 -27
- package/esm2015/lib/services/feature-toggle/launch-darkly.service.js +0 -59
- package/esm2015/lib/services/filter/filter.service.js +0 -64
- package/esm2015/lib/services/find-person/find-person.service.js +0 -106
- package/esm2015/lib/services/google-analytics/google-analytics.service.js +0 -68
- package/esm2015/lib/services/google-tag-manager/google-tag-manager.service.js +0 -71
- package/esm2015/lib/services/locations/location.service.js +0 -39
- package/esm2015/lib/services/public-api.js +0 -16
- package/esm2015/lib/services/role-guard/role.guard.js +0 -37
- package/esm2015/lib/services/role-guard/role.service.js +0 -20
- package/esm2015/lib/services/session-storage/session-storage.service.js +0 -41
- package/esm2015/lib/services/timeout-notifications/timeout-notifications.service.js +0 -94
- package/fesm2015/hmcts-rpx-xui-common-lib.js +0 -4174
- package/fesm2015/hmcts-rpx-xui-common-lib.js.map +0 -1
- package/hmcts-rpx-xui-common-lib.d.ts +0 -69
- package/hmcts-rpx-xui-common-lib.metadata.json +0 -1
- package/lib/gov-ui/models/banner-data-model.d.ts +0 -4
- package/lib/gov-ui/models/isession-storage.interface.d.ts +0 -4
- package/lib/gov-ui/util/session-storage/session-storage-utils.d.ts +0 -6
- /package/{esm2015/lib/components/index.js → esm2022/lib/components/index.mjs} +0 -0
- /package/{esm2015/lib/directives/index.js → esm2022/lib/directives/index.mjs} +0 -0
- /package/{esm2015/lib/directives/public-api.js → esm2022/lib/directives/public-api.mjs} +0 -0
- /package/{esm2015/lib/gov-ui/components/index.js → esm2022/lib/gov-ui/components/index.mjs} +0 -0
- /package/{esm2015/lib/gov-ui/components/public_api.js → esm2022/lib/gov-ui/components/public_api.mjs} +0 -0
- /package/{esm2015/lib/gov-ui/index.js → esm2022/lib/gov-ui/index.mjs} +0 -0
- /package/{esm2015/lib/gov-ui/models/error-messages-model.js → esm2022/lib/gov-ui/models/error-messages-model.mjs} +0 -0
- /package/{esm2015/lib/gov-ui/models/index.js → esm2022/lib/gov-ui/models/index.mjs} +0 -0
- /package/{esm2015/lib/gov-ui/public_api.js → esm2022/lib/gov-ui/public_api.mjs} +0 -0
- /package/{esm2015/lib/gov-ui/validators/index.js → esm2022/lib/gov-ui/validators/index.mjs} +0 -0
- /package/{esm2015/lib/gov-ui/validators/public_api.js → esm2022/lib/gov-ui/validators/public_api.mjs} +0 -0
- /package/{esm2015/lib/models/case-share.model.js → esm2022/lib/models/case-share.model.mjs} +0 -0
- /package/{esm2015/lib/models/due-date.model.js → esm2022/lib/models/due-date.model.mjs} +0 -0
- /package/{esm2015/lib/models/idle-config.model.js → esm2022/lib/models/idle-config.model.mjs} +0 -0
- /package/{esm2015/lib/models/pagination.model.js → esm2022/lib/models/pagination.model.mjs} +0 -0
- /package/{esm2015/lib/models/tcDocument.model.js → esm2022/lib/models/tcDocument.model.mjs} +0 -0
- /package/{esm2015/lib/models/timeout-notification.model.js → esm2022/lib/models/timeout-notification.model.mjs} +0 -0
- /package/{esm2015/lib/models/user.model.js → esm2022/lib/models/user.model.mjs} +0 -0
- /package/{esm2015/lib/services/index.js → esm2022/lib/services/index.mjs} +0 -0
- /package/{esm2015/lib/window.js → esm2022/lib/window.mjs} +0 -0
|
@@ -0,0 +1,185 @@
|
|
|
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 { FindAPersonService } from '../../services/find-person/find-person.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../services/find-person/find-person.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 = ["inputSelection"];
|
|
13
|
+
const _c1 = a0 => ({ "hide-autocomplete": a0 });
|
|
14
|
+
function SearchJudicialsComponent_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
15
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
16
|
+
i0.ɵɵelementStart(0, "mat-option", 7);
|
|
17
|
+
i0.ɵɵlistener("onSelectionChange", function SearchJudicialsComponent_mat_option_5_Template_mat_option_onSelectionChange_0_listener() { const judicial_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onSelectionChange(judicial_r3)); });
|
|
18
|
+
i0.ɵɵtext(1);
|
|
19
|
+
i0.ɵɵelementEnd();
|
|
20
|
+
} if (rf & 2) {
|
|
21
|
+
const judicial_r3 = ctx.$implicit;
|
|
22
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
23
|
+
i0.ɵɵproperty("value", ctx_r3.getDisplayName(judicial_r3))("ngClass", i0.ɵɵpureFunction1(3, _c1, !ctx_r3.showAutocomplete));
|
|
24
|
+
i0.ɵɵadvance();
|
|
25
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r3.getDisplayName(judicial_r3), " ");
|
|
26
|
+
} }
|
|
27
|
+
function SearchJudicialsComponent_mat_option_6_Template(rf, ctx) { if (rf & 1) {
|
|
28
|
+
i0.ɵɵelementStart(0, "mat-option", 8);
|
|
29
|
+
i0.ɵɵtext(1);
|
|
30
|
+
i0.ɵɵelementEnd();
|
|
31
|
+
} if (rf & 2) {
|
|
32
|
+
i0.ɵɵadvance();
|
|
33
|
+
i0.ɵɵtextInterpolate1(" ", "No results found", "");
|
|
34
|
+
} }
|
|
35
|
+
export class SearchJudicialsComponent {
|
|
36
|
+
constructor(judicialService, fb) {
|
|
37
|
+
this.judicialService = judicialService;
|
|
38
|
+
this.disabled = null;
|
|
39
|
+
this.selectedJudicials = [];
|
|
40
|
+
this.submitted = true;
|
|
41
|
+
this.placeholderContent = '';
|
|
42
|
+
this.showAutocomplete = false;
|
|
43
|
+
this.judicialChanged = new EventEmitter();
|
|
44
|
+
this.idValue = '';
|
|
45
|
+
this.errorMessage = 'You must select a name';
|
|
46
|
+
this.serviceId = '';
|
|
47
|
+
this.minSearchCharacters = 3;
|
|
48
|
+
this.keyUpSubject$ = new Subject();
|
|
49
|
+
this.searchInProgress = false;
|
|
50
|
+
this.formGroup = fb.group({
|
|
51
|
+
formControl: [null],
|
|
52
|
+
selectedFormControl: [null]
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
ngOnInit() {
|
|
56
|
+
this.displayedJudicials = [];
|
|
57
|
+
if (this.control) {
|
|
58
|
+
if (this.formGroup && this.formGroup.controls) {
|
|
59
|
+
this.formGroup.controls.selectedFormControl = this.control;
|
|
60
|
+
this.formGroup.controls.formControl.setValue(this.getControlValueDisplayText());
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
this.keyUpSubject$.pipe(debounceTime(500)).subscribe(searchValue => this.search(searchValue));
|
|
64
|
+
}
|
|
65
|
+
onKeyDown() {
|
|
66
|
+
this.judicialChanged.emit();
|
|
67
|
+
}
|
|
68
|
+
onKeyUp(event) {
|
|
69
|
+
this.showAutocomplete = false;
|
|
70
|
+
this.keyUpSubject$.next(event.target.value);
|
|
71
|
+
}
|
|
72
|
+
onFocus() {
|
|
73
|
+
this.showAutocomplete = false;
|
|
74
|
+
}
|
|
75
|
+
get displayedJudicialsDuplicationFiltered() {
|
|
76
|
+
return this.displayedJudicials.filter(judicial => !this.selectedJudicials.map(selectedJudicial => selectedJudicial.idamId).includes(judicial.idamId));
|
|
77
|
+
}
|
|
78
|
+
filter(term) {
|
|
79
|
+
this.searchJudicials(term, this.serviceId).pipe(mergeMap((apiData) => {
|
|
80
|
+
const apiFilter = apiData.filter(apiJudicial => !this.selectedJudicials.map(selectedJudicial => selectedJudicial.idamId).includes(apiJudicial.idamId));
|
|
81
|
+
this.displayedJudicials = apiFilter;
|
|
82
|
+
this.searchInProgress = false;
|
|
83
|
+
return apiFilter;
|
|
84
|
+
})).subscribe(judicial => {
|
|
85
|
+
if (term === judicial.fullName) {
|
|
86
|
+
this.formGroup.controls.selectedFormControl.setValue(judicial);
|
|
87
|
+
this.displayedJudicials = [];
|
|
88
|
+
this.judicialChanged.emit(judicial);
|
|
89
|
+
this.showAutocomplete = false;
|
|
90
|
+
}
|
|
91
|
+
this.searchInProgress = false;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
onSelectionChange(selection) {
|
|
95
|
+
if (this.formGroup.controls.formControl instanceof FormArray) {
|
|
96
|
+
this.formGroup.controls.selectedFormControl.push(new FormControl(selection.idamId));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.formGroup.controls.selectedFormControl.setValue(selection);
|
|
100
|
+
}
|
|
101
|
+
this.judicialChanged.emit(selection);
|
|
102
|
+
}
|
|
103
|
+
search(currentValue) {
|
|
104
|
+
this.searchInProgress = true;
|
|
105
|
+
this.showAutocomplete = !!currentValue && (currentValue.length >= this.minSearchCharacters);
|
|
106
|
+
if (!!currentValue) {
|
|
107
|
+
this.formGroup.controls.selectedFormControl.markAsDirty();
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
this.formGroup.controls.selectedFormControl.reset();
|
|
111
|
+
}
|
|
112
|
+
if (this.showAutocomplete) {
|
|
113
|
+
this.filter(currentValue);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.searchInProgress = false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
getDisplayName(selectedJudicial) {
|
|
120
|
+
return `${selectedJudicial.fullName} (${selectedJudicial.emailId})`;
|
|
121
|
+
}
|
|
122
|
+
searchJudicials(term, serviceId) {
|
|
123
|
+
return this.judicialService.searchJudicial(term, serviceId);
|
|
124
|
+
}
|
|
125
|
+
getControlValueDisplayText() {
|
|
126
|
+
return this.formGroup && this.formGroup.controls && this.formGroup.controls.selectedFormControl.value ?
|
|
127
|
+
this.getDisplayName(this.formGroup.controls.selectedFormControl.value) : '';
|
|
128
|
+
}
|
|
129
|
+
static { this.ɵfac = function SearchJudicialsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchJudicialsComponent)(i0.ɵɵdirectiveInject(i1.FindAPersonService), i0.ɵɵdirectiveInject(i2.FormBuilder)); }; }
|
|
130
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchJudicialsComponent, selectors: [["xuilib-search-judicials"]], viewQuery: function SearchJudicialsComponent_Query(rf, ctx) { if (rf & 1) {
|
|
131
|
+
i0.ɵɵviewQuery(_c0, 7, ElementRef);
|
|
132
|
+
} if (rf & 2) {
|
|
133
|
+
let _t;
|
|
134
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.autoCompleteInputBox = _t.first);
|
|
135
|
+
} }, inputs: { control: "control", disabled: "disabled", selectedJudicials: "selectedJudicials", submitted: "submitted", placeholderContent: "placeholderContent", showAutocomplete: "showAutocomplete", displayedJudicials: "displayedJudicials", idValue: "idValue", errorMessage: "errorMessage", serviceId: "serviceId" }, outputs: { judicialChanged: "judicialChanged" }, decls: 7, vars: 9, consts: [["inputSelection", ""], ["autoComplete", "matAutocomplete"], [1, "govuk-form-group"], [1, "govuk-input", 3, "keydown", "keyup", "focus", "id", "placeholder", "formControl", "matAutocomplete", "value"], ["autoActiveFirstOption", ""], ["class", "select-option", 3, "value", "ngClass", "onSelectionChange", 4, "ngFor", "ngForOf"], ["class", "select-option", 4, "ngIf"], [1, "select-option", 3, "onSelectionChange", "value", "ngClass"], [1, "select-option"]], template: function SearchJudicialsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
136
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
137
|
+
i0.ɵɵelementStart(0, "div", 2)(1, "input", 3, 0);
|
|
138
|
+
i0.ɵɵlistener("keydown", function SearchJudicialsComponent_Template_input_keydown_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onKeyDown()); })("keyup", function SearchJudicialsComponent_Template_input_keyup_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onKeyUp($event)); })("focus", function SearchJudicialsComponent_Template_input_focus_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onFocus()); });
|
|
139
|
+
i0.ɵɵelementEnd();
|
|
140
|
+
i0.ɵɵelementStart(3, "mat-autocomplete", 4, 1);
|
|
141
|
+
i0.ɵɵtemplate(5, SearchJudicialsComponent_mat_option_5_Template, 2, 5, "mat-option", 5)(6, SearchJudicialsComponent_mat_option_6_Template, 2, 1, "mat-option", 6);
|
|
142
|
+
i0.ɵɵelementEnd()();
|
|
143
|
+
} if (rf & 2) {
|
|
144
|
+
const autoComplete_r5 = i0.ɵɵreference(4);
|
|
145
|
+
i0.ɵɵadvance();
|
|
146
|
+
i0.ɵɵpropertyInterpolate1("id", "inputSelectPerson", ctx.idValue, "");
|
|
147
|
+
i0.ɵɵproperty("placeholder", ctx.placeholderContent)("formControl", ctx.formGroup.controls.formControl)("matAutocomplete", autoComplete_r5)("value", ctx.getControlValueDisplayText());
|
|
148
|
+
i0.ɵɵattribute("disabled", !ctx.disabled ? null : ctx.disabled);
|
|
149
|
+
i0.ɵɵadvance(4);
|
|
150
|
+
i0.ɵɵproperty("ngForOf", ctx.displayedJudicialsDuplicationFiltered);
|
|
151
|
+
i0.ɵɵadvance();
|
|
152
|
+
i0.ɵɵproperty("ngIf", !(ctx.displayedJudicialsDuplicationFiltered == null ? null : ctx.displayedJudicialsDuplicationFiltered.length) && ctx.showAutocomplete && !ctx.searchInProgress);
|
|
153
|
+
} }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.FormControlDirective, i4.MatLegacyAutocomplete, i4.MatLegacyAutocompleteTrigger, i5.MatLegacyOption], styles: [".hide-autocomplete[_ngcontent-%COMP%]{display:none}.mat-option[_ngcontent-%COMP%]:hover{background:#2596be}.mat-option.select-option[_ngcontent-%COMP%]:hover{background:#1d70b8;color:#fff}"] }); }
|
|
154
|
+
}
|
|
155
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchJudicialsComponent, [{
|
|
156
|
+
type: Component,
|
|
157
|
+
args: [{ selector: 'xuilib-search-judicials', template: "<div class=\"govuk-form-group\">\n <input id=\"inputSelectPerson{{idValue}}\" [placeholder]=\"placeholderContent\" [formControl]=\"formGroup.controls.formControl\"\n [matAutocomplete]=\"autoComplete\" (keydown)=\"onKeyDown()\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus()\"\n class=\"govuk-input\" [attr.disabled]=\"!disabled ? null: disabled\" [value]=\"getControlValueDisplayText()\"\n #inputSelection>\n <mat-autocomplete autoActiveFirstOption #autoComplete=\"matAutocomplete\">\n <mat-option *ngFor=\"let judicial of displayedJudicialsDuplicationFiltered\" class=\"select-option\"\n [value]=\"getDisplayName(judicial)\" (onSelectionChange)=\"onSelectionChange(judicial)\"\n [ngClass]=\"{'hide-autocomplete': !showAutocomplete}\">\n {{ getDisplayName(judicial) }}\n </mat-option>\n <mat-option class=\"select-option\"\n *ngIf=\"!displayedJudicialsDuplicationFiltered?.length && showAutocomplete && !searchInProgress\">\n {{ 'No results found' }}</mat-option>\n </mat-autocomplete>\n</div>\n", styles: [".hide-autocomplete{display:none}.mat-option:hover{background:#2596be}.mat-option.select-option:hover{background:#1d70b8;color:#fff}\n"] }]
|
|
158
|
+
}], () => [{ type: i1.FindAPersonService }, { type: i2.FormBuilder }], { control: [{
|
|
159
|
+
type: Input
|
|
160
|
+
}], disabled: [{
|
|
161
|
+
type: Input
|
|
162
|
+
}], selectedJudicials: [{
|
|
163
|
+
type: Input
|
|
164
|
+
}], submitted: [{
|
|
165
|
+
type: Input
|
|
166
|
+
}], placeholderContent: [{
|
|
167
|
+
type: Input
|
|
168
|
+
}], showAutocomplete: [{
|
|
169
|
+
type: Input
|
|
170
|
+
}], displayedJudicials: [{
|
|
171
|
+
type: Input
|
|
172
|
+
}], judicialChanged: [{
|
|
173
|
+
type: Output
|
|
174
|
+
}], idValue: [{
|
|
175
|
+
type: Input
|
|
176
|
+
}], errorMessage: [{
|
|
177
|
+
type: Input
|
|
178
|
+
}], serviceId: [{
|
|
179
|
+
type: Input
|
|
180
|
+
}], autoCompleteInputBox: [{
|
|
181
|
+
type: ViewChild,
|
|
182
|
+
args: ['inputSelection', { read: ElementRef, static: true }]
|
|
183
|
+
}] }); })();
|
|
184
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchJudicialsComponent, { className: "SearchJudicialsComponent", filePath: "lib/components/search-judicials/search-judicials.component.ts", lineNumber: 13 }); })();
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWp1ZGljaWFscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1qdWRpY2lhbHMvc2VhcmNoLWp1ZGljaWFscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1qdWRpY2lhbHMvc2VhcmNoLWp1ZGljaWFscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pHLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7Ozs7Ozs7SUNDaEYscUNBRXVEO0lBRGxCLHFQQUFxQixxQ0FBMkIsS0FBQztJQUVwRixZQUNGO0lBQUEsaUJBQWE7Ozs7SUFGWCxBQURBLDBEQUFrQyxpRUFDa0I7SUFDcEQsY0FDRjtJQURFLG1FQUNGOzs7SUFDQSxxQ0FDa0c7SUFDaEcsWUFBd0I7SUFBQSxpQkFBYTs7SUFBckMsY0FBd0I7SUFBeEIsa0RBQXdCOztBREQ5QixNQUFNLE9BQU8sd0JBQXdCO0lBbUJuQyxZQUE2QixlQUFtQyxFQUFFLEVBQWU7UUFBcEQsb0JBQWUsR0FBZixlQUFlLENBQW9CO1FBaEJoRCxh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QkFJVjtZQUZtRSxBQUExQixBQUF4Qiw4SUFBVyxlQUFXLEtBQUMsbUlBQVUsbUJBQWUsS0FBQyw2SEFBVSxhQUFTLEtBQUM7WUFEeEcsaUJBR2tCO1lBQ2xCLDhDQUF3RTtZQU10RSxBQUxBLHVGQUV1RCwwRUFJMkM7WUFHdEcsQUFERSxpQkFBbUIsRUFDZjs7O1lBZEcsY0FBaUM7WUFBakMscUVBQWlDO1lBRTJCLEFBRGpFLEFBRDBFLEFBQW5DLG9EQUFrQyxtREFBK0Msb0NBQ3hGLDJDQUN1RTs7WUFHdEUsZUFBd0M7WUFBeEMsbUVBQXdDO1lBTXRFLGNBQTZGO1lBQTdGLHNMQUE2Rjs7O2lGREF2Rix3QkFBd0I7Y0FMcEMsU0FBUzsyQkFDRSx5QkFBeUI7NkVBTW5CLE9BQU87a0JBQXRCLEtBQUs7WUFDVSxRQUFRO2tCQUF2QixLQUFLO1lBQ1UsaUJBQWlCO2tCQUFoQyxLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLGdCQUFnQjtrQkFBL0IsS0FBSztZQUNVLGtCQUFrQjtrQkFBakMsS0FBSztZQUNXLGVBQWU7a0JBQS9CLE1BQU07WUFDUyxPQUFPO2tCQUF0QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDa0Usb0JBQW9CO2tCQUEzRixTQUFTO21CQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztrRkFicEQsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSnVkaWNpYWxVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgRmluZEFQZXJzb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmluZC1wZXJzb24vZmluZC1wZXJzb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3h1aWxpYi1zZWFyY2gtanVkaWNpYWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1qdWRpY2lhbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtanVkaWNpYWxzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoSnVkaWNpYWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWRKdWRpY2lhbHM6IEp1ZGljaWFsVXNlck1vZGVsW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIHN1Ym1pdHRlZD86IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXJDb250ZW50OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHNob3dBdXRvY29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGRpc3BsYXllZEp1ZGljaWFsczogSnVkaWNpYWxVc2VyTW9kZWxbXTtcbiAgQE91dHB1dCgpIHB1YmxpYyBqdWRpY2lhbENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEp1ZGljaWFsVXNlck1vZGVsPigpO1xuICBASW5wdXQoKSBwdWJsaWMgaWRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICdZb3UgbXVzdCBzZWxlY3QgYSBuYW1lJztcbiAgQElucHV0KCkgcHVibGljIHNlcnZpY2VJZDogc3RyaW5nID0gJyc7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0U2VsZWN0aW9uJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIGF1dG9Db21wbGV0ZUlucHV0Qm94OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBwdWJsaWMgc2VsZWN0ZWRKdWRpY2lhbDogSnVkaWNpYWxVc2VyTW9kZWw7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWluU2VhcmNoQ2hhcmFjdGVycyA9IDM7XG4gIHB1YmxpYyBrZXlVcFN1YmplY3QkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgc2VhcmNoSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkganVkaWNpYWxTZXJ2aWNlOiBGaW5kQVBlcnNvblNlcnZpY2UsIGZiOiBGb3JtQnVpbGRlcikge1xuICAgIHRoaXMuZm9ybUdyb3VwID0gZmIuZ3JvdXAoe1xuICAgICAgZm9ybUNvbnRyb2w6IFtudWxsXSxcbiAgICAgIHNlbGVjdGVkRm9ybUNvbnRyb2w6IFtudWxsXVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheWVkSnVkaWNpYWxzID0gW107XG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgaWYgKHRoaXMuZm9ybUdyb3VwICYmIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLnNlbGVjdGVkRm9ybUNvbnRyb2wgPSB0aGlzLmNvbnRyb2w7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZ2V0Q29udHJvbFZhbHVlRGlzcGxheVRleHQoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMua2V5VXBTdWJqZWN0JC5waXBlKGRlYm91bmNlVGltZSg1MDApKS5zdWJzY3JpYmUoc2VhcmNoVmFsdWUgPT4gdGhpcy5zZWFyY2goc2VhcmNoVmFsdWUgYXMgc3RyaW5nKSk7XG4gIH1cblxuICBwdWJsaWMgb25LZXlEb3duKCk6IHZvaWQge1xuICAgIHRoaXMuanVkaWNpYWxDaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleVVwKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dBdXRvY29tcGxldGUgPSBmYWxzZTtcbiAgICB0aGlzLmtleVVwU3ViamVjdCQubmV4dChldmVudC50YXJnZXQudmFsdWUpO1xuICB9XG5cbiAgcHVibGljIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5zaG93QXV0b2NvbXBsZXRlID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc3BsYXllZEp1ZGljaWFsc0R1cGxpY2F0aW9uRmlsdGVyZWQoKTogSnVkaWNpYWxVc2VyTW9kZWxbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheWVkSnVkaWNpYWxzLmZpbHRlcihcbiAgICAgIGp1ZGljaWFsID0+ICF0aGlzLnNlbGVjdGVkSnVkaWNpYWxzLm1hcChzZWxlY3RlZEp1ZGljaWFsID0+IHNlbGVjdGVkSnVkaWNpYWwuaWRhbUlkKS5pbmNsdWRlcyhqdWRpY2lhbC5pZGFtSWQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXIodGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hKdWRpY2lhbHModGVybSwgdGhpcy5zZXJ2aWNlSWQpLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoYXBpRGF0YTogSnVkaWNpYWxVc2VyTW9kZWxbXSkgPT4ge1xuICAgICAgICBjb25zdCBhcGlGaWx0ZXIgPSBhcGlEYXRhLmZpbHRlcihcbiAgICAgICAgICBhcGlKdWRpY2lhbCA9PiAhdGhpcy5zZWxlY3RlZEp1ZGljaWFscy5tYXAoc2VsZWN0ZWRKdWRpY2lhbCA9PiBzZWxlY3RlZEp1ZGljaWFsLmlkYW1JZCkuaW5jbHVkZXMoYXBpSnVkaWNpYWwuaWRhbUlkKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmRpc3BsYXllZEp1ZGljaWFscyA9IGFwaUZpbHRlcjtcbiAgICAgICAgdGhpcy5zZWFyY2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBhcGlGaWx0ZXI7XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKGp1ZGljaWFsID0+IHtcbiAgICAgIGlmICh0ZXJtID09PSBqdWRpY2lhbC5mdWxsTmFtZSkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5zZWxlY3RlZEZvcm1Db250cm9sLnNldFZhbHVlKGp1ZGljaWFsKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRKdWRpY2lhbHMgPSBbXTtcbiAgICAgICAgdGhpcy5qdWRpY2lhbENoYW5nZWQuZW1pdChqdWRpY2lhbCk7XG4gICAgICAgIHRoaXMuc2hvd0F1dG9jb21wbGV0ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWFyY2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2Uoc2VsZWN0aW9uPzogSnVkaWNpYWxVc2VyTW9kZWwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuY29udHJvbHMuZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICh0aGlzLmZvcm1Hcm91cC5jb250cm9scy5zZWxlY3RlZEZvcm1Db250cm9sIGFzIEZvcm1BcnJheSkucHVzaChuZXcgRm9ybUNvbnRyb2woc2VsZWN0aW9uLmlkYW1JZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5zZWxlY3RlZEZvcm1Db250cm9sLnNldFZhbHVlKHNlbGVjdGlvbik7XG4gICAgfVxuICAgIHRoaXMuanVkaWNpYWxDaGFuZ2VkLmVtaXQoc2VsZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2goY3VycmVudFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHRoaXMuc2hvd0F1dG9jb21wbGV0ZSA9ICEhY3VycmVudFZhbHVlICYmIChjdXJyZW50VmFsdWUubGVuZ3RoID49IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyk7XG4gICAgaWYgKCEhY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5zZWxlY3RlZEZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLnNlbGVjdGVkRm9ybUNvbnRyb2wucmVzZXQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd0F1dG9jb21wbGV0ZSkge1xuICAgICAgdGhpcy5maWx0ZXIoY3VycmVudFZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldERpc3BsYXlOYW1lKHNlbGVjdGVkSnVkaWNpYWw6IEp1ZGljaWFsVXNlck1vZGVsKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7c2VsZWN0ZWRKdWRpY2lhbC5mdWxsTmFtZX0gKCR7c2VsZWN0ZWRKdWRpY2lhbC5lbWFpbElkfSlgO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaEp1ZGljaWFscyh0ZXJtOiBzdHJpbmcsIHNlcnZpY2VJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxKdWRpY2lhbFVzZXJNb2RlbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuanVkaWNpYWxTZXJ2aWNlLnNlYXJjaEp1ZGljaWFsKHRlcm0sIHNlcnZpY2VJZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29udHJvbFZhbHVlRGlzcGxheVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAgJiYgdGhpcy5mb3JtR3JvdXAuY29udHJvbHMgJiYgdGhpcy5mb3JtR3JvdXAuY29udHJvbHMuc2VsZWN0ZWRGb3JtQ29udHJvbC52YWx1ZSA/XG4gICAgICB0aGlzLmdldERpc3BsYXlOYW1lKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLnNlbGVjdGVkRm9ybUNvbnRyb2wudmFsdWUgYXMgSnVkaWNpYWxVc2VyTW9kZWwpIDogJyc7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCI+XG4gIDxpbnB1dCBpZD1cImlucHV0U2VsZWN0UGVyc29ue3tpZFZhbHVlfX1cIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJDb250ZW50XCIgW2Zvcm1Db250cm9sXT1cImZvcm1Hcm91cC5jb250cm9scy5mb3JtQ29udHJvbFwiXG4gICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGVcIiAoa2V5ZG93bik9XCJvbktleURvd24oKVwiIChrZXl1cCk9XCJvbktleVVwKCRldmVudClcIiAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICBjbGFzcz1cImdvdnVrLWlucHV0XCIgW2F0dHIuZGlzYWJsZWRdPVwiIWRpc2FibGVkID8gbnVsbDogZGlzYWJsZWRcIiBbdmFsdWVdPVwiZ2V0Q29udHJvbFZhbHVlRGlzcGxheVRleHQoKVwiXG4gICAgI2lucHV0U2VsZWN0aW9uPlxuICA8bWF0LWF1dG9jb21wbGV0ZSBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG9Db21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBqdWRpY2lhbCBvZiBkaXNwbGF5ZWRKdWRpY2lhbHNEdXBsaWNhdGlvbkZpbHRlcmVkXCIgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCJcbiAgICAgIFt2YWx1ZV09XCJnZXREaXNwbGF5TmFtZShqdWRpY2lhbClcIiAob25TZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoanVkaWNpYWwpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnaGlkZS1hdXRvY29tcGxldGUnOiAhc2hvd0F1dG9jb21wbGV0ZX1cIj5cbiAgICAgIHt7IGdldERpc3BsYXlOYW1lKGp1ZGljaWFsKSB9fVxuICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIlxuICAgICAgKm5nSWY9XCIhZGlzcGxheWVkSnVkaWNpYWxzRHVwbGljYXRpb25GaWx0ZXJlZD8ubGVuZ3RoICYmIHNob3dBdXRvY29tcGxldGUgJiYgIXNlYXJjaEluUHJvZ3Jlc3NcIj5cbiAgICAgIHt7ICdObyByZXN1bHRzIGZvdW5kJyB9fTwvbWF0LW9wdGlvbj5cbiAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
|
+
import { iif, of } from 'rxjs';
|
|
4
|
+
import { catchError, 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)), catchError(() => {
|
|
112
|
+
// returns false so the user is not shown the no results found message
|
|
113
|
+
return of(false);
|
|
114
|
+
})), of(false))));
|
|
115
|
+
}
|
|
116
|
+
if (this.singleMode && this.selectedLocations.length > 0) {
|
|
117
|
+
const location = this.selectedLocations[0];
|
|
118
|
+
this.searchTermFormControl.patchValue(location[this.propertyNameFilter], { emitEvent: false, onlySelf: true });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
onSelectedLocation(location) {
|
|
122
|
+
this.searchTermFormControl.patchValue(location[this.propertyNameFilter], { emitEvent: false, onlySelf: true });
|
|
123
|
+
this.locationSelected.emit(location);
|
|
124
|
+
}
|
|
125
|
+
onInput() {
|
|
126
|
+
this.searchLocationChanged.emit();
|
|
127
|
+
}
|
|
128
|
+
getLocations(term) {
|
|
129
|
+
let userLocations;
|
|
130
|
+
// Booking type info - can create more
|
|
131
|
+
// NO_CHECK - All work - Do not filter out locations - Default assumption
|
|
132
|
+
// BOOKINGS_AND_BASE - My work - Try to only show base locations/regions
|
|
133
|
+
// POSSIBLE_BOOKINGS - Create booking screen - Show only potential bookings
|
|
134
|
+
if (this.bookingCheck === BookingCheckType.BOOKINGS_AND_BASE) {
|
|
135
|
+
userLocations = JSON.parse(this.sessionStorageService.getItem('userLocations'));
|
|
136
|
+
}
|
|
137
|
+
else if (this.bookingCheck === BookingCheckType.POSSIBLE_BOOKINGS) {
|
|
138
|
+
this.serviceIds = this.serviceIds && this.serviceIds.length ? this.serviceIds : JSON.parse(this.sessionStorageService.getItem('bookableServices'));
|
|
139
|
+
userLocations = JSON.parse(this.sessionStorageService.getItem('bookableUserLocations'));
|
|
140
|
+
}
|
|
141
|
+
// get all locations will resolve filter setting using objects above
|
|
142
|
+
// if no userLocations, NO_CHECK
|
|
143
|
+
// if just getting all substantive user locations, BOOKINGS_AND_BASE
|
|
144
|
+
// fee paid user locations are used for POSSIBLE_BOOKINGS
|
|
145
|
+
return this.locationService.getAllLocations(SearchLocationComponent.allLocationAPI, this.serviceIds, this.locationType, term, userLocations);
|
|
146
|
+
}
|
|
147
|
+
resetSearchTerm() {
|
|
148
|
+
this.searchTermFormControl.setValue('');
|
|
149
|
+
}
|
|
150
|
+
filterUnselectedLocations(locations, selectedLocations, singleMode) {
|
|
151
|
+
if (singleMode) {
|
|
152
|
+
return locations;
|
|
153
|
+
}
|
|
154
|
+
return locations.filter(location => !selectedLocations.map(selectedLocation => selectedLocation.epimms_id).includes(location.epimms_id) && location[this.propertyNameFilter]);
|
|
155
|
+
}
|
|
156
|
+
removeInvalidString(formInputValue) {
|
|
157
|
+
if (!this.isCharacterValid(formInputValue)) {
|
|
158
|
+
formInputValue.preventDefault();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
isCharacterValid(event) {
|
|
162
|
+
let pressed = undefined;
|
|
163
|
+
if (event.key !== undefined) {
|
|
164
|
+
pressed = event.key;
|
|
165
|
+
if (pressed.length > 1) {
|
|
166
|
+
switch (pressed) {
|
|
167
|
+
case 'Tab':
|
|
168
|
+
return true;
|
|
169
|
+
case 'ArrowRight':
|
|
170
|
+
return true;
|
|
171
|
+
case 'ArrowLeft':
|
|
172
|
+
return true;
|
|
173
|
+
case 'Backspace':
|
|
174
|
+
return true;
|
|
175
|
+
case 'Enter':
|
|
176
|
+
return true;
|
|
177
|
+
default: return false;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
else if (event.keyCode !== undefined) {
|
|
182
|
+
pressed = String.fromCharCode(event.keyCode);
|
|
183
|
+
}
|
|
184
|
+
return pressed && (/[a-zA-Z \s'-]/).test(pressed);
|
|
185
|
+
}
|
|
186
|
+
static { this.ɵfac = function SearchLocationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchLocationComponent)(i0.ɵɵdirectiveInject(i1.LocationService), i0.ɵɵdirectiveInject(i2.SessionStorageService), i0.ɵɵdirectiveInject(i3.RefDataService)); }; }
|
|
187
|
+
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) {
|
|
188
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
189
|
+
i0.ɵɵelementStart(0, "div", 2)(1, "input", 3, 0);
|
|
190
|
+
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()); });
|
|
191
|
+
i0.ɵɵelementEnd();
|
|
192
|
+
i0.ɵɵelementStart(3, "mat-autocomplete", 4, 1);
|
|
193
|
+
i0.ɵɵtemplate(5, SearchLocationComponent_ng_container_5_Template, 2, 1, "ng-container", 5);
|
|
194
|
+
i0.ɵɵpipe(6, "async");
|
|
195
|
+
i0.ɵɵelementEnd()();
|
|
196
|
+
} if (rf & 2) {
|
|
197
|
+
const autoSearchLocation_r6 = i0.ɵɵreference(4);
|
|
198
|
+
i0.ɵɵadvance();
|
|
199
|
+
i0.ɵɵproperty("formControl", ctx.searchTermFormControl)("matAutocomplete", autoSearchLocation_r6);
|
|
200
|
+
i0.ɵɵattribute("disabled", ctx.disabled);
|
|
201
|
+
i0.ɵɵadvance(4);
|
|
202
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 4, ctx.filteredList$));
|
|
203
|
+
} }, 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}"] }); }
|
|
204
|
+
}
|
|
205
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchLocationComponent, [{
|
|
206
|
+
type: Component,
|
|
207
|
+
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"] }]
|
|
208
|
+
}], () => [{ type: i1.LocationService }, { type: i2.SessionStorageService }, { type: i3.RefDataService }], { form: [{
|
|
209
|
+
type: Input
|
|
210
|
+
}], field: [{
|
|
211
|
+
type: Input
|
|
212
|
+
}], disabled: [{
|
|
213
|
+
type: Input
|
|
214
|
+
}], singleMode: [{
|
|
215
|
+
type: Input
|
|
216
|
+
}], locationType: [{
|
|
217
|
+
type: Input
|
|
218
|
+
}], serviceIds: [{
|
|
219
|
+
type: Input
|
|
220
|
+
}], submitted: [{
|
|
221
|
+
type: Input
|
|
222
|
+
}], bookingCheck: [{
|
|
223
|
+
type: Input
|
|
224
|
+
}], selectedLocations: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], propertyNameFilter: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}], delay: [{
|
|
229
|
+
type: Input
|
|
230
|
+
}], locationSelected: [{
|
|
231
|
+
type: Output
|
|
232
|
+
}], locationTermSearchInputChanged: [{
|
|
233
|
+
type: Output
|
|
234
|
+
}], searchLocationChanged: [{
|
|
235
|
+
type: Output
|
|
236
|
+
}], reset: [{
|
|
237
|
+
type: Input
|
|
238
|
+
}] }); })();
|
|
239
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchLocationComponent, { className: "SearchLocationComponent", filePath: "lib/components/search-location/search-location.component.ts", lineNumber: 20 }); })();
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dWktY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2VhcmNoLWxvY2F0aW9uL3NlYXJjaC1sb2NhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1sb2NhdGlvbi9zZWFyY2gtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUNMLGdCQUFnQixFQUlqQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7Ozs7Ozs7Ozs7SUNDL0YscUNBQXFHO0lBQW5ELG1SQUFxQixzQ0FBNEIsS0FBQztJQUNsRyxZQUNGO0lBQUEsaUJBQWE7Ozs7SUFEWCxjQUNGO0lBREUsdUVBQ0Y7OztJQUNBLGtDQUE4QztJQUFBLFlBQXFDOztJQUFBLGlCQUFhOztJQUFsRCxjQUFxQztJ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QUFDO0lBQ3BELENBQUM7d0hBcktVLHVCQUF1QjtvRUFBdkIsdUJBQXVCOztZQ2xCbEMsQUFERiw4QkFBcUMsa0JBU047WUFKM0IsQUFEQSxtSkFBVywrQkFBMkIsS0FBQyw0SEFDOUIsYUFBUyxLQUFDO1lBSnJCLGlCQVE2QjtZQUM3Qiw4Q0FBb0g7WUFDbEgsMEZBQTREOztZQVNoRSxBQURFLGlCQUFtQixFQUNmOzs7WUFkRixjQUFxQztZQUNyQyxBQURBLHVEQUFxQywwQ0FDQzs7WUFJdkIsZUFBNEI7WUFBNUIsOERBQTRCOzs7aUZEUWxDLHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLHNCQUFzQjtpSEFNaEIsSUFBSTtrQkFBbkIsS0FBSztZQUNVLEtBQUs7a0JBQXBCLEtBQUs7WUFDVSxRQUFRO2tCQUF2QixLQUFLO1lBQ1UsVUFBVTtrQkFBekIsS0FBSztZQUNVLFlBQVk7a0JBQTNCLEtBQUs7WUFDVSxVQUFVO2tCQUF6QixLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLFlBQVk7a0JBQTNCLEtBQUs7WUFDVSxpQkFBaUI7a0JBQWhDLEtBQUs7WUFDVSxrQkFBa0I7a0JBQWpDLEtBQUs7WUFDVSxLQUFLO2tCQUFwQixLQUFLO1lBQ1csZ0JBQWdCO2tCQUFoQyxNQUFNO1lBQ1UsOEJBQThCO2tCQUE5QyxNQUFNO1lBQ1UscUJBQXFCO2tCQUFyQyxNQUFNO1lBY0ksS0FBSztrQkFEZixLQUFLOztrRkE1QkssdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlpZiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEJvb2tpbmdDaGVja1R5cGUsIEZpbHRlckNvbmZpZ09wdGlvbixcbiAgRmlsdGVyRmllbGRDb25maWcsXG4gIExvY2F0aW9uQnlFUElNTVNNb2RlbCxcbiAgTG9jYXRpb25zQnlTZXJ2aWNlXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBMb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2NhdGlvbnMvbG9jYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBSZWZEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlZi1kYXRhJztcbmltcG9ydCB7IFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uvc2Vzc2lvbi1zdG9yYWdlL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXh1aS1zZWFyY2gtbG9jYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWxvY2F0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoTG9jYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBhbGxMb2NhdGlvbkFQSSA9IGBhcGkvbG9jYXRpb25zL2dldExvY2F0aW9uc2A7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZDogRmlsdGVyRmllbGRDb25maWc7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaW5nbGVNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2NhdGlvblR5cGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgc2VydmljZUlkczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJtaXR0ZWQ/OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGJvb2tpbmdDaGVjazogQm9va2luZ0NoZWNrVHlwZTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkTG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgcHJvcGVydHlOYW1lRmlsdGVyOiBrZXlvZiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWwgPSAnc2l0ZV9uYW1lJztcbiAgQElucHV0KCkgcHVibGljIGRlbGF5PzogbnVtYmVyID0gNTAwO1xuICBAT3V0cHV0KCkgcHVibGljIGxvY2F0aW9uU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPExvY2F0aW9uQnlFUElNTVNNb2RlbD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBsb2NhdGlvblRlcm1TZWFyY2hJbnB1dENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VhcmNoTG9jYXRpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIHB1YmxpYyBzZWFyY2hUZXJtRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgbWluU2VhcmNoQ2hhcmFjdGVycyA9IDM7XG4gIHB1YmxpYyB0ZXJtOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBwUmVzZXQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgZmlsdGVyZWRMaXN0JDogT2JzZXJ2YWJsZTxMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSB8IGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IGRlYm91bmNlVGltZUlucHV0ID0gMzAwO1xuICBwdWJsaWMgcHJldmlvdXNWYWx1ZSA9ICcnO1xuXG4gIHB1YmxpYyBnZXQgcmVzZXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucFJlc2V0O1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByZXNldCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMucFJlc2V0ID0gdmFsdWU7XG4gICAgdGhpcy5yZXNldFNlYXJjaFRlcm0oKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb25TZXJ2aWNlOiBMb2NhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZkRhdGFTZXJ2aWNlOiBSZWZEYXRhU2VydmljZVxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWFyY2hJbnB1dENoYW5nZXMkID0gdGhpcy5zZWFyY2hUZXJtRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh0ZXJtKSA9PiB0aGlzLmxvY2F0aW9uVGVybVNlYXJjaElucHV0Q2hhbmdlZC5lbWl0KHRlcm0pKVxuICAgICAgKTtcblxuICAgIC8vIGlmIHNlcnZpY2VzRmllbGQgZXhpc3RzLCB0aGVuIHdlIHNob3VsZCBmaWx0ZXIgbG9jYXRpb25zIGJ5IHRoZSBzZXJ2aWNlIGNvZGVzXG4gICAgaWYgKHRoaXMuZmllbGQgJiYgdGhpcy5maWVsZC5zZXJ2aWNlc0ZpZWxkKSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCQgPSBzZWFyY2hJbnB1dENoYW5nZXMkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodGVybTogc3RyaW5nKSA9PiBpaWYoXG4gICAgICAgICAgLy8gU2VlbXMgbW9yZSByZXNwb25zaXZlIHRvIGRvIGxlbmd0aCAwIGlmIGxvY2F0aW9uc0J5U2VydmljZUNvZGVzIGFyZSBjYWNoZWRcbiAgICAgICAgICAoKSA9PiAoISF0ZXJtICYmIHRlcm0ubGVuZ3RoID49IDApLFxuICAgICAgICAgIHRoaXMucmVmRGF0YVNlcnZpY2UuZ2V0TG9jYXRpb25zQnlTZXJ2aWNlQ29kZXMoXG4gICAgICAgICAgICAodGhpcy5mb3JtLmdldCh0aGlzLmZpZWxkLnNlcnZpY2VzRmllbGQpPy52YWx1ZSBhcyBGaWx0ZXJDb25maWdPcHRpb25bXSkubWFwKChzZXJ2aWNlKSA9PiBzZXJ2aWNlLmtleSlcbiAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICAvLyBGaWx0ZXIgbG9jYXRpb25zIGJ5IHRoZSBzZWFyY2ggaW5wdXQgdGVybSBhbmQgdGhlIGNob3NlbiBwcm9wZXJ0eSBuYW1lXG4gICAgICAgICAgICBtYXAoKGxvY2F0aW9ucykgPT4gbG9jYXRpb25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGxvY2F0aW9uKSA9PiBsb2NhdGlvblt0aGlzLnByb3BlcnR5TmFtZUZpbHRlcl0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtLnRvTG93ZXJDYXNlKCkpKSksXG4gICAgICAgICAgICAvLyBGaWx0ZXIgb3V0IGxvY2F0aW9ucyB0aGF0IGFyZSBhbHJlYWR5IHNlbGVjdGVkXG4gICAgICAgICAgICBtYXAoKGxvY2F0aW9ucykgPT4gdGhpcy5maWx0ZXJVbnNlbGVjdGVkTG9jYXRpb25zKGxvY2F0aW9ucywgdGhpcy5zZWxlY3RlZExvY2F0aW9ucywgdGhpcy5zaW5nbGVNb2RlKSksXG4gICAgICAgICAgICAvLyBGaWx0ZXIgb3V0IGR1cGxpY2F0ZSBsb2NhdGlvbnMgKGJ5IHByb3BlcnR5TmFtZUZpbHRlcilcbiAgICAgICAgICAgIG1hcCgobG9jYXRpb25zKSA9PiBsb2NhdGlvbnMuZmlsdGVyKChsb2NhdGlvbiwgaW5kZXgsIGFycmF5KSA9PlxuICAgICAgICAgICAgICBpbmRleCA9PT0gYXJyYXkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXSA9PT0gbG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgKSxcbiAgICAgICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBzZWFyY2ggdGVybSBpcyBlbXB0eSB0byBub3Qgc2hvdyB0aGUgYXV0b2NvbXBsZXRlIGZpZWxkIGkuZS4gbmdJZiBzaG91bGQgYmUgZmFsc2VcbiAgICAgICAgICBvZihmYWxzZSlcbiAgICAgICAgKSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCQgPSBzZWFyY2hJbnB1dENoYW5nZXMkLnBpcGUoXG4gICAgICAgIC8vIERlYm91bmNlIG5lZWRlZCB0byBwcmV2ZW50IG11bHRpcGxlIEFQSSBjYWxscyBiZWluZyBtYWRlXG4gICAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZUlucHV0KSxcbiAgICAgICAgc3dpdGNoTWFwKCh0ZXJtOiBzdHJpbmcpID0+IGlpZihcbiAgICAgICAgICAoKSA9PiAoISF0ZXJtICYmIHRlcm0ubGVuZ3RoID49IHRoaXMubWluU2VhcmNoQ2hhcmFjdGVycyksXG4gICAgICAgICAgdGhpcy5nZXRMb2NhdGlvbnModGVybSkucGlwZShcbiAgICAgICAgICAgIG1hcCgobG9jYXRpb25zKSA9PiB0aGlzLmZpbHRlclVuc2VsZWN0ZWRMb2NhdGlvbnMobG9jYXRpb25zLCB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLCB0aGlzLnNpbmdsZU1vZGUpKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgICAvLyByZXR1cm5zIGZhbHNlIHNvIHRoZSB1c2VyIGlzIG5vdCBzaG93biB0aGUgbm8gcmVzdWx0cyBmb3VuZCBtZXNzYWdlXG4gICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApLFxuICAgICAgICAgIG9mKGZhbHNlKVxuICAgICAgICApKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2luZ2xlTW9kZSAmJiB0aGlzLnNlbGVjdGVkTG9jYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5zZWxlY3RlZExvY2F0aW9uc1swXTtcbiAgICAgIHRoaXMuc2VhcmNoVGVybUZvcm1Db250cm9sLnBhdGNoVmFsdWUobG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdLCB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkTG9jYXRpb24obG9jYXRpb246IExvY2F0aW9uQnlFUElNTVNNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybUZvcm1Db250cm9sLnBhdGNoVmFsdWUobG9jYXRpb25bdGhpcy5wcm9wZXJ0eU5hbWVGaWx0ZXJdLCB7IGVtaXRFdmVudDogZmFsc2UsIG9ubHlTZWxmOiB0cnVlIH0pO1xuICAgIHRoaXMubG9jYXRpb25TZWxlY3RlZC5lbWl0KGxvY2F0aW9uKTtcbiAgfVxuICBwdWJsaWMgb25JbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaExvY2F0aW9uQ2hhbmdlZC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9jYXRpb25zKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8TG9jYXRpb25CeUVQSU1NU01vZGVsW10+IHtcbiAgICBsZXQgdXNlckxvY2F0aW9ucztcbiAgICAvLyBCb29raW5nIHR5cGUgaW5mbyAtIGNhbiBjcmVhdGUgbW9yZVxuICAgIC8vIE5PX0NIRUNLIC0gQWxsIHdvcmsgLSBEbyBub3QgZmlsdGVyIG91dCBsb2NhdGlvbnMgLSBEZWZhdWx0IGFzc3VtcHRpb25cbiAgICAvLyBCT09LSU5HU19BTkRfQkFTRSAtIE15IHdvcmsgLSBUcnkgdG8gb25seSBzaG93IGJhc2UgbG9jYXRpb25zL3JlZ2lvbnNcbiAgICAvLyBQT1NTSUJMRV9CT09LSU5HUyAtIENyZWF0ZSBib29raW5nIHNjcmVlbiAtIFNob3cgb25seSBwb3RlbnRpYWwgYm9va2luZ3NcbiAgICBpZiAodGhpcy5ib29raW5nQ2hlY2sgPT09IEJvb2tpbmdDaGVja1R5cGUuQk9PS0lOR1NfQU5EX0JBU0UpIHtcbiAgICAgIHVzZXJMb2NhdGlvbnMgPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJMb2NhdGlvbnMnKSkgYXMgTG9jYXRpb25zQnlTZXJ2aWNlW107XG4gICAgfSBlbHNlIGlmICh0aGlzLmJvb2tpbmdDaGVjayA9PT0gQm9va2luZ0NoZWNrVHlwZS5QT1NTSUJMRV9CT09LSU5HUykge1xuICAgICAgdGhpcy5zZXJ2aWNlSWRzID0gdGhpcy5zZXJ2aWNlSWRzICYmIHRoaXMuc2VydmljZUlkcy5sZW5ndGggPyB0aGlzLnNlcnZpY2VJZHMgOiBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2Jvb2thYmxlU2VydmljZXMnKSk7XG4gICAgICB1c2VyTG9jYXRpb25zID0gSlNPTi5wYXJzZSh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCdib29rYWJsZVVzZXJMb2NhdGlvbnMnKSkgYXMgTG9jYXRpb25zQnlTZXJ2aWNlW107XG4gICAgfVxuICAgIC8vIGdldCBhbGwgbG9jYXRpb25zIHdpbGwgcmVzb2x2ZSBmaWx0ZXIgc2V0dGluZyB1c2luZyBvYmplY3RzIGFib3ZlXG4gICAgLy8gaWYgbm8gdXNlckxvY2F0aW9ucywgTk9fQ0hFQ0tcbiAgICAvLyBpZiBqdXN0IGdldHRpbmcgYWxsIHN1YnN0YW50aXZlIHVzZXIgbG9jYXRpb25zLCBCT09LSU5HU19BTkRfQkFTRVxuICAgIC8vIGZlZSBwYWlkIHVzZXIgbG9jYXRpb25zIGFyZSB1c2VkIGZvciBQT1NTSUJMRV9CT09LSU5HU1xuICAgIHJldHVybiB0aGlzLmxvY2F0aW9uU2VydmljZS5nZXRBbGxMb2NhdGlvbnMoU2VhcmNoTG9jYXRpb25Db21wb25lbnQuYWxsTG9jYXRpb25BUEksIHRoaXMuc2VydmljZUlkcywgdGhpcy5sb2NhdGlvblR5cGUsIHRlcm0sIHVzZXJMb2NhdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0U2VhcmNoVGVybSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm1Gb3JtQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlclVuc2VsZWN0ZWRMb2NhdGlvbnMoXG4gICAgbG9jYXRpb25zOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSxcbiAgICBzZWxlY3RlZExvY2F0aW9uczogTG9jYXRpb25CeUVQSU1NU01vZGVsW10sXG4gICAgc2luZ2xlTW9kZTogYm9vbGVhblxuICApOiBMb2NhdGlvbkJ5RVBJTU1TTW9kZWxbXSB7XG4gICAgaWYgKHNpbmdsZU1vZGUpIHtcbiAgICAgIHJldHVybiBsb2NhdGlvbnM7XG4gICAgfVxuICAgIHJldHVybiBsb2NhdGlvbnMuZmlsdGVyKFxuICAgICAgbG9jYXRpb24gPT4gIXNlbGVjdGVkTG9jYXRpb25zLm1hcChzZWxlY3RlZExvY2F0aW9uID0+IHNlbGVjdGVkTG9jYXRpb24uZXBpbW1zX2lkKS5pbmNsdWRlcyhsb2NhdGlvbi5lcGltbXNfaWQpICYmIGxvY2F0aW9uW3RoaXMucHJvcGVydHlOYW1lRmlsdGVyXVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSW52YWxpZFN0cmluZyhmb3JtSW5wdXRWYWx1ZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICghdGhpcy5pc0NoYXJhY3RlclZhbGlkKGZvcm1JbnB1dFZhbHVlKSkge1xuICAgICAgZm9ybUlucHV0VmFsdWUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNDaGFyYWN0ZXJWYWxpZChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIGxldCBwcmVzc2VkID0gdW5kZWZpbmVkXG4gICAgaWYgKGV2ZW50LmtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcmVzc2VkID0gZXZlbnQua2V5O1xuICAgICAgaWYgKHByZXNzZWQubGVuZ3RoID4gMSkge1xuICAgICAgICBzd2l0Y2ggKHByZXNzZWQpIHtcbiAgICAgICAgICBjYXNlICdUYWInOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5Q29kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcmVzc2VkID0gU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5rZXlDb2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIHByZXNzZWQgJiYgKC9bYS16QS1aIFxccyctXS8pLnRlc3QocHJlc3NlZCk7XG4gIH1cblxufSIsIjxkaXYgY2xhc3M9XCJhdXRvLWNvbXBsZXRlLWNvbnRhaW5lclwiPlxuICA8aW5wdXRcbiAgICBpZD1cImlucHV0TG9jYXRpb25TZWFyY2hcIlxuICAgICNjaGFyXG4gICAgKGtleWRvd24pPVwicmVtb3ZlSW52YWxpZFN0cmluZygkZXZlbnQpXCJcbiAgICAoaW5wdXQpPVwib25JbnB1dCgpXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoVGVybUZvcm1Db250cm9sXCJcbiAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9TZWFyY2hMb2NhdGlvblwiXG4gICAgY2xhc3M9XCJnb3Z1ay1pbnB1dFwiXG4gICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgPG1hdC1hdXRvY29tcGxldGUgY2xhc3M9XCJtYXQtYXV0b2NvbXBsZXRlLXBhbmVsLWV4dGVuZFwiIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0b1NlYXJjaExvY2F0aW9uPVwibWF0QXV0b2NvbXBsZXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlcmVkTGlzdCQgfCBhc3luYyBhcyBmaWx0ZXJlZExpc3RcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXJlZExpc3QgJiYgZmlsdGVyZWRMaXN0Lmxlbmd0aCA+PSAwXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBsb2NhdGlvbiBvZiBmaWx0ZXJlZExpc3RcIiAob25TZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3RlZExvY2F0aW9uKGxvY2F0aW9uKVwiPlxuICAgICAgICAgIHt7IGxvY2F0aW9uW3Byb3BlcnR5TmFtZUZpbHRlcl0gfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImZpbHRlcmVkTGlzdC5sZW5ndGggPT09IDBcIj57eydObyByZXN1bHRzIGZvdW5kJyB8IHJweFRyYW5zbGF0ZX19PC9tYXQtb3B0aW9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,94 @@
|
|
|
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/material/legacy-autocomplete";
|
|
5
|
+
import * as i3 from "@angular/material/legacy-core";
|
|
6
|
+
function SearchServiceComponent_mat_option_4_Template(rf, ctx) { if (rf & 1) {
|
|
7
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
8
|
+
i0.ɵɵelementStart(0, "mat-option", 6);
|
|
9
|
+
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)); });
|
|
10
|
+
i0.ɵɵtext(1);
|
|
11
|
+
i0.ɵɵelementEnd();
|
|
12
|
+
} if (rf & 2) {
|
|
13
|
+
const service_r4 = ctx.$implicit;
|
|
14
|
+
i0.ɵɵproperty("value", service_r4.label);
|
|
15
|
+
i0.ɵɵadvance();
|
|
16
|
+
i0.ɵɵtextInterpolate1(" ", service_r4.label, " ");
|
|
17
|
+
} }
|
|
18
|
+
function SearchServiceComponent_mat_option_5_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
i0.ɵɵelementStart(0, "mat-option");
|
|
20
|
+
i0.ɵɵtext(1, " No results found ");
|
|
21
|
+
i0.ɵɵelementEnd();
|
|
22
|
+
} }
|
|
23
|
+
export class SearchServiceComponent {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.showAutocomplete = false;
|
|
26
|
+
this.searchTerm = ''; // Removed ngModel use here for Angular best practice
|
|
27
|
+
this.searchTermChange = new EventEmitter(); // Emit changes to searchTerm
|
|
28
|
+
this.optionChanged = new EventEmitter();
|
|
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
|
+
// TEST-TODO
|
|
38
|
+
resetSearchTerm() {
|
|
39
|
+
this.searchTerm = '';
|
|
40
|
+
this.searchTermChange.emit(this.searchTerm); // Emit the reset value
|
|
41
|
+
}
|
|
42
|
+
// TEST-TODO
|
|
43
|
+
// TODO: Confirm this works correctly post Angular 18 upgrade as has been changed
|
|
44
|
+
onSearchTermChanged(value) {
|
|
45
|
+
this.searchTerm = value;
|
|
46
|
+
this.searchTermChange.emit(this.searchTerm); // Emit the updated value
|
|
47
|
+
}
|
|
48
|
+
onSelectionChanged($event) {
|
|
49
|
+
const label = $event.source?.value;
|
|
50
|
+
if (label && $event.source.selected) {
|
|
51
|
+
const selectedService = this.options.find((s) => s.label === label);
|
|
52
|
+
this.optionChanged.emit(selectedService);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
static { this.ɵfac = function SearchServiceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchServiceComponent)(); }; }
|
|
56
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchServiceComponent, selectors: [["exui-search-service"]], inputs: { options: "options", selectedOptions: "selectedOptions", disabled: "disabled", showAutocomplete: "showAutocomplete", searchTerm: "searchTerm" }, outputs: { searchTermChange: "searchTermChange", optionChanged: "optionChanged" }, decls: 6, vars: 5, consts: [["autoSearchService", "matAutocomplete"], [1, "auto-complete-container"], ["id", "inputServiceSearch", 1, "govuk-input", 3, "input", "value", "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) {
|
|
57
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
58
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "input", 2);
|
|
59
|
+
i0.ɵɵlistener("input", function SearchServiceComponent_Template_input_input_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSearchTermChanged($event.target.value)); });
|
|
60
|
+
i0.ɵɵelementEnd();
|
|
61
|
+
i0.ɵɵelementStart(2, "mat-autocomplete", 3, 0);
|
|
62
|
+
i0.ɵɵtemplate(4, SearchServiceComponent_mat_option_4_Template, 2, 2, "mat-option", 4)(5, SearchServiceComponent_mat_option_5_Template, 2, 0, "mat-option", 5);
|
|
63
|
+
i0.ɵɵelementEnd()();
|
|
64
|
+
} if (rf & 2) {
|
|
65
|
+
const autoSearchService_r5 = i0.ɵɵreference(3);
|
|
66
|
+
i0.ɵɵadvance();
|
|
67
|
+
i0.ɵɵproperty("value", ctx.searchTerm)("matAutocomplete", autoSearchService_r5);
|
|
68
|
+
i0.ɵɵattribute("disabled", ctx.disabled);
|
|
69
|
+
i0.ɵɵadvance(3);
|
|
70
|
+
i0.ɵɵproperty("ngForOf", ctx.filteredOptions);
|
|
71
|
+
i0.ɵɵadvance();
|
|
72
|
+
i0.ɵɵproperty("ngIf", !(ctx.filteredOptions == null ? null : ctx.filteredOptions.length) && ctx.showAutocomplete);
|
|
73
|
+
} }, dependencies: [i1.NgForOf, i1.NgIf, i2.MatLegacyAutocomplete, i2.MatLegacyAutocompleteTrigger, i3.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}"] }); }
|
|
74
|
+
}
|
|
75
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchServiceComponent, [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'exui-search-service', template: "<div class=\"auto-complete-container\">\n <input id=\"inputServiceSearch\"\n class=\"govuk-input\"\n [value]=\"searchTerm\"\n (input)=\"onSearchTermChanged($event.target.value)\"\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"] }]
|
|
78
|
+
}], null, { options: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}], selectedOptions: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], disabled: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], showAutocomplete: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], searchTerm: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}], searchTermChange: [{
|
|
89
|
+
type: Output
|
|
90
|
+
}], optionChanged: [{
|
|
91
|
+
type: Output
|
|
92
|
+
}] }); })();
|
|
93
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchServiceComponent, { className: "SearchServiceComponent", filePath: "lib/components/search-service/search-service.component.ts", lineNumber: 10 }); })();
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXNlcnZpY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh1aS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9zZWFyY2gtc2VydmljZS9zZWFyY2gtc2VydmljZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9leHVpLWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL3NlYXJjaC1zZXJ2aWNlL3NlYXJjaC1zZXJ2aWNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7SUNRbkUscUNBQTZIO0lBQXpFLDJOQUFxQixpQ0FBMEIsS0FBQztJQUNsRyxZQUNGO0lBQUEsaUJBQWE7OztJQUZ3Rix3Q0FBdUI7SUFDMUgsY0FDRjtJQURFLGlEQUNGOzs7SUFDQSxrQ0FBaUU7SUFDL0Qsa0NBQ0Y7SUFBQSxpQkFBYTs7QURKakIsTUFBTSxPQUFPLHNCQUFzQjtJQUxuQztRQVNrQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsZUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDLHFEQUFxRDtRQUNyRSxxQkFBZ0IsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQyxDQUFDLDZCQUE2QjtRQUNsRyxrQkFBYSxHQUFxQyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUMxRiwwQkFBcUIsR0FBRyxDQUFDLENBQUM7S0E4QjNDO0lBNUJDLElBQVcsZUFBZTtRQUN4QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTNHLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDNUQsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDOUYsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO0lBQ3hCLENBQUM7SUFFRCxZQUFZO0lBQ0wsZUFBZTtRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtJQUN0RSxDQUFDO0lBRUQsWUFBWTtJQUNaLGlGQUFpRjtJQUMxRSxtQkFBbUIsQ0FBQyxLQUFhO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMseUJBQXlCO0lBQ3hFLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxNQUFnQztRQUN4RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztRQUNuQyxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO3VIQXJDVSxzQkFBc0I7b0VBQXRCLHNCQUFzQjs7WUNSakMsQUFERiw4QkFBcUMsZUFNRDtZQUYzQiw4SUFBUyw0Q0FBd0MsS0FBQztZQUh6RCxpQkFLa0M7WUFDbEMsOENBQW1IO1lBSWpILEFBSEEscUZBQTZILHdFQUc1RDtZQUlyRSxBQURFLGlCQUFtQixFQUNmOzs7WUFaRyxjQUFvQjtZQUVwQixBQUZBLHNDQUFvQix5Q0FFaUI7O1lBR1YsZUFBa0I7WUFBbEIsNkNBQWtCO1lBR3JDLGNBQWtEO1lBQWxELGlIQUFrRDs7O2lGREZ0RCxzQkFBc0I7Y0FMbEMsU0FBUzsyQkFDRSxxQkFBcUI7Z0JBS2YsT0FBTztrQkFBdEIsS0FBSztZQUNVLGVBQWU7a0JBQTlCLEtBQUs7WUFDVSxRQUFRO2tCQUF2QixLQUFLO1lBQ1UsZ0JBQWdCO2tCQUEvQixLQUFLO1lBQ1UsVUFBVTtrQkFBekIsS0FBSztZQUNXLGdCQUFnQjtrQkFBaEMsTUFBTTtZQUNVLGFBQWE7a0JBQTdCLE1BQU07O2tGQVBJLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWdPcHRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgTWF0TGVnYWN5T3B0aW9uU2VsZWN0aW9uQ2hhbmdlIGFzIE1hdE9wdGlvblNlbGVjdGlvbkNoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXh1aS1zZWFyY2gtc2VydmljZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtc2VydmljZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1zZXJ2aWNlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBvcHRpb25zOiBGaWx0ZXJDb25maWdPcHRpb25bXTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGVkT3B0aW9uczogRmlsdGVyQ29uZmlnT3B0aW9uW107XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZDogYW55O1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd0F1dG9jb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgc2VhcmNoVGVybSA9ICcnOyAvLyBSZW1vdmVkIG5nTW9kZWwgdXNlIGhlcmUgZm9yIEFuZ3VsYXIgYmVzdCBwcmFjdGljZVxuICBAT3V0cHV0KCkgcHVibGljIHNlYXJjaFRlcm1DaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7IC8vIEVtaXQgY2hhbmdlcyB0byBzZWFyY2hUZXJtXG4gIEBPdXRwdXQoKSBwdWJsaWMgb3B0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEZpbHRlckNvbmZpZ09wdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNvbmZpZ09wdGlvbj4oKTtcbiAgcHVibGljIHJlYWRvbmx5IE1JTl9TRUFSQ0hfQ0hBUkFDVEVSUyA9IDM7XG5cbiAgcHVibGljIGdldCBmaWx0ZXJlZE9wdGlvbnMoKTogRmlsdGVyQ29uZmlnT3B0aW9uW10ge1xuICAgIGNvbnN0IHJlbWFpbmluZ1NlcnZpY2VzID0gdGhpcy5vcHRpb25zLmZpbHRlcigocykgPT4gIXRoaXMuc2VsZWN0ZWRPcHRpb25zLmZpbmQoKHNzKSA9PiBzcy5rZXkgPT09IHMua2V5KSk7XG5cbiAgICByZXR1cm4gdGhpcy5zZWFyY2hUZXJtPy5sZW5ndGggPj0gdGhpcy5NSU5fU0VBUkNIX0NIQVJBQ1RFUlMgP1xuICAgICAgcmVtYWluaW5nU2VydmljZXMuZmlsdGVyKChzKSA9PiBzLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpKVxuICAgICAgOiByZW1haW5pbmdTZXJ2aWNlcztcbiAgfVxuXG4gIC8vIFRFU1QtVE9ET1xuICBwdWJsaWMgcmVzZXRTZWFyY2hUZXJtKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIHRoaXMuc2VhcmNoVGVybUNoYW5nZS5lbWl0KHRoaXMuc2VhcmNoVGVybSk7IC8vIEVtaXQgdGhlIHJlc2V0IHZhbHVlXG4gIH1cblxuICAvLyBURVNULVRPRE9cbiAgLy8gVE9ETzogQ29uZmlybSB0aGlzIHdvcmtzIGNvcnJlY3RseSBwb3N0IEFuZ3VsYXIgMTggdXBncmFkZSBhcyBoYXMgYmVlbiBjaGFuZ2VkXG4gIHB1YmxpYyBvblNlYXJjaFRlcm1DaGFuZ2VkKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0gPSB2YWx1ZTtcbiAgICB0aGlzLnNlYXJjaFRlcm1DaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaFRlcm0pOyAvLyBFbWl0IHRoZSB1cGRhdGVkIHZhbHVlXG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2VkKCRldmVudDogTWF0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlKTogdm9pZCB7XG4gICAgY29uc3QgbGFiZWwgPSAkZXZlbnQuc291cmNlPy52YWx1ZTtcbiAgICBpZiAobGFiZWwgJiYgJGV2ZW50LnNvdXJjZS5zZWxlY3RlZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRTZXJ2aWNlID0gdGhpcy5vcHRpb25zLmZpbmQoKHMpID0+IHMubGFiZWwgPT09IGxhYmVsKTtcbiAgICAgIHRoaXMub3B0aW9uQ2hhbmdlZC5lbWl0KHNlbGVjdGVkU2VydmljZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXV0by1jb21wbGV0ZS1jb250YWluZXJcIj5cbiAgPGlucHV0IGlkPVwiaW5wdXRTZXJ2aWNlU2VhcmNoXCJcbiAgICAgICAgIGNsYXNzPVwiZ292dWstaW5wdXRcIlxuICAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgKGlucHV0KT1cIm9uU2VhcmNoVGVybUNoYW5nZWQoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvU2VhcmNoU2VydmljZVwiXG4gICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICA8bWF0LWF1dG9jb21wbGV0ZSBjbGFzcz1cIm1hdC1hdXRvY29tcGxldGUtcGFuZWwtZXh0ZW5kXCIgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvU2VhcmNoU2VydmljZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzZXJ2aWNlIG9mIGZpbHRlcmVkT3B0aW9uc1wiIChvblNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiIFt2YWx1ZV09XCJzZXJ2aWNlLmxhYmVsXCI+XG4gICAgICB7eyBzZXJ2aWNlLmxhYmVsIH19XG4gICAgPC9tYXQtb3B0aW9uPlxuICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiIWZpbHRlcmVkT3B0aW9ucz8ubGVuZ3RoICYmIHNob3dBdXRvY29tcGxldGVcIj5cbiAgICAgIE5vIHJlc3VsdHMgZm91bmRcbiAgICA8L21hdC1vcHRpb24+XG4gIDwvbWF0LWF1dG9jb21wbGV0ZT5cbjwvZGl2PlxuIl19
|