@snabcentr/client-ui 3.37.7 → 4.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 +3524 -3958
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/index.d.ts +4298 -3
- package/package.json +1 -3
- package/release_notes.tmp +2 -5
- package/styles/tailwind/tailwind.scss +0 -176
- 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 -41
- 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 -37
- 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 -87
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +0 -86
- 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 -143
- 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 -76
- 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 -336
- 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 -28
- 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 -4
- 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 -12
- package/esm2022/providers/sc-allow-select-terminated.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 -35
- 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/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 -159
- 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 -18
- 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 -3
- 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 -11
- package/providers/sc-allow-select-terminated.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 -31
- 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/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
@@ -1,277 +0,0 @@
|
|
1
|
-
/* eslint-disable no-underscore-dangle,lodash/prefer-constant */
|
2
|
-
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
|
3
|
-
import { ChangeDetectionStrategy, Component, inject, Input, input, model, output } from '@angular/core';
|
4
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
5
|
-
import { FormGroupDirective } from '@angular/forms';
|
6
|
-
import { ScVerificationService } from '@snabcentr/client-core';
|
7
|
-
import { tuiControlValue } from '@taiga-ui/cdk';
|
8
|
-
import { getCountries } from 'libphonenumber-js';
|
9
|
-
import { isNil } from 'lodash-es';
|
10
|
-
import { catchError, distinctUntilChanged, endWith, filter, finalize, map, of, scan, share, shareReplay, startWith, Subject, switchMap, takeWhile, tap, timer, } from 'rxjs';
|
11
|
-
import { SC_SHOW_HELP_NOTIFICATION_IN_PHONE_INPUT } from '../../contacts/tokens/sc-show-help-notification-in-phone-input.token';
|
12
|
-
import { scPhoneVerificationCodeMask } from '../../masks';
|
13
|
-
import { SC_VERIFICATION_CODE_TIMEOUT } from '../../providers/sc-verification-code-timeout';
|
14
|
-
import { ScHelpNotificationService } from '../../services';
|
15
|
-
import { SC_PHONE_APPROVE_CODE_SENDER } from '../providers';
|
16
|
-
import * as i0 from "@angular/core";
|
17
|
-
import * as i1 from "@angular/common";
|
18
|
-
import * as i2 from "@angular/forms";
|
19
|
-
import * as i3 from "@taiga-ui/legacy/components/primitive-textfield";
|
20
|
-
import * as i4 from "@taiga-ui/legacy";
|
21
|
-
import * as i5 from "@taiga-ui/core";
|
22
|
-
import * as i6 from "@taiga-ui/core/components/label";
|
23
|
-
import * as i7 from "@taiga-ui/cdk";
|
24
|
-
import * as i8 from "@maskito/angular";
|
25
|
-
import * as i9 from "@taiga-ui/kit";
|
26
|
-
import * as i10 from "../../contacts/manager-card/sc-manager-card.component";
|
27
|
-
import * as i11 from "@taiga-ui/experimental";
|
28
|
-
/**
|
29
|
-
* Компонент формы проверки телефона и получения кода подтверждения.
|
30
|
-
*/
|
31
|
-
export class ScVerificationPhoneCheckFormComponent {
|
32
|
-
constructor() {
|
33
|
-
/**
|
34
|
-
* Сервис верификации.
|
35
|
-
*/
|
36
|
-
this.verificationService = inject(ScVerificationService);
|
37
|
-
/**
|
38
|
-
* Функция отправки кода подтверждения телефона.
|
39
|
-
*/
|
40
|
-
this.sendPhoneApproveCode = inject(SC_PHONE_APPROVE_CODE_SENDER);
|
41
|
-
/**
|
42
|
-
* Директива c `FormGroup` из DOM.
|
43
|
-
*/
|
44
|
-
this.formGroupDirective = inject(FormGroupDirective, { optional: true });
|
45
|
-
/**
|
46
|
-
* HTTP-клиент.
|
47
|
-
*/
|
48
|
-
this.http = inject(HttpClient);
|
49
|
-
/**
|
50
|
-
* Признак, что поле ввода телефона только для чтения.
|
51
|
-
*/
|
52
|
-
this.readOnly = input(false);
|
53
|
-
/**
|
54
|
-
* Признак, что поле ввода телефона псевдо-невалидное.
|
55
|
-
*/
|
56
|
-
this.pseudoInvalid = input(false);
|
57
|
-
/**
|
58
|
-
* Признак, что поле ввода телефона и кода подтверждения обязательные.
|
59
|
-
*/
|
60
|
-
this.required = input(false);
|
61
|
-
/**
|
62
|
-
* Текст подсказки.
|
63
|
-
*/
|
64
|
-
this.subtitle = input('');
|
65
|
-
/**
|
66
|
-
* Признак, следует ли телефону быть в системе. От этого признака зависит, в каких случаях выдавать ошибку при проверке занятости телефона.
|
67
|
-
*/
|
68
|
-
this.shouldBeBusy = input();
|
69
|
-
/**
|
70
|
-
* Признак, следует ли проверять, подтверждён ли телефон в системе. При `true` будет вызывать ошибку при наличии телефона в системе без подтверждения.
|
71
|
-
*/
|
72
|
-
this.shouldBeConfirmed = input();
|
73
|
-
/**
|
74
|
-
* Список стран.
|
75
|
-
*/
|
76
|
-
this.countries = getCountries();
|
77
|
-
/**
|
78
|
-
* Сервис для отображения Push-уведомлений с контактами для помощи клиенту.
|
79
|
-
*/
|
80
|
-
this.helpNotificationService = inject(ScHelpNotificationService);
|
81
|
-
/**
|
82
|
-
* Список контактов для отправки push-уведомлений.
|
83
|
-
*/
|
84
|
-
this.pushContacts = toSignal(this.helpNotificationService.getContactsShow$());
|
85
|
-
/**
|
86
|
-
* Наличие кода подтверждения у пользователя.
|
87
|
-
*/
|
88
|
-
this.haveCode = model(false);
|
89
|
-
/**
|
90
|
-
* {@link OutputEmitter} события изменения признака занятости телефона.
|
91
|
-
*/
|
92
|
-
this.isBusyChange = output();
|
93
|
-
/**
|
94
|
-
* {@link OutputEmitter} события изменения признака подтверждения телефона.
|
95
|
-
*/
|
96
|
-
this.isConfirmedChange = output();
|
97
|
-
/**
|
98
|
-
* {@link Subject} события отправки кода подтверждения.
|
99
|
-
*/
|
100
|
-
this.onSendCode = new Subject();
|
101
|
-
/**
|
102
|
-
* Таймаут отправки кода подтверждения.
|
103
|
-
*/
|
104
|
-
this.codeTimeout = inject(SC_VERIFICATION_CODE_TIMEOUT);
|
105
|
-
/**
|
106
|
-
* {@link Observable} запроса данных получения кода подтверждения.
|
107
|
-
*/
|
108
|
-
this.loadingApproveCode$ = this.onSendCode.pipe(map(() => this.phoneControl.value), filter((value) => this.phoneControl.valid), switchMap((value) => this.sendPhoneApproveCode(value).pipe(tap(() => {
|
109
|
-
this.reloadTimer$.next(this.codeTimeout);
|
110
|
-
}), map(() => false), catchError((error) => {
|
111
|
-
if (error instanceof HttpErrorResponse) {
|
112
|
-
let seconds = null;
|
113
|
-
if ('error' in error.error) {
|
114
|
-
const errorResponse = error.error;
|
115
|
-
const regex = /(\d{1,3})\s+seconds/;
|
116
|
-
const match = regex.exec(errorResponse.error);
|
117
|
-
if (match) {
|
118
|
-
seconds = Number.parseInt(match[1], 10);
|
119
|
-
}
|
120
|
-
}
|
121
|
-
else {
|
122
|
-
const errorResponse = error.error;
|
123
|
-
const regex = /(\d{2}):\d{2}/;
|
124
|
-
const match = regex.exec(errorResponse.message);
|
125
|
-
if (match && match.length > 1) {
|
126
|
-
const timeParts = match[0].split(':');
|
127
|
-
seconds = Number.parseInt(timeParts[1], 10);
|
128
|
-
}
|
129
|
-
}
|
130
|
-
if (seconds) {
|
131
|
-
this.reloadTimer$.next(seconds);
|
132
|
-
}
|
133
|
-
else {
|
134
|
-
this.phoneControl.setErrors({ serverResponse: ['Неизвестная ошибка, попробуйте позже.'] });
|
135
|
-
}
|
136
|
-
}
|
137
|
-
return of(false);
|
138
|
-
}), finalize(() => {
|
139
|
-
this.setHaveCode(true);
|
140
|
-
}), startWith(true), shareReplay({ refCount: true, bufferSize: 1 }))), startWith(false), share());
|
141
|
-
/**
|
142
|
-
* Маска поля ввода кода для подтверждения.
|
143
|
-
*/
|
144
|
-
this.verificationCodeMask = scPhoneVerificationCodeMask;
|
145
|
-
/**
|
146
|
-
* {@link Subject} события запуска/остановки таймера.
|
147
|
-
*/
|
148
|
-
this.reloadTimer$ = new Subject();
|
149
|
-
/**
|
150
|
-
* {@link Observable} Таймера.
|
151
|
-
*
|
152
|
-
* TODO: Вынести таймер в отдельную директиву TASK:[#9260].
|
153
|
-
*/
|
154
|
-
this.timer$ = this.reloadTimer$.pipe(switchMap((sec) => timer(0, 1000).pipe(scan((total) => -1 + total, sec), takeWhile((total) => total >= 0), map((total) => {
|
155
|
-
const minutes = Math.floor(total / 60);
|
156
|
-
const seconds = total % 60;
|
157
|
-
return `${Math.round(minutes).toString().padStart(2, '0')}:${Math.round(seconds).toString().padStart(2, '0')}`;
|
158
|
-
}), endWith(null), startWith(null), distinctUntilChanged())));
|
159
|
-
/**
|
160
|
-
* Токен показа уведомления помощи.
|
161
|
-
*/
|
162
|
-
this.showHelpNotification = inject(SC_SHOW_HELP_NOTIFICATION_IN_PHONE_INPUT);
|
163
|
-
/**
|
164
|
-
* Признак, следует ли отображать функционал кода подтверждения.
|
165
|
-
*/
|
166
|
-
this._showCodeFields = true;
|
167
|
-
}
|
168
|
-
/**
|
169
|
-
* Признак, следует ли отображать функционал кода подтверждения.
|
170
|
-
*/
|
171
|
-
set showCodeFields(showCodeFields) {
|
172
|
-
this._showCodeFields = showCodeFields;
|
173
|
-
this.form.controls.verificationCode[showCodeFields ? 'enable' : 'disable']();
|
174
|
-
}
|
175
|
-
/**
|
176
|
-
* Признак, следует ли отображать функционал кода подтверждения.
|
177
|
-
*/
|
178
|
-
get showCodeFields() {
|
179
|
-
return this._showCodeFields;
|
180
|
-
}
|
181
|
-
/**
|
182
|
-
* Группа полей ввода для формы «Вход на сайт».
|
183
|
-
*/
|
184
|
-
get form() {
|
185
|
-
return this.formGroupDirective?.form;
|
186
|
-
}
|
187
|
-
/**
|
188
|
-
* Поле ввода 'Номер телефона'.
|
189
|
-
*/
|
190
|
-
get phoneControl() {
|
191
|
-
return this.form.controls.phone;
|
192
|
-
}
|
193
|
-
/** @inheritDoc */
|
194
|
-
ngOnInit() {
|
195
|
-
this.phoneCheck$ = tuiControlValue(this.phoneControl).pipe(tap(() => {
|
196
|
-
this.reloadTimer$.next(0);
|
197
|
-
this.isBusyChange.emit(null);
|
198
|
-
this.isConfirmedChange.emit(null);
|
199
|
-
this.helpNotificationService.closeAllHelpNotification();
|
200
|
-
if (this.form.controls.verificationCode.value) {
|
201
|
-
this.form.controls.verificationCode.setValue(null);
|
202
|
-
}
|
203
|
-
}), switchMap((value) => {
|
204
|
-
if (this.phoneControl.valid && !!value) {
|
205
|
-
return this.verificationService.getPhoneCheck$(value).pipe(
|
206
|
-
// eslint-disable-next-line sonarjs/cognitive-complexity
|
207
|
-
map((result) => {
|
208
|
-
if (this.shouldBeBusy() === undefined && !isNil(this.shouldBeConfirmed()) && !result.isBusy) {
|
209
|
-
this.isBusyChange.emit(result.isBusy);
|
210
|
-
if (!isNil(result.isConfirmed)) {
|
211
|
-
this.isConfirmedChange.emit(result.isConfirmed);
|
212
|
-
return this.shouldBeConfirmed() === result.isConfirmed;
|
213
|
-
}
|
214
|
-
return true;
|
215
|
-
}
|
216
|
-
if (this.shouldBeBusy() !== undefined && this.shouldBeBusy() !== result.isBusy) {
|
217
|
-
this.phoneControl.setErrors({
|
218
|
-
serverResponse: [
|
219
|
-
result.isBusy ? 'Пользователь с таким номером телефона уже существует' : 'Пользователя с таким номером телефона не существует',
|
220
|
-
],
|
221
|
-
});
|
222
|
-
this.phoneControl.markAsTouched();
|
223
|
-
return false;
|
224
|
-
}
|
225
|
-
if (this.shouldBeConfirmed() !== undefined && this.shouldBeConfirmed() !== result.isConfirmed) {
|
226
|
-
this.phoneControl.setErrors({
|
227
|
-
serverResponse: [
|
228
|
-
result.isConfirmed
|
229
|
-
? 'Телефон уже подтверждён'
|
230
|
-
: 'Номер телефона не подтверждён или вход по нему невозможен. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.',
|
231
|
-
],
|
232
|
-
});
|
233
|
-
this.phoneControl.markAsTouched();
|
234
|
-
return false;
|
235
|
-
}
|
236
|
-
return true;
|
237
|
-
}), catchError((error) => {
|
238
|
-
if (error instanceof HttpErrorResponse) {
|
239
|
-
const errorResponse = error.error;
|
240
|
-
this.phoneControl.setErrors({ serverResponse: errorResponse.errors?.['phone'] ?? [errorResponse.message] });
|
241
|
-
}
|
242
|
-
return of(false);
|
243
|
-
}), tap((check) => {
|
244
|
-
if (!check) {
|
245
|
-
this.helpNotificationService.helpNotificationByPhone(value);
|
246
|
-
}
|
247
|
-
}), startWith(null));
|
248
|
-
}
|
249
|
-
this.setHaveCode(false);
|
250
|
-
return of(false);
|
251
|
-
}), share());
|
252
|
-
this.setHaveCode(false);
|
253
|
-
}
|
254
|
-
/**
|
255
|
-
* Устанавливает состояние наличия кода подтверждения у пользователя.
|
256
|
-
*
|
257
|
-
* @param haveCode Признак того есть ли код подтверждения или нет.
|
258
|
-
*/
|
259
|
-
setHaveCode(haveCode) {
|
260
|
-
this.haveCode.set(haveCode);
|
261
|
-
}
|
262
|
-
/**
|
263
|
-
* Закрытие уведомления.
|
264
|
-
*/
|
265
|
-
closeNotification() {
|
266
|
-
this.helpNotificationService.closeAllHelpNotification();
|
267
|
-
}
|
268
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScVerificationPhoneCheckFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
269
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: { showCodeFields: { classPropertyName: "showCodeFields", publicName: "showCodeFields", isSignal: false, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, pseudoInvalid: { classPropertyName: "pseudoInvalid", publicName: "pseudoInvalid", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, shouldBeBusy: { classPropertyName: "shouldBeBusy", publicName: "shouldBeBusy", isSignal: true, isRequired: false, transformFunction: null }, shouldBeConfirmed: { classPropertyName: "shouldBeConfirmed", publicName: "shouldBeConfirmed", isSignal: true, isRequired: false, transformFunction: null }, haveCode: { classPropertyName: "haveCode", publicName: "haveCode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { haveCode: "haveCodeChange", isBusyChange: "isBusyChange", isConfirmedChange: "isConfirmedChange" }, host: { attributes: { "ngSkipHydration": "true" } }, ngImport: i0, template: "@let phoneCheck = phoneCheck$ | async;\n\n<form\n [formGroup]=\"form\"\n *tuiLet=\"loadingApproveCode$ | async as loadingApproveCode\"\n class=\"flex flex-col gap-3\"\n>\n <label tuiLabel>\n \u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\n <tui-textfield>\n <input\n formControlName=\"phone\"\n tuiInputPhoneInternational\n [invalid]=\"pseudoInvalid() || null\"\n [countrySearch]=\"true\"\n [countries]=\"(countries | tuiSortCountries | async) || []\"\n autocomplete=\"phone\"\n />\n </tui-textfield>\n <p\n *ngIf=\"subtitle()\"\n class=\"text-body-s text-tui-text-tertiary\"\n >\n {{ subtitle() }}\n </p>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n />\n @if (showHelpNotification && pushContacts()) {\n @for (manager of pushContacts(); track manager.id) {\n <tui-push\n type=\"\u0421\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043D\u0430\u043C\u0438 \u0434\u043B\u044F \u0440\u0435\u0448\u0435\u043D\u0438\u044F \u0432\u043E\u0437\u043D\u0438\u043A\u0448\u0438\u0445 \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432\"\n (close)=\"closeNotification()\"\n class=\"!w-auto\"\n >\n <tui-icon icon=\"@tui.message-square\" />\n <sc-manager-card [manager]=\"manager\" />\n </tui-push>\n }\n }\n </label>\n\n <ng-container *ngIf=\"showCodeFields && form.enabled && phoneCheck\">\n <label\n *ngIf=\"!loadingApproveCode && haveCode()\"\n tuiLabel\n >\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <tui-input\n formControlName=\"verificationCode\"\n [required]=\"required() || showCodeFields\"\n >\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <input\n tuiAutoFocus\n tuiTextfieldLegacy\n [maskito]=\"verificationCodeMask\"\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"verificationCode\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <div\n *tuiLet=\"!!loadingApproveCode as loadingApproveCode\"\n class=\"flex justify-center gap-4\"\n >\n <button\n *ngIf=\"!haveCode()\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !phoneCheck || phoneControl.invalid\"\n [loading]=\"loadingApproveCode\"\n iconStart=\"@tui.sc.send\"\n >\n \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043A\u043E\u0434\n </button>\n <button\n *ngIf=\"!loadingApproveCode && !haveCode()\"\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"!phoneCheck || phoneControl.invalid\"\n (click)=\"setHaveCode(true)\"\n >\n \u0423 \u043C\u0435\u043D\u044F \u0435\u0441\u0442\u044C \u043A\u043E\u0434\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader\n *ngIf=\"haveCode()\"\n [showLoader]=\"loadingApproveCode\"\n >\n <button\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"loadingApproveCode || timer\"\n (click)=\"onSendCode.next()\"\n >\n \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u0434\n <ng-container\n *ngIf=\"timer\"\n class=\"!text-tui-base-08\"\n >\n (\u0447\u0435\u0440\u0435\u0437 {{ timer }})\n </ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader\n *ngIf=\"!phoneCheck && phoneControl.valid\"\n class=\"size-4\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { 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.TuiTextfieldComponent, selector: "input[tuiTextfieldLegacy], textarea[tuiTextfieldLegacy]" }, { kind: "component", type: i4.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i4.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: i6.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i5.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "directive", type: i7.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i5.TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i8.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i9.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "component", type: i10.ScManagerCardComponent, selector: "sc-manager-card", inputs: ["manager"] }, { kind: "component", type: i5.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: i9.TuiPushComponent, selector: "tui-push", inputs: ["heading", "type", "lines", "timestamp"], outputs: ["close"] }, { kind: "component", type: i11.TuiInputPhoneInternational, selector: "input[tuiInputPhoneInternational]", inputs: ["countrySearch", "countries", "countryIsoCode"], outputs: ["countryIsoCodeChange"] }, { kind: "component", type: i5.TuiTextfieldComponent, selector: "tui-textfield:not([multi])" }, { kind: "directive", type: i7.TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "pipe", type: i9.TuiSortCountriesPipe, name: "tuiSortCountries" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
270
|
-
}
|
271
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScVerificationPhoneCheckFormComponent, decorators: [{
|
272
|
-
type: Component,
|
273
|
-
args: [{ selector: 'sc-verification-phone-check-form', host: { ngSkipHydration: 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "@let phoneCheck = phoneCheck$ | async;\n\n<form\n [formGroup]=\"form\"\n *tuiLet=\"loadingApproveCode$ | async as loadingApproveCode\"\n class=\"flex flex-col gap-3\"\n>\n <label tuiLabel>\n \u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\n <tui-textfield>\n <input\n formControlName=\"phone\"\n tuiInputPhoneInternational\n [invalid]=\"pseudoInvalid() || null\"\n [countrySearch]=\"true\"\n [countries]=\"(countries | tuiSortCountries | async) || []\"\n autocomplete=\"phone\"\n />\n </tui-textfield>\n <p\n *ngIf=\"subtitle()\"\n class=\"text-body-s text-tui-text-tertiary\"\n >\n {{ subtitle() }}\n </p>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n />\n @if (showHelpNotification && pushContacts()) {\n @for (manager of pushContacts(); track manager.id) {\n <tui-push\n type=\"\u0421\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 \u043D\u0430\u043C\u0438 \u0434\u043B\u044F \u0440\u0435\u0448\u0435\u043D\u0438\u044F \u0432\u043E\u0437\u043D\u0438\u043A\u0448\u0438\u0445 \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432\"\n (close)=\"closeNotification()\"\n class=\"!w-auto\"\n >\n <tui-icon icon=\"@tui.message-square\" />\n <sc-manager-card [manager]=\"manager\" />\n </tui-push>\n }\n }\n </label>\n\n <ng-container *ngIf=\"showCodeFields && form.enabled && phoneCheck\">\n <label\n *ngIf=\"!loadingApproveCode && haveCode()\"\n tuiLabel\n >\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <tui-input\n formControlName=\"verificationCode\"\n [required]=\"required() || showCodeFields\"\n >\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <input\n tuiAutoFocus\n tuiTextfieldLegacy\n [maskito]=\"verificationCodeMask\"\n autocomplete=\"new-password\"\n />\n </tui-input>\n <tui-error\n formControlName=\"verificationCode\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <div\n *tuiLet=\"!!loadingApproveCode as loadingApproveCode\"\n class=\"flex justify-center gap-4\"\n >\n <button\n *ngIf=\"!haveCode()\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !phoneCheck || phoneControl.invalid\"\n [loading]=\"loadingApproveCode\"\n iconStart=\"@tui.sc.send\"\n >\n \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043A\u043E\u0434\n </button>\n <button\n *ngIf=\"!loadingApproveCode && !haveCode()\"\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"!phoneCheck || phoneControl.invalid\"\n (click)=\"setHaveCode(true)\"\n >\n \u0423 \u043C\u0435\u043D\u044F \u0435\u0441\u0442\u044C \u043A\u043E\u0434\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader\n *ngIf=\"haveCode()\"\n [showLoader]=\"loadingApproveCode\"\n >\n <button\n tuiLink\n [pseudo]=\"true\"\n [disabled]=\"loadingApproveCode || timer\"\n (click)=\"onSendCode.next()\"\n >\n \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u0434\n <ng-container\n *ngIf=\"timer\"\n class=\"!text-tui-base-08\"\n >\n (\u0447\u0435\u0440\u0435\u0437 {{ timer }})\n </ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader\n *ngIf=\"!phoneCheck && phoneControl.valid\"\n class=\"size-4\"\n />\n</ng-template>\n" }]
|
274
|
-
}], propDecorators: { showCodeFields: [{
|
275
|
-
type: Input
|
276
|
-
}] } });
|
277
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3ZlcmlmaWNhdGlvbi92ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS9zYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmVyaWZpY2F0aW9uL3ZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtL3NjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBZSxLQUFLLEVBQXVCLE1BQU0sRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDcEssT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBMEIsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQTJDLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQ0gsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLElBQUksRUFDSixLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxPQUFPLEVBQ1AsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0gsS0FBSyxHQUNSLE1BQU0sTUFBTSxDQUFDO0FBR2QsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFDaEksT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUU1RDs7R0FFRztBQU9ILE1BQU0sT0FBTyxxQ0FBcUM7SUFObEQ7UUF1Qkk7O1dBRUc7UUFDZ0Isd0JBQW1CLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFdkU7O1dBRUc7UUFDZ0IseUJBQW9CLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFL0U7O1dBRUc7UUFDZ0IsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFdkY7O1dBRUc7UUFDZ0IsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU3Qzs7V0FFRztRQUNhLGFBQVEsR0FBeUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlEOztXQUVHO1FBQ2Esa0JBQWEsR0FBeUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5FOztXQUVHO1FBQ2EsYUFBUSxHQUF5QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUQ7O1dBRUc7UUFDYSxhQUFRLEdBQXdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUxRDs7V0FFRztRQUNhLGlCQUFZLEdBQXFDLEtBQUssRUFBdUIsQ0FBQztRQUU5Rjs7V0FFRztRQUNhLHNCQUFpQixHQUFxQyxLQUFLLEVBQXVCLENBQUM7UUFFbkc7O1dBRUc7UUFDZ0IsY0FBUyxHQUFpQyxZQUFZLEVBQUUsQ0FBQztRQUU1RTs7V0FFRztRQUNnQiw0QkFBdUIsR0FBOEIsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFMUc7O1dBRUc7UUFDZ0IsaUJBQVksR0FBd0MsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFFakk7O1dBRUc7UUFDYSxhQUFRLEdBQXlCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQU85RDs7V0FFRztRQUNhLGlCQUFZLEdBQXFDLE1BQU0sRUFBa0IsQ0FBQztRQUUxRjs7V0FFRztRQUNhLHNCQUFpQixHQUFxQyxNQUFNLEVBQWtCLENBQUM7UUFFL0Y7O1dBRUc7UUFDZ0IsZUFBVSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRW5FOztXQUVHO1FBQ2dCLGdCQUFXLEdBQVcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFOUU7O1dBRUc7UUFDZ0Isd0JBQW1CLEdBQXdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUM5RSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFDbEMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFDM0QsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDaEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDakMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQ2hCLFVBQVUsQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFO1lBQzFCLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3JDLElBQUksT0FBTyxHQUFrQixJQUFJLENBQUM7Z0JBRWxDLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQWlDLENBQUM7b0JBRTlELE1BQU0sS0FBSyxHQUFHLHFCQUFxQixDQUFDO29CQUNwQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFFOUMsSUFBSSxLQUFLLEVBQUUsQ0FBQzt3QkFDUixPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzVDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUF5QixDQUFDO29CQUV0RCxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUM7b0JBQzlCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUVoRCxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUM1QixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUN0QyxPQUFPLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2hELENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyx1Q0FBdUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDL0YsQ0FBQztZQUNMLENBQUM7WUFFRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FDakQsQ0FDSixFQUNELFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFDaEIsS0FBSyxFQUFFLENBQ1YsQ0FBQztRQUVGOztXQUVHO1FBQ2dCLHlCQUFvQixHQUFtQiwyQkFBMkIsQ0FBQztRQUV0Rjs7V0FFRztRQUNnQixpQkFBWSxHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXpFOzs7O1dBSUc7UUFDZ0IsV0FBTSxHQUE4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDekUsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDZCxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDZixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUMsRUFDaEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQ2hDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUUzQixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25ILENBQUMsQ0FBQyxFQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFDYixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2Ysb0JBQW9CLEVBQUUsQ0FDekIsQ0FDSixDQUNKLENBQUM7UUFFRjs7V0FFRztRQUNnQix5QkFBb0IsR0FBRyxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUUzRjs7V0FFRztRQUNLLG9CQUFlLEdBQVksSUFBSSxDQUFDO0tBd0gzQztJQXpVRzs7T0FFRztJQUNILElBQ1csY0FBYyxDQUFDLGNBQXVCO1FBQzdDLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQ2pGLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsY0FBYztRQUNyQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQXFNRDs7T0FFRztJQUNILElBQVcsSUFBSTtRQUlYLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBRzlCLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELGtCQUFrQjtJQUNYLFFBQVE7UUFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBZ0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FDckUsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFFeEQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZELENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUk7Z0JBQ3RELHdEQUF3RDtnQkFDeEQsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ1gsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQzFGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFFdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQzs0QkFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7NEJBRWhELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssTUFBTSxDQUFDLFdBQVcsQ0FBQzt3QkFDM0QsQ0FBQzt3QkFFRCxPQUFPLElBQUksQ0FBQztvQkFDaEIsQ0FBQztvQkFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDN0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7NEJBQ3hCLGNBQWMsRUFBRTtnQ0FDWixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxzREFBc0QsQ0FBQyxDQUFDLENBQUMscURBQXFEOzZCQUNqSTt5QkFDSixDQUFDLENBQUM7d0JBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFFbEMsT0FBTyxLQUFLLENBQUM7b0JBQ2pCLENBQUM7b0JBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUM1RixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQzs0QkFDeEIsY0FBYyxFQUFFO2dDQUNaLE1BQU0sQ0FBQyxXQUFXO29DQUNkLENBQUMsQ0FBQyx5QkFBeUI7b0NBQzNCLENBQUMsQ0FBQyxzSkFBc0o7NkJBQy9KO3lCQUNKLENBQUMsQ0FBQzt3QkFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUVsQyxPQUFPLEtBQUssQ0FBQztvQkFDakIsQ0FBQztvQkFFRCxPQUFPLElBQUksQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUU7b0JBQzFCLElBQUksS0FBSyxZQUFZLGlCQUFpQixFQUFFLENBQUM7d0JBQ3JDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUF5QixDQUFDO3dCQUN0RCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNoSCxDQUFDO29CQUVELE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDVixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ1QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNoRSxDQUFDO2dCQUNMLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FDbEIsQ0FBQztZQUNOLENBQUM7WUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXhCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxDQUNWLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sV0FBVyxDQUFDLFFBQWlCO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsdUJBQXVCLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUM1RCxDQUFDOytHQXpVUSxxQ0FBcUM7bUdBQXJDLHFDQUFxQyx5MENDaERsRCw0b0pBMEhBOzs0RkQxRWEscUNBQXFDO2tCQU5qRCxTQUFTOytCQUNJLGtDQUFrQyxRQUV0QyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsbUJBQ2hCLHVCQUF1QixDQUFDLE1BQU07OEJBT3BDLGNBQWM7c0JBRHhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSxsb2Rhc2gvcHJlZmVyLWNvbnN0YW50ICovXG5cbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgaW5wdXQsIElucHV0U2lnbmFsLCBtb2RlbCwgTW9kZWxTaWduYWwsIE9uSW5pdCwgb3V0cHV0LCBPdXRwdXRFbWl0dGVyUmVmLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7IFNjSUtleWNsb2FrRXJyb3JSZXNwb25zZSwgU2NJT3JnQ29udGFjdCwgU2NWZXJpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlDb250cm9sVmFsdWUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB0eXBlIHsgVHVpQ291bnRyeUlzb0NvZGUgfSBmcm9tICdAdGFpZ2EtdWkvaTE4bic7XG5pbXBvcnQgeyBnZXRDb3VudHJpZXMgfSBmcm9tICdsaWJwaG9uZW51bWJlci1qcyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICAgIGNhdGNoRXJyb3IsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgZW5kV2l0aCxcbiAgICBmaWx0ZXIsXG4gICAgZmluYWxpemUsXG4gICAgbWFwLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgc2NhbixcbiAgICBzaGFyZSxcbiAgICBzaGFyZVJlcGxheSxcbiAgICBzdGFydFdpdGgsXG4gICAgU3ViamVjdCxcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZVdoaWxlLFxuICAgIHRhcCxcbiAgICB0aW1lcixcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwaUVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9hdXRoL2ludGVyZmFjZXMvYXBpLWVycm9yLXJlc3BvbnNlJztcbmltcG9ydCB7IFNDX1NIT1dfSEVMUF9OT1RJRklDQVRJT05fSU5fUEhPTkVfSU5QVVQgfSBmcm9tICcuLi8uLi9jb250YWN0cy90b2tlbnMvc2Mtc2hvdy1oZWxwLW5vdGlmaWNhdGlvbi1pbi1waG9uZS1pbnB1dC50b2tlbic7XG5pbXBvcnQgeyBzY1Bob25lVmVyaWZpY2F0aW9uQ29kZU1hc2sgfSBmcm9tICcuLi8uLi9tYXNrcyc7XG5pbXBvcnQgeyBTQ19WRVJJRklDQVRJT05fQ09ERV9USU1FT1VUIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3NjLXZlcmlmaWNhdGlvbi1jb2RlLXRpbWVvdXQnO1xuaW1wb3J0IHsgU2NIZWxwTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFNDX1BIT05FX0FQUFJPVkVfQ09ERV9TRU5ERVIgfSBmcm9tICcuLi9wcm92aWRlcnMnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDRhNC+0YDQvNGLINC/0YDQvtCy0LXRgNC60Lgg0YLQtdC70LXRhNC+0L3QsCDQuCDQv9C+0LvRg9GH0LXQvdC40Y8g0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDogeyBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1ZlcmlmaWNhdGlvblBob25lQ2hlY2tGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDQvtGC0L7QsdGA0LDQttCw0YLRjCDRhNGD0L3QutGG0LjQvtC90LDQuyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgc2hvd0NvZGVGaWVsZHMoc2hvd0NvZGVGaWVsZHM6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2hvd0NvZGVGaWVsZHMgPSBzaG93Q29kZUZpZWxkcztcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnZlcmlmaWNhdGlvbkNvZGVbc2hvd0NvZGVGaWVsZHMgPyAnZW5hYmxlJyA6ICdkaXNhYmxlJ10oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDQvtGC0L7QsdGA0LDQttCw0YLRjCDRhNGD0L3QutGG0LjQvtC90LDQuyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHNob3dDb2RlRmllbGRzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0NvZGVGaWVsZHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINCy0LXRgNC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZlcmlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoU2NWZXJpZmljYXRpb25TZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCk0YPQvdC60YbQuNGPINC+0YLQv9GA0LDQstC60Lgg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VuZFBob25lQXBwcm92ZUNvZGUgPSBpbmplY3QoU0NfUEhPTkVfQVBQUk9WRV9DT0RFX1NFTkRFUik7XG5cbiAgICAvKipcbiAgICAgKiDQlNC40YDQtdC60YLQuNCy0LAgYyBgRm9ybUdyb3VwYCDQuNC3IERPTS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybUdyb3VwRGlyZWN0aXZlID0gaW5qZWN0KEZvcm1Hcm91cERpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIC8qKlxuICAgICAqIEhUVFAt0LrQu9C40LXQvdGCLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQv9C+0LvQtSDQstCy0L7QtNCwINGC0LXQu9C10YTQvtC90LAg0YLQvtC70YzQutC+INC00LvRjyDRh9GC0LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHJlYWRPbmx5OiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L/QvtC70LUg0LLQstC+0LTQsCDRgtC10LvQtdGE0L7QvdCwINC/0YHQtdCy0LTQvi3QvdC10LLQsNC70LjQtNC90L7QtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcHNldWRvSW52YWxpZDogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dChmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC/0L7Qu9C1INCy0LLQvtC00LAg0YLQtdC70LXRhNC+0L3QsCDQuCDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdGL0LUuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHJlcXVpcmVkOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCi0LXQutGB0YIg0L/QvtC00YHQutCw0LfQutC4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzdWJ0aXRsZTogSW5wdXRTaWduYWw8c3RyaW5nPiA9IGlucHV0KCcnKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRgdC70LXQtNGD0LXRgiDQu9C4INGC0LXQu9C10YTQvtC90YMg0LHRi9GC0Ywg0LIg0YHQuNGB0YLQtdC80LUuINCe0YIg0Y3RgtC+0LPQviDQv9GA0LjQt9C90LDQutCwINC30LDQstC40YHQuNGCLCDQsiDQutCw0LrQuNGFINGB0LvRg9GH0LDRj9GFINCy0YvQtNCw0LLQsNGC0Ywg0L7RiNC40LHQutGDINC/0YDQuCDQv9GA0L7QstC10YDQutC1INC30LDQvdGP0YLQvtGB0YLQuCDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzaG91bGRCZUJ1c3k6IElucHV0U2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+ID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRgdC70LXQtNGD0LXRgiDQu9C4INC/0YDQvtCy0LXRgNGP0YLRjCwg0L/QvtC00YLQstC10YDQttC00ZHQvSDQu9C4INGC0LXQu9C10YTQvtC9INCyINGB0LjRgdGC0LXQvNC1LiDQn9GA0LggYHRydWVgINCx0YPQtNC10YIg0LLRi9C30YvQstCw0YLRjCDQvtGI0LjQsdC60YMg0L/RgNC4INC90LDQu9C40YfQuNC4INGC0LXQu9C10YTQvtC90LAg0LIg0YHQuNGB0YLQtdC80LUg0LHQtdC3INC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzaG91bGRCZUNvbmZpcm1lZDogSW5wdXRTaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4gPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YLRgNCw0L0uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvdW50cmllczogcmVhZG9ubHkgVHVpQ291bnRyeUlzb0NvZGVbXSA9IGdldENvdW50cmllcygpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPIFB1c2gt0YPQstC10LTQvtC80LvQtdC90LjQuSDRgSDQutC+0L3RgtCw0LrRgtCw0LzQuCDQtNC70Y8g0L/QvtC80L7RidC4INC60LvQuNC10L3RgtGDLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBoZWxwTm90aWZpY2F0aW9uU2VydmljZTogU2NIZWxwTm90aWZpY2F0aW9uU2VydmljZSA9IGluamVjdChTY0hlbHBOb3RpZmljYXRpb25TZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQutC+0L3RgtCw0LrRgtC+0LIg0LTQu9GPINC+0YLQv9GA0LDQstC60LggcHVzaC3Rg9Cy0LXQtNC+0LzQu9C10L3QuNC5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwdXNoQ29udGFjdHM6IFNpZ25hbDxTY0lPcmdDb250YWN0W10gfCB1bmRlZmluZWQ+ID0gdG9TaWduYWwodGhpcy5oZWxwTm90aWZpY2F0aW9uU2VydmljZS5nZXRDb250YWN0c1Nob3ckKCkpO1xuXG4gICAgLyoqXG4gICAgICog0J3QsNC70LjRh9C40LUg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0YMg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBoYXZlQ29kZTogTW9kZWxTaWduYWw8Ym9vbGVhbj4gPSBtb2RlbChmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0L/RgNC+0LLQtdGA0LrQuCDQvdC+0LzQtdGA0LAg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcGhvbmVDaGVjayQ/OiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPdXRwdXRFbWl0dGVyfSDRgdC+0LHRi9GC0LjRjyDQuNC30LzQtdC90LXQvdC40Y8g0L/RgNC40LfQvdCw0LrQsCDQt9Cw0L3Rj9GC0L7RgdGC0Lgg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNCdXN5Q2hhbmdlOiBPdXRwdXRFbWl0dGVyUmVmPGJvb2xlYW4gfCBudWxsPiA9IG91dHB1dDxib29sZWFuIHwgbnVsbD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPdXRwdXRFbWl0dGVyfSDRgdC+0LHRi9GC0LjRjyDQuNC30LzQtdC90LXQvdC40Y8g0L/RgNC40LfQvdCw0LrQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpc0NvbmZpcm1lZENoYW5nZTogT3V0cHV0RW1pdHRlclJlZjxib29sZWFuIHwgbnVsbD4gPSBvdXRwdXQ8Ym9vbGVhbiB8IG51bGw+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25TZW5kQ29kZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQotCw0LnQvNCw0YPRgiDQvtGC0L/RgNCw0LLQutC4INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb2RlVGltZW91dDogbnVtYmVyID0gaW5qZWN0KFNDX1ZFUklGSUNBVElPTl9DT0RFX1RJTUVPVVQpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC00LDQvdC90YvRhSDQv9C+0LvRg9GH0LXQvdC40Y8g0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmdBcHByb3ZlQ29kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLm9uU2VuZENvZGUucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHRoaXMucGhvbmVDb250cm9sLnZhbHVlKSxcbiAgICAgICAgZmlsdGVyKCh2YWx1ZSk6IHZhbHVlIGlzIHN0cmluZyA9PiB0aGlzLnBob25lQ29udHJvbC52YWxpZCksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLnNlbmRQaG9uZUFwcHJvdmVDb2RlKHZhbHVlKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkVGltZXIkLm5leHQodGhpcy5jb2RlVGltZW91dCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IGZhbHNlKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlY29uZHM6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJ2Vycm9yJyBpbiBlcnJvci5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yUmVzcG9uc2UgPSBlcnJvci5lcnJvciBhcyBTY0lLZXljbG9ha0Vycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCA9IC8oXFxkezEsM30pXFxzK3NlY29uZHMvO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gcmVnZXguZXhlYyhlcnJvclJlc3BvbnNlLmVycm9yKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzID0gTnVtYmVyLnBhcnNlSW50KG1hdGNoWzFdLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvclJlc3BvbnNlID0gZXJyb3IuZXJyb3IgYXMgQXBpRXJyb3JSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gLyhcXGR7Mn0pOlxcZHsyfS87XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKGVycm9yUmVzcG9uc2UubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lUGFydHMgPSBtYXRjaFswXS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzID0gTnVtYmVyLnBhcnNlSW50KHRpbWVQYXJ0c1sxXSwgMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlY29uZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZFRpbWVyJC5uZXh0KHNlY29uZHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lQ29udHJvbC5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogWyfQndC10LjQt9Cy0LXRgdGC0L3QsNGPINC+0YjQuNCx0LrQsCwg0L/QvtC/0YDQvtCx0YPQudGC0LUg0L/QvtC30LbQtS4nXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEhhdmVDb2RlKHRydWUpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh0cnVlKSxcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JzQsNGB0LrQsCDQv9C+0LvRjyDQstCy0L7QtNCwINC60L7QtNCwINC00LvRjyDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmVyaWZpY2F0aW9uQ29kZU1hc2s6IE1hc2tpdG9PcHRpb25zID0gc2NQaG9uZVZlcmlmaWNhdGlvbkNvZGVNYXNrO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC30LDQv9GD0YHQutCwL9C+0YHRgtCw0L3QvtCy0LrQuCDRgtCw0LnQvNC10YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVsb2FkVGltZXIkOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0KLQsNC50LzQtdGA0LAuXG4gICAgICpcbiAgICAgKiBUT0RPOiDQktGL0L3QtdGB0YLQuCDRgtCw0LnQvNC10YAg0LIg0L7RgtC00LXQu9GM0L3Rg9GOINC00LjRgNC10LrRgtC40LLRgyBUQVNLOlsjOTI2MF0uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWVyJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiA9IHRoaXMucmVsb2FkVGltZXIkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoc2VjKSA9PlxuICAgICAgICAgICAgdGltZXIoMCwgMTAwMCkucGlwZShcbiAgICAgICAgICAgICAgICBzY2FuKCh0b3RhbCkgPT4gLTEgKyB0b3RhbCwgc2VjKSxcbiAgICAgICAgICAgICAgICB0YWtlV2hpbGUoKHRvdGFsKSA9PiB0b3RhbCA+PSAwKSxcbiAgICAgICAgICAgICAgICBtYXAoKHRvdGFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHRvdGFsIC8gNjApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRzID0gdG90YWwgJSA2MDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChtaW51dGVzKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7TWF0aC5yb3VuZChzZWNvbmRzKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBlbmRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0KLQvtC60LXQvSDQv9C+0LrQsNC30LAg0YPQstC10LTQvtC80LvQtdC90LjRjyDQv9C+0LzQvtGJ0LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dIZWxwTm90aWZpY2F0aW9uID0gaW5qZWN0KFNDX1NIT1dfSEVMUF9OT1RJRklDQVRJT05fSU5fUEhPTkVfSU5QVVQpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGB0LvQtdC00YPQtdGCINC70Lgg0L7RgtC+0LHRgNCw0LbQsNGC0Ywg0YTRg9C90LrRhtC40L7QvdCw0Lsg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2hvd0NvZGVGaWVsZHM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDQtNC70Y8g0YTQvtGA0LzRiyDCq9CS0YXQvtC0INC90LAg0YHQsNC50YLCuy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGZvcm0oKTogRm9ybUdyb3VwPHtcbiAgICAgICAgcGhvbmU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICB2ZXJpZmljYXRpb25Db2RlOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cERpcmVjdGl2ZT8uZm9ybSBhcyBGb3JtR3JvdXA8e1xuICAgICAgICAgICAgcGhvbmU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICAgICAgdmVyaWZpY2F0aW9uQ29kZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIH0+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0L7Qu9C1INCy0LLQvtC00LAgJ9Cd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCcuXG4gICAgICovXG4gICAgcHVibGljIGdldCBwaG9uZUNvbnRyb2woKTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLnBob25lO1xuICAgIH1cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waG9uZUNoZWNrJCA9IHR1aUNvbnRyb2xWYWx1ZTxzdHJpbmcgfCBudWxsPih0aGlzLnBob25lQ29udHJvbCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRUaW1lciQubmV4dCgwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQnVzeUNoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDb25maXJtZWRDaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhlbHBOb3RpZmljYXRpb25TZXJ2aWNlLmNsb3NlQWxsSGVscE5vdGlmaWNhdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9scy52ZXJpZmljYXRpb25Db2RlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy52ZXJpZmljYXRpb25Db2RlLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBob25lQ29udHJvbC52YWxpZCAmJiAhIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZlcmlmaWNhdGlvblNlcnZpY2UuZ2V0UGhvbmVDaGVjayQodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9jb2duaXRpdmUtY29tcGxleGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG91bGRCZUJ1c3koKSA9PT0gdW5kZWZpbmVkICYmICFpc05pbCh0aGlzLnNob3VsZEJlQ29uZmlybWVkKCkpICYmICFyZXN1bHQuaXNCdXN5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNCdXN5Q2hhbmdlLmVtaXQocmVzdWx0LmlzQnVzeSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc05pbChyZXN1bHQuaXNDb25maXJtZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29uZmlybWVkQ2hhbmdlLmVtaXQocmVzdWx0LmlzQ29uZmlybWVkKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdWxkQmVDb25maXJtZWQoKSA9PT0gcmVzdWx0LmlzQ29uZmlybWVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkQmVCdXN5KCkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnNob3VsZEJlQnVzeSgpICE9PSByZXN1bHQuaXNCdXN5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLnNldEVycm9ycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pc0J1c3kgPyAn0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINGBINGC0LDQutC40Lwg0L3QvtC80LXRgNC+0Lwg0YLQtdC70LXRhNC+0L3QsCDRg9C20LUg0YHRg9GJ0LXRgdGC0LLRg9C10YInIDogJ9Cf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRgSDRgtCw0LrQuNC8INC90L7QvNC10YDQvtC8INGC0LXQu9C10YTQvtC90LAg0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG91bGRCZUNvbmZpcm1lZCgpICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zaG91bGRCZUNvbmZpcm1lZCgpICE9PSByZXN1bHQuaXNDb25maXJtZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmlzQ29uZmlybWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ9Ci0LXQu9C10YTQvtC9INGD0LbQtSDQv9C+0LTRgtCy0LXRgNC20LTRkdC9J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICfQndC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L3QtSDQv9C+0LTRgtCy0LXRgNC20LTRkdC9INC40LvQuCDQstGF0L7QtCDQv9C+INC90LXQvNGDINC90LXQstC+0LfQvNC+0LbQtdC9LiDQntCx0YDQsNGC0LjRgtC10YHRjCDQuiDQstCw0YjQtdC80YMg0L/QtdGA0YHQvtC90LDQu9GM0L3QvtC80YMg0LzQtdC90LXQtNC20LXRgNGDINC40LvQuCDQstC+0LnQtNC40YLQtSDRgSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IGUtbWFpbCDQuCDQv9Cw0YDQvtC70Y8uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yUmVzcG9uc2UgPSBlcnJvci5lcnJvciBhcyBBcGlFcnJvclJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lQ29udHJvbC5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JSZXNwb25zZS5lcnJvcnM/LlsncGhvbmUnXSA/PyBbZXJyb3JSZXNwb25zZS5tZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXAoKGNoZWNrKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhlbHBOb3RpZmljYXRpb25TZXJ2aWNlLmhlbHBOb3RpZmljYXRpb25CeVBob25lKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0SGF2ZUNvZGUoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2V0SGF2ZUNvZGUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGB0L7RgdGC0L7Rj9C90LjQtSDQvdCw0LvQuNGH0LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaGF2ZUNvZGUg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4g0LXRgdGC0Ywg0LvQuCDQutC+0LQg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LjQu9C4INC90LXRgi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc2V0SGF2ZUNvZGUoaGF2ZUNvZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXZlQ29kZS5zZXQoaGF2ZUNvZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCX0LDQutGA0YvRgtC40LUg0YPQstC10LTQvtC80LvQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY2xvc2VOb3RpZmljYXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGVscE5vdGlmaWNhdGlvblNlcnZpY2UuY2xvc2VBbGxIZWxwTm90aWZpY2F0aW9uKCk7XG4gICAgfVxufVxuIiwiQGxldCBwaG9uZUNoZWNrID0gcGhvbmVDaGVjayQgfCBhc3luYztcblxuPGZvcm1cbiAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICp0dWlMZXQ9XCJsb2FkaW5nQXBwcm92ZUNvZGUkIHwgYXN5bmMgYXMgbG9hZGluZ0FwcHJvdmVDb2RlXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIlxuPlxuICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAg0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwXG4gICAgICAgIDx0dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgIHR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsXG4gICAgICAgICAgICAgICAgW2ludmFsaWRdPVwicHNldWRvSW52YWxpZCgpIHx8IG51bGxcIlxuICAgICAgICAgICAgICAgIFtjb3VudHJ5U2VhcmNoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjb3VudHJpZXNdPVwiKGNvdW50cmllcyB8IHR1aVNvcnRDb3VudHJpZXMgfCBhc3luYykgfHwgW11cIlxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cInBob25lXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLXRleHRmaWVsZD5cbiAgICAgICAgPHBcbiAgICAgICAgICAgICpuZ0lmPVwic3VidGl0bGUoKVwiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtYm9keS1zIHRleHQtdHVpLXRleHQtdGVydGlhcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBzdWJ0aXRsZSgpIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmIChzaG93SGVscE5vdGlmaWNhdGlvbiAmJiBwdXNoQ29udGFjdHMoKSkge1xuICAgICAgICAgICAgQGZvciAobWFuYWdlciBvZiBwdXNoQ29udGFjdHMoKTsgdHJhY2sgbWFuYWdlci5pZCkge1xuICAgICAgICAgICAgICAgIDx0dWktcHVzaFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwi0KHQstGP0LbQuNGC0LXRgdGMINGBINC90LDQvNC4INC00LvRjyDRgNC10YjQtdC90LjRjyDQstC+0LfQvdC40LrRiNC40YUg0LLQvtC/0YDQvtGB0L7QslwiXG4gICAgICAgICAgICAgICAgICAgIChjbG9zZSk9XCJjbG9zZU5vdGlmaWNhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIhdy1hdXRvXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDx0dWktaWNvbiBpY29uPVwiQHR1aS5tZXNzYWdlLXNxdWFyZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzYy1tYW5hZ2VyLWNhcmQgW21hbmFnZXJdPVwibWFuYWdlclwiIC8+XG4gICAgICAgICAgICAgICAgPC90dWktcHVzaD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIDwvbGFiZWw+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0NvZGVGaWVsZHMgJiYgZm9ybS5lbmFibGVkICYmIHBob25lQ2hlY2tcIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nQXBwcm92ZUNvZGUgJiYgaGF2ZUNvZGUoKVwiXG4gICAgICAgICAgICB0dWlMYWJlbFxuICAgICAgICA+XG4gICAgICAgICAgICDQmtC+0LQg0LjQtyDQodCc0KFcbiAgICAgICAgICAgIDx0dWktaW5wdXRcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2ZXJpZmljYXRpb25Db2RlXCJcbiAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWQoKSB8fCBzaG93Q29kZUZpZWxkc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0JrQvtC0INC40Lcg0KHQnNChXG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR1aUF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICB0dWlUZXh0ZmllbGRMZWdhY3lcbiAgICAgICAgICAgICAgICAgICAgW21hc2tpdG9dPVwidmVyaWZpY2F0aW9uQ29kZU1hc2tcIlxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2ZXJpZmljYXRpb25Db2RlXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqdHVpTGV0PVwiISFsb2FkaW5nQXBwcm92ZUNvZGUgYXMgbG9hZGluZ0FwcHJvdmVDb2RlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBnYXAtNFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFoYXZlQ29kZSgpXCJcbiAgICAgICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZW5kQ29kZS5uZXh0KClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nQXBwcm92ZUNvZGUgfHwgIXBob25lQ2hlY2sgfHwgcGhvbmVDb250cm9sLmludmFsaWRcIlxuICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdBcHByb3ZlQ29kZVwiXG4gICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zYy5zZW5kXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQn9C+0LvRg9GH0LjRgtGMINC60L7QtFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZ0FwcHJvdmVDb2RlICYmICFoYXZlQ29kZSgpXCJcbiAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXBob25lQ2hlY2sgfHwgcGhvbmVDb250cm9sLmludmFsaWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRIYXZlQ29kZSh0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0KMg0LzQtdC90Y8g0LXRgdGC0Ywg0LrQvtC0XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqdHVpTGV0PVwidGltZXIkIHwgYXN5bmMgYXMgdGltZXJcIj5cbiAgICAgICAgICAgICAgICA8dHVpLWxvYWRlclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImhhdmVDb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJsb2FkaW5nQXBwcm92ZUNvZGVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nQXBwcm92ZUNvZGUgfHwgdGltZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VuZENvZGUubmV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAg0J/QvtCy0YLQvtGA0L3QviDQvtGC0L/RgNCw0LLQuNGC0Ywg0LrQvtC0XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0aW1lclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIhdGV4dC10dWktYmFzZS0wOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKNGH0LXRgNC10Lcge3sgdGltZXIgfX0pXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90dWktbG9hZGVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9mb3JtPlxuXG48bmctdGVtcGxhdGUgI2NoZWNraW5nUGhvbmU+XG4gICAgPHR1aS1sb2FkZXJcbiAgICAgICAgKm5nSWY9XCIhcGhvbmVDaGVjayAmJiBwaG9uZUNvbnRyb2wudmFsaWRcIlxuICAgICAgICBjbGFzcz1cInNpemUtNFwiXG4gICAgLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
@@ -1,159 +0,0 @@
|
|
1
|
-
import { InputSignal, OutputEmitterRef, Signal } from '@angular/core';
|
2
|
-
import { FormControl, FormGroup } from '@angular/forms';
|
3
|
-
import { ScFeedbackForms, ScISuggestionType, ScUploadedFile } from '@snabcentr/client-core';
|
4
|
-
import { TuiLooseUnion } from '@taiga-ui/cdk';
|
5
|
-
import { TuiDialogContext } from '@taiga-ui/core';
|
6
|
-
import { TuiCountryIsoCode } from '@taiga-ui/i18n';
|
7
|
-
import { TuiFileLike } from '@taiga-ui/kit';
|
8
|
-
import { Observable, Subject } from 'rxjs';
|
9
|
-
import { ScFeedbackFormConfig, ScFeedbackFormFieldType } from '../interfaces';
|
10
|
-
import * as i0 from "@angular/core";
|
11
|
-
/**
|
12
|
-
* Компонент формы обратной связи.
|
13
|
-
*/
|
14
|
-
export declare class ScFeedbackFormComponent {
|
15
|
-
/**
|
16
|
-
* Контекст диалогового окна, в котором открыт компонент.
|
17
|
-
*/
|
18
|
-
protected readonly context: TuiDialogContext<void, {
|
19
|
-
onClickOfferHandler: () => void;
|
20
|
-
} & ScFeedbackFormConfig> | null;
|
21
|
-
/**
|
22
|
-
* Символьное обозначение (slug) формы.
|
23
|
-
*/
|
24
|
-
readonly slugInput: InputSignal<TuiLooseUnion<ScFeedbackForms>>;
|
25
|
-
/**
|
26
|
-
* Список полей, доступных в данной форме.
|
27
|
-
*/
|
28
|
-
readonly fieldsInput: InputSignal<ScFeedbackFormFieldType[]>;
|
29
|
-
/**
|
30
|
-
* Символьное обозначение (slug) формы.
|
31
|
-
*/
|
32
|
-
protected readonly slug: Signal<TuiLooseUnion<ScFeedbackForms>>;
|
33
|
-
/**
|
34
|
-
* Список полей, доступных в данной форме.
|
35
|
-
*/
|
36
|
-
protected readonly fields: Signal<ScFeedbackFormFieldType[]>;
|
37
|
-
/**
|
38
|
-
* Событие нажатия на кнопку договора оферты.
|
39
|
-
*/
|
40
|
-
readonly clickOffer: OutputEmitterRef<void>;
|
41
|
-
/**
|
42
|
-
* Событие успешной отправки формы.
|
43
|
-
*/
|
44
|
-
readonly sendSuccess: OutputEmitterRef<void>;
|
45
|
-
/**
|
46
|
-
* Сервис обратной связи.
|
47
|
-
*/
|
48
|
-
private readonly feedbackService;
|
49
|
-
/**
|
50
|
-
* Сервис конвертации данных.
|
51
|
-
*/
|
52
|
-
private readonly convertersService;
|
53
|
-
/**
|
54
|
-
* Максимальное количество файлов, отправляемых в форме.
|
55
|
-
*/
|
56
|
-
private readonly maxFilesInForm;
|
57
|
-
/**
|
58
|
-
* Сервис данных о пользователе.
|
59
|
-
*/
|
60
|
-
private readonly user$;
|
61
|
-
/**
|
62
|
-
* Поле ввода для recaptcha.
|
63
|
-
*/
|
64
|
-
protected readonly recaptchaControl: FormControl<string | null>;
|
65
|
-
/**
|
66
|
-
* Группа полей ввода для формы «Пожелания и предложения по улучшению сайта».
|
67
|
-
*/
|
68
|
-
protected readonly form: FormGroup<{
|
69
|
-
name: FormControl<string | null>;
|
70
|
-
phone: FormControl<string | null>;
|
71
|
-
email: FormControl<string | null>;
|
72
|
-
message: FormControl<string | null>;
|
73
|
-
files: FormControl<ScUploadedFile[] | null>;
|
74
|
-
isShouldUseMessenger: FormControl<boolean | null>;
|
75
|
-
}>;
|
76
|
-
/**
|
77
|
-
* Перечисление типов подсказок.
|
78
|
-
*/
|
79
|
-
protected readonly suggestionType: typeof ScISuggestionType;
|
80
|
-
/**
|
81
|
-
* {@link Subject} события отправки формы.
|
82
|
-
*/
|
83
|
-
protected readonly onSubmit: Subject<void>;
|
84
|
-
/**
|
85
|
-
* {@link Observable} запроса на отправку данных.
|
86
|
-
*/
|
87
|
-
protected readonly request$: Observable<undefined | null>;
|
88
|
-
/**
|
89
|
-
* {@link Observable} изменения состояния загрузки данных.
|
90
|
-
*/
|
91
|
-
protected readonly loading$: Observable<boolean>;
|
92
|
-
/**
|
93
|
-
* Управляет состоянием загруженных файлов.
|
94
|
-
*/
|
95
|
-
protected readonly loadedFile: FormControl<TuiFileLike[] | null>;
|
96
|
-
/**
|
97
|
-
* Observable, который отслеживает, приняты ли файлы в соответствии с требованиями по типу размеру и т.д.
|
98
|
-
*/
|
99
|
-
protected readonly accepted$: Observable<File[]>;
|
100
|
-
/**
|
101
|
-
* Список файлов, которые были отклонены при загрузке.
|
102
|
-
*/
|
103
|
-
protected rejected: readonly File[];
|
104
|
-
/**
|
105
|
-
* Список стран.
|
106
|
-
*/
|
107
|
-
protected readonly countries: readonly TuiCountryIsoCode[];
|
108
|
-
/**
|
109
|
-
* Инициализирует экземпляр класса {@link ScFeedbackFormComponent}.
|
110
|
-
*/
|
111
|
-
constructor();
|
112
|
-
/**
|
113
|
-
* Удаляет валидацию со всех полей ввода.
|
114
|
-
*/
|
115
|
-
private clearAllValidators;
|
116
|
-
/**
|
117
|
-
* Устанавливает валидацию со для указанных полей ввода.
|
118
|
-
*
|
119
|
-
* @param fields Поля, для которых нужно установить валидацию.
|
120
|
-
*/
|
121
|
-
private setAllValidators;
|
122
|
-
/**
|
123
|
-
* Обрабатывает отклоненные файлы.
|
124
|
-
*
|
125
|
-
* @param files Список файлов, которые были отклонены.
|
126
|
-
*/
|
127
|
-
protected onReject(files: readonly File[]): void;
|
128
|
-
/**
|
129
|
-
* Удаляет файл из списка загруженных и отклоненных файлов.
|
130
|
-
*
|
131
|
-
* @param file Файл, который нужно удалить.
|
132
|
-
*/
|
133
|
-
protected onRemove(file: File): void;
|
134
|
-
/**
|
135
|
-
* Загружает файл в форму обратной связи.
|
136
|
-
*
|
137
|
-
* @param files Набор файлов.
|
138
|
-
*/
|
139
|
-
private onUploadFile;
|
140
|
-
/**
|
141
|
-
* Проверяет количество файлов загруженных пользователем.
|
142
|
-
*
|
143
|
-
* @param maxLength максимальное допустимое количество файлов для отправки.
|
144
|
-
*/
|
145
|
-
private maxFilesLength;
|
146
|
-
/**
|
147
|
-
* Выполняет очистку полей формы.
|
148
|
-
*/
|
149
|
-
private resetForm;
|
150
|
-
/**
|
151
|
-
* Проверяет, что номер телефона подходит для использования в мессенджерах.
|
152
|
-
*
|
153
|
-
* @param value Номер телефона, который необходимо проверить.
|
154
|
-
* @returns Признак того, что номер телефона подходит для мессенджеров.
|
155
|
-
*/
|
156
|
-
protected isValidPhoneNumberForMessenger(value: string): boolean;
|
157
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ScFeedbackFormComponent, never>;
|
158
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ScFeedbackFormComponent, "sc-feedback-form", never, { "slugInput": { "alias": "slug"; "required": false; "isSignal": true; }; "fieldsInput": { "alias": "fields"; "required": false; "isSignal": true; }; }, { "clickOffer": "clickOffer"; "sendSuccess": "sendSuccess"; }, never, never, true, never>;
|
159
|
-
}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { TuiDialogContext } from '@taiga-ui/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
/**
|
4
|
-
* Компонент «Спасибо!».
|
5
|
-
*/
|
6
|
-
export declare class ScGratitudeComponent {
|
7
|
-
/**
|
8
|
-
* Контекст диалогового окна, в котором открыт компонент.
|
9
|
-
*/
|
10
|
-
protected readonly context: TuiDialogContext<void, {
|
11
|
-
autoClose: number;
|
12
|
-
subTitle: string;
|
13
|
-
}> | null;
|
14
|
-
/**
|
15
|
-
* Инициализирует экземпляр класса {@link ScGratitudeComponent}.
|
16
|
-
*/
|
17
|
-
constructor();
|
18
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ScGratitudeComponent, never>;
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ScGratitudeComponent, "sc-gratitude", never, {}, {}, never, never, true, never>;
|
20
|
-
}
|
package/feedback/index.d.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export * from './sc-feedback-form-config';
|
@@ -1,23 +0,0 @@
|
|
1
|
-
import { ScFeedbackForms } from '@snabcentr/client-core';
|
2
|
-
import { TuiLooseUnion } from '@taiga-ui/cdk';
|
3
|
-
/**
|
4
|
-
* Типы доступных полей для форм обратной связи.
|
5
|
-
*/
|
6
|
-
export type ScFeedbackFormFieldType = 'name' | 'email' | 'phone' | 'message' | 'files' | 'isShouldUseMessenger';
|
7
|
-
/**
|
8
|
-
* Конфигурация формы обратной связи.
|
9
|
-
*/
|
10
|
-
export interface ScFeedbackFormConfig {
|
11
|
-
/**
|
12
|
-
* Уникальный идентификатор формы, используемый в API-запросах.
|
13
|
-
*/
|
14
|
-
slug: TuiLooseUnion<ScFeedbackForms>;
|
15
|
-
/**
|
16
|
-
* Название формы, отображаемое пользователю.
|
17
|
-
*/
|
18
|
-
title: string;
|
19
|
-
/**
|
20
|
-
* Список полей, доступных в данной форме.
|
21
|
-
*/
|
22
|
-
fields: ScFeedbackFormFieldType[];
|
23
|
-
}
|
@@ -1,33 +0,0 @@
|
|
1
|
-
import { TreeNode } from '../interfaces/tree-node';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
/**
|
4
|
-
* Директива отвечающая за корневые элементы дерева.
|
5
|
-
*/
|
6
|
-
export declare class TreeTopDirective implements TreeNode {
|
7
|
-
/**
|
8
|
-
* Отображаемое имя корневого элемента дерева.
|
9
|
-
*/
|
10
|
-
text: string;
|
11
|
-
/**
|
12
|
-
* Значок корневого элемента дерева.
|
13
|
-
*/
|
14
|
-
icon: string;
|
15
|
-
/**
|
16
|
-
* Ссылка корневого элемента дерева.
|
17
|
-
*/
|
18
|
-
link?: string;
|
19
|
-
/**
|
20
|
-
* Признак наличия дочерних элементов.
|
21
|
-
*/
|
22
|
-
hasChildren: boolean;
|
23
|
-
/**
|
24
|
-
* Идентификатор корневого элемента дерева.
|
25
|
-
*/
|
26
|
-
id?: number;
|
27
|
-
/**
|
28
|
-
* Дата создания корневого элемента дерева.
|
29
|
-
*/
|
30
|
-
createdAt?: string;
|
31
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<TreeTopDirective, never>;
|
32
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<TreeTopDirective, "[scTopNodeText]", never, { "text": { "alias": "scTopNodeText"; "required": false; }; "icon": { "alias": "scTopNodeIcon"; "required": false; }; "link": { "alias": "scTopNodeLink"; "required": false; }; "hasChildren": { "alias": "scTopNodeChilds"; "required": false; }; "id": { "alias": "scTopNodeParent"; "required": false; }; "createdAt": { "alias": "scTopNodeDate"; "required": false; }; }, {}, never, never, false, never>;
|
33
|
-
}
|