@ti-tecnologico-de-monterrey-oficial/ds-ng 1.5.1118 → 1.5.1119-a
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/assets/styles/main.min.css +1 -1
- package/assets/styles/main.min.css.map +1 -1
- package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +849 -711
- package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
- package/lib/components/bmb-container-button/bmb-container-button.component.d.ts +9 -0
- package/lib/components/bmb-modal/bmb-modal.interface.d.ts +6 -2
- package/lib/components/bmb-modal/bmb-native-modal.component.d.ts +10 -3
- package/lib/components/bmb-portal/bmb-portal.component.d.ts +6 -2
- package/lib/components/bmb-portal/bmb-projected-content/bmb-projected-content.component.d.ts +42 -0
- package/lib/components/bmb-step-progress-bar/bmb-step-progress-bar.component.d.ts +1 -7
- package/lib/components/bmb-top-bar/bmb-top-bar-user-section/bmb-top-bar-user-section.component.d.ts +8 -8
- package/lib/components/bmb-top-bar/bmb-top-bar.component.d.ts +16 -17
- package/lib/components/bmb-totp/bmb-totp.component.d.ts +1 -0
- package/lib/ds-ng.component.d.ts +1 -1
- package/lib/services/projection.service.d.ts +30 -0
- package/package.json +1 -3
- package/public-api.d.ts +1 -0
- package/esm2022/lib/components/bmb-academic-progress/bmb-academic-progress.component.mjs +0 -87
- package/esm2022/lib/components/bmb-accordion/bmb-accordion.component.mjs +0 -159
- package/esm2022/lib/components/bmb-account-statement/bmb-account-statement.component.mjs +0 -150
- package/esm2022/lib/components/bmb-action-icon/bmb-action-icon.component.mjs +0 -49
- package/esm2022/lib/components/bmb-action-menu/bmb-action-menu.component.mjs +0 -31
- package/esm2022/lib/components/bmb-advertisement-card/bmb-advertisement-card.component.mjs +0 -35
- package/esm2022/lib/components/bmb-advertisement-card/types.mjs +0 -2
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-ads/bmb-alert-center-ads.component.mjs +0 -40
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-empty/bmb-alert-center-empty.component.mjs +0 -18
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-form/bmb-alert-center-form.component.mjs +0 -148
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-list/bmb-alert-center-list.component.mjs +0 -52
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.component.mjs +0 -196
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.service.mjs +0 -62
- package/esm2022/lib/components/bmb-alert-center/types.mjs +0 -2
- package/esm2022/lib/components/bmb-badge/bmb-badge.component.mjs +0 -26
- package/esm2022/lib/components/bmb-balance-overview/bmb-balance-overview.component.mjs +0 -26
- package/esm2022/lib/components/bmb-bookmark/bmb-bookmark.component.mjs +0 -27
- package/esm2022/lib/components/bmb-bottom-navigation-bar/bmb-bottom-navigation-bar.component.mjs +0 -42
- package/esm2022/lib/components/bmb-breadcrumb/bmb-breadcrumb.component.mjs +0 -55
- package/esm2022/lib/components/bmb-button-icon/bmb-button-icon.component.mjs +0 -30
- package/esm2022/lib/components/bmb-calendar/bmb-calendar.component.mjs +0 -262
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-header/bmb-calendar-header.component.mjs +0 -95
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-hour-view/bmb-calendar-hour-view.component.mjs +0 -40
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-schedule-cards/bmb-calendar-schedule-cards.component.mjs +0 -68
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-day/bmb-calendar-template-day.component.mjs +0 -41
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-event-list/bmb-calendar-template-event-list.component.mjs +0 -63
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.mjs +0 -95
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-month/bmb-calendar-template-month.component.mjs +0 -45
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-week/bmb-calendar-template-week.component.mjs +0 -54
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-time-indicator/bmb-calendar-time-indicator.component.mjs +0 -24
- package/esm2022/lib/components/bmb-calendar/types.mjs +0 -2
- package/esm2022/lib/components/bmb-calendar/utils.mjs +0 -96
- package/esm2022/lib/components/bmb-card/bmb-card.component.mjs +0 -154
- package/esm2022/lib/components/bmb-card-button/bmb-card-button.component.mjs +0 -76
- package/esm2022/lib/components/bmb-carousel/bmb-carousel.component.mjs +0 -80
- package/esm2022/lib/components/bmb-chat-bar/bmb-chat-bar.component.mjs +0 -175
- package/esm2022/lib/components/bmb-chat-bar/bot_list.mjs +0 -57
- package/esm2022/lib/components/bmb-chat-bar/types.mjs +0 -2
- package/esm2022/lib/components/bmb-chat-bubbles/bmb-chat-bubbles.component.mjs +0 -56
- package/esm2022/lib/components/bmb-chat-bubbles/types.mjs +0 -2
- package/esm2022/lib/components/bmb-check-external-link-button/bmb-check-external-link-button.component.mjs +0 -46
- package/esm2022/lib/components/bmb-checkbox/bmb-checkbox.component.mjs +0 -80
- package/esm2022/lib/components/bmb-chevron-title-selector/bmb-chevron-title-selector.component.mjs +0 -36
- package/esm2022/lib/components/bmb-container/bmb-container.component.mjs +0 -27
- package/esm2022/lib/components/bmb-container-button/bmb-container-button.component.mjs +0 -83
- package/esm2022/lib/components/bmb-date-range/bmb-date-range.component.mjs +0 -69
- package/esm2022/lib/components/bmb-datepicker/bmb-datepicker-modal/bmb-datepicker-modal.component.mjs +0 -211
- package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +0 -123
- package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +0 -54
- package/esm2022/lib/components/bmb-divider/bmb-divider.component.mjs +0 -25
- package/esm2022/lib/components/bmb-dot-paginator/bmb-dot-paginator.component.mjs +0 -34
- package/esm2022/lib/components/bmb-drawer-overlay/bmb-drawer-overlay.component.mjs +0 -54
- package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +0 -200
- package/esm2022/lib/components/bmb-dropdown-menu/bmb-dropdown-menu.component.mjs +0 -28
- package/esm2022/lib/components/bmb-dropzone/bmb-dropzone.component.mjs +0 -175
- package/esm2022/lib/components/bmb-evaluation-rubric/bmb-evaluation-rubric.component.mjs +0 -76
- package/esm2022/lib/components/bmb-external-link/bmb-external-link.component.mjs +0 -78
- package/esm2022/lib/components/bmb-fab/bmb-fab-.interface.mjs +0 -9
- package/esm2022/lib/components/bmb-fab/bmb-fab.component.mjs +0 -37
- package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.component.mjs +0 -154
- package/esm2022/lib/components/bmb-filter-card/bmb-filter-card.interface.mjs +0 -2
- package/esm2022/lib/components/bmb-focus-element/bmb-focus-element.component.mjs +0 -36
- package/esm2022/lib/components/bmb-form-validation/bmb-form-validation.component.mjs +0 -159
- package/esm2022/lib/components/bmb-form-validator/bmb-form-validator.component.mjs +0 -159
- package/esm2022/lib/components/bmb-frequent-apps-selector/bmb-frequent-apps-selector.component.mjs +0 -29
- package/esm2022/lib/components/bmb-grade-value/bmb-grade-value.component.mjs +0 -22
- package/esm2022/lib/components/bmb-grades/bmb-grades.component.mjs +0 -181
- package/esm2022/lib/components/bmb-grades/types.mjs +0 -2
- package/esm2022/lib/components/bmb-header-mitec/bmb-header-mitec.component.mjs +0 -55
- package/esm2022/lib/components/bmb-header-mobile/bmb-header-mobile.component.mjs +0 -49
- package/esm2022/lib/components/bmb-hito-card/bmb-hito-card.component.mjs +0 -77
- package/esm2022/lib/components/bmb-hito-list/bmb-hito-list.component.mjs +0 -59
- package/esm2022/lib/components/bmb-home-card/bmb-home-card-header/bmb-home-card-header.component.mjs +0 -76
- package/esm2022/lib/components/bmb-home-card/bmb-home-card.component.mjs +0 -41
- package/esm2022/lib/components/bmb-home-card-chat/bmb-home-card-chat.component.mjs +0 -39
- package/esm2022/lib/components/bmb-home-section/bmb-home-section.component.mjs +0 -20
- package/esm2022/lib/components/bmb-icon/bmb-icon.component.mjs +0 -49
- package/esm2022/lib/components/bmb-icon/types.mjs +0 -2
- package/esm2022/lib/components/bmb-icon-item/bmb-icon-item.component.mjs +0 -23
- package/esm2022/lib/components/bmb-icon-status/bmb-icon-status.component.mjs +0 -24
- package/esm2022/lib/components/bmb-iframe/bmb-iframe.component.mjs +0 -19
- package/esm2022/lib/components/bmb-iframe/bmb-iframe.pipe.mjs +0 -21
- package/esm2022/lib/components/bmb-image/bmb-image.component.mjs +0 -33
- package/esm2022/lib/components/bmb-inner-header/bmb-inner-header.component.mjs +0 -77
- package/esm2022/lib/components/bmb-input/bmb-input-content/bmb-input-content.component.mjs +0 -147
- package/esm2022/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.component.mjs +0 -162
- package/esm2022/lib/components/bmb-input/bmb-input-validation/bmb-input-validation.service.mjs +0 -116
- package/esm2022/lib/components/bmb-input/bmb-input-validator/bmb-input-validator.component.mjs +0 -178
- package/esm2022/lib/components/bmb-input/bmb-input.component.mjs +0 -85
- package/esm2022/lib/components/bmb-input-phone-number/bmb-input-phone-number.component.mjs +0 -219
- package/esm2022/lib/components/bmb-input-tags/bmb-input-tags.component.mjs +0 -191
- package/esm2022/lib/components/bmb-interactive-icon/bmb-interactive-icon.component.mjs +0 -54
- package/esm2022/lib/components/bmb-invoice/bmb-invoice.component.mjs +0 -34
- package/esm2022/lib/components/bmb-item/bmb-item.component.mjs +0 -28
- package/esm2022/lib/components/bmb-legend/bmb-legend.component.mjs +0 -23
- package/esm2022/lib/components/bmb-list-group/bmb-list-group-item/bmb-list-group-item.component.mjs +0 -83
- package/esm2022/lib/components/bmb-list-group/bmb-list-group.component.mjs +0 -60
- package/esm2022/lib/components/bmb-list-group/bmb-list-group.service.mjs +0 -55
- package/esm2022/lib/components/bmb-list-group/types.mjs +0 -2
- package/esm2022/lib/components/bmb-list-items/bmb-list-items.component.mjs +0 -83
- package/esm2022/lib/components/bmb-loader/bmb-loader.component.mjs +0 -77
- package/esm2022/lib/components/bmb-login/bmb-login-content/bmb-login-content.component.mjs +0 -55
- package/esm2022/lib/components/bmb-login/bmb-login.component.mjs +0 -66
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logged/bmb-login-onboarding-logged.component.mjs +0 -40
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-login/bmb-login-onboarding-login.component.mjs +0 -20
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-logout/bmb-login-onboarding-logout.component.mjs +0 -33
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-four.component.mjs +0 -87
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-one.component.mjs +0 -88
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-three.component.mjs +0 -57
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step-two.component.mjs +0 -99
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper-steps/bmb-login-onboarding-stepper-step.component.mjs +0 -39
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding-stepper/bmb-login-onboarding-stepper.component.mjs +0 -44
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.component.mjs +0 -52
- package/esm2022/lib/components/bmb-login-onboarding/bmb-login-onboarding.service.mjs +0 -70
- package/esm2022/lib/components/bmb-login-onboarding/types.mjs +0 -2
- package/esm2022/lib/components/bmb-logo/bmb-logo.component.mjs +0 -43
- package/esm2022/lib/components/bmb-media-card/bmb-media-card.component.mjs +0 -64
- package/esm2022/lib/components/bmb-mitec-logo-animation/bmb-mitec-logo-animation.component.mjs +0 -14
- package/esm2022/lib/components/bmb-mobile-templates/bmb-mobile-templates.component.mjs +0 -88
- package/esm2022/lib/components/bmb-modal/bmb-modal.component.mjs +0 -139
- package/esm2022/lib/components/bmb-modal/bmb-modal.interface.mjs +0 -2
- package/esm2022/lib/components/bmb-modal/bmb-native-modal.component.mjs +0 -84
- package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator-item/bmb-multi-dot-paginator-item.component.mjs +0 -15
- package/esm2022/lib/components/bmb-multi-dot-paginator/bmb-multi-dot-paginator.component.mjs +0 -59
- package/esm2022/lib/components/bmb-navigation-bar/bmb-navigation-bar.component.mjs +0 -30
- package/esm2022/lib/components/bmb-notice-card/bmb-notice-card.component.mjs +0 -43
- package/esm2022/lib/components/bmb-notification-card/bmb-notification-card.component.mjs +0 -86
- package/esm2022/lib/components/bmb-overlay/bmb-overlay.component.mjs +0 -22
- package/esm2022/lib/components/bmb-paginator/bmb-paginator.component.mjs +0 -52
- package/esm2022/lib/components/bmb-portal/bmb-portal.component.mjs +0 -52
- package/esm2022/lib/components/bmb-profile/bmb-profile.component.mjs +0 -153
- package/esm2022/lib/components/bmb-progress-bar/bmb-progress-bar.component.mjs +0 -39
- package/esm2022/lib/components/bmb-progress-cirlce/bmb-progress-circle.component.mjs +0 -196
- package/esm2022/lib/components/bmb-progress-cirlce/bmb-progress-circle.interface.mjs +0 -2
- package/esm2022/lib/components/bmb-pull-wedge/bmb-pull-wedge.component.mjs +0 -88
- package/esm2022/lib/components/bmb-push-notification/bmb-push-notification-item/bmb-push-notification-item.component.mjs +0 -75
- package/esm2022/lib/components/bmb-push-notification/bmb-push-notification.component.mjs +0 -24
- package/esm2022/lib/components/bmb-push-notification/types.mjs +0 -2
- package/esm2022/lib/components/bmb-radial/bmb-radial.component.mjs +0 -78
- package/esm2022/lib/components/bmb-search-input/bmb-search-input.component.mjs +0 -117
- package/esm2022/lib/components/bmb-select/bmb-select-item/bmb-select-item.component.mjs +0 -16
- package/esm2022/lib/components/bmb-select/bmb-select.component.mjs +0 -55
- package/esm2022/lib/components/bmb-server-table/bmb-server-table.component.mjs +0 -82
- package/esm2022/lib/components/bmb-sidebar/bmb-sidebar.component.mjs +0 -103
- package/esm2022/lib/components/bmb-sidebar/bmb-sidebar.interface.mjs +0 -2
- package/esm2022/lib/components/bmb-simple-header/bmb-simple-header.component.mjs +0 -64
- package/esm2022/lib/components/bmb-skeleton/bmb-skeleton.component.mjs +0 -16
- package/esm2022/lib/components/bmb-sounds-card/bmb-sounds-card.component.mjs +0 -64
- package/esm2022/lib/components/bmb-stat-counter/bmb-stat-counter.component.mjs +0 -32
- package/esm2022/lib/components/bmb-step-progress-bar/bmb-step-progress-bar.component.mjs +0 -53
- package/esm2022/lib/components/bmb-student-activity-card/bmb-student-activity-card.component.mjs +0 -53
- package/esm2022/lib/components/bmb-student-activity-selector/bmb-student-activity-tab/bmb-student-activity-tab.component.mjs +0 -27
- package/esm2022/lib/components/bmb-switch/bmb-switch.component.mjs +0 -88
- package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +0 -545
- package/esm2022/lib/components/bmb-tables/bmb-tables.interface.mjs +0 -2
- package/esm2022/lib/components/bmb-tabs/bmb-tabs.component.mjs +0 -127
- package/esm2022/lib/components/bmb-tags/bmb-tags.component.mjs +0 -65
- package/esm2022/lib/components/bmb-text-editor/bmb-text-editor.component.mjs +0 -135
- package/esm2022/lib/components/bmb-text-link/bmb-text-link.component.mjs +0 -43
- package/esm2022/lib/components/bmb-theme/bmb-theme.component.mjs +0 -65
- package/esm2022/lib/components/bmb-three-cols/bmb-three-cols.component.mjs +0 -30
- package/esm2022/lib/components/bmb-timestream/bmb-timestream-detail/bmb-timestream-detail.component.mjs +0 -74
- package/esm2022/lib/components/bmb-timestream/bmb-timestream-error/bmb-timestream-error.component.mjs +0 -13
- package/esm2022/lib/components/bmb-timestream/bmb-timestream.component.mjs +0 -238
- package/esm2022/lib/components/bmb-timestream/types.mjs +0 -2
- package/esm2022/lib/components/bmb-timestream-card/bmb-timestream-card.component.mjs +0 -139
- package/esm2022/lib/components/bmb-title-content/bmb-title-content.component.mjs +0 -61
- package/esm2022/lib/components/bmb-toast/bmb-toast.component.mjs +0 -47
- package/esm2022/lib/components/bmb-tooltip/bmb-tooltip.component.mjs +0 -26
- package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-item/bmb-top-bar-item.component.mjs +0 -31
- package/esm2022/lib/components/bmb-top-bar/bmb-top-bar-user-section/bmb-top-bar-user-section.component.mjs +0 -70
- package/esm2022/lib/components/bmb-top-bar/bmb-top-bar.component.mjs +0 -122
- package/esm2022/lib/components/bmb-top-bar/types.mjs +0 -2
- package/esm2022/lib/components/bmb-totp/bmb-totp.component.mjs +0 -138
- package/esm2022/lib/components/bmb-user-image/bmb-user-image.component.mjs +0 -44
- package/esm2022/lib/components/bmb-user-profile/bmb-user-profile-content/bmb-user-profile-content.component.mjs +0 -19
- package/esm2022/lib/components/bmb-user-profile/bmb-user-profile.component.mjs +0 -71
- package/esm2022/lib/components/bmb-user-summary/bmb-user-summary-content/bmb-user-summary-content.component.mjs +0 -51
- package/esm2022/lib/components/bmb-user-summary/bmb-user-summary.component.mjs +0 -28
- package/esm2022/lib/components/bmb-value-counter/bmb-value-counter.component.mjs +0 -23
- package/esm2022/lib/components/bmb-web-templates/bmb-web-templates.component.mjs +0 -85
- package/esm2022/lib/components/bmb-wheel-menu/bmb-wheel-menu.component.mjs +0 -128
- package/esm2022/lib/components/utils/bmb-dropdown-content/bmb-dropdown-content.component.mjs +0 -55
- package/esm2022/lib/directives/bmb-accordion/bmb-accordion-control.directive.mjs +0 -88
- package/esm2022/lib/directives/bmb-button/button.directive.mjs +0 -84
- package/esm2022/lib/directives/bmb-button-group/bmb-button-group.directive.mjs +0 -29
- package/esm2022/lib/directives/bmb-layout/bmb-layout-item.directive.mjs +0 -51
- package/esm2022/lib/directives/bmb-layout/bmb-layout.directive.mjs +0 -36
- package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout-item.directive.mjs +0 -34
- package/esm2022/lib/directives/bmb-layout/bmb-vertical-layout/bmb-vertical-layout.directive.mjs +0 -37
- package/esm2022/lib/directives/bmb-layout-grid/bmb-layout-grid.directive.mjs +0 -89
- package/esm2022/lib/directives/utils/clickoutside.directive.mjs +0 -41
- package/esm2022/lib/ds-ng.component.mjs +0 -11
- package/esm2022/lib/ds-ng.service.mjs +0 -14
- package/esm2022/lib/services/calendar.service.mjs +0 -51
- package/esm2022/lib/services/index.mjs +0 -3
- package/esm2022/lib/services/native-modal.service.mjs +0 -69
- package/esm2022/lib/services/notification.service.mjs +0 -77
- package/esm2022/lib/services/tabs.service.mjs +0 -30
- package/esm2022/lib/services/theme.service.mjs +0 -30
- package/esm2022/lib/services/toast.service.mjs +0 -24
- package/esm2022/lib/services/user/profile.service.mjs +0 -26
- package/esm2022/lib/types/colors.mjs +0 -2
- package/esm2022/lib/types/index.mjs +0 -11
- package/esm2022/lib/utils/countryCodes.mjs +0 -1089
- package/esm2022/lib/utils/currencyFormat.mjs +0 -7
- package/esm2022/lib/utils/dropdown.mjs +0 -85
- package/esm2022/lib/utils/formControl.mjs +0 -25
- package/esm2022/lib/utils/timestreamFilters.mjs +0 -32
- package/esm2022/lib/utils/utils.mjs +0 -66
- package/esm2022/public-api.mjs +0 -151
- package/esm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +0 -5
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import { Component, ViewEncapsulation, ChangeDetectionStrategy, input, model, signal, } from '@angular/core';
|
|
2
|
-
import { FormControl, FormsModule, ReactiveFormsModule, } from '@angular/forms';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { BmbDropdownComponent, } from '../bmb-dropdown/bmb-dropdown.component';
|
|
5
|
-
import { IBmbCountryCodes } from '../../utils/countryCodes';
|
|
6
|
-
import { BmbInputValidatorComponent } from '../bmb-input/bmb-input-validator/bmb-input-validator.component';
|
|
7
|
-
import { buildErrorMessage, getCustomValidation, getCustomValidationMessage, getUUID, } from '../../utils/utils';
|
|
8
|
-
import { BmbInputContentComponent } from '../bmb-input/bmb-input-content/bmb-input-content.component';
|
|
9
|
-
import { assignNewFormControl, handleValidity, showError, } from '../../utils/formControl';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/common";
|
|
12
|
-
import * as i2 from "@angular/forms";
|
|
13
|
-
export class BmbInputPhoneNumberComponent {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.label = input('');
|
|
16
|
-
this.name = input(getUUID());
|
|
17
|
-
this.value = input('');
|
|
18
|
-
this.isRequired = input(false);
|
|
19
|
-
this.tooltip = input('');
|
|
20
|
-
this.tooltipPosition = input({
|
|
21
|
-
align: 'above',
|
|
22
|
-
justify: 'before',
|
|
23
|
-
});
|
|
24
|
-
this.defaultLada = input('+52'); //Deprecated
|
|
25
|
-
this.defaultCountryCode = input('mx'); //Must match the area lada of the initial value
|
|
26
|
-
this.placeholder = input('');
|
|
27
|
-
this.appearance = input('normal'); //Deprecated
|
|
28
|
-
this.errorMessage = input('');
|
|
29
|
-
this.disabled = input(false);
|
|
30
|
-
this.inputId = input(this.name());
|
|
31
|
-
this.helperMessage = input('');
|
|
32
|
-
this.preferredCountries = input(['mx']);
|
|
33
|
-
this.onlyCountries = input([]);
|
|
34
|
-
this.customValidation = input();
|
|
35
|
-
this.control = model(new FormControl());
|
|
36
|
-
this.showError = model(false); // deprecated
|
|
37
|
-
this.uuid = getUUID();
|
|
38
|
-
this.isFocused = signal(false);
|
|
39
|
-
this.allCountryCodes = IBmbCountryCodes;
|
|
40
|
-
this.ladaControl = new FormControl();
|
|
41
|
-
this.phoneControl = new FormControl({
|
|
42
|
-
value: '',
|
|
43
|
-
disabled: this.disabled(),
|
|
44
|
-
});
|
|
45
|
-
this.countryFiltering = [];
|
|
46
|
-
this.isControlNull = false;
|
|
47
|
-
this.customValidationMessage = '';
|
|
48
|
-
}
|
|
49
|
-
ngOnInit() {
|
|
50
|
-
if (!this.control()) {
|
|
51
|
-
this.control.set(assignNewFormControl(this.name(), this.control()));
|
|
52
|
-
this.isControlNull = true;
|
|
53
|
-
}
|
|
54
|
-
if (!!this.value() || !!this.control().value) {
|
|
55
|
-
let inputs = [];
|
|
56
|
-
if (!this.defaultCountryCode()) {
|
|
57
|
-
inputs.push('defaultCountry');
|
|
58
|
-
}
|
|
59
|
-
else if (!this.getSelectedCountry(this.defaultCountryCode())) {
|
|
60
|
-
throw new Error(`
|
|
61
|
-
[${this.name()}] - The value ${this.defaultCountryCode()} for "defaultCountryCode" does not exist in the country List.
|
|
62
|
-
`);
|
|
63
|
-
}
|
|
64
|
-
if (inputs.length) {
|
|
65
|
-
throw new Error(`
|
|
66
|
-
[${this.name()}] - The ${buildErrorMessage(inputs)} required when there is an initial "value" in "bmb-input-phone.".
|
|
67
|
-
`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
this.ladaControl.setValue(this.getSelectedCountryCode(this.defaultCountryCode().toLocaleLowerCase()));
|
|
71
|
-
this.phoneControl.setValue(this.getNumberValue());
|
|
72
|
-
this.countryFiltering = this.getOptions();
|
|
73
|
-
this.phoneControl.valueChanges.subscribe((value) => {
|
|
74
|
-
if (!!value) {
|
|
75
|
-
this.setControlValue(this.getSelectedCountryLada(this.ladaControl.value), value);
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
this.control().valueChanges.subscribe((value) => {
|
|
79
|
-
if (value === null) {
|
|
80
|
-
this.phoneControl.reset('');
|
|
81
|
-
this.ladaControl.reset(this.getSelectedCountryCode(this.defaultCountryCode().toLocaleLowerCase()));
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
handleFocus(value) {
|
|
86
|
-
this.isFocused.set(value);
|
|
87
|
-
}
|
|
88
|
-
handleCustomValidator() {
|
|
89
|
-
return (control) => {
|
|
90
|
-
const { value } = control;
|
|
91
|
-
if (!value)
|
|
92
|
-
return null;
|
|
93
|
-
if (this.phoneControl.hasError('pattern'))
|
|
94
|
-
return { pattern: true };
|
|
95
|
-
if (this.phoneControl.hasError('maxlength') ||
|
|
96
|
-
this.phoneControl.hasError('minlength')) {
|
|
97
|
-
return { minlength: true };
|
|
98
|
-
}
|
|
99
|
-
const regExp = new RegExp(`^\\${this.getSelectedCountryLada(this.ladaControl.value)}\\d{${this.getSelectedCountryLength(this.ladaControl.value)}}$`);
|
|
100
|
-
if (!regExp.test(control.value)) {
|
|
101
|
-
this.customValidationMessage =
|
|
102
|
-
'Por favor ingresa un número de teléfono válido, verifica si la lada es correcta.';
|
|
103
|
-
return { customValidation: true };
|
|
104
|
-
}
|
|
105
|
-
const result = getCustomValidation(this.customValidation(), this.control());
|
|
106
|
-
this.customValidationMessage = getCustomValidationMessage(result, this.errorMessage());
|
|
107
|
-
return result;
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
getUUID(name) {
|
|
111
|
-
return `${name}_${this.name()}_${this.uuid}`;
|
|
112
|
-
}
|
|
113
|
-
setControlValue(lada, phoneNumber) {
|
|
114
|
-
if (!!lada && !!phoneNumber) {
|
|
115
|
-
this.control().setValue(lada + phoneNumber);
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
this.control().reset('');
|
|
119
|
-
}
|
|
120
|
-
this.handleValidity();
|
|
121
|
-
}
|
|
122
|
-
getNumberValue() {
|
|
123
|
-
const value = this.control().value || this.value();
|
|
124
|
-
return value.replace(this.getSelectedCountryLada(this.ladaControl.value), '');
|
|
125
|
-
}
|
|
126
|
-
getSelectedCountry(value) {
|
|
127
|
-
return this.allCountryCodes.find(({ country_code }) => country_code.toLocaleLowerCase() === value);
|
|
128
|
-
}
|
|
129
|
-
getSelectedCountryCode(value) {
|
|
130
|
-
const selectedCountry = this.getSelectedCountry(value);
|
|
131
|
-
if (!!selectedCountry) {
|
|
132
|
-
return selectedCountry.country_code.toLocaleLowerCase();
|
|
133
|
-
}
|
|
134
|
-
return '';
|
|
135
|
-
}
|
|
136
|
-
getSelectedCountryLada(value) {
|
|
137
|
-
const selectedCountry = this.getSelectedCountry(value);
|
|
138
|
-
if (!!selectedCountry) {
|
|
139
|
-
return selectedCountry.lada;
|
|
140
|
-
}
|
|
141
|
-
return '';
|
|
142
|
-
}
|
|
143
|
-
getSelectedCountryLength(value) {
|
|
144
|
-
const selectedCountry = this.getSelectedCountry(value);
|
|
145
|
-
if (!!selectedCountry) {
|
|
146
|
-
return selectedCountry.length;
|
|
147
|
-
}
|
|
148
|
-
return 0;
|
|
149
|
-
}
|
|
150
|
-
onValueChange(value) {
|
|
151
|
-
if (!!this.phoneControl.value) {
|
|
152
|
-
this.setControlValue(this.getSelectedCountryLada(value), this.phoneControl.value);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
getOptions() {
|
|
156
|
-
if (this.onlyCountries().length) {
|
|
157
|
-
const lowerCaseCountries = this.onlyCountries().map((country) => country.toLocaleLowerCase());
|
|
158
|
-
const filteredOptions = this.allCountryCodes.filter(({ country_code }) => {
|
|
159
|
-
return lowerCaseCountries.includes(country_code.toLocaleLowerCase());
|
|
160
|
-
});
|
|
161
|
-
return filteredOptions.map(({ country, lada, country_code }) => ({
|
|
162
|
-
name: `${country} (${lada})`,
|
|
163
|
-
value: country_code.toLocaleLowerCase(),
|
|
164
|
-
selectedText: lada,
|
|
165
|
-
icon: 'flag',
|
|
166
|
-
}));
|
|
167
|
-
}
|
|
168
|
-
return this.allCountryCodes.map(({ country, lada, country_code }) => ({
|
|
169
|
-
name: `${country} (${lada})`,
|
|
170
|
-
value: country_code.toLocaleLowerCase(),
|
|
171
|
-
selectedText: lada,
|
|
172
|
-
icon: 'flag',
|
|
173
|
-
}));
|
|
174
|
-
}
|
|
175
|
-
getErrorMessage() {
|
|
176
|
-
const pattern = 'Por favor ingresa sólo caracteres numéricos';
|
|
177
|
-
const minLength = `Por favor ingresa ${this.getSelectedCountryLength(this.ladaControl.value)} caracteres numéricos`;
|
|
178
|
-
if (!!this.errorMessage()) {
|
|
179
|
-
if (typeof this.errorMessage() === 'string')
|
|
180
|
-
return {
|
|
181
|
-
required: this.errorMessage().toString(),
|
|
182
|
-
pattern,
|
|
183
|
-
minLength,
|
|
184
|
-
customValidation: this.customValidationMessage,
|
|
185
|
-
};
|
|
186
|
-
return {
|
|
187
|
-
pattern,
|
|
188
|
-
minLength,
|
|
189
|
-
...this.errorMessage(),
|
|
190
|
-
customValidation: this.customValidationMessage,
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
return {
|
|
194
|
-
pattern,
|
|
195
|
-
minLength,
|
|
196
|
-
customValidation: this.customValidationMessage,
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
handleValidity() {
|
|
200
|
-
handleValidity(this.control());
|
|
201
|
-
}
|
|
202
|
-
get shouldShowError() {
|
|
203
|
-
return showError(this.control()) || showError(this.phoneControl);
|
|
204
|
-
}
|
|
205
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbInputPhoneNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
206
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: BmbInputPhoneNumberComponent, isStandalone: true, selector: "bmb-input-phone-number", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, isRequired: { classPropertyName: "isRequired", publicName: "isRequired", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, defaultLada: { classPropertyName: "defaultLada", publicName: "defaultLada", isSignal: true, isRequired: false, transformFunction: null }, defaultCountryCode: { classPropertyName: "defaultCountryCode", publicName: "defaultCountryCode", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, helperMessage: { classPropertyName: "helperMessage", publicName: "helperMessage", isSignal: true, isRequired: false, transformFunction: null }, preferredCountries: { classPropertyName: "preferredCountries", publicName: "preferredCountries", isSignal: true, isRequired: false, transformFunction: null }, onlyCountries: { classPropertyName: "onlyCountries", publicName: "onlyCountries", isSignal: true, isRequired: false, transformFunction: null }, customValidation: { classPropertyName: "customValidation", publicName: "customValidation", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null }, showError: { classPropertyName: "showError", publicName: "showError", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { control: "controlChange", showError: "showErrorChange" }, ngImport: i0, template: "<bmb-input-validator\r\n [name]=\"name()\"\r\n [label]=\"label()\"\r\n [value]=\"!!defaultCountryCode() ? value() : ''\"\r\n [errorMessage]=\"getErrorMessage()\"\r\n [helperMessage]=\"helperMessage()\"\r\n [isRequired]=\"isRequired()\"\r\n [isDisabled]=\"disabled()\"\r\n [control]=\"control()\"\r\n [showError]=\"shouldShowError\"\r\n [tooltip]=\"tooltip()\"\r\n [tooltipPosition]=\"tooltipPosition()\"\r\n [customValidation]=\"handleCustomValidator()\"\r\n [inputId]=\"inputId()\"\r\n>\r\n <section class=\"bmb_input-phone\">\r\n <section\r\n class=\"bmb_input-phone-container\"\r\n [ngClass]=\"{\r\n 'bmb_input-phone-container-error': shouldShowError,\r\n 'bmb_input-phone-container-focus': isFocused(),\r\n }\"\r\n >\r\n <bmb-dropdown\r\n class=\"bmb_input-phone-lada\"\r\n [name]=\"getUUID('lada')\"\r\n [value]=\"ladaControl.value\"\r\n [required]=\"true\"\r\n [disabled]=\"disabled()\"\r\n [showIcon]=\"false\"\r\n [options]=\"countryFiltering\"\r\n [preferredOptions]=\"preferredCountries()\"\r\n [control]=\"ladaControl\"\r\n (onValueChange)=\"onValueChange($event)\"\r\n (onFocus)=\"handleFocus($event)\"\r\n />\r\n <bmb-input-content\r\n class=\"bmb_input-phone-number\"\r\n [name]=\"getUUID('phone')\"\r\n pattern=\"^\\d+$\"\r\n [isDisabled]=\"disabled()\"\r\n [control]=\"phoneControl\"\r\n [inputId]=\"inputId()\"\r\n [placeholder]=\"placeholder()\"\r\n [maxLength]=\"getSelectedCountryLength(ladaControl.value)\"\r\n [minLength]=\"getSelectedCountryLength(ladaControl.value)\"\r\n [isRequired]=\"isRequired()\"\r\n (onFocus)=\"handleFocus($event)\"\r\n (onBlur)=\"handleValidity()\"\r\n />\r\n </section>\r\n <input\r\n hidden\r\n type=\"text\"\r\n [name]=\"name()\"\r\n [required]=\"isRequired()\"\r\n [formControl]=\"control()\"\r\n [tabindex]=\"-1\"\r\n />\r\n </section>\r\n</bmb-input-validator>\r\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_input-phone{display:block;position:relative}.bmb_input-phone-container{display:flex;box-sizing:border-box;border:.0625rem solid var(--general_contrasts-50);border-radius:.5rem;width:100%;background-color:var(--general_contrasts-input-background);height:3rem;transition:all .3s ease}.bmb_input-phone-container-error{border-color:var(--input-error)}.bmb_input-phone-container:focus,.bmb_input-phone-container:focus-visible,.bmb_input-phone-container-focus{box-sizing:inherit;border-color:var(--general_contrasts-input-outline);caret-color:var(--general_contrasts-input-outline);outline:.0625rem solid;outline-color:var(--general_contrasts-input-outline)}.bmb_input-phone-container:hover{box-sizing:inherit;border-color:var(--general_contrasts-50);outline:.0625rem solid;outline-color:var(--general_contrasts-50)}.bmb_input-phone-container .bmb_input-validator-label{display:none}.bmb_input-phone-container .bmb_input-validator{padding:0}.bmb_input-phone-lada .bmb_dropdown{width:5rem}.bmb_input-phone-lada .bmb_dropdown .bmb_field-input-normal{border-top-right-radius:0;border-bottom-right-radius:0;border-width:0 .0625rem 0 0;height:2.75rem}.bmb_input-phone-lada .bmb_dropdown .bmb_field-input-normal:focus,.bmb_input-phone-lada .bmb_dropdown .bmb_field-input-normal:focus-visible,.bmb_input-phone-lada .bmb_dropdown .bmb_field-input-normal:hover{border-width:0 .0625rem 0 0;outline:0 none}.bmb_input-phone-lada .bmb_dropdown .bmb_dropdown-content-modal{min-width:max-content}.bmb_input-phone-number{flex:1}.bmb_input-phone-number .bmb_field-input-normal{border-top-left-radius:0;border-bottom-left-radius:0;border:0;height:2.75rem}.bmb_input-phone-number .bmb_field-input-normal:focus,.bmb_input-phone-number .bmb_field-input-normal:focus-visible,.bmb_input-phone-number .bmb_field-input-normal:hover{border:0;outline:0 none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: BmbDropdownComponent, selector: "bmb-dropdown", inputs: ["required", "showIcon", "placeholder", "icon", "options", "helperText", "errorMessage", "label", "name", "preferredOptions", "isMultiSelect", "tooltip", "tooltipPosition", "disabled", "value", "isFilterable", "inputId", "customValidation", "control"], outputs: ["controlChange", "onValueChange", "onFocus"] }, { kind: "component", type: BmbInputContentComponent, selector: "bmb-input-content", inputs: ["type", "placeholder", "icon", "appearance", "isDisabled", "isRequired", "name", "spellcheck", "heightTextArea", "maxLength", "minLength", "pattern", "max", "min", "inputId", "autoComplete", "rows", "isReadOnly", "additionalAction", "isClearable", "isError", "isHidden", "showStates", "control"], outputs: ["controlChange", "onFocus", "onBlur", "onChange", "onKeyDown", "onKeyUp"] }, { kind: "component", type: BmbInputValidatorComponent, selector: "bmb-input-validator", inputs: ["inputId", "type", "appearance", "label", "labelPosition", "name", "value", "checked", "isRequired", "isDisabled", "max", "min", "maxLength", "minLength", "pattern", "jsonFormat", "tooltip", "rows", "tooltipPosition", "showMaxTextLength", "helperMessage", "errorMessage", "customValidation", "showError", "control"], outputs: ["showErrorChange", "controlChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
207
|
-
}
|
|
208
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbInputPhoneNumberComponent, decorators: [{
|
|
209
|
-
type: Component,
|
|
210
|
-
args: [{ selector: 'bmb-input-phone-number', standalone: true, imports: [
|
|
211
|
-
CommonModule,
|
|
212
|
-
FormsModule,
|
|
213
|
-
ReactiveFormsModule,
|
|
214
|
-
BmbDropdownComponent,
|
|
215
|
-
BmbInputContentComponent,
|
|
216
|
-
BmbInputValidatorComponent,
|
|
217
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<bmb-input-validator\r\n [name]=\"name()\"\r\n [label]=\"label()\"\r\n [value]=\"!!defaultCountryCode() ? value() : ''\"\r\n [errorMessage]=\"getErrorMessage()\"\r\n [helperMessage]=\"helperMessage()\"\r\n [isRequired]=\"isRequired()\"\r\n [isDisabled]=\"disabled()\"\r\n [control]=\"control()\"\r\n [showError]=\"shouldShowError\"\r\n [tooltip]=\"tooltip()\"\r\n [tooltipPosition]=\"tooltipPosition()\"\r\n [customValidation]=\"handleCustomValidator()\"\r\n [inputId]=\"inputId()\"\r\n>\r\n <section class=\"bmb_input-phone\">\r\n <section\r\n class=\"bmb_input-phone-container\"\r\n [ngClass]=\"{\r\n 'bmb_input-phone-container-error': shouldShowError,\r\n 'bmb_input-phone-container-focus': isFocused(),\r\n }\"\r\n >\r\n <bmb-dropdown\r\n class=\"bmb_input-phone-lada\"\r\n [name]=\"getUUID('lada')\"\r\n [value]=\"ladaControl.value\"\r\n [required]=\"true\"\r\n [disabled]=\"disabled()\"\r\n [showIcon]=\"false\"\r\n [options]=\"countryFiltering\"\r\n [preferredOptions]=\"preferredCountries()\"\r\n [control]=\"ladaControl\"\r\n (onValueChange)=\"onValueChange($event)\"\r\n (onFocus)=\"handleFocus($event)\"\r\n />\r\n <bmb-input-content\r\n class=\"bmb_input-phone-number\"\r\n [name]=\"getUUID('phone')\"\r\n pattern=\"^\\d+$\"\r\n [isDisabled]=\"disabled()\"\r\n [control]=\"phoneControl\"\r\n [inputId]=\"inputId()\"\r\n [placeholder]=\"placeholder()\"\r\n [maxLength]=\"getSelectedCountryLength(ladaControl.value)\"\r\n [minLength]=\"getSelectedCountryLength(ladaControl.value)\"\r\n [isRequired]=\"isRequired()\"\r\n (onFocus)=\"handleFocus($event)\"\r\n (onBlur)=\"handleValidity()\"\r\n />\r\n </section>\r\n <input\r\n hidden\r\n type=\"text\"\r\n [name]=\"name()\"\r\n [required]=\"isRequired()\"\r\n [formControl]=\"control()\"\r\n [tabindex]=\"-1\"\r\n />\r\n </section>\r\n</bmb-input-validator>\r\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_input-phone{display:block;position:relative}.bmb_input-phone-container{display:flex;box-sizing:border-box;border:.0625rem solid var(--general_contrasts-50);border-radius:.5rem;width:100%;background-color:var(--general_contrasts-input-background);height:3rem;transition:all .3s ease}.bmb_input-phone-container-error{border-color:var(--input-error)}.bmb_input-phone-container:focus,.bmb_input-phone-container:focus-visible,.bmb_input-phone-container-focus{box-sizing:inherit;border-color:var(--general_contrasts-input-outline);caret-color:var(--general_contrasts-input-outline);outline:.0625rem solid;outline-color:var(--general_contrasts-input-outline)}.bmb_input-phone-container:hover{box-sizing:inherit;border-color:var(--general_contrasts-50);outline:.0625rem solid;outline-color:var(--general_contrasts-50)}.bmb_input-phone-container .bmb_input-validator-label{display:none}.bmb_input-phone-container .bmb_input-validator{padding:0}.bmb_input-phone-lada .bmb_dropdown{width:5rem}.bmb_input-phone-lada .bmb_dropdown .bmb_field-input-normal{border-top-right-radius:0;border-bottom-right-radius:0;border-width:0 .0625rem 0 0;height:2.75rem}.bmb_input-phone-lada .bmb_dropdown .bmb_field-input-normal:focus,.bmb_input-phone-lada .bmb_dropdown .bmb_field-input-normal:focus-visible,.bmb_input-phone-lada .bmb_dropdown .bmb_field-input-normal:hover{border-width:0 .0625rem 0 0;outline:0 none}.bmb_input-phone-lada .bmb_dropdown .bmb_dropdown-content-modal{min-width:max-content}.bmb_input-phone-number{flex:1}.bmb_input-phone-number .bmb_field-input-normal{border-top-left-radius:0;border-bottom-left-radius:0;border:0;height:2.75rem}.bmb_input-phone-number .bmb_field-input-normal:focus,.bmb_input-phone-number .bmb_field-input-normal:focus-visible,.bmb_input-phone-number .bmb_field-input-normal:hover{border:0;outline:0 none}\n"] }]
|
|
218
|
-
}] });
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWlucHV0LXBob25lLW51bWJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kcy1uZy9zcmMvbGliL2NvbXBvbmVudHMvYm1iLWlucHV0LXBob25lLW51bWJlci9ibWItaW5wdXQtcGhvbmUtbnVtYmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItaW5wdXQtcGhvbmUtbnVtYmVyL2JtYi1pbnB1dC1waG9uZS1udW1iZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLG1CQUFtQixHQUdwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsb0JBQW9CLEdBRXJCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBTTdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzVHLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQixPQUFPLEdBRVIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxTQUFTLEdBQ1YsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQWtCakMsTUFBTSxPQUFPLDRCQUE0QjtJ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dUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIGlucHV0LFxyXG4gIG1vZGVsLFxyXG4gIHNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gIFZhbGlkYXRvckZuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBCbWJEcm9wZG93bkNvbXBvbmVudCxcclxuICBJQm1iRHJvcGRvd25JdGVtLFxyXG59IGZyb20gJy4uL2JtYi1kcm9wZG93bi9ibWItZHJvcGRvd24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUJtYkNvdW50cnlDb2RlLCBJQm1iQ291bnRyeUNvZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY291bnRyeUNvZGVzJztcclxuaW1wb3J0IHtcclxuICBJQm1iSW5wdXRBcHBlYXJhbmNlLFxyXG4gIElCbWJJbnB1dEVycm9yLFxyXG4gIElCbWJJbnB1dFRvb2x0aXBQb3NpdGlvbixcclxufSBmcm9tICcuLi9ibWItaW5wdXQvYm1iLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJtYklucHV0VmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC12YWxpZGF0b3IvYm1iLWlucHV0LXZhbGlkYXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIGJ1aWxkRXJyb3JNZXNzYWdlLFxyXG4gIGdldEN1c3RvbVZhbGlkYXRpb24sXHJcbiAgZ2V0Q3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UsXHJcbiAgZ2V0VVVJRCxcclxuICBpc0Vycm9yTWVzc2FnZVNldCxcclxufSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7IEJtYklucHV0Q29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQtY29udGVudC9ibWItaW5wdXQtY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIGFzc2lnbk5ld0Zvcm1Db250cm9sLFxyXG4gIGhhbmRsZVZhbGlkaXR5LFxyXG4gIHNob3dFcnJvcixcclxufSBmcm9tICcuLi8uLi91dGlscy9mb3JtQ29udHJvbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JtYi1pbnB1dC1waG9uZS1udW1iZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ibWItaW5wdXQtcGhvbmUtbnVtYmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYm1iLWlucHV0LXBob25lLW51bWJlci5jb21wb25lbnQuc2NzcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBCbWJEcm9wZG93bkNvbXBvbmVudCxcclxuICAgIEJtYklucHV0Q29udGVudENvbXBvbmVudCxcclxuICAgIEJtYklucHV0VmFsaWRhdG9yQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJtYklucHV0UGhvbmVOdW1iZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgbmFtZSA9IGlucHV0PHN0cmluZz4oZ2V0VVVJRCgpKTtcclxuICB2YWx1ZSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gIGlzUmVxdWlyZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgdG9vbHRpcCA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IGlucHV0PElCbWJJbnB1dFRvb2x0aXBQb3NpdGlvbj4oe1xyXG4gICAgYWxpZ246ICdhYm92ZScsXHJcbiAgICBqdXN0aWZ5OiAnYmVmb3JlJyxcclxuICB9KTtcclxuICBkZWZhdWx0TGFkYSA9IGlucHV0PHN0cmluZz4oJys1MicpOyAvL0RlcHJlY2F0ZWRcclxuICBkZWZhdWx0Q291bnRyeUNvZGUgPSBpbnB1dDxzdHJpbmc+KCdteCcpOyAvL011c3QgbWF0Y2ggdGhlIGFyZWEgbGFkYSBvZiB0aGUgaW5pdGlhbCB2YWx1ZVxyXG4gIHBsYWNlaG9sZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcbiAgYXBwZWFyYW5jZSA9IGlucHV0PElCbWJJbnB1dEFwcGVhcmFuY2U+KCdub3JtYWwnKTsgLy9EZXByZWNhdGVkXHJcbiAgZXJyb3JNZXNzYWdlID0gaW5wdXQ8c3RyaW5nIHwgSUJtYklucHV0RXJyb3I+KCcnKTtcclxuICBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBpbnB1dElkID0gaW5wdXQ8c3RyaW5nPih0aGlzLm5hbWUoKSk7XHJcbiAgaGVscGVyTWVzc2FnZSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gIHByZWZlcnJlZENvdW50cmllcyA9IGlucHV0PHN0cmluZ1tdPihbJ214J10pO1xyXG4gIG9ubHlDb3VudHJpZXMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xyXG4gIGN1c3RvbVZhbGlkYXRpb24gPSBpbnB1dDxWYWxpZGF0b3JGbj4oKTtcclxuXHJcbiAgY29udHJvbCA9IG1vZGVsPEZvcm1Db250cm9sPihuZXcgRm9ybUNvbnRyb2woKSk7XHJcbiAgc2hvd0Vycm9yID0gbW9kZWw8Ym9vbGVhbj4oZmFsc2UpOyAvLyBkZXByZWNhdGVkXHJcblxyXG4gIHV1aWQ6IHN0cmluZyA9IGdldFVVSUQoKTtcclxuICBpc0ZvY3VzZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGFsbENvdW50cnlDb2RlczogSUJtYkNvdW50cnlDb2RlW10gPSBJQm1iQ291bnRyeUNvZGVzO1xyXG4gIGxhZGFDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gIHBob25lQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woe1xyXG4gICAgdmFsdWU6ICcnLFxyXG4gICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQoKSxcclxuICB9KTtcclxuICBjb3VudHJ5RmlsdGVyaW5nOiBJQm1iRHJvcGRvd25JdGVtW10gPSBbXTtcclxuICBpc0NvbnRyb2xOdWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jb250cm9sKCkpIHtcclxuICAgICAgdGhpcy5jb250cm9sLnNldChhc3NpZ25OZXdGb3JtQ29udHJvbCh0aGlzLm5hbWUoKSwgdGhpcy5jb250cm9sKCkpISk7XHJcbiAgICAgIHRoaXMuaXNDb250cm9sTnVsbCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhdGhpcy52YWx1ZSgpIHx8ICEhdGhpcy5jb250cm9sKCkudmFsdWUpIHtcclxuICAgICAgbGV0IGlucHV0czogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5kZWZhdWx0Q291bnRyeUNvZGUoKSkge1xyXG4gICAgICAgIGlucHV0cy5wdXNoKCdkZWZhdWx0Q291bnRyeScpO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmdldFNlbGVjdGVkQ291bnRyeSh0aGlzLmRlZmF1bHRDb3VudHJ5Q29kZSgpKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgIGBcclxuICAgICAgICAgIFske3RoaXMubmFtZSgpfV0gLSBUaGUgdmFsdWUgJHt0aGlzLmRlZmF1bHRDb3VudHJ5Q29kZSgpfSBmb3IgXCJkZWZhdWx0Q291bnRyeUNvZGVcIiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgY291bnRyeSBMaXN0LlxyXG4gICAgICAgICAgYCxcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpbnB1dHMubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICAgICAgYFxyXG4gICAgICAgICAgWyR7dGhpcy5uYW1lKCl9XSAtIFRoZSAke2J1aWxkRXJyb3JNZXNzYWdlKGlucHV0cyl9IHJlcXVpcmVkIHdoZW4gdGhlcmUgaXMgYW4gaW5pdGlhbCBcInZhbHVlXCIgaW4gXCJibWItaW5wdXQtcGhvbmUuXCIuXHJcbiAgICAgICAgICBgLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhZGFDb250cm9sLnNldFZhbHVlKFxyXG4gICAgICB0aGlzLmdldFNlbGVjdGVkQ291bnRyeUNvZGUoXHJcbiAgICAgICAgdGhpcy5kZWZhdWx0Q291bnRyeUNvZGUoKS50b0xvY2FsZUxvd2VyQ2FzZSgpLFxyXG4gICAgICApLFxyXG4gICAgKTtcclxuICAgIHRoaXMucGhvbmVDb250cm9sLnNldFZhbHVlKHRoaXMuZ2V0TnVtYmVyVmFsdWUoKSk7XHJcbiAgICB0aGlzLmNvdW50cnlGaWx0ZXJpbmcgPSB0aGlzLmdldE9wdGlvbnMoKTtcclxuXHJcbiAgICB0aGlzLnBob25lQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAoISF2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKFxyXG4gICAgICAgICAgdGhpcy5nZXRTZWxlY3RlZENvdW50cnlMYWRhKHRoaXMubGFkYUNvbnRyb2wudmFsdWUpLFxyXG4gICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb250cm9sKCkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wucmVzZXQoJycpO1xyXG4gICAgICAgIHRoaXMubGFkYUNvbnRyb2wucmVzZXQoXHJcbiAgICAgICAgICB0aGlzLmdldFNlbGVjdGVkQ291bnRyeUNvZGUoXHJcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvdW50cnlDb2RlKCkudG9Mb2NhbGVMb3dlckNhc2UoKSxcclxuICAgICAgICAgICksXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGb2N1cyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQuc2V0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUN1c3RvbVZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gY29udHJvbDtcclxuXHJcbiAgICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xyXG4gICAgICBpZiAodGhpcy5waG9uZUNvbnRyb2wuaGFzRXJyb3IoJ3BhdHRlcm4nKSkgcmV0dXJuIHsgcGF0dGVybjogdHJ1ZSB9O1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuaGFzRXJyb3IoJ21heGxlbmd0aCcpIHx8XHJcbiAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuaGFzRXJyb3IoJ21pbmxlbmd0aCcpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB7IG1pbmxlbmd0aDogdHJ1ZSB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKFxyXG4gICAgICAgIGBeXFxcXCR7dGhpcy5nZXRTZWxlY3RlZENvdW50cnlMYWRhKFxyXG4gICAgICAgICAgdGhpcy5sYWRhQ29udHJvbC52YWx1ZSxcclxuICAgICAgICApfVxcXFxkeyR7dGhpcy5nZXRTZWxlY3RlZENvdW50cnlMZW5ndGgodGhpcy5sYWRhQ29udHJvbC52YWx1ZSl9fSRgLFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKCFyZWdFeHAudGVzdChjb250cm9sLnZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UgPVxyXG4gICAgICAgICAgJ1BvciBmYXZvciBpbmdyZXNhIHVuIG7Dum1lcm8gZGUgdGVsw6lmb25vIHbDoWxpZG8sIHZlcmlmaWNhIHNpIGxhIGxhZGEgZXMgY29ycmVjdGEuJztcclxuICAgICAgICByZXR1cm4geyBjdXN0b21WYWxpZGF0aW9uOiB0cnVlIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEN1c3RvbVZhbGlkYXRpb24oXHJcbiAgICAgICAgdGhpcy5jdXN0b21WYWxpZGF0aW9uKCkhLFxyXG4gICAgICAgIHRoaXMuY29udHJvbCgpLFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmN1c3RvbVZhbGlkYXRpb25NZXNzYWdlID0gZ2V0Q3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UoXHJcbiAgICAgICAgcmVzdWx0LFxyXG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlKCksXHJcbiAgICAgICk7XHJcblxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldFVVSUQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtuYW1lfV8ke3RoaXMubmFtZSgpfV8ke3RoaXMudXVpZH1gO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29udHJvbFZhbHVlKGxhZGE6IHN0cmluZywgcGhvbmVOdW1iZXI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCEhbGFkYSAmJiAhIXBob25lTnVtYmVyKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKGxhZGEgKyBwaG9uZU51bWJlcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbnRyb2woKS5yZXNldCgnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TnVtYmVyVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb250cm9sKCkudmFsdWUgfHwgdGhpcy52YWx1ZSgpO1xyXG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoXHJcbiAgICAgIHRoaXMuZ2V0U2VsZWN0ZWRDb3VudHJ5TGFkYSh0aGlzLmxhZGFDb250cm9sLnZhbHVlKSxcclxuICAgICAgJycsXHJcbiAgICApITtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkQ291bnRyeSh2YWx1ZTogc3RyaW5nKTogSUJtYkNvdW50cnlDb2RlIHtcclxuICAgIHJldHVybiB0aGlzLmFsbENvdW50cnlDb2Rlcy5maW5kKFxyXG4gICAgICAoeyBjb3VudHJ5X2NvZGUgfSkgPT4gY291bnRyeV9jb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IHZhbHVlLFxyXG4gICAgKSE7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZENvdW50cnlDb2RlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5nZXRTZWxlY3RlZENvdW50cnkodmFsdWUpO1xyXG5cclxuICAgIGlmICghIXNlbGVjdGVkQ291bnRyeSkge1xyXG4gICAgICByZXR1cm4gc2VsZWN0ZWRDb3VudHJ5LmNvdW50cnlfY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkQ291bnRyeUxhZGEodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzZWxlY3RlZENvdW50cnkgPSB0aGlzLmdldFNlbGVjdGVkQ291bnRyeSh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKCEhc2VsZWN0ZWRDb3VudHJ5KSB7XHJcbiAgICAgIHJldHVybiBzZWxlY3RlZENvdW50cnkubGFkYTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZENvdW50cnlMZW5ndGgodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBjb25zdCBzZWxlY3RlZENvdW50cnkgPSB0aGlzLmdldFNlbGVjdGVkQ291bnRyeSh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKCEhc2VsZWN0ZWRDb3VudHJ5KSB7XHJcbiAgICAgIHJldHVybiBzZWxlY3RlZENvdW50cnkubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoISF0aGlzLnBob25lQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZShcclxuICAgICAgICB0aGlzLmdldFNlbGVjdGVkQ291bnRyeUxhZGEodmFsdWUpLFxyXG4gICAgICAgIHRoaXMucGhvbmVDb250cm9sLnZhbHVlLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0T3B0aW9ucygpOiBJQm1iRHJvcGRvd25JdGVtW10ge1xyXG4gICAgaWYgKHRoaXMub25seUNvdW50cmllcygpLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBsb3dlckNhc2VDb3VudHJpZXMgPSB0aGlzLm9ubHlDb3VudHJpZXMoKS5tYXAoKGNvdW50cnkpID0+XHJcbiAgICAgICAgY291bnRyeS50b0xvY2FsZUxvd2VyQ2FzZSgpLFxyXG4gICAgICApO1xyXG5cclxuICAgICAgY29uc3QgZmlsdGVyZWRPcHRpb25zID0gdGhpcy5hbGxDb3VudHJ5Q29kZXMuZmlsdGVyKFxyXG4gICAgICAgICh7IGNvdW50cnlfY29kZSB9KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbG93ZXJDYXNlQ291bnRyaWVzLmluY2x1ZGVzKGNvdW50cnlfY29kZS50b0xvY2FsZUxvd2VyQ2FzZSgpKTtcclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG5cclxuICAgICAgcmV0dXJuIGZpbHRlcmVkT3B0aW9ucy5tYXAoKHsgY291bnRyeSwgbGFkYSwgY291bnRyeV9jb2RlIH0pID0+ICh7XHJcbiAgICAgICAgbmFtZTogYCR7Y291bnRyeX0gKCR7bGFkYX0pYCxcclxuICAgICAgICB2YWx1ZTogY291bnRyeV9jb2RlLnRvTG9jYWxlTG93ZXJDYXNlKCksXHJcbiAgICAgICAgc2VsZWN0ZWRUZXh0OiBsYWRhLFxyXG4gICAgICAgIGljb246ICdmbGFnJyxcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmFsbENvdW50cnlDb2Rlcy5tYXAoKHsgY291bnRyeSwgbGFkYSwgY291bnRyeV9jb2RlIH0pID0+ICh7XHJcbiAgICAgIG5hbWU6IGAke2NvdW50cnl9ICgke2xhZGF9KWAsXHJcbiAgICAgIHZhbHVlOiBjb3VudHJ5X2NvZGUudG9Mb2NhbGVMb3dlckNhc2UoKSxcclxuICAgICAgc2VsZWN0ZWRUZXh0OiBsYWRhLFxyXG4gICAgICBpY29uOiAnZmxhZycsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvck1lc3NhZ2UoKTogSUJtYklucHV0RXJyb3Ige1xyXG4gICAgY29uc3QgcGF0dGVybiA9ICdQb3IgZmF2b3IgaW5ncmVzYSBzw7NsbyBjYXJhY3RlcmVzIG51bcOpcmljb3MnO1xyXG4gICAgY29uc3QgbWluTGVuZ3RoID0gYFBvciBmYXZvciBpbmdyZXNhICR7dGhpcy5nZXRTZWxlY3RlZENvdW50cnlMZW5ndGgoXHJcbiAgICAgIHRoaXMubGFkYUNvbnRyb2wudmFsdWUsXHJcbiAgICApfSBjYXJhY3RlcmVzIG51bcOpcmljb3NgO1xyXG4gICAgaWYgKCEhdGhpcy5lcnJvck1lc3NhZ2UoKSkge1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuZXJyb3JNZXNzYWdlKCkgPT09ICdzdHJpbmcnKVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdGhpcy5lcnJvck1lc3NhZ2UoKS50b1N0cmluZygpLFxyXG4gICAgICAgICAgcGF0dGVybixcclxuICAgICAgICAgIG1pbkxlbmd0aCxcclxuICAgICAgICAgIGN1c3RvbVZhbGlkYXRpb246IHRoaXMuY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcGF0dGVybixcclxuICAgICAgICBtaW5MZW5ndGgsXHJcbiAgICAgICAgLi4uKHRoaXMuZXJyb3JNZXNzYWdlKCkgYXMgSUJtYklucHV0RXJyb3IpLFxyXG4gICAgICAgIGN1c3RvbVZhbGlkYXRpb246IHRoaXMuY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcGF0dGVybixcclxuICAgICAgbWluTGVuZ3RoLFxyXG4gICAgICBjdXN0b21WYWxpZGF0aW9uOiB0aGlzLmN1c3RvbVZhbGlkYXRpb25NZXNzYWdlLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGhhbmRsZVZhbGlkaXR5KCk6IHZvaWQge1xyXG4gICAgaGFuZGxlVmFsaWRpdHkodGhpcy5jb250cm9sKCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3VsZFNob3dFcnJvcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBzaG93RXJyb3IodGhpcy5jb250cm9sKCkpIHx8IHNob3dFcnJvcih0aGlzLnBob25lQ29udHJvbCk7XHJcbiAgfVxyXG59XHJcbiIsIjxibWItaW5wdXQtdmFsaWRhdG9yXHJcbiAgW25hbWVdPVwibmFtZSgpXCJcclxuICBbbGFiZWxdPVwibGFiZWwoKVwiXHJcbiAgW3ZhbHVlXT1cIiEhZGVmYXVsdENvdW50cnlDb2RlKCkgPyB2YWx1ZSgpIDogJydcIlxyXG4gIFtlcnJvck1lc3NhZ2VdPVwiZ2V0RXJyb3JNZXNzYWdlKClcIlxyXG4gIFtoZWxwZXJNZXNzYWdlXT1cImhlbHBlck1lc3NhZ2UoKVwiXHJcbiAgW2lzUmVxdWlyZWRdPVwiaXNSZXF1aXJlZCgpXCJcclxuICBbaXNEaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcclxuICBbY29udHJvbF09XCJjb250cm9sKClcIlxyXG4gIFtzaG93RXJyb3JdPVwic2hvdWxkU2hvd0Vycm9yXCJcclxuICBbdG9vbHRpcF09XCJ0b29sdGlwKClcIlxyXG4gIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uKClcIlxyXG4gIFtjdXN0b21WYWxpZGF0aW9uXT1cImhhbmRsZUN1c3RvbVZhbGlkYXRvcigpXCJcclxuICBbaW5wdXRJZF09XCJpbnB1dElkKClcIlxyXG4+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJibWJfaW5wdXQtcGhvbmVcIj5cclxuICAgIDxzZWN0aW9uXHJcbiAgICAgIGNsYXNzPVwiYm1iX2lucHV0LXBob25lLWNvbnRhaW5lclwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAnYm1iX2lucHV0LXBob25lLWNvbnRhaW5lci1lcnJvcic6IHNob3VsZFNob3dFcnJvcixcclxuICAgICAgICAnYm1iX2lucHV0LXBob25lLWNvbnRhaW5lci1mb2N1cyc6IGlzRm9jdXNlZCgpLFxyXG4gICAgICB9XCJcclxuICAgID5cclxuICAgICAgPGJtYi1kcm9wZG93blxyXG4gICAgICAgIGNsYXNzPVwiYm1iX2lucHV0LXBob25lLWxhZGFcIlxyXG4gICAgICAgIFtuYW1lXT1cImdldFVVSUQoJ2xhZGEnKVwiXHJcbiAgICAgICAgW3ZhbHVlXT1cImxhZGFDb250cm9sLnZhbHVlXCJcclxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxyXG4gICAgICAgIFtzaG93SWNvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgW29wdGlvbnNdPVwiY291bnRyeUZpbHRlcmluZ1wiXHJcbiAgICAgICAgW3ByZWZlcnJlZE9wdGlvbnNdPVwicHJlZmVycmVkQ291bnRyaWVzKClcIlxyXG4gICAgICAgIFtjb250cm9sXT1cImxhZGFDb250cm9sXCJcclxuICAgICAgICAob25WYWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIChvbkZvY3VzKT1cImhhbmRsZUZvY3VzKCRldmVudClcIlxyXG4gICAgICAvPlxyXG4gICAgICA8Ym1iLWlucHV0LWNvbnRlbnRcclxuICAgICAgICBjbGFzcz1cImJtYl9pbnB1dC1waG9uZS1udW1iZXJcIlxyXG4gICAgICAgIFtuYW1lXT1cImdldFVVSUQoJ3Bob25lJylcIlxyXG4gICAgICAgIHBhdHRlcm49XCJeXFxkKyRcIlxyXG4gICAgICAgIFtpc0Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxyXG4gICAgICAgIFtjb250cm9sXT1cInBob25lQ29udHJvbFwiXHJcbiAgICAgICAgW2lucHV0SWRdPVwiaW5wdXRJZCgpXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgICAgW21heExlbmd0aF09XCJnZXRTZWxlY3RlZENvdW50cnlMZW5ndGgobGFkYUNvbnRyb2wudmFsdWUpXCJcclxuICAgICAgICBbbWluTGVuZ3RoXT1cImdldFNlbGVjdGVkQ291bnRyeUxlbmd0aChsYWRhQ29udHJvbC52YWx1ZSlcIlxyXG4gICAgICAgIFtpc1JlcXVpcmVkXT1cImlzUmVxdWlyZWQoKVwiXHJcbiAgICAgICAgKG9uRm9jdXMpPVwiaGFuZGxlRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgKG9uQmx1cik9XCJoYW5kbGVWYWxpZGl0eSgpXCJcclxuICAgICAgLz5cclxuICAgIDwvc2VjdGlvbj5cclxuICAgIDxpbnB1dFxyXG4gICAgICBoaWRkZW5cclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBbbmFtZV09XCJuYW1lKClcIlxyXG4gICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZCgpXCJcclxuICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2woKVwiXHJcbiAgICAgIFt0YWJpbmRleF09XCItMVwiXHJcbiAgICAvPlxyXG4gIDwvc2VjdGlvbj5cclxuPC9ibWItaW5wdXQtdmFsaWRhdG9yPlxyXG4iXX0=
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import { BmbTagComponent } from './../bmb-tags/bmb-tags.component';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, input, ViewEncapsulation, output, model, signal, } from '@angular/core';
|
|
4
|
-
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import { ClickOutsideDirective } from '../../directives/utils/clickoutside.directive';
|
|
6
|
-
import { debounceTime } from 'rxjs';
|
|
7
|
-
import { convertListToSelectList, filteredValue, getSelectedValues, getValidInitialValues, } from '../../utils/dropdown';
|
|
8
|
-
import { BmbInputValidatorComponent } from '../bmb-input/bmb-input-validator/bmb-input-validator.component';
|
|
9
|
-
import { BmbDropdownContentComponent } from '../utils/bmb-dropdown-content/bmb-dropdown-content.component';
|
|
10
|
-
import { BmbInputContentComponent } from '../bmb-input/bmb-input-content/bmb-input-content.component';
|
|
11
|
-
import { getUUID } from '../../utils/utils';
|
|
12
|
-
import { assignNewFormControl, handleValidity, newFormControlByType, showError, } from '../../utils/formControl';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@angular/common";
|
|
15
|
-
import * as i2 from "@angular/forms";
|
|
16
|
-
export class BmbInputTagsComponent {
|
|
17
|
-
constructor(cdr) {
|
|
18
|
-
this.cdr = cdr;
|
|
19
|
-
this.errorMessage = input('');
|
|
20
|
-
this.tooltip = input('');
|
|
21
|
-
this.tooltipPosition = input({
|
|
22
|
-
align: 'above',
|
|
23
|
-
justify: 'before',
|
|
24
|
-
});
|
|
25
|
-
this.label = input('');
|
|
26
|
-
this.placeholder = input('');
|
|
27
|
-
this.isRequired = input(false);
|
|
28
|
-
this.helperMessage = input('');
|
|
29
|
-
this.disabled = input(false);
|
|
30
|
-
this.maxSelectedItems = input(); //Deprecated
|
|
31
|
-
this.name = input(getUUID());
|
|
32
|
-
this.value = input('');
|
|
33
|
-
this.showError = input(false);
|
|
34
|
-
this.inputId = input(this.name());
|
|
35
|
-
this.customValidation = input();
|
|
36
|
-
this.tagOptions = model([]);
|
|
37
|
-
this.control = model(newFormControlByType());
|
|
38
|
-
this.onKeyDown = output();
|
|
39
|
-
this.onChange = output();
|
|
40
|
-
this.uuid = getUUID();
|
|
41
|
-
this.showDropdown = false;
|
|
42
|
-
this.selectedTags = [];
|
|
43
|
-
this.filteredOptions = [];
|
|
44
|
-
this.filterControl = new FormControl();
|
|
45
|
-
this.items = [];
|
|
46
|
-
this.isFocused = signal(false);
|
|
47
|
-
this.isKeyboardEvent = false;
|
|
48
|
-
this.isControlNull = false;
|
|
49
|
-
}
|
|
50
|
-
ngOnInit() {
|
|
51
|
-
if (this.disabled())
|
|
52
|
-
this.filterControl.disable();
|
|
53
|
-
else
|
|
54
|
-
this.filterControl.enable();
|
|
55
|
-
this.filterControl.valueChanges
|
|
56
|
-
.pipe(debounceTime(300))
|
|
57
|
-
.subscribe((value) => {
|
|
58
|
-
this.filteredOptions = filteredValue(value, this.items);
|
|
59
|
-
this.cdr.detectChanges();
|
|
60
|
-
});
|
|
61
|
-
this.control().valueChanges.subscribe((value) => {
|
|
62
|
-
this.setSelectedTags(value || []);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
ngOnChanges(changes) {
|
|
66
|
-
if (!this.control()) {
|
|
67
|
-
this.control.set(assignNewFormControl(this.name(), this.control()));
|
|
68
|
-
this.isControlNull = true;
|
|
69
|
-
}
|
|
70
|
-
if (changes['tagOptions']) {
|
|
71
|
-
this.initOptions(changes['tagOptions'].currentValue);
|
|
72
|
-
this.control()?.setValue(this.getValidInitialValues());
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
initOptions(list) {
|
|
76
|
-
this.items = convertListToSelectList(list);
|
|
77
|
-
this.items = this.items.map((element) => {
|
|
78
|
-
return {
|
|
79
|
-
...element,
|
|
80
|
-
action: () => {
|
|
81
|
-
this.setSelectedValue(element);
|
|
82
|
-
},
|
|
83
|
-
};
|
|
84
|
-
});
|
|
85
|
-
this.setSelectedTags(this.getValidInitialValues());
|
|
86
|
-
this.filteredOptions = [...this.items];
|
|
87
|
-
}
|
|
88
|
-
getUUID(name) {
|
|
89
|
-
return `${name}_${this.name()}_${this.uuid}`;
|
|
90
|
-
}
|
|
91
|
-
getValidInitialValues() {
|
|
92
|
-
const initialValue = getValidInitialValues(this.control().value, this.value(), this.tagOptions(), true);
|
|
93
|
-
return Array.isArray(initialValue) ? initialValue : [];
|
|
94
|
-
}
|
|
95
|
-
setSelectedValue(element) {
|
|
96
|
-
this.control().setValue(getSelectedValues(this.control().value, element.value));
|
|
97
|
-
this.filterControl.setValue('');
|
|
98
|
-
this.onChange.emit(this.control().value);
|
|
99
|
-
}
|
|
100
|
-
setSelectedTags(controlValue) {
|
|
101
|
-
this.selectedTags = this.items.filter(({ value }) => controlValue.includes(value));
|
|
102
|
-
}
|
|
103
|
-
removeTag(tag) {
|
|
104
|
-
this.setSelectedValue(tag);
|
|
105
|
-
}
|
|
106
|
-
openList() {
|
|
107
|
-
this.showDropdown = true;
|
|
108
|
-
}
|
|
109
|
-
closeList() {
|
|
110
|
-
this.showDropdown = false;
|
|
111
|
-
this.isKeyboardEvent = false;
|
|
112
|
-
}
|
|
113
|
-
selectOptionWithKey(value) {
|
|
114
|
-
if (!!value) {
|
|
115
|
-
const selectedLength = this.filteredOptions.length;
|
|
116
|
-
if (!!selectedLength) {
|
|
117
|
-
this.setSelectedValue(this.filteredOptions[0]);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
this.addOption(value);
|
|
121
|
-
this.setSelectedValue(this.filteredOptions[this.filteredOptions.length - 1]);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
addOption(value) {
|
|
126
|
-
if (typeof this.tagOptions()[0] === 'string') {
|
|
127
|
-
const newTagOptions = [
|
|
128
|
-
...this.tagOptions(),
|
|
129
|
-
value,
|
|
130
|
-
];
|
|
131
|
-
this.tagOptions.set([...new Set(newTagOptions)]);
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
const newOption = {
|
|
135
|
-
name: value,
|
|
136
|
-
value,
|
|
137
|
-
selectedText: value,
|
|
138
|
-
id: getUUID(),
|
|
139
|
-
};
|
|
140
|
-
const newList = [
|
|
141
|
-
...this.tagOptions(),
|
|
142
|
-
newOption,
|
|
143
|
-
];
|
|
144
|
-
this.tagOptions.set([...new Set(newList)]);
|
|
145
|
-
}
|
|
146
|
-
this.initOptions(this.tagOptions());
|
|
147
|
-
}
|
|
148
|
-
handleKeyDown(event) {
|
|
149
|
-
const keyboardValuesToOpenDialog = [' ', 'ArrowDown', 'Down'];
|
|
150
|
-
const keyboardValuesToAddOption = [',', 'Enter'];
|
|
151
|
-
if (keyboardValuesToOpenDialog.includes(event.key)) {
|
|
152
|
-
if (!this.showDropdown) {
|
|
153
|
-
this.isKeyboardEvent = true;
|
|
154
|
-
this.openList();
|
|
155
|
-
}
|
|
156
|
-
if (!this.filteredOptions.length) {
|
|
157
|
-
event.preventDefault();
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
if (keyboardValuesToAddOption.includes(event.key)) {
|
|
163
|
-
event.preventDefault();
|
|
164
|
-
this.selectOptionWithKey(this.filterControl.value);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
handleFocus(value) {
|
|
168
|
-
this.isFocused.set(value);
|
|
169
|
-
}
|
|
170
|
-
handleValidity() {
|
|
171
|
-
handleValidity(this.control());
|
|
172
|
-
}
|
|
173
|
-
get shouldShowError() {
|
|
174
|
-
return showError(this.control());
|
|
175
|
-
}
|
|
176
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbInputTagsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
177
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: BmbInputTagsComponent, isStandalone: true, selector: "bmb-input-tags", inputs: { errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, isRequired: { classPropertyName: "isRequired", publicName: "isRequired", isSignal: true, isRequired: false, transformFunction: null }, helperMessage: { classPropertyName: "helperMessage", publicName: "helperMessage", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, showError: { classPropertyName: "showError", publicName: "showError", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, customValidation: { classPropertyName: "customValidation", publicName: "customValidation", isSignal: true, isRequired: false, transformFunction: null }, tagOptions: { classPropertyName: "tagOptions", publicName: "tagOptions", isSignal: true, isRequired: false, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tagOptions: "tagOptionsChange", control: "controlChange", onKeyDown: "onKeyDown", onChange: "onChange" }, providers: [], usesOnChanges: true, ngImport: i0, template: "<bmb-input-validator\r\n class=\"bmb_input-tags\"\r\n [name]=\"name()\"\r\n [value]=\"getValidInitialValues()\"\r\n [label]=\"label()!\"\r\n [errorMessage]=\"errorMessage()\"\r\n [helperMessage]=\"helperMessage()\"\r\n [isRequired]=\"isRequired()\"\r\n [isDisabled]=\"disabled()\"\r\n [control]=\"control()\"\r\n [showError]=\"shouldShowError\"\r\n [tooltip]=\"tooltip()\"\r\n [tooltipPosition]=\"tooltipPosition()\"\r\n [customValidation]=\"customValidation()\"\r\n clickOutside\r\n (clickOutside)=\"closeList()\"\r\n [inputId]=\"inputId()\"\r\n>\r\n <section\r\n class=\"bmb_input-tags-container\"\r\n [ngClass]=\"{\r\n 'bmb_input-tags-container-error': shouldShowError,\r\n 'bmb_input-tags-container-focus': isFocused(),\r\n }\"\r\n >\r\n <bmb-input-content\r\n class=\"bmb_input-tags-filter\"\r\n type=\"text\"\r\n [inputId]=\"inputId()\"\r\n [name]=\"getUUID('filter')\"\r\n [control]=\"filterControl\"\r\n [placeholder]=\"placeholder()\"\r\n [isDisabled]=\"disabled()\"\r\n (click)=\"openList()\"\r\n (onBlur)=\"handleValidity()\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (onFocus)=\"handleFocus($event)\"\r\n />\r\n @if (!!selectedTags && !!selectedTags.length) {\r\n <div class=\"bmb_input-tags-selected-list\" [tabIndex]=\"-1\">\r\n @for (item of selectedTags; track $index) {\r\n <bmb-tag\r\n [text]=\"item.selectedText!\"\r\n [dismissible]=\"true\"\r\n [isDisabled]=\"disabled()\"\r\n (clickedTag)=\"removeTag(item)\"\r\n (closedTag)=\"removeTag(item)\"\r\n />\r\n }\r\n </div>\r\n }\r\n </section>\r\n <input\r\n hidden\r\n type=\"text\"\r\n [id]=\"name()\"\r\n [name]=\"name()\"\r\n [formControl]=\"control()\"\r\n />\r\n <bmb-dropdown-content\r\n class=\"bmb_input-tags-dialog\"\r\n name=\"list\"\r\n [selectedOption]=\"control().value\"\r\n [isKeyboardEvent]=\"isKeyboardEvent\"\r\n [(items)]=\"filteredOptions\"\r\n [(isOpen)]=\"showDropdown\"\r\n />\r\n</bmb-input-validator>\r\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_input-tags-container{display:flex;flex-direction:column;box-sizing:border-box;border:.0625rem solid var(--general_contrasts-50);border-radius:.5rem;width:100%;background-color:var(--general_contrasts-input-background);height:3rem;transition:all .3s ease;min-height:3rem;height:auto}.bmb_input-tags-container-error{border-color:var(--input-error)}.bmb_input-tags-container:focus,.bmb_input-tags-container:focus-visible,.bmb_input-tags-container-focus{box-sizing:inherit;border-color:var(--general_contrasts-input-outline);caret-color:var(--general_contrasts-input-outline);outline:.0625rem solid;outline-color:var(--general_contrasts-input-outline)}.bmb_input-tags-container:hover{box-sizing:inherit;border-color:var(--general_contrasts-50);outline:.0625rem solid;outline-color:var(--general_contrasts-50)}.bmb_input-tags-dialog .bmb_dropdown-content-item .bmb_check-external-link-button{display:block;padding:.6875rem 1rem}.bmb_input-tags-dialog .bmb_dropdown-content-item .bmb_check-external-link-button-element{width:auto;border-radius:var(--bmb-spacing-m);padding:var(--bmb-spacing-s);height:1.625rem;border:.0625rem solid transparent}.bmb_input-tags-dialog .bmb_dropdown-content-item .bmb_check-external-link-button-element:hover,.bmb_input-tags-dialog .bmb_dropdown-content-item .bmb_check-external-link-button-element:focus,.bmb_input-tags-dialog .bmb_dropdown-content-item .bmb_check-external-link-button-element:focus-visible{border-color:var(--menu_select-on-surface-hovered-border)}.bmb_input-tags-filter .bmb_field-input-normal{border:0;height:2.75rem}.bmb_input-tags-filter .bmb_field-input-normal:focus,.bmb_input-tags-filter .bmb_field-input-normal:focus-visible,.bmb_input-tags-filter .bmb_field-input-normal:hover{border:0;outline:0 none}.bmb_input-tags-selected-list{display:flex;flex-wrap:wrap;gap:.5rem;padding:var(--bmb-spacing-s);max-height:6.9375rem;overflow:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { kind: "component", type: BmbTagComponent, selector: "bmb-tag", inputs: ["appearance", "text", "grouped", "dismissible", "rounded", "activityTag", "isDisabled", "isActive"], outputs: ["closedTag", "clickedTag"] }, { kind: "component", type: BmbInputValidatorComponent, selector: "bmb-input-validator", inputs: ["inputId", "type", "appearance", "label", "labelPosition", "name", "value", "checked", "isRequired", "isDisabled", "max", "min", "maxLength", "minLength", "pattern", "jsonFormat", "tooltip", "rows", "tooltipPosition", "showMaxTextLength", "helperMessage", "errorMessage", "customValidation", "showError", "control"], outputs: ["showErrorChange", "controlChange"] }, { kind: "component", type: BmbInputContentComponent, selector: "bmb-input-content", inputs: ["type", "placeholder", "icon", "appearance", "isDisabled", "isRequired", "name", "spellcheck", "heightTextArea", "maxLength", "minLength", "pattern", "max", "min", "inputId", "autoComplete", "rows", "isReadOnly", "additionalAction", "isClearable", "isError", "isHidden", "showStates", "control"], outputs: ["controlChange", "onFocus", "onBlur", "onChange", "onKeyDown", "onKeyUp"] }, { kind: "component", type: BmbDropdownContentComponent, selector: "bmb-dropdown-content", inputs: ["selectedOption", "items", "isOpen", "isKeyboardEvent"], outputs: ["itemsChange", "isOpenChange", "isKeyboardEventChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
178
|
-
}
|
|
179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BmbInputTagsComponent, decorators: [{
|
|
180
|
-
type: Component,
|
|
181
|
-
args: [{ selector: 'bmb-input-tags', standalone: true, imports: [
|
|
182
|
-
CommonModule,
|
|
183
|
-
ReactiveFormsModule,
|
|
184
|
-
ClickOutsideDirective,
|
|
185
|
-
BmbTagComponent,
|
|
186
|
-
BmbInputValidatorComponent,
|
|
187
|
-
BmbInputContentComponent,
|
|
188
|
-
BmbDropdownContentComponent,
|
|
189
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [], template: "<bmb-input-validator\r\n class=\"bmb_input-tags\"\r\n [name]=\"name()\"\r\n [value]=\"getValidInitialValues()\"\r\n [label]=\"label()!\"\r\n [errorMessage]=\"errorMessage()\"\r\n [helperMessage]=\"helperMessage()\"\r\n [isRequired]=\"isRequired()\"\r\n [isDisabled]=\"disabled()\"\r\n [control]=\"control()\"\r\n [showError]=\"shouldShowError\"\r\n [tooltip]=\"tooltip()\"\r\n [tooltipPosition]=\"tooltipPosition()\"\r\n [customValidation]=\"customValidation()\"\r\n clickOutside\r\n (clickOutside)=\"closeList()\"\r\n [inputId]=\"inputId()\"\r\n>\r\n <section\r\n class=\"bmb_input-tags-container\"\r\n [ngClass]=\"{\r\n 'bmb_input-tags-container-error': shouldShowError,\r\n 'bmb_input-tags-container-focus': isFocused(),\r\n }\"\r\n >\r\n <bmb-input-content\r\n class=\"bmb_input-tags-filter\"\r\n type=\"text\"\r\n [inputId]=\"inputId()\"\r\n [name]=\"getUUID('filter')\"\r\n [control]=\"filterControl\"\r\n [placeholder]=\"placeholder()\"\r\n [isDisabled]=\"disabled()\"\r\n (click)=\"openList()\"\r\n (onBlur)=\"handleValidity()\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (onFocus)=\"handleFocus($event)\"\r\n />\r\n @if (!!selectedTags && !!selectedTags.length) {\r\n <div class=\"bmb_input-tags-selected-list\" [tabIndex]=\"-1\">\r\n @for (item of selectedTags; track $index) {\r\n <bmb-tag\r\n [text]=\"item.selectedText!\"\r\n [dismissible]=\"true\"\r\n [isDisabled]=\"disabled()\"\r\n (clickedTag)=\"removeTag(item)\"\r\n (closedTag)=\"removeTag(item)\"\r\n />\r\n }\r\n </div>\r\n }\r\n </section>\r\n <input\r\n hidden\r\n type=\"text\"\r\n [id]=\"name()\"\r\n [name]=\"name()\"\r\n [formControl]=\"control()\"\r\n />\r\n <bmb-dropdown-content\r\n class=\"bmb_input-tags-dialog\"\r\n name=\"list\"\r\n [selectedOption]=\"control().value\"\r\n [isKeyboardEvent]=\"isKeyboardEvent\"\r\n [(items)]=\"filteredOptions\"\r\n [(isOpen)]=\"showDropdown\"\r\n />\r\n</bmb-input-validator>\r\n", styles: ["@font-face{font-family:Poppins-Thin;font-style:normal;font-weight:100;src:url(/assets/fonts/Poppins/Poppins-Thin.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Light;font-style:normal;font-weight:300;src:url(/assets/fonts/Poppins/Poppins-ExtraLight.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Regular;font-style:normal;font-weight:400;src:url(/assets/fonts/Poppins/Poppins-Regular.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Medium;font-style:normal;font-weight:500;src:url(/assets/fonts/Poppins/Poppins-Medium.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Semibold;font-style:normal;font-weight:600;src:url(/assets/fonts/Poppins/Poppins-SemiBold.ttf) format(\"truetype\")}@font-face{font-family:Poppins-Bold;font-style:normal;font-weight:700;src:url(/assets/fonts/Poppins/Poppins-Bold.ttf) format(\"truetype\")}:root,:host{--font-display: \"Poppins-Regular\", sans-serif}.font-thin-1{font-family:Poppins-Thin,sans-serif;font-size:.625rem}.font-light-1{font-family:Poppins-Light,sans-serif;font-size:.625rem}.font-regular-1{font-family:Poppins-Regular,sans-serif;font-size:.625rem}.font-medium-1{font-family:Poppins-Medium,sans-serif;font-size:.625rem}.font-semibold-1{font-family:Poppins-Semibold,sans-serif;font-size:.625rem}.font-bold-1{font-family:Poppins-Bold,sans-serif;font-size:.625rem}.font-thin-2{font-family:Poppins-Thin,sans-serif;font-size:.6875rem}.font-light-2{font-family:Poppins-Light,sans-serif;font-size:.6875rem}.font-regular-2{font-family:Poppins-Regular,sans-serif;font-size:.6875rem}.font-medium-2{font-family:Poppins-Medium,sans-serif;font-size:.6875rem}.font-semibold-2{font-family:Poppins-Semibold,sans-serif;font-size:.6875rem}.font-bold-2{font-family:Poppins-Bold,sans-serif;font-size:.6875rem}.font-thin-3{font-family:Poppins-Thin,sans-serif;font-size:.75rem}.font-light-3{font-family:Poppins-Light,sans-serif;font-size:.75rem}.font-regular-3{font-family:Poppins-Regular,sans-serif;font-size:.75rem}.font-medium-3{font-family:Poppins-Medium,sans-serif;font-size:.75rem}.font-semibold-3{font-family:Poppins-Semibold,sans-serif;font-size:.75rem}.font-bold-3{font-family:Poppins-Bold,sans-serif;font-size:.75rem}.font-thin-4{font-family:Poppins-Thin,sans-serif;font-size:.875rem}.font-light-4{font-family:Poppins-Light,sans-serif;font-size:.875rem}.font-regular-4{font-family:Poppins-Regular,sans-serif;font-size:.875rem}.font-medium-4{font-family:Poppins-Medium,sans-serif;font-size:.875rem}.font-semibold-4{font-family:Poppins-Semibold,sans-serif;font-size:.875rem}.font-bold-4{font-family:Poppins-Bold,sans-serif;font-size:.875rem}.font-thin-4_5{font-family:Poppins-Thin,sans-serif;font-size:.9375rem}.font-light-4_5{font-family:Poppins-Light,sans-serif;font-size:.9375rem}.font-regular-4_5{font-family:Poppins-Regular,sans-serif;font-size:.9375rem}.font-medium-4_5{font-family:Poppins-Medium,sans-serif;font-size:.9375rem}.font-semibold-4_5{font-family:Poppins-Semibold,sans-serif;font-size:.9375rem}.font-bold-4_5{font-family:Poppins-Bold,sans-serif;font-size:.9375rem}.font-thin-5{font-family:Poppins-Thin,sans-serif;font-size:1rem}.font-light-5{font-family:Poppins-Light,sans-serif;font-size:1rem}.font-regular-5{font-family:Poppins-Regular,sans-serif;font-size:1rem}.font-medium-5{font-family:Poppins-Medium,sans-serif;font-size:1rem}.font-semibold-5{font-family:Poppins-Semibold,sans-serif;font-size:1rem}.font-bold-5{font-family:Poppins-Bold,sans-serif;font-size:1rem}.font-thin-6{font-family:Poppins-Thin,sans-serif;font-size:1.125rem}.font-light-6{font-family:Poppins-Light,sans-serif;font-size:1.125rem}.font-regular-6{font-family:Poppins-Regular,sans-serif;font-size:1.125rem}.font-medium-6{font-family:Poppins-Medium,sans-serif;font-size:1.125rem}.font-semibold-6{font-family:Poppins-Semibold,sans-serif;font-size:1.125rem}.font-bold-6{font-family:Poppins-Bold,sans-serif;font-size:1.125rem}.font-thin-7{font-family:Poppins-Thin,sans-serif;font-size:1.25rem}.font-light-7{font-family:Poppins-Light,sans-serif;font-size:1.25rem}.font-regular-7{font-family:Poppins-Regular,sans-serif;font-size:1.25rem}.font-medium-7{font-family:Poppins-Medium,sans-serif;font-size:1.25rem}.font-semibold-7{font-family:Poppins-Semibold,sans-serif;font-size:1.25rem}.font-bold-7{font-family:Poppins-Bold,sans-serif;font-size:1.25rem}.font-thin-8{font-family:Poppins-Thin,sans-serif;font-size:1.375rem}.font-light-8{font-family:Poppins-Light,sans-serif;font-size:1.375rem}.font-regular-8{font-family:Poppins-Regular,sans-serif;font-size:1.375rem}.font-medium-8{font-family:Poppins-Medium,sans-serif;font-size:1.375rem}.font-semibold-8{font-family:Poppins-Semibold,sans-serif;font-size:1.375rem}.font-bold-8{font-family:Poppins-Bold,sans-serif;font-size:1.375rem}.font-thin-9{font-family:Poppins-Thin,sans-serif;font-size:1.5rem}.font-light-9{font-family:Poppins-Light,sans-serif;font-size:1.5rem}.font-regular-9{font-family:Poppins-Regular,sans-serif;font-size:1.5rem}.font-medium-9{font-family:Poppins-Medium,sans-serif;font-size:1.5rem}.font-semibold-9{font-family:Poppins-Semibold,sans-serif;font-size:1.5rem}.font-bold-9{font-family:Poppins-Bold,sans-serif;font-size:1.5rem}.font-thin-10{font-family:Poppins-Thin,sans-serif;font-size:1.625rem}.font-light-10{font-family:Poppins-Light,sans-serif;font-size:1.625rem}.font-regular-10{font-family:Poppins-Regular,sans-serif;font-size:1.625rem}.font-medium-10{font-family:Poppins-Medium,sans-serif;font-size:1.625rem}.font-semibold-10{font-family:Poppins-Semibold,sans-serif;font-size:1.625rem}.font-bold-10{font-family:Poppins-Bold,sans-serif;font-size:1.625rem}.font-thin-11{font-family:Poppins-Thin,sans-serif;font-size:2.25rem}.font-light-11{font-family:Poppins-Light,sans-serif;font-size:2.25rem}.font-regular-11{font-family:Poppins-Regular,sans-serif;font-size:2.25rem}.font-medium-11{font-family:Poppins-Medium,sans-serif;font-size:2.25rem}.font-semibold-11{font-family:Poppins-Semibold,sans-serif;font-size:2.25rem}.font-bold-11{font-family:Poppins-Bold,sans-serif;font-size:2.25rem}.font-thin-12{font-family:Poppins-Thin,sans-serif;font-size:3rem}.font-light-12{font-family:Poppins-Light,sans-serif;font-size:3rem}.font-regular-12{font-family:Poppins-Regular,sans-serif;font-size:3rem}.font-medium-12{font-family:Poppins-Medium,sans-serif;font-size:3rem}.font-semibold-12{font-family:Poppins-Semibold,sans-serif;font-size:3rem}.font-bold-12{font-family:Poppins-Bold,sans-serif;font-size:3rem}.bmb_input-tags-container{display:flex;flex-direction:column;box-sizing:border-box;border:.0625rem solid var(--general_contrasts-50);border-radius:.5rem;width:100%;background-color:var(--general_contrasts-input-background);height:3rem;transition:all .3s ease;min-height:3rem;height:auto}.bmb_input-tags-container-error{border-color:var(--input-error)}.bmb_input-tags-container:focus,.bmb_input-tags-container:focus-visible,.bmb_input-tags-container-focus{box-sizing:inherit;border-color:var(--general_contrasts-input-outline);caret-color:var(--general_contrasts-input-outline);outline:.0625rem solid;outline-color:var(--general_contrasts-input-outline)}.bmb_input-tags-container:hover{box-sizing:inherit;border-color:var(--general_contrasts-50);outline:.0625rem solid;outline-color:var(--general_contrasts-50)}.bmb_input-tags-dialog .bmb_dropdown-content-item .bmb_check-external-link-button{display:block;padding:.6875rem 1rem}.bmb_input-tags-dialog .bmb_dropdown-content-item .bmb_check-external-link-button-element{width:auto;border-radius:var(--bmb-spacing-m);padding:var(--bmb-spacing-s);height:1.625rem;border:.0625rem solid transparent}.bmb_input-tags-dialog .bmb_dropdown-content-item .bmb_check-external-link-button-element:hover,.bmb_input-tags-dialog .bmb_dropdown-content-item .bmb_check-external-link-button-element:focus,.bmb_input-tags-dialog .bmb_dropdown-content-item .bmb_check-external-link-button-element:focus-visible{border-color:var(--menu_select-on-surface-hovered-border)}.bmb_input-tags-filter .bmb_field-input-normal{border:0;height:2.75rem}.bmb_input-tags-filter .bmb_field-input-normal:focus,.bmb_input-tags-filter .bmb_field-input-normal:focus-visible,.bmb_input-tags-filter .bmb_field-input-normal:hover{border:0;outline:0 none}.bmb_input-tags-selected-list{display:flex;flex-wrap:wrap;gap:.5rem;padding:var(--bmb-spacing-s);max-height:6.9375rem;overflow:auto}\n"] }]
|
|
190
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWlucHV0LXRhZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtbmcvc3JjL2xpYi9jb21wb25lbnRzL2JtYi1pbnB1dC10YWdzL2JtYi1pbnB1dC10YWdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItaW5wdXQtdGFncy9ibWItaW5wdXQtdGFncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssRUFDTCxpQkFBaUIsRUFFakIsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBZSxNQUFNLGdCQUFnQixDQUFDO0FBTS9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLHFCQUFxQixHQUN0QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRTNHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFP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ZUFBZTtRQUNqQixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDOytHQW5NVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiwreEVBRnJCLEVBQUUsK0NDekRmLDRsRUFvRUEsK3FRRHZCSSxZQUFZLDRIQUNaLG1CQUFtQiwwa0JBQ25CLHFCQUFxQixzRkFDckIsZUFBZSx3TUFDZiwwQkFBMEIscWJBQzFCLHdCQUF3QixxY0FDeEIsMkJBQTJCOzs0RkFRbEIscUJBQXFCO2tCQWxCakMsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZiwwQkFBMEI7d0JBQzFCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3FCQUM1QixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbWJUYWdDb21wb25lbnQgfSBmcm9tICcuLy4uL2JtYi10YWdzL2JtYi10YWdzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIGlucHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIE9uSW5pdCxcclxuICBvdXRwdXQsXHJcbiAgbW9kZWwsXHJcbiAgc2lnbmFsLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25DaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElCbWJEcm9wZG93bkl0ZW0gfSBmcm9tICcuLi9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgSUJtYklucHV0RXJyb3IsXHJcbiAgSUJtYklucHV0VG9vbHRpcFBvc2l0aW9uLFxyXG59IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpY2tPdXRzaWRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy91dGlscy9jbGlja291dHNpZGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgY29udmVydExpc3RUb1NlbGVjdExpc3QsXHJcbiAgZmlsdGVyZWRWYWx1ZSxcclxuICBnZXRTZWxlY3RlZFZhbHVlcyxcclxuICBnZXRWYWxpZEluaXRpYWxWYWx1ZXMsXHJcbn0gZnJvbSAnLi4vLi4vdXRpbHMvZHJvcGRvd24nO1xyXG5pbXBvcnQgeyBCbWJJbnB1dFZhbGlkYXRvckNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQtdmFsaWRhdG9yL2JtYi1pbnB1dC12YWxpZGF0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQm1iRHJvcGRvd25Db250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vdXRpbHMvYm1iLWRyb3Bkb3duLWNvbnRlbnQvYm1iLWRyb3Bkb3duLWNvbnRlbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSURyb3Bkb3duSXRlbSB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgQm1iSW5wdXRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC1jb250ZW50L2JtYi1pbnB1dC1jb250ZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IGdldFVVSUQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgYXNzaWduTmV3Rm9ybUNvbnRyb2wsXHJcbiAgaGFuZGxlVmFsaWRpdHksXHJcbiAgbmV3Rm9ybUNvbnRyb2xCeVR5cGUsXHJcbiAgc2hvd0Vycm9yLFxyXG59IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1Db250cm9sJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYm1iLWlucHV0LXRhZ3MnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIENsaWNrT3V0c2lkZURpcmVjdGl2ZSxcclxuICAgIEJtYlRhZ0NvbXBvbmVudCxcclxuICAgIEJtYklucHV0VmFsaWRhdG9yQ29tcG9uZW50LFxyXG4gICAgQm1iSW5wdXRDb250ZW50Q29tcG9uZW50LFxyXG4gICAgQm1iRHJvcGRvd25Db250ZW50Q29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi1pbnB1dC10YWdzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYm1iLWlucHV0LXRhZ3MuY29tcG9uZW50LnNjc3MnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJtYklucHV0VGFnc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBlcnJvck1lc3NhZ2UgPSBpbnB1dDxzdHJpbmcgfCBJQm1iSW5wdXRFcnJvcj4oJycpO1xyXG4gIHRvb2x0aXAgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICB0b29sdGlwUG9zaXRpb24gPSBpbnB1dDxJQm1iSW5wdXRUb29sdGlwUG9zaXRpb24+KHtcclxuICAgIGFsaWduOiAnYWJvdmUnLFxyXG4gICAganVzdGlmeTogJ2JlZm9yZScsXHJcbiAgfSk7XHJcbiAgbGFiZWwgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuICBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gIGlzUmVxdWlyZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcbiAgaGVscGVyTWVzc2FnZSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG4gIGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIG1heFNlbGVjdGVkSXRlbXMgPSBpbnB1dDxudW1iZXI+KCk7IC8vRGVwcmVjYXRlZFxyXG4gIG5hbWUgPSBpbnB1dDxzdHJpbmc+KGdldFVVSUQoKSk7XHJcbiAgdmFsdWUgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJycpO1xyXG4gIHNob3dFcnJvciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBpbnB1dElkID0gaW5wdXQ8c3RyaW5nPih0aGlzLm5hbWUoKSk7XHJcbiAgY3VzdG9tVmFsaWRhdGlvbiA9IGlucHV0PFZhbGlkYXRvckZuPigpO1xyXG5cclxuICB0YWdPcHRpb25zID0gbW9kZWw8c3RyaW5nW10gfCBJQm1iRHJvcGRvd25JdGVtW10+KFtdKTtcclxuICBjb250cm9sID0gbW9kZWw8Rm9ybUNvbnRyb2w+KG5ld0Zvcm1Db250cm9sQnlUeXBlKCkpO1xyXG5cclxuICBvbktleURvd24gPSBvdXRwdXQ8S2V5Ym9hcmRFdmVudD4oKTtcclxuICBvbkNoYW5nZSA9IG91dHB1dDxzdHJpbmdbXT4oKTtcclxuXHJcbiAgdXVpZDogc3RyaW5nID0gZ2V0VVVJRCgpO1xyXG4gIHNob3dEcm9wZG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkVGFnczogSURyb3Bkb3duSXRlbVtdID0gW107XHJcbiAgZmlsdGVyZWRPcHRpb25zOiBJRHJvcGRvd25JdGVtW10gPSBbXTtcclxuICBmaWx0ZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcbiAgaXRlbXM6IElEcm9wZG93bkl0ZW1bXSA9IFtdO1xyXG4gIGlzRm9jdXNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgaXNLZXlib2FyZEV2ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNDb250cm9sTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSkgdGhpcy5maWx0ZXJDb250cm9sLmRpc2FibGUoKTtcclxuICAgIGVsc2UgdGhpcy5maWx0ZXJDb250cm9sLmVuYWJsZSgpO1xyXG5cclxuICAgIHRoaXMuZmlsdGVyQ29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSBmaWx0ZXJlZFZhbHVlKHZhbHVlLCB0aGlzLml0ZW1zKTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY29udHJvbCgpLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRUYWdzKHZhbHVlIHx8IFtdKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmNvbnRyb2woKSkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0KGFzc2lnbk5ld0Zvcm1Db250cm9sKHRoaXMubmFtZSgpLCB0aGlzLmNvbnRyb2woKSkhKTtcclxuICAgICAgdGhpcy5pc0NvbnRyb2xOdWxsID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1sndGFnT3B0aW9ucyddKSB7XHJcbiAgICAgIHRoaXMuaW5pdE9wdGlvbnMoY2hhbmdlc1sndGFnT3B0aW9ucyddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgIHRoaXMuY29udHJvbCgpPy5zZXRWYWx1ZSh0aGlzLmdldFZhbGlkSW5pdGlhbFZhbHVlcygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRPcHRpb25zKGxpc3Q6IHN0cmluZ1tdIHwgSUJtYkRyb3Bkb3duSXRlbVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLml0ZW1zID0gY29udmVydExpc3RUb1NlbGVjdExpc3QobGlzdCk7XHJcbiAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5tYXAoKGVsZW1lbnQ6IElEcm9wZG93bkl0ZW0pID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5lbGVtZW50LFxyXG4gICAgICAgIGFjdGlvbjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKGVsZW1lbnQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0gYXMgSURyb3Bkb3duSXRlbTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2V0U2VsZWN0ZWRUYWdzKHRoaXMuZ2V0VmFsaWRJbml0aWFsVmFsdWVzKCkpO1xyXG5cclxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLnRoaXMuaXRlbXNdO1xyXG4gIH1cclxuXHJcbiAgZ2V0VVVJRChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke25hbWV9XyR7dGhpcy5uYW1lKCl9XyR7dGhpcy51dWlkfWA7XHJcbiAgfVxyXG5cclxuICBnZXRWYWxpZEluaXRpYWxWYWx1ZXMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgaW5pdGlhbFZhbHVlOiBzdHJpbmdbXSB8IHN0cmluZyA9IGdldFZhbGlkSW5pdGlhbFZhbHVlcyhcclxuICAgICAgdGhpcy5jb250cm9sKCkudmFsdWUsXHJcbiAgICAgIHRoaXMudmFsdWUoKSxcclxuICAgICAgdGhpcy50YWdPcHRpb25zKCksXHJcbiAgICAgIHRydWUsXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGluaXRpYWxWYWx1ZSkgPyBpbml0aWFsVmFsdWUgOiBbXTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkVmFsdWUoZWxlbWVudDogSURyb3Bkb3duSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250cm9sKCkuc2V0VmFsdWUoXHJcbiAgICAgIGdldFNlbGVjdGVkVmFsdWVzKHRoaXMuY29udHJvbCgpLnZhbHVlLCBlbGVtZW50LnZhbHVlISksXHJcbiAgICApO1xyXG4gICAgdGhpcy5maWx0ZXJDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLmNvbnRyb2woKS52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZFRhZ3MoY29udHJvbFZhbHVlOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZFRhZ3MgPSB0aGlzLml0ZW1zLmZpbHRlcigoeyB2YWx1ZSB9KSA9PlxyXG4gICAgICBjb250cm9sVmFsdWUuaW5jbHVkZXModmFsdWUhKSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVUYWcodGFnOiBJRHJvcGRvd25JdGVtKSB7XHJcbiAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUodGFnKTtcclxuICB9XHJcblxyXG4gIG9wZW5MaXN0KCkge1xyXG4gICAgdGhpcy5zaG93RHJvcGRvd24gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VMaXN0KCkge1xyXG4gICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZTtcclxuICAgIHRoaXMuaXNLZXlib2FyZEV2ZW50ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPcHRpb25XaXRoS2V5KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghIXZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkTGVuZ3RoOiBudW1iZXIgPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGg7XHJcblxyXG4gICAgICBpZiAoISFzZWxlY3RlZExlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh0aGlzLmZpbHRlcmVkT3B0aW9uc1swXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hZGRPcHRpb24odmFsdWUpO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZShcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAtIDFdLFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZE9wdGlvbih2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMudGFnT3B0aW9ucygpWzBdID09PSAnc3RyaW5nJykge1xyXG4gICAgICBjb25zdCBuZXdUYWdPcHRpb25zOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAuLi4odGhpcy50YWdPcHRpb25zKCkgYXMgc3RyaW5nW10pLFxyXG4gICAgICAgIHZhbHVlLFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLnRhZ09wdGlvbnMuc2V0KFsuLi5uZXcgU2V0KG5ld1RhZ09wdGlvbnMpXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBuZXdPcHRpb246IElCbWJEcm9wZG93bkl0ZW0gPSB7XHJcbiAgICAgICAgbmFtZTogdmFsdWUsXHJcbiAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgc2VsZWN0ZWRUZXh0OiB2YWx1ZSxcclxuICAgICAgICBpZDogZ2V0VVVJRCgpLFxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBuZXdMaXN0OiBJQm1iRHJvcGRvd25JdGVtW10gPSBbXHJcbiAgICAgICAgLi4uKHRoaXMudGFnT3B0aW9ucygpIGFzIElCbWJEcm9wZG93bkl0ZW1bXSksXHJcbiAgICAgICAgbmV3T3B0aW9uLFxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLnRhZ09wdGlvbnMuc2V0KFsuLi5uZXcgU2V0KG5ld0xpc3QpXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbml0T3B0aW9ucyh0aGlzLnRhZ09wdGlvbnMoKSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBjb25zdCBrZXlib2FyZFZhbHVlc1RvT3BlbkRpYWxvZyA9IFsnICcsICdBcnJvd0Rvd24nLCAnRG93biddO1xyXG4gICAgY29uc3Qga2V5Ym9hcmRWYWx1ZXNUb0FkZE9wdGlvbiA9IFsnLCcsICdFbnRlciddO1xyXG5cclxuICAgIGlmIChrZXlib2FyZFZhbHVlc1RvT3BlbkRpYWxvZy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XHJcbiAgICAgIGlmICghdGhpcy5zaG93RHJvcGRvd24pIHtcclxuICAgICAgICB0aGlzLmlzS2V5Ym9hcmRFdmVudCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcGVuTGlzdCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoa2V5Ym9hcmRWYWx1ZXNUb0FkZE9wdGlvbi5pbmNsdWRlcyhldmVudC5rZXkpKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0T3B0aW9uV2l0aEtleSh0aGlzLmZpbHRlckNvbnRyb2wudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRm9jdXModmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNGb2N1c2VkLnNldCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVWYWxpZGl0eSgpOiB2b2lkIHtcclxuICAgIGhhbmRsZVZhbGlkaXR5KHRoaXMuY29udHJvbCgpKTtcclxuICB9XHJcblxyXG4gIGdldCBzaG91bGRTaG93RXJyb3IoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gc2hvd0Vycm9yKHRoaXMuY29udHJvbCgpKTtcclxuICB9XHJcbn1cclxuIiwiPGJtYi1pbnB1dC12YWxpZGF0b3JcclxuICBjbGFzcz1cImJtYl9pbnB1dC10YWdzXCJcclxuICBbbmFtZV09XCJuYW1lKClcIlxyXG4gIFt2YWx1ZV09XCJnZXRWYWxpZEluaXRpYWxWYWx1ZXMoKVwiXHJcbiAgW2xhYmVsXT1cImxhYmVsKCkhXCJcclxuICBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZSgpXCJcclxuICBbaGVscGVyTWVzc2FnZV09XCJoZWxwZXJNZXNzYWdlKClcIlxyXG4gIFtpc1JlcXVpcmVkXT1cImlzUmVxdWlyZWQoKVwiXHJcbiAgW2lzRGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXHJcbiAgW2NvbnRyb2xdPVwiY29udHJvbCgpXCJcclxuICBbc2hvd0Vycm9yXT1cInNob3VsZFNob3dFcnJvclwiXHJcbiAgW3Rvb2x0aXBdPVwidG9vbHRpcCgpXCJcclxuICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvbigpXCJcclxuICBbY3VzdG9tVmFsaWRhdGlvbl09XCJjdXN0b21WYWxpZGF0aW9uKClcIlxyXG4gIGNsaWNrT3V0c2lkZVxyXG4gIChjbGlja091dHNpZGUpPVwiY2xvc2VMaXN0KClcIlxyXG4gIFtpbnB1dElkXT1cImlucHV0SWQoKVwiXHJcbj5cclxuICA8c2VjdGlvblxyXG4gICAgY2xhc3M9XCJibWJfaW5wdXQtdGFncy1jb250YWluZXJcIlxyXG4gICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAnYm1iX2lucHV0LXRhZ3MtY29udGFpbmVyLWVycm9yJzogc2hvdWxkU2hvd0Vycm9yLFxyXG4gICAgICAnYm1iX2lucHV0LXRhZ3MtY29udGFpbmVyLWZvY3VzJzogaXNGb2N1c2VkKCksXHJcbiAgICB9XCJcclxuICA+XHJcbiAgICA8Ym1iLWlucHV0LWNvbnRlbnRcclxuICAgICAgY2xhc3M9XCJibWJfaW5wdXQtdGFncy1maWx0ZXJcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIFtpbnB1dElkXT1cImlucHV0SWQoKVwiXHJcbiAgICAgIFtuYW1lXT1cImdldFVVSUQoJ2ZpbHRlcicpXCJcclxuICAgICAgW2NvbnRyb2xdPVwiZmlsdGVyQ29udHJvbFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcclxuICAgICAgW2lzRGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXHJcbiAgICAgIChjbGljayk9XCJvcGVuTGlzdCgpXCJcclxuICAgICAgKG9uQmx1cik9XCJoYW5kbGVWYWxpZGl0eSgpXCJcclxuICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcclxuICAgICAgKG9uRm9jdXMpPVwiaGFuZGxlRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAvPlxyXG4gICAgQGlmICghIXNlbGVjdGVkVGFncyAmJiAhIXNlbGVjdGVkVGFncy5sZW5ndGgpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImJtYl9pbnB1dC10YWdzLXNlbGVjdGVkLWxpc3RcIiBbdGFiSW5kZXhdPVwiLTFcIj5cclxuICAgICAgICBAZm9yIChpdGVtIG9mIHNlbGVjdGVkVGFnczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICA8Ym1iLXRhZ1xyXG4gICAgICAgICAgICBbdGV4dF09XCJpdGVtLnNlbGVjdGVkVGV4dCFcIlxyXG4gICAgICAgICAgICBbZGlzbWlzc2libGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxyXG4gICAgICAgICAgICAoY2xpY2tlZFRhZyk9XCJyZW1vdmVUYWcoaXRlbSlcIlxyXG4gICAgICAgICAgICAoY2xvc2VkVGFnKT1cInJlbW92ZVRhZyhpdGVtKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgPC9zZWN0aW9uPlxyXG4gIDxpbnB1dFxyXG4gICAgaGlkZGVuXHJcbiAgICB0eXBlPVwidGV4dFwiXHJcbiAgICBbaWRdPVwibmFtZSgpXCJcclxuICAgIFtuYW1lXT1cIm5hbWUoKVwiXHJcbiAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbCgpXCJcclxuICAvPlxyXG4gIDxibWItZHJvcGRvd24tY29udGVudFxyXG4gICAgY2xhc3M9XCJibWJfaW5wdXQtdGFncy1kaWFsb2dcIlxyXG4gICAgbmFtZT1cImxpc3RcIlxyXG4gICAgW3NlbGVjdGVkT3B0aW9uXT1cImNvbnRyb2woKS52YWx1ZVwiXHJcbiAgICBbaXNLZXlib2FyZEV2ZW50XT1cImlzS2V5Ym9hcmRFdmVudFwiXHJcbiAgICBbKGl0ZW1zKV09XCJmaWx0ZXJlZE9wdGlvbnNcIlxyXG4gICAgWyhpc09wZW4pXT1cInNob3dEcm9wZG93blwiXHJcbiAgLz5cclxuPC9ibWItaW5wdXQtdmFsaWRhdG9yPlxyXG4iXX0=
|