@snabcentr/client-ui 2.4.3 → 3.0.0
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.
Potentially problematic release.
This version of @snabcentr/client-ui might be problematic. Click here for more details.
- package/cart/cart-item-mobile/sc-cart-item-mobile.component.d.ts +9 -5
- package/catalog/hover-image-carousel/hover-image-carousel.component.d.ts +24 -0
- package/catalog/price-card/sc-price-card.component.d.ts +1 -5
- package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +3 -3
- package/catalog/sc-catalog.module.d.ts +2 -1
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +6 -0
- package/esm2022/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +15 -17
- package/esm2022/catalog/hover-image-carousel/hover-image-carousel.component.mjs +45 -0
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +7 -18
- package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +4 -3
- package/esm2022/catalog/sc-catalog.module.mjs +13 -4
- package/esm2022/catalog/sc-favorite-btn/sc-favorite-btn.component.mjs +3 -3
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +10 -1
- package/esm2022/order/order-item-mobile/sc-order-item-mobile.component.mjs +15 -19
- package/fesm2022/snabcentr-client-ui.mjs +93 -52
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/order/order-item-mobile/sc-order-item-mobile.component.d.ts +9 -7
- package/package.json +2 -2
- package/release_notes.tmp +1 -1
- package/styles/tailwind/tailwind.scss +44 -74
| @@ -1,5 +1,5 @@ | |
| 1 1 | 
             
            import * as i0 from '@angular/core';
         | 
| 2 | 
            -
            import { EventEmitter, Component, ChangeDetectionStrategy, Inject, Input, Output, inject, DestroyRef, SkipSelf, Directive, HostBinding, ContentChild, ViewChild, NgModule, ContentChildren, HostListener, Renderer2, ElementRef, Pipe, Optional, Injectable, forwardRef, InjectionToken } from '@angular/core';
         | 
| 2 | 
            +
            import { EventEmitter, Component, ChangeDetectionStrategy, Inject, Input, Output, inject, DestroyRef, SkipSelf, Directive, HostBinding, ContentChild, ViewChild, NgModule, ContentChildren, HostListener, Renderer2, ElementRef, Pipe, Optional, Injectable, signal, forwardRef, InjectionToken } from '@angular/core';
         | 
| 3 3 | 
             
            import * as i1 from '@snabcentr/client-core';
         | 
| 4 4 | 
             
            import { ScUserMetrikaGoalsEnum, ScISuggestionType, SC_MIN_LENGTH_SEARCH_TERM, ScOpfList, ScWarehouseService, ScAuthService, SEARCH_TERM, ScUnitsHelper, ScImageHelper, SC_PATH_IMAGE_NOT_FOUND, ScPhoneService, IS_RUNNING_ON_TERMINAL, SC_URLS, TERMINAL_PROVIDERS, SEARCH_TERM_PROVIDERS, ScPaginationService, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_OPTIONS, ScIconTypesEnum, ScDocumentInfoTypesEnum, ScSamplesService, ScUserService } from '@snabcentr/client-core';
         | 
| 5 5 | 
             
            import * as i6$1 from 'rxjs';
         | 
| @@ -19,7 +19,7 @@ import { AbstractTuiControl, TuiInputModule, TuiTextfieldControllerModule, TuiCo | |
| 19 19 | 
             
            import * as i8 from '@maskito/angular';
         | 
| 20 20 | 
             
            import { MaskitoDirective } from '@maskito/angular';
         | 
| 21 21 | 
             
            import * as i2$1 from '@taiga-ui/kit';
         | 
| 22 | 
            -
            import { TuiAccordionItem, TuiElasticContainer, TuiAccordion, TuiPreview, TuiFieldErrorPipe, TuiFilterByInputPipe, TuiStringifyContentPipe, TuiDataListWrapper, TuiButtonLoading, TuiCarousel, TuiCheckbox, TuiStepper, TuiHighlight, TuiPreviewDialogService, TuiTreeService, TuiTreeItemContent, TUI_TREE_START, TUI_TREE_CONTENT, TUI_TREE_LOADING, TUI_TREE_LOADER, TuiTree | 
| 22 | 
            +
            import { TuiAccordionItem, TuiElasticContainer, TuiAccordion, TuiPreview, TuiFieldErrorPipe, TuiFilterByInputPipe, TuiStringifyContentPipe, TuiDataListWrapper, TuiButtonLoading, TuiCarousel, TuiCheckbox, TuiStepper, TuiPagination, TuiHighlight, TuiAvatar, TuiBadge, TuiPreviewDialogService, TuiTreeService, TuiTreeItemContent, TUI_TREE_START, TUI_TREE_CONTENT, TUI_TREE_LOADING, TUI_TREE_LOADER, TuiTree } from '@taiga-ui/kit';
         | 
| 23 23 | 
             
            import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
         | 
| 24 24 | 
             
            import * as i3$1 from '@taiga-ui/core/components/data-list';
         | 
| 25 25 | 
             
            import * as i2$2 from '@taiga-ui/polymorpheus';
         | 
| @@ -1618,6 +1618,15 @@ class AbstractScPriceCard { | |
| 1618 1618 | 
             
                getCardImagePreview() {
         | 
| 1619 1619 | 
             
                    return this.product ? this.imageHelper.getImagePreview(this.product) : this.pathImageNotFound;
         | 
| 1620 1620 | 
             
                }
         | 
| 1621 | 
            +
                /**
         | 
| 1622 | 
            +
                 * Возвращает массив превью-изображений товара.
         | 
| 1623 | 
            +
                 *
         | 
| 1624 | 
            +
                 * @param product Объект товара.
         | 
| 1625 | 
            +
                 */
         | 
| 1626 | 
            +
                getCardImagePreviewList(product) {
         | 
| 1627 | 
            +
                    const images = this.imageHelper.getProductImagePreviewList(product);
         | 
| 1628 | 
            +
                    return images.length > 0 ? images : [this.pathImageNotFound];
         | 
| 1629 | 
            +
                }
         | 
| 1621 1630 | 
             
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AbstractScPriceCard, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
         | 
| 1622 1631 | 
             
                static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: AbstractScPriceCard, inputs: { cartItem: "cartItem", product: "product", showQuantityControl: "showQuantityControl" }, outputs: { clickFavoriteEvent: "clickFavoriteEvent", clickAddToCartEvent: "clickAddToCartEvent", clickClearEvent: "clickClearEvent", clickCardEvent: "clickCardEvent", clickPriceHistoryEvent: "clickPriceHistoryEvent", quantityValueChanges: "quantityValueChanges" }, ngImport: i0 }); }
         | 
| 1623 1632 | 
             
            }
         | 
| @@ -3129,11 +3138,11 @@ class ScFavoriteBtnComponent { | |
| 3129 3138 | 
             
                    this.disabled = false;
         | 
| 3130 3139 | 
             
                }
         | 
| 3131 3140 | 
             
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScFavoriteBtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
         | 
| 3132 | 
            -
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScFavoriteBtnComponent, selector: "sc-favorite-btn", inputs: { isFavorite: "isFavorite", showLoader: "showLoader", disabled: "disabled" }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<button\n    tuiIconButton\n    (click)=\"clickEvent.emit()\"\n    [disabled]=\"disabled\"\n    [loading]=\"showLoader\"\n    appearance=\"flat\"\n    size=\"s\"\n>\n    <tui-icon\n        class=\"text-tui-primary\"\n        [icon]=\"isFavorite ? '@tui.bookmark-filled' : '@tui.bookmark'\"\n    ></tui-icon>\n</button>\n", dependencies: [{ kind: "directive", type: i1$1.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1$1.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: i2$1.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         | 
| 3141 | 
            +
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScFavoriteBtnComponent, selector: "sc-favorite-btn", inputs: { isFavorite: "isFavorite", showLoader: "showLoader", disabled: "disabled" }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<button\n    tuiIconButton\n    (click)=\"clickEvent.emit()\"\n    [disabled]=\"disabled\"\n    [loading]=\"showLoader\"\n    appearance=\"flat\"\n    size=\"s\"\n>\n    <tui-icon\n        class=\"!text-xl text-tui-primary\"\n        [icon]=\"isFavorite ? '@tui.bookmark-filled' : '@tui.bookmark'\"\n    ></tui-icon>\n</button>\n", dependencies: [{ kind: "directive", type: i1$1.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1$1.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: i2$1.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         | 
| 3133 3142 | 
             
            }
         | 
| 3134 3143 | 
             
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScFavoriteBtnComponent, decorators: [{
         | 
| 3135 3144 | 
             
                        type: Component,
         | 
| 3136 | 
            -
                        args: [{ selector: 'sc-favorite-btn', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n    tuiIconButton\n    (click)=\"clickEvent.emit()\"\n    [disabled]=\"disabled\"\n    [loading]=\"showLoader\"\n    appearance=\"flat\"\n    size=\"s\"\n>\n    <tui-icon\n        class=\"text-tui-primary\"\n        [icon]=\"isFavorite ? '@tui.bookmark-filled' : '@tui.bookmark'\"\n    ></tui-icon>\n</button>\n" }]
         | 
| 3145 | 
            +
                        args: [{ selector: 'sc-favorite-btn', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n    tuiIconButton\n    (click)=\"clickEvent.emit()\"\n    [disabled]=\"disabled\"\n    [loading]=\"showLoader\"\n    appearance=\"flat\"\n    size=\"s\"\n>\n    <tui-icon\n        class=\"!text-xl text-tui-primary\"\n        [icon]=\"isFavorite ? '@tui.bookmark-filled' : '@tui.bookmark'\"\n    ></tui-icon>\n</button>\n" }]
         | 
| 3137 3146 | 
             
                    }], propDecorators: { clickEvent: [{
         | 
| 3138 3147 | 
             
                            type: Output
         | 
| 3139 3148 | 
             
                        }], isFavorite: [{
         | 
| @@ -3409,6 +3418,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor | |
| 3409 3418 | 
             
                            args: ['keydown.arrowUp', ['step']]
         | 
| 3410 3419 | 
             
                        }] } });
         | 
| 3411 3420 |  | 
| 3421 | 
            +
            /**
         | 
| 3422 | 
            +
             * Компонент просмотра изображений через событие наведения.
         | 
| 3423 | 
            +
             */
         | 
| 3424 | 
            +
            class HoverImageCarouselComponent {
         | 
| 3425 | 
            +
                constructor() {
         | 
| 3426 | 
            +
                    /**
         | 
| 3427 | 
            +
                     * Массив изображений.
         | 
| 3428 | 
            +
                     */
         | 
| 3429 | 
            +
                    this.images = [];
         | 
| 3430 | 
            +
                    /**
         | 
| 3431 | 
            +
                     * {@link WritableSignal} для отслеживания текущего индекса изображения.
         | 
| 3432 | 
            +
                     */
         | 
| 3433 | 
            +
                    this.currentIndex = signal(0);
         | 
| 3434 | 
            +
                }
         | 
| 3435 | 
            +
                /**
         | 
| 3436 | 
            +
                 * Обработчик события mousemove.
         | 
| 3437 | 
            +
                 *
         | 
| 3438 | 
            +
                 * @param offsetX Отступ курсора мыши по оси X от края {@link HTMLElement}.
         | 
| 3439 | 
            +
                 * @param target Объект {@link HTMLElement} в котором лежат изображения
         | 
| 3440 | 
            +
                 */
         | 
| 3441 | 
            +
                onHover(offsetX, target) {
         | 
| 3442 | 
            +
                    if (this.images.length <= 1 || offsetX < 0) {
         | 
| 3443 | 
            +
                        return;
         | 
| 3444 | 
            +
                    }
         | 
| 3445 | 
            +
                    const elementWidth = target.offsetWidth;
         | 
| 3446 | 
            +
                    const hoverPercentage = offsetX / elementWidth;
         | 
| 3447 | 
            +
                    const newIndex = Math.floor(hoverPercentage * this.images.length);
         | 
| 3448 | 
            +
                    this.currentIndex.set(newIndex);
         | 
| 3449 | 
            +
                }
         | 
| 3450 | 
            +
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: HoverImageCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
         | 
| 3451 | 
            +
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: HoverImageCarouselComponent, isStandalone: true, selector: "sc-hover-image-carousel", inputs: { images: "images" }, host: { listeners: { "mousemove.silent": "onHover($event.offsetX,$event.target)" } }, ngImport: i0, template: "<div\n    class=\"overflow-hidden rounded-xl\"\n    [class.mb-2]=\"images.length <= 1\"\n    [style.aspect-ratio]=\"'20/19'\"\n>\n    <img\n        [src]=\"images[currentIndex()]\"\n        class=\"size-full rounded-xl object-contain\"\n    />\n</div>\n\n@if (images.length > 1) {\n    <tui-pagination\n        size=\"s\"\n        [length]=\"images.length\"\n        [index]=\"currentIndex()\"\n    />\n}\n", dependencies: [{ kind: "component", type: TuiPagination, selector: "tui-pagination", inputs: ["length", "focusable", "size", "disabled", "activePadding", "sidePadding", "content", "index"], outputs: ["indexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         | 
| 3452 | 
            +
            }
         | 
| 3453 | 
            +
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: HoverImageCarouselComponent, decorators: [{
         | 
| 3454 | 
            +
                        type: Component,
         | 
| 3455 | 
            +
                        args: [{ selector: 'sc-hover-image-carousel', standalone: true, imports: [TuiPagination], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n    class=\"overflow-hidden rounded-xl\"\n    [class.mb-2]=\"images.length <= 1\"\n    [style.aspect-ratio]=\"'20/19'\"\n>\n    <img\n        [src]=\"images[currentIndex()]\"\n        class=\"size-full rounded-xl object-contain\"\n    />\n</div>\n\n@if (images.length > 1) {\n    <tui-pagination\n        size=\"s\"\n        [length]=\"images.length\"\n        [index]=\"currentIndex()\"\n    />\n}\n" }]
         | 
| 3456 | 
            +
                    }], propDecorators: { images: [{
         | 
| 3457 | 
            +
                            type: Input
         | 
| 3458 | 
            +
                        }], onHover: [{
         | 
| 3459 | 
            +
                            type: HostListener,
         | 
| 3460 | 
            +
                            args: ['mousemove.silent', ['$event.offsetX', '$event.target']]
         | 
| 3461 | 
            +
                        }] } });
         | 
| 3462 | 
            +
             | 
| 3412 3463 | 
             
            /**
         | 
| 3413 3464 | 
             
             * Компонент информации о наличии товара на складе.
         | 
| 3414 3465 | 
             
             */
         | 
| @@ -3435,11 +3486,11 @@ class ScPriceWarehouseStockComponent { | |
| 3435 3486 | 
             
                    this.warehousesList$ = this.selectedWarehouse$.pipe(switchMap((warehouse) => this.warehouseService.getWarehouses$().pipe(map((warehouses) => this.product.stockCount?.map((sc) => ({ w: warehouses.find((w) => w.id === sc.warehouseId), sc: sc }))), map((items) => items?.sort((item) => (item.w?.id === warehouse?.id ? -1 : 1))))));
         | 
| 3436 3487 | 
             
                }
         | 
| 3437 3488 | 
             
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScPriceWarehouseStockComponent, deps: [{ token: i1.ScWarehouseService }], target: i0.ɵɵFactoryTarget.Component }); }
         | 
| 3438 | 
            -
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: { classList: "classList", product: "product", withStockHint: "withStockHint", fromMain: "fromMain" }, ngImport: i0, template: "<ng-container *ngIf=\"product\">\n    <ng-container | 
| 3489 | 
            +
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: { classList: "classList", product: "product", withStockHint: "withStockHint", fromMain: "fromMain" }, ngImport: i0, template: "<ng-container *ngIf=\"product\">\n    <ng-container *ngIf=\"selectedWarehouse$ | async as warehouseSelect\">\n        <span\n            *tuiLet=\"withStockHint && !!(warehousesList$ | async)?.length as showStockHint\"\n            [tuiHint]=\"showStockHint && stockHint\"\n            [tuiHintShowDelay]=\"100\"\n            tuiHintDirection=\"top\"\n        >\n            <ng-container *ngIf=\"product.getNotStockMessage(warehouseSelect) as message\">\n                <a\n                    *tuiLet=\"!!(product.properties?.planingIncomingDate || product.properties?.planingProductionDate) as showPlaningHint\"\n                    tuiLink\n                    [pseudo]=\"showPlaningHint\"\n                    [tuiHint]=\"showPlaningHint && planingHint\"\n                    [tuiHintShowDelay]=\"100\"\n                    tuiHintDirection=\"top\"\n                    [style.color]=\"'var(--tui-status-negative)'\"\n                    [ngClass]=\"classList\"\n                >\n                    {{ message }}\n                </a>\n            </ng-container>\n            <ng-template #planingHint>\n                <span *ngIf=\"product.properties?.planingIncomingDate\">\n                    \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u044F <br />\n                    \u043D\u0430 \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0441\u043A\u043B\u0430\u0434:\n                    <span class=\"font-bold\">{{ product.properties?.planingIncomingDate }}</span>\n                </span>\n                <span *ngIf=\"product.properties?.planingProductionDate\">\n                    \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 <br />\n                    \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0441\u0442\u0432\u0430:\n                    <span class=\"font-bold\">{{ product.properties?.planingProductionDate }}</span>\n                </span>\n            </ng-template>\n            <a\n                *ngIf=\"product.isWarehouseStockExist(warehouseSelect.id)\"\n                tuiLink\n                [pseudo]=\"showStockHint\"\n                [style.color]=\"'var(--tui-status-positive)'\"\n                [ngClass]=\"classList\"\n            >\n                \u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438<ng-container *ngIf=\"product.getWarehouseStockCount(warehouseSelect.id) as count\"\n                    >:\n                    <span class=\"whitespace-nowrap\">{{ count }} {{ product.quantityUnit }}</span>\n                </ng-container>\n            </a>\n            <span\n                *ngIf=\"product.onOrder\"\n                [style.color]=\"'var(--tui-status-warning)'\"\n                [ngClass]=\"classList\"\n                >\u041F\u043E\u0434 \u0437\u0430\u043A\u0430\u0437</span\n            >\n        </span>\n    </ng-container>\n\n    <ng-template #stockHint>\n        <table\n            *ngIf=\"selectedWarehouse$ | async as warehouseSelect\"\n            class=\"stock-table text-body-s table-auto\"\n            [ngClass]=\"classList\"\n        >\n            <tbody>\n                <tr\n                    *ngFor=\"let item of warehousesList$ | async\"\n                    class=\"border-b\"\n                >\n                    <ng-container>\n                        <td class=\"px-1\">{{ item.w?.name }}:</td>\n                        <td class=\"px-1\">{{ item.sc.count ? item.sc.count + ' ' + product.quantityUnit : '\u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438' }}</td>\n                    </ng-container>\n                </tr>\n            </tbody>\n        </table>\n    </ng-template>\n</ng-container>\n", styles: ["::ng-deep tui-hint:has(.stock-table){max-inline-size:22rem}[tuiIconButton]{--tui-radius-m: .75rem;--tui-height-xs: 1.25rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i1$1.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i6.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         | 
| 3439 3490 | 
             
            }
         | 
| 3440 3491 | 
             
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScPriceWarehouseStockComponent, decorators: [{
         | 
| 3441 3492 | 
             
                        type: Component,
         | 
| 3442 | 
            -
                        args: [{ selector: 'sc-price-warehouse-stock', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"product\">\n    <ng-container | 
| 3493 | 
            +
                        args: [{ selector: 'sc-price-warehouse-stock', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"product\">\n    <ng-container *ngIf=\"selectedWarehouse$ | async as warehouseSelect\">\n        <span\n            *tuiLet=\"withStockHint && !!(warehousesList$ | async)?.length as showStockHint\"\n            [tuiHint]=\"showStockHint && stockHint\"\n            [tuiHintShowDelay]=\"100\"\n            tuiHintDirection=\"top\"\n        >\n            <ng-container *ngIf=\"product.getNotStockMessage(warehouseSelect) as message\">\n                <a\n                    *tuiLet=\"!!(product.properties?.planingIncomingDate || product.properties?.planingProductionDate) as showPlaningHint\"\n                    tuiLink\n                    [pseudo]=\"showPlaningHint\"\n                    [tuiHint]=\"showPlaningHint && planingHint\"\n                    [tuiHintShowDelay]=\"100\"\n                    tuiHintDirection=\"top\"\n                    [style.color]=\"'var(--tui-status-negative)'\"\n                    [ngClass]=\"classList\"\n                >\n                    {{ message }}\n                </a>\n            </ng-container>\n            <ng-template #planingHint>\n                <span *ngIf=\"product.properties?.planingIncomingDate\">\n                    \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u044F <br />\n                    \u043D\u0430 \u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u0441\u043A\u043B\u0430\u0434:\n                    <span class=\"font-bold\">{{ product.properties?.planingIncomingDate }}</span>\n                </span>\n                <span *ngIf=\"product.properties?.planingProductionDate\">\n                    \u041F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u0430\u044F \u0434\u0430\u0442\u0430 <br />\n                    \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0441\u0442\u0432\u0430:\n                    <span class=\"font-bold\">{{ product.properties?.planingProductionDate }}</span>\n                </span>\n            </ng-template>\n            <a\n                *ngIf=\"product.isWarehouseStockExist(warehouseSelect.id)\"\n                tuiLink\n                [pseudo]=\"showStockHint\"\n                [style.color]=\"'var(--tui-status-positive)'\"\n                [ngClass]=\"classList\"\n            >\n                \u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438<ng-container *ngIf=\"product.getWarehouseStockCount(warehouseSelect.id) as count\"\n                    >:\n                    <span class=\"whitespace-nowrap\">{{ count }} {{ product.quantityUnit }}</span>\n                </ng-container>\n            </a>\n            <span\n                *ngIf=\"product.onOrder\"\n                [style.color]=\"'var(--tui-status-warning)'\"\n                [ngClass]=\"classList\"\n                >\u041F\u043E\u0434 \u0437\u0430\u043A\u0430\u0437</span\n            >\n        </span>\n    </ng-container>\n\n    <ng-template #stockHint>\n        <table\n            *ngIf=\"selectedWarehouse$ | async as warehouseSelect\"\n            class=\"stock-table text-body-s table-auto\"\n            [ngClass]=\"classList\"\n        >\n            <tbody>\n                <tr\n                    *ngFor=\"let item of warehousesList$ | async\"\n                    class=\"border-b\"\n                >\n                    <ng-container>\n                        <td class=\"px-1\">{{ item.w?.name }}:</td>\n                        <td class=\"px-1\">{{ item.sc.count ? item.sc.count + ' ' + product.quantityUnit : '\u0412 \u043D\u0430\u043B\u0438\u0447\u0438\u0438' }}</td>\n                    </ng-container>\n                </tr>\n            </tbody>\n        </table>\n    </ng-template>\n</ng-container>\n", styles: ["::ng-deep tui-hint:has(.stock-table){max-inline-size:22rem}[tuiIconButton]{--tui-radius-m: .75rem;--tui-height-xs: 1.25rem}\n"] }]
         | 
| 3443 3494 | 
             
                    }], ctorParameters: () => [{ type: i1.ScWarehouseService }], propDecorators: { classList: [{
         | 
| 3444 3495 | 
             
                            type: Input
         | 
| 3445 3496 | 
             
                        }], product: [{
         | 
| @@ -3471,12 +3522,6 @@ class ScPriceCardComponent extends AbstractScPriceCard { | |
| 3471 3522 | 
             
                     */
         | 
| 3472 3523 | 
             
                    this.isMobile = inject(TUI_IS_MOBILE);
         | 
| 3473 3524 | 
             
                }
         | 
| 3474 | 
            -
                /**
         | 
| 3475 | 
            -
                 * Признак того, что компонент находится в корзине.
         | 
| 3476 | 
            -
                 */
         | 
| 3477 | 
            -
                get isInCart() {
         | 
| 3478 | 
            -
                    return Boolean(this.cartItem);
         | 
| 3479 | 
            -
                }
         | 
| 3480 3525 | 
             
                /**
         | 
| 3481 3526 | 
             
                 * Устанавливает компонент в очередь на обновление.
         | 
| 3482 3527 | 
             
                 */
         | 
| @@ -3484,22 +3529,16 @@ class ScPriceCardComponent extends AbstractScPriceCard { | |
| 3484 3529 | 
             
                    this.cdr.markForCheck();
         | 
| 3485 3530 | 
             
                }
         | 
| 3486 3531 | 
             
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScPriceCardComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
         | 
| 3487 | 
            -
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScPriceCardComponent, selector: "sc-price-card", inputs: { size: "size" }, host: { properties: { "attr.data-size": "this.size", "attr.is_mobile": "this.isMobile", "attr.is_in_cart": "this.isInCart" } }, providers: [SEARCH_TERM_PROVIDERS], usesInheritance: true, ngImport: i0, template: "<div\n    *ngIf=\"product; else skeleton\"\n    class=\"card-wrapper relative flex w-auto min-w-40 flex-col rounded-xl shadow-md\"\n>\n    <div class=\"flex grow flex-col justify-center overflow-hidden rounded-xl p-2\">\n        <img\n            (click)=\"clickCardEvent.emit()\"\n            [src]=\"getCardImagePreview()\"\n            [alt]=\"product.name\"\n            class=\"max-h-full w-full rounded-xl object-cover\"\n        />\n        <sc-favorite-btn\n            *ngIf=\"authStatus$ | async\"\n            class=\"absolute left-2 top-2\"\n            (clickEvent)=\"clickFavoriteEvent.emit()\"\n            [showLoader]=\"favoriteShowLoader\"\n            [isFavorite]=\"product.isFavorite\"\n            [disabled]=\"!!product.primaryCategory?.isFavorite\"\n        ></sc-favorite-btn>\n        <div class=\"absolute right-2 top-2 m-1 flex gap-2\">\n            <tui-icon \n                *ngIf=\"product.isPreviouslyOrdered\"\n                icon=\"@tui.star\"\n                class=\"!size-6 rounded-lg !fill-white text-tui-negative\"\n            ></tui-icon>\n            <tui-icon \n                *ngIf=\"product.cartItem\"\n                icon=\"@tui.check\"\n                class=\"!size-6 rounded-lg bg-tui-primary text-white\"\n            ></tui-icon>\n        </div>\n    </div>\n    <div class=\"p-2\">\n        <tui-elastic-container class=\"shrink-0\">\n            <a\n                tuiLink\n                class=\"name\"\n                \n                [tuiHighlight]=\"(search$ | async) ?? ''\"\n                (click)=\"clickCardEvent.emit()\"\n            >\n                {{ product.name }}\n            </a>\n        </tui-elastic-container>\n        <tui-elastic-container class=\"shrink-0\">\n            <p\n                *ngIf=\"product?.pack\"\n                class=\"text-tui-text-02\"\n            >\n                \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n                <tui-svg\n                    *ngIf=\"product.ignoreMinCountCheck\"\n                    src=\"tuiIconPackage\"\n                    [tuiHint]=\"minCountHint\"\n                    [tuiHintShowDelay]=\"100\"\n                    tuiHintDirection=\"top\"\n                ></tui-svg>\n                <ng-template #minCountHint>\n                    \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n                    \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n                    \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n                </ng-template>\n            </p>\n            <p\n                [tuiHighlight]=\"(search$ | async) ?? ''\"\n                class=\"code text-tui-text-02\"\n            >\n                \u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}\n            </p>\n\n            <a\n                tuiLink\n                *ngIf=\"!isMobile && (authStatus$ | async) && product?.costDate\"\n                \n                aria-disabled=\"true\"\n                class=\"history\"\n                (click)=\"clickPriceHistoryEvent.emit()\"\n            >\n                \u0414\u0430\u0442\u0430: {{ product.costDate }}\n            </a>\n        </tui-elastic-container>\n        <div\n            *ngIf=\"warehouseSelect$ | async as warehouseSelect\"\n            class=\"flex flex-col\"\n        >\n            <span\n                *ngIf=\"product.discount && !isMobile\"\n                class=\"flex items-center text-tui-text-02\"\n            >\n                <span class=\"line-through\">{{ product.discountCostString }}</span>  \n                <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n                <tui-icon \n                    icon=\"@tui.info\"\n                    [tuiHint]=\"discountHint\"\n                    [tuiHintShowDelay]=\"100\"\n                    tuiHintDirection=\"top\"\n                    class=\"!h-4 text-black\"\n                ></tui-icon>\n                <ng-template #discountHint>\n                    <div class=\"font-bold\">{{ product.discount.name }}</div>\n                    <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n                </ng-template>\n            </span>\n            <span\n                [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\"\n                class=\"cost font-bold\"\n                >{{ product.costRubString }}</span\n            >\n            <span\n                *ngIf=\"!product.priceInRub\"\n                class=\"hidden font-bold text-tui-text-02 group-hover:block\"\n                >{{ product.costString }}</span\n            >\n            <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n        </div>\n        <div class=\"cart-actions flex shrink-0 overflow-hidden\">\n            <button\n                *ngIf=\"!showQuantityControl\"\n                tuiButton\n                (click)=\"clickAddToCartEvent.emit(product)\"\n                [loading]=\"quantityShowLoader\"\n                [size]=\"size === 's' ? 'xs' : 's'\"\n                class=\"mt-2 grow\"\n                iconStart=\"@tui.shopping-cart\"\n            >\n                \u0412 \u043A\u043E\u0440\u0437\u0438\u043D\u0443\n            </button>\n            <sc-input-quantity\n                #inputQuantity\n                *ngIf=\"showQuantityControl\"\n                [formControl]=\"quantityControl\"\n                [size]=\"size\"\n                [step]=\"unitsHelper.productMultiplicity(product)\"\n                [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n                [showLoader]=\"quantityShowLoader\"\n                (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n                class=\"mt-2 w-full\"\n                (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n            ></sc-input-quantity>\n        </div>\n    </div>\n</div>\n\n<ng-template #skeleton>\n    <div class=\"card-wrapper flex flex-col overflow-hidden rounded-xl bg-white shadow-sc-1\">\n        <!-- \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u0432\u0430\u0440\u0430 -->\n        <div class=\"h-3/5 w-full rounded-t bg-tui-base-02\"></div>\n        <!-- \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u0442\u043E\u0432\u0430\u0440\u0435 -->\n        <div class=\"flex grow flex-col gap-2.5 rounded-b bg-white p-5\">\n            <div class=\"h-4 w-full rounded bg-tui-base-02\"></div>\n            <div class=\"h-4 w-3/5 rounded bg-tui-base-02\"></div>\n            <div class=\"h-4 w-full rounded bg-tui-base-02\"></div>\n        </div>\n    </div>\n</ng-template>\n", styles: [":host .name{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4}:host[data-size=s] .card-wrapper{height:16rem;font:var(--tui-font-text-xs)}:host[data-size=s] .card-wrapper .name,:host[data-size=s] .card-wrapper .cost{font:var(--tui-font-text-s);font-weight:800}:host[data-size=m] .card-wrapper{height:20rem;font:var(--tui-font-text-s)}:host[data-size=m] .card-wrapper .name,:host[data-size=m] .card-wrapper .cost{font:var(--tui-font-text-m);font-weight:800}:host[is_mobile=false][is_in_cart=false] .name{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}:host[is_mobile=false][is_in_cart=false] .code,:host[is_mobile=false][is_in_cart=false] .history{display:none}:host[is_mobile=false][is_in_cart=false] .cart-actions{max-height:0;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}:host[is_mobile=false][is_in_cart=false]:hover .code,:host[is_mobile=false][is_in_cart=false]:hover .history,:host[is_mobile=false][is_in_cart=false]:hover .name{display:-webkit-box;-webkit-line-clamp:4}:host[is_mobile=false][is_in_cart=false]:hover .cart-actions{max-height:3rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1$1.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i1$1.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "component", type: i2$1.TuiElasticContainer, selector: "tui-elastic-container" }, { kind: "directive", type: i2$1.TuiHighlight, selector: "[tuiHighlight]", inputs: ["tuiHighlight", "tuiHighlightColor"] }, { kind: "component", type: i2$1.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "component", type: ScFavoriteBtnComponent, selector: "sc-favorite-btn", inputs: ["isFavorite", "showLoader", "disabled"], outputs: ["clickEvent"] }, { kind: "component", type: ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "showLoader", "showCross", "ignoreStepValidators", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "component", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         | 
| 3532 | 
            +
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScPriceCardComponent, selector: "sc-price-card", inputs: { size: "size" }, host: { properties: { "attr.data-size": "this.size" } }, providers: [SEARCH_TERM_PROVIDERS], usesInheritance: true, ngImport: i0, template: "<div\n    *ngIf=\"product; else skeleton\"\n    class=\"card-wrapper relative flex h-full w-auto flex-col rounded-xl p-1\"\n>\n    <div class=\"flex items-center justify-between\">\n        <span\n            [tuiHighlight]=\"(search$ | async) ?? ''\"\n            class=\"code text-tui-text-02\"\n        >\n            \u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}\n        </span>\n\n        <div class=\"flex gap-2\">\n            <sc-favorite-btn\n                (clickEvent)=\"clickFavoriteEvent.emit()\"\n                [showLoader]=\"favoriteShowLoader\"\n                [isFavorite]=\"product.isFavorite\"\n                [disabled]=\"!!product.primaryCategory?.isFavorite\"\n            ></sc-favorite-btn>\n            <tui-avatar\n                *ngIf=\"product.isPreviouslyOrdered\"\n                src=\"@tui.star-filled\"\n                size=\"s\"\n                [style.background]=\"'var(--tui-status-negative-pale-hover)'\"\n                [style.color]=\"'var(--tui-text-negative)'\"\n            ></tui-avatar>\n        </div>\n    </div>\n\n    <sc-hover-image-carousel\n        (click)=\"clickCardEvent.emit()\"\n        [images]=\"!isMobile ? getCardImagePreviewList(product) : [getCardImagePreview()]\"\n        class=\"cursor-pointer\"\n    ></sc-hover-image-carousel>\n    <div class=\"flex grow flex-col justify-between gap-1\">\n        <div class=\"flex flex-col gap-1\">\n            <a\n                tuiLink\n                class=\"name\"\n                [tuiHighlight]=\"(search$ | async) ?? ''\"\n                (click)=\"clickCardEvent.emit()\"\n            >\n                {{ product.name }}\n            </a>\n            <div\n                *ngIf=\"product?.pack\"\n                class=\"text-tui-text-02 flex gap-1\"\n            >\n                \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n                <tui-icon\n                    *ngIf=\"product.ignoreMinCountCheck\"\n                    icon=\"@tui.package\"\n                    [tuiHint]=\"minCountHint\"\n                    [tuiHintShowDelay]=\"100\"\n                    class=\"text-body-xl text-tui-text-01 opacity-90\"\n                    tuiHintDirection=\"top\"\n                ></tui-icon>\n                <ng-template #minCountHint>\n                    \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n                    \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n                    \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n                </ng-template>\n            </div>\n            <span *ngIf=\"!isMobile && (authStatus$ | async) && product?.costDate\">\n                \u0414\u0430\u0442\u0430:\n                <a\n                    tuiLink\n                    [pseudo]=\"true\"\n                    class=\"text-tui-text-02\"\n                    (click)=\"clickPriceHistoryEvent.emit()\"\n                >\n                    {{ product.costDate }}\n                </a>\n            </span>\n            <div\n                *ngIf=\"warehouseSelect$ | async as warehouseSelect\"\n                class=\"flex flex-wrap items-center gap-x-2 gap-y-1\"\n            >\n                <div class=\"flex flex-wrap items-center gap-x-2 gap-y-1\">\n                    <span\n                        [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\"\n                        class=\"cost\"\n                        >{{ product.costRubString }}</span\n                    >\n                    <tui-badge\n                        *ngIf=\"product.discount as discount\"\n                        size=\"m\"\n                        class=\"text-body-xs\"\n                        [style.background]=\"'var(--tui-status-positive)'\"\n                        [tuiHint]=\"discountHint\"\n                        [tuiHintShowDelay]=\"100\"\n                        tuiHintDirection=\"top\"\n                    >\n                        <tui-badge\n                            *ngIf=\"product.discount as discount\"\n                            size=\"s\"\n                            [style.background]=\"'var(--tui-background-base)'\"\n                            class=\"text-tui-text-02 text-body-xs-bold\"\n                        >\n                            {{ discount.percent }}%\n                        </tui-badge>\n                        <span class=\"line-through\">{{ product.discountCostString }}</span>\n                        <ng-template #discountHint>\n                            <div class=\"font-bold\">{{ product.discount.name }}</div>\n                            <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n                        </ng-template>\n                    </tui-badge>\n                </div>\n                <span\n                    *ngIf=\"!product.priceInRub\"\n                    class=\"text-body-xs-bold text-tui-text-02\"\n                    >{{ product.costString }}</span\n                >\n            </div>\n            <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n        </div>\n        <div class=\"mt-1 flex gap-2\">\n            <button\n                *ngIf=\"!showQuantityControl\"\n                tuiButton\n                (click)=\"clickAddToCartEvent.emit(product)\"\n                [loading]=\"quantityShowLoader\"\n                [size]=\"size === 's' ? 'xs' : 's'\"\n                class=\"grow !font-extrabold\"\n                iconStart=\"@tui.shopping-cart\"\n            >\n                \u0412 \u043A\u043E\u0440\u0437\u0438\u043D\u0443\n            </button>\n            <sc-input-quantity\n                #inputQuantity\n                *ngIf=\"showQuantityControl\"\n                [formControl]=\"quantityControl\"\n                [size]=\"size\"\n                [step]=\"unitsHelper.productMultiplicity(product)\"\n                [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n                [showLoader]=\"quantityShowLoader\"\n                (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n                class=\"w-full\"\n                (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n            ></sc-input-quantity>\n            <tui-avatar\n                *ngIf=\"product.cartItem && !showQuantityControl\"\n                src=\"@tui.check\"\n                size=\"s\"\n                [style.background]=\"'var(--tui-status-warning-pale)'\"\n                [style.color]=\"'var(--tui-background-accent-1)'\"\n            ></tui-avatar>\n        </div>\n    </div>\n</div>\n\n<ng-template #skeleton>\n    <div class=\"card-wrapper relative flex h-full w-auto flex-col rounded-xl p-1\"></div>\n</ng-template>\n", styles: [":host tui-badge{--t-padding: .25rem !important}:host .name{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4}:host[data-size=s] .card-wrapper{font-size:.6875rem;line-height:1rem;font-weight:500}:host[data-size=s] .card-wrapper .name,:host[data-size=s] .card-wrapper .cost{font-size:.8125rem;line-height:1.25rem;font-weight:800}:host[data-size=m] .card-wrapper{font-size:.8125rem;line-height:1.25rem;font-weight:500}:host[data-size=m] .card-wrapper .name,:host[data-size=m] .card-wrapper .cost{font-size:.9375rem;line-height:1.5rem;font-weight:800}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1$1.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i1$1.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i2$1.TuiHighlight, selector: "[tuiHighlight]", inputs: ["tuiHighlight", "tuiHighlightColor"] }, { kind: "component", type: i2$1.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "component", type: i2$1.TuiAvatar, selector: "tui-avatar,button[tuiAvatar],a[tuiAvatar]", inputs: ["size", "round", "src"] }, { kind: "directive", type: i2$1.TuiBadge, selector: "tui-badge,[tuiBadge]", inputs: ["size"] }, { kind: "component", type: HoverImageCarouselComponent, selector: "sc-hover-image-carousel", inputs: ["images"] }, { kind: "component", type: ScFavoriteBtnComponent, selector: "sc-favorite-btn", inputs: ["isFavorite", "showLoader", "disabled"], outputs: ["clickEvent"] }, { kind: "component", type: ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "showLoader", "showCross", "ignoreStepValidators", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "component", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         | 
| 3488 3533 | 
             
            }
         | 
| 3489 3534 | 
             
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScPriceCardComponent, decorators: [{
         | 
| 3490 3535 | 
             
                        type: Component,
         | 
| 3491 | 
            -
                        args: [{ selector: 'sc-price-card', providers: [SEARCH_TERM_PROVIDERS], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n    *ngIf=\"product; else skeleton\"\n    class=\"card-wrapper relative flex  | 
| 3536 | 
            +
                        args: [{ selector: 'sc-price-card', providers: [SEARCH_TERM_PROVIDERS], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n    *ngIf=\"product; else skeleton\"\n    class=\"card-wrapper relative flex h-full w-auto flex-col rounded-xl p-1\"\n>\n    <div class=\"flex items-center justify-between\">\n        <span\n            [tuiHighlight]=\"(search$ | async) ?? ''\"\n            class=\"code text-tui-text-02\"\n        >\n            \u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}\n        </span>\n\n        <div class=\"flex gap-2\">\n            <sc-favorite-btn\n                (clickEvent)=\"clickFavoriteEvent.emit()\"\n                [showLoader]=\"favoriteShowLoader\"\n                [isFavorite]=\"product.isFavorite\"\n                [disabled]=\"!!product.primaryCategory?.isFavorite\"\n            ></sc-favorite-btn>\n            <tui-avatar\n                *ngIf=\"product.isPreviouslyOrdered\"\n                src=\"@tui.star-filled\"\n                size=\"s\"\n                [style.background]=\"'var(--tui-status-negative-pale-hover)'\"\n                [style.color]=\"'var(--tui-text-negative)'\"\n            ></tui-avatar>\n        </div>\n    </div>\n\n    <sc-hover-image-carousel\n        (click)=\"clickCardEvent.emit()\"\n        [images]=\"!isMobile ? getCardImagePreviewList(product) : [getCardImagePreview()]\"\n        class=\"cursor-pointer\"\n    ></sc-hover-image-carousel>\n    <div class=\"flex grow flex-col justify-between gap-1\">\n        <div class=\"flex flex-col gap-1\">\n            <a\n                tuiLink\n                class=\"name\"\n                [tuiHighlight]=\"(search$ | async) ?? ''\"\n                (click)=\"clickCardEvent.emit()\"\n            >\n                {{ product.name }}\n            </a>\n            <div\n                *ngIf=\"product?.pack\"\n                class=\"text-tui-text-02 flex gap-1\"\n            >\n                \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n                <tui-icon\n                    *ngIf=\"product.ignoreMinCountCheck\"\n                    icon=\"@tui.package\"\n                    [tuiHint]=\"minCountHint\"\n                    [tuiHintShowDelay]=\"100\"\n                    class=\"text-body-xl text-tui-text-01 opacity-90\"\n                    tuiHintDirection=\"top\"\n                ></tui-icon>\n                <ng-template #minCountHint>\n                    \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n                    \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n                    \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n                </ng-template>\n            </div>\n            <span *ngIf=\"!isMobile && (authStatus$ | async) && product?.costDate\">\n                \u0414\u0430\u0442\u0430:\n                <a\n                    tuiLink\n                    [pseudo]=\"true\"\n                    class=\"text-tui-text-02\"\n                    (click)=\"clickPriceHistoryEvent.emit()\"\n                >\n                    {{ product.costDate }}\n                </a>\n            </span>\n            <div\n                *ngIf=\"warehouseSelect$ | async as warehouseSelect\"\n                class=\"flex flex-wrap items-center gap-x-2 gap-y-1\"\n            >\n                <div class=\"flex flex-wrap items-center gap-x-2 gap-y-1\">\n                    <span\n                        [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\"\n                        class=\"cost\"\n                        >{{ product.costRubString }}</span\n                    >\n                    <tui-badge\n                        *ngIf=\"product.discount as discount\"\n                        size=\"m\"\n                        class=\"text-body-xs\"\n                        [style.background]=\"'var(--tui-status-positive)'\"\n                        [tuiHint]=\"discountHint\"\n                        [tuiHintShowDelay]=\"100\"\n                        tuiHintDirection=\"top\"\n                    >\n                        <tui-badge\n                            *ngIf=\"product.discount as discount\"\n                            size=\"s\"\n                            [style.background]=\"'var(--tui-background-base)'\"\n                            class=\"text-tui-text-02 text-body-xs-bold\"\n                        >\n                            {{ discount.percent }}%\n                        </tui-badge>\n                        <span class=\"line-through\">{{ product.discountCostString }}</span>\n                        <ng-template #discountHint>\n                            <div class=\"font-bold\">{{ product.discount.name }}</div>\n                            <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n                        </ng-template>\n                    </tui-badge>\n                </div>\n                <span\n                    *ngIf=\"!product.priceInRub\"\n                    class=\"text-body-xs-bold text-tui-text-02\"\n                    >{{ product.costString }}</span\n                >\n            </div>\n            <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n        </div>\n        <div class=\"mt-1 flex gap-2\">\n            <button\n                *ngIf=\"!showQuantityControl\"\n                tuiButton\n                (click)=\"clickAddToCartEvent.emit(product)\"\n                [loading]=\"quantityShowLoader\"\n                [size]=\"size === 's' ? 'xs' : 's'\"\n                class=\"grow !font-extrabold\"\n                iconStart=\"@tui.shopping-cart\"\n            >\n                \u0412 \u043A\u043E\u0440\u0437\u0438\u043D\u0443\n            </button>\n            <sc-input-quantity\n                #inputQuantity\n                *ngIf=\"showQuantityControl\"\n                [formControl]=\"quantityControl\"\n                [size]=\"size\"\n                [step]=\"unitsHelper.productMultiplicity(product)\"\n                [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n                [showLoader]=\"quantityShowLoader\"\n                (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n                class=\"w-full\"\n                (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n            ></sc-input-quantity>\n            <tui-avatar\n                *ngIf=\"product.cartItem && !showQuantityControl\"\n                src=\"@tui.check\"\n                size=\"s\"\n                [style.background]=\"'var(--tui-status-warning-pale)'\"\n                [style.color]=\"'var(--tui-background-accent-1)'\"\n            ></tui-avatar>\n        </div>\n    </div>\n</div>\n\n<ng-template #skeleton>\n    <div class=\"card-wrapper relative flex h-full w-auto flex-col rounded-xl p-1\"></div>\n</ng-template>\n", styles: [":host tui-badge{--t-padding: .25rem !important}:host .name{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4}:host[data-size=s] .card-wrapper{font-size:.6875rem;line-height:1rem;font-weight:500}:host[data-size=s] .card-wrapper .name,:host[data-size=s] .card-wrapper .cost{font-size:.8125rem;line-height:1.25rem;font-weight:800}:host[data-size=m] .card-wrapper{font-size:.8125rem;line-height:1.25rem;font-weight:500}:host[data-size=m] .card-wrapper .name,:host[data-size=m] .card-wrapper .cost{font-size:.9375rem;line-height:1.5rem;font-weight:800}\n"] }]
         | 
| 3492 3537 | 
             
                    }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { size: [{
         | 
| 3493 3538 | 
             
                            type: Input
         | 
| 3494 3539 | 
             
                        }, {
         | 
| 3495 3540 | 
             
                            type: HostBinding,
         | 
| 3496 3541 | 
             
                            args: ['attr.data-size']
         | 
| 3497 | 
            -
                        }], isMobile: [{
         | 
| 3498 | 
            -
                            type: HostBinding,
         | 
| 3499 | 
            -
                            args: ['attr.is_mobile']
         | 
| 3500 | 
            -
                        }], isInCart: [{
         | 
| 3501 | 
            -
                            type: HostBinding,
         | 
| 3502 | 
            -
                            args: ['attr.is_in_cart']
         | 
| 3503 3542 | 
             
                        }] } });
         | 
| 3504 3543 |  | 
| 3505 3544 | 
             
            /**
         | 
| @@ -3700,7 +3739,10 @@ class ScCatalogModule { | |
| 3700 3739 | 
             
                        TuiLineDaysChart,
         | 
| 3701 3740 | 
             
                        TuiLineDaysChartHint,
         | 
| 3702 3741 | 
             
                        TuiAxes,
         | 
| 3703 | 
            -
                        TuiButtonLoading | 
| 3742 | 
            +
                        TuiButtonLoading,
         | 
| 3743 | 
            +
                        TuiAvatar,
         | 
| 3744 | 
            +
                        TuiBadge,
         | 
| 3745 | 
            +
                        HoverImageCarouselComponent], exports: [ScPriceListPaginationComponent,
         | 
| 3704 3746 | 
             
                        ScCategoryCardComponent,
         | 
| 3705 3747 | 
             
                        ScFavoriteBtnComponent,
         | 
| 3706 3748 | 
             
                        ScInputQuantityComponent,
         | 
| @@ -3718,7 +3760,9 @@ class ScCatalogModule { | |
| 3718 3760 | 
             
                        TuiElasticContainer,
         | 
| 3719 3761 | 
             
                        TuiLineDaysChart,
         | 
| 3720 3762 | 
             
                        TuiAxes,
         | 
| 3721 | 
            -
                        TuiButtonLoading | 
| 3763 | 
            +
                        TuiButtonLoading,
         | 
| 3764 | 
            +
                        TuiAvatar,
         | 
| 3765 | 
            +
                        HoverImageCarouselComponent] }); }
         | 
| 3722 3766 | 
             
            }
         | 
| 3723 3767 | 
             
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScCatalogModule, decorators: [{
         | 
| 3724 3768 | 
             
                        type: NgModule,
         | 
| @@ -3766,6 +3810,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor | |
| 3766 3810 | 
             
                                    TuiLineDaysChartHint,
         | 
| 3767 3811 | 
             
                                    TuiAxes,
         | 
| 3768 3812 | 
             
                                    TuiButtonLoading,
         | 
| 3813 | 
            +
                                    TuiAvatar,
         | 
| 3814 | 
            +
                                    TuiBadge,
         | 
| 3815 | 
            +
                                    HoverImageCarouselComponent,
         | 
| 3769 3816 | 
             
                                ],
         | 
| 3770 3817 | 
             
                            }]
         | 
| 3771 3818 | 
             
                    }] });
         | 
| @@ -3798,11 +3845,9 @@ class ScCartItemMobileComponent { | |
| 3798 3845 | 
             
                 * @param urls Список ссылок на разделы backend'a.
         | 
| 3799 3846 | 
             
                 * @param pathImageNotFound Путь до изображения 'Товар не найден'.
         | 
| 3800 3847 | 
             
                 */
         | 
| 3801 | 
            -
                constructor(unitsHelper, previewDialogService | 
| 3848 | 
            +
                constructor(unitsHelper, previewDialogService) {
         | 
| 3802 3849 | 
             
                    this.unitsHelper = unitsHelper;
         | 
| 3803 3850 | 
             
                    this.previewDialogService = previewDialogService;
         | 
| 3804 | 
            -
                    this.urls = urls;
         | 
| 3805 | 
            -
                    this.pathImageNotFound = pathImageNotFound;
         | 
| 3806 3851 | 
             
                    /**
         | 
| 3807 3852 | 
             
                     * {@link FormControl} поля ввода количества товара в корзине.
         | 
| 3808 3853 | 
             
                     */
         | 
| @@ -3823,6 +3868,10 @@ class ScCartItemMobileComponent { | |
| 3823 3868 | 
             
                     * Событие нажатия на карточку.
         | 
| 3824 3869 | 
             
                     */
         | 
| 3825 3870 | 
             
                    this.clickCardEvent = new EventEmitter();
         | 
| 3871 | 
            +
                    /**
         | 
| 3872 | 
            +
                     * Хелпер для работы с изображениями товара.
         | 
| 3873 | 
            +
                     */
         | 
| 3874 | 
            +
                    this.imageHelper = inject(ScImageHelper);
         | 
| 3826 3875 | 
             
                }
         | 
| 3827 3876 | 
             
                /**
         | 
| 3828 3877 | 
             
                 * Продукт элемента корзины.
         | 
| @@ -3842,25 +3891,21 @@ class ScCartItemMobileComponent { | |
| 3842 3891 | 
             
                }
         | 
| 3843 3892 | 
             
                /**
         | 
| 3844 3893 | 
             
                 * Возвращает ссылку на изображение карточки товара.
         | 
| 3894 | 
            +
                 *
         | 
| 3895 | 
            +
                 * @param product Позиция товара/услуги.
         | 
| 3845 3896 | 
             
                 */
         | 
| 3846 | 
            -
                getCardImage() {
         | 
| 3847 | 
            -
                    return this.product | 
| 3897 | 
            +
                getCardImage(product) {
         | 
| 3898 | 
            +
                    return this.imageHelper.getImage(product);
         | 
| 3848 3899 | 
             
                }
         | 
| 3849 | 
            -
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScCartItemMobileComponent, deps: [{ token: i1.ScUnitsHelper }, { token: TuiPreviewDialogService } | 
| 3850 | 
            -
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScCartItemMobileComponent, selector: "sc-cart-item-mobile", inputs: { cartItem: "cartItem" }, outputs: { quantityValueChanges: "quantityValueChanges", clickDeleteEvent: "clickDeleteEvent", clickSettingsEvent: "clickSettingsEvent", clickCardEvent: "clickCardEvent" }, viewQueries: [{ propertyName: "specificationPreviewRef", first: true, predicate: ["specificationPreview"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"cartItem && product; else skeleton\">\n    <div class=\"flex min-w-72 gap-2 rounded-xl border border-tui-base-04 bg-white p-2 shadow-sc-2\">\n        <div class=\"flex w-40 items-center\">\n            <img\n                (click)=\"clickCardEvent.emit()\"\n                [src]=\"getCardImage()\"\n                [alt]=\"product.name\"\n                class=\"max-h-full w-full rounded-xl object-cover\"\n            />\n        </div>\n        <div class=\"flex w-full flex-col items-center justify-between gap-2 sm:flex-row sm:gap-5\">\n            <div class=\"flex max-w-full flex-col gap-1 self-start\">\n                <a\n                    tuiLink\n                    (click)=\"clickCardEvent.emit()\"\n                >\n                    <span class=\"font-bold\">{{ product.name }}</span>\n                </a>\n\n                <div class=\"flex w-full flex-wrap gap-x-2 gap-y-1 text-xs text-tui-base-07\">\n                    <p *ngIf=\"product.pack\">\n                        \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n                        <tui-svg\n                            *ngIf=\"product.ignoreMinCountCheck\"\n                            src=\"tuiIconPackage\"\n                            [tuiHint]=\"minCountHint\"\n                            [tuiHintShowDelay]=\"100\"\n                            tuiHintDirection=\"top\"\n                        ></tui-svg>\n                        <ng-template #minCountHint>\n                            \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n                            \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n                            \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n                        </ng-template>\n                    </p>\n                    <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n                </div>\n\n                <div class=\"flex w-full flex-wrap items-center gap-x-2 gap-y-1\">\n                    <p\n                        *ngIf=\"!product.priceInRub\"\n                        class=\"font-bold\"\n                    >\n                        {{ product.costString }}\n                    </p>\n                    <p class=\"text-xs font-bold text-tui-base-07\">{{ product.costRubString }}</p>\n                    <span\n                        *ngIf=\"product.discount\"\n                        class=\"flex items-center\"\n                    >\n                        <span class=\"line-through\">{{ product.discountCostString }}</span>  \n                        <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n                        <tui-icon\n                            icon=\"@tui.info\"\n                            [tuiHint]=\"discountHint\"\n                            [tuiHintShowDelay]=\"100\"\n                            tuiHintDirection=\"top\"\n                            class=\"!h-4 !text-xs\"\n                        ></tui-icon>\n                        <ng-template #discountHint>\n                            <div class=\"font-bold\">{{ product.discount.name }}</div>\n                            <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n                        </ng-template>\n                    </span>\n                </div>\n\n                <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n                <div\n                    *ngIf=\"cartItem.height || cartItem.length || cartItem.width\"\n                    class=\"flex items-center gap-1\"\n                >\n                    <button\n                        tuiIconButton\n                        iconStart=\"@tui.settings\"\n                        (click)=\"clickSettingsEvent.emit()\"\n                        size=\"s\"\n                        appearance=\"secondary\"\n                        class=\"mr-2 !self-center\"\n                    ></button>\n                    <div class=\"flex flex-wrap gap-x-2 text-xs font-thin text-tui-base-04\">\n                        <p *ngIf=\"cartItem.marker\">\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n                        <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n                        <ng-container *ngIf=\"cartItem.height; else length\">\n                            <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n                        </ng-container>\n                        <ng-template #length>\n                            <p *ngIf=\"cartItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n                        </ng-template>\n                    </div>\n                </div>\n\n                <a\n                    tuiLink\n                    *ngIf=\"cartItem.specificationImgUrl\"\n                    (click)=\"showSpecification()\"\n                    >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n                >\n                <ng-template\n                    #specificationPreview\n                    let-preview\n                >\n                    <tui-preview\n                        [rotatable]=\"false\"\n                        [zoomable]=\"false\"\n                    >\n                        <img\n                            *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n                            alt=\"preview\"\n                            [src]=\"cartItem.specificationImgUrl\"\n                        />\n                        <button\n                            iconStart=\"@tui.x\"\n                            title=\"Close\"\n                            tuiIconButton\n                            tuiPreviewAction\n                            type=\"button\"\n                            (click)=\"preview.complete()\"\n                        ></button>\n                    </tui-preview>\n                </ng-template>\n            </div>\n            <div class=\"flex flex-col gap-1 self-start sm:mr-9 sm:self-center\">\n                <div class=\"flex gap-2\">\n                    <sc-input-quantity\n                        #inputQuantity\n                        *ngIf=\"quantityControl\"\n                        [formControl]=\"quantityControl\"\n                        [showCross]=\"false\"\n                        size=\"s\"\n                        [step]=\"unitsHelper.productMultiplicity(product)\"\n                        [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n                        (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n                        class=\"w-28\"\n                    ></sc-input-quantity>\n                    <button\n                        tuiIconButton\n                        iconStart=\"@tui.trash-2\"\n                        [style.border-radius.%]=\"100\"\n                        size=\"xs\"\n                        (click)=\"clickDeleteEvent.emit()\"\n                    ></button>\n                </div>\n                <p class=\"text-sm font-bold text-tui-text-01\">\n                    \u0418\u0442\u043E\u0433\u043E: {{ cartItem.costRub | tuiFormatNumber: { precision: 2, decimalSeparator: '.', rounding: 'ceil' } | async }} {{ 'RUB' | tuiCurrency }}\n                </p>\n            </div>\n        </div>\n    </div>\n</ng-container>\n\n<ng-template #skeleton>\n    <div class=\"flex w-full gap-2\">\n        <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n        <div class=\"flex grow flex-col gap-2.5 bg-white\">\n            <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n            <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n            <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n        </div>\n    </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "component", type: ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "showLoader", "showCross", "ignoreStepValidators", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "component", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "directive", type: i1$1.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1$1.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: i1$1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i2$1.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable"] }, { kind: "directive", type: i2$1.TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "directive", type: i2$2.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.TuiCurrencyPipe, name: "tuiCurrency" }, { kind: "pipe", type: i1$1.TuiFormatNumberPipe, name: "tuiFormatNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         | 
| 3900 | 
            +
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScCartItemMobileComponent, deps: [{ token: i1.ScUnitsHelper }, { token: TuiPreviewDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
         | 
| 3901 | 
            +
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScCartItemMobileComponent, selector: "sc-cart-item-mobile", inputs: { cartItem: "cartItem" }, outputs: { quantityValueChanges: "quantityValueChanges", clickDeleteEvent: "clickDeleteEvent", clickSettingsEvent: "clickSettingsEvent", clickCardEvent: "clickCardEvent" }, viewQueries: [{ propertyName: "specificationPreviewRef", first: true, predicate: ["specificationPreview"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"cartItem && product; else skeleton\">\n    <div class=\"flex min-w-72 gap-2 rounded-xl border border-tui-base-04 bg-white p-2 shadow-sc-2\">\n        <div class=\"flex w-40 items-center\">\n            <img\n                (click)=\"clickCardEvent.emit()\"\n                [src]=\"getCardImage(product)\"\n                [alt]=\"product.name\"\n                class=\"max-h-full w-full rounded-xl object-cover\"\n            />\n        </div>\n        <div class=\"flex w-full flex-col items-center justify-between gap-2 sm:flex-row sm:gap-5\">\n            <div class=\"flex max-w-full flex-col gap-1 self-start\">\n                <a\n                    tuiLink\n                    (click)=\"clickCardEvent.emit()\"\n                >\n                    <span class=\"font-bold\">{{ product.name }}</span>\n                </a>\n\n                <div class=\"flex w-full flex-wrap gap-x-2 gap-y-1 text-xs text-tui-base-07\">\n                    <p *ngIf=\"product.pack\">\n                        \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n                        <tui-svg\n                            *ngIf=\"product.ignoreMinCountCheck\"\n                            src=\"tuiIconPackage\"\n                            [tuiHint]=\"minCountHint\"\n                            [tuiHintShowDelay]=\"100\"\n                            tuiHintDirection=\"top\"\n                        ></tui-svg>\n                        <ng-template #minCountHint>\n                            \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n                            \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n                            \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n                        </ng-template>\n                    </p>\n                    <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n                </div>\n\n                <div class=\"flex w-full flex-wrap items-center gap-x-2 gap-y-1\">\n                    <p\n                        *ngIf=\"!product.priceInRub\"\n                        class=\"font-bold\"\n                    >\n                        {{ product.costString }}\n                    </p>\n                    <p class=\"text-xs font-bold text-tui-base-07\">{{ product.costRubString }}</p>\n                    <span\n                        *ngIf=\"product.discount\"\n                        class=\"flex items-center\"\n                    >\n                        <span class=\"line-through\">{{ product.discountCostString }}</span>  \n                        <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n                        <tui-icon\n                            icon=\"@tui.info\"\n                            [tuiHint]=\"discountHint\"\n                            [tuiHintShowDelay]=\"100\"\n                            tuiHintDirection=\"top\"\n                            class=\"!h-4 !text-xs\"\n                        ></tui-icon>\n                        <ng-template #discountHint>\n                            <div class=\"font-bold\">{{ product.discount.name }}</div>\n                            <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n                        </ng-template>\n                    </span>\n                </div>\n\n                <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n                <div\n                    *ngIf=\"cartItem.height || cartItem.length || cartItem.width\"\n                    class=\"flex items-center gap-1\"\n                >\n                    <button\n                        tuiIconButton\n                        iconStart=\"@tui.settings\"\n                        (click)=\"clickSettingsEvent.emit()\"\n                        size=\"s\"\n                        appearance=\"secondary\"\n                        class=\"mr-2 !self-center\"\n                    ></button>\n                    <div class=\"flex flex-wrap gap-x-2 text-xs font-thin text-tui-base-04\">\n                        <p *ngIf=\"cartItem.marker\">\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n                        <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n                        <ng-container *ngIf=\"cartItem.height; else length\">\n                            <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n                        </ng-container>\n                        <ng-template #length>\n                            <p *ngIf=\"cartItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n                        </ng-template>\n                    </div>\n                </div>\n\n                <a\n                    tuiLink\n                    *ngIf=\"cartItem.specificationImgUrl\"\n                    (click)=\"showSpecification()\"\n                    >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n                >\n                <ng-template\n                    #specificationPreview\n                    let-preview\n                >\n                    <tui-preview\n                        [rotatable]=\"false\"\n                        [zoomable]=\"false\"\n                    >\n                        <img\n                            *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n                            alt=\"preview\"\n                            [src]=\"cartItem.specificationImgUrl\"\n                        />\n                        <button\n                            iconStart=\"@tui.x\"\n                            title=\"Close\"\n                            tuiIconButton\n                            tuiPreviewAction\n                            type=\"button\"\n                            (click)=\"preview.complete()\"\n                        ></button>\n                    </tui-preview>\n                </ng-template>\n            </div>\n            <div class=\"flex flex-col gap-1 self-start sm:mr-9 sm:self-center\">\n                <div class=\"flex gap-2\">\n                    <sc-input-quantity\n                        #inputQuantity\n                        *ngIf=\"quantityControl\"\n                        [formControl]=\"quantityControl\"\n                        [showCross]=\"false\"\n                        size=\"s\"\n                        [step]=\"unitsHelper.productMultiplicity(product)\"\n                        [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n                        (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n                        class=\"w-28\"\n                    ></sc-input-quantity>\n                    <button\n                        tuiIconButton\n                        iconStart=\"@tui.trash-2\"\n                        [style.border-radius.%]=\"100\"\n                        size=\"xs\"\n                        (click)=\"clickDeleteEvent.emit()\"\n                    ></button>\n                </div>\n                <p class=\"text-sm font-bold text-tui-text-01\">\n                    \u0418\u0442\u043E\u0433\u043E: {{ cartItem.costRub | tuiFormatNumber: { precision: 2, decimalSeparator: '.', rounding: 'ceil' } | async }} {{ 'RUB' | tuiCurrency }}\n                </p>\n            </div>\n        </div>\n    </div>\n</ng-container>\n\n<ng-template #skeleton>\n    <div class=\"flex w-full gap-2\">\n        <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n        <div class=\"flex grow flex-col gap-2.5 bg-white\">\n            <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n            <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n            <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n        </div>\n    </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "component", type: ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "showLoader", "showCross", "ignoreStepValidators", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "component", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "directive", type: i1$1.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1$1.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: i1$1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i2$1.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable"] }, { kind: "directive", type: i2$1.TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "directive", type: i2$2.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.TuiCurrencyPipe, name: "tuiCurrency" }, { kind: "pipe", type: i1$1.TuiFormatNumberPipe, name: "tuiFormatNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         | 
| 3851 3902 | 
             
            }
         | 
| 3852 3903 | 
             
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScCartItemMobileComponent, decorators: [{
         | 
| 3853 3904 | 
             
                        type: Component,
         | 
| 3854 | 
            -
                        args: [{ selector: 'sc-cart-item-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"cartItem && product; else skeleton\">\n    <div class=\"flex min-w-72 gap-2 rounded-xl border border-tui-base-04 bg-white p-2 shadow-sc-2\">\n        <div class=\"flex w-40 items-center\">\n            <img\n                (click)=\"clickCardEvent.emit()\"\n                [src]=\"getCardImage()\"\n                [alt]=\"product.name\"\n                class=\"max-h-full w-full rounded-xl object-cover\"\n            />\n        </div>\n        <div class=\"flex w-full flex-col items-center justify-between gap-2 sm:flex-row sm:gap-5\">\n            <div class=\"flex max-w-full flex-col gap-1 self-start\">\n                <a\n                    tuiLink\n                    (click)=\"clickCardEvent.emit()\"\n                >\n                    <span class=\"font-bold\">{{ product.name }}</span>\n                </a>\n\n                <div class=\"flex w-full flex-wrap gap-x-2 gap-y-1 text-xs text-tui-base-07\">\n                    <p *ngIf=\"product.pack\">\n                        \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n                        <tui-svg\n                            *ngIf=\"product.ignoreMinCountCheck\"\n                            src=\"tuiIconPackage\"\n                            [tuiHint]=\"minCountHint\"\n                            [tuiHintShowDelay]=\"100\"\n                            tuiHintDirection=\"top\"\n                        ></tui-svg>\n                        <ng-template #minCountHint>\n                            \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n                            \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n                            \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n                        </ng-template>\n                    </p>\n                    <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n                </div>\n\n                <div class=\"flex w-full flex-wrap items-center gap-x-2 gap-y-1\">\n                    <p\n                        *ngIf=\"!product.priceInRub\"\n                        class=\"font-bold\"\n                    >\n                        {{ product.costString }}\n                    </p>\n                    <p class=\"text-xs font-bold text-tui-base-07\">{{ product.costRubString }}</p>\n                    <span\n                        *ngIf=\"product.discount\"\n                        class=\"flex items-center\"\n                    >\n                        <span class=\"line-through\">{{ product.discountCostString }}</span>  \n                        <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n                        <tui-icon\n                            icon=\"@tui.info\"\n                            [tuiHint]=\"discountHint\"\n                            [tuiHintShowDelay]=\"100\"\n                            tuiHintDirection=\"top\"\n                            class=\"!h-4 !text-xs\"\n                        ></tui-icon>\n                        <ng-template #discountHint>\n                            <div class=\"font-bold\">{{ product.discount.name }}</div>\n                            <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n                        </ng-template>\n                    </span>\n                </div>\n\n                <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n                <div\n                    *ngIf=\"cartItem.height || cartItem.length || cartItem.width\"\n                    class=\"flex items-center gap-1\"\n                >\n                    <button\n                        tuiIconButton\n                        iconStart=\"@tui.settings\"\n                        (click)=\"clickSettingsEvent.emit()\"\n                        size=\"s\"\n                        appearance=\"secondary\"\n                        class=\"mr-2 !self-center\"\n                    ></button>\n                    <div class=\"flex flex-wrap gap-x-2 text-xs font-thin text-tui-base-04\">\n                        <p *ngIf=\"cartItem.marker\">\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n                        <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n                        <ng-container *ngIf=\"cartItem.height; else length\">\n                            <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n                        </ng-container>\n                        <ng-template #length>\n                            <p *ngIf=\"cartItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n                        </ng-template>\n                    </div>\n                </div>\n\n                <a\n                    tuiLink\n                    *ngIf=\"cartItem.specificationImgUrl\"\n                    (click)=\"showSpecification()\"\n                    >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n                >\n                <ng-template\n                    #specificationPreview\n                    let-preview\n                >\n                    <tui-preview\n                        [rotatable]=\"false\"\n                        [zoomable]=\"false\"\n                    >\n                        <img\n                            *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n                            alt=\"preview\"\n                            [src]=\"cartItem.specificationImgUrl\"\n                        />\n                        <button\n                            iconStart=\"@tui.x\"\n                            title=\"Close\"\n                            tuiIconButton\n                            tuiPreviewAction\n                            type=\"button\"\n                            (click)=\"preview.complete()\"\n                        ></button>\n                    </tui-preview>\n                </ng-template>\n            </div>\n            <div class=\"flex flex-col gap-1 self-start sm:mr-9 sm:self-center\">\n                <div class=\"flex gap-2\">\n                    <sc-input-quantity\n                        #inputQuantity\n                        *ngIf=\"quantityControl\"\n                        [formControl]=\"quantityControl\"\n                        [showCross]=\"false\"\n                        size=\"s\"\n                        [step]=\"unitsHelper.productMultiplicity(product)\"\n                        [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n                        (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n                        class=\"w-28\"\n                    ></sc-input-quantity>\n                    <button\n                        tuiIconButton\n                        iconStart=\"@tui.trash-2\"\n                        [style.border-radius.%]=\"100\"\n                        size=\"xs\"\n                        (click)=\"clickDeleteEvent.emit()\"\n                    ></button>\n                </div>\n                <p class=\"text-sm font-bold text-tui-text-01\">\n                    \u0418\u0442\u043E\u0433\u043E: {{ cartItem.costRub | tuiFormatNumber: { precision: 2, decimalSeparator: '.', rounding: 'ceil' } | async }} {{ 'RUB' | tuiCurrency }}\n                </p>\n            </div>\n        </div>\n    </div>\n</ng-container>\n\n<ng-template #skeleton>\n    <div class=\"flex w-full gap-2\">\n        <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n        <div class=\"flex grow flex-col gap-2.5 bg-white\">\n            <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n            <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n            <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n        </div>\n    </div>\n</ng-template>\n" }]
         | 
| 3905 | 
            +
                        args: [{ selector: 'sc-cart-item-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"cartItem && product; else skeleton\">\n    <div class=\"flex min-w-72 gap-2 rounded-xl border border-tui-base-04 bg-white p-2 shadow-sc-2\">\n        <div class=\"flex w-40 items-center\">\n            <img\n                (click)=\"clickCardEvent.emit()\"\n                [src]=\"getCardImage(product)\"\n                [alt]=\"product.name\"\n                class=\"max-h-full w-full rounded-xl object-cover\"\n            />\n        </div>\n        <div class=\"flex w-full flex-col items-center justify-between gap-2 sm:flex-row sm:gap-5\">\n            <div class=\"flex max-w-full flex-col gap-1 self-start\">\n                <a\n                    tuiLink\n                    (click)=\"clickCardEvent.emit()\"\n                >\n                    <span class=\"font-bold\">{{ product.name }}</span>\n                </a>\n\n                <div class=\"flex w-full flex-wrap gap-x-2 gap-y-1 text-xs text-tui-base-07\">\n                    <p *ngIf=\"product.pack\">\n                        \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n                        <tui-svg\n                            *ngIf=\"product.ignoreMinCountCheck\"\n                            src=\"tuiIconPackage\"\n                            [tuiHint]=\"minCountHint\"\n                            [tuiHintShowDelay]=\"100\"\n                            tuiHintDirection=\"top\"\n                        ></tui-svg>\n                        <ng-template #minCountHint>\n                            \u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D \u0437\u0430\u043A\u0430\u0437 <br />\n                            \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u043B\u044C\u043D\u043E\u0433\u043E <br />\n                            \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430\n                        </ng-template>\n                    </p>\n                    <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n                </div>\n\n                <div class=\"flex w-full flex-wrap items-center gap-x-2 gap-y-1\">\n                    <p\n                        *ngIf=\"!product.priceInRub\"\n                        class=\"font-bold\"\n                    >\n                        {{ product.costString }}\n                    </p>\n                    <p class=\"text-xs font-bold text-tui-base-07\">{{ product.costRubString }}</p>\n                    <span\n                        *ngIf=\"product.discount\"\n                        class=\"flex items-center\"\n                    >\n                        <span class=\"line-through\">{{ product.discountCostString }}</span>  \n                        <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n                        <tui-icon\n                            icon=\"@tui.info\"\n                            [tuiHint]=\"discountHint\"\n                            [tuiHintShowDelay]=\"100\"\n                            tuiHintDirection=\"top\"\n                            class=\"!h-4 !text-xs\"\n                        ></tui-icon>\n                        <ng-template #discountHint>\n                            <div class=\"font-bold\">{{ product.discount.name }}</div>\n                            <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n                        </ng-template>\n                    </span>\n                </div>\n\n                <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n\n                <div\n                    *ngIf=\"cartItem.height || cartItem.length || cartItem.width\"\n                    class=\"flex items-center gap-1\"\n                >\n                    <button\n                        tuiIconButton\n                        iconStart=\"@tui.settings\"\n                        (click)=\"clickSettingsEvent.emit()\"\n                        size=\"s\"\n                        appearance=\"secondary\"\n                        class=\"mr-2 !self-center\"\n                    ></button>\n                    <div class=\"flex flex-wrap gap-x-2 text-xs font-thin text-tui-base-04\">\n                        <p *ngIf=\"cartItem.marker\">\u041C\u0430\u0440\u043A\u0438\u0440\u043E\u0432\u043A\u0430: {{ cartItem.marker }}</p>\n                        <p *ngIf=\"cartItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ cartItem.width }} \u043C.</p>\n                        <ng-container *ngIf=\"cartItem.height; else length\">\n                            <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ cartItem.height }} \u043C.</p>\n                        </ng-container>\n                        <ng-template #length>\n                            <p *ngIf=\"cartItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ cartItem.length }} \u043C.</p>\n                        </ng-template>\n                    </div>\n                </div>\n\n                <a\n                    tuiLink\n                    *ngIf=\"cartItem.specificationImgUrl\"\n                    (click)=\"showSpecification()\"\n                    >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n                >\n                <ng-template\n                    #specificationPreview\n                    let-preview\n                >\n                    <tui-preview\n                        [rotatable]=\"false\"\n                        [zoomable]=\"false\"\n                    >\n                        <img\n                            *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\"\n                            alt=\"preview\"\n                            [src]=\"cartItem.specificationImgUrl\"\n                        />\n                        <button\n                            iconStart=\"@tui.x\"\n                            title=\"Close\"\n                            tuiIconButton\n                            tuiPreviewAction\n                            type=\"button\"\n                            (click)=\"preview.complete()\"\n                        ></button>\n                    </tui-preview>\n                </ng-template>\n            </div>\n            <div class=\"flex flex-col gap-1 self-start sm:mr-9 sm:self-center\">\n                <div class=\"flex gap-2\">\n                    <sc-input-quantity\n                        #inputQuantity\n                        *ngIf=\"quantityControl\"\n                        [formControl]=\"quantityControl\"\n                        [showCross]=\"false\"\n                        size=\"s\"\n                        [step]=\"unitsHelper.productMultiplicity(product)\"\n                        [ignoreStepValidators]=\"product.ignoreMinCountCheck\"\n                        (keydown.enter)=\"inputQuantity.nativeFocusableElement?.blur()\"\n                        class=\"w-28\"\n                    ></sc-input-quantity>\n                    <button\n                        tuiIconButton\n                        iconStart=\"@tui.trash-2\"\n                        [style.border-radius.%]=\"100\"\n                        size=\"xs\"\n                        (click)=\"clickDeleteEvent.emit()\"\n                    ></button>\n                </div>\n                <p class=\"text-sm font-bold text-tui-text-01\">\n                    \u0418\u0442\u043E\u0433\u043E: {{ cartItem.costRub | tuiFormatNumber: { precision: 2, decimalSeparator: '.', rounding: 'ceil' } | async }} {{ 'RUB' | tuiCurrency }}\n                </p>\n            </div>\n        </div>\n    </div>\n</ng-container>\n\n<ng-template #skeleton>\n    <div class=\"flex w-full gap-2\">\n        <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n        <div class=\"flex grow flex-col gap-2.5 bg-white\">\n            <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n            <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n            <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n        </div>\n    </div>\n</ng-template>\n" }]
         | 
| 3855 3906 | 
             
                    }], ctorParameters: () => [{ type: i1.ScUnitsHelper }, { type: i2$1.TuiPreviewDialogService, decorators: [{
         | 
| 3856 3907 | 
             
                                type: Inject,
         | 
| 3857 3908 | 
             
                                args: [TuiPreviewDialogService]
         | 
| 3858 | 
            -
                            }] }, { type: undefined, decorators: [{
         | 
| 3859 | 
            -
                                type: Inject,
         | 
| 3860 | 
            -
                                args: [SC_URLS]
         | 
| 3861 | 
            -
                            }] }, { type: undefined, decorators: [{
         | 
| 3862 | 
            -
                                type: Inject,
         | 
| 3863 | 
            -
                                args: [SC_PATH_IMAGE_NOT_FOUND]
         | 
| 3864 3909 | 
             
                            }] }], propDecorators: { cartItem: [{
         | 
| 3865 3910 | 
             
                            type: Input
         | 
| 3866 3911 | 
             
                        }], specificationPreviewRef: [{
         | 
| @@ -4827,14 +4872,10 @@ class ScOrderItemMobileComponent { | |
| 4827 4872 | 
             
                 *
         | 
| 4828 4873 | 
             
                 * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.
         | 
| 4829 4874 | 
             
                 * @param previewDialogService Сервис диалогового окна предварительного просмотра.
         | 
| 4830 | 
            -
                 * @param urls Список ссылок на разделы backend'a.
         | 
| 4831 | 
            -
                 * @param pathImageNotFound Путь до изображения 'Товар не найден'.
         | 
| 4832 4875 | 
             
                 */
         | 
| 4833 | 
            -
                constructor(unitsHelper, previewDialogService | 
| 4876 | 
            +
                constructor(unitsHelper, previewDialogService) {
         | 
| 4834 4877 | 
             
                    this.unitsHelper = unitsHelper;
         | 
| 4835 4878 | 
             
                    this.previewDialogService = previewDialogService;
         | 
| 4836 | 
            -
                    this.urls = urls;
         | 
| 4837 | 
            -
                    this.pathImageNotFound = pathImageNotFound;
         | 
| 4838 4879 | 
             
                    /**
         | 
| 4839 4880 | 
             
                     * Событие нажатия на карточку.
         | 
| 4840 4881 | 
             
                     */
         | 
| @@ -4843,6 +4884,10 @@ class ScOrderItemMobileComponent { | |
| 4843 4884 | 
             
                     * Событие нажатия на дополнительные действия.
         | 
| 4844 4885 | 
             
                     */
         | 
| 4845 4886 | 
             
                    this.clickActionsEvent = new EventEmitter();
         | 
| 4887 | 
            +
                    /**
         | 
| 4888 | 
            +
                     * Хелпер для работы с изображениями товара.
         | 
| 4889 | 
            +
                     */
         | 
| 4890 | 
            +
                    this.imageHelper = inject(ScImageHelper);
         | 
| 4846 4891 | 
             
                }
         | 
| 4847 4892 | 
             
                /**
         | 
| 4848 4893 | 
             
                 * Продукт элемента заказа.
         | 
| @@ -4858,25 +4903,21 @@ class ScOrderItemMobileComponent { | |
| 4858 4903 | 
             
                }
         | 
| 4859 4904 | 
             
                /**
         | 
| 4860 4905 | 
             
                 * Возвращает ссылку на изображение карточки товара.
         | 
| 4906 | 
            +
                 *
         | 
| 4907 | 
            +
                 * @param product Позиция товара/услуги.
         | 
| 4861 4908 | 
             
                 */
         | 
| 4862 | 
            -
                getCardImage() {
         | 
| 4863 | 
            -
                    return this. | 
| 4909 | 
            +
                getCardImage(product) {
         | 
| 4910 | 
            +
                    return this.imageHelper.getImage(product);
         | 
| 4864 4911 | 
             
                }
         | 
| 4865 | 
            -
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScOrderItemMobileComponent, deps: [{ token: i1.ScUnitsHelper }, { token: TuiPreviewDialogService } | 
| 4866 | 
            -
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScOrderItemMobileComponent, selector: "sc-order-item-mobile", inputs: { orderItem: "orderItem" }, outputs: { clickCardEvent: "clickCardEvent", clickActionsEvent: "clickActionsEvent" }, viewQueries: [{ propertyName: "specificationPreviewRef", first: true, predicate: ["specificationPreview"], descendants: true }], ngImport: i0, template: "<div class=\"relative flex flex-wrap gap-x-4 gap-y-2 rounded-xl border border-tui-base-04 bg-white p-4 shadow-sc-2\">\n    <ng-container *ngIf=\"orderItem && product; else skeleton\">\n        <button\n            tuiIconButton\n            (click)=\"clickActionsEvent.emit()\"\n            size=\"m\"\n            iconStart=\"@tui.ellipsis-vertical\"\n            appearance=\"float\"\n            class=\"!absolute right-0 top-0 !hidden\"\n        ></button>\n        <div class=\"flex grow gap-2\">\n            <div class=\"flex size-20 shrink-0 items-center justify-center overflow-hidden\">\n                <img\n                    (click)=\"clickCardEvent.emit()\"\n                    [src]=\"getCardImage()\"\n                    [alt]=\"product.name\"\n                    [class.p-5]=\"!product.images?.length\"\n                    class=\"cursor-pointer\"\n                />\n            </div>\n\n            <div class=\"flex grow flex-wrap gap-x-8 self-center\">\n                <div class=\"flex grow basis-min-content flex-col\">\n                    <a\n                        tuiLink\n                        (click)=\"clickCardEvent.emit()\"\n                    >\n                        <span class=\"font-bold\">{{ product.name }}</span>\n                    </a>\n                    <div class=\"flex flex-col gap-y-0.5 text-tui-text-02\">\n                        <div class=\"flex flex-wrap\">\n                            <p class=\"w-40\">\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n                            <p\n                                class=\"w-40\"\n                                *ngIf=\"product.pack\"\n                            >\n                                \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n                            </p>\n                        </div>\n                        <a\n                            tuiLink\n                            *ngIf=\"orderItem.specificationImgUrl\"\n                            (click)=\"showSpecification()\"\n                            >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n                        >\n                        <ng-template\n                            #specificationPreview\n                            let-preview\n                        >\n                            <tui-preview\n                                [rotatable]=\"false\"\n                                [zoomable]=\"false\"\n                            >\n                                <img\n                                    *polymorpheusOutlet=\"orderItem.specificationImgUrl as src\"\n                                    alt=\"preview\"\n                                    [src]=\"orderItem.specificationImgUrl\"\n                                />\n                                <button\n                                    iconStart=\"@tui.x\"\n                                    title=\"Close\"\n                                    tuiIconButton\n                                    tuiPreviewAction\n                                    type=\"button\"\n                                    (click)=\"preview.complete()\"\n                                ></button>\n                            </tui-preview>\n                        </ng-template>\n                    </div>\n\n                    <div class=\"flex flex-wrap gap-y-0.5\">\n                        <span\n                            *ngIf=\"product.discount\"\n                            class=\"w-50 items-center gap-x-2 gap-y-0.5 text-xs text-tui-text-02\"\n                        >\n                            <span class=\"line-through\">{{ product.discountCostString }}</span>  \n                            <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n                            <ng-template #discountHint>\n                                <div class=\"font-bold\">{{ product.discount.name }}</div>\n                                <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n                            </ng-template>\n                        </span>\n                        <p class=\"w-50 flex items-baseline gap-x-2 gap-y-0.5 font-bold\">\n                            <span>{{ product.costRubString }}</span>\n                            <span\n                                *ngIf=\"!product.priceInRub\"\n                                class=\"text-xs text-tui-text-02\"\n                                >{{ product.costString }}</span\n                            >\n                        </p>\n                    </div>\n                </div>\n                <div class=\"flex flex-wrap content-center\">\n                    <div class=\"w-50 flex flex-col gap-x-8 gap-y-0.5\">\n                        <ng-container *ngIf=\"orderItem.height; else length\">\n                            <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ orderItem.height }} \u043C.</p>\n                        </ng-container>\n                        <ng-template #length>\n                            <p *ngIf=\"orderItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ orderItem.length }} \u043C.</p>\n                        </ng-template>\n                        <p *ngIf=\"orderItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ orderItem.width }} \u043C.</p>\n                        <p class=\"flex flex-col items-baseline gap-x-2\">\n                            <span class=\"whitespace-nowrap text-body-m-bold\">\n                                \u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E: <span class=\"whitespace-nowrap\">{{ orderItem.quantity }}</span>\n                            </span>\n                        </p>\n                    </div>\n\n                    <div class=\"w-50 flex flex-col gap-y-0.5\">\n                        <p class=\"whitespace-nowrap text-body-m-bold\">\n                            \u0421\u0443\u043C\u043C\u0430: <span class=\"whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n                        </p>\n                        <sc-price-warehouse-stock\n                            [product]=\"product\"\n                            [fromMain]=\"false\"\n                        ></sc-price-warehouse-stock>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-template #skeleton>\n        <div class=\"flex w-full gap-2\">\n            <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n            <div class=\"flex grow flex-col gap-2.5 bg-white\">\n                <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n                <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n                <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n            </div>\n        </div>\n    </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i1$1.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i2$1.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable"] }, { kind: "directive", type: i2$1.TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "directive", type: i2$2.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         | 
| 4912 | 
            +
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScOrderItemMobileComponent, deps: [{ token: i1.ScUnitsHelper }, { token: TuiPreviewDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
         | 
| 4913 | 
            +
                static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScOrderItemMobileComponent, selector: "sc-order-item-mobile", inputs: { orderItem: "orderItem" }, outputs: { clickCardEvent: "clickCardEvent", clickActionsEvent: "clickActionsEvent" }, viewQueries: [{ propertyName: "specificationPreviewRef", first: true, predicate: ["specificationPreview"], descendants: true }], ngImport: i0, template: "<div class=\"relative flex flex-wrap gap-x-4 gap-y-2 rounded-xl border border-tui-base-04 bg-white p-4 shadow-sc-2\">\n    <ng-container *ngIf=\"orderItem && product; else skeleton\">\n        <button\n            tuiIconButton\n            (click)=\"clickActionsEvent.emit()\"\n            size=\"m\"\n            iconStart=\"@tui.ellipsis-vertical\"\n            appearance=\"float\"\n            class=\"!absolute right-0 top-0 !hidden\"\n        ></button>\n        <div class=\"flex grow gap-2\">\n            <div class=\"flex size-20 shrink-0 items-center justify-center overflow-hidden\">\n                <img\n                    (click)=\"clickCardEvent.emit()\"\n                    [src]=\"getCardImage(product)\"\n                    [alt]=\"product.name\"\n                    [class.p-5]=\"!product.images?.length\"\n                    class=\"cursor-pointer\"\n                />\n            </div>\n\n            <div class=\"flex grow flex-wrap gap-x-8 self-center\">\n                <div class=\"flex grow basis-min-content flex-col\">\n                    <a\n                        tuiLink\n                        (click)=\"clickCardEvent.emit()\"\n                    >\n                        <span class=\"font-bold\">{{ product.name }}</span>\n                    </a>\n                    <div class=\"flex flex-col gap-y-0.5 text-tui-text-02\">\n                        <div class=\"flex flex-wrap\">\n                            <p class=\"w-40\">\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n                            <p\n                                class=\"w-40\"\n                                *ngIf=\"product.pack\"\n                            >\n                                \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n                            </p>\n                        </div>\n                        <a\n                            tuiLink\n                            *ngIf=\"orderItem.specificationImgUrl\"\n                            (click)=\"showSpecification()\"\n                            >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n                        >\n                        <ng-template\n                            #specificationPreview\n                            let-preview\n                        >\n                            <tui-preview\n                                [rotatable]=\"false\"\n                                [zoomable]=\"false\"\n                            >\n                                <img\n                                    *polymorpheusOutlet=\"orderItem.specificationImgUrl as src\"\n                                    alt=\"preview\"\n                                    [src]=\"orderItem.specificationImgUrl\"\n                                />\n                                <button\n                                    iconStart=\"@tui.x\"\n                                    title=\"Close\"\n                                    tuiIconButton\n                                    tuiPreviewAction\n                                    type=\"button\"\n                                    (click)=\"preview.complete()\"\n                                ></button>\n                            </tui-preview>\n                        </ng-template>\n                    </div>\n\n                    <div class=\"flex flex-wrap gap-y-0.5\">\n                        <span\n                            *ngIf=\"product.discount\"\n                            class=\"w-50 items-center gap-x-2 gap-y-0.5 text-xs text-tui-text-02\"\n                        >\n                            <span class=\"line-through\">{{ product.discountCostString }}</span>  \n                            <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n                            <ng-template #discountHint>\n                                <div class=\"font-bold\">{{ product.discount.name }}</div>\n                                <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n                            </ng-template>\n                        </span>\n                        <p class=\"w-50 flex items-baseline gap-x-2 gap-y-0.5 font-bold\">\n                            <span>{{ product.costRubString }}</span>\n                            <span\n                                *ngIf=\"!product.priceInRub\"\n                                class=\"text-xs text-tui-text-02\"\n                                >{{ product.costString }}</span\n                            >\n                        </p>\n                    </div>\n                </div>\n                <div class=\"flex flex-wrap content-center\">\n                    <div class=\"w-50 flex flex-col gap-x-8 gap-y-0.5\">\n                        <ng-container *ngIf=\"orderItem.height; else length\">\n                            <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ orderItem.height }} \u043C.</p>\n                        </ng-container>\n                        <ng-template #length>\n                            <p *ngIf=\"orderItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ orderItem.length }} \u043C.</p>\n                        </ng-template>\n                        <p *ngIf=\"orderItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ orderItem.width }} \u043C.</p>\n                        <p class=\"flex flex-col items-baseline gap-x-2\">\n                            <span class=\"whitespace-nowrap text-body-m-bold\">\n                                \u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E: <span class=\"whitespace-nowrap\">{{ orderItem.quantity }}</span>\n                            </span>\n                        </p>\n                    </div>\n\n                    <div class=\"w-50 flex flex-col gap-y-0.5\">\n                        <p class=\"whitespace-nowrap text-body-m-bold\">\n                            \u0421\u0443\u043C\u043C\u0430: <span class=\"whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n                        </p>\n                        <sc-price-warehouse-stock\n                            [product]=\"product\"\n                            [fromMain]=\"false\"\n                        ></sc-price-warehouse-stock>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-template #skeleton>\n        <div class=\"flex w-full gap-2\">\n            <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n            <div class=\"flex grow flex-col gap-2.5 bg-white\">\n                <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n                <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n                <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n            </div>\n        </div>\n    </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i1$1.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i2$1.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable"] }, { kind: "directive", type: i2$1.TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "directive", type: i2$2.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
         | 
| 4867 4914 | 
             
            }
         | 
| 4868 4915 | 
             
            i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScOrderItemMobileComponent, decorators: [{
         | 
| 4869 4916 | 
             
                        type: Component,
         | 
| 4870 | 
            -
                        args: [{ selector: 'sc-order-item-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative flex flex-wrap gap-x-4 gap-y-2 rounded-xl border border-tui-base-04 bg-white p-4 shadow-sc-2\">\n    <ng-container *ngIf=\"orderItem && product; else skeleton\">\n        <button\n            tuiIconButton\n            (click)=\"clickActionsEvent.emit()\"\n            size=\"m\"\n            iconStart=\"@tui.ellipsis-vertical\"\n            appearance=\"float\"\n            class=\"!absolute right-0 top-0 !hidden\"\n        ></button>\n        <div class=\"flex grow gap-2\">\n            <div class=\"flex size-20 shrink-0 items-center justify-center overflow-hidden\">\n                <img\n                    (click)=\"clickCardEvent.emit()\"\n                    [src]=\"getCardImage()\"\n                    [alt]=\"product.name\"\n                    [class.p-5]=\"!product.images?.length\"\n                    class=\"cursor-pointer\"\n                />\n            </div>\n\n            <div class=\"flex grow flex-wrap gap-x-8 self-center\">\n                <div class=\"flex grow basis-min-content flex-col\">\n                    <a\n                        tuiLink\n                        (click)=\"clickCardEvent.emit()\"\n                    >\n                        <span class=\"font-bold\">{{ product.name }}</span>\n                    </a>\n                    <div class=\"flex flex-col gap-y-0.5 text-tui-text-02\">\n                        <div class=\"flex flex-wrap\">\n                            <p class=\"w-40\">\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n                            <p\n                                class=\"w-40\"\n                                *ngIf=\"product.pack\"\n                            >\n                                \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n                            </p>\n                        </div>\n                        <a\n                            tuiLink\n                            *ngIf=\"orderItem.specificationImgUrl\"\n                            (click)=\"showSpecification()\"\n                            >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n                        >\n                        <ng-template\n                            #specificationPreview\n                            let-preview\n                        >\n                            <tui-preview\n                                [rotatable]=\"false\"\n                                [zoomable]=\"false\"\n                            >\n                                <img\n                                    *polymorpheusOutlet=\"orderItem.specificationImgUrl as src\"\n                                    alt=\"preview\"\n                                    [src]=\"orderItem.specificationImgUrl\"\n                                />\n                                <button\n                                    iconStart=\"@tui.x\"\n                                    title=\"Close\"\n                                    tuiIconButton\n                                    tuiPreviewAction\n                                    type=\"button\"\n                                    (click)=\"preview.complete()\"\n                                ></button>\n                            </tui-preview>\n                        </ng-template>\n                    </div>\n\n                    <div class=\"flex flex-wrap gap-y-0.5\">\n                        <span\n                            *ngIf=\"product.discount\"\n                            class=\"w-50 items-center gap-x-2 gap-y-0.5 text-xs text-tui-text-02\"\n                        >\n                            <span class=\"line-through\">{{ product.discountCostString }}</span>  \n                            <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n                            <ng-template #discountHint>\n                                <div class=\"font-bold\">{{ product.discount.name }}</div>\n                                <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n                            </ng-template>\n                        </span>\n                        <p class=\"w-50 flex items-baseline gap-x-2 gap-y-0.5 font-bold\">\n                            <span>{{ product.costRubString }}</span>\n                            <span\n                                *ngIf=\"!product.priceInRub\"\n                                class=\"text-xs text-tui-text-02\"\n                                >{{ product.costString }}</span\n                            >\n                        </p>\n                    </div>\n                </div>\n                <div class=\"flex flex-wrap content-center\">\n                    <div class=\"w-50 flex flex-col gap-x-8 gap-y-0.5\">\n                        <ng-container *ngIf=\"orderItem.height; else length\">\n                            <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ orderItem.height }} \u043C.</p>\n                        </ng-container>\n                        <ng-template #length>\n                            <p *ngIf=\"orderItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ orderItem.length }} \u043C.</p>\n                        </ng-template>\n                        <p *ngIf=\"orderItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ orderItem.width }} \u043C.</p>\n                        <p class=\"flex flex-col items-baseline gap-x-2\">\n                            <span class=\"whitespace-nowrap text-body-m-bold\">\n                                \u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E: <span class=\"whitespace-nowrap\">{{ orderItem.quantity }}</span>\n                            </span>\n                        </p>\n                    </div>\n\n                    <div class=\"w-50 flex flex-col gap-y-0.5\">\n                        <p class=\"whitespace-nowrap text-body-m-bold\">\n                            \u0421\u0443\u043C\u043C\u0430: <span class=\"whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n                        </p>\n                        <sc-price-warehouse-stock\n                            [product]=\"product\"\n                            [fromMain]=\"false\"\n                        ></sc-price-warehouse-stock>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-template #skeleton>\n        <div class=\"flex w-full gap-2\">\n            <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n            <div class=\"flex grow flex-col gap-2.5 bg-white\">\n                <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n                <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n                <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n            </div>\n        </div>\n    </ng-template>\n</div>\n" }]
         | 
| 4917 | 
            +
                        args: [{ selector: 'sc-order-item-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative flex flex-wrap gap-x-4 gap-y-2 rounded-xl border border-tui-base-04 bg-white p-4 shadow-sc-2\">\n    <ng-container *ngIf=\"orderItem && product; else skeleton\">\n        <button\n            tuiIconButton\n            (click)=\"clickActionsEvent.emit()\"\n            size=\"m\"\n            iconStart=\"@tui.ellipsis-vertical\"\n            appearance=\"float\"\n            class=\"!absolute right-0 top-0 !hidden\"\n        ></button>\n        <div class=\"flex grow gap-2\">\n            <div class=\"flex size-20 shrink-0 items-center justify-center overflow-hidden\">\n                <img\n                    (click)=\"clickCardEvent.emit()\"\n                    [src]=\"getCardImage(product)\"\n                    [alt]=\"product.name\"\n                    [class.p-5]=\"!product.images?.length\"\n                    class=\"cursor-pointer\"\n                />\n            </div>\n\n            <div class=\"flex grow flex-wrap gap-x-8 self-center\">\n                <div class=\"flex grow basis-min-content flex-col\">\n                    <a\n                        tuiLink\n                        (click)=\"clickCardEvent.emit()\"\n                    >\n                        <span class=\"font-bold\">{{ product.name }}</span>\n                    </a>\n                    <div class=\"flex flex-col gap-y-0.5 text-tui-text-02\">\n                        <div class=\"flex flex-wrap\">\n                            <p class=\"w-40\">\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n                            <p\n                                class=\"w-40\"\n                                *ngIf=\"product.pack\"\n                            >\n                                \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n                            </p>\n                        </div>\n                        <a\n                            tuiLink\n                            *ngIf=\"orderItem.specificationImgUrl\"\n                            (click)=\"showSpecification()\"\n                            >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n                        >\n                        <ng-template\n                            #specificationPreview\n                            let-preview\n                        >\n                            <tui-preview\n                                [rotatable]=\"false\"\n                                [zoomable]=\"false\"\n                            >\n                                <img\n                                    *polymorpheusOutlet=\"orderItem.specificationImgUrl as src\"\n                                    alt=\"preview\"\n                                    [src]=\"orderItem.specificationImgUrl\"\n                                />\n                                <button\n                                    iconStart=\"@tui.x\"\n                                    title=\"Close\"\n                                    tuiIconButton\n                                    tuiPreviewAction\n                                    type=\"button\"\n                                    (click)=\"preview.complete()\"\n                                ></button>\n                            </tui-preview>\n                        </ng-template>\n                    </div>\n\n                    <div class=\"flex flex-wrap gap-y-0.5\">\n                        <span\n                            *ngIf=\"product.discount\"\n                            class=\"w-50 items-center gap-x-2 gap-y-0.5 text-xs text-tui-text-02\"\n                        >\n                            <span class=\"line-through\">{{ product.discountCostString }}</span>  \n                            <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n                            <ng-template #discountHint>\n                                <div class=\"font-bold\">{{ product.discount.name }}</div>\n                                <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n                            </ng-template>\n                        </span>\n                        <p class=\"w-50 flex items-baseline gap-x-2 gap-y-0.5 font-bold\">\n                            <span>{{ product.costRubString }}</span>\n                            <span\n                                *ngIf=\"!product.priceInRub\"\n                                class=\"text-xs text-tui-text-02\"\n                                >{{ product.costString }}</span\n                            >\n                        </p>\n                    </div>\n                </div>\n                <div class=\"flex flex-wrap content-center\">\n                    <div class=\"w-50 flex flex-col gap-x-8 gap-y-0.5\">\n                        <ng-container *ngIf=\"orderItem.height; else length\">\n                            <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ orderItem.height }} \u043C.</p>\n                        </ng-container>\n                        <ng-template #length>\n                            <p *ngIf=\"orderItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ orderItem.length }} \u043C.</p>\n                        </ng-template>\n                        <p *ngIf=\"orderItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ orderItem.width }} \u043C.</p>\n                        <p class=\"flex flex-col items-baseline gap-x-2\">\n                            <span class=\"whitespace-nowrap text-body-m-bold\">\n                                \u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E: <span class=\"whitespace-nowrap\">{{ orderItem.quantity }}</span>\n                            </span>\n                        </p>\n                    </div>\n\n                    <div class=\"w-50 flex flex-col gap-y-0.5\">\n                        <p class=\"whitespace-nowrap text-body-m-bold\">\n                            \u0421\u0443\u043C\u043C\u0430: <span class=\"whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n                        </p>\n                        <sc-price-warehouse-stock\n                            [product]=\"product\"\n                            [fromMain]=\"false\"\n                        ></sc-price-warehouse-stock>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </ng-container>\n\n    <ng-template #skeleton>\n        <div class=\"flex w-full gap-2\">\n            <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n            <div class=\"flex grow flex-col gap-2.5 bg-white\">\n                <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n                <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n                <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n            </div>\n        </div>\n    </ng-template>\n</div>\n" }]
         | 
| 4871 4918 | 
             
                    }], ctorParameters: () => [{ type: i1.ScUnitsHelper }, { type: i2$1.TuiPreviewDialogService, decorators: [{
         | 
| 4872 4919 | 
             
                                type: Inject,
         | 
| 4873 4920 | 
             
                                args: [TuiPreviewDialogService]
         | 
| 4874 | 
            -
                            }] }, { type: undefined, decorators: [{
         | 
| 4875 | 
            -
                                type: Inject,
         | 
| 4876 | 
            -
                                args: [SC_URLS]
         | 
| 4877 | 
            -
                            }] }, { type: undefined, decorators: [{
         | 
| 4878 | 
            -
                                type: Inject,
         | 
| 4879 | 
            -
                                args: [SC_PATH_IMAGE_NOT_FOUND]
         | 
| 4880 4921 | 
             
                            }] }], propDecorators: { specificationPreviewRef: [{
         | 
| 4881 4922 | 
             
                            type: ViewChild,
         | 
| 4882 4923 | 
             
                            args: ['specificationPreview']
         |