@ti-tecnologico-de-monterrey-oficial/ds-ng 1.5.1317 → 1.5.1319
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/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +570 -570
- package/fesm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs.map +1 -1
- package/lib/ds-ng.component.d.ts +1 -1
- package/package.json +1 -3
- package/esm2022/assets/i18n/en.json +0 -122
- package/esm2022/assets/i18n/es.json +0 -122
- 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 -174
- 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 -37
- 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 -71
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center-empty/bmb-alert-center-empty.component.mjs +0 -19
- 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 -47
- package/esm2022/lib/components/bmb-alert-center/bmb-alert-center.component.mjs +0 -204
- 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 -32
- 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 -288
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-header/bmb-calendar-header.component.mjs +0 -101
- 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 -43
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-mobile/bmb-calendar-template-mobile.component.mjs +0 -100
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-month/bmb-calendar-template-month.component.mjs +0 -47
- package/esm2022/lib/components/bmb-calendar/common/bmb-calendar-template-week/bmb-calendar-template-week.component.mjs +0 -56
- 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 -159
- 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 -200
- 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 -92
- 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 -208
- package/esm2022/lib/components/bmb-datepicker/bmb-datepicker.component.mjs +0 -144
- package/esm2022/lib/components/bmb-digital-id/bmb-digital-id.component.mjs +0 -58
- 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 -65
- package/esm2022/lib/components/bmb-dropdown/bmb-dropdown.component.mjs +0 -177
- package/esm2022/lib/components/bmb-dropdown-menu/bmb-dropdown-menu.component.mjs +0 -31
- package/esm2022/lib/components/bmb-dropzone/bmb-dropzone.component.mjs +0 -192
- 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 -80
- 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 -166
- 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-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 -178
- package/esm2022/lib/components/bmb-grades/types.mjs +0 -2
- package/esm2022/lib/components/bmb-header-mitec/bmb-header-mitec.component.mjs +0 -60
- 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 -86
- 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 -45
- 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 -50
- package/esm2022/lib/components/bmb-icon/types.mjs +0 -2
- package/esm2022/lib/components/bmb-icon-item/bmb-icon-item.component.mjs +0 -32
- 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 -79
- package/esm2022/lib/components/bmb-input/bmb-input-content/bmb-input-content.component.mjs +0 -147
- 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 -68
- 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 -91
- 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 -67
- 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 -65
- 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 -121
- 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 -45
- package/esm2022/lib/components/bmb-notification-card/bmb-notification-card-modal/bmb-notification-card-modal.component.mjs +0 -21
- package/esm2022/lib/components/bmb-notification-card/bmb-notification-card.component.mjs +0 -114
- package/esm2022/lib/components/bmb-notification-counter/bmb-notification-counter.component.mjs +0 -23
- 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 -58
- package/esm2022/lib/components/bmb-portal/bmb-projected-content/bmb-projected-content.component.mjs +0 -123
- 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 -180
- 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 -122
- 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 -101
- 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 -59
- 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 -90
- package/esm2022/lib/components/bmb-table-lite/bmb-table-lite.component.mjs +0 -564
- package/esm2022/lib/components/bmb-table-lite/bmb-table-lite.interface.mjs +0 -2
- package/esm2022/lib/components/bmb-tables/bmb-tables.component.mjs +0 -541
- package/esm2022/lib/components/bmb-tables/bmb-tables.interface.mjs +0 -2
- package/esm2022/lib/components/bmb-tabs/bmb-tabs.component.mjs +0 -132
- package/esm2022/lib/components/bmb-tags/bmb-tags.component.mjs +0 -66
- 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 -236
- 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 -39
- 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 -94
- package/esm2022/lib/components/bmb-top-bar/bmb-top-bar.component.mjs +0 -86
- package/esm2022/lib/components/bmb-top-bar/types.mjs +0 -2
- package/esm2022/lib/components/bmb-totp/bmb-totp.component.mjs +0 -141
- 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 -77
- package/esm2022/lib/components/bmb-user-summary/bmb-user-summary-content/bmb-user-summary-content.component.mjs +0 -64
- package/esm2022/lib/components/bmb-user-summary/bmb-user-summary.component.mjs +0 -34
- 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 -51
- 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 -64
- package/esm2022/lib/directives/bmb-layout/bmb-layout.directive.mjs +0 -41
- 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/bmb-selector/bmb-selector.directive.mjs +0 -28
- 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/pipes/translations.mjs +0 -22
- package/esm2022/lib/services/calendar/calendar.service.mjs +0 -51
- package/esm2022/lib/services/calendar.service.mjs +0 -51
- package/esm2022/lib/services/index.mjs +0 -3
- package/esm2022/lib/services/modal/native-modal.service.mjs +0 -60
- package/esm2022/lib/services/native-modal.service.mjs +0 -60
- package/esm2022/lib/services/notification/notification.service.mjs +0 -84
- package/esm2022/lib/services/notification.service.mjs +0 -84
- package/esm2022/lib/services/projection/projection.service.mjs +0 -49
- package/esm2022/lib/services/projection.service.mjs +0 -49
- package/esm2022/lib/services/tabs/tabs.service.mjs +0 -30
- package/esm2022/lib/services/tabs.service.mjs +0 -30
- package/esm2022/lib/services/theme/theme.service.mjs +0 -30
- package/esm2022/lib/services/theme.service.mjs +0 -30
- package/esm2022/lib/services/toast/toast.service.mjs +0 -24
- package/esm2022/lib/services/toast.service.mjs +0 -24
- package/esm2022/lib/services/translations/translations.service.mjs +0 -53
- 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 -71
- package/esm2022/public-api.mjs +0 -160
- package/esm2022/ti-tecnologico-de-monterrey-oficial-ds-ng.mjs +0 -5
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, ViewEncapsulation, input, output, model, computed, ViewChild, } from '@angular/core';
|
|
3
|
-
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { BmbIconComponent } from '../bmb-icon/bmb-icon.component';
|
|
5
|
-
import { convertListToSelectList, getSelectedValues, getValidInitialValues, } from '../../utils/dropdown';
|
|
6
|
-
import { BmbDropdownContentComponent } from '../utils/bmb-dropdown-content/bmb-dropdown-content.component';
|
|
7
|
-
import { BmbInputContentComponent } from '../bmb-input/bmb-input-content/bmb-input-content.component';
|
|
8
|
-
import { startWith } from 'rxjs';
|
|
9
|
-
import { getUUID } from '../../utils/utils';
|
|
10
|
-
import { assignNewFormControl, handleValidity, newFormControlByType, showError, } from '../../utils/formControl';
|
|
11
|
-
import { BmbInputValidatorComponent } from '../bmb-input/bmb-input-validator/bmb-input-validator.component';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "../../services/projection/projection.service";
|
|
14
|
-
import * as i2 from "@angular/forms";
|
|
15
|
-
export class BmbDropdownComponent {
|
|
16
|
-
constructor(projectionService) {
|
|
17
|
-
this.projectionService = projectionService;
|
|
18
|
-
this.required = input(false);
|
|
19
|
-
this.showIcon = input(false);
|
|
20
|
-
this.placeholder = input('');
|
|
21
|
-
this.icon = input('');
|
|
22
|
-
this.options = input([]);
|
|
23
|
-
this.helperText = input('');
|
|
24
|
-
this.errorMessage = input('');
|
|
25
|
-
this.label = input('');
|
|
26
|
-
this.name = input(getUUID());
|
|
27
|
-
this.preferredOptions = input([]);
|
|
28
|
-
this.isMultiSelect = input(false);
|
|
29
|
-
this.tooltip = input('');
|
|
30
|
-
this.tooltipPosition = input({
|
|
31
|
-
align: 'above',
|
|
32
|
-
justify: 'before',
|
|
33
|
-
});
|
|
34
|
-
this.disabled = input(false);
|
|
35
|
-
this.value = input('');
|
|
36
|
-
this.isFilterable = input(false);
|
|
37
|
-
this.inputId = input(this.name());
|
|
38
|
-
this.customValidation = input();
|
|
39
|
-
this.control = model(newFormControlByType());
|
|
40
|
-
this.onValueChange = output();
|
|
41
|
-
this.onFocus = output();
|
|
42
|
-
this.uuid = getUUID();
|
|
43
|
-
this.isModalOpen = model(false);
|
|
44
|
-
this.selectionControl = new FormControl(new FormControl());
|
|
45
|
-
this.selectedIcon = '';
|
|
46
|
-
this.isKeyboardEvent = false;
|
|
47
|
-
this.isControlNull = false;
|
|
48
|
-
this.parsedOptions = computed(() => this.initOptions(this.options()));
|
|
49
|
-
this.selectedItem = null;
|
|
50
|
-
}
|
|
51
|
-
ngOnInit() {
|
|
52
|
-
if (!this.control()) {
|
|
53
|
-
this.control.set(assignNewFormControl(this.name(), this.control()));
|
|
54
|
-
this.isControlNull = true;
|
|
55
|
-
}
|
|
56
|
-
if (!this.isMultiSelect() && Array.isArray(this.control()?.value)) {
|
|
57
|
-
this.control().setValue('');
|
|
58
|
-
}
|
|
59
|
-
this.control()
|
|
60
|
-
?.valueChanges.pipe(startWith(this.getValidInitialValues()))
|
|
61
|
-
.subscribe((value) => {
|
|
62
|
-
this.setSelectionControl(value);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
ngOnChanges(changes) {
|
|
66
|
-
if (this.control() !== null) {
|
|
67
|
-
if (changes['options']) {
|
|
68
|
-
this.control().setValue(this.getValidInitialValues());
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
initOptions(list) {
|
|
73
|
-
const newItems = convertListToSelectList(list, this.icon(), this.showIcon());
|
|
74
|
-
let parsedItems = newItems.map((element) => {
|
|
75
|
-
return {
|
|
76
|
-
...element,
|
|
77
|
-
icon: !this.isMultiSelect() && this.showIcon() ? element.icon : '',
|
|
78
|
-
action: () => {
|
|
79
|
-
this.setSelectedValue(element);
|
|
80
|
-
this.projectionService.closeContent();
|
|
81
|
-
},
|
|
82
|
-
};
|
|
83
|
-
});
|
|
84
|
-
if (!!this.preferredOptions().length) {
|
|
85
|
-
const preferredItems = parsedItems.filter((element) => this.preferredOptions().includes(element.value));
|
|
86
|
-
parsedItems = [...new Set([...preferredItems, ...parsedItems])];
|
|
87
|
-
}
|
|
88
|
-
return parsedItems;
|
|
89
|
-
}
|
|
90
|
-
handleFocus(value) {
|
|
91
|
-
this.onFocus.emit(value);
|
|
92
|
-
}
|
|
93
|
-
getUUID(name) {
|
|
94
|
-
return `${name}_${this.name()}_${this.uuid}`;
|
|
95
|
-
}
|
|
96
|
-
getIcon() {
|
|
97
|
-
if (!this.isMultiSelect() && this.showIcon())
|
|
98
|
-
return this.selectedIcon || this.icon();
|
|
99
|
-
return '';
|
|
100
|
-
}
|
|
101
|
-
getValidInitialValues() {
|
|
102
|
-
return getValidInitialValues(this.control().value, this.value(), this.options(), this.isMultiSelect());
|
|
103
|
-
}
|
|
104
|
-
setSelectionControl(controlValue) {
|
|
105
|
-
if (!!controlValue) {
|
|
106
|
-
if (this.isMultiSelect()) {
|
|
107
|
-
const selectedItems = this.parsedOptions().filter(({ value }) => controlValue.includes(value));
|
|
108
|
-
this.selectionControl.setValue(selectedItems.map((element) => ` ${element.selectedText}`));
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
const item = this.parsedOptions().find(({ value }) => value === controlValue);
|
|
112
|
-
if (!!item) {
|
|
113
|
-
this.selectionControl.setValue(item?.selectedText);
|
|
114
|
-
if (this.showIcon())
|
|
115
|
-
this.selectedIcon = item.icon;
|
|
116
|
-
this.selectedItem = item;
|
|
117
|
-
}
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
this.selectionControl.setValue('');
|
|
121
|
-
if (this.showIcon())
|
|
122
|
-
this.selectedIcon = this.icon();
|
|
123
|
-
}
|
|
124
|
-
setSelectedValue(element) {
|
|
125
|
-
if (this.isMultiSelect()) {
|
|
126
|
-
this.control().setValue(getSelectedValues(this.control().value, element.value));
|
|
127
|
-
}
|
|
128
|
-
else
|
|
129
|
-
this.control().setValue(element.value);
|
|
130
|
-
this.onValueChange.emit(this.control().value);
|
|
131
|
-
}
|
|
132
|
-
openList() {
|
|
133
|
-
const data = {
|
|
134
|
-
content: BmbDropdownContentComponent,
|
|
135
|
-
targetRef: this.contentRef?.nativeElement,
|
|
136
|
-
fixSizeToRef: true,
|
|
137
|
-
showBackdrop: false,
|
|
138
|
-
inputContext: {
|
|
139
|
-
selectedOption: this.control().value,
|
|
140
|
-
items: this.parsedOptions(),
|
|
141
|
-
isKeyboardEvent: this.isKeyboardEvent,
|
|
142
|
-
enableFilter: this.isFilterable(),
|
|
143
|
-
},
|
|
144
|
-
focusOnOpen: true,
|
|
145
|
-
};
|
|
146
|
-
this.projectionService.openContent(data);
|
|
147
|
-
}
|
|
148
|
-
// Keyboards events
|
|
149
|
-
onKeyDown(event) {
|
|
150
|
-
const keyboards = [' ', 'ArrowDown', 'Down'];
|
|
151
|
-
if (keyboards.includes(event.key)) {
|
|
152
|
-
this.openList();
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
handleValidity() {
|
|
156
|
-
handleValidity(this.control());
|
|
157
|
-
}
|
|
158
|
-
get shouldShowError() {
|
|
159
|
-
return showError(this.control());
|
|
160
|
-
}
|
|
161
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbDropdownComponent, deps: [{ token: i1.BmbProjectionContentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
162
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: BmbDropdownComponent, isStandalone: true, selector: "bmb-dropdown", inputs: { required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, helperText: { classPropertyName: "helperText", publicName: "helperText", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, preferredOptions: { classPropertyName: "preferredOptions", publicName: "preferredOptions", isSignal: true, isRequired: false, transformFunction: null }, isMultiSelect: { classPropertyName: "isMultiSelect", publicName: "isMultiSelect", 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 }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, isFilterable: { classPropertyName: "isFilterable", publicName: "isFilterable", 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 }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null }, isModalOpen: { classPropertyName: "isModalOpen", publicName: "isModalOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { control: "controlChange", onValueChange: "onValueChange", onFocus: "onFocus", isModalOpen: "isModalOpenChange" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentDiv"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<bmb-input-validator\n class=\"bmb_dropdown\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [value]=\"getValidInitialValues()\"\n [label]=\"label()!\"\n [errorMessage]=\"errorMessage()\"\n [helperMessage]=\"helperText()\"\n [isRequired]=\"required()\"\n [isDisabled]=\"disabled()\"\n [control]=\"control()\"\n [showError]=\"shouldShowError\"\n [tooltip]=\"tooltip()\"\n [tooltipPosition]=\"tooltipPosition()\"\n [customValidation]=\"customValidation()\"\n>\n <div #contentDiv>\n <bmb-input-content\n class=\"bmb_dropdown-field\"\n type=\"text\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [icon]=\"getIcon()\"\n [control]=\"selectionControl\"\n [isReadOnly]=\"true\"\n [placeholder]=\"placeholder()\"\n [isError]=\"shouldShowError\"\n (click)=\"openList()\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"handleValidity()\"\n (onFocus)=\"handleFocus($event)\"\n >\n <ng-template #customContent>\n <label [htmlFor]=\"inputId()\">\n <bmb-icon\n class=\"bmb_field-actions\"\n icon=\"keyboard_arrow_down\"\n (click)=\"openList()\"\n [size]=\"24\"\n />\n </label>\n </ng-template>\n </bmb-input-content>\n </div>\n <input\n hidden\n type=\"text\"\n [id]=\"getUUID('id')\"\n [name]=\"name()\"\n [formControl]=\"control()\"\n />\n</bmb-input-validator>\n", styles: [".bmb_dropdown{display:inline-block;position:relative;width:100%}.bmb_dropdown-field .bmb_field-input{padding-right:2.25rem}.bmb_dropdown-field .bmb_field-input-normal,.bmb_dropdown-field .bmb_field-actions{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { 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: "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", "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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
163
|
-
}
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbDropdownComponent, decorators: [{
|
|
165
|
-
type: Component,
|
|
166
|
-
args: [{ selector: 'bmb-dropdown', standalone: true, imports: [
|
|
167
|
-
CommonModule,
|
|
168
|
-
BmbIconComponent,
|
|
169
|
-
ReactiveFormsModule,
|
|
170
|
-
BmbInputValidatorComponent,
|
|
171
|
-
BmbInputContentComponent,
|
|
172
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<bmb-input-validator\n class=\"bmb_dropdown\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [value]=\"getValidInitialValues()\"\n [label]=\"label()!\"\n [errorMessage]=\"errorMessage()\"\n [helperMessage]=\"helperText()\"\n [isRequired]=\"required()\"\n [isDisabled]=\"disabled()\"\n [control]=\"control()\"\n [showError]=\"shouldShowError\"\n [tooltip]=\"tooltip()\"\n [tooltipPosition]=\"tooltipPosition()\"\n [customValidation]=\"customValidation()\"\n>\n <div #contentDiv>\n <bmb-input-content\n class=\"bmb_dropdown-field\"\n type=\"text\"\n [inputId]=\"inputId()\"\n [name]=\"name()\"\n [icon]=\"getIcon()\"\n [control]=\"selectionControl\"\n [isReadOnly]=\"true\"\n [placeholder]=\"placeholder()\"\n [isError]=\"shouldShowError\"\n (click)=\"openList()\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"handleValidity()\"\n (onFocus)=\"handleFocus($event)\"\n >\n <ng-template #customContent>\n <label [htmlFor]=\"inputId()\">\n <bmb-icon\n class=\"bmb_field-actions\"\n icon=\"keyboard_arrow_down\"\n (click)=\"openList()\"\n [size]=\"24\"\n />\n </label>\n </ng-template>\n </bmb-input-content>\n </div>\n <input\n hidden\n type=\"text\"\n [id]=\"getUUID('id')\"\n [name]=\"name()\"\n [formControl]=\"control()\"\n />\n</bmb-input-validator>\n", styles: [".bmb_dropdown{display:inline-block;position:relative;width:100%}.bmb_dropdown-field .bmb_field-input{padding-right:2.25rem}.bmb_dropdown-field .bmb_field-input-normal,.bmb_dropdown-field .bmb_field-actions{cursor:pointer}\n"] }]
|
|
173
|
-
}], ctorParameters: () => [{ type: i1.BmbProjectionContentService }], propDecorators: { contentRef: [{
|
|
174
|
-
type: ViewChild,
|
|
175
|
-
args: ['contentDiv', { static: true }]
|
|
176
|
-
}] } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUNSLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIscUJBQXFCLEdBQ3RCLE1BQU0sc0JBQXNCLENBQUM7QUFLOUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFFM0csT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDdEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLFNBQVMsR0FDVixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDOzs7O0FBMEI1RyxNQUFNLE9BQU8sb0JBQW9CO0lBdUMvQixZQUFvQixpQkFBOEM7UUFBOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE2QjtRQXRDbEUsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqQyxhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLGdCQUFXLEdBQUcsS0FBSyxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLFNBQUksR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDekIsWUFBTyxHQUFHLEtBQUssQ0FBZ0MsRUFBRSxDQUFDLENBQUM7UUFDbkQsZUFBVSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQixpQkFBWSxHQUFHLEtBQUssQ0FBMEIsRUFBRSxDQUFDLENBQUM7UUFDbEQsVUFBSyxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMxQixTQUFJLEdBQUcsS0FBSyxDQUFTLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDaEMscUJBQWdCLEdBQUcsS0FBSyxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLGtCQUFhLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLFlBQU8sR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxLQUFLLENBQTJCO1lBQ2hELEtBQUssRUFBRSxPQUFPO1lBQ2QsT0FBTyxFQUFFLFFBQVE7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqQyxVQUFLLEdBQUcsS0FBSyxDQUFvQixFQUFFLENBQUMsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNyQyxZQUFPLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLHFCQUFnQixHQUFHLEtBQUssRUFBZSxDQUFDO1FBRXhDLFlBQU8sR0FBRyxLQUFLLENBQWMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBRXJELGtCQUFhLEdBQUcsTUFBTSxFQUFPLENBQUM7UUFDOUIsWUFBTyxHQUFHLE1BQU0sRUFBVyxDQUFDO1FBRTVCLFNBQUksR0FBVyxPQUFPLEVBQUUsQ0FBQztRQUN6QixnQkFBVyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNwQyxxQkFBZ0IsR0FBZ0IsSUFBSSxXQUFXLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRSxpQkFBWSxHQUF5QixJQUFJLENBQUM7SUFJMkIsQ0FBQztJQUV0RSxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFFLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUMzQjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDakUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM3QjtRQUVELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7YUFDM0QsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDM0IsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQzthQUN2RDtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFtQztRQUM3QyxNQUFNLFFBQVEsR0FBRyx1QkFBdUIsQ0FDdEMsSUFBSSxFQUNKLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFDWCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQ2hCLENBQUM7UUFFRixJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBc0IsRUFBRSxFQUFFO1lBQ3hELE9BQU87Z0JBQ0wsR0FBRyxPQUFPO2dCQUNWLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25FLE1BQU0sRUFBRSxHQUFHLEVBQUU7b0JBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMvQixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hDLENBQUM7YUFDZSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsTUFBTSxFQUFFO1lBQ3BDLE1BQU0sY0FBYyxHQUFvQixXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDckUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFNLENBQUMsQ0FDakQsQ0FBQztZQUVGLFdBQVcsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLGNBQWMsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqRTtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVk7UUFDbEIsT0FBTyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8scUJBQXFCLENBQzFCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQ3BCLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFDWixJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVELG1CQUFtQixDQUFDLFlBQStCO1FBQ2pELElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUM5RCxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQU0sQ0FBQyxDQUM5QixDQUFDO2dCQUVGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQzVCLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQzNELENBQUM7Z0JBQ0YsT0FBTzthQUNSO1lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FDcEMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUN0QyxDQUFDO1lBQ0YsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzthQUMxQjtZQUNELE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQXNCO1FBQ3JDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQ3JCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQU0sQ0FBQyxDQUN4RCxDQUFDO1NBQ0g7O1lBQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBTSxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxJQUFJLEdBQUc7WUFDWCxPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWE7WUFDekMsWUFBWSxFQUFFLElBQUk7WUFDbEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsWUFBWSxFQUFFO2dCQUNaLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSztnQkFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQzNCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDckMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7YUFDbEM7WUFDRCxXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLFNBQVMsQ0FBQyxLQUFvQjtRQUM1QixNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFN0MsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNqQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7K0dBNUxVLG9CQUFvQjttR0FBcEIsb0JBQW9CLGc4RkMvRGpDLDA2Q0FvREEsd1JEQUksWUFBWSwrQkFDWixnQkFBZ0IsNkpBQ2hCLG1CQUFtQiwwa0JBQ25CLDBCQUEwQixxYkFDMUIsd0JBQXdCOzs0RkFPZixvQkFBb0I7a0JBZmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQiwwQkFBMEI7d0JBQzFCLHdCQUF3QjtxQkFDekIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7Z0dBdUNNLFVBQVU7c0JBQXBELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBtb2RlbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxuICBjb21wdXRlZCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJtYkljb25Db21wb25lbnQgfSBmcm9tICcuLi9ibWItaWNvbi9ibWItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgY29udmVydExpc3RUb1NlbGVjdExpc3QsXG4gIGdldFNlbGVjdGVkVmFsdWVzLFxuICBnZXRWYWxpZEluaXRpYWxWYWx1ZXMsXG59IGZyb20gJy4uLy4uL3V0aWxzL2Ryb3Bkb3duJztcbmltcG9ydCB7XG4gIElCbWJJbnB1dEVycm9yLFxuICBJQm1iSW5wdXRUb29sdGlwUG9zaXRpb24sXG59IGZyb20gJy4uL2JtYi1pbnB1dC9ibWItaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJtYkRyb3Bkb3duQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL3V0aWxzL2JtYi1kcm9wZG93bi1jb250ZW50L2JtYi1kcm9wZG93bi1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJRHJvcGRvd25JdGVtIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQm1iSW5wdXRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC1jb250ZW50L2JtYi1pbnB1dC1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldFVVSUQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQge1xuICBhc3NpZ25OZXdGb3JtQ29udHJvbCxcbiAgaGFuZGxlVmFsaWRpdHksXG4gIG5ld0Zvcm1Db250cm9sQnlUeXBlLFxuICBzaG93RXJyb3IsXG59IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1Db250cm9sJztcbmltcG9ydCB7IEJtYklucHV0VmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vYm1iLWlucHV0L2JtYi1pbnB1dC12YWxpZGF0b3IvYm1iLWlucHV0LXZhbGlkYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iUHJvamVjdGlvbkNvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvamVjdGlvbi9wcm9qZWN0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElCbWJEcm9wZG93bkl0ZW0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHNlbGVjdGVkVGV4dD86IHN0cmluZzsgLy9pbnRlcm5hbFxuICBpY29uPzogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYm1iLWRyb3Bkb3duJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCbWJJY29uQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQm1iSW5wdXRWYWxpZGF0b3JDb21wb25lbnQsXG4gICAgQm1iSW5wdXRDb250ZW50Q29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1kcm9wZG93bi5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcmVxdWlyZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHNob3dJY29uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJycpO1xuICBpY29uID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIG9wdGlvbnMgPSBpbnB1dDxzdHJpbmdbXSB8IElCbWJEcm9wZG93bkl0ZW1bXT4oW10pO1xuICBoZWxwZXJUZXh0ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIGVycm9yTWVzc2FnZSA9IGlucHV0PHN0cmluZyB8IElCbWJJbnB1dEVycm9yPignJyk7XG4gIGxhYmVsID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIG5hbWUgPSBpbnB1dDxzdHJpbmc+KGdldFVVSUQoKSk7XG4gIHByZWZlcnJlZE9wdGlvbnMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICBpc011bHRpU2VsZWN0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICB0b29sdGlwID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHRvb2x0aXBQb3NpdGlvbiA9IGlucHV0PElCbWJJbnB1dFRvb2x0aXBQb3NpdGlvbj4oe1xuICAgIGFsaWduOiAnYWJvdmUnLFxuICAgIGp1c3RpZnk6ICdiZWZvcmUnLFxuICB9KTtcbiAgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHZhbHVlID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10+KCcnKTtcbiAgaXNGaWx0ZXJhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBpbnB1dElkID0gaW5wdXQ8c3RyaW5nPih0aGlzLm5hbWUoKSk7XG4gIGN1c3RvbVZhbGlkYXRpb24gPSBpbnB1dDxWYWxpZGF0b3JGbj4oKTtcblxuICBjb250cm9sID0gbW9kZWw8Rm9ybUNvbnRyb2w+KG5ld0Zvcm1Db250cm9sQnlUeXBlKCkpO1xuXG4gIG9uVmFsdWVDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xuICBvbkZvY3VzID0gb3V0cHV0PGJvb2xlYW4+KCk7XG5cbiAgdXVpZDogc3RyaW5nID0gZ2V0VVVJRCgpO1xuICBpc01vZGFsT3BlbiA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcbiAgc2VsZWN0aW9uQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wobmV3IEZvcm1Db250cm9sKCkpO1xuICBzZWxlY3RlZEljb246IHN0cmluZyA9ICcnO1xuICBpc0tleWJvYXJkRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNDb250cm9sTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xuICBwYXJzZWRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbml0T3B0aW9ucyh0aGlzLm9wdGlvbnMoKSkpO1xuICBzZWxlY3RlZEl0ZW06IElEcm9wZG93bkl0ZW0gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKCdjb250ZW50RGl2JywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudFJlZiE6IEVsZW1lbnRSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByb2plY3Rpb25TZXJ2aWNlOiBCbWJQcm9qZWN0aW9uQ29udGVudFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRyb2woKSkge1xuICAgICAgdGhpcy5jb250cm9sLnNldChhc3NpZ25OZXdGb3JtQ29udHJvbCh0aGlzLm5hbWUoKSwgdGhpcy5jb250cm9sKCkpISk7XG4gICAgICB0aGlzLmlzQ29udHJvbE51bGwgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc011bHRpU2VsZWN0KCkgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmNvbnRyb2woKT8udmFsdWUpKSB7XG4gICAgICB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZSgnJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sKClcbiAgICAgID8udmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZ2V0VmFsaWRJbml0aWFsVmFsdWVzKCkpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25Db250cm9sKHZhbHVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRyb2woKSAhPT0gbnVsbCkge1xuICAgICAgaWYgKGNoYW5nZXNbJ29wdGlvbnMnXSkge1xuICAgICAgICB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZSh0aGlzLmdldFZhbGlkSW5pdGlhbFZhbHVlcygpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbml0T3B0aW9ucyhsaXN0OiBzdHJpbmdbXSB8IElCbWJEcm9wZG93bkl0ZW1bXSk6IElEcm9wZG93bkl0ZW1bXSB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBjb252ZXJ0TGlzdFRvU2VsZWN0TGlzdChcbiAgICAgIGxpc3QsXG4gICAgICB0aGlzLmljb24oKSxcbiAgICAgIHRoaXMuc2hvd0ljb24oKSxcbiAgICApO1xuXG4gICAgbGV0IHBhcnNlZEl0ZW1zID0gbmV3SXRlbXMubWFwKChlbGVtZW50OiBJRHJvcGRvd25JdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5lbGVtZW50LFxuICAgICAgICBpY29uOiAhdGhpcy5pc011bHRpU2VsZWN0KCkgJiYgdGhpcy5zaG93SWNvbigpID8gZWxlbWVudC5pY29uISA6ICcnLFxuICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUoZWxlbWVudCk7XG4gICAgICAgICAgdGhpcy5wcm9qZWN0aW9uU2VydmljZS5jbG9zZUNvbnRlbnQoKTtcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgSURyb3Bkb3duSXRlbTtcbiAgICB9KTtcblxuICAgIGlmICghIXRoaXMucHJlZmVycmVkT3B0aW9ucygpLmxlbmd0aCkge1xuICAgICAgY29uc3QgcHJlZmVycmVkSXRlbXM6IElEcm9wZG93bkl0ZW1bXSA9IHBhcnNlZEl0ZW1zLmZpbHRlcigoZWxlbWVudCkgPT5cbiAgICAgICAgdGhpcy5wcmVmZXJyZWRPcHRpb25zKCkuaW5jbHVkZXMoZWxlbWVudC52YWx1ZSEpLFxuICAgICAgKTtcblxuICAgICAgcGFyc2VkSXRlbXMgPSBbLi4ubmV3IFNldChbLi4ucHJlZmVycmVkSXRlbXMsIC4uLnBhcnNlZEl0ZW1zXSldO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZWRJdGVtcztcbiAgfVxuXG4gIGhhbmRsZUZvY3VzKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5vbkZvY3VzLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgZ2V0VVVJRChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtuYW1lfV8ke3RoaXMubmFtZSgpfV8ke3RoaXMudXVpZH1gO1xuICB9XG5cbiAgZ2V0SWNvbigpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5pc011bHRpU2VsZWN0KCkgJiYgdGhpcy5zaG93SWNvbigpKVxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJY29uIHx8IHRoaXMuaWNvbigpO1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldFZhbGlkSW5pdGlhbFZhbHVlcygpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGdldFZhbGlkSW5pdGlhbFZhbHVlcyhcbiAgICAgIHRoaXMuY29udHJvbCgpLnZhbHVlLFxuICAgICAgdGhpcy52YWx1ZSgpLFxuICAgICAgdGhpcy5vcHRpb25zKCksXG4gICAgICB0aGlzLmlzTXVsdGlTZWxlY3QoKSxcbiAgICApO1xuICB9XG5cbiAgc2V0U2VsZWN0aW9uQ29udHJvbChjb250cm9sVmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKCEhY29udHJvbFZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5pc011bHRpU2VsZWN0KCkpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IHRoaXMucGFyc2VkT3B0aW9ucygpLmZpbHRlcigoeyB2YWx1ZSB9KSA9PlxuICAgICAgICAgIGNvbnRyb2xWYWx1ZS5pbmNsdWRlcyh2YWx1ZSEpLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5zZXRWYWx1ZShcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zLm1hcCgoZWxlbWVudCkgPT4gYCAke2VsZW1lbnQuc2VsZWN0ZWRUZXh0fWApLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnBhcnNlZE9wdGlvbnMoKS5maW5kKFxuICAgICAgICAoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gY29udHJvbFZhbHVlLFxuICAgICAgKTtcbiAgICAgIGlmICghIWl0ZW0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sLnNldFZhbHVlKGl0ZW0/LnNlbGVjdGVkVGV4dCk7XG4gICAgICAgIGlmICh0aGlzLnNob3dJY29uKCkpIHRoaXMuc2VsZWN0ZWRJY29uID0gaXRlbS5pY29uO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3Rpb25Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICBpZiAodGhpcy5zaG93SWNvbigpKSB0aGlzLnNlbGVjdGVkSWNvbiA9IHRoaXMuaWNvbigpO1xuICB9XG5cbiAgc2V0U2VsZWN0ZWRWYWx1ZShlbGVtZW50OiBJRHJvcGRvd25JdGVtKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdCgpKSB7XG4gICAgICB0aGlzLmNvbnRyb2woKS5zZXRWYWx1ZShcbiAgICAgICAgZ2V0U2VsZWN0ZWRWYWx1ZXModGhpcy5jb250cm9sKCkudmFsdWUsIGVsZW1lbnQudmFsdWUhKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHRoaXMuY29udHJvbCgpLnNldFZhbHVlKGVsZW1lbnQudmFsdWUhKTtcblxuICAgIHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KHRoaXMuY29udHJvbCgpLnZhbHVlKTtcbiAgfVxuXG4gIG9wZW5MaXN0KCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBjb250ZW50OiBCbWJEcm9wZG93bkNvbnRlbnRDb21wb25lbnQsXG4gICAgICB0YXJnZXRSZWY6IHRoaXMuY29udGVudFJlZj8ubmF0aXZlRWxlbWVudCxcbiAgICAgIGZpeFNpemVUb1JlZjogdHJ1ZSxcbiAgICAgIHNob3dCYWNrZHJvcDogZmFsc2UsXG4gICAgICBpbnB1dENvbnRleHQ6IHtcbiAgICAgICAgc2VsZWN0ZWRPcHRpb246IHRoaXMuY29udHJvbCgpLnZhbHVlLFxuICAgICAgICBpdGVtczogdGhpcy5wYXJzZWRPcHRpb25zKCksXG4gICAgICAgIGlzS2V5Ym9hcmRFdmVudDogdGhpcy5pc0tleWJvYXJkRXZlbnQsXG4gICAgICAgIGVuYWJsZUZpbHRlcjogdGhpcy5pc0ZpbHRlcmFibGUoKSxcbiAgICAgIH0sXG4gICAgICBmb2N1c09uT3BlbjogdHJ1ZSxcbiAgICB9O1xuICAgIHRoaXMucHJvamVjdGlvblNlcnZpY2Uub3BlbkNvbnRlbnQoZGF0YSk7XG4gIH1cblxuICAvLyBLZXlib2FyZHMgZXZlbnRzXG4gIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleWJvYXJkcyA9IFsnICcsICdBcnJvd0Rvd24nLCAnRG93biddO1xuXG4gICAgaWYgKGtleWJvYXJkcy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICB0aGlzLm9wZW5MaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlVmFsaWRpdHkoKTogdm9pZCB7XG4gICAgaGFuZGxlVmFsaWRpdHkodGhpcy5jb250cm9sKCkpO1xuICB9XG5cbiAgZ2V0IHNob3VsZFNob3dFcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc2hvd0Vycm9yKHRoaXMuY29udHJvbCgpKTtcbiAgfVxufVxuIiwiPGJtYi1pbnB1dC12YWxpZGF0b3JcbiAgY2xhc3M9XCJibWJfZHJvcGRvd25cIlxuICBbaW5wdXRJZF09XCJpbnB1dElkKClcIlxuICBbbmFtZV09XCJuYW1lKClcIlxuICBbdmFsdWVdPVwiZ2V0VmFsaWRJbml0aWFsVmFsdWVzKClcIlxuICBbbGFiZWxdPVwibGFiZWwoKSFcIlxuICBbZXJyb3JNZXNzYWdlXT1cImVycm9yTWVzc2FnZSgpXCJcbiAgW2hlbHBlck1lc3NhZ2VdPVwiaGVscGVyVGV4dCgpXCJcbiAgW2lzUmVxdWlyZWRdPVwicmVxdWlyZWQoKVwiXG4gIFtpc0Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICBbY29udHJvbF09XCJjb250cm9sKClcIlxuICBbc2hvd0Vycm9yXT1cInNob3VsZFNob3dFcnJvclwiXG4gIFt0b29sdGlwXT1cInRvb2x0aXAoKVwiXG4gIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uKClcIlxuICBbY3VzdG9tVmFsaWRhdGlvbl09XCJjdXN0b21WYWxpZGF0aW9uKClcIlxuPlxuICA8ZGl2ICNjb250ZW50RGl2PlxuICAgIDxibWItaW5wdXQtY29udGVudFxuICAgICAgY2xhc3M9XCJibWJfZHJvcGRvd24tZmllbGRcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW2lucHV0SWRdPVwiaW5wdXRJZCgpXCJcbiAgICAgIFtuYW1lXT1cIm5hbWUoKVwiXG4gICAgICBbaWNvbl09XCJnZXRJY29uKClcIlxuICAgICAgW2NvbnRyb2xdPVwic2VsZWN0aW9uQ29udHJvbFwiXG4gICAgICBbaXNSZWFkT25seV09XCJ0cnVlXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgIFtpc0Vycm9yXT1cInNob3VsZFNob3dFcnJvclwiXG4gICAgICAoY2xpY2spPVwib3Blbkxpc3QoKVwiXG4gICAgICAob25LZXlEb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgIChvbkJsdXIpPVwiaGFuZGxlVmFsaWRpdHkoKVwiXG4gICAgICAob25Gb2N1cyk9XCJoYW5kbGVGb2N1cygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgI2N1c3RvbUNvbnRlbnQ+XG4gICAgICAgIDxsYWJlbCBbaHRtbEZvcl09XCJpbnB1dElkKClcIj5cbiAgICAgICAgICA8Ym1iLWljb25cbiAgICAgICAgICAgIGNsYXNzPVwiYm1iX2ZpZWxkLWFjdGlvbnNcIlxuICAgICAgICAgICAgaWNvbj1cImtleWJvYXJkX2Fycm93X2Rvd25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5MaXN0KClcIlxuICAgICAgICAgICAgW3NpemVdPVwiMjRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvYm1iLWlucHV0LWNvbnRlbnQ+XG4gIDwvZGl2PlxuICA8aW5wdXRcbiAgICBoaWRkZW5cbiAgICB0eXBlPVwidGV4dFwiXG4gICAgW2lkXT1cImdldFVVSUQoJ2lkJylcIlxuICAgIFtuYW1lXT1cIm5hbWUoKVwiXG4gICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2woKVwiXG4gIC8+XG48L2JtYi1pbnB1dC12YWxpZGF0b3I+XG4iXX0=
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Component, input, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, } from '@angular/core';
|
|
2
|
-
import { BmbDropdownContentComponent } from '../utils/bmb-dropdown-content/bmb-dropdown-content.component';
|
|
3
|
-
import { BmbActionIconComponent } from '../bmb-action-icon/bmb-action-icon.component';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../../services/projection/projection.service";
|
|
6
|
-
export class BmbDropdownMenuComponent {
|
|
7
|
-
constructor(projectionService) {
|
|
8
|
-
this.projectionService = projectionService;
|
|
9
|
-
this.items = input([]);
|
|
10
|
-
}
|
|
11
|
-
openDropdown() {
|
|
12
|
-
const data = {
|
|
13
|
-
content: BmbDropdownContentComponent,
|
|
14
|
-
targetRef: this.contentRef?.nativeElement,
|
|
15
|
-
inputContext: { items: this.items() },
|
|
16
|
-
focusOnOpen: true,
|
|
17
|
-
showBackdrop: false,
|
|
18
|
-
};
|
|
19
|
-
this.projectionService.openContent(data);
|
|
20
|
-
}
|
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbDropdownMenuComponent, deps: [{ token: i1.BmbProjectionContentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: BmbDropdownMenuComponent, isStandalone: true, selector: "bmb-dropdown-menu", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["contentDiv"], descendants: true, static: true }], ngImport: i0, template: "<section class=\"bmb_dropdown_menu\" #contentDiv>\n <bmb-action-icon\n class=\"bmb_dropdown_menu-button\"\n icon=\"more_vert\"\n [iconSize]=\"24\"\n (buttonClick)=\"openDropdown()\"\n />\n</section>\n", styles: [".bmb_dropdown_menu{position:relative;color:currentColor}.bmb_dropdown_menu-list .bmb_dropdown-content-modal{left:var(--bmb-spacing-m);max-width:15.625rem}\n"], dependencies: [{ kind: "component", type: BmbActionIconComponent, selector: "bmb-action-icon", inputs: ["idElement", "icon", "alt", "iconSize", "isFill", "toggleIconActive", "isToggleActive", "isAccentColor", "dotNotification", "target", "link", "disabled"], outputs: ["isToggleActiveChange", "isAccentColorChange", "buttonPress", "buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
23
|
-
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbDropdownMenuComponent, decorators: [{
|
|
25
|
-
type: Component,
|
|
26
|
-
args: [{ selector: 'bmb-dropdown-menu', standalone: true, imports: [BmbActionIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<section class=\"bmb_dropdown_menu\" #contentDiv>\n <bmb-action-icon\n class=\"bmb_dropdown_menu-button\"\n icon=\"more_vert\"\n [iconSize]=\"24\"\n (buttonClick)=\"openDropdown()\"\n />\n</section>\n", styles: [".bmb_dropdown_menu{position:relative;color:currentColor}.bmb_dropdown_menu-list .bmb_dropdown-content-modal{left:var(--bmb-spacing-m);max-width:15.625rem}\n"] }]
|
|
27
|
-
}], ctorParameters: () => [{ type: i1.BmbProjectionContentService }], propDecorators: { contentRef: [{
|
|
28
|
-
type: ViewChild,
|
|
29
|
-
args: ['contentDiv', { static: true }]
|
|
30
|
-
}] } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3Bkb3duLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtbmcvc3JjL2xpYi9jb21wb25lbnRzL2JtYi1kcm9wZG93bi1tZW51L2JtYi1kcm9wZG93bi1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcGRvd24tbWVudS9ibWItZHJvcGRvd24tbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7O0FBYXRGLE1BQU0sT0FBTyx3QkFBd0I7SUFLbkMsWUFBb0IsaUJBQThDO1FBQTlDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFKbEUsVUFBSyxHQUFHLEtBQUssQ0FBa0IsRUFBRSxDQUFDLENBQUM7SUFJa0MsQ0FBQztJQUV0RSxZQUFZO1FBQ1YsTUFBTSxJQUFJLEdBQUc7WUFDWCxPQUFPLEVBQUUsMkJBQTJCO1lBQ3BDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWE7WUFDekMsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNyQyxXQUFXLEVBQUUsSUFBSTtZQUNqQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDOytHQWhCVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix5VUN2QnJDLHdOQVFBLHNORFdZLHNCQUFzQjs7NEZBSXJCLHdCQUF3QjtrQkFUcEMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUdQLENBQUMsc0JBQXNCLENBQUMsbUJBQ2hCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7Z0dBS00sVUFBVTtzQkFBcEQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCbWJEcm9wZG93bkNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi91dGlscy9ibWItZHJvcGRvd24tY29udGVudC9ibWItZHJvcGRvd24tY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iQWN0aW9uSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2JtYi1hY3Rpb24taWNvbi9ibWItYWN0aW9uLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IElEcm9wZG93bkl0ZW0gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCbWJQcm9qZWN0aW9uQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9qZWN0aW9uL3Byb2plY3Rpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JtYi1kcm9wZG93bi1tZW51JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JtYi1kcm9wZG93bi1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1kcm9wZG93bi1tZW51LmNvbXBvbmVudC5zY3NzJyxcbiAgaW1wb3J0czogW0JtYkFjdGlvbkljb25Db21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQm1iRHJvcGRvd25NZW51Q29tcG9uZW50IHtcbiAgaXRlbXMgPSBpbnB1dDxJRHJvcGRvd25JdGVtW10+KFtdKTtcblxuICBAVmlld0NoaWxkKCdjb250ZW50RGl2JywgeyBzdGF0aWM6IHRydWUgfSkgY29udGVudFJlZiE6IEVsZW1lbnRSZWY8YW55PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByb2plY3Rpb25TZXJ2aWNlOiBCbWJQcm9qZWN0aW9uQ29udGVudFNlcnZpY2UpIHt9XG5cbiAgb3BlbkRyb3Bkb3duKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBjb250ZW50OiBCbWJEcm9wZG93bkNvbnRlbnRDb21wb25lbnQsXG4gICAgICB0YXJnZXRSZWY6IHRoaXMuY29udGVudFJlZj8ubmF0aXZlRWxlbWVudCxcbiAgICAgIGlucHV0Q29udGV4dDogeyBpdGVtczogdGhpcy5pdGVtcygpIH0sXG4gICAgICBmb2N1c09uT3BlbjogdHJ1ZSxcbiAgICAgIHNob3dCYWNrZHJvcDogZmFsc2UsXG4gICAgfTtcbiAgICB0aGlzLnByb2plY3Rpb25TZXJ2aWNlLm9wZW5Db250ZW50KGRhdGEpO1xuICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImJtYl9kcm9wZG93bl9tZW51XCIgI2NvbnRlbnREaXY+XG4gIDxibWItYWN0aW9uLWljb25cbiAgICBjbGFzcz1cImJtYl9kcm9wZG93bl9tZW51LWJ1dHRvblwiXG4gICAgaWNvbj1cIm1vcmVfdmVydFwiXG4gICAgW2ljb25TaXplXT1cIjI0XCJcbiAgICAoYnV0dG9uQ2xpY2spPVwib3BlbkRyb3Bkb3duKClcIlxuICAvPlxuPC9zZWN0aW9uPlxuIl19
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, Component, input, output, ViewEncapsulation, } from '@angular/core';
|
|
3
|
-
import { BmbIconComponent } from '../bmb-icon/bmb-icon.component';
|
|
4
|
-
import { BmbTextLinkComponent } from '../bmb-text-link/bmb-text-link.component';
|
|
5
|
-
import { BmbCardComponent, BmbCardContentComponent, } from '../bmb-card/bmb-card.component';
|
|
6
|
-
import { BmbProgressBarComponent } from '../bmb-progress-bar/bmb-progress-bar.component';
|
|
7
|
-
import { getUUID } from '../../utils/utils';
|
|
8
|
-
import { TranslatePipe } from '../../pipes/translations';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/common";
|
|
11
|
-
export class BmbDropzoneComponent {
|
|
12
|
-
constructor(cdr) {
|
|
13
|
-
this.cdr = cdr;
|
|
14
|
-
this.appearanceContrast = input('default');
|
|
15
|
-
this.acceptedExtensions = input.required();
|
|
16
|
-
this.dropInstruction = input();
|
|
17
|
-
this.dropLabel = input();
|
|
18
|
-
this.errorMessage = input();
|
|
19
|
-
this.errorMessageFormat = input();
|
|
20
|
-
this.errorMessageSize = input();
|
|
21
|
-
this.fileDataList = [];
|
|
22
|
-
this.fileSize = input(2);
|
|
23
|
-
this.formatFilesLabel = input();
|
|
24
|
-
this.linkFilesSupported = input('');
|
|
25
|
-
this.linkLabel = input();
|
|
26
|
-
this.mainIcon = input('image');
|
|
27
|
-
this.multiple = input(false);
|
|
28
|
-
this.name = input(getUUID());
|
|
29
|
-
this.progress = input({});
|
|
30
|
-
this.newFile = output();
|
|
31
|
-
this.fileRemoved = output();
|
|
32
|
-
this.validFile = true;
|
|
33
|
-
}
|
|
34
|
-
ngOnChanges(changes) {
|
|
35
|
-
if (changes['progress'] ||
|
|
36
|
-
changes['acceptedExtensions'] ||
|
|
37
|
-
changes['fileSize']) {
|
|
38
|
-
this.cdr.detectChanges();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
onFileSelected(event) {
|
|
42
|
-
this.input = event.target;
|
|
43
|
-
if (this.input.files?.[0]) {
|
|
44
|
-
const files = this.input.files;
|
|
45
|
-
if (files && files.length > 0) {
|
|
46
|
-
this.getFileAndValidate(this.multiple() ? Array.from(files) : files[0]);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
isValidFileType(fileType, fileName) {
|
|
51
|
-
if (this.acceptedExtensions().some((element) => element.includes('/'))) {
|
|
52
|
-
const types = this.acceptedExtensions().filter((element) => element.endsWith('/*'));
|
|
53
|
-
if (!!types.length &&
|
|
54
|
-
types.some((element) => element.substring(0, element.length - 2) ===
|
|
55
|
-
fileType.substring(0, element.length - 2))) {
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
if (this.acceptedExtensions().includes(fileType))
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if (this.acceptedExtensions().includes(fileName.substring(fileName.lastIndexOf('.') + 1)))
|
|
64
|
-
return true;
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
getFileSizeInMB(fileSize) {
|
|
68
|
-
return fileSize / 1048576;
|
|
69
|
-
}
|
|
70
|
-
isValidFileSize(fileSize) {
|
|
71
|
-
return this.getFileSizeInMB(fileSize) <= this.fileSize();
|
|
72
|
-
}
|
|
73
|
-
isFileDuplicate(fileName) {
|
|
74
|
-
return this.fileDataList.some((existing) => existing.name === fileName);
|
|
75
|
-
}
|
|
76
|
-
getFileAndValidate(file) {
|
|
77
|
-
const filesArray = Array.isArray(file) ? file : [file];
|
|
78
|
-
const validFiles = [];
|
|
79
|
-
if (!this.multiple()) {
|
|
80
|
-
this.fileDataList = [];
|
|
81
|
-
}
|
|
82
|
-
for (const singleFile of filesArray) {
|
|
83
|
-
if (this.isFileDuplicate(singleFile.name)) {
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
const fileValidation = {
|
|
87
|
-
isValidFormat: this.isValidFileType(singleFile.type, singleFile.name),
|
|
88
|
-
isValidSize: this.isValidFileSize(singleFile.size),
|
|
89
|
-
};
|
|
90
|
-
const fileData = {
|
|
91
|
-
name: singleFile.name,
|
|
92
|
-
size: this.getFileSizeInMB(singleFile.size),
|
|
93
|
-
error: !fileValidation.isValidFormat || !fileValidation.isValidSize,
|
|
94
|
-
errorType: !fileValidation.isValidFormat ? 'format' : 'size',
|
|
95
|
-
};
|
|
96
|
-
this.fileDataList.push(fileData);
|
|
97
|
-
if (fileValidation.isValidFormat && fileValidation.isValidSize)
|
|
98
|
-
validFiles.push(singleFile);
|
|
99
|
-
}
|
|
100
|
-
if (!!validFiles.length) {
|
|
101
|
-
this.newFile.emit(this.multiple() ? validFiles : validFiles[0]);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
this.onErrorFile();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
removeFile(fileName) {
|
|
108
|
-
this.fileDataList = this.fileDataList.filter((file) => file.name !== fileName);
|
|
109
|
-
const hasFormatErrorsOnly = this.fileDataList.some((file) => file.error && file.errorType === 'format');
|
|
110
|
-
this.validFile = this.fileDataList.length > 0 && !hasFormatErrorsOnly;
|
|
111
|
-
if (this.fileDataList.length === 0 && this.input) {
|
|
112
|
-
this.input.value = '';
|
|
113
|
-
}
|
|
114
|
-
this.fileRemoved.emit(fileName);
|
|
115
|
-
}
|
|
116
|
-
onErrorFile() {
|
|
117
|
-
this.input && (this.input.value = '');
|
|
118
|
-
this.validFile = false;
|
|
119
|
-
}
|
|
120
|
-
onDragOver(event) {
|
|
121
|
-
this.validFile = true;
|
|
122
|
-
event.preventDefault();
|
|
123
|
-
event.stopPropagation();
|
|
124
|
-
const dropzoneElement = event.currentTarget;
|
|
125
|
-
dropzoneElement.classList.add('bmb-drop-zone-drag-over');
|
|
126
|
-
}
|
|
127
|
-
onDragLeave(event) {
|
|
128
|
-
event.preventDefault();
|
|
129
|
-
event.stopPropagation();
|
|
130
|
-
const dropzoneElement = event.currentTarget;
|
|
131
|
-
dropzoneElement.classList.remove('bmb-drop-zone-drag-over');
|
|
132
|
-
}
|
|
133
|
-
onDrop(event) {
|
|
134
|
-
event.preventDefault();
|
|
135
|
-
event.stopPropagation();
|
|
136
|
-
const dropzoneElement = event.currentTarget;
|
|
137
|
-
dropzoneElement.classList.add('bmb-drop-zone');
|
|
138
|
-
dropzoneElement.classList.remove('bmb-drop-zone-drag-over');
|
|
139
|
-
const files = event.dataTransfer?.files;
|
|
140
|
-
if (files && files.length > 0) {
|
|
141
|
-
this.getFileAndValidate(this.multiple() ? Array.from(files) : files[0]);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
getProgress(fileName) {
|
|
145
|
-
const progress = this.progress();
|
|
146
|
-
if (typeof progress === 'number')
|
|
147
|
-
return progress;
|
|
148
|
-
return progress?.[fileName] ?? 0;
|
|
149
|
-
}
|
|
150
|
-
isInvalidFileOnly() {
|
|
151
|
-
return this.fileDataList.some((file) => file.error && file.errorType === 'format');
|
|
152
|
-
}
|
|
153
|
-
reset() {
|
|
154
|
-
this.fileDataList = [];
|
|
155
|
-
this.validFile = true;
|
|
156
|
-
if (this.input) {
|
|
157
|
-
this.input.value = '';
|
|
158
|
-
}
|
|
159
|
-
this.cdr.detectChanges();
|
|
160
|
-
}
|
|
161
|
-
getDropZoneClass() {
|
|
162
|
-
const classList = [];
|
|
163
|
-
if (this.isInvalidFileOnly()) {
|
|
164
|
-
classList.push('bmb-drop-zone-error');
|
|
165
|
-
}
|
|
166
|
-
if (this.fileDataList.length > 0 && !!this.fileDataList[0].name) {
|
|
167
|
-
classList.push('bmb-drop-zone-drag-over');
|
|
168
|
-
}
|
|
169
|
-
if (this.appearanceContrast() === 'primary') {
|
|
170
|
-
classList.push('bmb-drop-zone-container-primary');
|
|
171
|
-
}
|
|
172
|
-
if (this.appearanceContrast() === 'alternative') {
|
|
173
|
-
classList.push('bmb-drop-zone-container-alternative');
|
|
174
|
-
}
|
|
175
|
-
return classList;
|
|
176
|
-
}
|
|
177
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbDropzoneComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
178
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BmbDropzoneComponent, isStandalone: true, selector: "bmb-dropzone", inputs: { appearanceContrast: { classPropertyName: "appearanceContrast", publicName: "appearanceContrast", isSignal: true, isRequired: false, transformFunction: null }, acceptedExtensions: { classPropertyName: "acceptedExtensions", publicName: "acceptedExtensions", isSignal: true, isRequired: true, transformFunction: null }, dropInstruction: { classPropertyName: "dropInstruction", publicName: "dropInstruction", isSignal: true, isRequired: false, transformFunction: null }, dropLabel: { classPropertyName: "dropLabel", publicName: "dropLabel", isSignal: true, isRequired: false, transformFunction: null }, errorMessage: { classPropertyName: "errorMessage", publicName: "errorMessage", isSignal: true, isRequired: false, transformFunction: null }, errorMessageFormat: { classPropertyName: "errorMessageFormat", publicName: "errorMessageFormat", isSignal: true, isRequired: false, transformFunction: null }, errorMessageSize: { classPropertyName: "errorMessageSize", publicName: "errorMessageSize", isSignal: true, isRequired: false, transformFunction: null }, fileSize: { classPropertyName: "fileSize", publicName: "fileSize", isSignal: true, isRequired: false, transformFunction: null }, formatFilesLabel: { classPropertyName: "formatFilesLabel", publicName: "formatFilesLabel", isSignal: true, isRequired: false, transformFunction: null }, linkFilesSupported: { classPropertyName: "linkFilesSupported", publicName: "linkFilesSupported", isSignal: true, isRequired: false, transformFunction: null }, linkLabel: { classPropertyName: "linkLabel", publicName: "linkLabel", isSignal: true, isRequired: false, transformFunction: null }, mainIcon: { classPropertyName: "mainIcon", publicName: "mainIcon", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, progress: { classPropertyName: "progress", publicName: "progress", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { newFile: "newFile", fileRemoved: "fileRemoved" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"bmb-drop-zone\">\n <section\n class=\"bmb-drop-zone-container\"\n [ngClass]=\"getDropZoneClass()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <div\n class=\"bmb-drop-zone-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-icon-valid':\n validFile && fileDataList.length > 0 && !!fileDataList[0].name,\n 'bmb-drop-zone-icon-error': isInvalidFileOnly()\n }\"\n >\n <bmb-icon [icon]=\"mainIcon()\" [size]=\"48\" alt=\"Drop zone icon\" />\n </div>\n <p class=\"bmb-drop-zone-label-format\">\n {{ formatFilesLabel() || ('dropzone.format_files_label' | translate) }}\n </p>\n <p class=\"bmb-drop-zone-label-format-instruction\">\n {{ dropInstruction() || ('dropzone.drop_instructions' | translate) }}\n <label class=\"bmb-drop-zone-link\" [htmlFor]=\"name()\">\n {{ dropLabel() || ('dropzone.drop_label' | translate) }}\n </label>\n </p>\n @if (isInvalidFileOnly()) {\n <p class=\"bmb-drop-zone-label-format-error bmb-drop-zone-label-format\">\n {{ errorMessage() || ('dropzone.error_message' | translate) }}\n </p>\n @if (linkFilesSupported()) {\n <bmb-text-link\n textLinkStyle=\"underlined\"\n [link]=\"linkFilesSupported()\"\n [textLink]=\"linkLabel() || ('dropzone.link_label' | translate)\"\n />\n }\n }\n <input\n type=\"file\"\n [id]=\"name()\"\n [name]=\"name()\"\n [accept]=\"acceptedExtensions().toString()\"\n (change)=\"onFileSelected($event)\"\n [multiple]=\"multiple()\"\n style=\"display: none\"\n />\n </section>\n @if (fileDataList.length > 0) {\n @for (file of fileDataList; track file.name) {\n <bmb-card margin=\"none\" type=\"transparent\">\n <bmb-card-content>\n <div\n class=\"bmb-drop-zone-list-files\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-loading':\n !file.error && getProgress(file.name) < 100,\n 'bmb-drop-zone-list-files-error': file.error,\n 'bmb-drop-zone-list-files-valid': getProgress(file.name) === 100\n }\"\n >\n <span\n class=\"bmb-drop-zone-list-files-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-icon-spin':\n !file.error && getProgress(file.name) < 100\n }\"\n >\n @if (!validFile) {\n <bmb-icon icon=\"upload_file\" [size]=\"24\" />\n } @else if (getProgress(file.name) < 100) {\n <bmb-icon icon=\"progress_activity\" [size]=\"24\" class=\"spin\" />\n } @else if (validFile) {\n <bmb-icon icon=\"task\" [size]=\"24\" />\n }\n </span>\n\n <div class=\"bmb-drop-zone-list-name\">\n <span>{{ file.name }}</span>\n\n <div\n class=\"bmb-drop-zone-list-status\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-status-success':\n getProgress(file.name) === 100\n }\"\n >\n @if (validFile && getProgress(file.name) < 100) {\n <span>{{ getProgress(file.name) }}% / 100%</span>\n }\n\n @if (getProgress(file.name) === 100) {\n {{ file.size.toFixed(2) }} MB\n <bmb-icon\n icon=\"check_circle\"\n [size]=\"24\"\n class=\"success-icon\"\n />\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n\n @if (file.error) {\n <span>\n @if (file.errorType === 'format') {\n {{\n errorMessageFormat() ||\n ('dropzone.error_message_format' | translate)\n }}\n } @else if (file.errorType === 'size') {\n {{\n errorMessageSize() ||\n ('dropzone.error_message_size' | translate)\n }}\n ({{ file.size.toFixed(2) }} MB)\n }\n </span>\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n </div>\n\n <ng-template #removeButton let-fileName=\"fileName\">\n <button\n class=\"bmb-drop-zone-list-remove\"\n (click)=\"removeFile(fileName)\"\n type=\"button\"\n >\n <bmb-icon icon=\"delete\" [size]=\"24\" class=\"delete-icon\" />\n </button>\n </ng-template>\n </div>\n\n @if (validFile && getProgress(file.name) < 100) {\n <span class=\"bmb-drop-zone-list-upload\">\n <bmb-progress-bar\n type=\"simple\"\n [counter]=\"getProgress(file.name)\"\n [totalCount]=\"100\"\n />\n </span>\n }\n </div>\n </bmb-card-content>\n </bmb-card>\n }\n }\n</div>\n", styles: ["@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-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-drop-zone{color:RGBA(var(--color-charade-500));display:flex;flex-direction:column;gap:var(--bmb-spacing-m);font-family:Poppins-Regular,sans-serif;font-size:.875rem}.bmb-drop-zone-container{align-items:center;border:.125rem dashed var(--general_contrasts-container-outline);border-radius:var(--bmb-radius-s);box-sizing:border-box;display:flex;flex-direction:column;gap:var(--bmb-spacing-m);justify-content:center;padding:var(--bmb-spacing-m) var(--bmb-spacing-l)}.bmb-drop-zone-container-primary{background-color:var(--containers-background)}.bmb-drop-zone-container-alternative{background-color:var(--containers-main)}.bmb-drop-zone-drag-over{background-color:var(--menu_select-on-surface-hovered-w-checkbox);border-color:var(--general_contrasts-main-selection)}.bmb-drop-zone-error{border-color:var(--red-primary);background-color:transparent}.bmb-drop-zone-label-format{margin:0;color:var(--general_contrasts-50)}.bmb-drop-zone-label-format-instruction{color:var(--general_contrasts-100)}.bmb-drop-zone-link{font-family:Poppins-Regular,sans-serif;font-size:.875rem;color:var(--general_contrasts-main-selection);cursor:pointer;text-decoration-line:underline}.bmb-drop-zone-label-format-error{color:var(--red-primary)}.bmb-drop-zone-icon-valid{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-icon-error{color:var(--red-primary)}.bmb-drop-zone-list-files{align-items:center;display:grid;gap:.5rem;grid-template-areas:\"icon name\" \"icon progress\";grid-template-columns:1.5rem 1fr;margin:0}.bmb-drop-zone-list-files-error{color:var(--red-primary);grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-loading .bmb-drop-zone-list-files-icon{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-list-files-valid{grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-icon{grid-area:icon;height:1.5rem;width:1.5rem}.bmb-drop-zone-list-files-icon-spin{animation:spin 1s linear infinite}.bmb-drop-zone-list-upload{flex:1;grid-area:progress}.bmb-drop-zone-list-name{align-items:center;display:flex;grid-area:name;justify-content:space-between}.bmb-drop-zone-list-status{align-items:center;display:flex;gap:.5rem}.bmb-drop-zone-list-status-success .success-icon{color:var(--red-primary)}.bmb-drop-zone-list-status .delete-icon{color:var(--general_contrasts-50)}.bmb-drop-zone-list-remove{padding:0;margin:0;height:1.5rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BmbIconComponent, selector: "bmb-icon", inputs: ["icon", "materialIcon", "styleIcon", "isFill", "fontWeight", "size", "alt", "dotNotification"] }, { kind: "component", type: BmbTextLinkComponent, selector: "bmb-text-link", inputs: ["textLink", "textLinkStyle", "target", "icon", "iconPosition", "link", "disabled"] }, { kind: "component", type: BmbCardComponent, selector: "bmb-card", inputs: ["borderRadius", "margin", "type", "state", "boxShadowStyle", "borderColor", "alternative"] }, { kind: "component", type: BmbCardContentComponent, selector: "bmb-card-content", inputs: ["padding", "colorBackground", "setBorderRadius"] }, { kind: "component", type: BmbProgressBarComponent, selector: "bmb-progress-bar", inputs: ["type", "totalCount", "counter", "title", "appearance", "textLink", "href", "target", "textFormat"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
179
|
-
}
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BmbDropzoneComponent, decorators: [{
|
|
181
|
-
type: Component,
|
|
182
|
-
args: [{ selector: 'bmb-dropzone', standalone: true, imports: [
|
|
183
|
-
CommonModule,
|
|
184
|
-
BmbIconComponent,
|
|
185
|
-
BmbTextLinkComponent,
|
|
186
|
-
BmbCardComponent,
|
|
187
|
-
BmbCardContentComponent,
|
|
188
|
-
BmbProgressBarComponent,
|
|
189
|
-
TranslatePipe,
|
|
190
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"bmb-drop-zone\">\n <section\n class=\"bmb-drop-zone-container\"\n [ngClass]=\"getDropZoneClass()\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <div\n class=\"bmb-drop-zone-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-icon-valid':\n validFile && fileDataList.length > 0 && !!fileDataList[0].name,\n 'bmb-drop-zone-icon-error': isInvalidFileOnly()\n }\"\n >\n <bmb-icon [icon]=\"mainIcon()\" [size]=\"48\" alt=\"Drop zone icon\" />\n </div>\n <p class=\"bmb-drop-zone-label-format\">\n {{ formatFilesLabel() || ('dropzone.format_files_label' | translate) }}\n </p>\n <p class=\"bmb-drop-zone-label-format-instruction\">\n {{ dropInstruction() || ('dropzone.drop_instructions' | translate) }}\n <label class=\"bmb-drop-zone-link\" [htmlFor]=\"name()\">\n {{ dropLabel() || ('dropzone.drop_label' | translate) }}\n </label>\n </p>\n @if (isInvalidFileOnly()) {\n <p class=\"bmb-drop-zone-label-format-error bmb-drop-zone-label-format\">\n {{ errorMessage() || ('dropzone.error_message' | translate) }}\n </p>\n @if (linkFilesSupported()) {\n <bmb-text-link\n textLinkStyle=\"underlined\"\n [link]=\"linkFilesSupported()\"\n [textLink]=\"linkLabel() || ('dropzone.link_label' | translate)\"\n />\n }\n }\n <input\n type=\"file\"\n [id]=\"name()\"\n [name]=\"name()\"\n [accept]=\"acceptedExtensions().toString()\"\n (change)=\"onFileSelected($event)\"\n [multiple]=\"multiple()\"\n style=\"display: none\"\n />\n </section>\n @if (fileDataList.length > 0) {\n @for (file of fileDataList; track file.name) {\n <bmb-card margin=\"none\" type=\"transparent\">\n <bmb-card-content>\n <div\n class=\"bmb-drop-zone-list-files\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-loading':\n !file.error && getProgress(file.name) < 100,\n 'bmb-drop-zone-list-files-error': file.error,\n 'bmb-drop-zone-list-files-valid': getProgress(file.name) === 100\n }\"\n >\n <span\n class=\"bmb-drop-zone-list-files-icon\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-files-icon-spin':\n !file.error && getProgress(file.name) < 100\n }\"\n >\n @if (!validFile) {\n <bmb-icon icon=\"upload_file\" [size]=\"24\" />\n } @else if (getProgress(file.name) < 100) {\n <bmb-icon icon=\"progress_activity\" [size]=\"24\" class=\"spin\" />\n } @else if (validFile) {\n <bmb-icon icon=\"task\" [size]=\"24\" />\n }\n </span>\n\n <div class=\"bmb-drop-zone-list-name\">\n <span>{{ file.name }}</span>\n\n <div\n class=\"bmb-drop-zone-list-status\"\n [ngClass]=\"{\n 'bmb-drop-zone-list-status-success':\n getProgress(file.name) === 100\n }\"\n >\n @if (validFile && getProgress(file.name) < 100) {\n <span>{{ getProgress(file.name) }}% / 100%</span>\n }\n\n @if (getProgress(file.name) === 100) {\n {{ file.size.toFixed(2) }} MB\n <bmb-icon\n icon=\"check_circle\"\n [size]=\"24\"\n class=\"success-icon\"\n />\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n\n @if (file.error) {\n <span>\n @if (file.errorType === 'format') {\n {{\n errorMessageFormat() ||\n ('dropzone.error_message_format' | translate)\n }}\n } @else if (file.errorType === 'size') {\n {{\n errorMessageSize() ||\n ('dropzone.error_message_size' | translate)\n }}\n ({{ file.size.toFixed(2) }} MB)\n }\n </span>\n <ng-container\n *ngTemplateOutlet=\"\n removeButton;\n context: { fileName: file.name }\n \"\n ></ng-container>\n }\n </div>\n\n <ng-template #removeButton let-fileName=\"fileName\">\n <button\n class=\"bmb-drop-zone-list-remove\"\n (click)=\"removeFile(fileName)\"\n type=\"button\"\n >\n <bmb-icon icon=\"delete\" [size]=\"24\" class=\"delete-icon\" />\n </button>\n </ng-template>\n </div>\n\n @if (validFile && getProgress(file.name) < 100) {\n <span class=\"bmb-drop-zone-list-upload\">\n <bmb-progress-bar\n type=\"simple\"\n [counter]=\"getProgress(file.name)\"\n [totalCount]=\"100\"\n />\n </span>\n }\n </div>\n </bmb-card-content>\n </bmb-card>\n }\n }\n</div>\n", styles: ["@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-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-drop-zone{color:RGBA(var(--color-charade-500));display:flex;flex-direction:column;gap:var(--bmb-spacing-m);font-family:Poppins-Regular,sans-serif;font-size:.875rem}.bmb-drop-zone-container{align-items:center;border:.125rem dashed var(--general_contrasts-container-outline);border-radius:var(--bmb-radius-s);box-sizing:border-box;display:flex;flex-direction:column;gap:var(--bmb-spacing-m);justify-content:center;padding:var(--bmb-spacing-m) var(--bmb-spacing-l)}.bmb-drop-zone-container-primary{background-color:var(--containers-background)}.bmb-drop-zone-container-alternative{background-color:var(--containers-main)}.bmb-drop-zone-drag-over{background-color:var(--menu_select-on-surface-hovered-w-checkbox);border-color:var(--general_contrasts-main-selection)}.bmb-drop-zone-error{border-color:var(--red-primary);background-color:transparent}.bmb-drop-zone-label-format{margin:0;color:var(--general_contrasts-50)}.bmb-drop-zone-label-format-instruction{color:var(--general_contrasts-100)}.bmb-drop-zone-link{font-family:Poppins-Regular,sans-serif;font-size:.875rem;color:var(--general_contrasts-main-selection);cursor:pointer;text-decoration-line:underline}.bmb-drop-zone-label-format-error{color:var(--red-primary)}.bmb-drop-zone-icon-valid{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-icon-error{color:var(--red-primary)}.bmb-drop-zone-list-files{align-items:center;display:grid;gap:.5rem;grid-template-areas:\"icon name\" \"icon progress\";grid-template-columns:1.5rem 1fr;margin:0}.bmb-drop-zone-list-files-error{color:var(--red-primary);grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-loading .bmb-drop-zone-list-files-icon{color:var(--general_contrasts-main-selection)}.bmb-drop-zone-list-files-valid{grid-template-areas:\"icon name\"}.bmb-drop-zone-list-files-icon{grid-area:icon;height:1.5rem;width:1.5rem}.bmb-drop-zone-list-files-icon-spin{animation:spin 1s linear infinite}.bmb-drop-zone-list-upload{flex:1;grid-area:progress}.bmb-drop-zone-list-name{align-items:center;display:flex;grid-area:name;justify-content:space-between}.bmb-drop-zone-list-status{align-items:center;display:flex;gap:.5rem}.bmb-drop-zone-list-status-success .success-icon{color:var(--red-primary)}.bmb-drop-zone-list-status .delete-icon{color:var(--general_contrasts-50)}.bmb-drop-zone-list-remove{padding:0;margin:0;height:1.5rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}\n"] }]
|
|
191
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm1iLWRyb3B6b25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcHpvbmUvYm1iLWRyb3B6b25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RzLW5nL3NyYy9saWIvY29tcG9uZW50cy9ibWItZHJvcHpvbmUvYm1iLWRyb3B6b25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHVCQUF1QixHQUN4QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7OztBQStCekQsTUFBTSxPQUFPLG9CQUFvQjtJQXdCL0IsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF2QjFDLHVCQUFrQixHQUFHLEtBQUssQ0FBZSxTQUFTLENBQUMsQ0FBQztRQUNwRCx1QkFBa0IsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFZLENBQUM7UUFDaEQsb0JBQWUsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNsQyxjQUFTLEdB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJtYkljb25Db21wb25lbnQgfSBmcm9tICcuLi9ibWItaWNvbi9ibWItaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iVGV4dExpbmtDb21wb25lbnQgfSBmcm9tICcuLi9ibWItdGV4dC1saW5rL2JtYi10ZXh0LWxpbmsuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEJtYkNhcmRDb21wb25lbnQsXG4gIEJtYkNhcmRDb250ZW50Q29tcG9uZW50LFxufSBmcm9tICcuLi9ibWItY2FyZC9ibWItY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQm1iUHJvZ3Jlc3NCYXJDb21wb25lbnQgfSBmcm9tICcuLi9ibWItcHJvZ3Jlc3MtYmFyL2JtYi1wcm9ncmVzcy1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IGdldFVVSUQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XG5pbXBvcnQgeyBJQm1iQ29udHJhc3QgfSBmcm9tICcuLi8uLi90eXBlcy9jb2xvcnMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0aW9ucyc7XG5pbnRlcmZhY2UgRmlsZURhdGEge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNpemU6IG51bWJlcjtcbiAgYmFzZTY0Pzogc3RyaW5nO1xuICBlcnJvcj86IGJvb2xlYW47XG4gIGVycm9yVHlwZT86ICdmb3JtYXQnIHwgJ3NpemUnIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIElCbWJGaWxlVmFsaWRhdGlvbiB7XG4gIGlzVmFsaWRGb3JtYXQ6IGJvb2xlYW47XG4gIGlzVmFsaWRTaXplOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdibWItZHJvcHpvbmUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJtYkljb25Db21wb25lbnQsXG4gICAgQm1iVGV4dExpbmtDb21wb25lbnQsXG4gICAgQm1iQ2FyZENvbXBvbmVudCxcbiAgICBCbWJDYXJkQ29udGVudENvbXBvbmVudCxcbiAgICBCbWJQcm9ncmVzc0JhckNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm1iLWRyb3B6b25lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2JtYi1kcm9wem9uZS5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBCbWJEcm9wem9uZUNvbXBvbmVudCB7XG4gIGFwcGVhcmFuY2VDb250cmFzdCA9IGlucHV0PElCbWJDb250cmFzdD4oJ2RlZmF1bHQnKTtcbiAgYWNjZXB0ZWRFeHRlbnNpb25zID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nW10+KCk7XG4gIGRyb3BJbnN0cnVjdGlvbiA9IGlucHV0PHN0cmluZz4oKTtcbiAgZHJvcExhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBlcnJvck1lc3NhZ2UgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGVycm9yTWVzc2FnZUZvcm1hdCA9IGlucHV0PHN0cmluZz4oKTtcbiAgZXJyb3JNZXNzYWdlU2l6ZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgZmlsZURhdGFMaXN0OiBGaWxlRGF0YVtdID0gW107XG4gIGZpbGVTaXplID0gaW5wdXQ8bnVtYmVyPigyKTtcbiAgZm9ybWF0RmlsZXNMYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgbGlua0ZpbGVzU3VwcG9ydGVkID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIGxpbmtMYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgbWFpbkljb24gPSBpbnB1dDxzdHJpbmc+KCdpbWFnZScpO1xuICBtdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgbmFtZSA9IGlucHV0PHN0cmluZz4oZ2V0VVVJRCgpKTtcbiAgcHJvZ3Jlc3MgPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+IHwgbnVtYmVyPih7fSk7XG5cbiAgbmV3RmlsZSA9IG91dHB1dDxGaWxlIHwgRmlsZVtdPigpO1xuICBmaWxlUmVtb3ZlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgdmFsaWRGaWxlOiBib29sZWFuID0gdHJ1ZTtcbiAgaW5wdXQ/OiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1sncHJvZ3Jlc3MnXSB8fFxuICAgICAgY2hhbmdlc1snYWNjZXB0ZWRFeHRlbnNpb25zJ10gfHxcbiAgICAgIGNoYW5nZXNbJ2ZpbGVTaXplJ11cbiAgICApIHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5pbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmICh0aGlzLmlucHV0LmZpbGVzPy5bMF0pIHtcbiAgICAgIGNvbnN0IGZpbGVzID0gdGhpcy5pbnB1dC5maWxlcztcbiAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZ2V0RmlsZUFuZFZhbGlkYXRlKHRoaXMubXVsdGlwbGUoKSA/IEFycmF5LmZyb20oZmlsZXMpIDogZmlsZXNbMF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNWYWxpZEZpbGVUeXBlKGZpbGVUeXBlOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmFjY2VwdGVkRXh0ZW5zaW9ucygpLnNvbWUoKGVsZW1lbnQ6IHN0cmluZykgPT4gZWxlbWVudC5pbmNsdWRlcygnLycpKVxuICAgICkge1xuICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLmFjY2VwdGVkRXh0ZW5zaW9ucygpLmZpbHRlcigoZWxlbWVudDogc3RyaW5nKSA9PlxuICAgICAgICBlbGVtZW50LmVuZHNXaXRoKCcvKicpLFxuICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgISF0eXBlcy5sZW5ndGggJiZcbiAgICAgICAgdHlwZXMuc29tZShcbiAgICAgICAgICAoZWxlbWVudDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgZWxlbWVudC5zdWJzdHJpbmcoMCwgZWxlbWVudC5sZW5ndGggLSAyKSA9PT1cbiAgICAgICAgICAgIGZpbGVUeXBlLnN1YnN0cmluZygwLCBlbGVtZW50Lmxlbmd0aCAtIDIpLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5hY2NlcHRlZEV4dGVuc2lvbnMoKS5pbmNsdWRlcyhmaWxlVHlwZSkpIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMuYWNjZXB0ZWRFeHRlbnNpb25zKCkuaW5jbHVkZXMoXG4gICAgICAgIGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpICsgMSksXG4gICAgICApXG4gICAgKVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbGVTaXplSW5NQihmaWxlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZmlsZVNpemUgLyAxMDQ4NTc2O1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkRmlsZVNpemUoZmlsZVNpemU6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldEZpbGVTaXplSW5NQihmaWxlU2l6ZSkgPD0gdGhpcy5maWxlU2l6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpbGVEdXBsaWNhdGUoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbGVEYXRhTGlzdC5zb21lKChleGlzdGluZykgPT4gZXhpc3RpbmcubmFtZSA9PT0gZmlsZU5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWxlQW5kVmFsaWRhdGUoZmlsZTogRmlsZSB8IEZpbGVbXSk6IHZvaWQge1xuICAgIGNvbnN0IGZpbGVzQXJyYXkgPSBBcnJheS5pc0FycmF5KGZpbGUpID8gZmlsZSA6IFtmaWxlXTtcbiAgICBjb25zdCB2YWxpZEZpbGVzOiBGaWxlW10gPSBbXTtcblxuICAgIGlmICghdGhpcy5tdWx0aXBsZSgpKSB7XG4gICAgICB0aGlzLmZpbGVEYXRhTGlzdCA9IFtdO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc2luZ2xlRmlsZSBvZiBmaWxlc0FycmF5KSB7XG4gICAgICBpZiAodGhpcy5pc0ZpbGVEdXBsaWNhdGUoc2luZ2xlRmlsZS5uYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZVZhbGlkYXRpb246IElCbWJGaWxlVmFsaWRhdGlvbiA9IHtcbiAgICAgICAgaXNWYWxpZEZvcm1hdDogdGhpcy5pc1ZhbGlkRmlsZVR5cGUoc2luZ2xlRmlsZS50eXBlLCBzaW5nbGVGaWxlLm5hbWUpLFxuICAgICAgICBpc1ZhbGlkU2l6ZTogdGhpcy5pc1ZhbGlkRmlsZVNpemUoc2luZ2xlRmlsZS5zaXplKSxcbiAgICAgIH07XG4gICAgICBjb25zdCBmaWxlRGF0YTogRmlsZURhdGEgPSB7XG4gICAgICAgIG5hbWU6IHNpbmdsZUZpbGUubmFtZSxcbiAgICAgICAgc2l6ZTogdGhpcy5nZXRGaWxlU2l6ZUluTUIoc2luZ2xlRmlsZS5zaXplKSxcbiAgICAgICAgZXJyb3I6ICFmaWxlVmFsaWRhdGlvbi5pc1ZhbGlkRm9ybWF0IHx8ICFmaWxlVmFsaWRhdGlvbi5pc1ZhbGlkU2l6ZSxcbiAgICAgICAgZXJyb3JUeXBlOiAhZmlsZVZhbGlkYXRpb24uaXNWYWxpZEZvcm1hdCA/ICdmb3JtYXQnIDogJ3NpemUnLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5maWxlRGF0YUxpc3QucHVzaChmaWxlRGF0YSk7XG4gICAgICBpZiAoZmlsZVZhbGlkYXRpb24uaXNWYWxpZEZvcm1hdCAmJiBmaWxlVmFsaWRhdGlvbi5pc1ZhbGlkU2l6ZSlcbiAgICAgICAgdmFsaWRGaWxlcy5wdXNoKHNpbmdsZUZpbGUpO1xuICAgIH1cblxuICAgIGlmICghIXZhbGlkRmlsZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm5ld0ZpbGUuZW1pdCh0aGlzLm11bHRpcGxlKCkgPyB2YWxpZEZpbGVzIDogdmFsaWRGaWxlc1swXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25FcnJvckZpbGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRmlsZShmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5maWxlRGF0YUxpc3QgPSB0aGlzLmZpbGVEYXRhTGlzdC5maWx0ZXIoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5uYW1lICE9PSBmaWxlTmFtZSxcbiAgICApO1xuXG4gICAgY29uc3QgaGFzRm9ybWF0RXJyb3JzT25seSA9IHRoaXMuZmlsZURhdGFMaXN0LnNvbWUoXG4gICAgICAoZmlsZSkgPT4gZmlsZS5lcnJvciAmJiBmaWxlLmVycm9yVHlwZSA9PT0gJ2Zvcm1hdCcsXG4gICAgKTtcblxuICAgIHRoaXMudmFsaWRGaWxlID0gdGhpcy5maWxlRGF0YUxpc3QubGVuZ3RoID4gMCAmJiAhaGFzRm9ybWF0RXJyb3JzT25seTtcblxuICAgIGlmICh0aGlzLmZpbGVEYXRhTGlzdC5sZW5ndGggPT09IDAgJiYgdGhpcy5pbnB1dCkge1xuICAgICAgdGhpcy5pbnB1dC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMuZmlsZVJlbW92ZWQuZW1pdChmaWxlTmFtZSk7XG4gIH1cblxuICBwcml2YXRlIG9uRXJyb3JGaWxlKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXQgJiYgKHRoaXMuaW5wdXQudmFsdWUgPSAnJyk7XG4gICAgdGhpcy52YWxpZEZpbGUgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIHRoaXMudmFsaWRGaWxlID0gdHJ1ZTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGRyb3B6b25lRWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgZHJvcHpvbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2JtYi1kcm9wLXpvbmUtZHJhZy1vdmVyJyk7XG4gIH1cblxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBkcm9wem9uZUVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGRyb3B6b25lRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdibWItZHJvcC16b25lLWRyYWctb3ZlcicpO1xuICB9XG5cbiAgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGRyb3B6b25lRWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgZHJvcHpvbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2JtYi1kcm9wLXpvbmUnKTtcbiAgICBkcm9wem9uZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnYm1iLWRyb3Atem9uZS1kcmFnLW92ZXInKTtcblxuICAgIGNvbnN0IGZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcztcbiAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5nZXRGaWxlQW5kVmFsaWRhdGUodGhpcy5tdWx0aXBsZSgpID8gQXJyYXkuZnJvbShmaWxlcykgOiBmaWxlc1swXSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvZ3Jlc3MoZmlsZU5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgcHJvZ3Jlc3MgPSB0aGlzLnByb2dyZXNzKCk7XG4gICAgaWYgKHR5cGVvZiBwcm9ncmVzcyA9PT0gJ251bWJlcicpIHJldHVybiBwcm9ncmVzcztcbiAgICByZXR1cm4gcHJvZ3Jlc3M/LltmaWxlTmFtZV0gPz8gMDtcbiAgfVxuXG4gIGlzSW52YWxpZEZpbGVPbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbGVEYXRhTGlzdC5zb21lKFxuICAgICAgKGZpbGUpID0+IGZpbGUuZXJyb3IgJiYgZmlsZS5lcnJvclR5cGUgPT09ICdmb3JtYXQnLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5maWxlRGF0YUxpc3QgPSBbXTtcbiAgICB0aGlzLnZhbGlkRmlsZSA9IHRydWU7XG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcbiAgICAgIHRoaXMuaW5wdXQudmFsdWUgPSAnJztcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0RHJvcFpvbmVDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhc3NMaXN0ID0gW107XG5cbiAgICBpZiAodGhpcy5pc0ludmFsaWRGaWxlT25seSgpKSB7XG4gICAgICBjbGFzc0xpc3QucHVzaCgnYm1iLWRyb3Atem9uZS1lcnJvcicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbGVEYXRhTGlzdC5sZW5ndGggPiAwICYmICEhdGhpcy5maWxlRGF0YUxpc3RbMF0ubmFtZSkge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYi1kcm9wLXpvbmUtZHJhZy1vdmVyJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXBwZWFyYW5jZUNvbnRyYXN0KCkgPT09ICdwcmltYXJ5Jykge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYi1kcm9wLXpvbmUtY29udGFpbmVyLXByaW1hcnknKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hcHBlYXJhbmNlQ29udHJhc3QoKSA9PT0gJ2FsdGVybmF0aXZlJykge1xuICAgICAgY2xhc3NMaXN0LnB1c2goJ2JtYi1kcm9wLXpvbmUtY29udGFpbmVyLWFsdGVybmF0aXZlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzTGlzdDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImJtYi1kcm9wLXpvbmVcIj5cbiAgPHNlY3Rpb25cbiAgICBjbGFzcz1cImJtYi1kcm9wLXpvbmUtY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJnZXREcm9wWm9uZUNsYXNzKClcIlxuICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJibWItZHJvcC16b25lLWljb25cIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYm1iLWRyb3Atem9uZS1pY29uLXZhbGlkJzpcbiAgICAgICAgICB2YWxpZEZpbGUgJiYgZmlsZURhdGFMaXN0Lmxlbmd0aCA+IDAgJiYgISFmaWxlRGF0YUxpc3RbMF0ubmFtZSxcbiAgICAgICAgJ2JtYi1kcm9wLXpvbmUtaWNvbi1lcnJvcic6IGlzSW52YWxpZEZpbGVPbmx5KClcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxibWItaWNvbiBbaWNvbl09XCJtYWluSWNvbigpXCIgW3NpemVdPVwiNDhcIiBhbHQ9XCJEcm9wIHpvbmUgaWNvblwiIC8+XG4gICAgPC9kaXY+XG4gICAgPHAgY2xhc3M9XCJibWItZHJvcC16b25lLWxhYmVsLWZvcm1hdFwiPlxuICAgICAge3sgZm9ybWF0RmlsZXNMYWJlbCgpIHx8ICgnZHJvcHpvbmUuZm9ybWF0X2ZpbGVzX2xhYmVsJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICA8L3A+XG4gICAgPHAgY2xhc3M9XCJibWItZHJvcC16b25lLWxhYmVsLWZvcm1hdC1pbnN0cnVjdGlvblwiPlxuICAgICAge3sgZHJvcEluc3RydWN0aW9uKCkgfHwgKCdkcm9wem9uZS5kcm9wX2luc3RydWN0aW9ucycgfCB0cmFuc2xhdGUpIH19XG4gICAgICA8bGFiZWwgY2xhc3M9XCJibWItZHJvcC16b25lLWxpbmtcIiBbaHRtbEZvcl09XCJuYW1lKClcIj5cbiAgICAgICAge3sgZHJvcExhYmVsKCkgfHwgKCdkcm9wem9uZS5kcm9wX2xhYmVsJyB8IHRyYW5zbGF0ZSkgfX1cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9wPlxuICAgIEBpZiAoaXNJbnZhbGlkRmlsZU9ubHkoKSkge1xuICAgICAgPHAgY2xhc3M9XCJibWItZHJvcC16b25lLWxhYmVsLWZvcm1hdC1lcnJvciBibWItZHJvcC16b25lLWxhYmVsLWZvcm1hdFwiPlxuICAgICAgICB7eyBlcnJvck1lc3NhZ2UoKSB8fCAoJ2Ryb3B6b25lLmVycm9yX21lc3NhZ2UnIHwgdHJhbnNsYXRlKSB9fVxuICAgICAgPC9wPlxuICAgICAgQGlmIChsaW5rRmlsZXNTdXBwb3J0ZWQoKSkge1xuICAgICAgICA8Ym1iLXRleHQtbGlua1xuICAgICAgICAgIHRleHRMaW5rU3R5bGU9XCJ1bmRlcmxpbmVkXCJcbiAgICAgICAgICBbbGlua109XCJsaW5rRmlsZXNTdXBwb3J0ZWQoKVwiXG4gICAgICAgICAgW3RleHRMaW5rXT1cImxpbmtMYWJlbCgpIHx8ICgnZHJvcHpvbmUubGlua19sYWJlbCcgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICB9XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICBbaWRdPVwibmFtZSgpXCJcbiAgICAgIFtuYW1lXT1cIm5hbWUoKVwiXG4gICAgICBbYWNjZXB0XT1cImFjY2VwdGVkRXh0ZW5zaW9ucygpLnRvU3RyaW5nKClcIlxuICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZSgpXCJcbiAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXG4gICAgLz5cbiAgPC9zZWN0aW9uPlxuICBAaWYgKGZpbGVEYXRhTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgQGZvciAoZmlsZSBvZiBmaWxlRGF0YUxpc3Q7IHRyYWNrIGZpbGUubmFtZSkge1xuICAgICAgPGJtYi1jYXJkIG1hcmdpbj1cIm5vbmVcIiB0eXBlPVwidHJhbnNwYXJlbnRcIj5cbiAgICAgICAgPGJtYi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJibWItZHJvcC16b25lLWxpc3QtZmlsZXNcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnYm1iLWRyb3Atem9uZS1saXN0LWZpbGVzLWxvYWRpbmcnOlxuICAgICAgICAgICAgICAgICFmaWxlLmVycm9yICYmIGdldFByb2dyZXNzKGZpbGUubmFtZSkgPCAxMDAsXG4gICAgICAgICAgICAgICdibWItZHJvcC16b25lLWxpc3QtZmlsZXMtZXJyb3InOiBmaWxlLmVycm9yLFxuICAgICAgICAgICAgICAnYm1iLWRyb3Atem9uZS1saXN0LWZpbGVzLXZhbGlkJzogZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSA9PT0gMTAwXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImJtYi1kcm9wLXpvbmUtbGlzdC1maWxlcy1pY29uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdibWItZHJvcC16b25lLWxpc3QtZmlsZXMtaWNvbi1zcGluJzpcbiAgICAgICAgICAgICAgICAgICFmaWxlLmVycm9yICYmIGdldFByb2dyZXNzKGZpbGUubmFtZSkgPCAxMDBcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIEBpZiAoIXZhbGlkRmlsZSkge1xuICAgICAgICAgICAgICAgIDxibWItaWNvbiBpY29uPVwidXBsb2FkX2ZpbGVcIiBbc2l6ZV09XCIyNFwiIC8+XG4gICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGdldFByb2dyZXNzKGZpbGUubmFtZSkgPCAxMDApIHtcbiAgICAgICAgICAgICAgICA8Ym1iLWljb24gaWNvbj1cInByb2dyZXNzX2FjdGl2aXR5XCIgW3NpemVdPVwiMjRcIiBjbGFzcz1cInNwaW5cIiAvPlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmICh2YWxpZEZpbGUpIHtcbiAgICAgICAgICAgICAgICA8Ym1iLWljb24gaWNvbj1cInRhc2tcIiBbc2l6ZV09XCIyNFwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJtYi1kcm9wLXpvbmUtbGlzdC1uYW1lXCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJibWItZHJvcC16b25lLWxpc3Qtc3RhdHVzXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnYm1iLWRyb3Atem9uZS1saXN0LXN0YXR1cy1zdWNjZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSA9PT0gMTAwXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKHZhbGlkRmlsZSAmJiBnZXRQcm9ncmVzcyhmaWxlLm5hbWUpIDwgMTAwKSB7XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRQcm9ncmVzcyhmaWxlLm5hbWUpIH19JSAvIDEwMCU8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGlmIChnZXRQcm9ncmVzcyhmaWxlLm5hbWUpID09PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgIHt7IGZpbGUuc2l6ZS50b0ZpeGVkKDIpIH19IE1CXG4gICAgICAgICAgICAgICAgICA8Ym1iLWljb25cbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImNoZWNrX2NpcmNsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdWNjZXNzLWljb25cIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByZW1vdmVCdXR0b247XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyBmaWxlTmFtZTogZmlsZS5uYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBAaWYgKGZpbGUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGZpbGUuZXJyb3JUeXBlID09PSAnZm9ybWF0Jykge1xuICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VGb3JtYXQoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Ryb3B6b25lLmVycm9yX21lc3NhZ2VfZm9ybWF0JyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChmaWxlLmVycm9yVHlwZSA9PT0gJ3NpemUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZVNpemUoKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Ryb3B6b25lLmVycm9yX21lc3NhZ2Vfc2l6ZScgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAoe3sgZmlsZS5zaXplLnRvRml4ZWQoMikgfX0gTUIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByZW1vdmVCdXR0b247XG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyBmaWxlTmFtZTogZmlsZS5uYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVtb3ZlQnV0dG9uIGxldC1maWxlTmFtZT1cImZpbGVOYW1lXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJibWItZHJvcC16b25lLWxpc3QtcmVtb3ZlXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaWxlKGZpbGVOYW1lKVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8Ym1iLWljb24gaWNvbj1cImRlbGV0ZVwiIFtzaXplXT1cIjI0XCIgY2xhc3M9XCJkZWxldGUtaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgQGlmICh2YWxpZEZpbGUgJiYgZ2V0UHJvZ3Jlc3MoZmlsZS5uYW1lKSA8IDEwMCkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJtYi1kcm9wLXpvbmUtbGlzdC11cGxvYWRcIj5cbiAgICAgICAgICAgICAgICA8Ym1iLXByb2dyZXNzLWJhclxuICAgICAgICAgICAgICAgICAgdHlwZT1cInNpbXBsZVwiXG4gICAgICAgICAgICAgICAgICBbY291bnRlcl09XCJnZXRQcm9ncmVzcyhmaWxlLm5hbWUpXCJcbiAgICAgICAgICAgICAgICAgIFt0b3RhbENvdW50XT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2JtYi1jYXJkLWNvbnRlbnQ+XG4gICAgICA8L2JtYi1jYXJkPlxuICAgIH1cbiAgfVxuPC9kaXY+XG4iXX0=
|