@snabcentr/client-ui 1.19.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/accordion/sc-accordion-content.directive.d.ts +2 -2
- package/accordion/sc-accordion.component.d.ts +4 -4
- package/accordion/sc-accordion.module.d.ts +2 -2
- package/auth/index.d.ts +2 -1
- package/auth/interfaces/{ApiErrorResponse.d.ts → api-error-response.d.ts} +1 -3
- package/auth/interfaces/index.d.ts +3 -0
- package/auth/interfaces/sc-bank-account-form-group.d.ts +11 -0
- package/auth/interfaces/sc-contact-form-group.d.ts +10 -0
- package/auth/sc-auth.module.d.ts +14 -8
- package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +1 -1
- package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +1 -1
- package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +1 -1
- package/auth/sign-up-form/sc-sign-up-form.component.d.ts +153 -0
- package/banner/sc-banner.component.d.ts +9 -5
- package/banner/sc-banner.module.d.ts +5 -4
- package/brands-list/index.d.ts +2 -0
- package/brands-list/sc-brands-list.component.d.ts +15 -0
- package/brands-list/sc-brands-list.module.d.ts +12 -0
- package/cart/cart-item-mobile/sc-cart-item-mobile.component.d.ts +16 -16
- package/cart/sc-cart.module.d.ts +3 -3
- package/catalog/categories-list/sc-categories-list.component.d.ts +9 -3
- package/catalog/category-card/sc-category-card.component.d.ts +1 -1
- package/catalog/input-quantity/sc-input-quantity.component.d.ts +6 -14
- package/catalog/price-card/sc-price-card.component.d.ts +11 -105
- package/catalog/price-history/sc-price-history.component.d.ts +11 -5
- package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +10 -5
- package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +1 -1
- package/catalog/sc-catalog.module.d.ts +5 -4
- package/catalog/sc-favorite-btn/sc-favorite-btn.component.d.ts +1 -1
- package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +11 -6
- package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +1 -1
- package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +1 -1
- package/contacts/sc-contacts.module.d.ts +6 -1
- package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +3 -3
- package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +23 -15
- package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +1 -1
- package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +1 -1
- package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +1 -1
- package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +31 -16
- package/contragents/sc-contragents.module.d.ts +6 -4
- package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +83 -8
- package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +1 -1
- package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +1 -1
- package/delivery-address/sc-delivery-address.module.d.ts +4 -2
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +107 -0
- package/directives/index.d.ts +6 -2
- package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +18 -0
- package/directives/next-input-focus/sc-next-input-focus.module.d.ts +10 -0
- package/directives/tel-link/sc-tel-link.directive.d.ts +27 -0
- package/directives/tel-link/sc-tel-link.module.d.ts +11 -0
- package/directives/terminal-link/sc-terminal-link.directive.d.ts +34 -0
- package/esm2022/accordion/sc-accordion-content.directive.mjs +17 -0
- package/esm2022/accordion/sc-accordion.component.mjs +88 -0
- package/esm2022/accordion/sc-accordion.module.mjs +26 -0
- package/esm2022/auth/index.mjs +8 -0
- package/esm2022/auth/interfaces/api-error-response.mjs +2 -0
- package/esm2022/auth/interfaces/index.mjs +4 -0
- package/esm2022/auth/interfaces/sc-bank-account-form-group.mjs +2 -0
- package/esm2022/auth/interfaces/sc-contact-form-group.mjs +2 -0
- package/esm2022/auth/sc-auth.module.mjs +98 -0
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +72 -0
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +70 -0
- package/{esm2020 → esm2022}/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +6 -6
- package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +321 -0
- package/esm2022/banner/sc-banner.component.mjs +234 -0
- package/esm2022/banner/sc-banner.module.mjs +29 -0
- package/esm2022/brands-list/index.mjs +3 -0
- package/esm2022/brands-list/sc-brands-list.component.mjs +24 -0
- package/esm2022/brands-list/sc-brands-list.module.mjs +22 -0
- package/esm2022/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +121 -0
- package/esm2022/cart/sc-cart.module.mjs +54 -0
- package/esm2022/catalog/categories-list/sc-categories-list.component.mjs +92 -0
- package/esm2022/catalog/category-card/sc-category-card.component.mjs +120 -0
- package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +141 -0
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +64 -0
- package/esm2022/catalog/price-history/sc-price-history.component.mjs +126 -0
- package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +49 -0
- package/{esm2020 → esm2022}/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +6 -6
- package/esm2022/catalog/sc-catalog.module.mjs +120 -0
- package/esm2022/catalog/sc-favorite-btn/sc-favorite-btn.component.mjs +42 -0
- package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +89 -0
- package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +38 -0
- package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +30 -0
- package/esm2022/contacts/sc-contacts.module.mjs +88 -0
- package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +80 -0
- package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +262 -0
- package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +75 -0
- package/{esm2020 → esm2022}/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +6 -6
- package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +64 -0
- package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +220 -0
- package/esm2022/contragents/sc-contragents.module.mjs +110 -0
- package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +230 -0
- package/{esm2020 → esm2022}/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +6 -6
- package/{esm2020 → esm2022}/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +6 -6
- package/esm2022/delivery-address/sc-delivery-address.module.mjs +84 -0
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +131 -0
- package/esm2022/directives/index.mjs +7 -0
- package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +43 -0
- package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +19 -0
- package/esm2022/directives/tel-link/sc-tel-link.directive.mjs +58 -0
- package/esm2022/directives/tel-link/sc-tel-link.module.mjs +20 -0
- package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +69 -0
- package/esm2022/files/directives/tree-top.directive.mjs +63 -0
- package/{esm2020 → esm2022}/files/directives/tree.directive.mjs +5 -5
- package/esm2022/files/file-tree-item/file-tree-item.component.mjs +18 -0
- package/esm2022/files/files-and-documents/files-and-documents.component.mjs +60 -0
- package/esm2022/files/files-and-documents.module.mjs +27 -0
- package/esm2022/files/services/tree-icon.service.mjs +49 -0
- package/{esm2020 → esm2022}/files/services/tree-loader.service.mjs +5 -5
- package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +128 -0
- package/esm2022/form-fields/form-fields.module.mjs +69 -0
- package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +134 -0
- package/{esm2020 → esm2022}/helpers/sc-px-converter.mjs +4 -4
- package/esm2022/helpers/sc-units-helper.mjs +45 -0
- package/{esm2020 → esm2022}/news/news-card/sc-news-card.component.mjs +4 -4
- package/{esm2020 → esm2022}/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +4 -4
- package/{esm2020 → esm2022}/news/sc-news.module.mjs +5 -5
- package/esm2022/order/order-item-mobile/order-item-mobile.component.mjs +80 -0
- package/esm2022/order/sc-order.module.mjs +29 -0
- package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +35 -0
- package/esm2022/pipes/index.mjs +2 -0
- package/esm2022/pipes/sc-formatted-phone.mjs +34 -0
- package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +182 -0
- package/esm2022/profile/sc-profile.module.mjs +77 -0
- package/{esm2020 → esm2022}/providers/index.mjs +1 -2
- package/esm2022/providers/scUserProviders.mjs +27 -0
- package/esm2022/public-api.mjs +30 -0
- package/esm2022/qrcode/index.mjs +3 -0
- package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +58 -0
- package/esm2022/qrcode/sc-qrcode.module.mjs +25 -0
- package/esm2022/samples/ask-to-sample-form/sc-ask-to-sample-form.component.mjs +37 -0
- package/esm2022/samples/index.mjs +5 -0
- package/esm2022/samples/interfaces/sc-i-preview-sample.mjs +2 -0
- package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +83 -0
- package/esm2022/samples/sc-sample.module.mjs +59 -0
- package/{esm2020 → esm2022}/share-button/sc-share-button.component.mjs +5 -5
- package/esm2022/share-button/sc-share-button.module.mjs +22 -0
- package/esm2022/user/index.mjs +6 -0
- package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +71 -0
- package/esm2022/user/sc-user.module.mjs +89 -0
- package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +117 -0
- package/esm2022/user/user-managers/sc-user-managers.component.mjs +41 -0
- package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +102 -0
- package/{esm2020 → esm2022}/validators/index.mjs +2 -2
- package/esm2022/validators/sc-password-confirm-matching-validator.mjs +17 -0
- package/esm2022/validators/stepValidator.mjs +18 -0
- package/esm2022/verification/sc-verification.module.mjs +68 -0
- package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +198 -0
- package/fesm2022/snabcentr-client-ui.mjs +5710 -0
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -0
- package/files/directives/tree-top.directive.d.ts +1 -1
- package/files/directives/tree.directive.d.ts +1 -1
- package/files/file-tree-item/file-tree-item.component.d.ts +3 -3
- package/files/files-and-documents/files-and-documents.component.d.ts +1 -1
- package/files/files-and-documents.module.d.ts +1 -1
- package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +17 -11
- package/form-fields/form-fields.module.d.ts +5 -3
- package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +10 -2
- package/helpers/sc-units-helper.d.ts +6 -6
- package/news/news-card/sc-news-card.component.d.ts +1 -1
- package/news/news-card-skeleton/sc-news-card-skeleton.component.d.ts +1 -1
- package/order/order-item-mobile/order-item-mobile.component.d.ts +9 -9
- package/order/sc-order.module.d.ts +4 -2
- package/order/sc-payment-status/sc-payment-status.component.d.ts +1 -1
- package/package.json +42 -45
- package/pipes/index.d.ts +1 -0
- package/pipes/sc-formatted-phone.d.ts +19 -0
- package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +3 -3
- package/profile/sc-profile.module.d.ts +6 -4
- package/providers/index.d.ts +0 -1
- package/providers/scUserProviders.d.ts +2 -3
- package/public-api.d.ts +4 -0
- package/qrcode/index.d.ts +2 -0
- package/qrcode/qrcode-dialog/sc-qrcode-dialog.component.d.ts +37 -0
- package/qrcode/sc-qrcode.module.d.ts +14 -0
- package/samples/ask-to-sample-form/sc-ask-to-sample-form.component.d.ts +18 -0
- package/samples/index.d.ts +4 -0
- package/samples/interfaces/sc-i-preview-sample.d.ts +47 -0
- package/samples/preview-sample/sc-preview-sample.component.d.ts +48 -0
- package/samples/sc-sample.module.d.ts +19 -0
- package/share-button/sc-share-button.component.d.ts +1 -1
- package/share-button/sc-share-button.module.d.ts +1 -1
- package/styles/taiga/taiga-tailwind-preset.js +121 -0
- package/styles/taiga/variables.less +17 -14
- package/styles/tailwind/tailwind.scss +252 -61
- package/user/index.d.ts +1 -0
- package/user/reset-user-password/sc-reset-user-password.component.d.ts +3 -3
- package/user/sc-user.module.d.ts +12 -8
- package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +13 -9
- package/user/user-managers/sc-user-managers.component.d.ts +26 -0
- package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +13 -8
- package/validators/index.d.ts +1 -1
- package/validators/{scPasswordConfirmMatchingValidator.d.ts → sc-password-confirm-matching-validator.d.ts} +1 -1
- package/verification/sc-verification.module.d.ts +5 -4
- package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +18 -18
- package/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.d.ts +0 -24
- package/directives/carousel-item-hidden/sc-carousel-item-hidden.module.d.ts +0 -11
- package/esm2020/accordion/sc-accordion-content.directive.mjs +0 -17
- package/esm2020/accordion/sc-accordion.component.mjs +0 -88
- package/esm2020/accordion/sc-accordion.module.mjs +0 -25
- package/esm2020/auth/index.mjs +0 -7
- package/esm2020/auth/interfaces/ApiErrorResponse.mjs +0 -2
- package/esm2020/auth/sc-auth.module.mjs +0 -79
- package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +0 -64
- package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +0 -63
- package/esm2020/banner/sc-banner.component.mjs +0 -234
- package/esm2020/banner/sc-banner.module.mjs +0 -26
- package/esm2020/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +0 -120
- package/esm2020/cart/sc-cart.module.mjs +0 -65
- package/esm2020/catalog/categories-list/sc-categories-list.component.mjs +0 -84
- package/esm2020/catalog/category-card/sc-category-card.component.mjs +0 -120
- package/esm2020/catalog/input-quantity/sc-input-quantity.component.mjs +0 -163
- package/esm2020/catalog/price-card/sc-price-card.component.mjs +0 -175
- package/esm2020/catalog/price-history/sc-price-history.component.mjs +0 -114
- package/esm2020/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +0 -37
- package/esm2020/catalog/sc-catalog.module.mjs +0 -128
- package/esm2020/catalog/sc-favorite-btn/sc-favorite-btn.component.mjs +0 -41
- package/esm2020/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +0 -71
- package/esm2020/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +0 -35
- package/esm2020/contacts/new-contact-form/sc-new-contact-form.component.mjs +0 -28
- package/esm2020/contacts/sc-contacts.module.mjs +0 -92
- package/esm2020/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +0 -71
- package/esm2020/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +0 -249
- package/esm2020/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +0 -75
- package/esm2020/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +0 -61
- package/esm2020/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +0 -183
- package/esm2020/contragents/sc-contragents.module.mjs +0 -103
- package/esm2020/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +0 -79
- package/esm2020/delivery-address/sc-delivery-address.module.mjs +0 -77
- package/esm2020/directives/carousel-item-hidden/sc-carousel-item-hidden.directive.mjs +0 -40
- package/esm2020/directives/carousel-item-hidden/sc-carousel-item-hidden.module.mjs +0 -21
- package/esm2020/directives/index.mjs +0 -3
- package/esm2020/files/directives/tree-top.directive.mjs +0 -63
- package/esm2020/files/file-tree-item/file-tree-item.component.mjs +0 -18
- package/esm2020/files/files-and-documents/files-and-documents.component.mjs +0 -60
- package/esm2020/files/files-and-documents.module.mjs +0 -26
- package/esm2020/files/services/tree-icon.service.mjs +0 -48
- package/esm2020/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +0 -122
- package/esm2020/form-fields/form-fields.module.mjs +0 -80
- package/esm2020/form-fields/suggestion-field/sc-suggestion-field.component.mjs +0 -116
- package/esm2020/helpers/sc-units-helper.mjs +0 -44
- package/esm2020/order/order-item-mobile/order-item-mobile.component.mjs +0 -79
- package/esm2020/order/sc-order.module.mjs +0 -25
- package/esm2020/order/sc-payment-status/sc-payment-status.component.mjs +0 -35
- package/esm2020/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +0 -177
- package/esm2020/profile/sc-profile.module.mjs +0 -80
- package/esm2020/providers/productsPagination.mjs +0 -99
- package/esm2020/providers/scUserProviders.mjs +0 -30
- package/esm2020/public-api.mjs +0 -26
- package/esm2020/share-button/sc-share-button.module.mjs +0 -22
- package/esm2020/user/index.mjs +0 -5
- package/esm2020/user/reset-user-password/sc-reset-user-password.component.mjs +0 -67
- package/esm2020/user/sc-user.module.mjs +0 -88
- package/esm2020/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +0 -105
- package/esm2020/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +0 -91
- package/esm2020/validators/scPasswordConfirmMatchingValidator.mjs +0 -17
- package/esm2020/validators/stepValidator.mjs +0 -18
- package/esm2020/verification/sc-verification.module.mjs +0 -73
- package/esm2020/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +0 -184
- package/fesm2015/snabcentr-client-ui.mjs +0 -4858
- package/fesm2015/snabcentr-client-ui.mjs.map +0 -1
- package/fesm2020/snabcentr-client-ui.mjs +0 -4778
- package/fesm2020/snabcentr-client-ui.mjs.map +0 -1
- package/providers/productsPagination.d.ts +0 -43
- /package/{esm2020 → esm2022}/accordion/index.mjs +0 -0
- /package/{esm2020 → esm2022}/auth/enums/auth-method.mjs +0 -0
- /package/{esm2020 → esm2022}/banner/index.mjs +0 -0
- /package/{esm2020 → esm2022}/cart/index.mjs +0 -0
- /package/{esm2020 → esm2022}/catalog/index.mjs +0 -0
- /package/{esm2020 → esm2022}/contacts/index.mjs +0 -0
- /package/{esm2020 → esm2022}/contragents/index.mjs +0 -0
- /package/{esm2020 → esm2022}/delivery-address/index.mjs +0 -0
- /package/{esm2020 → esm2022}/files/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/files/index.mjs +0 -0
- /package/{esm2020 → esm2022}/files/interfaces/tree-node.mjs +0 -0
- /package/{esm2020 → esm2022}/files/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/form-fields/index.mjs +0 -0
- /package/{esm2020 → esm2022}/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/icons/index.mjs +0 -0
- /package/{esm2020 → esm2022}/icons/sc-client-ui-icons-name.mjs +0 -0
- /package/{esm2020 → esm2022}/loader/index.mjs +0 -0
- /package/{esm2020 → esm2022}/loader/sc-i-loader.mjs +0 -0
- /package/{esm2020 → esm2022}/masks/index.mjs +0 -0
- /package/{esm2020 → esm2022}/masks/sc-account-number-mask.mjs +0 -0
- /package/{esm2020 → esm2022}/masks/sc-bic-mask.mjs +0 -0
- /package/{esm2020 → esm2022}/masks/sc-correspondent-account-mask.mjs +0 -0
- /package/{esm2020 → esm2022}/masks/sc-inn-mask.mjs +0 -0
- /package/{esm2020 → esm2022}/masks/sc-kpp-mask.mjs +0 -0
- /package/{esm2020 → esm2022}/masks/sc-okpo-mask.mjs +0 -0
- /package/{esm2020 → esm2022}/masks/sc-phone-verification-code-mask.mjs +0 -0
- /package/{esm2020 → esm2022}/news/index.mjs +0 -0
- /package/{esm2020 → esm2022}/order/index.mjs +0 -0
- /package/{esm2020 → esm2022}/profile/index.mjs +0 -0
- /package/{esm2020 → esm2022}/share-button/index.mjs +0 -0
- /package/{esm2020 → esm2022}/snabcentr-client-ui.mjs +0 -0
- /package/{esm2020 → esm2022}/tokens/index.mjs +0 -0
- /package/{esm2020 → esm2022}/tokens/sc-linear-values-token.mjs +0 -0
- /package/{esm2020 → esm2022}/validators/scBicValidator.mjs +0 -0
- /package/{esm2020 → esm2022}/validators/scCorrespondentAccountValidator.mjs +0 -0
- /package/{esm2020 → esm2022}/verification/index.mjs +0 -0
@@ -0,0 +1,121 @@
|
|
1
|
+
/* eslint-disable no-underscore-dangle */
|
2
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
|
3
|
+
import { FormControl } from '@angular/forms';
|
4
|
+
import { SC_PATH_IMAGE_NOT_FOUND, SC_URLS } from '@snabcentr/client-core';
|
5
|
+
import { TuiPreviewDialogService } from '@taiga-ui/kit';
|
6
|
+
import { skip } from 'rxjs';
|
7
|
+
import * as i0 from "@angular/core";
|
8
|
+
import * as i1 from "../../helpers/sc-units-helper";
|
9
|
+
import * as i2 from "@angular/common";
|
10
|
+
import * as i3 from "@taiga-ui/core";
|
11
|
+
import * as i4 from "../../catalog/input-quantity/sc-input-quantity.component";
|
12
|
+
import * as i5 from "../../catalog/price-warehouse-stock/sc-price-warehouse-stock.component";
|
13
|
+
import * as i6 from "@angular/forms";
|
14
|
+
import * as i7 from "@taiga-ui/kit";
|
15
|
+
import * as i8 from "@taiga-ui/polymorpheus";
|
16
|
+
import * as i9 from "@taiga-ui/addon-commerce";
|
17
|
+
/**
|
18
|
+
* Компонент карточки элемента корзины.
|
19
|
+
*/
|
20
|
+
export class ScCartItemMobileComponent {
|
21
|
+
/**
|
22
|
+
* Элемент корзины.
|
23
|
+
*/
|
24
|
+
set cartItem(data) {
|
25
|
+
this._cartItem = data;
|
26
|
+
if (data) {
|
27
|
+
this.quantityControl.patchValue(data.quantity);
|
28
|
+
}
|
29
|
+
}
|
30
|
+
/**
|
31
|
+
* Элемент корзины.
|
32
|
+
*/
|
33
|
+
get cartItem() {
|
34
|
+
return this._cartItem;
|
35
|
+
}
|
36
|
+
/**
|
37
|
+
* Инициирует экземпляр класса {@link ScCartItemMobileComponent}.
|
38
|
+
*
|
39
|
+
* @param unitsHelper Экземпляр класса-помощника для работы со значениями единиц измерения товара.
|
40
|
+
* @param previewDialogService Сервис диалогового окна предварительного просмотра.
|
41
|
+
* @param urls Список ссылок на разделы backend'a.
|
42
|
+
* @param pathImageNotFound Путь до изображения 'Товар не найден'.
|
43
|
+
*/
|
44
|
+
constructor(unitsHelper, previewDialogService, urls, pathImageNotFound) {
|
45
|
+
this.unitsHelper = unitsHelper;
|
46
|
+
this.previewDialogService = previewDialogService;
|
47
|
+
this.urls = urls;
|
48
|
+
this.pathImageNotFound = pathImageNotFound;
|
49
|
+
/**
|
50
|
+
* {@link FormControl} поля ввода количества товара в корзине.
|
51
|
+
*/
|
52
|
+
this.quantityControl = new FormControl(0, { updateOn: 'blur' });
|
53
|
+
/**
|
54
|
+
* {@link Observable} изменения количества товара в корзине.
|
55
|
+
*/
|
56
|
+
this.quantityValueChanges = this.quantityControl.valueChanges.pipe(skip(1));
|
57
|
+
/**
|
58
|
+
* Событие нажатия на кнопку "Удалить из корзины".
|
59
|
+
*/
|
60
|
+
this.clickDeleteEvent = new EventEmitter();
|
61
|
+
/**
|
62
|
+
* Событие нажатия на кнопку "Удалить из корзины".
|
63
|
+
*/
|
64
|
+
this.clickSettingsEvent = new EventEmitter();
|
65
|
+
/**
|
66
|
+
* Событие нажатия на карточку.
|
67
|
+
*/
|
68
|
+
this.clickCardEvent = new EventEmitter();
|
69
|
+
}
|
70
|
+
/**
|
71
|
+
* Продукт элемента корзины.
|
72
|
+
*/
|
73
|
+
get product() {
|
74
|
+
return this.cartItem?.product;
|
75
|
+
}
|
76
|
+
/** @inheritDoc */
|
77
|
+
ngOnInit() {
|
78
|
+
this.quantityValueChanges = this.quantityControl.valueChanges;
|
79
|
+
}
|
80
|
+
/**
|
81
|
+
* Отобразить спецификацию.
|
82
|
+
*/
|
83
|
+
showSpecification() {
|
84
|
+
this.previewDialogService.open(this.specificationPreviewRef ?? '').subscribe();
|
85
|
+
}
|
86
|
+
/**
|
87
|
+
* Возвращает ссылку на изображение карточки товара.
|
88
|
+
*/
|
89
|
+
getCardImage() {
|
90
|
+
return this.product?.getImagePreview(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;
|
91
|
+
}
|
92
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScCartItemMobileComponent, deps: [{ token: i1.ScUnitsHelper }, { token: TuiPreviewDialogService }, { token: SC_URLS }, { token: SC_PATH_IMAGE_NOT_FOUND }], target: i0.ɵɵFactoryTarget.Component }); }
|
93
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: ScCartItemMobileComponent, selector: "sc-cart-item-mobile", inputs: { cartItem: "cartItem" }, outputs: { quantityValueChanges: "quantityValueChanges", clickDeleteEvent: "clickDeleteEvent", clickSettingsEvent: "clickSettingsEvent", clickCardEvent: "clickCardEvent" }, viewQueries: [{ propertyName: "specificationPreviewRef", first: true, predicate: ["specificationPreview"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"cartItem && product; else skeleton\">\n <!-- TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" class=\"!absolute right-0 top-0\"></button> -->\n <div class=\"flex min-w-72 gap-2 rounded-xl border border-tui-base-04 bg-white p-2 shadow-sc-2\">\n <div class=\"flex w-40 items-center\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImage()\"\n [alt]=\"product.name\"\n class=\"max-h-full w-full rounded-xl object-cover\"\n />\n </div>\n <div class=\"flex w-full flex-col items-center justify-between gap-2 sm:flex-row sm:gap-5\">\n <div class=\"flex max-w-full flex-col gap-1 self-start\">\n <a\n tuiLink\n (click)=\"clickCardEvent.emit()\"\n >\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n\n <div class=\"flex w-full flex-wrap gap-x-2 gap-y-1 text-xs text-tui-base-05\">\n <p *ngIf=\"product.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n </div>\n\n <div class=\"flex w-full flex-wrap items-center gap-x-2 gap-y-1\">\n <p\n *ngIf=\"!product.priceInRub\"\n class=\"font-bold\"\n >\n {{ product.costString }}\n </p>\n <p class=\"text-xs font-bold text-tui-base-05\">{{ product.costRubString }}</p>\n <span\n *ngIf=\"product.discount\"\n class=\"flex items-center\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <tui-icon \n icon=\"@tui.info\"\n [tuiHint]=\"discountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!h-4 !text-xs\"\n ></tui-icon>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n </div>\n\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n <div\n *ngIf=\"cartItem.height || cartItem.length || cartItem.width\"\n class=\"flex items-center gap-1\"\n >\n <button\n tuiIconButton\n iconStart=\"@tui.settings\"\n (click)=\"clickSettingsEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"mr-2 !self-center\"\n ></button>\n <div class=\"flex flex-wrap gap-x-2 text-xs font-thin text-tui-base-04\">\n <p *ngIf=\"cartItem.marker\">\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n <ng-container *ngIf=\"cartItem.height; else length\">\n <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"cartItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n </ng-template>\n </div>\n </div>\n\n <a\n tuiLink\n *ngIf=\"cartItem.specificationImgUrl\"\n (click)=\"showSpecification()\"\n >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n >\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"cartItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex flex-col gap-1 self-start sm:mr-9 sm:self-center\">\n <div class=\"flex gap-2\">\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-28\"\n ></sc-input-quantity>\n <button\n tuiIconButton\n iconStart=\"@tui.trash-2\"\n [style.border-radius.%]=\"100\"\n size=\"xs\"\n (click)=\"clickDeleteEvent.emit()\"\n ></button>\n </div>\n <p class=\"text-sm font-bold text-tui-text-01\">\u0418\u0442\u043E\u0433\u043E: {{ cartItem.costRub | tuiFormatNumber }} {{ 'RUB' | tuiCurrency }}</p>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"flex w-full gap-2\">\n <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n <div class=\"flex grow flex-col gap-2.5 bg-white\">\n <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "component", type: i4.ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "showLoader", "showCross", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "component", type: i5.ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i3.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: i3.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable"] }, { kind: "directive", type: i7.TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "directive", type: i8.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "pipe", type: i9.TuiCurrencyPipe, name: "tuiCurrency" }, { kind: "pipe", type: i3.TuiFormatNumberPipe, name: "tuiFormatNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
94
|
+
}
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScCartItemMobileComponent, decorators: [{
|
96
|
+
type: Component,
|
97
|
+
args: [{ selector: 'sc-cart-item-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"cartItem && product; else skeleton\">\n <!-- TODO: \u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u0444\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u0430.\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" class=\"!absolute right-0 top-0\"></button> -->\n <div class=\"flex min-w-72 gap-2 rounded-xl border border-tui-base-04 bg-white p-2 shadow-sc-2\">\n <div class=\"flex w-40 items-center\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImage()\"\n [alt]=\"product.name\"\n class=\"max-h-full w-full rounded-xl object-cover\"\n />\n </div>\n <div class=\"flex w-full flex-col items-center justify-between gap-2 sm:flex-row sm:gap-5\">\n <div class=\"flex max-w-full flex-col gap-1 self-start\">\n <a\n tuiLink\n (click)=\"clickCardEvent.emit()\"\n >\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n\n <div class=\"flex w-full flex-wrap gap-x-2 gap-y-1 text-xs text-tui-base-05\">\n <p *ngIf=\"product.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n </div>\n\n <div class=\"flex w-full flex-wrap items-center gap-x-2 gap-y-1\">\n <p\n *ngIf=\"!product.priceInRub\"\n class=\"font-bold\"\n >\n {{ product.costString }}\n </p>\n <p class=\"text-xs font-bold text-tui-base-05\">{{ product.costRubString }}</p>\n <span\n *ngIf=\"product.discount\"\n class=\"flex items-center\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <tui-icon \n icon=\"@tui.info\"\n [tuiHint]=\"discountHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!h-4 !text-xs\"\n ></tui-icon>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n </div>\n\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n <div\n *ngIf=\"cartItem.height || cartItem.length || cartItem.width\"\n class=\"flex items-center gap-1\"\n >\n <button\n tuiIconButton\n iconStart=\"@tui.settings\"\n (click)=\"clickSettingsEvent.emit()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"mr-2 !self-center\"\n ></button>\n <div class=\"flex flex-wrap gap-x-2 text-xs font-thin text-tui-base-04\">\n <p *ngIf=\"cartItem.marker\">\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n <ng-container *ngIf=\"cartItem.height; else length\">\n <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"cartItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n </ng-template>\n </div>\n </div>\n\n <a\n tuiLink\n *ngIf=\"cartItem.specificationImgUrl\"\n (click)=\"showSpecification()\"\n >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n >\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"cartItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n <div class=\"flex flex-col gap-1 self-start sm:mr-9 sm:self-center\">\n <div class=\"flex gap-2\">\n <sc-input-quantity\n #inputQuantity\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"unitsHelper.productMultiplicity(product)\"\n (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n class=\"w-28\"\n ></sc-input-quantity>\n <button\n tuiIconButton\n iconStart=\"@tui.trash-2\"\n [style.border-radius.%]=\"100\"\n size=\"xs\"\n (click)=\"clickDeleteEvent.emit()\"\n ></button>\n </div>\n <p class=\"text-sm font-bold text-tui-text-01\">\u0418\u0442\u043E\u0433\u043E: {{ cartItem.costRub | tuiFormatNumber }} {{ 'RUB' | tuiCurrency }}</p>\n </div>\n </div>\n </div>\n</ng-container>\n\n<ng-template #skeleton>\n <div class=\"flex w-full gap-2\">\n <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n <div class=\"flex grow flex-col gap-2.5 bg-white\">\n <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n" }]
|
98
|
+
}], ctorParameters: () => [{ type: i1.ScUnitsHelper }, { type: i7.TuiPreviewDialogService, decorators: [{
|
99
|
+
type: Inject,
|
100
|
+
args: [TuiPreviewDialogService]
|
101
|
+
}] }, { type: undefined, decorators: [{
|
102
|
+
type: Inject,
|
103
|
+
args: [SC_URLS]
|
104
|
+
}] }, { type: undefined, decorators: [{
|
105
|
+
type: Inject,
|
106
|
+
args: [SC_PATH_IMAGE_NOT_FOUND]
|
107
|
+
}] }], propDecorators: { cartItem: [{
|
108
|
+
type: Input
|
109
|
+
}], specificationPreviewRef: [{
|
110
|
+
type: ViewChild,
|
111
|
+
args: ['specificationPreview']
|
112
|
+
}], quantityValueChanges: [{
|
113
|
+
type: Output
|
114
|
+
}], clickDeleteEvent: [{
|
115
|
+
type: Output
|
116
|
+
}], clickSettingsEvent: [{
|
117
|
+
type: Output
|
118
|
+
}], clickCardEvent: [{
|
119
|
+
type: Output
|
120
|
+
}] } });
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC1pdGVtLW1vYmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2FydC9jYXJ0LWl0ZW0tbW9iaWxlL3NjLWNhcnQtaXRlbS1tb2JpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhcnQvY2FydC1pdGVtLW1vYmlsZS9zYy1jYXJ0LWl0ZW0tbW9iaWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUV6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQWtDLE1BQU0sd0JBQXdCLENBQUM7QUFFMUcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7O0FBSXhDOztHQUVHO0FBTUgsTUFBTSxPQUFPLHlCQUF5QjtJQUNsQzs7T0FFRztJQUNILElBQ1csUUFBUSxDQUFDLElBQTRCO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBMENEOzs7Ozs7O09BT0c7SUFDSCxZQUNvQixXQUEwQixFQUV6QixvQkFBNkMsRUFDNUIsSUFBYSxFQUNHLGlCQUF5QjtRQUozRCxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUV6Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXlCO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQVM7UUFDRyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7UUEvQy9FOztXQUVHO1FBQ0ksb0JBQWUsR0FBK0IsSUFBSSxXQUFXLENBQWdCLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRTdHOztXQUVHO1FBRUkseUJBQW9CLEdBQThCLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6Rzs7V0FFRztRQUVJLHFCQUFnQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXZFOztXQUVHO1FBRUksdUJBQWtCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFekU7O1dBRUc7UUFFSSxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBcUJsRSxDQUFDO0lBRUo7O09BRUc7SUFDSCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxRQUFRO1FBQ1gsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7T0FFRztJQUNJLGlCQUFpQjtRQUNwQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNwSCxDQUFDOzhHQXBHUSx5QkFBeUIsK0NBc0V0Qix1QkFBdUIsYUFFdkIsT0FBTyxhQUNQLHVCQUF1QjtrR0F6RTFCLHlCQUF5QiwyWUNuQnRDLDQxT0FrSkE7OzJGRC9IYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0kscUJBQXFCLG1CQUVkLHVCQUF1QixDQUFDLE1BQU07OzBCQXdFMUMsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUU5QixNQUFNOzJCQUFDLE9BQU87OzBCQUNkLE1BQU07MkJBQUMsdUJBQXVCO3lDQXBFeEIsUUFBUTtzQkFEbEIsS0FBSztnQkFvQlcsdUJBQXVCO3NCQUR2QyxTQUFTO3VCQUFDLHNCQUFzQjtnQkFZMUIsb0JBQW9CO3NCQUQxQixNQUFNO2dCQU9BLGdCQUFnQjtzQkFEdEIsTUFBTTtnQkFPQSxrQkFBa0I7c0JBRHhCLE1BQU07Z0JBT0EsY0FBYztzQkFEcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQsIFNDX1VSTFMsIFNjQ2FydEl0ZW0sIFNjSVVybHMsIFNjUHJvZHVjdCB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpRGlhbG9nQ29udGV4dCB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aVByZXZpZXdEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBza2lwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNjVW5pdHNIZWxwZXIgfSBmcm9tICcuLi8uLi9oZWxwZXJzL3NjLXVuaXRzLWhlbHBlcic7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC60LDRgNGC0L7Rh9C60Lgg0Y3Qu9C10LzQtdC90YLQsCDQutC+0YDQt9C40L3Riy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1jYXJ0LWl0ZW0tbW9iaWxlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtY2FydC1pdGVtLW1vYmlsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2FydEl0ZW1Nb2JpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCt0LvQtdC80LXQvdGCINC60L7RgNC30LjQvdGLLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBjYXJ0SXRlbShkYXRhOiBTY0NhcnRJdGVtIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2NhcnRJdGVtID0gZGF0YTtcblxuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5xdWFudGl0eUNvbnRyb2wucGF0Y2hWYWx1ZShkYXRhLnF1YW50aXR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCt0LvQtdC80LXQvdGCINC60L7RgNC30LjQvdGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY2FydEl0ZW0oKTogU2NDYXJ0SXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYXJ0SXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQtSDRgdC/0LXRhtC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnc3BlY2lmaWNhdGlvblByZXZpZXcnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3BlY2lmaWNhdGlvblByZXZpZXdSZWY/OiBUZW1wbGF0ZVJlZjxUdWlEaWFsb2dDb250ZXh0PjtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBGb3JtQ29udHJvbH0g0L/QvtC70Y8g0LLQstC+0LTQsCDQutC+0LvQuNGH0LXRgdGC0LLQsCDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICovXG4gICAgcHVibGljIHF1YW50aXR5Q29udHJvbDogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4gPSBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4oMCwgeyB1cGRhdGVPbjogJ2JsdXInIH0pO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40LfQvNC10L3QtdC90LjRjyDQutC+0LvQuNGH0LXRgdGC0LLQsCDRgtC+0LLQsNGA0LAg0LIg0LrQvtGA0LfQuNC90LUuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHF1YW50aXR5VmFsdWVDaGFuZ2VzOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+ID0gdGhpcy5xdWFudGl0eUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc2tpcCgxKSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCj0LTQsNC70LjRgtGMINC40Lcg0LrQvtGA0LfQuNC90YtcIi5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tEZWxldGVFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMgXCLQo9C00LDQu9C40YLRjCDQuNC3INC60L7RgNC30LjQvdGLXCIuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsaWNrU2V0dGluZ3NFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutCw0YDRgtC+0YfQutGDLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0NhcmRFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0K3Qu9C10LzQtdC90YIg0LrQvtGA0LfQuNC90YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY2FydEl0ZW0/OiBTY0NhcnRJdGVtO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNC40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NDYXJ0SXRlbU1vYmlsZUNvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdW5pdHNIZWxwZXIg0K3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsC3Qv9C+0LzQvtGJ0L3QuNC60LAg0LTQu9GPINGA0LDQsdC+0YLRiyDRgdC+INC30L3QsNGH0LXQvdC40Y/QvNC4INC10LTQuNC90LjRhiDQuNC30LzQtdGA0LXQvdC40Y8g0YLQvtCy0LDRgNCwLlxuICAgICAqIEBwYXJhbSBwcmV2aWV3RGlhbG9nU2VydmljZSDQodC10YDQstC40YEg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCDQv9GA0LXQtNCy0LDRgNC40YLQtdC70YzQvdC+0LPQviDQv9GA0L7RgdC80L7RgtGA0LAuXG4gICAgICogQHBhcmFtIHVybHMg0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQnYS5cbiAgICAgKiBAcGFyYW0gcGF0aEltYWdlTm90Rm91bmQg0J/Rg9GC0Ywg0LTQviDQuNC30L7QsdGA0LDQttC10L3QuNGPICfQotC+0LLQsNGAINC90LUg0L3QsNC50LTQtdC9Jy5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSB1bml0c0hlbHBlcjogU2NVbml0c0hlbHBlcixcbiAgICAgICAgQEluamVjdChUdWlQcmV2aWV3RGlhbG9nU2VydmljZSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcmV2aWV3RGlhbG9nU2VydmljZTogVHVpUHJldmlld0RpYWxvZ1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoU0NfVVJMUykgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzLFxuICAgICAgICBASW5qZWN0KFNDX1BBVEhfSU1BR0VfTk9UX0ZPVU5EKSBwcml2YXRlIHJlYWRvbmx5IHBhdGhJbWFnZU5vdEZvdW5kOiBzdHJpbmdcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QtNGD0LrRgiDRjdC70LXQvNC10L3RgtCwINC60L7RgNC30LjQvdGLLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJvZHVjdCgpOiBTY1Byb2R1Y3QgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXJ0SXRlbT8ucHJvZHVjdDtcbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucXVhbnRpdHlWYWx1ZUNoYW5nZXMgPSB0aGlzLnF1YW50aXR5Q29udHJvbC52YWx1ZUNoYW5nZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7RgtC+0LHRgNCw0LfQuNGC0Ywg0YHQv9C10YbQuNGE0LjQutCw0YbQuNGOLlxuICAgICAqL1xuICAgIHB1YmxpYyBzaG93U3BlY2lmaWNhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aWV3RGlhbG9nU2VydmljZS5vcGVuKHRoaXMuc3BlY2lmaWNhdGlvblByZXZpZXdSZWYgPz8gJycpLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0YHRi9C70LrRgyDQvdCwINC40LfQvtCx0YDQsNC20LXQvdC40LUg0LrQsNGA0YLQvtGH0LrQuCDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGdldENhcmRJbWFnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9kdWN0Py5nZXRJbWFnZVByZXZpZXcodGhpcy51cmxzLmltZ1NlcnZlclVybCkgPz8gdGhpcy51cmxzLmltZ1NlcnZlclVybCArIHRoaXMucGF0aEltYWdlTm90Rm91bmQ7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcnRJdGVtICYmIHByb2R1Y3Q7IGVsc2Ugc2tlbGV0b25cIj5cbiAgICA8IS0tIFRPRE86INCd0LXQvtCx0YXQvtC00LjQvNCwINGA0LXQsNC70LjQt9Cw0YbQuNGPINGE0YPQvdC60YbQuNC+0L3QsNC70LAuXG4gICAgPGJ1dHRvbiB0dWlJY29uQnV0dG9uIHNpemU9XCJtXCIgaWNvbj1cInNjSWNvblZlcnRpY2FsVGhyZWVEb3RzXCIgYXBwZWFyYW5jZT1cImZsb2F0XCIgY2xhc3M9XCIhYWJzb2x1dGUgcmlnaHQtMCB0b3AtMFwiPjwvYnV0dG9uPiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBtaW4tdy03MiBnYXAtMiByb3VuZGVkLXhsIGJvcmRlciBib3JkZXItdHVpLWJhc2UtMDQgYmctd2hpdGUgcC0yIHNoYWRvdy1zYy0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctNDAgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrQ2FyZEV2ZW50LmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXRDYXJkSW1hZ2UoKVwiXG4gICAgICAgICAgICAgICAgW2FsdF09XCJwcm9kdWN0Lm5hbWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF4LWgtZnVsbCB3LWZ1bGwgcm91bmRlZC14bCBvYmplY3QtY292ZXJcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIHNtOmZsZXgtcm93IHNtOmdhcC01XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtYXgtdy1mdWxsIGZsZXgtY29sIGdhcC0xIHNlbGYtc3RhcnRcIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0NhcmRFdmVudC5lbWl0KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj57eyBwcm9kdWN0Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGZsZXgtd3JhcCBnYXAteC0yIGdhcC15LTEgdGV4dC14cyB0ZXh0LXR1aS1iYXNlLTA1XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwicHJvZHVjdC5wYWNrXCI+0J3QvtGA0LzQsCDRg9C/0LDQutC+0LLQutC4OiB7eyBwcm9kdWN0LnBhY2sgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwPtCQ0YDRgtC40LrRg9C7OiB7eyBwcm9kdWN0LmNvZGUgfX08L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAteC0yIGdhcC15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXByb2R1Y3QucHJpY2VJblJ1YlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvbnQtYm9sZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb2R1Y3QuY29zdFN0cmluZyB9fVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC14cyBmb250LWJvbGQgdGV4dC10dWktYmFzZS0wNVwiPnt7IHByb2R1Y3QuY29zdFJ1YlN0cmluZyB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicHJvZHVjdC5kaXNjb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaW5lLXRocm91Z2hcIj57eyBwcm9kdWN0LmRpc2NvdW50Q29zdFN0cmluZyB9fTwvc3Bhbj4gJm5ic3A7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LXR1aS1zdWNjZXNzLWZpbGxcIj4gLXt7IHByb2R1Y3QuZGlzY291bnQucGVyY2VudCB9fSUgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS1pY29uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJAdHVpLmluZm9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0dWlIaW50XT1cImRpc2NvdW50SGludFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R1aUhpbnRTaG93RGVsYXldPVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlIaW50RGlyZWN0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiFoLTQgIXRleHQteHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvdHVpLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Rpc2NvdW50SGludD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1ib2xkXCI+e3sgcHJvZHVjdC5kaXNjb3VudC5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb2R1Y3QuZGlzY291bnQuZXhwaXJlZEF0IGFzIGV4cGlyZWRBdFwiPtCU0LDRgtCwINC+0LrQvtC90YfQsNC90LjRjzoge3sgZXhwaXJlZEF0IH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8c2MtcHJpY2Utd2FyZWhvdXNlLXN0b2NrIFtwcm9kdWN0XT1cInByb2R1Y3RcIj48L3NjLXByaWNlLXdhcmVob3VzZS1zdG9jaz5cblxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjYXJ0SXRlbS5oZWlnaHQgfHwgY2FydEl0ZW0ubGVuZ3RoIHx8IGNhcnRJdGVtLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNldHRpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja1NldHRpbmdzRXZlbnQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtci0yICFzZWxmLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC14LTIgdGV4dC14cyBmb250LXRoaW4gdGV4dC10dWktYmFzZS0wNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjYXJ0SXRlbS5tYXJrZXJcIj7QnNCw0YDQutC40YDQvtCy0LrQsDoge3sgY2FydEl0ZW0ubWFya2VyIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgKm5nSWY9XCJjYXJ0SXRlbS53aWR0aFwiPtCo0LjRgNC40L3QsDoge3sgY2FydEl0ZW0ud2lkdGggfX0g0LwuPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhcnRJdGVtLmhlaWdodDsgZWxzZSBsZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7QktGL0YHQvtGC0LA6IHt7IGNhcnRJdGVtLmhlaWdodCB9fSDQvC48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGVuZ3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwICpuZ0lmPVwiY2FydEl0ZW0ubGVuZ3RoXCI+0JTQu9C40L3QsDoge3sgY2FydEl0ZW0ubGVuZ3RoIH19INC8LjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNhcnRJdGVtLnNwZWNpZmljYXRpb25JbWdVcmxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1NwZWNpZmljYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgID7QodC/0LXRhtC40YTQuNC60LDRhtC40Y88L2FcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICNzcGVjaWZpY2F0aW9uUHJldmlld1xuICAgICAgICAgICAgICAgICAgICBsZXQtcHJldmlld1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1wcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICBbcm90YXRhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt6b29tYWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY2FydEl0ZW0uc3BlY2lmaWNhdGlvbkltZ1VybCBhcyBzcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cInByZXZpZXdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY2FydEl0ZW0uc3BlY2lmaWNhdGlvbkltZ1VybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkueFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJDbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aVByZXZpZXdBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlldy5jb21wbGV0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC90dWktcHJldmlldz5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMSBzZWxmLXN0YXJ0IHNtOm1yLTkgc206c2VsZi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8c2MtaW5wdXQtcXVhbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICNpbnB1dFF1YW50aXR5XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1YW50aXR5Q29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicXVhbnRpdHlDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q3Jvc3NdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0ZXBdPVwidW5pdHNIZWxwZXIucHJvZHVjdE11bHRpcGxpY2l0eShwcm9kdWN0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJpbnB1dFF1YW50aXR5Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LmJsdXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMjhcIlxuICAgICAgICAgICAgICAgICAgICA+PC9zYy1pbnB1dC1xdWFudGl0eT5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS50cmFzaC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXItcmFkaXVzLiVdPVwiMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJ4c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tEZWxldGVFdmVudC5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtYm9sZCB0ZXh0LXR1aS10ZXh0LTAxXCI+0JjRgtC+0LPQvjoge3sgY2FydEl0ZW0uY29zdFJ1YiB8IHR1aUZvcm1hdE51bWJlciB9fSB7eyAnUlVCJyB8IHR1aUN1cnJlbmN5IH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjc2tlbGV0b24+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGdhcC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaXplLTIwIHJvdW5kZWQteGwgYmctdHVpLWJhc2UtMDJcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ3JvdyBmbGV4LWNvbCBnYXAtMi41IGJnLXdoaXRlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC00IHctZnVsbCByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC00IHctMy81IHJvdW5kZWQteGwgYmctdHVpLWJhc2UtMDJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTQgdy00LzUgcm91bmRlZC14bCBiZy10dWktYmFzZS0wMlwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
2
|
+
import { NgModule } from '@angular/core';
|
3
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
4
|
+
import { TuiCurrencyPipe } from '@taiga-ui/addon-commerce';
|
5
|
+
import { TuiButton, TuiFormatNumberPipe, TuiHint, TuiIcon, TuiLink } from '@taiga-ui/core';
|
6
|
+
import { TuiPreview } from '@taiga-ui/kit';
|
7
|
+
import { PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
|
8
|
+
import { ScCatalogModule } from '../catalog';
|
9
|
+
import { ScCartItemMobileComponent } from './cart-item-mobile/sc-cart-item-mobile.component';
|
10
|
+
import * as i0 from "@angular/core";
|
11
|
+
import * as i1 from "@taiga-ui/core";
|
12
|
+
import * as i2 from "@taiga-ui/kit";
|
13
|
+
/**
|
14
|
+
* Модуль корзины.
|
15
|
+
*/
|
16
|
+
export class ScCartModule {
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScCartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
18
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.3", ngImport: i0, type: ScCartModule, declarations: [ScCartItemMobileComponent], imports: [CommonModule,
|
19
|
+
TuiLink,
|
20
|
+
ScCatalogModule,
|
21
|
+
TuiButton,
|
22
|
+
TuiCurrencyPipe,
|
23
|
+
TuiFormatNumberPipe,
|
24
|
+
TuiIcon, i1.TuiHintComponent, i1.TuiHintDirective, i1.TuiHintOptionsDirective, i1.TuiHintUnstyled, i1.TuiHintDriver, i1.TuiHintPosition, i1.TuiHintHover, i1.TuiHintOverflow, i1.TuiHintDescribe, i1.TuiHintHost, i1.TuiHintManual, i1.TuiHintPointer, FormsModule,
|
25
|
+
ReactiveFormsModule, i2.TuiPreviewComponent, i2.TuiPreviewTitle, i2.TuiPreviewPagination, i2.TuiPreviewAction, i2.TuiPreviewZoom, PolymorpheusTemplate,
|
26
|
+
PolymorpheusOutlet], exports: [ScCartItemMobileComponent] }); }
|
27
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScCartModule, imports: [CommonModule,
|
28
|
+
ScCatalogModule,
|
29
|
+
TuiIcon, i1.TuiHintComponent, FormsModule,
|
30
|
+
ReactiveFormsModule, i2.TuiPreviewComponent, i2.TuiPreviewTitle, i2.TuiPreviewPagination, i2.TuiPreviewZoom] }); }
|
31
|
+
}
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScCartModule, decorators: [{
|
33
|
+
type: NgModule,
|
34
|
+
args: [{
|
35
|
+
declarations: [ScCartItemMobileComponent],
|
36
|
+
exports: [ScCartItemMobileComponent],
|
37
|
+
imports: [
|
38
|
+
CommonModule,
|
39
|
+
TuiLink,
|
40
|
+
ScCatalogModule,
|
41
|
+
TuiButton,
|
42
|
+
TuiCurrencyPipe,
|
43
|
+
TuiFormatNumberPipe,
|
44
|
+
TuiIcon,
|
45
|
+
...TuiHint,
|
46
|
+
FormsModule,
|
47
|
+
ReactiveFormsModule,
|
48
|
+
...TuiPreview,
|
49
|
+
PolymorpheusTemplate,
|
50
|
+
PolymorpheusOutlet,
|
51
|
+
],
|
52
|
+
}]
|
53
|
+
}] });
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2FydC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2FydC9zYy1jYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWxGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0RBQWtELENBQUM7Ozs7QUFFN0Y7O0dBRUc7QUFvQkgsTUFBTSxPQUFPLFlBQVk7OEdBQVosWUFBWTsrR0FBWixZQUFZLGlCQWxCTix5QkFBeUIsYUFHcEMsWUFBWTtZQUNaLE9BQU87WUFDUCxlQUFlO1lBQ2YsU0FBUztZQUNULGVBQWU7WUFDZixtQkFBbUI7WUFDbkIsT0FBTyxnUEFFUCxXQUFXO1lBQ1gsbUJBQW1CLCtHQUVuQixvQkFBb0I7WUFDcEIsa0JBQWtCLGFBZFoseUJBQXlCOytHQWlCMUIsWUFBWSxZQWZqQixZQUFZO1lBRVosZUFBZTtZQUlmLE9BQU8sdUJBRVAsV0FBVztZQUNYLG1CQUFtQjs7MkZBTWQsWUFBWTtrQkFuQnhCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3pDLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUNwQyxPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsU0FBUzt3QkFDVCxlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxHQUFHLE9BQU87d0JBQ1YsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLEdBQUcsVUFBVTt3QkFDYixvQkFBb0I7d0JBQ3BCLGtCQUFrQjtxQkFDckI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHVpQ3VycmVuY3lQaXBlIH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNvbW1lcmNlJztcbmltcG9ydCB7IFR1aUJ1dHRvbiwgVHVpRm9ybWF0TnVtYmVyUGlwZSwgVHVpSGludCwgVHVpSWNvbiwgVHVpTGluayB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aVByZXZpZXcgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IFBvbHltb3JwaGV1c091dGxldCwgUG9seW1vcnBoZXVzVGVtcGxhdGUgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcblxuaW1wb3J0IHsgU2NDYXRhbG9nTW9kdWxlIH0gZnJvbSAnLi4vY2F0YWxvZyc7XG5pbXBvcnQgeyBTY0NhcnRJdGVtTW9iaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJ0LWl0ZW0tbW9iaWxlL3NjLWNhcnQtaXRlbS1tb2JpbGUuY29tcG9uZW50JztcblxuLyoqXG4gKiDQnNC+0LTRg9C70Ywg0LrQvtGA0LfQuNC90YsuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbU2NDYXJ0SXRlbU1vYmlsZUNvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW1NjQ2FydEl0ZW1Nb2JpbGVDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBUdWlMaW5rLFxuICAgICAgICBTY0NhdGFsb2dNb2R1bGUsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpQ3VycmVuY3lQaXBlLFxuICAgICAgICBUdWlGb3JtYXROdW1iZXJQaXBlLFxuICAgICAgICBUdWlJY29uLFxuICAgICAgICAuLi5UdWlIaW50LFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgLi4uVHVpUHJldmlldyxcbiAgICAgICAgUG9seW1vcnBoZXVzVGVtcGxhdGUsXG4gICAgICAgIFBvbHltb3JwaGV1c091dGxldCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTY0NhcnRNb2R1bGUge31cbiJdfQ==
|
@@ -0,0 +1,92 @@
|
|
1
|
+
import { __decorate } from "tslib";
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any,class-methods-use-this,lodash/prefer-some,lodash/prefer-lodash-method,no-param-reassign */
|
3
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, EventEmitter, Inject, inject, Input, Output } from '@angular/core';
|
4
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
5
|
+
import { IS_RUNNING_ON_TERMINAL, SC_URLS, TERMINAL_PROVIDERS } from '@snabcentr/client-core';
|
6
|
+
import { TUI_IS_MOBILE, tuiPure } from '@taiga-ui/cdk';
|
7
|
+
import { filter, tap } from 'rxjs';
|
8
|
+
import * as i0 from "@angular/core";
|
9
|
+
import * as i1 from "@snabcentr/client-core";
|
10
|
+
import * as i2 from "@angular/common";
|
11
|
+
import * as i3 from "@taiga-ui/core";
|
12
|
+
import * as i4 from "@taiga-ui/cdk";
|
13
|
+
/**
|
14
|
+
* Компонент списка категорий.
|
15
|
+
*/
|
16
|
+
export class ScCategoriesListComponent {
|
17
|
+
/**
|
18
|
+
* Инициализирует экземпляр класса {@link ScCategoriesListComponent}.
|
19
|
+
*
|
20
|
+
* @param urls объект информации о базовом списке ссылок приложения.
|
21
|
+
* @param terminal Данные о запуске приложения на терминале.
|
22
|
+
* @param favoriteService Сервис для работы с корзиной.
|
23
|
+
* @param cdr Объект для работы с обнаружением изменений.
|
24
|
+
*/
|
25
|
+
constructor(urls, terminal, favoriteService, cdr) {
|
26
|
+
this.urls = urls;
|
27
|
+
this.terminal = terminal;
|
28
|
+
this.favoriteService = favoriteService;
|
29
|
+
this.cdr = cdr;
|
30
|
+
/**
|
31
|
+
* Признак того, отображается этот компонент на мобильном устройстве или нет.
|
32
|
+
*/
|
33
|
+
this.isMobile = inject(TUI_IS_MOBILE);
|
34
|
+
/**
|
35
|
+
* Событие нажатия на категорию.
|
36
|
+
*/
|
37
|
+
this.clickCategoryEvent = new EventEmitter();
|
38
|
+
/**
|
39
|
+
* Ссылка для автоматического управления уничтожением зависимостей.
|
40
|
+
*/
|
41
|
+
this.destroyRef = inject(DestroyRef);
|
42
|
+
}
|
43
|
+
/** @inheritDoc */
|
44
|
+
ngOnInit() {
|
45
|
+
this.favoriteService.categories$
|
46
|
+
.pipe(filter(() => !!this.categories && this.categories.length > 0 && 'id' in this.categories[0]), tap((categories) => {
|
47
|
+
this.categories.forEach((category) => {
|
48
|
+
category.isFavorite = categories.findIndex((item) => category.id === item.id) !== -1;
|
49
|
+
});
|
50
|
+
}), takeUntilDestroyed(this.destroyRef))
|
51
|
+
.subscribe(() => {
|
52
|
+
this.cdr.markForCheck();
|
53
|
+
});
|
54
|
+
}
|
55
|
+
/**
|
56
|
+
* Возвращает путь до изображения на сервере.
|
57
|
+
*
|
58
|
+
* @param imgPath путь, где хранится изображение.
|
59
|
+
*/
|
60
|
+
getCategoryImage(imgPath) {
|
61
|
+
return `${this.urls.imgServerUrl}/${imgPath}`;
|
62
|
+
}
|
63
|
+
/**
|
64
|
+
* Проверяет наличие хотя бы одного изображения.
|
65
|
+
*
|
66
|
+
* @param categories Список категорий.
|
67
|
+
*/
|
68
|
+
checkImagesExists(categories) {
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
70
|
+
return categories.some((item) => item.properties?.image);
|
71
|
+
}
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScCategoriesListComponent, deps: [{ token: SC_URLS }, { token: IS_RUNNING_ON_TERMINAL }, { token: i1.ScFavoriteService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: ScCategoriesListComponent, selector: "sc-categories-list", inputs: { categories: "categories" }, outputs: { clickCategoryEvent: "clickCategoryEvent" }, providers: [TERMINAL_PROVIDERS], ngImport: i0, template: "<div\n [ngClass]=\"{ '!flex !flex-col': terminal.isRunningOnTerminal }\"\n class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\"\n>\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-icon \n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n icon=\"@tui.camera-off\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-icon>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-icon \n *ngIf=\"item.isFavorite\"\n icon=\"scIconFavoriteFill\"\n class=\"mr-auto !text-sm text-tui-primary\"\n ></tui-icon>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-icon \n icon=\"@tui.chevron-right\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-icon \n icon=\"@tui.chevron-right\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: i4.TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
74
|
+
}
|
75
|
+
__decorate([
|
76
|
+
tuiPure
|
77
|
+
], ScCategoriesListComponent.prototype, "checkImagesExists", null);
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScCategoriesListComponent, decorators: [{
|
79
|
+
type: Component,
|
80
|
+
args: [{ selector: 'sc-categories-list', providers: [TERMINAL_PROVIDERS], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [ngClass]=\"{ '!flex !flex-col': terminal.isRunningOnTerminal }\"\n class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\"\n>\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-icon \n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n icon=\"@tui.camera-off\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-icon>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-icon \n *ngIf=\"item.isFavorite\"\n icon=\"scIconFavoriteFill\"\n class=\"mr-auto !text-sm text-tui-primary\"\n ></tui-icon>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-icon \n icon=\"@tui.chevron-right\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-icon \n icon=\"@tui.chevron-right\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </button>\n</ng-template>\n" }]
|
81
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
82
|
+
type: Inject,
|
83
|
+
args: [SC_URLS]
|
84
|
+
}] }, { type: undefined, decorators: [{
|
85
|
+
type: Inject,
|
86
|
+
args: [IS_RUNNING_ON_TERMINAL]
|
87
|
+
}] }, { type: i1.ScFavoriteService }, { type: i0.ChangeDetectorRef }], propDecorators: { categories: [{
|
88
|
+
type: Input
|
89
|
+
}], clickCategoryEvent: [{
|
90
|
+
type: Output
|
91
|
+
}], checkImagesExists: [] } });
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcmllcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL2NhdGVnb3JpZXMtbGlzdC9zYy1jYXRlZ29yaWVzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcmllcy1saXN0L3NjLWNhdGVnb3JpZXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0lBQStJO0FBRS9JLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZKLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxPQUFPLEVBQStELGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUosT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQUVuQzs7R0FFRztBQU9ILE1BQU0sT0FBTyx5QkFBeUI7SUF1QmxDOzs7Ozs7O09BT0c7SUFDSCxZQUVxQixJQUFhLEVBRWQsUUFBNkIsRUFDNUIsZUFBa0MsRUFDbEMsR0FBc0I7UUFKdEIsU0FBSSxHQUFKLElBQUksQ0FBUztRQUVkLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNsQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTlCM0M7O1dBRUc7UUFDYSxhQUFRLEdBQVksTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTFEOztXQUVHO1FBRUksdUJBQWtCLEdBQW9CLElBQUksWUFBWSxFQUFLLENBQUM7UUFFbkU7O1dBRUc7UUFDSyxlQUFVLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBaUJqRCxDQUFDO0lBRUosa0JBQWtCO0lBQ1gsUUFBUTtRQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVzthQUMzQixJQUFJLENBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMzRixHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNkLElBQUksQ0FBQyxVQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNuRCxRQUFRLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3pGLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUN0QzthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxPQUFlO1FBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUVJLGlCQUFpQixDQUFDLFVBQWlCO1FBQ3RDLHNFQUFzRTtRQUN0RSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs4R0EzRVEseUJBQXlCLGtCQWdDdEIsT0FBTyxhQUVQLHNCQUFzQjtrR0FsQ3pCLHlCQUF5QiwwSUFIdkIsQ0FBQyxrQkFBa0IsQ0FBQywwQkNkbkMsc3VGQTREQTs7QUQ2Qlc7SUFETixPQUFPO2tFQUlQOzJGQTNFUSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0ksb0JBQW9CLGFBRW5CLENBQUMsa0JBQWtCLENBQUMsbUJBQ2QsdUJBQXVCLENBQUMsTUFBTTs7MEJBa0MxQyxNQUFNOzJCQUFDLE9BQU87OzBCQUVkLE1BQU07MkJBQUMsc0JBQXNCO3lHQTdCM0IsVUFBVTtzQkFEaEIsS0FBSztnQkFZQyxrQkFBa0I7c0JBRHhCLE1BQU07Z0JBeURBLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksY2xhc3MtbWV0aG9kcy11c2UtdGhpcyxsb2Rhc2gvcHJlZmVyLXNvbWUsbG9kYXNoL3ByZWZlci1sb2Rhc2gtbWV0aG9kLG5vLXBhcmFtLXJlYXNzaWduICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IElTX1JVTk5JTkdfT05fVEVSTUlOQUwsIFNDX1VSTFMsIFNjQ2F0ZWdvcnksIFNjRmF2b3JpdGVTZXJ2aWNlLCBTY0lUZXJtaW5hbFByb3ZpZGVyLCBTY0lVcmxzLCBURVJNSU5BTF9QUk9WSURFUlMgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9JU19NT0JJTEUsIHR1aVB1cmUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IGZpbHRlciwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGB0L/QuNGB0LrQsCDQutCw0YLQtdCz0L7RgNC40LkuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtY2F0ZWdvcmllcy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtY2F0ZWdvcmllcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtURVJNSU5BTF9QUk9WSURFUlNdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0NhdGVnb3JpZXNMaXN0Q29tcG9uZW50PFQgZXh0ZW5kcyBvYmplY3Q+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhdGVnb3JpZXM6IFRbXSB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPINGN0YLQvtGCINC60L7QvNC/0L7QvdC10L3RgiDQvdCwINC80L7QsdC40LvRjNC90L7QvCDRg9GB0YLRgNC+0LnRgdGC0LLQtSDQuNC70Lgg0L3QtdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbiA9IGluamVjdChUVUlfSVNfTU9CSUxFKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQsNGC0LXQs9C+0YDQuNGOLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0NhdGVnb3J5RXZlbnQ6IEV2ZW50RW1pdHRlcjxUPiA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQtNC70Y8g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7Qs9C+INGD0L/RgNCw0LLQu9C10L3QuNGPINGD0L3QuNGH0YLQvtC20LXQvdC40LXQvCDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0NhdGVnb3JpZXNMaXN0Q29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cmxzINC+0LHRitC10LrRgiDQuNC90YTQvtGA0LzQsNGG0LjQuCDQviDQsdCw0LfQvtCy0L7QvCDRgdC/0LjRgdC60LUg0YHRgdGL0LvQvtC6INC/0YDQuNC70L7QttC10L3QuNGPLlxuICAgICAqIEBwYXJhbSB0ZXJtaW5hbCDQlNCw0L3QvdGL0LUg0L4g0LfQsNC/0YPRgdC60LUg0L/RgNC40LvQvtC20LXQvdC40Y8g0L3QsCDRgtC10YDQvNC40L3QsNC70LUuXG4gICAgICogQHBhcmFtIGZhdm9yaXRlU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutC+0YDQt9C40L3QvtC5LlxuICAgICAqIEBwYXJhbSBjZHIg0J7QsdGK0LXQutGCINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0L7QsdC90LDRgNGD0LbQtdC90LjQtdC8INC40LfQvNC10L3QtdC90LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0NfVVJMUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzLFxuICAgICAgICBASW5qZWN0KElTX1JVTk5JTkdfT05fVEVSTUlOQUwpXG4gICAgICAgIHB1YmxpYyByZWFkb25seSB0ZXJtaW5hbDogU2NJVGVybWluYWxQcm92aWRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmYXZvcml0ZVNlcnZpY2U6IFNjRmF2b3JpdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmF2b3JpdGVTZXJ2aWNlLmNhdGVnb3JpZXMkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLmNhdGVnb3JpZXMgJiYgdGhpcy5jYXRlZ29yaWVzLmxlbmd0aCA+IDAgJiYgJ2lkJyBpbiB0aGlzLmNhdGVnb3JpZXNbMF0pLFxuICAgICAgICAgICAgICAgIHRhcCgoY2F0ZWdvcmllcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5jYXRlZ29yaWVzIGFzIFNjQ2F0ZWdvcnlbXSkuZm9yRWFjaCgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5LmlzRmF2b3JpdGUgPSBjYXRlZ29yaWVzLmZpbmRJbmRleCgoaXRlbSkgPT4gY2F0ZWdvcnkuaWQgPT09IGl0ZW0uaWQpICE9PSAtMTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/Rg9GC0Ywg0LTQviDQuNC30L7QsdGA0LDQttC10L3QuNGPINC90LAg0YHQtdGA0LLQtdGA0LUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW1nUGF0aCDQv9GD0YLRjCwg0LPQtNC1INGF0YDQsNC90LjRgtGB0Y8g0LjQt9C+0LHRgNCw0LbQtdC90LjQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2F0ZWdvcnlJbWFnZShpbWdQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy51cmxzLmltZ1NlcnZlclVybH0vJHtpbWdQYXRofWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC+0LLQtdGA0Y/QtdGCINC90LDQu9C40YfQuNC1INGF0L7RgtGPINCx0Ysg0L7QtNC90L7Qs9C+INC40LfQvtCx0YDQsNC20LXQvdC40Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcmllcyDQodC/0LjRgdC+0Log0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIEB0dWlQdXJlXG4gICAgcHVibGljIGNoZWNrSW1hZ2VzRXhpc3RzKGNhdGVnb3JpZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcbiAgICAgICAgcmV0dXJuIGNhdGVnb3JpZXMuc29tZSgoaXRlbSkgPT4gaXRlbS5wcm9wZXJ0aWVzPy5pbWFnZSk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFtuZ0NsYXNzXT1cInsgJyFmbGV4ICFmbGV4LWNvbCc6IHRlcm1pbmFsLmlzUnVubmluZ09uVGVybWluYWwgfVwiXG4gICAgY2xhc3M9XCJncmlkIGdyaWQtY29scy1bcmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMjFyZW0sMWZyKSldIGdhcC14LTggZ2FwLXktMlwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhdGVnb3JpZXM7IGVsc2UgY2F0ZWdvcmllc1NrZWxldG9uXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mICRhbnkoY2F0ZWdvcmllcylcIlxuICAgICAgICAgICAgY2xhc3M9XCJncm91cCBmbGV4IGgtMTEgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQteGwgYmctdHVpLWJhc2UtMDIgcHgtMyBweS0xLjUgdGV4dC1sZWZ0IHJpbmctdHVpLXByaW1hcnkgZHVyYXRpb24tMTUwIGhvdmVyLWhvdmVyOmhvdmVyOnJpbmctMiBob3Zlci1ub25lOmFjdGl2ZTpyaW5nLTJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrQ2F0ZWdvcnlFdmVudC5lbWl0KGl0ZW0pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5wcm9wZXJ0aWVzPy5pbWFnZSBhcyBpbWFnZVwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXRDYXRlZ29yeUltYWdlKGltYWdlKVwiXG4gICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2l6ZS04IHJvdW5kZWQgYmctdHVpLWJhc2UtMDMgb2JqZWN0LWNvdmVyXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDx0dWktaWNvbiBcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtLnByb3BlcnRpZXM/LmltYWdlICYmIGNoZWNrSW1hZ2VzRXhpc3RzKGNhdGVnb3JpZXMpXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiQHR1aS5jYW1lcmEtb2ZmXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIiFoLTggIXctOCByb3VuZGVkIGJnLXR1aS1iYXNlLTAzIHRleHQtdHVpLWJhc2UtMDVcIlxuICAgICAgICAgICAgPjwvdHVpLWljb24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBncm93IGZsZXgtY29sIHRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ3JvdyB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRydW5jYXRlIHRleHQtYmFzZSBmb250LWJvbGRcIj57eyBpdGVtLm5hbWUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDx0dWktaWNvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pc0Zhdm9yaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJzY0ljb25GYXZvcml0ZUZpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtci1hdXRvICF0ZXh0LXNtIHRleHQtdHVpLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICA+PC90dWktaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0ubTJQcmljZSBhcyBtMlByaWNlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtdHVpLXRleHQtMDJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAg0KHRgNC10LTQvdGP0Y8g0YHRgtC+0LjQvNC+0YHRgtGMIDxzcGFuIFtpbm5lckhUTUxdPVwibTJQcmljZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHR1aS1pY29uIFxuICAgICAgICAgICAgICAgIGljb249XCJAdHVpLmNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHVyYXRpb24tMTUwIGhvdmVyLWhvdmVyOmdyb3VwLWhvdmVyOnRleHQtdHVpLXByaW1hcnkgaG92ZXItbm9uZTpncm91cC1hY3RpdmU6dGV4dC10dWktcHJpbWFyeVwiXG4gICAgICAgICAgICA+PC90dWktaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjYXRlZ29yaWVzU2tlbGV0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICAqdHVpUmVwZWF0VGltZXM9XCJsZXQgaW5kZXggb2YgaXNNb2JpbGUgPyAzIDogNlwiXG4gICAgICAgIGNsYXNzPVwiZ3JvdXAgZmxleCBoLTExIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyIHB4LTMgcHktMS41IHRleHQtbGVmdCByaW5nLXR1aS1iYXNlLTA1IGR1cmF0aW9uLTE1MCBob3Zlci1ob3Zlcjpob3ZlcjpyaW5nLTIgaG92ZXItbm9uZTphY3RpdmU6cmluZy0yXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0dWktc2tlbGV0b24gc2l6ZS04XCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0dWktc2tlbGV0b24gaC00IGdyb3dcIj48L2Rpdj5cbiAgICAgICAgPHR1aS1pY29uIFxuICAgICAgICAgICAgaWNvbj1cIkB0dWkuY2hldnJvbi1yaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInR1aS1za2VsZXRvbiBkdXJhdGlvbi0xNTAgaG92ZXItaG92ZXI6Z3JvdXAtaG92ZXI6dGV4dC10dWktcHJpbWFyeSBob3Zlci1ub25lOmdyb3VwLWFjdGl2ZTp0ZXh0LXR1aS1wcmltYXJ5XCJcbiAgICAgICAgPjwvdHVpLWljb24+XG4gICAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
|
@@ -0,0 +1,120 @@
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Inject, Input, Output, ViewChild } from '@angular/core';
|
2
|
+
import { SC_PATH_IMAGE_NOT_FOUND, SC_URLS } from '@snabcentr/client-core';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "@snabcentr/client-core";
|
5
|
+
import * as i2 from "@angular/common";
|
6
|
+
import * as i3 from "../sc-favorite-btn/sc-favorite-btn.component";
|
7
|
+
/**
|
8
|
+
* Карточка категории.
|
9
|
+
*/
|
10
|
+
export class ScCategoryCardComponent {
|
11
|
+
/**
|
12
|
+
* Инициализирует экземпляр класса {@link CategoryCardComponent}.
|
13
|
+
*
|
14
|
+
* @param urls Список ссылок на разделы backend'a.
|
15
|
+
* @param renderer Экземпляр базового класса для реализации пользовательского рендеринга.
|
16
|
+
* @param pathImageNotFound Путь до изображения 'Товар не найден'.
|
17
|
+
*/
|
18
|
+
constructor(urls, renderer, pathImageNotFound, authService, cdr) {
|
19
|
+
this.urls = urls;
|
20
|
+
this.renderer = renderer;
|
21
|
+
this.pathImageNotFound = pathImageNotFound;
|
22
|
+
this.authService = authService;
|
23
|
+
this.cdr = cdr;
|
24
|
+
/**
|
25
|
+
* Размер карточки категории.
|
26
|
+
*/
|
27
|
+
this.size = 'm';
|
28
|
+
/**
|
29
|
+
* Признак, что карточка является скелетоном.
|
30
|
+
*/
|
31
|
+
this.isSkeleton = false;
|
32
|
+
/**
|
33
|
+
* Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.
|
34
|
+
*/
|
35
|
+
this.favoriteShowLoader = false;
|
36
|
+
/**
|
37
|
+
* {@link Observable} изменения статуса авторизации.
|
38
|
+
*/
|
39
|
+
this.authStatus$ = this.authService.getAuthChange();
|
40
|
+
/**
|
41
|
+
* Признак что категория имеет поведение наведения и скрытия названия.
|
42
|
+
*/
|
43
|
+
this.isHovered = false;
|
44
|
+
/**
|
45
|
+
* Событие нажатия на карточку категории.
|
46
|
+
*/
|
47
|
+
this.clickOnCardEvent = new EventEmitter();
|
48
|
+
/**
|
49
|
+
* Событие нажатия на кнопку избранной категории.
|
50
|
+
*/
|
51
|
+
this.clickOnFavoriteEvent = new EventEmitter();
|
52
|
+
}
|
53
|
+
/**
|
54
|
+
* Возвращает путь к изображению категории. Если путь отсутствует, то вернёт изображение по-умолчанию ("product_not_found").
|
55
|
+
*
|
56
|
+
* @param category Информация о категории.
|
57
|
+
*/
|
58
|
+
getCategoryImgURL(category) {
|
59
|
+
return category.properties?.image ? this.urls.imgServerUrl + '/' + category.properties?.image : this.pathImageNotFound;
|
60
|
+
}
|
61
|
+
/**
|
62
|
+
* Обработчик события mousemove.
|
63
|
+
*/
|
64
|
+
moveEnterHandler() {
|
65
|
+
if (this.isHovered) {
|
66
|
+
this.name.nativeElement.style.maxHeight = `${this.name.nativeElement.scrollHeight / 16}rem`;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
/**
|
70
|
+
* Обработчик события mouseleave.
|
71
|
+
*/
|
72
|
+
mouseLeaveHandler() {
|
73
|
+
if (this.isHovered) {
|
74
|
+
this.renderer.setStyle(this.name.nativeElement, 'maxHeight', null);
|
75
|
+
}
|
76
|
+
}
|
77
|
+
/**
|
78
|
+
* Устанавливает компонент в очередь на обновление.
|
79
|
+
*/
|
80
|
+
markForCheck() {
|
81
|
+
this.cdr.markForCheck();
|
82
|
+
}
|
83
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScCategoryCardComponent, deps: [{ token: SC_URLS }, { token: i0.Renderer2 }, { token: SC_PATH_IMAGE_NOT_FOUND }, { token: i1.ScAuthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
84
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: ScCategoryCardComponent, selector: "sc-category-card", inputs: { category: "category", size: "size", isSkeleton: "isSkeleton", isHovered: "isHovered" }, outputs: { clickOnCardEvent: "clickOnCardEvent", clickOnFavoriteEvent: "clickOnFavoriteEvent" }, host: { listeners: { "mousemove": "moveEnterHandler()", "mouseleave": "mouseLeaveHandler()" }, properties: { "attr.data-size": "this.size" } }, viewQueries: [{ propertyName: "name", first: true, predicate: ["name"], descendants: true }], ngImport: i0, template: "<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] button.category-btn{width:100%;height:12.5rem}:host[data-size=m] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] button.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] button.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] button.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] button.category-btn{width:100%;height:10rem}:host[data-size=s] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] button.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] button.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] button.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ScFavoriteBtnComponent, selector: "sc-favorite-btn", inputs: ["isFavorite", "showLoader", "disabled"], outputs: ["clickEvent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
85
|
+
}
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScCategoryCardComponent, decorators: [{
|
87
|
+
type: Component,
|
88
|
+
args: [{ selector: 'sc-category-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] button.category-btn{width:100%;height:12.5rem}:host[data-size=m] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] button.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] button.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] button.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] button.category-btn{width:100%;height:10rem}:host[data-size=s] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] button.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] button.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] button.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"] }]
|
89
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
90
|
+
type: Inject,
|
91
|
+
args: [SC_URLS]
|
92
|
+
}] }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
93
|
+
type: Inject,
|
94
|
+
args: [SC_PATH_IMAGE_NOT_FOUND]
|
95
|
+
}] }, { type: i1.ScAuthService }, { type: i0.ChangeDetectorRef }], propDecorators: { category: [{
|
96
|
+
type: Input
|
97
|
+
}], name: [{
|
98
|
+
type: ViewChild,
|
99
|
+
args: ['name']
|
100
|
+
}], size: [{
|
101
|
+
type: Input
|
102
|
+
}, {
|
103
|
+
type: HostBinding,
|
104
|
+
args: ['attr.data-size']
|
105
|
+
}], isSkeleton: [{
|
106
|
+
type: Input
|
107
|
+
}], isHovered: [{
|
108
|
+
type: Input
|
109
|
+
}], clickOnCardEvent: [{
|
110
|
+
type: Output
|
111
|
+
}], clickOnFavoriteEvent: [{
|
112
|
+
type: Output
|
113
|
+
}], moveEnterHandler: [{
|
114
|
+
type: HostListener,
|
115
|
+
args: ['mousemove']
|
116
|
+
}], mouseLeaveHandler: [{
|
117
|
+
type: HostListener,
|
118
|
+
args: ['mouseleave']
|
119
|
+
}] } });
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9jYXRlZ29yeS1jYXJkL3NjLWNhdGVnb3J5LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcnktY2FyZC9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFzQyxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUk5Rzs7R0FFRztBQU9ILE1BQU0sT0FBTyx1QkFBdUI7SUFzRGhDOzs7Ozs7T0FNRztJQUNILFlBQ3NDLElBQWEsRUFDdkMsUUFBbUIsRUFDdUIsaUJBQXlCLEVBQzFELFdBQTBCLEVBQzFCLEdBQXNCO1FBSkwsU0FBSSxHQUFKLElBQUksQ0FBUztRQUN2QyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ3VCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUMxRCxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXJEM0M7O1dBRUc7UUFHSSxTQUFJLEdBQWEsR0FBRyxDQUFDO1FBRTVCOztXQUVHO1FBRUksZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUNJLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUUzQzs7V0FFRztRQUNhLGdCQUFXLEdBQXdCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFcEY7O1dBRUc7UUFFSSxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRWxDOztXQUVHO1FBRUkscUJBQWdCLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7UUFFbkY7O1dBRUc7UUFFSSx5QkFBb0IsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQWVwRixDQUFDO0lBRUo7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLFFBQW9CO1FBQ3pDLE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQzNILENBQUM7SUFFRDs7T0FFRztJQUVLLGdCQUFnQjtRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ2hHLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFFSyxpQkFBaUI7UUFDckIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDOzhHQXZHUSx1QkFBdUIsa0JBOERwQixPQUFPLHNDQUVQLHVCQUF1QjtrR0FoRTFCLHVCQUF1Qix5ZUMzQnBDLDB2Q0F3QkE7OzJGREdhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDSSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs7MEJBZ0UxQyxNQUFNOzJCQUFDLE9BQU87OzBCQUVkLE1BQU07MkJBQUMsdUJBQXVCO3FHQTNENUIsUUFBUTtzQkFEZCxLQUFLO2dCQU9FLElBQUk7c0JBRFgsU0FBUzt1QkFBQyxNQUFNO2dCQVFWLElBQUk7c0JBRlYsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBT3RCLFVBQVU7c0JBRGhCLEtBQUs7Z0JBaUJDLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBT0Esb0JBQW9CO3NCQUQxQixNQUFNO2dCQStCQyxnQkFBZ0I7c0JBRHZCLFlBQVk7dUJBQUMsV0FBVztnQkFXakIsaUJBQWlCO3NCQUR4QixZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQsIFNDX1VSTFMsIFNjQXV0aFNlcnZpY2UsIFNjQ2F0ZWdvcnksIFNjSVVybHMgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aVNpemVTIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqINCa0LDRgNGC0L7Rh9C60LAg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLWNhdGVnb3J5LWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXRlZ29yeUNhcmRDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCY0L3RhNC+0YDQvNCw0YbQuNGPINC+INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYXRlZ29yeT86IFNjQ2F0ZWdvcnk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCB7QGxpbmsgSFRNTEVsZW1lbnR9INCx0LvQvtC60LAg0L3QsNC30LLQsNC90LjRjy5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCduYW1lJylcbiAgICBwcml2YXRlIG5hbWU6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICog0KDQsNC30LzQtdGAINC60LDRgNGC0L7Rh9C60Lgg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgcHVibGljIHNpemU6IFR1aVNpemVTID0gJ20nO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQutCw0YDRgtC+0YfQutCwINGP0LLQu9GP0LXRgtGB0Y8g0YHQutC10LvQtdGC0L7QvdC+0LwuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNTa2VsZXRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdC10L7QsdGF0L7QtNC40LzQviDQvtGC0L7QsdGA0LDQt9C40YLRjCDQu9C+0LDQtNC10YAg0LTQu9GPINC60L3QvtC/0LrQuCDQuNC30LHRgNCw0L3QvdGL0YUg0YLQvtCy0LDRgNC+0LIg0Lgg0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBmYXZvcml0ZVNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHRgtCw0YLRg9GB0LAg0LDQstGC0L7RgNC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXV0aFN0YXR1cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhDaGFuZ2UoKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGH0YLQviDQutCw0YLQtdCz0L7RgNC40Y8g0LjQvNC10LXRgiDQv9C+0LLQtdC00LXQvdC40LUg0L3QsNCy0LXQtNC10L3QuNGPINC4INGB0LrRgNGL0YLQuNGPINC90LDQt9Cy0LDQvdC40Y8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNIb3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja09uQ2FyZEV2ZW50OiBFdmVudEVtaXR0ZXI8U2NDYXRlZ29yeT4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjQ2F0ZWdvcnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDQuNC30LHRgNCw0L3QvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja09uRmF2b3JpdGVFdmVudDogRXZlbnRFbWl0dGVyPFNjQ2F0ZWdvcnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY0NhdGVnb3J5PigpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBDYXRlZ29yeUNhcmRDb21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHVybHMg0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQnYS5cbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIg0K3QutC30LXQvNC/0LvRj9GAINCx0LDQt9C+0LLQvtCz0L4g0LrQu9Cw0YHRgdCwINC00LvRjyDRgNC10LDQu9C40LfQsNGG0LjQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60L7Qs9C+INGA0LXQvdC00LXRgNC40L3Qs9CwLlxuICAgICAqIEBwYXJhbSBwYXRoSW1hZ2VOb3RGb3VuZCDQn9GD0YLRjCDQtNC+INC40LfQvtCx0YDQsNC20LXQvdC40Y8gJ9Ci0L7QstCw0YAg0L3QtSDQvdCw0LnQtNC10L0nLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTQ19VUkxTKSBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChTQ19QQVRIX0lNQUdFX05PVF9GT1VORCkgcHJpdmF0ZSByZWFkb25seSBwYXRoSW1hZ2VOb3RGb3VuZDogc3RyaW5nLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBTY0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GD0YLRjCDQuiDQuNC30L7QsdGA0LDQttC10L3QuNGOINC60LDRgtC10LPQvtGA0LjQuC4g0JXRgdC70Lgg0L/Rg9GC0Ywg0L7RgtGB0YPRgtGB0YLQstGD0LXRgiwg0YLQviDQstC10YDQvdGR0YIg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSDQv9C+LdGD0LzQvtC70YfQsNC90LjRjiAoXCJwcm9kdWN0X25vdF9mb3VuZFwiKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSDQmNC90YTQvtGA0LzQsNGG0LjRjyDQviDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5SW1nVVJMKGNhdGVnb3J5OiBTY0NhdGVnb3J5KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5LnByb3BlcnRpZXM/LmltYWdlID8gdGhpcy51cmxzLmltZ1NlcnZlclVybCArICcvJyArIGNhdGVnb3J5LnByb3BlcnRpZXM/LmltYWdlIDogdGhpcy5wYXRoSW1hZ2VOb3RGb3VuZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDRgdC+0LHRi9GC0LjRjyBtb3VzZW1vdmUuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vtb3ZlJylcbiAgICBwcml2YXRlIG1vdmVFbnRlckhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzSG92ZXJlZCkge1xuICAgICAgICAgICAgdGhpcy5uYW1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gYCR7dGhpcy5uYW1lLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC8gMTZ9cmVtYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPIG1vdXNlbGVhdmUuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gICAgcHJpdmF0ZSBtb3VzZUxlYXZlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNIb3ZlcmVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMubmFtZS5uYXRpdmVFbGVtZW50LCAnbWF4SGVpZ2h0JywgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQutC+0LzQv9C+0L3QtdC90YIg0LIg0L7Rh9C10YDQtdC00Ywg0L3QsCDQvtCx0L3QvtCy0LvQtdC90LjQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFya0ZvckNoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZ3JvdXBcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJjbGlja09uQ2FyZEV2ZW50LmVtaXQoY2F0ZWdvcnkpXCJcbiAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwiIWNhdGVnb3J5IHx8IGlzU2tlbGV0b25cIlxuICAgICAgICBjbGFzcz1cImNhdGVnb3J5LWJ0biBmbGV4IGZsZXgtY29sIHJlbGF0aXZlIHJvdW5kZWQtdHVpLXJhZGl1cy1tIG92ZXJmbG93LWhpZGRlbiBzaGFkb3ctc2MtMlwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLXdyYXBwZXIgdy1mdWxsIGdyb3cgYmctdHVpLWJhc2UtMDIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiY2F0ZWdvcnkgJiYgIWlzU2tlbGV0b25cIiBbc3JjXT1cImdldENhdGVnb3J5SW1nVVJMKGNhdGVnb3J5KVwiIFthbHRdPVwiY2F0ZWdvcnkubmFtZVwiIGNsYXNzPVwidy1mdWxsXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgI25hbWUgW2F0dHIuZGF0YS1pcy1ob3ZlcmVkXT1cIiFpc0hvdmVyZWRcIiBjbGFzcz1cIm5hbWUgZ3JpZCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZm9udC1ib2xkIGJnLXdoaXRlIHctZnVsbCBvdmVyZmxvdy1oaWRkZW4gc2hyaW5rLTAgZHVyYXRpb24tMzAwXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNhdGVnb3J5ICYmICFpc1NrZWxldG9uOyBlbHNlIHNrZWxldG9uTmFtZVwiPnt7IGNhdGVnb3J5Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uTmFtZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tbmFtZSBiZy10dWktYmFzZS0wMiByb3VuZGVkLXR1aS1yYWRpdXMtc1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9idXR0b24+XG4gICAgPHNjLWZhdm9yaXRlLWJ0blxuICAgICAgICAqbmdJZj1cImNhdGVnb3J5ICYmICFpc1NrZWxldG9uICYmIChhdXRoU3RhdHVzJCB8IGFzeW5jKVwiXG4gICAgICAgIFtzaG93TG9hZGVyXT1cImZhdm9yaXRlU2hvd0xvYWRlclwiXG4gICAgICAgIFtpc0Zhdm9yaXRlXT1cImNhdGVnb3J5LmlzRmF2b3JpdGVcIlxuICAgICAgICAoY2xpY2tFdmVudCk9XCJjbGlja09uRmF2b3JpdGVFdmVudC5lbWl0KClcIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIGxlZnQtMSB0b3AtMVwiXG4gICAgPjwvc2MtZmF2b3JpdGUtYnRuPlxuPC9kaXY+XG4iXX0=
|