@snabcentr/client-ui 4.10.2 → 5.0.1
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/fesm2022/snabcentr-client-ui.mjs +3338 -3780
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/index.d.ts +4470 -3
- package/package.json +1 -3
- package/styles/tailwind/tailwind.scss +1 -177
- package/accordion/index.d.ts +0 -3
- package/accordion/sc-accordion-content.directive.d.ts +0 -9
- package/accordion/sc-accordion.component.d.ts +0 -56
- package/accordion/sc-accordion.module.d.ts +0 -15
- package/auth/enums/auth-method.d.ts +0 -13
- package/auth/index.d.ts +0 -8
- package/auth/interfaces/api-error-response.d.ts +0 -13
- package/auth/interfaces/index.d.ts +0 -3
- package/auth/interfaces/sc-bank-account-form-group.d.ts +0 -11
- package/auth/interfaces/sc-contact-form-group.d.ts +0 -10
- package/auth/sc-auth.module.d.ts +0 -26
- package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +0 -39
- package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +0 -45
- package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +0 -53
- package/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.d.ts +0 -106
- package/auth/sign-up-form/sc-sign-up-form.component.d.ts +0 -161
- package/banner/index.d.ts +0 -2
- package/banner/sc-banner.component.d.ts +0 -88
- package/banner/sc-banner.module.d.ts +0 -18
- package/brands-list/index.d.ts +0 -2
- package/brands-list/sc-brands-list.component.d.ts +0 -15
- package/brands-list/sc-brands-list.module.d.ts +0 -12
- package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +0 -102
- package/cart/add-or-editing-cart-item-dialog/index.d.ts +0 -2
- package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +0 -48
- package/cart/cart-item/sc-cart-item.component.d.ts +0 -25
- package/cart/index.d.ts +0 -3
- package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +0 -62
- package/catalog/category-card/sc-category-card.component.d.ts +0 -76
- package/catalog/cost-with-discount/cost-with-discount.component.d.ts +0 -23
- package/catalog/download-price-list/sc-download-price-list.component.d.ts +0 -38
- package/catalog/hover-image-carousel/sc-hover-image-carousel.component.d.ts +0 -48
- package/catalog/index.d.ts +0 -12
- package/catalog/input-quantity/sc-input-quantity.component.d.ts +0 -82
- package/catalog/notify-when-in-stock-dialog/index.d.ts +0 -2
- package/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.d.ts +0 -90
- package/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.d.ts +0 -22
- package/catalog/price-card/sc-price-card.component.d.ts +0 -18
- package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +0 -10
- package/catalog/price-history/sc-price-history.component.d.ts +0 -88
- package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +0 -40
- package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +0 -47
- package/catalog/sc-catalog.module.d.ts +0 -29
- package/catalog/sc-favorite-button/sc-favorite-button.component.d.ts +0 -25
- package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +0 -49
- package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +0 -23
- package/contacts/index.d.ts +0 -7
- package/contacts/manager-card/sc-manager-card.component.d.ts +0 -22
- package/contacts/manager-card-push/sc-manager-card-push.component.d.ts +0 -18
- package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +0 -28
- package/contacts/sc-contacts.module.d.ts +0 -28
- package/contacts/tokens/index.d.ts +0 -2
- package/contacts/tokens/sc-manager-qr-handler.token.d.ts +0 -6
- package/contacts/tokens/sc-show-help-notification-in-phone-input.token.d.ts +0 -5
- package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +0 -49
- package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +0 -161
- package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +0 -62
- package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +0 -49
- package/contragents/index.d.ts +0 -7
- package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +0 -64
- package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +0 -125
- package/contragents/sc-contragents.module.d.ts +0 -27
- package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +0 -141
- package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +0 -50
- package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +0 -49
- package/delivery-address/index.d.ts +0 -4
- package/delivery-address/sc-delivery-address.module.d.ts +0 -26
- package/dialogs/index.d.ts +0 -1
- package/dialogs/sc-resource-preview/sc-resource-preview.component.d.ts +0 -42
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +0 -136
- package/directives/index.d.ts +0 -7
- package/directives/links/index.d.ts +0 -4
- package/directives/links/sc-email-link.directive.d.ts +0 -25
- package/directives/links/sc-link-location.d.ts +0 -5
- package/directives/links/sc-links.d.ts +0 -7
- package/directives/links/sc-tel-link.directive.d.ts +0 -40
- package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +0 -18
- package/directives/next-input-focus/sc-next-input-focus.module.d.ts +0 -10
- package/directives/sc-date-value-transformer.directive.d.ts +0 -8
- package/directives/select-on-focusin/sc-select-on-focusin.directive.d.ts +0 -14
- package/directives/terminal-link/sc-terminal-link.directive.d.ts +0 -34
- package/error-handler/consts/error-change-handler.providers.d.ts +0 -5
- package/error-handler/error-block-status/error-block-status.component.d.ts +0 -45
- package/error-handler/index.d.ts +0 -4
- package/error-handler/interfaces/i-block-error.d.ts +0 -17
- package/error-handler/sc-error-handler.component.d.ts +0 -40
- package/esm2022/accordion/index.mjs +0 -4
- package/esm2022/accordion/sc-accordion-content.directive.mjs +0 -17
- package/esm2022/accordion/sc-accordion.component.mjs +0 -92
- package/esm2022/accordion/sc-accordion.module.mjs +0 -26
- package/esm2022/auth/enums/auth-method.mjs +0 -15
- package/esm2022/auth/index.mjs +0 -9
- package/esm2022/auth/interfaces/api-error-response.mjs +0 -2
- package/esm2022/auth/interfaces/index.mjs +0 -4
- package/esm2022/auth/interfaces/sc-bank-account-form-group.mjs +0 -2
- package/esm2022/auth/interfaces/sc-contact-form-group.mjs +0 -2
- package/esm2022/auth/sc-auth.module.mjs +0 -99
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +0 -93
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +0 -95
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +0 -89
- package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +0 -187
- package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +0 -333
- package/esm2022/banner/index.mjs +0 -3
- package/esm2022/banner/sc-banner.component.mjs +0 -144
- package/esm2022/banner/sc-banner.module.mjs +0 -30
- package/esm2022/brands-list/index.mjs +0 -3
- package/esm2022/brands-list/sc-brands-list.component.mjs +0 -24
- package/esm2022/brands-list/sc-brands-list.module.mjs +0 -22
- package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +0 -233
- package/esm2022/cart/add-or-editing-cart-item-dialog/index.mjs +0 -3
- package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +0 -74
- package/esm2022/cart/cart-item/sc-cart-item.component.mjs +0 -74
- package/esm2022/cart/index.mjs +0 -4
- package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +0 -110
- package/esm2022/catalog/category-card/sc-category-card.component.mjs +0 -102
- package/esm2022/catalog/cost-with-discount/cost-with-discount.component.mjs +0 -38
- package/esm2022/catalog/download-price-list/sc-download-price-list.component.mjs +0 -56
- package/esm2022/catalog/hover-image-carousel/sc-hover-image-carousel.component.mjs +0 -76
- package/esm2022/catalog/index.mjs +0 -13
- package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +0 -177
- package/esm2022/catalog/notify-when-in-stock-dialog/index.mjs +0 -3
- package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +0 -173
- package/esm2022/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.mjs +0 -35
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +0 -52
- package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +0 -56
- package/esm2022/catalog/price-history/sc-price-history.component.mjs +0 -140
- package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +0 -65
- package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +0 -54
- package/esm2022/catalog/sc-catalog.module.mjs +0 -125
- package/esm2022/catalog/sc-favorite-button/sc-favorite-button.component.mjs +0 -42
- package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +0 -91
- package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +0 -38
- package/esm2022/contacts/index.mjs +0 -8
- package/esm2022/contacts/manager-card/sc-manager-card.component.mjs +0 -58
- package/esm2022/contacts/manager-card-push/sc-manager-card-push.component.mjs +0 -28
- package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +0 -37
- package/esm2022/contacts/sc-contacts.module.mjs +0 -92
- package/esm2022/contacts/tokens/index.mjs +0 -3
- package/esm2022/contacts/tokens/sc-manager-qr-handler.token.mjs +0 -24
- package/esm2022/contacts/tokens/sc-show-help-notification-in-phone-input.token.mjs +0 -7
- package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +0 -81
- package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +0 -278
- package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +0 -75
- package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +0 -69
- package/esm2022/contragents/index.mjs +0 -8
- package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +0 -72
- package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +0 -242
- package/esm2022/contragents/sc-contragents.module.mjs +0 -118
- package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +0 -250
- package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +0 -60
- package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +0 -69
- package/esm2022/delivery-address/index.mjs +0 -5
- package/esm2022/delivery-address/sc-delivery-address.module.mjs +0 -99
- package/esm2022/dialogs/index.mjs +0 -2
- package/esm2022/dialogs/sc-resource-preview/sc-resource-preview.component.mjs +0 -68
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +0 -170
- package/esm2022/directives/index.mjs +0 -8
- package/esm2022/directives/links/index.mjs +0 -5
- package/esm2022/directives/links/sc-email-link.directive.mjs +0 -49
- package/esm2022/directives/links/sc-link-location.mjs +0 -2
- package/esm2022/directives/links/sc-links.mjs +0 -8
- package/esm2022/directives/links/sc-tel-link.directive.mjs +0 -79
- package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +0 -43
- package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +0 -19
- package/esm2022/directives/sc-date-value-transformer.directive.mjs +0 -30
- package/esm2022/directives/select-on-focusin/sc-select-on-focusin.directive.mjs +0 -31
- package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +0 -69
- package/esm2022/error-handler/consts/error-change-handler.providers.mjs +0 -8
- package/esm2022/error-handler/error-block-status/error-block-status.component.mjs +0 -88
- package/esm2022/error-handler/index.mjs +0 -5
- package/esm2022/error-handler/interfaces/i-block-error.mjs +0 -2
- package/esm2022/error-handler/sc-error-handler.component.mjs +0 -58
- package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +0 -344
- package/esm2022/feedback/gratitude/sc-gratitude.component.mjs +0 -32
- package/esm2022/feedback/index.mjs +0 -4
- package/esm2022/feedback/interfaces/index.mjs +0 -2
- package/esm2022/feedback/interfaces/sc-feedback-form-config.mjs +0 -2
- package/esm2022/files/directives/index.mjs +0 -3
- package/esm2022/files/directives/tree-top.directive.mjs +0 -63
- package/esm2022/files/directives/tree.directive.mjs +0 -47
- package/esm2022/files/file-tree-item/file-tree-item.component.mjs +0 -18
- package/esm2022/files/files-and-documents/files-and-documents.component.mjs +0 -61
- package/esm2022/files/files-and-documents.module.mjs +0 -28
- package/esm2022/files/index.mjs +0 -6
- package/esm2022/files/interfaces/tree-node.mjs +0 -2
- package/esm2022/files/services/index.mjs +0 -3
- package/esm2022/files/services/tree-icon.service.mjs +0 -49
- package/esm2022/files/services/tree-loader.service.mjs +0 -62
- package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +0 -155
- package/esm2022/form-fields/form-fields.module.mjs +0 -69
- package/esm2022/form-fields/index.mjs +0 -4
- package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +0 -175
- package/esm2022/helpers/index.mjs +0 -2
- package/esm2022/helpers/sc-px-converter.mjs +0 -27
- package/esm2022/icons/index.mjs +0 -2
- package/esm2022/icons/sc-client-ui-icons-name.mjs +0 -99
- package/esm2022/loader/index.mjs +0 -2
- package/esm2022/loader/sc-i-loader.mjs +0 -2
- package/esm2022/masks/index.mjs +0 -8
- package/esm2022/masks/sc-account-number-mask.mjs +0 -7
- package/esm2022/masks/sc-bic-mask.mjs +0 -7
- package/esm2022/masks/sc-correspondent-account-mask.mjs +0 -7
- package/esm2022/masks/sc-inn-mask.mjs +0 -13
- package/esm2022/masks/sc-kpp-mask.mjs +0 -7
- package/esm2022/masks/sc-okpo-mask.mjs +0 -13
- package/esm2022/masks/sc-phone-verification-code-mask.mjs +0 -7
- package/esm2022/models/i-sc-image.mjs +0 -2
- package/esm2022/models/index.mjs +0 -2
- package/esm2022/news/index.mjs +0 -4
- package/esm2022/news/news-card/sc-news-card.component.mjs +0 -34
- package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +0 -31
- package/esm2022/news/sc-news.module.mjs +0 -26
- package/esm2022/order/index.mjs +0 -4
- package/esm2022/order/order-item-mobile/sc-order-item-mobile.component.mjs +0 -60
- package/esm2022/order/sc-order.module.mjs +0 -53
- package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +0 -35
- package/esm2022/pages/frequently-asked-questions/sc-frequently-asked-questions.component.mjs +0 -49
- package/esm2022/pages/frequently-asked-questions/sc-page-size-options.mjs +0 -6
- package/esm2022/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.mjs +0 -59
- package/esm2022/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.mjs +0 -106
- package/esm2022/pages/index.mjs +0 -7
- package/esm2022/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.mjs +0 -46
- package/esm2022/pages/privacy-policy/sc-privacy-policy.component.mjs +0 -30
- package/esm2022/pages/public-offer/sc-public-offer.component.mjs +0 -50
- package/esm2022/pipes/index.mjs +0 -3
- package/esm2022/pipes/sc-format-date.mjs +0 -33
- package/esm2022/pipes/sc-phone-format.mjs +0 -44
- package/esm2022/profile/index.mjs +0 -3
- package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +0 -175
- package/esm2022/profile/sc-profile.module.mjs +0 -76
- package/esm2022/providers/date-value-transformer/index.mjs +0 -4
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-types.mjs +0 -2
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-end-time.mjs +0 -26
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-start-time.mjs +0 -37
- package/esm2022/providers/index.mjs +0 -13
- package/esm2022/providers/sc-allow-select-terminated.mjs +0 -6
- package/esm2022/providers/sc-banner-duration.mjs +0 -6
- package/esm2022/providers/sc-country-ids.mjs +0 -6
- package/esm2022/providers/sc-date-formatter.mjs +0 -12
- package/esm2022/providers/sc-date-value-transformer.mjs +0 -12
- package/esm2022/providers/sc-help-notification-close.mjs +0 -7
- package/esm2022/providers/sc-help-notification-limit.mjs +0 -6
- package/esm2022/providers/sc-max-files-in-form-input.mjs +0 -6
- package/esm2022/providers/sc-notify-when-in-stock-required-fields.mjs +0 -6
- package/esm2022/providers/sc-page-size-options.mjs +0 -6
- package/esm2022/providers/sc-user-providers.mjs +0 -33
- package/esm2022/providers/sc-verification-code-timeout.mjs +0 -6
- package/esm2022/public-api.mjs +0 -36
- package/esm2022/qrcode/index.mjs +0 -3
- package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +0 -58
- package/esm2022/qrcode/sc-qrcode.module.mjs +0 -25
- package/esm2022/samples/index.mjs +0 -5
- package/esm2022/samples/interfaces/index.mjs +0 -3
- package/esm2022/samples/interfaces/sc-i-preview-sample.mjs +0 -2
- package/esm2022/samples/interfaces/sc-preview-mosquito-config.mjs +0 -2
- package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +0 -42
- package/esm2022/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.mjs +0 -63
- package/esm2022/samples/sc-sample.module.mjs +0 -68
- package/esm2022/schemas/breadcrumb-list.interface.mjs +0 -2
- package/esm2022/schemas/index.mjs +0 -3
- package/esm2022/schemas/sc-json-ld-category/sc-json-ld-category.component.mjs +0 -192
- package/esm2022/services/index.mjs +0 -2
- package/esm2022/services/sc-help-notification.service.mjs +0 -90
- package/esm2022/share-button/index.mjs +0 -3
- package/esm2022/share-button/sc-share-button.component.mjs +0 -35
- package/esm2022/share-button/sc-share-button.module.mjs +0 -22
- package/esm2022/snabcentr-client-ui.mjs +0 -5
- package/esm2022/user/index.mjs +0 -6
- package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +0 -75
- package/esm2022/user/sc-user.module.mjs +0 -89
- package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +0 -122
- package/esm2022/user/user-managers/sc-user-managers.component.mjs +0 -42
- package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +0 -106
- package/esm2022/validators/index.mjs +0 -7
- package/esm2022/validators/sc-at-least-one-required-validator.mjs +0 -25
- package/esm2022/validators/sc-bic-validator.mjs +0 -10
- package/esm2022/validators/sc-correspondent-account-validator.mjs +0 -10
- package/esm2022/validators/sc-password-confirm-matching-validator.mjs +0 -17
- package/esm2022/validators/sc-phone-validator.mjs +0 -14
- package/esm2022/validators/step-validator.mjs +0 -18
- package/esm2022/verification/index.mjs +0 -4
- package/esm2022/verification/providers/index.mjs +0 -3
- package/esm2022/verification/providers/sc-phone-approve-code-sender.provider.mjs +0 -12
- package/esm2022/verification/providers/sc-phone-approve-code-sender.token.mjs +0 -7
- package/esm2022/verification/sc-verification.module.mjs +0 -88
- package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +0 -277
- package/feedback/feedback-form/sc-feedback-form.component.d.ts +0 -163
- package/feedback/gratitude/sc-gratitude.component.d.ts +0 -20
- package/feedback/index.d.ts +0 -3
- package/feedback/interfaces/index.d.ts +0 -1
- package/feedback/interfaces/sc-feedback-form-config.d.ts +0 -23
- package/files/directives/index.d.ts +0 -2
- package/files/directives/tree-top.directive.d.ts +0 -33
- package/files/directives/tree.directive.d.ts +0 -35
- package/files/file-tree-item/file-tree-item.component.d.ts +0 -9
- package/files/files-and-documents/files-and-documents.component.d.ts +0 -27
- package/files/files-and-documents.module.d.ts +0 -17
- package/files/index.d.ts +0 -5
- package/files/interfaces/tree-node.d.ts +0 -29
- package/files/services/index.d.ts +0 -2
- package/files/services/tree-icon.service.d.ts +0 -23
- package/files/services/tree-loader.service.d.ts +0 -43
- package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +0 -78
- package/form-fields/form-fields.module.d.ts +0 -19
- package/form-fields/index.d.ts +0 -3
- package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +0 -73
- package/helpers/index.d.ts +0 -1
- package/helpers/sc-px-converter.d.ts +0 -15
- package/icons/index.d.ts +0 -1
- package/icons/sc-client-ui-icons-name.d.ts +0 -4
- package/loader/index.d.ts +0 -1
- package/loader/sc-i-loader.d.ts +0 -9
- package/masks/index.d.ts +0 -7
- package/masks/sc-account-number-mask.d.ts +0 -5
- package/masks/sc-bic-mask.d.ts +0 -5
- package/masks/sc-correspondent-account-mask.d.ts +0 -5
- package/masks/sc-inn-mask.d.ts +0 -9
- package/masks/sc-kpp-mask.d.ts +0 -5
- package/masks/sc-okpo-mask.d.ts +0 -9
- package/masks/sc-phone-verification-code-mask.d.ts +0 -5
- package/models/i-sc-image.d.ts +0 -17
- package/models/index.d.ts +0 -1
- package/news/index.d.ts +0 -3
- package/news/news-card/sc-news-card.component.d.ts +0 -22
- package/news/news-card-skeleton/sc-news-card-skeleton.component.d.ts +0 -16
- package/news/sc-news.module.d.ts +0 -16
- package/order/index.d.ts +0 -3
- package/order/order-item-mobile/sc-order-item-mobile.component.d.ts +0 -39
- package/order/sc-order.module.d.ts +0 -19
- package/order/sc-payment-status/sc-payment-status.component.d.ts +0 -25
- package/pages/frequently-asked-questions/sc-frequently-asked-questions.component.d.ts +0 -22
- package/pages/frequently-asked-questions/sc-page-size-options.d.ts +0 -5
- package/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.d.ts +0 -28
- package/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.d.ts +0 -79
- package/pages/index.d.ts +0 -6
- package/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.d.ts +0 -17
- package/pages/privacy-policy/sc-privacy-policy.component.d.ts +0 -17
- package/pages/public-offer/sc-public-offer.component.d.ts +0 -22
- package/pipes/index.d.ts +0 -2
- package/pipes/sc-format-date.d.ts +0 -20
- package/pipes/sc-phone-format.d.ts +0 -21
- package/profile/index.d.ts +0 -2
- package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +0 -126
- package/profile/sc-profile.module.d.ts +0 -24
- package/providers/date-value-transformer/index.d.ts +0 -3
- package/providers/date-value-transformer/sc-date-value-transformer-types.d.ts +0 -9
- package/providers/date-value-transformer/sc-date-value-transformer-with-end-time.d.ts +0 -16
- package/providers/date-value-transformer/sc-date-value-transformer-with-start-time.d.ts +0 -22
- package/providers/index.d.ts +0 -12
- package/providers/sc-allow-select-terminated.d.ts +0 -5
- package/providers/sc-banner-duration.d.ts +0 -5
- package/providers/sc-country-ids.d.ts +0 -5
- package/providers/sc-date-formatter.d.ts +0 -6
- package/providers/sc-date-value-transformer.d.ts +0 -5
- package/providers/sc-help-notification-close.d.ts +0 -6
- package/providers/sc-help-notification-limit.d.ts +0 -5
- package/providers/sc-max-files-in-form-input.d.ts +0 -5
- package/providers/sc-notify-when-in-stock-required-fields.d.ts +0 -5
- package/providers/sc-page-size-options.d.ts +0 -5
- package/providers/sc-user-providers.d.ts +0 -21
- package/providers/sc-verification-code-timeout.d.ts +0 -5
- package/public-api.d.ts +0 -32
- package/qrcode/index.d.ts +0 -2
- package/qrcode/qrcode-dialog/sc-qrcode-dialog.component.d.ts +0 -37
- package/qrcode/sc-qrcode.module.d.ts +0 -14
- package/samples/index.d.ts +0 -4
- package/samples/interfaces/index.d.ts +0 -2
- package/samples/interfaces/sc-i-preview-sample.d.ts +0 -56
- package/samples/interfaces/sc-preview-mosquito-config.d.ts +0 -62
- package/samples/preview-sample/sc-preview-sample.component.d.ts +0 -30
- package/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.d.ts +0 -50
- package/samples/sc-sample.module.d.ts +0 -19
- package/schemas/breadcrumb-list.interface.d.ts +0 -38
- package/schemas/index.d.ts +0 -2
- package/schemas/sc-json-ld-category/sc-json-ld-category.component.d.ts +0 -63
- package/services/index.d.ts +0 -1
- package/services/sc-help-notification.service.d.ts +0 -64
- package/share-button/index.d.ts +0 -2
- package/share-button/sc-share-button.component.d.ts +0 -22
- package/share-button/sc-share-button.module.d.ts +0 -12
- package/user/index.d.ts +0 -5
- package/user/reset-user-password/sc-reset-user-password.component.d.ts +0 -46
- package/user/sc-user.module.d.ts +0 -25
- package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +0 -63
- package/user/user-managers/sc-user-managers.component.d.ts +0 -26
- package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +0 -53
- package/validators/index.d.ts +0 -6
- package/validators/sc-at-least-one-required-validator.d.ts +0 -10
- package/validators/sc-bic-validator.d.ts +0 -8
- package/validators/sc-correspondent-account-validator.d.ts +0 -8
- package/validators/sc-password-confirm-matching-validator.d.ts +0 -8
- package/validators/sc-phone-validator.d.ts +0 -5
- package/validators/step-validator.d.ts +0 -8
- package/verification/index.d.ts +0 -3
- package/verification/providers/index.d.ts +0 -2
- package/verification/providers/sc-phone-approve-code-sender.provider.d.ts +0 -6
- package/verification/providers/sc-phone-approve-code-sender.token.d.ts +0 -7
- package/verification/sc-verification.module.d.ts +0 -21
- package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +0 -149
package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */
|
|
2
|
-
import { HttpErrorResponse } from '@angular/common/http';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';
|
|
4
|
-
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
5
|
-
import { tuiIsFalsy } from '@taiga-ui/cdk';
|
|
6
|
-
import { catchError, filter, map, of, share, startWith, Subject, switchMap } from 'rxjs';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@snabcentr/client-core";
|
|
9
|
-
import * as i2 from "@angular/forms";
|
|
10
|
-
import * as i3 from "@taiga-ui/legacy";
|
|
11
|
-
import * as i4 from "@taiga-ui/legacy/components/primitive-textfield";
|
|
12
|
-
import * as i5 from "@taiga-ui/core";
|
|
13
|
-
import * as i6 from "@taiga-ui/kit";
|
|
14
|
-
import * as i7 from "@angular/common";
|
|
15
|
-
/**
|
|
16
|
-
* Компонент аутентификации по адресу электронной почты и паролю.
|
|
17
|
-
*/
|
|
18
|
-
export class ScSignInFormByEmailComponent {
|
|
19
|
-
/**
|
|
20
|
-
* Инициализирует экземпляр класса {@link ScSignInFormByEmailComponent}.
|
|
21
|
-
*
|
|
22
|
-
* @param authService Сервис аутентификации.
|
|
23
|
-
*/
|
|
24
|
-
constructor(authService) {
|
|
25
|
-
this.authService = authService;
|
|
26
|
-
/**
|
|
27
|
-
* Группа полей ввода для формы «Вход на сайт».
|
|
28
|
-
*/
|
|
29
|
-
this.formByEmail = new FormGroup({
|
|
30
|
-
username: new FormControl(null, [Validators.required, Validators.email]),
|
|
31
|
-
password: new FormControl(null, Validators.required),
|
|
32
|
-
});
|
|
33
|
-
/**
|
|
34
|
-
* {@link Subject} события отправки формы.
|
|
35
|
-
*/
|
|
36
|
-
this.onSubmit = new Subject();
|
|
37
|
-
/**
|
|
38
|
-
* {@link Observable} запроса данных аутентификации.
|
|
39
|
-
*/
|
|
40
|
-
this.emailRequest$ = this.onSubmit.pipe(filter(() => this.formByEmail.valid), map(() => this.formByEmail.value), switchMap((value) => this.authService.getSignIn$(value).pipe(
|
|
41
|
-
// eslint-disable-next-line sonarjs/cognitive-complexity
|
|
42
|
-
catchError((error) => {
|
|
43
|
-
if (error instanceof HttpErrorResponse) {
|
|
44
|
-
console.log(error);
|
|
45
|
-
if ('error' in error.error) {
|
|
46
|
-
const errorResponse = error.error;
|
|
47
|
-
if (errorResponse.error.includes('invalid_grant')) {
|
|
48
|
-
if (errorResponse.errorDescription?.toLocaleLowerCase().includes('invalid')) {
|
|
49
|
-
this.formByEmail.setErrors({ serverResponse: ['Неверный адрес электронной почты или пароль. Проверьте правильность ввода.'] });
|
|
50
|
-
}
|
|
51
|
-
if (errorResponse.errorDescription?.toLocaleLowerCase().includes('disabled')) {
|
|
52
|
-
this.formByEmail.setErrors({ serverResponse: ['Учетная запись заблокирована, свяжитесь с администратором.'] });
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
57
|
-
this.formByEmail.setErrors({ serverResponse: [errorResponse.errorDescription ?? errorResponse.error] });
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
const { errors, message } = error.error;
|
|
62
|
-
for (const key in errors) {
|
|
63
|
-
if (Object.hasOwn(errors, key)) {
|
|
64
|
-
// eslint-disable-next-line security/detect-object-injection
|
|
65
|
-
this.formByEmail.get(key)?.setErrors({ serverResponse: errors[key] });
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
if (!errors && message) {
|
|
69
|
-
this.formByEmail.setErrors({ serverResponse: [message] });
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return of({});
|
|
74
|
-
}), startWith(null))), share());
|
|
75
|
-
/**
|
|
76
|
-
* {@link Observable} изменения состояния загрузки данных аутентификации по email.
|
|
77
|
-
*/
|
|
78
|
-
this.loadingEmailAuth$ = this.emailRequest$.pipe(map(tuiIsFalsy));
|
|
79
|
-
/**
|
|
80
|
-
* Сигнал нажатия на кнопку "Забыли пароль".
|
|
81
|
-
*/
|
|
82
|
-
this.forgotPassword = new EventEmitter();
|
|
83
|
-
}
|
|
84
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormByEmailComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
85
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScSignInFormByEmailComponent, selector: "sc-sign-in-form-by-email", outputs: { forgotPassword: "forgotPassword" }, ngImport: i0, template: "<form\n [formGroup]=\"formByEmail\"\n (ngSubmit)=\"onSubmit.next()\"\n>\n <div class=\"mb-8 flex flex-col gap-4\">\n <label tuiLabel\n >\u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input formControlName=\"username\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <input\n tuiTextfieldLegacy\n autocomplete=\"email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"username\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel\n >\u041F\u0430\u0440\u043E\u043B\u044C\n <tui-input-password formControlName=\"password\">\n \u041F\u0430\u0440\u043E\u043B\u044C\n <input\n tuiTextfieldLegacy\n autocomplete=\"current-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"password\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"mb-4 flex flex-col items-center gap-4\">\n <a\n tuiLink\n [pseudo]=\"true\"\n (click)=\"forgotPassword.emit()\"\n class=\"text-base\"\n >\u0417\u0430\u0431\u044B\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C?</a\n >\n <button\n tuiButton\n type=\"submit\"\n [loading]=\"!!(loadingEmailAuth$ | async)\"\n [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\"\n iconStart=\"@tui.sc.circle-arrow-in-right\"\n >\n \u0412\u043E\u0439\u0442\u0438\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.TuiInputPasswordComponent, selector: "tui-input-password" }, { kind: "directive", type: i3.TuiInputPasswordDirective, selector: "tui-input-password" }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "input[tuiTextfieldLegacy], textarea[tuiTextfieldLegacy]" }, { kind: "component", type: i3.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i3.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: i5.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i5.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i5.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i5.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i6.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
86
|
-
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormByEmailComponent, decorators: [{
|
|
88
|
-
type: Component,
|
|
89
|
-
args: [{ selector: 'sc-sign-in-form-by-email', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"formByEmail\"\n (ngSubmit)=\"onSubmit.next()\"\n>\n <div class=\"mb-8 flex flex-col gap-4\">\n <label tuiLabel\n >\u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input formControlName=\"username\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <input\n tuiTextfieldLegacy\n autocomplete=\"email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"username\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel\n >\u041F\u0430\u0440\u043E\u043B\u044C\n <tui-input-password formControlName=\"password\">\n \u041F\u0430\u0440\u043E\u043B\u044C\n <input\n tuiTextfieldLegacy\n autocomplete=\"current-password\"\n />\n </tui-input-password>\n <tui-error\n formControlName=\"password\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"mb-4 flex flex-col items-center gap-4\">\n <a\n tuiLink\n [pseudo]=\"true\"\n (click)=\"forgotPassword.emit()\"\n class=\"text-base\"\n >\u0417\u0430\u0431\u044B\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C?</a\n >\n <button\n tuiButton\n type=\"submit\"\n [loading]=\"!!(loadingEmailAuth$ | async)\"\n [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\"\n iconStart=\"@tui.sc.circle-arrow-in-right\"\n >\n \u0412\u043E\u0439\u0442\u0438\n </button>\n </div>\n</form>\n" }]
|
|
90
|
-
}], ctorParameters: () => [{ type: i1.ScAuthService }], propDecorators: { forgotPassword: [{
|
|
91
|
-
type: Output
|
|
92
|
-
}] } });
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2lnbi1pbi1mb3JtLWJ5LWVtYWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9hdXRoL3NjLXNpZ24taW4tZm9ybS9zYy1zaWduLWluLWZvcm0tYnktZW1haWwvc2Mtc2lnbi1pbi1mb3JtLWJ5LWVtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9hdXRoL3NjLXNpZ24taW4tZm9ybS9zYy1zaWduLWluLWZvcm0tYnktZW1haWwvc2Mtc2lnbi1pbi1mb3JtLWJ5LWVtYWlsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUUzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBSXJHOztHQUVHO0FBTUgsTUFBTSxPQUFPLDRCQUE0QjtJQTJFckM7Ozs7T0FJRztJQUNILFlBQW9DLFdBQTBCO1FBQTFCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBL0U5RDs7V0FFRztRQUNhLGdCQUFXLEdBQWMsSUFBSSxTQUFTLENBQUM7WUFDbkQsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFnQixJQUFJLEVBQUUsQ0FBQyxVQUFV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QUNsQixDQUNKLEVBQ0QsS0FBSyxFQUFFLENBQ1YsQ0FBQztRQUVGOztXQUVHO1FBQ2Esc0JBQWlCLEdBQXdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRWxHOztXQUVHO1FBQ3VCLG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFPdkIsQ0FBQzsrR0FoRnpELDRCQUE0QjttR0FBNUIsNEJBQTRCLCtHQ25CekMsMmpFQXNEQTs7NEZEbkNhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDSSwwQkFBMEIsbUJBRW5CLHVCQUF1QixDQUFDLE1BQU07a0ZBMkVyQixjQUFjO3NCQUF2QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXgsQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kICovXG5cbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJQXV0aFRva2VuLCBJTG9naW4sIFNjQXV0aFNlcnZpY2UsIFNjSUtleWNsb2FrRXJyb3JSZXNwb25zZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgdHVpSXNGYWxzeSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzaGFyZSwgc3RhcnRXaXRoLCBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXBpLWVycm9yLXJlc3BvbnNlJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+INCw0LTRgNC10YHRgyDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0Ysg0Lgg0L/QsNGA0L7Qu9GOLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLXNpZ24taW4tZm9ybS1ieS1lbWFpbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXNpZ24taW4tZm9ybS1ieS1lbWFpbC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjU2lnbkluRm9ybUJ5RW1haWxDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INCy0LLQvtC00LAg0LTQu9GPINGE0L7RgNC80YsgwqvQktGF0L7QtCDQvdCwINGB0LDQudGCwrsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm1CeUVtYWlsOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgdXNlcm5hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF0pLFxuICAgICAgICBwYXNzd29yZDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb25TdWJtaXQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC00LDQvdC90YvRhSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZW1haWxSZXF1ZXN0JDogT2JzZXJ2YWJsZTxJQXV0aFRva2VuIHwgbnVsbD4gPSB0aGlzLm9uU3VibWl0LnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmZvcm1CeUVtYWlsLnZhbGlkKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuZm9ybUJ5RW1haWwudmFsdWUgYXMgSUxvZ2luKSxcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0U2lnbkluJCh2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9jb2duaXRpdmUtY29tcGxleGl0eVxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ2Vycm9yJyBpbiBlcnJvci5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yUmVzcG9uc2UgPSBlcnJvci5lcnJvciBhcyBTY0lLZXljbG9ha0Vycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JSZXNwb25zZS5lcnJvci5pbmNsdWRlcygnaW52YWxpZF9ncmFudCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvclJlc3BvbnNlLmVycm9yRGVzY3JpcHRpb24/LnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2ludmFsaWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQnlFbWFpbC5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogWyfQndC10LLQtdGA0L3Ri9C5INCw0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLINC40LvQuCDQv9Cw0YDQvtC70YwuINCf0YDQvtCy0LXRgNGM0YLQtSDQv9GA0LDQstC40LvRjNC90L7RgdGC0Ywg0LLQstC+0LTQsC4nXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvclJlc3BvbnNlLmVycm9yRGVzY3JpcHRpb24/LnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUJ5RW1haWwuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFsn0KPRh9C10YLQvdCw0Y8g0LfQsNC/0LjRgdGMINC30LDQsdC70L7QutC40YDQvtCy0LDQvdCwLCDRgdCy0Y/QttC40YLQtdGB0Ywg0YEg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDQvtC8LiddIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQnlFbWFpbC5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogW2Vycm9yUmVzcG9uc2UuZXJyb3JEZXNjcmlwdGlvbiA/PyBlcnJvclJlc3BvbnNlLmVycm9yXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzLCBtZXNzYWdlIH0gPSBlcnJvci5lcnJvciBhcyBBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duKGVycm9ycywga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1CeUVtYWlsLmdldChrZXkpPy5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JzW2tleV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9ycyAmJiBtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUJ5RW1haWwuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFttZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe30gYXMgSUF1dGhUb2tlbik7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+IGVtYWlsLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBsb2FkaW5nRW1haWxBdXRoJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuZW1haWxSZXF1ZXN0JC5waXBlKG1hcCh0dWlJc0ZhbHN5KSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LPQvdCw0Lsg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMgXCLQl9Cw0LHRi9C70Lgg0L/QsNGA0L7Qu9GMXCIuXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBmb3Jnb3RQYXNzd29yZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1NpZ25JbkZvcm1CeUVtYWlsQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhdXRoU2VydmljZSDQodC10YDQstC40YEg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogU2NBdXRoU2VydmljZSkge31cbn1cbiIsIjxmb3JtXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtQnlFbWFpbFwiXG4gICAgKG5nU3VibWl0KT1cIm9uU3VibWl0Lm5leHQoKVwiXG4+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTggZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxuICAgICAgICA8bGFiZWwgdHVpTGFiZWxcbiAgICAgICAgICAgID7QkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1xuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ1c2VybmFtZVwiPlxuICAgICAgICAgICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZExlZ2FjeVxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInVzZXJuYW1lXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgPjwvdHVpLWVycm9yPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bGFiZWwgdHVpTGFiZWxcbiAgICAgICAgICAgID7Qn9Cw0YDQvtC70YxcbiAgICAgICAgICAgIDx0dWktaW5wdXQtcGFzc3dvcmQgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIj5cbiAgICAgICAgICAgICAgICDQn9Cw0YDQvtC70YxcbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkTGVnYWN5XG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cImN1cnJlbnQtcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS1pbnB1dC1wYXNzd29yZD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgID48L3R1aS1lcnJvcj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPHR1aS1lcnJvciBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIj48L3R1aS1lcnJvcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWItNCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICA8YVxuICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmb3Jnb3RQYXNzd29yZC5lbWl0KClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgPtCX0LDQsdGL0LvQuCDQv9Cw0YDQvtC70Yw/PC9hXG4gICAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cIiEhKGxvYWRpbmdFbWFpbEF1dGgkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtQnlFbWFpbC5pbnZhbGlkIHx8ICEhKGxvYWRpbmdFbWFpbEF1dGgkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuc2MuY2lyY2xlLWFycm93LWluLXJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0JLQvtC50YLQuFxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */
|
|
2
|
-
import { HttpErrorResponse } from '@angular/common/http';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
4
|
-
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
5
|
-
import { tuiIsFalsy } from '@taiga-ui/cdk';
|
|
6
|
-
import { catchError, filter, map, of, share, startWith, Subject, switchMap } from 'rxjs';
|
|
7
|
-
import { ScHelpNotificationService } from '../../../services';
|
|
8
|
-
import { phoneValidator } from '../../../validators/sc-phone-validator';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@snabcentr/client-core";
|
|
11
|
-
import * as i2 from "@angular/common";
|
|
12
|
-
import * as i3 from "@angular/forms";
|
|
13
|
-
import * as i4 from "@taiga-ui/core";
|
|
14
|
-
import * as i5 from "@taiga-ui/cdk";
|
|
15
|
-
import * as i6 from "../../../verification/verification-phone-check-form/sc-verification-phone-check-form.component";
|
|
16
|
-
import * as i7 from "@taiga-ui/kit";
|
|
17
|
-
/**
|
|
18
|
-
* Компонент аутентификации по номеру телефона и коду подтверждения.
|
|
19
|
-
*/
|
|
20
|
-
export class ScSignInFormByPhoneComponent {
|
|
21
|
-
/**
|
|
22
|
-
* Инициализирует экземпляр класса {@link ScSignInFormByPhoneComponent}.
|
|
23
|
-
*
|
|
24
|
-
* @param authService Сервис аутентификации.
|
|
25
|
-
*/
|
|
26
|
-
constructor(authService) {
|
|
27
|
-
this.authService = authService;
|
|
28
|
-
/**
|
|
29
|
-
* Наличие кода подтверждения у пользователя.
|
|
30
|
-
*/
|
|
31
|
-
this.haveCode = false;
|
|
32
|
-
/**
|
|
33
|
-
* Группа полей ввода для формы «Вход на сайт».
|
|
34
|
-
*/
|
|
35
|
-
this.form = new FormGroup({
|
|
36
|
-
phone: new FormControl(null, [Validators.required, phoneValidator()]),
|
|
37
|
-
verificationCode: new FormControl(null, [Validators.required, Validators.minLength(6)]),
|
|
38
|
-
});
|
|
39
|
-
/**
|
|
40
|
-
* {@link Subject} события отправки формы.
|
|
41
|
-
*/
|
|
42
|
-
this.onSubmit = new Subject();
|
|
43
|
-
/**
|
|
44
|
-
* Сервис для отображения Push-уведомлений с контактами для помощи клиенту.
|
|
45
|
-
*/
|
|
46
|
-
this.helpNotificationService = inject(ScHelpNotificationService);
|
|
47
|
-
/**
|
|
48
|
-
* {@link Observable} запроса данных аутентификации.
|
|
49
|
-
*/
|
|
50
|
-
this.request$ = this.onSubmit.pipe(map(() => this.form.value), filter((value) => this.form.valid), switchMap((value) => this.authService.getSignIn$(value).pipe(
|
|
51
|
-
// eslint-disable-next-line sonarjs/cognitive-complexity
|
|
52
|
-
catchError((error) => {
|
|
53
|
-
if (error instanceof HttpErrorResponse) {
|
|
54
|
-
if ('error' in error.error) {
|
|
55
|
-
const errorResponse = error.error;
|
|
56
|
-
if (errorResponse.error.includes('invalid_credentials') && errorResponse.errorDescription?.toLocaleLowerCase().includes('invalid')) {
|
|
57
|
-
this.form.get('verificationCode')?.setErrors({ serverResponse: ['Неверный СМС-код подтверждения.'] });
|
|
58
|
-
}
|
|
59
|
-
else if (errorResponse.error.includes('invalid_grant') && errorResponse.errorDescription?.toLocaleLowerCase().includes('disabled')) {
|
|
60
|
-
this.form.setErrors({ serverResponse: ['Учетная запись заблокирована, свяжитесь с администратором.'] });
|
|
61
|
-
this.helpNotificationService.helpNotificationByPhone(value.phone);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
65
|
-
this.form.setErrors({ serverResponse: [errorResponse.errorDescription ?? errorResponse.error] });
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
const { errors, message } = error.error;
|
|
70
|
-
for (const key in errors) {
|
|
71
|
-
if (Object.hasOwn(errors, key)) {
|
|
72
|
-
// eslint-disable-next-line security/detect-object-injection
|
|
73
|
-
this.form.get(key)?.setErrors({ serverResponse: errors[key] });
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
if (!errors && message) {
|
|
77
|
-
this.form.setErrors({ serverResponse: [message] });
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
return of({});
|
|
82
|
-
}), startWith(null))), share());
|
|
83
|
-
/**
|
|
84
|
-
* {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.
|
|
85
|
-
*/
|
|
86
|
-
this.loading$ = this.request$.pipe(map(tuiIsFalsy));
|
|
87
|
-
}
|
|
88
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormByPhoneComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScSignInFormByPhoneComponent, selector: "sc-sign-in-form-by-phone", ngImport: i0, template: "<form\n [formGroup]=\"form\"\n *tuiLet=\"!!(loading$ | async) as loading\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"mb-4 flex flex-col items-center gap-4\"\n>\n <sc-verification-phone-check-form\n [(haveCode)]=\"haveCode\"\n [shouldBeBusy]=\"true\"\n [shouldBeConfirmed]=\"true\"\n class=\"w-full\"\n />\n <tui-error\n [error]=\"[] | tuiFieldError | async\"\n class=\"self-center\"\n />\n <button\n *ngIf=\"haveCode\"\n tuiButton\n type=\"submit\"\n [loading]=\"loading\"\n [disabled]=\"form.invalid || loading\"\n iconStart=\"@tui.sc.circle-arrow-in-right\"\n >\n \u0412\u043E\u0439\u0442\u0438\n </button>\n</form>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "directive", type: i5.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i6.ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: ["showCodeFields", "readOnly", "pseudoInvalid", "required", "subtitle", "shouldBeBusy", "shouldBeConfirmed", "haveCode"], outputs: ["haveCodeChange", "isBusyChange", "isConfirmedChange"] }, { kind: "component", type: i7.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
90
|
-
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormByPhoneComponent, decorators: [{
|
|
92
|
-
type: Component,
|
|
93
|
-
args: [{ selector: 'sc-sign-in-form-by-phone', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"form\"\n *tuiLet=\"!!(loading$ | async) as loading\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"mb-4 flex flex-col items-center gap-4\"\n>\n <sc-verification-phone-check-form\n [(haveCode)]=\"haveCode\"\n [shouldBeBusy]=\"true\"\n [shouldBeConfirmed]=\"true\"\n class=\"w-full\"\n />\n <tui-error\n [error]=\"[] | tuiFieldError | async\"\n class=\"self-center\"\n />\n <button\n *ngIf=\"haveCode\"\n tuiButton\n type=\"submit\"\n [loading]=\"loading\"\n [disabled]=\"form.invalid || loading\"\n iconStart=\"@tui.sc.circle-arrow-in-right\"\n >\n \u0412\u043E\u0439\u0442\u0438\n </button>\n</form>\n" }]
|
|
94
|
-
}], ctorParameters: () => [{ type: i1.ScAuthService }] });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2lnbi1pbi1mb3JtLWJ5LXBob25lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9hdXRoL3NjLXNpZ24taW4tZm9ybS9zYy1zaWduLWluLWZvcm0tYnktcGhvbmUvc2Mtc2lnbi1pbi1mb3JtLWJ5LXBob25lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9hdXRoL3NjLXNpZ24taW4tZm9ybS9zYy1zaWduLWluLWZvcm0tYnktcGhvbmUvc2Mtc2lnbi1pbi1mb3JtLWJ5LXBob25lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUEyRTtBQUUzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7O0FBR3hFOztHQUVHO0FBTUgsTUFBTSxPQUFPLDRCQUE0QjtJQTRFckM7Ozs7T0FJRztJQUNILFlBQW9DLFdBQTBCO1FBQTFCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBaEY5RDs7V0FFRztRQUNJ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LE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ25FLENBQUM7b0JBQ0wsQ0FBQztvQkFFRCxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO3dCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDdkQsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sRUFBRSxDQUFDLEVBQWdCLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLENBQ2xCLENBQ0osRUFDRCxLQUFLLEVBQUUsQ0FDVixDQUFDO1FBRUY7O1dBRUc7UUFDYSxhQUFRLEdBQXdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBT25CLENBQUM7K0dBakZ6RCw0QkFBNEI7bUdBQTVCLDRCQUE0QixnRUNyQnpDLDB1QkEyQkE7OzRGRE5hLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDSSwwQkFBMEIsbUJBRW5CLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCxAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QgKi9cblxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJQXV0aFRva2VuLCBJUGhvbmVMb2dpbiwgU2NBdXRoU2VydmljZSwgU2NJS2V5Y2xvYWtFcnJvclJlc3BvbnNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlJc0ZhbHN5IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0hlbHBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgcGhvbmVWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi8uLi92YWxpZGF0b3JzL3NjLXBob25lLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBBcGlFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9hcGktZXJyb3ItcmVzcG9uc2UnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L4g0L3QvtC80LXRgNGDINGC0LXQu9C10YTQvtC90LAg0Lgg0LrQvtC00YMg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2Mtc2lnbi1pbi1mb3JtLWJ5LXBob25lJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2Mtc2lnbi1pbi1mb3JtLWJ5LXBob25lLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NTaWduSW5Gb3JtQnlQaG9uZUNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0J3QsNC70LjRh9C40LUg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0YMg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXZlQ29kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDQtNC70Y8g0YTQvtGA0LzRiyDCq9CS0YXQvtC0INC90LAg0YHQsNC50YLCuy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBwaG9uZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBwaG9uZVZhbGlkYXRvcigpXSksXG4gICAgICAgIHZlcmlmaWNhdGlvbkNvZGU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoNildKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQvtGC0L/RgNCw0LLQutC4INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG9uU3VibWl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyBQdXNoLdGD0LLQtdC00L7QvNC70LXQvdC40Lkg0YEg0LrQvtC90YLQsNC60YLQsNC80Lgg0LTQu9GPINC/0L7QvNC+0YnQuCDQutC70LjQtdC90YLRgy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhlbHBOb3RpZmljYXRpb25TZXJ2aWNlOiBTY0hlbHBOb3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KFNjSGVscE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC00LDQvdC90YvRhSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCQ6IE9ic2VydmFibGU8SUF1dGhUb2tlbiB8IG51bGw+ID0gdGhpcy5vblN1Ym1pdC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtLnZhbHVlKSxcbiAgICAgICAgZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIElQaG9uZUxvZ2luID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFNpZ25JbiQodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvY29nbml0aXZlLWNvbXBsZXhpdHlcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdlcnJvcicgaW4gZXJyb3IuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvclJlc3BvbnNlID0gZXJyb3IuZXJyb3IgYXMgU2NJS2V5Y2xvYWtFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yUmVzcG9uc2UuZXJyb3IuaW5jbHVkZXMoJ2ludmFsaWRfY3JlZGVudGlhbHMnKSAmJiBlcnJvclJlc3BvbnNlLmVycm9yRGVzY3JpcHRpb24/LnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2ludmFsaWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCd2ZXJpZmljYXRpb25Db2RlJyk/LnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbJ9Cd0LXQstC10YDQvdGL0Lkg0KHQnNChLdC60L7QtCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy4nXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yUmVzcG9uc2UuZXJyb3IuaW5jbHVkZXMoJ2ludmFsaWRfZ3JhbnQnKSAmJiBlcnJvclJlc3BvbnNlLmVycm9yRGVzY3JpcHRpb24/LnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2Rpc2FibGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbJ9Cj0YfQtdGC0L3QsNGPINC30LDQv9C40YHRjCDQt9Cw0LHQu9C+0LrQuNGA0L7QstCw0L3QsCwg0YHQstGP0LbQuNGC0LXRgdGMINGBINCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0L7QvC4nXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWxwTm90aWZpY2F0aW9uU2VydmljZS5oZWxwTm90aWZpY2F0aW9uQnlQaG9uZSh2YWx1ZS5waG9uZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbZXJyb3JSZXNwb25zZS5lcnJvckRlc2NyaXB0aW9uID8/IGVycm9yUmVzcG9uc2UuZXJyb3JdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5oYXNPd24oZXJyb3JzLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yc1trZXldIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnJvcnMgJiYgbWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFttZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe30gYXMgSUF1dGhUb2tlbik7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQv9C+INC90L7QvNC10YDRgyDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucmVxdWVzdCQucGlwZShtYXAodHVpSXNGYWxzeSkpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1NpZ25JbkZvcm1CeVBob25lQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhdXRoU2VydmljZSDQodC10YDQstC40YEg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogU2NBdXRoU2VydmljZSkge31cbn1cbiIsIjxmb3JtXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAqdHVpTGV0PVwiISEobG9hZGluZyQgfCBhc3luYykgYXMgbG9hZGluZ1wiXG4gICAgKG5nU3VibWl0KT1cIm9uU3VibWl0Lm5leHQoKVwiXG4gICAgY2xhc3M9XCJtYi00IGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC00XCJcbj5cbiAgICA8c2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm1cbiAgICAgICAgWyhoYXZlQ29kZSldPVwiaGF2ZUNvZGVcIlxuICAgICAgICBbc2hvdWxkQmVCdXN5XT1cInRydWVcIlxuICAgICAgICBbc2hvdWxkQmVDb25maXJtZWRdPVwidHJ1ZVwiXG4gICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAvPlxuICAgIDx0dWktZXJyb3JcbiAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgLz5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiaGF2ZUNvZGVcIlxuICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGxvYWRpbmdcIlxuICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNjLmNpcmNsZS1hcnJvdy1pbi1yaWdodFwiXG4gICAgPlxuICAgICAgICDQktC+0LnRgtC4XG4gICAgPC9idXR0b24+XG48L2Zvcm0+XG4iXX0=
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { ScUserMetrikaGoalsEnum } from '@snabcentr/client-core';
|
|
3
|
-
import { filter } from 'rxjs';
|
|
4
|
-
import { AuthMethod } from '../enums/auth-method';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@snabcentr/client-core";
|
|
7
|
-
import * as i2 from "@angular/common";
|
|
8
|
-
import * as i3 from "@taiga-ui/core";
|
|
9
|
-
import * as i4 from "./sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component";
|
|
10
|
-
import * as i5 from "./sc-sign-in-form-by-email/sc-sign-in-form-by-email.component";
|
|
11
|
-
/**
|
|
12
|
-
* Компонент аутентификации пользователя.
|
|
13
|
-
*/
|
|
14
|
-
export class ScSignInFormComponent {
|
|
15
|
-
/**
|
|
16
|
-
* Инициализирует экземпляр класса {@link ScSignInFormComponent}.
|
|
17
|
-
*
|
|
18
|
-
* @param authService Сервис аутентификации.
|
|
19
|
-
* @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
|
|
20
|
-
*/
|
|
21
|
-
constructor(authService, userMetrikaService) {
|
|
22
|
-
this.authService = authService;
|
|
23
|
-
this.userMetrikaService = userMetrikaService;
|
|
24
|
-
/**
|
|
25
|
-
* Выбранный способ аутентификации.
|
|
26
|
-
*/
|
|
27
|
-
this.authMethod = AuthMethod.byEmail;
|
|
28
|
-
/**
|
|
29
|
-
* Перечисление способов аутентификации.
|
|
30
|
-
*/
|
|
31
|
-
this.method = AuthMethod;
|
|
32
|
-
/**
|
|
33
|
-
* Сигнал нажатия на кнопку "Забыли пароль".
|
|
34
|
-
*/
|
|
35
|
-
this.forgotPassword = new EventEmitter();
|
|
36
|
-
/**
|
|
37
|
-
* Сигнал нажатия на кнопку "Зарегистрироваться".
|
|
38
|
-
*/
|
|
39
|
-
this.signUp = new EventEmitter();
|
|
40
|
-
/**
|
|
41
|
-
* Сигнал события аутентификации.
|
|
42
|
-
*/
|
|
43
|
-
this.successAuth = this.authService.getAuthChange().pipe(filter((state) => state));
|
|
44
|
-
}
|
|
45
|
-
/** @inheritDoc */
|
|
46
|
-
ngOnInit() {
|
|
47
|
-
this.userMetrikaService.emitUserMetrikaEvent({
|
|
48
|
-
target: ScUserMetrikaGoalsEnum.signInShow,
|
|
49
|
-
params: {
|
|
50
|
-
type: this.authMethod,
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Осуществляет переключение способов аутентификации.
|
|
56
|
-
*
|
|
57
|
-
* @param authMethod Выбранный способ аутентификации.
|
|
58
|
-
*/
|
|
59
|
-
switchAuth(authMethod) {
|
|
60
|
-
this.authMethod = authMethod;
|
|
61
|
-
this.userMetrikaService.emitUserMetrikaEvent({
|
|
62
|
-
target: ScUserMetrikaGoalsEnum.signInShow,
|
|
63
|
-
params: {
|
|
64
|
-
type: authMethod,
|
|
65
|
-
},
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Обрабатывает нажатие на кнопку "Забыли пароль" и выдает сигнал об этом.
|
|
70
|
-
*/
|
|
71
|
-
onForgotPassword() {
|
|
72
|
-
this.forgotPassword.emit();
|
|
73
|
-
}
|
|
74
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormComponent, deps: [{ token: i1.ScAuthService }, { token: i1.ScUserMetrikaService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScSignInFormComponent, selector: "sc-sign-in-form", inputs: { authMethod: "authMethod" }, outputs: { forgotPassword: "forgotPassword", signUp: "signUp", successAuth: "successAuth" }, host: { attributes: { "ngSkipHydration": "true" } }, ngImport: i0, template: "<div class=\"mb-4 flex justify-center\">\n <button\n tuiButton\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443\n </button>\n\n <button\n tuiButton\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email\n *ngIf=\"authMethod === 'by_email'\"\n (forgotPassword)=\"onForgotPassword()\"\n></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col items-center gap-4\">\n <span class=\"font-medium text-tui-text-02\">\u0415\u0449\u0435 \u043D\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u044B?</span>\n <button\n tuiButton\n (click)=\"signUp.emit()\"\n type=\"button\"\n iconStart=\"@tui.user-plus\"\n appearance=\"secondary\"\n >\n \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.ScSignInFormByPhoneComponent, selector: "sc-sign-in-form-by-phone" }, { kind: "component", type: i5.ScSignInFormByEmailComponent, selector: "sc-sign-in-form-by-email", outputs: ["forgotPassword"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
76
|
-
}
|
|
77
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScSignInFormComponent, decorators: [{
|
|
78
|
-
type: Component,
|
|
79
|
-
args: [{ selector: 'sc-sign-in-form', host: { ngSkipHydration: 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-4 flex justify-center\">\n <button\n tuiButton\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443\n </button>\n\n <button\n tuiButton\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email\n *ngIf=\"authMethod === 'by_email'\"\n (forgotPassword)=\"onForgotPassword()\"\n></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col items-center gap-4\">\n <span class=\"font-medium text-tui-text-02\">\u0415\u0449\u0435 \u043D\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u044B?</span>\n <button\n tuiButton\n (click)=\"signUp.emit()\"\n type=\"button\"\n iconStart=\"@tui.user-plus\"\n appearance=\"secondary\"\n >\n \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F\n </button>\n</div>\n" }]
|
|
80
|
-
}], ctorParameters: () => [{ type: i1.ScAuthService }, { type: i1.ScUserMetrikaService }], propDecorators: { authMethod: [{
|
|
81
|
-
type: Input
|
|
82
|
-
}], forgotPassword: [{
|
|
83
|
-
type: Output
|
|
84
|
-
}], signUp: [{
|
|
85
|
-
type: Output
|
|
86
|
-
}], successAuth: [{
|
|
87
|
-
type: Output
|
|
88
|
-
}] } });
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtc2lnbi1pbi1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9hdXRoL3NjLXNpZ24taW4tZm9ybS9zYy1zaWduLWluLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2F1dGgvc2Mtc2lnbi1pbi1mb3JtL3NjLXNpZ24taW4tZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBaUIsc0JBQXNCLEVBQXdCLE1BQU0sd0JBQXdCLENBQUM7QUFDckcsT0FBTyxFQUFFLE1BQU0sRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFFbEQ7O0dBRUc7QUFPSCxNQUFNLE9BQU8scUJBQXFCO0lBMEI5Qjs7Ozs7T0FLRztJQUNILFlBQ3FCLFdBQTBCLEVBQzFCLGtCQUF3QztRQUR4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBakM3RDs7V0FFRztRQUNhLGVBQVUsR0FBZSxVQUFVLENBQUMsT0FBTyxDQUFDO1FBRTVEOztXQUVHO1FBQ0ksV0FBTSxHQUFzQixVQUFVLENBQUM7UUFFOUM7O1dBRUc7UUFDdUIsbUJBQWMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV4Rjs7V0FFRztRQUN1QixXQUFNLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFaEY7O1dBRUc7UUFDdUIsZ0JBQVcsR0FBd0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBVzFILENBQUM7SUFFSixrQkFBa0I7SUFDWCxRQUFRO1FBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDO1lBQ3pDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxVQUFVO1lBQ3pDLE1BQU0sRUFBRTtnQkFDSixJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDeEI7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxVQUFzQjtRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUU3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7WUFDekMsTUFBTSxFQUFFLHNCQUFzQixDQUFDLFVBQVU7WUFDekMsTUFBTSxFQUFFO2dCQUNKLElBQUksRUFBRSxVQUFVO2FBQ25CO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQzsrR0FwRVEscUJBQXFCO21HQUFyQixxQkFBcUIsK09DZmxDLHE2Q0F1Q0E7OzRGRHhCYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0ksaUJBQWlCLFFBRXJCLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxtQkFDaEIsdUJBQXVCLENBQUMsTUFBTTtxSEFNL0IsVUFBVTtzQkFBekIsS0FBSztnQkFVb0IsY0FBYztzQkFBdkMsTUFBTTtnQkFLbUIsTUFBTTtzQkFBL0IsTUFBTTtnQkFLbUIsV0FBVztzQkFBcEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY0F1dGhTZXJ2aWNlLCBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEF1dGhNZXRob2QgfSBmcm9tICcuLi9lbnVtcy9hdXRoLW1ldGhvZCc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLXNpZ24taW4tZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXNpZ24taW4tZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDogeyBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1NpZ25JbkZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCS0YvQsdGA0LDQvdC90YvQuSDRgdC/0L7RgdC+0LEg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0aE1ldGhvZDogQXV0aE1ldGhvZCA9IEF1dGhNZXRob2QuYnlFbWFpbDtcblxuICAgIC8qKlxuICAgICAqINCf0LXRgNC10YfQuNGB0LvQtdC90LjQtSDRgdC/0L7RgdC+0LHQvtCyINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIG1ldGhvZDogdHlwZW9mIEF1dGhNZXRob2QgPSBBdXRoTWV0aG9kO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNCz0L3QsNC7INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDIFwi0JfQsNCx0YvQu9C4INC/0LDRgNC+0LvRjFwiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgZm9yZ290UGFzc3dvcmQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0LjQs9C90LDQuyDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCX0LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDRgtGM0YHRj1wiLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2lnblVwOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LPQvdCw0Lsg0YHQvtCx0YvRgtC40Y8g0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHN1Y2Nlc3NBdXRoOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hdXRoU2VydmljZS5nZXRBdXRoQ2hhbmdlKCkucGlwZShmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZSkpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1NpZ25JbkZvcm1Db21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGF1dGhTZXJ2aWNlINCh0LXRgNCy0LjRgSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4LlxuICAgICAqIEBwYXJhbSB1c2VyTWV0cmlrYVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBTY0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2VcbiAgICApIHt9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5zaWduSW5TaG93LFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogdGhpcy5hdXRoTWV0aG9kLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7RgdGD0YnQtdGB0YLQstC70Y/QtdGCINC/0LXRgNC10LrQu9GO0YfQtdC90LjQtSDRgdC/0L7RgdC+0LHQvtCyINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXV0aE1ldGhvZCDQktGL0LHRgNCw0L3QvdGL0Lkg0YHQv9C+0YHQvtCxINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHN3aXRjaEF1dGgoYXV0aE1ldGhvZDogQXV0aE1ldGhvZCk6IHZvaWQge1xuICAgICAgICB0aGlzLmF1dGhNZXRob2QgPSBhdXRoTWV0aG9kO1xuXG4gICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgIHRhcmdldDogU2NVc2VyTWV0cmlrYUdvYWxzRW51bS5zaWduSW5TaG93LFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogYXV0aE1ldGhvZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQsNGC0YvQstCw0LXRgiDQvdCw0LbQsNGC0LjQtSDQvdCwINC60L3QvtC/0LrRgyBcItCX0LDQsdGL0LvQuCDQv9Cw0YDQvtC70YxcIiDQuCDQstGL0LTQsNC10YIg0YHQuNCz0L3QsNC7INC+0LEg0Y3RgtC+0LwuXG4gICAgICovXG4gICAgcHVibGljIG9uRm9yZ290UGFzc3dvcmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9yZ290UGFzc3dvcmQuZW1pdCgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYi00IGZsZXgganVzdGlmeS1jZW50ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR1aUJ1dHRvblxuICAgICAgICBbYXBwZWFyYW5jZV09XCJhdXRoTWV0aG9kID09PSAnYnlfcGhvbmUnID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSdcIlxuICAgICAgICAoY2xpY2spPVwic3dpdGNoQXV0aChtZXRob2QuYnlQaG9uZSlcIlxuICAgICAgICBjbGFzcz1cInR1aS1zcGFjZV9yaWdodC0zIHR1aS1zcGFjZV9ib3R0b20tMyAhZm9udC1ib2xkXCJcbiAgICA+XG4gICAgICAgINCf0L4g0YLQtdC70LXRhNC+0L3Rg1xuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgW2FwcGVhcmFuY2VdPVwiYXV0aE1ldGhvZCA9PT0gJ2J5X2VtYWlsJyA/ICdwcmltYXJ5JyA6ICdzZWNvbmRhcnknXCJcbiAgICAgICAgKGNsaWNrKT1cInN3aXRjaEF1dGgobWV0aG9kLmJ5RW1haWwpXCJcbiAgICAgICAgY2xhc3M9XCJ0dWktc3BhY2VfbGVmdC0zIHR1aS1zcGFjZV9ib3R0b20tMyAhZm9udC1ib2xkXCJcbiAgICA+XG4gICAgICAgINCf0L4gZS1tYWlsXG4gICAgPC9idXR0b24+XG48L2Rpdj5cblxuPHNjLXNpZ24taW4tZm9ybS1ieS1lbWFpbFxuICAgICpuZ0lmPVwiYXV0aE1ldGhvZCA9PT0gJ2J5X2VtYWlsJ1wiXG4gICAgKGZvcmdvdFBhc3N3b3JkKT1cIm9uRm9yZ290UGFzc3dvcmQoKVwiXG4+PC9zYy1zaWduLWluLWZvcm0tYnktZW1haWw+XG5cbjxzYy1zaWduLWluLWZvcm0tYnktcGhvbmUgW2NsYXNzLmhpZGRlbl09XCJhdXRoTWV0aG9kICE9PSAnYnlfcGhvbmUnXCI+PC9zYy1zaWduLWluLWZvcm0tYnktcGhvbmU+XG5cbjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC10dWktdGV4dC0wMlwiPtCV0YnQtSDQvdC1INC30LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDQvdGLPzwvc3Bhbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR1aUJ1dHRvblxuICAgICAgICAoY2xpY2spPVwic2lnblVwLmVtaXQoKVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnVzZXItcGx1c1wiXG4gICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgID5cbiAgICAgICAg0JfQsNGA0LXQs9C40YHRgtGA0LjRgNC+0LLQsNGC0YzRgdGPXG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|