@snabcentr/client-ui 4.14.9 → 4.14.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/index.d.ts +3 -0
- package/accordion/sc-accordion-content.directive.d.ts +9 -0
- package/accordion/sc-accordion.component.d.ts +56 -0
- package/accordion/sc-accordion.module.d.ts +15 -0
- package/auth/enums/auth-method.d.ts +13 -0
- package/auth/index.d.ts +8 -0
- package/auth/interfaces/index.d.ts +2 -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 +27 -0
- package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +55 -0
- package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +45 -0
- package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +53 -0
- package/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.d.ts +113 -0
- package/auth/sign-up-form/sc-sign-up-form.component.d.ts +172 -0
- package/banner/index.d.ts +2 -0
- package/banner/sc-banner.component.d.ts +108 -0
- package/banner/sc-banner.module.d.ts +17 -0
- package/brands-list/index.d.ts +3 -0
- package/brands-list/sc-brand-list-item.d.ts +25 -0
- package/brands-list/sc-brands-list.component.d.ts +13 -0
- package/brands-list/sc-brands-list.module.d.ts +12 -0
- package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +106 -0
- package/cart/add-or-editing-cart-item-dialog/index.d.ts +2 -0
- package/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.d.ts +49 -0
- package/cart/index.d.ts +2 -0
- package/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.d.ts +62 -0
- package/catalog/catalog-filters/collapsible/sc-catalog-filter-collapsible.component.d.ts +47 -0
- package/catalog/catalog-filters/index.d.ts +4 -0
- package/catalog/catalog-filters/sc-catalog-filters.component.d.ts +199 -0
- package/catalog/catalog-filters/tokens/sc-catalog-products-filters.d.ts +7 -0
- package/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.d.ts +5 -0
- package/catalog/category-card/sc-category-card.component.d.ts +76 -0
- package/catalog/cost-with-discount/cost-with-discount.component.d.ts +23 -0
- package/catalog/download-price-list/sc-download-price-list.component.d.ts +38 -0
- package/catalog/hover-image-carousel/sc-hover-image-carousel.component.d.ts +48 -0
- package/catalog/index.d.ts +15 -0
- package/catalog/input-quantity/sc-input-quantity.component.d.ts +82 -0
- package/catalog/notify-when-in-stock-dialog/index.d.ts +2 -0
- package/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.d.ts +90 -0
- package/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.d.ts +22 -0
- package/catalog/price-card/sc-price-card.component.d.ts +18 -0
- package/catalog/price-card-inline/sc-price-card-inline.component.d.ts +10 -0
- package/catalog/price-history/sc-price-history.component.d.ts +92 -0
- package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +40 -0
- package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +47 -0
- package/catalog/sc-catalog.module.d.ts +29 -0
- package/catalog/sc-favorite-button/sc-favorite-button.component.d.ts +25 -0
- package/catalog/seo-tags/sc-seo-tags.component.d.ts +20 -0
- package/configurators/index.d.ts +3 -0
- package/configurators/models/index.d.ts +3 -0
- package/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.d.ts +22 -0
- package/configurators/models/sandwich/sc-i-sandwich-settings.d.ts +18 -0
- package/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.d.ts +18 -0
- package/configurators/sandwich/index.d.ts +3 -0
- package/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.d.ts +8 -0
- package/configurators/sandwich/sc-i-new-cart-item-sandwich.d.ts +14 -0
- package/configurators/sandwich/sc-sandwich.component.d.ts +186 -0
- package/configurators/sandwich_m2/index.d.ts +4 -0
- package/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.d.ts +8 -0
- package/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.d.ts +23 -0
- package/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.d.ts +13 -0
- package/configurators/sandwich_m2/sc-sandwich-m2.component.d.ts +275 -0
- package/contacts/add-contact-dialog/sc-add-contact-dialog.component.d.ts +49 -0
- package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +23 -0
- package/contacts/index.d.ts +7 -0
- package/contacts/manager-card/sc-manager-card.component.d.ts +22 -0
- package/contacts/manager-card-push/sc-manager-card-push.component.d.ts +18 -0
- package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +28 -0
- package/contacts/sc-contacts.module.d.ts +28 -0
- package/contacts/tokens/index.d.ts +2 -0
- package/contacts/tokens/sc-manager-qr-handler.token.d.ts +6 -0
- package/contacts/tokens/sc-show-help-notification-in-phone-input.token.d.ts +5 -0
- package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +49 -0
- package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +158 -0
- package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +66 -0
- package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +49 -0
- package/contragents/index.d.ts +7 -0
- package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +64 -0
- package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +129 -0
- package/contragents/sc-contragents.module.d.ts +28 -0
- package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +148 -0
- package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +50 -0
- package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +49 -0
- package/delivery-address/index.d.ts +4 -0
- package/delivery-address/sc-delivery-address.module.d.ts +25 -0
- package/dialogs/index.d.ts +1 -0
- package/dialogs/sc-resource-preview/sc-resource-preview.component.d.ts +42 -0
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +136 -0
- package/directives/address-quality/sc-address-quality.directive.d.ts +23 -0
- package/directives/address-quality/sc-address-quality.service.d.ts +122 -0
- package/directives/address-quality/sc-i-address-quality-state.d.ts +14 -0
- package/directives/index.d.ts +11 -0
- package/directives/links/index.d.ts +4 -0
- package/directives/links/sc-email-link.directive.d.ts +25 -0
- package/directives/links/sc-link-location.d.ts +5 -0
- package/directives/links/sc-links.d.ts +7 -0
- package/directives/links/sc-tel-link.directive.d.ts +40 -0
- package/directives/next-input-focus/sc-next-input-focus.directive.d.ts +27 -0
- package/directives/next-input-focus/sc-next-input-focus.module.d.ts +10 -0
- package/directives/print/sc-print.directive.d.ts +21 -0
- package/directives/sc-date-value-transformer.directive.d.ts +8 -0
- package/directives/sc-focus-first-invalid-field.directive.d.ts +30 -0
- package/directives/sc-null-on-empty-value-transformer.directive.d.ts +8 -0
- package/directives/select-on-focusin/sc-select-on-focusin.directive.d.ts +14 -0
- package/directives/terminal-link/sc-terminal-link.directive.d.ts +34 -0
- package/error-handler/consts/error-change-handler.providers.d.ts +6 -0
- package/error-handler/error-block-status/error-block-status.component.d.ts +55 -0
- package/error-handler/index.d.ts +4 -0
- package/error-handler/interfaces/i-block-error.d.ts +17 -0
- package/error-handler/sc-error-handler.component.d.ts +40 -0
- package/esm2022/accordion/index.mjs +4 -0
- package/esm2022/accordion/sc-accordion-content.directive.mjs +17 -0
- package/esm2022/accordion/sc-accordion.component.mjs +92 -0
- package/esm2022/accordion/sc-accordion.module.mjs +26 -0
- package/esm2022/auth/enums/auth-method.mjs +15 -0
- package/esm2022/auth/index.mjs +9 -0
- package/esm2022/auth/interfaces/index.mjs +3 -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 +103 -0
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +100 -0
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +81 -0
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +89 -0
- package/esm2022/auth/sc-simple-sign-up-form/sc-simple-sign-up-form.component.mjs +203 -0
- package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +345 -0
- package/esm2022/banner/index.mjs +3 -0
- package/esm2022/banner/sc-banner.component.mjs +176 -0
- package/esm2022/banner/sc-banner.module.mjs +29 -0
- package/esm2022/brands-list/index.mjs +4 -0
- package/esm2022/brands-list/sc-brand-list-item.mjs +2 -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/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +233 -0
- package/esm2022/cart/add-or-editing-cart-item-dialog/index.mjs +3 -0
- package/esm2022/cart/add-or-editing-cart-item-dialog/sc-add-or-editing-cart-item-dialog.component.mjs +75 -0
- package/esm2022/cart/index.mjs +3 -0
- package/esm2022/cart/sc-cart-add-products-from-csv-dialog/sc-cart-add-products-from-csv-dialog.component.mjs +110 -0
- package/esm2022/catalog/catalog-filters/collapsible/sc-catalog-filter-collapsible.component.mjs +59 -0
- package/esm2022/catalog/catalog-filters/index.mjs +5 -0
- package/esm2022/catalog/catalog-filters/sc-catalog-filters.component.mjs +451 -0
- package/esm2022/catalog/catalog-filters/tokens/sc-catalog-products-filters.mjs +10 -0
- package/esm2022/catalog/catalog-filters/tokens/sc-catalog-show-products-recursively.mjs +6 -0
- package/esm2022/catalog/category-card/sc-category-card.component.mjs +102 -0
- package/esm2022/catalog/cost-with-discount/cost-with-discount.component.mjs +38 -0
- package/esm2022/catalog/download-price-list/sc-download-price-list.component.mjs +56 -0
- package/esm2022/catalog/hover-image-carousel/sc-hover-image-carousel.component.mjs +76 -0
- package/esm2022/catalog/index.mjs +16 -0
- package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +190 -0
- package/esm2022/catalog/notify-when-in-stock-dialog/index.mjs +3 -0
- package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +173 -0
- package/esm2022/catalog/notify-when-in-stock-dialog/sc-product-in-all-warehouses.pipe.mjs +35 -0
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +71 -0
- package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +54 -0
- package/esm2022/catalog/price-history/sc-price-history.component.mjs +144 -0
- package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +65 -0
- package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +61 -0
- package/esm2022/catalog/sc-catalog.module.mjs +128 -0
- package/esm2022/catalog/sc-favorite-button/sc-favorite-button.component.mjs +42 -0
- package/esm2022/catalog/seo-tags/sc-seo-tags.component.mjs +25 -0
- package/esm2022/configurators/index.mjs +4 -0
- package/esm2022/configurators/models/index.mjs +4 -0
- package/esm2022/configurators/models/sandwich/sc-i-configurator-search-product-sandwich.mjs +2 -0
- package/esm2022/configurators/models/sandwich/sc-i-sandwich-settings.mjs +2 -0
- package/esm2022/configurators/models/sandwich_m2/sc-i-sandwich-m2-settings.mjs +2 -0
- package/esm2022/configurators/sandwich/index.mjs +4 -0
- package/esm2022/configurators/sandwich/sandwich-skeleton/sc-sandwich-skeleton.component.mjs +14 -0
- package/esm2022/configurators/sandwich/sc-i-new-cart-item-sandwich.mjs +2 -0
- package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +387 -0
- package/esm2022/configurators/sandwich_m2/index.mjs +5 -0
- package/esm2022/configurators/sandwich_m2/sandwich-m2-skeleton/sc-sandwich-m2-skeleton.component.mjs +14 -0
- package/esm2022/configurators/sandwich_m2/sc-i-new-cart-item-sandwich-m2.mjs +2 -0
- package/esm2022/configurators/sandwich_m2/sc-sandwich-m2-item-submit-state.mjs +5 -0
- package/esm2022/configurators/sandwich_m2/sc-sandwich-m2.component.mjs +569 -0
- package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +91 -0
- package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +37 -0
- package/esm2022/contacts/index.mjs +8 -0
- package/esm2022/contacts/manager-card/sc-manager-card.component.mjs +58 -0
- package/esm2022/contacts/manager-card-push/sc-manager-card-push.component.mjs +28 -0
- package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +38 -0
- package/esm2022/contacts/sc-contacts.module.mjs +92 -0
- package/esm2022/contacts/tokens/index.mjs +3 -0
- package/esm2022/contacts/tokens/sc-manager-qr-handler.token.mjs +25 -0
- package/esm2022/contacts/tokens/sc-show-help-notification-in-phone-input.token.mjs +9 -0
- package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +81 -0
- package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +266 -0
- package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +79 -0
- package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +68 -0
- package/esm2022/contragents/index.mjs +8 -0
- package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +72 -0
- package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +241 -0
- package/esm2022/contragents/sc-contragents.module.mjs +121 -0
- package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +261 -0
- package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +60 -0
- package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +68 -0
- package/esm2022/delivery-address/index.mjs +5 -0
- package/esm2022/delivery-address/sc-delivery-address.module.mjs +96 -0
- package/esm2022/dialogs/index.mjs +2 -0
- package/esm2022/dialogs/sc-resource-preview/sc-resource-preview.component.mjs +73 -0
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +170 -0
- package/esm2022/directives/address-quality/sc-address-quality.directive.mjs +40 -0
- package/esm2022/directives/address-quality/sc-address-quality.service.mjs +214 -0
- package/esm2022/directives/address-quality/sc-i-address-quality-state.mjs +2 -0
- package/esm2022/directives/index.mjs +12 -0
- package/esm2022/directives/links/index.mjs +5 -0
- package/esm2022/directives/links/sc-email-link.directive.mjs +49 -0
- package/esm2022/directives/links/sc-link-location.mjs +2 -0
- package/esm2022/directives/links/sc-links.mjs +8 -0
- package/esm2022/directives/links/sc-tel-link.directive.mjs +79 -0
- package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +70 -0
- package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +19 -0
- package/esm2022/directives/print/sc-print.directive.mjs +36 -0
- package/esm2022/directives/sc-date-value-transformer.directive.mjs +30 -0
- package/esm2022/directives/sc-focus-first-invalid-field.directive.mjs +85 -0
- package/esm2022/directives/sc-null-on-empty-value-transformer.directive.mjs +30 -0
- package/esm2022/directives/select-on-focusin/sc-select-on-focusin.directive.mjs +36 -0
- package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +69 -0
- package/esm2022/error-handler/consts/error-change-handler.providers.mjs +10 -0
- package/esm2022/error-handler/error-block-status/error-block-status.component.mjs +101 -0
- package/esm2022/error-handler/index.mjs +5 -0
- package/esm2022/error-handler/interfaces/i-block-error.mjs +2 -0
- package/esm2022/error-handler/sc-error-handler.component.mjs +58 -0
- package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +344 -0
- package/esm2022/feedback/gratitude/sc-gratitude.component.mjs +32 -0
- package/esm2022/feedback/index.mjs +4 -0
- package/esm2022/feedback/interfaces/index.mjs +2 -0
- package/esm2022/feedback/interfaces/sc-feedback-form-config.mjs +2 -0
- package/esm2022/files/directives/index.mjs +3 -0
- package/esm2022/files/directives/tree-top.directive.mjs +63 -0
- package/esm2022/files/directives/tree.directive.mjs +47 -0
- package/esm2022/files/file-tree-item/file-tree-item.component.mjs +18 -0
- package/esm2022/files/files-and-documents/files-and-documents.component.mjs +61 -0
- package/esm2022/files/files-and-documents.module.mjs +28 -0
- package/esm2022/files/index.mjs +6 -0
- package/esm2022/files/interfaces/tree-node.mjs +2 -0
- package/esm2022/files/services/index.mjs +3 -0
- package/esm2022/files/services/tree-icon.service.mjs +49 -0
- package/esm2022/files/services/tree-loader.service.mjs +62 -0
- package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +155 -0
- package/esm2022/form-fields/form-fields.module.mjs +66 -0
- package/esm2022/form-fields/index.mjs +4 -0
- package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +235 -0
- package/esm2022/icons/index.mjs +2 -0
- package/esm2022/icons/sc-client-ui-icons-name.mjs +99 -0
- package/esm2022/loader/index.mjs +2 -0
- package/esm2022/loader/sc-i-loader.mjs +2 -0
- package/esm2022/masks/index.mjs +9 -0
- package/esm2022/masks/sc-account-number-mask.mjs +7 -0
- package/esm2022/masks/sc-bic-mask.mjs +7 -0
- package/esm2022/masks/sc-correspondent-account-mask.mjs +7 -0
- package/esm2022/masks/sc-inn-mask.mjs +13 -0
- package/esm2022/masks/sc-kpp-mask.mjs +7 -0
- package/esm2022/masks/sc-ogrn-mask.mjs +13 -0
- package/esm2022/masks/sc-okpo-mask.mjs +13 -0
- package/esm2022/masks/sc-phone-verification-code-mask.mjs +7 -0
- package/esm2022/methods/index.mjs +2 -0
- package/esm2022/methods/sc-get-current-route.mjs +14 -0
- package/esm2022/models/i-sc-image.mjs +2 -0
- package/esm2022/models/index.mjs +2 -0
- package/esm2022/news/index.mjs +4 -0
- package/esm2022/news/news-card/sc-news-card.component.mjs +34 -0
- package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +31 -0
- package/esm2022/news/sc-news.module.mjs +25 -0
- package/esm2022/noindex-wrapper/directives/index.mjs +2 -0
- package/esm2022/noindex-wrapper/directives/sc-noindex.directive.mjs +58 -0
- package/esm2022/noindex-wrapper/index.mjs +3 -0
- package/esm2022/noindex-wrapper/sc-noindex-wrapper.component.mjs +18 -0
- package/esm2022/order/directives/index.mjs +3 -0
- package/esm2022/order/directives/sc-order-accessor.directive.mjs +28 -0
- package/esm2022/order/directives/sc-order-options.mjs +11 -0
- package/esm2022/order/draft/sc-draft.component.mjs +118 -0
- package/esm2022/order/index.mjs +14 -0
- package/esm2022/order/models/i-new-order-form.mjs +2 -0
- package/esm2022/order/models/sc-i-cart-items-by-direction.mjs +22 -0
- package/esm2022/order/order-direction-items/sc-order-direction-items.component.mjs +39 -0
- package/esm2022/order/order-form/sc-order-form.component.mjs +565 -0
- package/esm2022/order/order-form/sc-order-form.config.mjs +7 -0
- package/esm2022/order/order-item/sc-order-item.component.mjs +112 -0
- package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +212 -0
- package/esm2022/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.mjs +75 -0
- package/esm2022/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.mjs +75 -0
- package/esm2022/order/sc-order.module.mjs +52 -0
- package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +35 -0
- package/esm2022/pages/frequently-asked-questions/sc-faq-query-params.mjs +5 -0
- package/esm2022/pages/frequently-asked-questions/sc-faq-question-anchor.mjs +23 -0
- package/esm2022/pages/frequently-asked-questions/sc-frequently-asked-questions.component.mjs +167 -0
- package/esm2022/pages/frequently-asked-questions/sc-get-faq-group-query-params.mjs +14 -0
- package/esm2022/pages/frequently-asked-questions/sc-page-size-options.mjs +8 -0
- package/esm2022/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.mjs +88 -0
- package/esm2022/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.mjs +123 -0
- package/esm2022/pages/index.mjs +11 -0
- package/esm2022/pages/news-list/sc-news-list.component.mjs +90 -0
- package/esm2022/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.mjs +46 -0
- package/esm2022/pages/privacy-policy/sc-privacy-policy.component.mjs +30 -0
- package/esm2022/pages/public-offer/sc-public-offer.component.mjs +50 -0
- package/esm2022/pagination/index.mjs +2 -0
- package/esm2022/pagination/sc-pagination-links/sc-pagination-links.component.mjs +99 -0
- package/esm2022/pipes/index.mjs +3 -0
- package/esm2022/pipes/sc-format-date.mjs +33 -0
- package/esm2022/pipes/sc-phone-format.mjs +44 -0
- package/esm2022/profile/index.mjs +3 -0
- package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +174 -0
- package/esm2022/profile/sc-profile.module.mjs +73 -0
- package/esm2022/providers/cleanup-recaptcha-artifacts.mjs +30 -0
- package/esm2022/providers/date-value-transformer/index.mjs +4 -0
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-types.mjs +2 -0
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-end-time.mjs +26 -0
- package/esm2022/providers/date-value-transformer/sc-date-value-transformer-with-start-time.mjs +37 -0
- package/esm2022/providers/index.mjs +18 -0
- package/esm2022/providers/null-on-empty-value-transformer/index.mjs +2 -0
- package/esm2022/providers/null-on-empty-value-transformer/sc-null-on-empty-value-transformer.mjs +31 -0
- package/esm2022/providers/sc-allow-select-terminated.mjs +8 -0
- package/esm2022/providers/sc-banner-duration.mjs +8 -0
- package/esm2022/providers/sc-block-incomplete-address.mjs +8 -0
- package/esm2022/providers/sc-country-ids.mjs +8 -0
- package/esm2022/providers/sc-date-formatter.mjs +15 -0
- package/esm2022/providers/sc-date-value-transformer.mjs +12 -0
- package/esm2022/providers/sc-debounce-time-default.mjs +9 -0
- package/esm2022/providers/sc-dialog-service.providers.mjs +6 -0
- package/esm2022/providers/sc-help-notification-close.mjs +9 -0
- package/esm2022/providers/sc-help-notification-limit.mjs +8 -0
- package/esm2022/providers/sc-hidden-print-elements.token.mjs +10 -0
- package/esm2022/providers/sc-max-files-in-form-input.mjs +8 -0
- package/esm2022/providers/sc-notify-when-in-stock-required-fields.mjs +8 -0
- package/esm2022/providers/sc-page-size-options.mjs +8 -0
- package/esm2022/providers/sc-user-providers.mjs +38 -0
- package/esm2022/providers/sc-verification-code-timeout.mjs +8 -0
- package/esm2022/public-api.mjs +36 -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/index.mjs +5 -0
- package/esm2022/samples/interfaces/index.mjs +3 -0
- package/esm2022/samples/interfaces/sc-i-preview-sample.mjs +2 -0
- package/esm2022/samples/interfaces/sc-preview-mosquito-config.mjs +2 -0
- package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +42 -0
- package/esm2022/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.mjs +63 -0
- package/esm2022/samples/sc-sample.module.mjs +66 -0
- package/esm2022/services/index.mjs +3 -0
- package/esm2022/services/print.service.mjs +49 -0
- package/esm2022/services/sc-help-notification.service.mjs +100 -0
- package/esm2022/share/index.mjs +6 -0
- package/esm2022/share/sc-share-dialog-data.mjs +2 -0
- package/esm2022/share/sc-share.service.mjs +40 -0
- package/esm2022/share/share-button/sc-share-button.component.mjs +99 -0
- package/esm2022/share/share-dialog/sc-share-dialog.component.mjs +139 -0
- package/esm2022/share/share-messengers-links/sc-share-messengers-links.component.mjs +84 -0
- package/esm2022/snabcentr-client-ui.mjs +5 -0
- package/esm2022/user/index.mjs +6 -0
- package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +74 -0
- package/esm2022/user/sc-user.module.mjs +86 -0
- package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +121 -0
- package/esm2022/user/user-managers/sc-user-managers.component.mjs +40 -0
- package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +105 -0
- package/esm2022/validators/index.mjs +7 -0
- package/esm2022/validators/sc-at-least-one-required-validator.mjs +25 -0
- package/esm2022/validators/sc-bic-validator.mjs +10 -0
- package/esm2022/validators/sc-correspondent-account-validator.mjs +10 -0
- package/esm2022/validators/sc-password-confirm-matching-validator.mjs +17 -0
- package/esm2022/validators/sc-phone-validator.mjs +14 -0
- package/esm2022/validators/step-validator.mjs +18 -0
- package/esm2022/verification/index.mjs +3 -0
- package/esm2022/verification/sc-verification.module.mjs +86 -0
- package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +259 -0
- package/feedback/feedback-form/sc-feedback-form.component.d.ts +163 -0
- package/feedback/gratitude/sc-gratitude.component.d.ts +20 -0
- package/feedback/index.d.ts +3 -0
- package/feedback/interfaces/index.d.ts +1 -0
- package/feedback/interfaces/sc-feedback-form-config.d.ts +23 -0
- package/fesm2022/snabcentr-client-ui.mjs +5826 -4942
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/files/directives/index.d.ts +2 -0
- package/files/directives/tree-top.directive.d.ts +33 -0
- package/files/directives/tree.directive.d.ts +35 -0
- package/files/file-tree-item/file-tree-item.component.d.ts +9 -0
- package/files/files-and-documents/files-and-documents.component.d.ts +27 -0
- package/files/files-and-documents.module.d.ts +17 -0
- package/files/index.d.ts +5 -0
- package/files/interfaces/tree-node.d.ts +29 -0
- package/files/services/index.d.ts +2 -0
- package/files/services/tree-icon.service.d.ts +23 -0
- package/files/services/tree-loader.service.d.ts +43 -0
- package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +80 -0
- package/form-fields/form-fields.module.d.ts +18 -0
- package/form-fields/index.d.ts +3 -0
- package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +107 -0
- package/icons/index.d.ts +1 -0
- package/icons/sc-client-ui-icons-name.d.ts +4 -0
- package/icons/svg-pack/application.svg +1 -1
- package/icons/svg-pack/back.svg +1 -1
- package/icons/svg-pack/bag.svg +1 -1
- package/icons/svg-pack/banknote-arrow-in-top.svg +1 -1
- package/icons/svg-pack/catalog/aluminum-systems.svg +1 -1
- package/icons/svg-pack/catalog/arm-profile.svg +1 -1
- package/icons/svg-pack/catalog/batten.svg +1 -1
- package/icons/svg-pack/catalog/brusbox.svg +1 -1
- package/icons/svg-pack/catalog/canopy.svg +1 -1
- package/icons/svg-pack/catalog/configurator.svg +1 -1
- package/icons/svg-pack/catalog/covering-material.svg +1 -1
- package/icons/svg-pack/catalog/door-accessories.svg +1 -1
- package/icons/svg-pack/catalog/drainage-system.svg +1 -1
- package/icons/svg-pack/catalog/fastener.svg +1 -1
- package/icons/svg-pack/catalog/finishing-materials.svg +1 -1
- package/icons/svg-pack/catalog/fixing-impost.svg +1 -1
- package/icons/svg-pack/catalog/flask.svg +1 -1
- package/icons/svg-pack/catalog/foam-balloon.svg +1 -1
- package/icons/svg-pack/catalog/foam.svg +1 -1
- package/icons/svg-pack/catalog/glue.svg +1 -1
- package/icons/svg-pack/catalog/handle.svg +1 -1
- package/icons/svg-pack/catalog/instrument.svg +1 -1
- package/icons/svg-pack/catalog/kve-profile.svg +1 -1
- package/icons/svg-pack/catalog/lubricants.svg +1 -1
- package/icons/svg-pack/catalog/mosquito-net.svg +1 -1
- package/icons/svg-pack/catalog/mounting-accessories.svg +1 -1
- package/icons/svg-pack/catalog/net-order.svg +1 -1
- package/icons/svg-pack/catalog/panel-1.svg +1 -1
- package/icons/svg-pack/catalog/panel.svg +1 -1
- package/icons/svg-pack/catalog/polyethylene-film.svg +1 -1
- package/icons/svg-pack/catalog/profile-plastic.svg +1 -1
- package/icons/svg-pack/catalog/promo-materials.svg +1 -1
- package/icons/svg-pack/catalog/psul.svg +1 -1
- package/icons/svg-pack/catalog/rehau-profile.svg +1 -1
- package/icons/svg-pack/catalog/sandwich-plastic.svg +1 -1
- package/icons/svg-pack/catalog/sealer.svg +1 -1
- package/icons/svg-pack/catalog/siding-2.svg +1 -1
- package/icons/svg-pack/catalog/siding.svg +1 -1
- package/icons/svg-pack/catalog/start-finish-profile.svg +1 -1
- package/icons/svg-pack/catalog/steam-waterproofing.svg +1 -1
- package/icons/svg-pack/catalog/stiz.svg +1 -1
- package/icons/svg-pack/catalog/thermometer.svg +1 -1
- package/icons/svg-pack/catalog/windowsill.svg +1 -1
- package/icons/svg-pack/chart-column-plus.svg +1 -1
- package/icons/svg-pack/circle-arrow-in-right.svg +1 -1
- package/icons/svg-pack/contacts.svg +1 -1
- package/icons/svg-pack/deadline.svg +1 -1
- package/icons/svg-pack/file-p.svg +1 -1
- package/icons/svg-pack/file-search.svg +1 -1
- package/icons/svg-pack/file-w.svg +1 -1
- package/icons/svg-pack/file-x.svg +1 -1
- package/icons/svg-pack/grid-height-arrow.svg +1 -1
- package/icons/svg-pack/grid-width-arrow.svg +1 -1
- package/icons/svg-pack/layout-list-tree.svg +1 -1
- package/icons/svg-pack/list.svg +1 -1
- package/icons/svg-pack/puzzle.svg +1 -1
- package/icons/svg-pack/reclamation.svg +1 -1
- package/icons/svg-pack/retail-store.svg +1 -1
- package/icons/svg-pack/send.svg +1 -1
- package/index.d.ts +5 -0
- package/loader/index.d.ts +1 -0
- package/loader/sc-i-loader.d.ts +9 -0
- package/masks/index.d.ts +8 -0
- package/masks/sc-account-number-mask.d.ts +5 -0
- package/masks/sc-bic-mask.d.ts +5 -0
- package/masks/sc-correspondent-account-mask.d.ts +5 -0
- package/masks/sc-inn-mask.d.ts +9 -0
- package/masks/sc-kpp-mask.d.ts +5 -0
- package/masks/sc-ogrn-mask.d.ts +9 -0
- package/masks/sc-okpo-mask.d.ts +9 -0
- package/masks/sc-phone-verification-code-mask.d.ts +5 -0
- package/methods/index.d.ts +1 -0
- package/methods/sc-get-current-route.d.ts +8 -0
- package/models/i-sc-image.d.ts +17 -0
- package/models/index.d.ts +1 -0
- package/news/index.d.ts +3 -0
- package/news/news-card/sc-news-card.component.d.ts +22 -0
- package/news/news-card-skeleton/sc-news-card-skeleton.component.d.ts +16 -0
- package/news/sc-news.module.d.ts +15 -0
- package/noindex-wrapper/directives/index.d.ts +1 -0
- package/noindex-wrapper/directives/sc-noindex.directive.d.ts +29 -0
- package/noindex-wrapper/index.d.ts +2 -0
- package/noindex-wrapper/sc-noindex-wrapper.component.d.ts +9 -0
- package/order/directives/index.d.ts +2 -0
- package/order/directives/sc-order-accessor.directive.d.ts +13 -0
- package/order/directives/sc-order-options.d.ts +14 -0
- package/order/draft/sc-draft.component.d.ts +63 -0
- package/order/index.d.ts +13 -0
- package/order/models/i-new-order-form.d.ts +39 -0
- package/order/models/sc-i-cart-items-by-direction.d.ts +25 -0
- package/order/order-direction-items/sc-order-direction-items.component.d.ts +29 -0
- package/order/order-form/sc-order-form.component.d.ts +283 -0
- package/order/order-form/sc-order-form.config.d.ts +20 -0
- package/order/order-item/sc-order-item.component.d.ts +43 -0
- package/order/order-items-list/sc-order-items-list.component.d.ts +113 -0
- package/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.d.ts +58 -0
- package/order/order-items-list-by-stock/sc-order-items-list-by-stock.component.d.ts +55 -0
- package/order/sc-order.module.d.ts +18 -0
- package/order/sc-payment-status/sc-payment-status.component.d.ts +25 -0
- package/package.json +37 -35
- package/pages/frequently-asked-questions/sc-faq-query-params.d.ts +4 -0
- package/pages/frequently-asked-questions/sc-faq-question-anchor.d.ts +16 -0
- package/pages/frequently-asked-questions/sc-frequently-asked-questions.component.d.ts +84 -0
- package/pages/frequently-asked-questions/sc-get-faq-group-query-params.d.ts +10 -0
- package/pages/frequently-asked-questions/sc-page-size-options.d.ts +5 -0
- package/pages/frequently-asked-questions-group-selector/sc-frequently-asked-questions-group-selector.component.d.ts +47 -0
- package/pages/frequently-asked-questions-with-groups/sc-frequently-asked-questions-with-groups.component.d.ts +89 -0
- package/pages/index.d.ts +10 -0
- package/pages/news-list/sc-news-list.component.d.ts +57 -0
- package/pages/personal-data-processing-policy/sc-personal-data-processing-policy.component.d.ts +17 -0
- package/pages/privacy-policy/sc-privacy-policy.component.d.ts +17 -0
- package/pages/public-offer/sc-public-offer.component.d.ts +22 -0
- package/pagination/index.d.ts +1 -0
- package/pagination/sc-pagination-links/sc-pagination-links.component.d.ts +60 -0
- package/pipes/index.d.ts +2 -0
- package/pipes/sc-format-date.d.ts +20 -0
- package/pipes/sc-phone-format.d.ts +21 -0
- package/profile/index.d.ts +2 -0
- package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +126 -0
- package/profile/sc-profile.module.d.ts +23 -0
- package/providers/cleanup-recaptcha-artifacts.d.ts +7 -0
- package/providers/date-value-transformer/index.d.ts +3 -0
- package/providers/date-value-transformer/sc-date-value-transformer-types.d.ts +9 -0
- package/providers/date-value-transformer/sc-date-value-transformer-with-end-time.d.ts +16 -0
- package/providers/date-value-transformer/sc-date-value-transformer-with-start-time.d.ts +22 -0
- package/providers/index.d.ts +17 -0
- package/providers/null-on-empty-value-transformer/index.d.ts +1 -0
- package/providers/null-on-empty-value-transformer/sc-null-on-empty-value-transformer.d.ts +21 -0
- package/providers/sc-allow-select-terminated.d.ts +5 -0
- package/providers/sc-banner-duration.d.ts +5 -0
- package/providers/sc-block-incomplete-address.d.ts +5 -0
- package/providers/sc-country-ids.d.ts +5 -0
- package/providers/sc-date-formatter.d.ts +6 -0
- package/providers/sc-date-value-transformer.d.ts +5 -0
- package/providers/sc-debounce-time-default.d.ts +5 -0
- package/providers/sc-dialog-service.providers.d.ts +45 -0
- package/providers/sc-help-notification-close.d.ts +6 -0
- package/providers/sc-help-notification-limit.d.ts +5 -0
- package/providers/sc-hidden-print-elements.token.d.ts +6 -0
- package/providers/sc-max-files-in-form-input.d.ts +5 -0
- package/providers/sc-notify-when-in-stock-required-fields.d.ts +5 -0
- package/providers/sc-page-size-options.d.ts +5 -0
- package/providers/sc-user-providers.d.ts +21 -0
- package/providers/sc-verification-code-timeout.d.ts +5 -0
- package/public-api.d.ts +35 -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/release_notes.tmp +2 -16
- package/samples/index.d.ts +4 -0
- package/samples/interfaces/index.d.ts +2 -0
- package/samples/interfaces/sc-i-preview-sample.d.ts +56 -0
- package/samples/interfaces/sc-preview-mosquito-config.d.ts +62 -0
- package/samples/preview-sample/sc-preview-sample.component.d.ts +30 -0
- package/samples/sc-preview-samples-mosquito/sc-preview-samples-mosquito.component.d.ts +50 -0
- package/samples/sc-sample.module.d.ts +19 -0
- package/services/index.d.ts +2 -0
- package/services/print.service.d.ts +31 -0
- package/services/sc-help-notification.service.d.ts +70 -0
- package/share/index.d.ts +5 -0
- package/share/sc-share-dialog-data.d.ts +13 -0
- package/share/sc-share.service.d.ts +19 -0
- package/share/share-button/sc-share-button.component.d.ts +78 -0
- package/share/share-dialog/sc-share-dialog.component.d.ts +87 -0
- package/share/share-messengers-links/sc-share-messengers-links.component.d.ts +49 -0
- package/styles/taiga/variables.less +17 -35
- package/styles/tailwind/tailwind.scss +14 -56
- package/user/index.d.ts +5 -0
- package/user/reset-user-password/sc-reset-user-password.component.d.ts +46 -0
- package/user/sc-user.module.d.ts +24 -0
- package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +63 -0
- package/user/user-managers/sc-user-managers.component.d.ts +23 -0
- package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +53 -0
- package/validators/index.d.ts +6 -0
- package/validators/sc-at-least-one-required-validator.d.ts +10 -0
- package/validators/sc-bic-validator.d.ts +8 -0
- package/validators/sc-correspondent-account-validator.d.ts +8 -0
- package/validators/sc-password-confirm-matching-validator.d.ts +8 -0
- package/validators/sc-phone-validator.d.ts +5 -0
- package/validators/step-validator.d.ts +7 -0
- package/verification/index.d.ts +2 -0
- package/verification/sc-verification.module.d.ts +21 -0
- package/verification/verification-phone-check-form/sc-verification-phone-check-form.component.d.ts +145 -0
- package/types/snabcentr-client-ui.d.ts +0 -6787
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, ContentChildren, DestroyRef, EventEmitter, HostBinding, inject, Input, input, Output, signal, } from '@angular/core';
|
|
2
|
+
import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { IntersectionObserverService } from '@ng-web-apis/intersection-observer';
|
|
4
|
+
import { ScBannerService, ScUserMetrikaGoalsEnum, ScUserMetrikaService } from '@snabcentr/client-core';
|
|
5
|
+
import { TUI_SWIPE_OPTIONS, TuiSwipeService } from '@taiga-ui/cdk';
|
|
6
|
+
import { map, shareReplay, switchMap, tap } from 'rxjs';
|
|
7
|
+
import { SC_BANNER_DURATION } from '../providers';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common";
|
|
10
|
+
import * as i2 from "@taiga-ui/core";
|
|
11
|
+
import * as i3 from "@taiga-ui/cdk/directives/item";
|
|
12
|
+
import * as i4 from "@taiga-ui/kit";
|
|
13
|
+
import * as i5 from "@snabcentr/client-core";
|
|
14
|
+
/**
|
|
15
|
+
* Баннер с прокруткой переданных {@link TemplateRef} элементов, и баннеров локации.
|
|
16
|
+
*/
|
|
17
|
+
export class ScBannerComponent {
|
|
18
|
+
constructor() {
|
|
19
|
+
/**
|
|
20
|
+
* Признак, что необходимо показывать кнопки навигации.
|
|
21
|
+
*/
|
|
22
|
+
this.navigateButton = true;
|
|
23
|
+
/**
|
|
24
|
+
* Интервал автоматической смены слайдов в миллисекундах (используйте 0, чтобы отключить автоматическую смену слайда).
|
|
25
|
+
*/
|
|
26
|
+
this.duration = inject(SC_BANNER_DURATION);
|
|
27
|
+
/**
|
|
28
|
+
* Местоположение баннера.
|
|
29
|
+
*/
|
|
30
|
+
this.bannerLocation = input();
|
|
31
|
+
/**
|
|
32
|
+
* Признак, что компонент должен растягиваться.
|
|
33
|
+
*/
|
|
34
|
+
this.resizable = false;
|
|
35
|
+
/**
|
|
36
|
+
* Событие загрузки баннеров с количеством полученных баннеров.
|
|
37
|
+
*/
|
|
38
|
+
this.loadBannersEvent = new EventEmitter();
|
|
39
|
+
/**
|
|
40
|
+
* Событие нажатия на изображение баннера.
|
|
41
|
+
*/
|
|
42
|
+
this.clickBannerEvent = new EventEmitter();
|
|
43
|
+
/**
|
|
44
|
+
* Свойство, от которого зависит соотношение `:host` компонента.
|
|
45
|
+
*/
|
|
46
|
+
this.aspectRatio = '';
|
|
47
|
+
/**
|
|
48
|
+
* Идентификатор текущего баннера.
|
|
49
|
+
*/
|
|
50
|
+
this.currentBannerId = signal(0);
|
|
51
|
+
/**
|
|
52
|
+
* Идентификатор баннера на момент начала касания.
|
|
53
|
+
*/
|
|
54
|
+
this.touchStartBannerId = 0;
|
|
55
|
+
/**
|
|
56
|
+
* Сервис для работы с данными о баннерах.
|
|
57
|
+
*/
|
|
58
|
+
this.bannerService = inject(ScBannerService);
|
|
59
|
+
/**
|
|
60
|
+
* Сервис для сбора метрик о действиях пользователей.
|
|
61
|
+
*/
|
|
62
|
+
this.userMetrikaService = inject(ScUserMetrikaService);
|
|
63
|
+
/**
|
|
64
|
+
* Поток событий свайпа по баннеру.
|
|
65
|
+
*/
|
|
66
|
+
this.swipes$ = inject(TuiSwipeService);
|
|
67
|
+
/**
|
|
68
|
+
* Ссылка для автоматического управления уничтожением зависимостей.
|
|
69
|
+
*/
|
|
70
|
+
this.destroyRef = inject(DestroyRef);
|
|
71
|
+
/**
|
|
72
|
+
* Список баннеров.
|
|
73
|
+
*/
|
|
74
|
+
this.banners$ = toObservable(this.bannerLocation).pipe(switchMap((bannerLocation) => this.bannerService.banners$.pipe(map((banners) => banners.filter((banner) => banner.location === bannerLocation)), tap((banners) => {
|
|
75
|
+
if (banners.length > 0 && !this.resizable) {
|
|
76
|
+
this.aspectRatio = `${banners[0].width} / ${banners[0].height}`;
|
|
77
|
+
}
|
|
78
|
+
this.loadBannersEvent.emit(banners.length);
|
|
79
|
+
}))),
|
|
80
|
+
// eslint-disable-next-line rxjs/no-sharereplay
|
|
81
|
+
shareReplay(1));
|
|
82
|
+
this.banners = toSignal(this.banners$, { initialValue: [] });
|
|
83
|
+
/**
|
|
84
|
+
* Общее количество слайдов (баннеры + контент-проекция).
|
|
85
|
+
* Используется для отключения автоскролла при 0–1 слайдах, чтобы не вызывать
|
|
86
|
+
* tuiClamp с max < min в TuiCarouselComponent.onAutoscroll → updateIndex.
|
|
87
|
+
*/
|
|
88
|
+
this.totalItems = computed(() => this.banners().length + this.bannersListRef.length);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @inheritDoc
|
|
92
|
+
*/
|
|
93
|
+
ngAfterViewInit() {
|
|
94
|
+
// Подписка идёт после карусели, чтобы свайп обрабатывался последним: иначе её собственная обработка жеста добавит ещё один слайд.
|
|
95
|
+
this.swipes$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((swipe) => {
|
|
96
|
+
this.onSwipe(swipe);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* trackBy для *ngFor баннеров: сохраняет узлы при обновлении списка,
|
|
101
|
+
* чтобы карусель не видела 0 слайдов между тиками и не вызывала tuiClamp(…, -1).
|
|
102
|
+
*
|
|
103
|
+
* @param _index Индекс.
|
|
104
|
+
* @param banner Данные о баннере.
|
|
105
|
+
*/
|
|
106
|
+
// eslint-disable-next-line class-methods-use-this
|
|
107
|
+
trackByBannerId(_index, banner) {
|
|
108
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
109
|
+
return banner.id ?? _index;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Обработчик начала касания баннера.
|
|
113
|
+
*/
|
|
114
|
+
onTouchStart() {
|
|
115
|
+
this.touchStartBannerId = this.currentBannerId();
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Обработчик нажатия на баннер.
|
|
119
|
+
*
|
|
120
|
+
* @param banner Баннер, по ссылке которого совершён переход.
|
|
121
|
+
*/
|
|
122
|
+
onClick(banner) {
|
|
123
|
+
this.userMetrikaService.emitUserMetrikaEvent({
|
|
124
|
+
target: ScUserMetrikaGoalsEnum.bannerClick,
|
|
125
|
+
params: {
|
|
126
|
+
banner_id: banner.id,
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
if (banner.url) {
|
|
130
|
+
this.clickBannerEvent.emit(banner);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Обработчик свайпа по баннеру.
|
|
135
|
+
*
|
|
136
|
+
* Баннер отсчитывается от показанного в начале касания: часть жестов карусель обрабатывает сама
|
|
137
|
+
* (короткий свайп, перетаскивание слайда пальцем), и жест не должен пролистать два баннера.
|
|
138
|
+
*
|
|
139
|
+
* @param swipe Событие свайпа.
|
|
140
|
+
*/
|
|
141
|
+
onSwipe(swipe) {
|
|
142
|
+
if (swipe.direction === 'left') {
|
|
143
|
+
this.currentBannerId.set(Math.min(this.touchStartBannerId + 1, this.totalItems() - 1));
|
|
144
|
+
}
|
|
145
|
+
else if (swipe.direction === 'right') {
|
|
146
|
+
this.currentBannerId.set(Math.max(this.touchStartBannerId - 1, 0));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
150
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScBannerComponent, selector: "sc-banner", inputs: { navigateButton: { classPropertyName: "navigateButton", publicName: "navigateButton", isSignal: false, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: false, isRequired: false, transformFunction: null }, bannerLocation: { classPropertyName: "bannerLocation", publicName: "bannerLocation", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { loadBannersEvent: "loadBannersEvent", clickBannerEvent: "clickBannerEvent" }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "touchstart": "onTouchStart()" }, properties: { "class.!hidden": "totalItems() === 0", "style.aspect-ratio": "this.aspectRatio" } }, providers: [IntersectionObserverService, TuiSwipeService, { provide: TUI_SWIPE_OPTIONS, useValue: { timeout: Number.POSITIVE_INFINITY, threshold: 30 } }], queries: [{ propertyName: "bannersListRef", predicate: ["banner"] }], ngImport: i0, template: "@let effectiveDuration = totalItems() > 1 ? duration : 0;\n\n<tui-carousel\n [duration]=\"effectiveDuration\"\n #carousel\n [attr.resizable]=\"resizable\"\n class=\"size-full overflow-hidden rounded-xl bg-white\"\n [(index)]=\"currentBannerId\"\n>\n @for (banner of banners(); track trackByBannerId($index, banner)) {\n @switch (banner.mediaType) {\n @case ('image') {\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n target=\"_blank\"\n [title]=\"banner.title\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n class=\"size-full\"\n >\n <picture>\n @if (banner.mediaFileWebp) {\n <source\n type=\"image/webp\"\n [srcset]=\"banner.mediaFileWebp | scMediaImageTransformer\"\n />\n }\n <img\n [src]=\"banner.mediaFile | scMediaImageTransformer: true\"\n [alt]=\"banner.title\"\n class=\"size-full object-cover\"\n />\n </picture>\n </a>\n }\n }\n }\n @for (item of bannersListRef; track $index) {\n <div\n *tuiItem\n [style.aspect-ratio]=\"aspectRatio\"\n class=\"size-full overflow-hidden\"\n >\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n }\n</tui-carousel>\n\n@if (navigateButton && totalItems() > 1) {\n <div\n tuiTheme=\"light\"\n class=\"flex items-center\"\n >\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.prev()\"\n class=\"!absolute left-2\"\n ></button>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.next()\"\n class=\"!absolute right-2\"\n ></button>\n </div>\n}\n", styles: [":host{--tui-carousel-padding: 0;display:flex;position:relative}::ng-deep tui-carousel[resizable=true] .t-scroller,::ng-deep tui-carousel[resizable=true] .t-items{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i3.TuiItem, selector: "[tuiItem]" }, { kind: "component", type: i4.TuiCarouselComponent, selector: "tui-carousel", inputs: ["draggable", "itemsCount", "index"], outputs: ["indexChange", "shift"] }, { kind: "pipe", type: i5.ScMediaImageTransformerPipe, name: "scMediaImageTransformer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
151
|
+
}
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBannerComponent, decorators: [{
|
|
153
|
+
type: Component,
|
|
154
|
+
args: [{ selector: 'sc-banner', providers: [IntersectionObserverService, TuiSwipeService, { provide: TUI_SWIPE_OPTIONS, useValue: { timeout: Number.POSITIVE_INFINITY, threshold: 30 } }], host: {
|
|
155
|
+
ngSkipHydration: 'true',
|
|
156
|
+
'[class.!hidden]': 'totalItems() === 0',
|
|
157
|
+
'(touchstart)': 'onTouchStart()',
|
|
158
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "@let effectiveDuration = totalItems() > 1 ? duration : 0;\n\n<tui-carousel\n [duration]=\"effectiveDuration\"\n #carousel\n [attr.resizable]=\"resizable\"\n class=\"size-full overflow-hidden rounded-xl bg-white\"\n [(index)]=\"currentBannerId\"\n>\n @for (banner of banners(); track trackByBannerId($index, banner)) {\n @switch (banner.mediaType) {\n @case ('image') {\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n target=\"_blank\"\n [title]=\"banner.title\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n class=\"size-full\"\n >\n <picture>\n @if (banner.mediaFileWebp) {\n <source\n type=\"image/webp\"\n [srcset]=\"banner.mediaFileWebp | scMediaImageTransformer\"\n />\n }\n <img\n [src]=\"banner.mediaFile | scMediaImageTransformer: true\"\n [alt]=\"banner.title\"\n class=\"size-full object-cover\"\n />\n </picture>\n </a>\n }\n }\n }\n @for (item of bannersListRef; track $index) {\n <div\n *tuiItem\n [style.aspect-ratio]=\"aspectRatio\"\n class=\"size-full overflow-hidden\"\n >\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n }\n</tui-carousel>\n\n@if (navigateButton && totalItems() > 1) {\n <div\n tuiTheme=\"light\"\n class=\"flex items-center\"\n >\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-left\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.prev()\"\n class=\"!absolute left-2\"\n ></button>\n <button\n tuiIconButton\n iconStart=\"@tui.chevron-right\"\n size=\"m\"\n [style.border-radius.%]=\"100\"\n appearance=\"flat\"\n (click)=\"carousel.next()\"\n class=\"!absolute right-2\"\n ></button>\n </div>\n}\n", styles: [":host{--tui-carousel-padding: 0;display:flex;position:relative}::ng-deep tui-carousel[resizable=true] .t-scroller,::ng-deep tui-carousel[resizable=true] .t-items{width:100%;height:100%}\n"] }]
|
|
159
|
+
}], propDecorators: { navigateButton: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], duration: [{
|
|
162
|
+
type: Input
|
|
163
|
+
}], resizable: [{
|
|
164
|
+
type: Input
|
|
165
|
+
}], loadBannersEvent: [{
|
|
166
|
+
type: Output
|
|
167
|
+
}], clickBannerEvent: [{
|
|
168
|
+
type: Output
|
|
169
|
+
}], bannersListRef: [{
|
|
170
|
+
type: ContentChildren,
|
|
171
|
+
args: ['banner']
|
|
172
|
+
}], aspectRatio: [{
|
|
173
|
+
type: HostBinding,
|
|
174
|
+
args: ['style.aspect-ratio']
|
|
175
|
+
}] } });
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYmFubmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxFQUVOLE1BQU0sR0FHVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pGLE9BQU8sRUFBWSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQUVsRDs7R0FFRztBQWFILE1BQU0sT0FBTyxpQkFBaUI7SUFaOUI7UUFhSTs7V0FFRztRQUVJLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRXRDOztXQUVHO1FBRUksYUFBUSxHQUFXLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRXJEOztXQUVHO1FBQ0ksbUJBQWMsR0FBb0MsS0FBSyxFQUFVLENBQUM7UUFFekU7O1dBRUc7UUFFSSxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRWxDOztXQUVHO1FBRUkscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFM0U7O1dBRUc7UUFFSSxxQkFBZ0IsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQVMvRTs7V0FFRztRQUVJLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRWhDOztXQUVHO1FBQ2dCLG9CQUFlLEdBQTJCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RTs7V0FFRztRQUNLLHVCQUFrQixHQUFXLENBQUMsQ0FBQztRQUV2Qzs7V0FFRztRQUNjLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXpEOztXQUVHO1FBQ2MsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFbkU7O1dBRUc7UUFDYyxZQUFPLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRW5EOztXQUVHO1FBQ2MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVqRDs7V0FFRztRQUNnQixhQUFRLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ2hFLFNBQVMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDNUIsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLGNBQWMsQ0FBQyxDQUFDLEVBQ2hGLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ1osSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BFLENBQUM7WUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FDTCxDQUNKO1FBQ0QsK0NBQStDO1FBQy9DLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDakIsQ0FBQztRQUVpQixZQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLEVBQUUsRUFBZ0IsRUFBRSxDQUFDLENBQUM7UUFFekY7Ozs7V0FJRztRQUNhLGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBaUVuRztJQS9ERzs7T0FFRztJQUNJLGVBQWU7UUFDbEIsa0lBQWtJO1FBQ2xJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsa0RBQWtEO0lBQzNDLGVBQWUsQ0FBQyxNQUFjLEVBQUUsTUFBZ0I7UUFDbkQsdUVBQXVFO1FBQ3ZFLE9BQU8sTUFBTSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ08sWUFBWTtRQUNsQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTyxDQUFDLE1BQWdCO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztZQUN6QyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsV0FBVztZQUMxQyxNQUFNLEVBQUU7Z0JBQ0osU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUFFO2FBQ3ZCO1NBQ0osQ0FBQyxDQUFDO1FBRUgsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLE9BQU8sQ0FBQyxLQUFvQjtRQUNoQyxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNGLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNMLENBQUM7K0dBMUtRLGlCQUFpQjttR0FBakIsaUJBQWlCLDQzQkFSZixDQUFDLDJCQUEyQixFQUFFLGVBQWUsRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLGdHQ2xDN0oseTdFQTBFQTs7NEZEaENhLGlCQUFpQjtrQkFaN0IsU0FBUzsrQkFDSSxXQUFXLGFBR1YsQ0FBQywyQkFBMkIsRUFBRSxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUNuSjt3QkFDRixlQUFlLEVBQUUsTUFBTTt3QkFDdkIsaUJBQWlCLEVBQUUsb0JBQW9CO3dCQUN2QyxjQUFjLEVBQUUsZ0JBQWdCO3FCQUNuQyxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTs4QkFPeEMsY0FBYztzQkFEcEIsS0FBSztnQkFPQyxRQUFRO3NCQURkLEtBQUs7Z0JBWUMsU0FBUztzQkFEZixLQUFLO2dCQU9DLGdCQUFnQjtzQkFEdEIsTUFBTTtnQkFPQSxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBUUEsY0FBYztzQkFGcEIsZUFBZTt1QkFBQyxRQUFRO2dCQVFsQixXQUFXO3NCQURqQixXQUFXO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBpbnB1dCxcbiAgICBJbnB1dFNpZ25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIHNpZ25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBJbnRlcnNlY3Rpb25PYnNlcnZlclNlcnZpY2UgfSBmcm9tICdAbmctd2ViLWFwaXMvaW50ZXJzZWN0aW9uLW9ic2VydmVyJztcbmltcG9ydCB7IFNjQmFubmVyLCBTY0Jhbm5lclNlcnZpY2UsIFNjVXNlck1ldHJpa2FHb2Fsc0VudW0sIFNjVXNlck1ldHJpa2FTZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUVUlfU1dJUEVfT1BUSU9OUywgVHVpU3dpcGVFdmVudCwgVHVpU3dpcGVTZXJ2aWNlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTQ19CQU5ORVJfRFVSQVRJT04gfSBmcm9tICcuLi9wcm92aWRlcnMnO1xuXG4vKipcbiAqINCR0LDQvdC90LXRgCDRgSDQv9GA0L7QutGA0YPRgtC60L7QuSDQv9C10YDQtdC00LDQvdC90YvRhSB7QGxpbmsgVGVtcGxhdGVSZWZ9INGN0LvQtdC80LXQvdGC0L7Qsiwg0Lgg0LHQsNC90L3QtdGA0L7QsiDQu9C+0LrQsNGG0LjQuC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1iYW5uZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1iYW5uZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NjLWJhbm5lci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW0ludGVyc2VjdGlvbk9ic2VydmVyU2VydmljZSwgVHVpU3dpcGVTZXJ2aWNlLCB7IHByb3ZpZGU6IFRVSV9TV0lQRV9PUFRJT05TLCB1c2VWYWx1ZTogeyB0aW1lb3V0OiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIHRocmVzaG9sZDogMzAgfSB9XSxcbiAgICBob3N0OiB7XG4gICAgICAgIG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnLFxuICAgICAgICAnW2NsYXNzLiFoaWRkZW5dJzogJ3RvdGFsSXRlbXMoKSA9PT0gMCcsXG4gICAgICAgICcodG91Y2hzdGFydCknOiAnb25Ub3VjaFN0YXJ0KCknLFxuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjQmFubmVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdC10L7QsdGF0L7QtNC40LzQviDQv9C+0LrQsNC30YvQstCw0YLRjCDQutC90L7Qv9C60Lgg0L3QsNCy0LjQs9Cw0YbQuNC4LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG5hdmlnYXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqINCY0L3RgtC10YDQstCw0Lsg0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7QuSDRgdC80LXQvdGLINGB0LvQsNC50LTQvtCyINCyINC80LjQu9C70LjRgdC10LrRg9C90LTQsNGFICjQuNGB0L/QvtC70YzQt9GD0LnRgtC1IDAsINGH0YLQvtCx0Ysg0L7RgtC60LvRjtGH0LjRgtGMINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutGD0Y4g0YHQvNC10L3RgyDRgdC70LDQudC00LApLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGR1cmF0aW9uOiBudW1iZXIgPSBpbmplY3QoU0NfQkFOTkVSX0RVUkFUSU9OKTtcblxuICAgIC8qKlxuICAgICAqINCc0LXRgdGC0L7Qv9C+0LvQvtC20LXQvdC40LUg0LHQsNC90L3QtdGA0LAuXG4gICAgICovXG4gICAgcHVibGljIGJhbm5lckxvY2F0aW9uOiBJbnB1dFNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+ID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQutC+0LzQv9C+0L3QtdC90YIg0LTQvtC70LbQtdC9INGA0LDRgdGC0Y/Qs9C40LLQsNGC0YzRgdGPLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJlc2l6YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0LfQsNCz0YDRg9C30LrQuCDQsdCw0L3QvdC10YDQvtCyINGBINC60L7Qu9C40YfQtdGB0YLQstC+0Lwg0L/QvtC70YPRh9C10L3QvdGL0YUg0LHQsNC90L3QtdGA0L7Qsi5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgbG9hZEJhbm5lcnNFdmVudDogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSDQsdCw0L3QvdC10YDQsC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tCYW5uZXJFdmVudDogRXZlbnRFbWl0dGVyPFNjQmFubmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8U2NCYW5uZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgdGL0LvQvtC6INC90LAg0Y3Qu9C10LzQtdC90YIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lkg0YjQsNCx0LvQvtC90L7Qsi5cbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKCdiYW5uZXInKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGJhbm5lcnNMaXN0UmVmOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICAvKipcbiAgICAgKiDQodCy0L7QudGB0YLQstC+LCDQvtGCINC60L7RgtC+0YDQvtCz0L4g0LfQsNCy0LjRgdC40YIg0YHQvtC+0YLQvdC+0YjQtdC90LjQtSBgOmhvc3RgINC60L7QvNC/0L7QvdC10L3RgtCwLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuYXNwZWN0LXJhdGlvJylcbiAgICBwdWJsaWMgYXNwZWN0UmF0aW86IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqXG4gICAgICog0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0YLQtdC60YPRidC10LPQviDQsdCw0L3QvdC10YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VycmVudEJhbm5lcklkOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+ID0gc2lnbmFsKDApO1xuXG4gICAgLyoqXG4gICAgICog0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LHQsNC90L3QtdGA0LAg0L3QsCDQvNC+0LzQtdC90YIg0L3QsNGH0LDQu9CwINC60LDRgdCw0L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgdG91Y2hTdGFydEJhbm5lcklkOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LTQsNC90L3Ri9C80Lgg0L4g0LHQsNC90L3QtdGA0LDRhS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhbm5lclNlcnZpY2UgPSBpbmplY3QoU2NCYW5uZXJTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YHQsdC+0YDQsCDQvNC10YLRgNC40Log0L4g0LTQtdC50YHRgtCy0LjRj9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlID0gaW5qZWN0KFNjVXNlck1ldHJpa2FTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0L7RgtC+0Log0YHQvtCx0YvRgtC40Lkg0YHQstCw0LnQv9CwINC/0L4g0LHQsNC90L3QtdGA0YMuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzd2lwZXMkID0gaW5qZWN0KFR1aVN3aXBlU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0LTQu9GPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LPQviDRg9C/0YDQsNCy0LvQtdC90LjRjyDRg9C90LjRh9GC0L7QttC10L3QuNC10Lwg0LfQsNCy0LjRgdC40LzQvtGB0YLQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQsdCw0L3QvdC10YDQvtCyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBiYW5uZXJzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmJhbm5lckxvY2F0aW9uKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGJhbm5lckxvY2F0aW9uKSA9PlxuICAgICAgICAgICAgdGhpcy5iYW5uZXJTZXJ2aWNlLmJhbm5lcnMkLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChiYW5uZXJzKSA9PiBiYW5uZXJzLmZpbHRlcigoYmFubmVyKSA9PiBiYW5uZXIubG9jYXRpb24gPT09IGJhbm5lckxvY2F0aW9uKSksXG4gICAgICAgICAgICAgICAgdGFwKChiYW5uZXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiYW5uZXJzLmxlbmd0aCA+IDAgJiYgIXRoaXMucmVzaXphYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFzcGVjdFJhdGlvID0gYCR7YmFubmVyc1swXS53aWR0aH0gLyAke2Jhbm5lcnNbMF0uaGVpZ2h0fWA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRCYW5uZXJzRXZlbnQuZW1pdChiYW5uZXJzLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8tc2hhcmVyZXBsYXlcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGJhbm5lcnMgPSB0b1NpZ25hbCh0aGlzLmJhbm5lcnMkLCB7IGluaXRpYWxWYWx1ZTogW10gYXMgU2NCYW5uZXJbXSB9KTtcblxuICAgIC8qKlxuICAgICAqINCe0LHRidC10LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHQu9Cw0LnQtNC+0LIgKNCx0LDQvdC90LXRgNGLICsg0LrQvtC90YLQtdC90YIt0L/RgNC+0LXQutGG0LjRjykuXG4gICAgICog0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDQvtGC0LrQu9GO0YfQtdC90LjRjyDQsNCy0YLQvtGB0LrRgNC+0LvQu9CwINC/0YDQuCAw4oCTMSDRgdC70LDQudC00LDRhSwg0YfRgtC+0LHRiyDQvdC1INCy0YvQt9GL0LLQsNGC0YxcbiAgICAgKiB0dWlDbGFtcCDRgSBtYXggPCBtaW4g0LIgVHVpQ2Fyb3VzZWxDb21wb25lbnQub25BdXRvc2Nyb2xsIOKGkiB1cGRhdGVJbmRleC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdG90YWxJdGVtcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYmFubmVycygpLmxlbmd0aCArIHRoaXMuYmFubmVyc0xpc3RSZWYubGVuZ3RoKTtcblxuICAgIC8qKlxuICAgICAqIEBpbmhlcml0RG9jXG4gICAgICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8g0J/QvtC00L/QuNGB0LrQsCDQuNC00ZHRgiDQv9C+0YHQu9C1INC60LDRgNGD0YHQtdC70LgsINGH0YLQvtCx0Ysg0YHQstCw0LnQvyDQvtCx0YDQsNCx0LDRgtGL0LLQsNC70YHRjyDQv9C+0YHQu9C10LTQvdC40Lw6INC40L3QsNGH0LUg0LXRkSDRgdC+0LHRgdGC0LLQtdC90L3QsNGPINC+0LHRgNCw0LHQvtGC0LrQsCDQttC10YHRgtCwINC00L7QsdCw0LLQuNGCINC10YnRkSDQvtC00LjQvSDRgdC70LDQudC0LlxuICAgICAgICB0aGlzLnN3aXBlcyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChzd2lwZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblN3aXBlKHN3aXBlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdHJhY2tCeSDQtNC70Y8gKm5nRm9yINCx0LDQvdC90LXRgNC+0LI6INGB0L7RhdGA0LDQvdGP0LXRgiDRg9C30LvRiyDQv9GA0Lgg0L7QsdC90L7QstC70LXQvdC40Lgg0YHQv9C40YHQutCwLFxuICAgICAqINGH0YLQvtCx0Ysg0LrQsNGA0YPRgdC10LvRjCDQvdC1INCy0LjQtNC10LvQsCAwINGB0LvQsNC50LTQvtCyINC80LXQttC00YMg0YLQuNC60LDQvNC4INC4INC90LUg0LLRi9C30YvQstCw0LvQsCB0dWlDbGFtcCjigKYsIC0xKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBfaW5kZXgg0JjQvdC00LXQutGBLlxuICAgICAqIEBwYXJhbSBiYW5uZXIg0JTQsNC90L3Ri9C1INC+INCx0LDQvdC90LXRgNC1LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gICAgcHVibGljIHRyYWNrQnlCYW5uZXJJZChfaW5kZXg6IG51bWJlciwgYmFubmVyOiBTY0Jhbm5lcik6IG51bWJlciB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uXG4gICAgICAgIHJldHVybiBiYW5uZXIuaWQgPz8gX2luZGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INC90LDRh9Cw0LvQsCDQutCw0YHQsNC90LjRjyDQsdCw0L3QvdC10YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25Ub3VjaFN0YXJ0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvdWNoU3RhcnRCYW5uZXJJZCA9IHRoaXMuY3VycmVudEJhbm5lcklkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0L3QsNC20LDRgtC40Y8g0L3QsCDQsdCw0L3QvdC10YAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYmFubmVyINCR0LDQvdC90LXRgCwg0L/QviDRgdGB0YvQu9C60LUg0LrQvtGC0L7RgNC+0LPQviDRgdC+0LLQtdGA0YjRkdC9INC/0LXRgNC10YXQvtC0LlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkNsaWNrKGJhbm5lcjogU2NCYW5uZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLmJhbm5lckNsaWNrLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgYmFubmVyX2lkOiBiYW5uZXIuaWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYmFubmVyLnVybCkge1xuICAgICAgICAgICAgdGhpcy5jbGlja0Jhbm5lckV2ZW50LmVtaXQoYmFubmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0LLQsNC50L/QsCDQv9C+INCx0LDQvdC90LXRgNGDLlxuICAgICAqXG4gICAgICog0JHQsNC90L3QtdGAINC+0YLRgdGH0LjRgtGL0LLQsNC10YLRgdGPINC+0YIg0L/QvtC60LDQt9Cw0L3QvdC+0LPQviDQsiDQvdCw0YfQsNC70LUg0LrQsNGB0LDQvdC40Y86INGH0LDRgdGC0Ywg0LbQtdGB0YLQvtCyINC60LDRgNGD0YHQtdC70Ywg0L7QsdGA0LDQsdCw0YLRi9Cy0LDQtdGCINGB0LDQvNCwXG4gICAgICogKNC60L7RgNC+0YLQutC40Lkg0YHQstCw0LnQvywg0L/QtdGA0LXRgtCw0YHQutC40LLQsNC90LjQtSDRgdC70LDQudC00LAg0L/QsNC70YzRhtC10LwpLCDQuCDQttC10YHRgiDQvdC1INC00L7Qu9C20LXQvSDQv9GA0L7Qu9C40YHRgtCw0YLRjCDQtNCy0LAg0LHQsNC90L3QtdGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3dpcGUg0KHQvtCx0YvRgtC40LUg0YHQstCw0LnQv9CwLlxuICAgICAqL1xuICAgIHByaXZhdGUgb25Td2lwZShzd2lwZTogVHVpU3dpcGVFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoc3dpcGUuZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEJhbm5lcklkLnNldChNYXRoLm1pbih0aGlzLnRvdWNoU3RhcnRCYW5uZXJJZCArIDEsIHRoaXMudG90YWxJdGVtcygpIC0gMSkpO1xuICAgICAgICB9IGVsc2UgaWYgKHN3aXBlLmRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QmFubmVySWQuc2V0KE1hdGgubWF4KHRoaXMudG91Y2hTdGFydEJhbm5lcklkIC0gMSwgMCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGxldCBlZmZlY3RpdmVEdXJhdGlvbiA9IHRvdGFsSXRlbXMoKSA+IDEgPyBkdXJhdGlvbiA6IDA7XG5cbjx0dWktY2Fyb3VzZWxcbiAgICBbZHVyYXRpb25dPVwiZWZmZWN0aXZlRHVyYXRpb25cIlxuICAgICNjYXJvdXNlbFxuICAgIFthdHRyLnJlc2l6YWJsZV09XCJyZXNpemFibGVcIlxuICAgIGNsYXNzPVwic2l6ZS1mdWxsIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLXhsIGJnLXdoaXRlXCJcbiAgICBbKGluZGV4KV09XCJjdXJyZW50QmFubmVySWRcIlxuPlxuICAgIEBmb3IgKGJhbm5lciBvZiBiYW5uZXJzKCk7IHRyYWNrIHRyYWNrQnlCYW5uZXJJZCgkaW5kZXgsIGJhbm5lcikpIHtcbiAgICAgICAgQHN3aXRjaCAoYmFubmVyLm1lZGlhVHlwZSkge1xuICAgICAgICAgICAgQGNhc2UgKCdpbWFnZScpIHtcbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAqdHVpSXRlbVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGljayhiYW5uZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImJhbm5lci50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5hc3BlY3QtcmF0aW9dPVwiYXNwZWN0UmF0aW9cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5ocmVmXT1cImJhbm5lci51cmwgPyBiYW5uZXIudXJsIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2l6ZS1mdWxsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxwaWN0dXJlPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChiYW5uZXIubWVkaWFGaWxlV2VicCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzb3VyY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImltYWdlL3dlYnBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3Jjc2V0XT1cImJhbm5lci5tZWRpYUZpbGVXZWJwIHwgc2NNZWRpYUltYWdlVHJhbnNmb3JtZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJiYW5uZXIubWVkaWFGaWxlIHwgc2NNZWRpYUltYWdlVHJhbnNmb3JtZXI6IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiYmFubmVyLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtZnVsbCBvYmplY3QtY292ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9waWN0dXJlPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBAZm9yIChpdGVtIG9mIGJhbm5lcnNMaXN0UmVmOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKnR1aUl0ZW1cbiAgICAgICAgICAgIFtzdHlsZS5hc3BlY3QtcmF0aW9dPVwiYXNwZWN0UmF0aW9cIlxuICAgICAgICAgICAgY2xhc3M9XCJzaXplLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvdHVpLWNhcm91c2VsPlxuXG5AaWYgKG5hdmlnYXRlQnV0dG9uICYmIHRvdGFsSXRlbXMoKSA+IDEpIHtcbiAgICA8ZGl2XG4gICAgICAgIHR1aVRoZW1lPVwibGlnaHRcIlxuICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCJcbiAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuY2hldnJvbi1sZWZ0XCJcbiAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgIFtzdHlsZS5ib3JkZXItcmFkaXVzLiVdPVwiMTAwXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjYXJvdXNlbC5wcmV2KClcIlxuICAgICAgICAgICAgY2xhc3M9XCIhYWJzb2x1dGUgbGVmdC0yXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLmNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgICAgW3N0eWxlLmJvcmRlci1yYWRpdXMuJV09XCIxMDBcIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cImZsYXRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNhcm91c2VsLm5leHQoKVwiXG4gICAgICAgICAgICBjbGFzcz1cIiFhYnNvbHV0ZSByaWdodC0yXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxufVxuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { RouterModule } from '@angular/router';
|
|
4
|
+
import { WaIntersectionObserver } from '@ng-web-apis/intersection-observer';
|
|
5
|
+
import { ScMediaImageTransformerPipe } from '@snabcentr/client-core';
|
|
6
|
+
import { TuiButton, TuiLoader } from '@taiga-ui/core';
|
|
7
|
+
import { TuiCarousel } from '@taiga-ui/kit';
|
|
8
|
+
import { ScBannerComponent } from './sc-banner.component';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@taiga-ui/cdk/directives/item";
|
|
11
|
+
import * as i2 from "@taiga-ui/kit";
|
|
12
|
+
import * as i3 from "@ng-web-apis/intersection-observer";
|
|
13
|
+
/**
|
|
14
|
+
* Модуль баннеров.
|
|
15
|
+
*/
|
|
16
|
+
export class ScBannerModule {
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBannerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
18
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ScBannerModule, declarations: [ScBannerComponent], imports: [CommonModule, RouterModule, TuiButton, i1.TuiItem, i2.TuiCarouselComponent, i2.TuiCarouselDirective, i2.TuiCarouselAutoscroll, i2.TuiCarouselButtons, i2.TuiCarouselScroll, TuiLoader, i3.WaIntersectionObserverDirective, i3.WaIntersectionObservee, i3.WaIntersectionRoot, ScMediaImageTransformerPipe], exports: [ScBannerComponent] }); }
|
|
19
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBannerModule, imports: [CommonModule, RouterModule, i2.TuiCarouselComponent, TuiLoader] }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBannerModule, decorators: [{
|
|
22
|
+
type: NgModule,
|
|
23
|
+
args: [{
|
|
24
|
+
declarations: [ScBannerComponent],
|
|
25
|
+
imports: [CommonModule, RouterModule, TuiButton, ...TuiCarousel, TuiLoader, ...WaIntersectionObserver, ScMediaImageTransformerPipe],
|
|
26
|
+
exports: [ScBannerComponent],
|
|
27
|
+
}]
|
|
28
|
+
}] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYmFubmVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9iYW5uZXIvc2MtYmFubmVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQUUxRDs7R0FFRztBQU1ILE1BQU0sT0FBTyxjQUFjOytHQUFkLGNBQWM7Z0hBQWQsY0FBYyxpQkFKUixpQkFBaUIsYUFDdEIsWUFBWSxFQUFFLFlBQVksRUFBRSxTQUFTLHVJQUFrQixTQUFTLHdGQUE2QiwyQkFBMkIsYUFDeEgsaUJBQWlCO2dIQUVsQixjQUFjLFlBSGIsWUFBWSxFQUFFLFlBQVksMkJBQTZCLFNBQVM7OzRGQUdqRSxjQUFjO2tCQUwxQixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxzQkFBc0IsRUFBRSwyQkFBMkIsQ0FBQztvQkFDbkksT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgV2FJbnRlcnNlY3Rpb25PYnNlcnZlciB9IGZyb20gJ0BuZy13ZWItYXBpcy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXInO1xuaW1wb3J0IHsgU2NNZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aUxvYWRlciB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUNhcm91c2VsIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5cbmltcG9ydCB7IFNjQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9zYy1iYW5uZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiDQnNC+0LTRg9C70Ywg0LHQsNC90L3QtdGA0L7Qsi5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtTY0Jhbm5lckNvbXBvbmVudF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBUdWlCdXR0b24sIC4uLlR1aUNhcm91c2VsLCBUdWlMb2FkZXIsIC4uLldhSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsIFNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZV0sXG4gICAgZXhwb3J0czogW1NjQmFubmVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgU2NCYW5uZXJNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './sc-brand-list-item';
|
|
2
|
+
export * from './sc-brands-list.component';
|
|
3
|
+
export * from './sc-brands-list.module';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvYnJhbmRzLWxpc3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjLWJyYW5kLWxpc3QtaXRlbSc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWJyYW5kcy1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWJyYW5kcy1saXN0Lm1vZHVsZSc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYnJhbmQtbGlzdC1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2JyYW5kcy1saXN0L3NjLWJyYW5kLWxpc3QtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDQrdC70LXQvNC10L3RgiDRgdC/0LjRgdC60LAg0LHRgNC10L3QtNC+0LIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NCcmFuZExpc3RJdGVtIHtcbiAgICAvKipcbiAgICAgKiBVUkwg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQsdGA0LXQvdC00LAuXG4gICAgICovXG4gICAgc3JjOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBVUkwg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQsdGA0LXQvdC00LAg0LIg0YTQvtGA0LzQsNGC0LUgV2ViUC5cbiAgICAgKi9cbiAgICB3ZWJwPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog0JDQu9GM0YLQtdGA0L3QsNGC0LjQstC90YvQuSDRgtC10LrRgdGCINC40LfQvtCx0YDQsNC20LXQvdC40Y8uXG4gICAgICovXG4gICAgYWx0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQqNC40YDQuNC90LAg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQsiDQv9C40LrRgdC10LvRj9GFLlxuICAgICAqL1xuICAgIHdpZHRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiDQktGL0YHQvtGC0LAg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQsiDQv9C40LrRgdC10LvRj9GFLlxuICAgICAqL1xuICAgIGhlaWdodDogbnVtYmVyO1xufVxuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@taiga-ui/cdk";
|
|
5
|
+
/**
|
|
6
|
+
* Компонент списка брэндов.
|
|
7
|
+
*/
|
|
8
|
+
export class ScBrandsListComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
/**
|
|
11
|
+
* Список элементов брендов.
|
|
12
|
+
*/
|
|
13
|
+
this.items = [];
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBrandsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScBrandsListComponent, selector: "sc-brands-list", inputs: { items: "items" }, ngImport: i0, template: "<!-- TODO: TASK:[#9893] \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043D\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0442\u0440\u043E\u043A \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u043F\u0440\u0438 \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0438 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0440\u0435\u043D\u0434\u043E\u0432. -->\n<div class=\"flex flex-col gap-4\">\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow scroll-slow-revert flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of items.length - (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n @let brandItem = items[index + (items.length - (items.length % 2)) / 2];\n <picture>\n @if (brandItem.webp) {\n <source\n type=\"image/webp\"\n [srcset]=\"brandItem.webp\"\n />\n }\n <img\n [src]=\"brandItem.src\"\n [alt]=\"items[index].alt\"\n [attr.width]=\"brandItem.width\"\n [attr.height]=\"brandItem.height\"\n />\n </picture>\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n @let brandItem = items[index];\n <picture>\n @if (brandItem.webp) {\n <source\n type=\"image/webp\"\n [srcset]=\"brandItem.webp\"\n />\n }\n <img\n [src]=\"brandItem.src\"\n [alt]=\"brandItem.alt\"\n [attr.width]=\"brandItem.width\"\n [attr.height]=\"brandItem.height\"\n />\n </picture>\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n</div>\n", styles: [".scroll-slow-revert{animation-direction:reverse!important;animation-delay:-15s!important}@keyframes scroll-slow{0%{transform:translate(0)}to{transform:translate(calc(-100% - 3rem))}}.animate-scroll-slow{animation:scroll-slow 30s linear infinite}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBrandsListComponent, decorators: [{
|
|
19
|
+
type: Component,
|
|
20
|
+
args: [{ selector: 'sc-brands-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- TODO: TASK:[#9893] \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043D\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0442\u0440\u043E\u043A \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u043F\u0440\u0438 \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0438 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0440\u0435\u043D\u0434\u043E\u0432. -->\n<div class=\"flex flex-col gap-4\">\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow scroll-slow-revert flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of items.length - (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n @let brandItem = items[index + (items.length - (items.length % 2)) / 2];\n <picture>\n @if (brandItem.webp) {\n <source\n type=\"image/webp\"\n [srcset]=\"brandItem.webp\"\n />\n }\n <img\n [src]=\"brandItem.src\"\n [alt]=\"items[index].alt\"\n [attr.width]=\"brandItem.width\"\n [attr.height]=\"brandItem.height\"\n />\n </picture>\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n @let brandItem = items[index];\n <picture>\n @if (brandItem.webp) {\n <source\n type=\"image/webp\"\n [srcset]=\"brandItem.webp\"\n />\n }\n <img\n [src]=\"brandItem.src\"\n [alt]=\"brandItem.alt\"\n [attr.width]=\"brandItem.width\"\n [attr.height]=\"brandItem.height\"\n />\n </picture>\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n</div>\n", styles: [".scroll-slow-revert{animation-direction:reverse!important;animation-delay:-15s!important}@keyframes scroll-slow{0%{transform:translate(0)}to{transform:translate(calc(-100% - 3rem))}}.animate-scroll-slow{animation:scroll-slow 30s linear infinite}\n"] }]
|
|
21
|
+
}], propDecorators: { items: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}] } });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYnJhbmRzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2JyYW5kcy1saXN0L3NjLWJyYW5kcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9icmFuZHMtbGlzdC9zYy1icmFuZHMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUkxRTs7R0FFRztBQU9ILE1BQU0sT0FBTyxxQkFBcUI7SUFObEM7UUFPSTs7V0FFRztRQUVJLFVBQUssR0FBc0IsRUFBRSxDQUFDO0tBQ3hDOytHQU5ZLHFCQUFxQjttR0FBckIscUJBQXFCLGtGQ2JsQyx1aUhBaUVBOzs0RkRwRGEscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNJLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNOzhCQU94QyxLQUFLO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTY0JyYW5kTGlzdEl0ZW0gfSBmcm9tICcuL3NjLWJyYW5kLWxpc3QtaXRlbSc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGB0L/QuNGB0LrQsCDQsdGA0Y3QvdC00L7Qsi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1icmFuZHMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWJyYW5kcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1icmFuZHMtbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0JyYW5kc0xpc3RDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRjdC70LXQvNC10L3RgtC+0LIg0LHRgNC10L3QtNC+0LIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXRlbXM6IFNjQnJhbmRMaXN0SXRlbVtdID0gW107XG59XG4iLCI8IS0tIFRPRE86IFRBU0s6WyM5ODkzXSDQlNC+0LHQsNCy0LjRgtGMINGA0LDQt9C00LXQu9C10L3QuNC1INC90LAg0L3QtdGB0LrQvtC70YzQutC+INGB0YLRgNC+0Log0LjQt9C+0LHRgNCw0LbQtdC90LjQuSwg0L/RgNC4INGD0LLQtdC70LjRh9C10L3QuNC4INC60L7Qu9C40YfQtdGB0YLQstCwINCx0YDQtdC90LTQvtCyLiAtLT5cbjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00XCI+XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtbGVmdC0xIHRvcC0wIHotMTAgYmxvY2sgaC1mdWxsIHctMTIgYmctZ3JhZGllbnQtdG8tciBmcm9tLXR1aS1iYXNlLTAxIHRvLXRyYW5zcGFyZW50XCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMTIgb3ZlcmZsb3ctaGlkZGVuIGNvbnRyYXN0LTE1MCBzYXR1cmF0ZS0wXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IF8gb2YgW10uY29uc3RydWN0b3IoMylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYW5pbWF0ZS1zY3JvbGwtc2xvdyBzY3JvbGwtc2xvdy1yZXZlcnQgZmxleCBzaHJpbmstMCBpdGVtcy1jZW50ZXIgZ2FwLTE2XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICp0dWlSZXBlYXRUaW1lcz1cImxldCBpbmRleCBvZiBpdGVtcy5sZW5ndGggLSAoaXRlbXMubGVuZ3RoIC0gKGl0ZW1zLmxlbmd0aCAlIDIpKSAvIDJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBsZXQgYnJhbmRJdGVtID0gaXRlbXNbaW5kZXggKyAoaXRlbXMubGVuZ3RoIC0gKGl0ZW1zLmxlbmd0aCAlIDIpKSAvIDJdO1xuICAgICAgICAgICAgICAgICAgICA8cGljdHVyZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYnJhbmRJdGVtLndlYnApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJpbWFnZS93ZWJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY3NldF09XCJicmFuZEl0ZW0ud2VicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImJyYW5kSXRlbS5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbXNbaW5kZXhdLmFsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiYnJhbmRJdGVtLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiYnJhbmRJdGVtLmhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L3BpY3R1cmU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtcmlnaHQtMSB0b3AtMCB6LTEwIGJsb2NrIGgtZnVsbCB3LTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS10cmFuc3BhcmVudCB0by10dWktYmFzZS0wMVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgLWxlZnQtMSB0b3AtMCB6LTEwIGJsb2NrIGgtZnVsbCB3LTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS10dWktYmFzZS0wMSB0by10cmFuc3BhcmVudFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTEyIG92ZXJmbG93LWhpZGRlbiBjb250cmFzdC0xNTAgc2F0dXJhdGUtMFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBfIG9mIFtdLmNvbnN0cnVjdG9yKDMpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFuaW1hdGUtc2Nyb2xsLXNsb3cgZmxleCBzaHJpbmstMCBpdGVtcy1jZW50ZXIgZ2FwLTE2XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICp0dWlSZXBlYXRUaW1lcz1cImxldCBpbmRleCBvZiAoaXRlbXMubGVuZ3RoIC0gKGl0ZW1zLmxlbmd0aCAlIDIpKSAvIDJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBsZXQgYnJhbmRJdGVtID0gaXRlbXNbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICA8cGljdHVyZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYnJhbmRJdGVtLndlYnApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c291cmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJpbWFnZS93ZWJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY3NldF09XCJicmFuZEl0ZW0ud2VicFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImJyYW5kSXRlbS5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiYnJhbmRJdGVtLmFsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIud2lkdGhdPVwiYnJhbmRJdGVtLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiYnJhbmRJdGVtLmhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L3BpY3R1cmU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtcmlnaHQtMSB0b3AtMCB6LTEwIGJsb2NrIGgtZnVsbCB3LTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS10cmFuc3BhcmVudCB0by10dWktYmFzZS0wMVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { TuiRepeatTimes } from '@taiga-ui/cdk';
|
|
4
|
+
import { ScBrandsListComponent } from './sc-brands-list.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Модуль списка брэндов.
|
|
8
|
+
*/
|
|
9
|
+
export class ScBrandsListModule {
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBrandsListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ScBrandsListModule, declarations: [ScBrandsListComponent], imports: [CommonModule, TuiRepeatTimes], exports: [ScBrandsListComponent] }); }
|
|
12
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBrandsListModule, imports: [CommonModule] }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBrandsListModule, decorators: [{
|
|
15
|
+
type: NgModule,
|
|
16
|
+
args: [{
|
|
17
|
+
imports: [CommonModule, TuiRepeatTimes],
|
|
18
|
+
declarations: [ScBrandsListComponent],
|
|
19
|
+
exports: [ScBrandsListComponent],
|
|
20
|
+
}]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYnJhbmRzLWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2JyYW5kcy1saXN0L3NjLWJyYW5kcy1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVuRTs7R0FFRztBQU1ILE1BQU0sT0FBTyxrQkFBa0I7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQUhaLHFCQUFxQixhQUQxQixZQUFZLEVBQUUsY0FBYyxhQUU1QixxQkFBcUI7Z0hBRXRCLGtCQUFrQixZQUpqQixZQUFZOzs0RkFJYixrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQztvQkFDdkMsWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHVpUmVwZWF0VGltZXMgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcblxuaW1wb3J0IHsgU2NCcmFuZHNMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9zYy1icmFuZHMtbGlzdC5jb21wb25lbnQnO1xuXG4vKipcbiAqINCc0L7QtNGD0LvRjCDRgdC/0LjRgdC60LAg0LHRgNGN0L3QtNC+0LIuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHVpUmVwZWF0VGltZXNdLFxuICAgIGRlY2xhcmF0aW9uczogW1NjQnJhbmRzTGlzdENvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW1NjQnJhbmRzTGlzdENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNjQnJhbmRzTGlzdE1vZHVsZSB7fVxuIl19
|