@snabcentr/client-ui 0.0.23 → 0.0.24
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/esm2020/files/directives/index.mjs +3 -0
- package/esm2020/files/directives/tree-top.directive.mjs +63 -0
- package/esm2020/files/directives/tree.directive.mjs +47 -0
- package/esm2020/files/file-tree-item/file-tree-item.component.mjs +18 -0
- package/esm2020/files/files-and-documents.component.mjs +60 -0
- package/esm2020/files/files-and-documents.module.mjs +26 -0
- package/esm2020/files/index.mjs +6 -0
- package/esm2020/files/interfaces/tree-node.mjs +2 -0
- package/esm2020/files/services/index.mjs +3 -0
- package/esm2020/files/services/tree-icon.service.mjs +48 -0
- package/esm2020/files/services/tree-loader.service.mjs +60 -0
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/snabcentr-client-ui.mjs +287 -5
- package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
- package/fesm2020/snabcentr-client-ui.mjs +285 -5
- package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
- package/files/directives/index.d.ts +2 -0
- package/files/directives/tree-top.directive.d.ts +33 -0
- package/files/directives/tree.directive.d.ts +35 -0
- package/files/file-tree-item/file-tree-item.component.d.ts +9 -0
- package/files/files-and-documents.component.d.ts +27 -0
- package/files/files-and-documents.module.d.ts +16 -0
- package/files/index.d.ts +5 -0
- package/files/interfaces/tree-node.d.ts +29 -0
- package/files/services/index.d.ts +2 -0
- package/files/services/tree-icon.service.d.ts +23 -0
- package/files/services/tree-loader.service.d.ts +43 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/release_notes.tmp +6 -1
- package/styles/tailwind/tailwind.scss +13 -4
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"snabcentr-client-ui.mjs","sources":["../../../projects/client-ui/helpers/sc-px-converter.ts","../../../projects/client-ui/banner/sc-banner.component.ts","../../../projects/client-ui/banner/sc-banner.component.html","../../../projects/client-ui/banner/sc-banner.module.ts","../../../projects/client-ui/tokens/sc-linear-values-token.ts","../../../projects/client-ui/helpers/sc-units-helper.ts","../../../projects/client-ui/validators/stepValidator.ts","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.ts","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.html","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.ts","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.html","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.ts","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.html","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.ts","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.html","../../../projects/client-ui/catalog/category-card/sc-category-card.component.ts","../../../projects/client-ui/catalog/category-card/sc-category-card.component.html","../../../projects/client-ui/catalog/price-card/sc-price-card.component.ts","../../../projects/client-ui/catalog/price-card/sc-price-card.component.html","../../../projects/client-ui/catalog/price-history/sc-chart-option.ts","../../../projects/client-ui/catalog/price-history/sc-price-history.component.ts","../../../projects/client-ui/catalog/price-history/sc-price-history.component.html","../../../projects/client-ui/catalog/price-history/sc-lang-RU.ts","../../../projects/client-ui/catalog/sc-catalog.module.ts","../../../projects/client-ui/cart/sc-cart.module.ts","../../../projects/client-ui/icons/sc-client-ui-icons-name.ts","../../../projects/client-ui/share-button/sc-share-button.component.ts","../../../projects/client-ui/share-button/sc-share-button.component.html","../../../projects/client-ui/news/news-card/sc-news-card.component.ts","../../../projects/client-ui/news/news-card/sc-news-card.component.html","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.ts","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.html","../../../projects/client-ui/share-button/sc-share-button.module.ts","../../../projects/client-ui/news/sc-news.module.ts","../../../projects/client-ui/order/order-item-mobile/order-item-mobile.component.ts","../../../projects/client-ui/order/order-item-mobile/order-item-mobile.component.html","../../../projects/client-ui/order/sc-order.module.ts","../../../projects/client-ui/public-api.ts","../../../projects/client-ui/snabcentr-client-ui.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n/**\n * Класс-помощник для конвертации пикселей.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ScPxConverter {\n private rootFontSize = 16;\n\n /**\n * Конвертирует пиксели в rem.\n *\n * @param px Значение которое необходимо конвертировать.\n */\n public pxToRem(px: number): number {\n return px / this.rootFontSize;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n Input,\n OnInit,\n QueryList,\n TemplateRef,\n ContentChildren,\n HostBinding,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { filter, interval, map } from 'rxjs';\nimport { ScBannerService, ScIBanner } from '@snabcentr/client-core';\nimport { ScPxConverter } from '../helpers';\n\n/**\n * Баннер с прокруткой переданных {@link TemplateRef} элементов, и баннеров локации.\n */\n@Component({\n selector: 'sc-banner',\n templateUrl: './sc-banner.component.html',\n styleUrls: ['./sc-banner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScBannerComponent implements OnInit {\n /**\n * Список ссылок на элемент представлений шаблонов.\n */\n @ContentChildren('banner')\n public bannersListRef: QueryList<TemplateRef<any>>;\n\n /**\n * Признак, что необходимо показывать кнопки навигации.\n */\n @Input()\n public navigateButton: boolean = true;\n\n /**\n * Интервал показа слайдов в миллисекундах.\n */\n @Input()\n public playerInterval: number = 8000;\n\n /**\n * Признак, что прокрутка выключена.\n */\n @Input()\n public disabled: boolean = false;\n\n /**\n * Местоположение баннера.\n */\n @Input()\n public bannerLocation?: string;\n\n /**\n * Признак, что компонент должен растягиваться.\n */\n @Input()\n public resizable: boolean = true;\n\n /**\n * Событие загрузки баннеров с количеством полученных баннеров.\n */\n @Output()\n public loadBannersEvent: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на изображение баннера.\n */\n @Output()\n public clickBannerImgEvent: EventEmitter<ScIBanner> = new EventEmitter<ScIBanner>();\n\n /**\n * Свойство, от которого зависит наличие класса `!hidden` у `:host` компонента.\n */\n @HostBinding('class.!hidden')\n public get isHidden(): boolean {\n return this.bannersListRef.length + this.banners.length === 0;\n }\n\n /**\n * Свойство, от которого зависит высота `:host` компонента.\n */\n @HostBinding('style.height')\n public height: string = '';\n\n /**\n * Свойство, от которого зависит ширина `:host` компонента.\n */\n @HostBinding('style.width')\n public width: string = '';\n\n /**\n * Свойство, от которого зависит соотношение `:host` компонента.\n */\n @HostBinding('style.aspect-ratio')\n public aspectRatio: string = '';\n\n /**\n * Идентификатор текущего баннера.\n */\n public currentBannerId: number = 0;\n\n /**\n * Список баннеров.\n */\n public banners: ScIBanner[] = [];\n\n /**\n * Признак, что указатель мыши находится над баннером.\n */\n private isMouseOver: boolean = false;\n\n /**\n * Инициализирует экземпляр класса {@link ScBannerComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n * @param bannerService Сервис для работы с баннерами.\n * @param pxConverter Класс хэлпер для конвертации пикселей.\n */\n public constructor(private readonly cdr: ChangeDetectorRef, private bannerService: ScBannerService, private pxConverter: ScPxConverter) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n interval(this.playerInterval)\n .pipe(\n filter(() => !this.disabled && !this.isMouseOver),\n untilDestroyed(this)\n )\n .subscribe(() => this.onNextBanner());\n\n if (this.bannerLocation) {\n this.bannerService.banners$\n .pipe(\n map((banners) => banners.filter((banner) => banner.location === this.bannerLocation)),\n untilDestroyed(this)\n )\n .subscribe((banners) => {\n this.banners = banners;\n\n if (banners.length) {\n if (this.resizable) {\n this.width = `100%`;\n } else {\n this.height = `${this.pxConverter.pxToRem(banners[0].height)}rem`;\n this.width = `${this.pxConverter.pxToRem(banners[0].width)}rem`;\n }\n\n this.aspectRatio = `${banners[0].width} / ${banners[0].height}`;\n }\n\n this.loadBannersEvent.emit(this.banners.length);\n this.cdr.markForCheck();\n });\n }\n }\n\n /**\n * Обработчик нажатия на баннер, генерирующий событие {@link clickBannerImgEvent}.\n *\n * @param banner Баннер, по ссылке которого совершён переход.\n */\n public onClick(banner: ScIBanner): void {\n if (banner.url) {\n this.clickBannerImgEvent.emit(banner);\n }\n }\n\n /**\n * Переключиться на предыдущий баннер.\n */\n public onPreviousBanner(): void {\n const previous: number = this.currentBannerId - 1;\n this.currentBannerId = previous < 0 ? this.bannersListRef.length + this.banners.length - 1 : previous;\n this.cdr.markForCheck();\n }\n\n /**\n * Переключиться на следующий баннер.\n */\n public onNextBanner(): void {\n const next: number = this.currentBannerId + 1;\n this.currentBannerId = next === this.bannersListRef.length + this.banners.length ? 0 : next;\n this.cdr.markForCheck();\n }\n\n /**\n * Обработчик события mouseenter.\n */\n @HostListener('mouseenter')\n private mouseEnterHandler: () => boolean = () => (this.isMouseOver = true);\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler: () => boolean = () => (this.isMouseOver = false);\n}\n","<div class=\"flex relative\" [style.aspect-ratio]=\"aspectRatio\">\n <tui-carousel class=\"bg-white w-full shadow-sc-2 !absolute rounded overflow-hidden\" [(index)]=\"currentBannerId\">\n <ng-container *ngFor=\"let item of bannersListRef; index as index\">\n <div *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngFor=\"let banner of banners; index as index\">\n <a *tuiItem (click)=\"onClick(banner)\" [attr.href]=\"banner.url ? banner.url : null\" target=\"_blank\" [title]=\"banner.title\" class=\"\">\n <img [src]=\"banner.image\" alt=\"Баннер\" [style.aspect-ratio]=\"aspectRatio\" class=\"pointer-events-none object-cover h-full w-full\" />\n </a>\n </ng-container>\n </tui-carousel>\n <div *ngIf=\"navigateButton && !disabled && (this.bannersListRef.length + this.banners.length) > 1\" class=\"w-full h-full flex items-center grow justify-between p-3\">\n <button tuiIconButton icon=\"tuiIconChevronLeftLarge\" tuiMode=\"onLight\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onPreviousBanner()\" class=\"arrow-btn\"></button>\n <button tuiIconButton icon=\"tuiIconChevronRightLarge\" tuiMode=\"onLight\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onNextBanner()\" class=\"arrow-btn\"></button>\n </div>\n</div>\n<tui-pagination\n *ngIf=\"navigateButton && !disabled && (this.bannersListRef.length + this.banners.length) > 1\"\n size=\"s\"\n class=\"mt-3\"\n [length]=\"this.bannersListRef.length + this.banners.length\"\n [(index)]=\"currentBannerId\"\n></tui-pagination>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScBannerComponent } from './sc-banner.component';\nimport { RouterModule } from '@angular/router';\nimport { TuiButtonModule, TuiModeModule } from '@taiga-ui/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { TuiCarouselModule, TuiPaginationModule } from '@taiga-ui/kit';\n\n/**\n * Модуль баннеров.\n */\n@NgModule({\n declarations: [ScBannerComponent],\n imports: [CommonModule, RouterModule, TuiButtonModule, MatRippleModule, TuiCarouselModule, TuiPaginationModule, TuiModeModule],\n exports: [ScBannerComponent],\n})\nexport class ScBannerModule {}\n","import { tuiCreateToken } from '@taiga-ui/cdk';\n\n/**\n * Единицы измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES: string[] = ['пог.м.', 'м.'];\n\n/**\n * Токен единиц измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES_TOKEN = tuiCreateToken(SC_LINEAR_VALUES);\n","import { Inject, Injectable } from '@angular/core';\nimport { ScProduct } from '@snabcentr/client-core';\nimport { SC_LINEAR_VALUES_TOKEN } from '../tokens';\n\n/**\n * Класс хэлпер для работы со значениями единиц измерения товара.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class UnitsHelper {\n /**\n * Инициирует экземпляр класса {@link UnitsHelper}.\n *\n * @param linearValues Единицы измерения линейной величины.\n */\n public constructor(@Inject(SC_LINEAR_VALUES_TOKEN) public readonly linearValues: string[]) {}\n\n /**\n * Возвращает признак возможности продажи товара на метраж.\n *\n * @param linearValues Товар для которого нужно проверить возможность продажи на метраж.\n */\n public productIsMeasurable(product: ScProduct): boolean {\n return this.linearValues.includes(product.unit);\n }\n\n /**\n * Возвращает кратность количества для товара.\n *\n * @param linearValues Товар для которого нужно вернуть кратность количества.\n */\n public productMultiplicity(product: ScProduct): number {\n return product && product.minCount && !this.linearValues.includes(product.unit) ? product.minCount : 1;\n }\n}\n","import { AbstractControl, ValidatorFn, ValidationErrors } from '@angular/forms';\n\n/**\n * Проверяет кратность значения.\n *\n * @param step Шаг кратности.\n */\nexport function stepValidator(step: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n // Умножение на 1000 нужно для уменьшения вероятности погрешности при выполнении вычислений над десятичными числами.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return control.value && (Number.parseFloat(control.value) * 1000) % (step * 1000) ? { error: `Число не кратно ${step}` } : null;\n };\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, NgControl } from '@angular/forms';\nimport { stepValidator } from '../../validators/stepValidator';\nimport { TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent } from '@taiga-ui/kit';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { TuiLoaderComponent, TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\nimport { AbstractTuiNullableControl, AbstractTuiValueTransformer } from '@taiga-ui/cdk';\n\n@Component({\n selector: 'sc-input-quantity',\n templateUrl: './sc-input-quantity.component.html',\n styleUrls: ['./sc-input-quantity.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScInputQuantityComponent extends AbstractTuiNullableControl<number> implements OnInit {\n /**\n * Компонент поля ввода.\n */\n @ViewChild(TuiInputNumberComponent)\n private readonly numberInput: TuiInputNumberComponent;\n\n /**\n * Шаг увеличения количества. Отвечает за проверку кратности ввода.\n */\n @Input()\n public step: number = 1;\n\n /**\n * Единица измерения количества. Будет указана в постфиксе поля ввода.\n */\n @Input()\n public quantityUnit?: string;\n\n /**\n * Признак, что необходимо отобразить {@link TuiLoaderComponent} над компонентом.\n */\n @Input()\n public showLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить кнопку очистки поля ввода.\n */\n @Input()\n public showCross: boolean = true;\n\n /**\n * Формат внешнего вида компонента.\n */\n @Input()\n @HostBinding('attr.data-appearance')\n public appearance: 'primary' | 'secondary' = 'primary';\n\n /**\n * Признак, что компонент деактивирован.\n */\n @Input()\n @HostBinding('attr.data-disabled')\n public isDisabled: boolean = false;\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие нажатия на кнопку \"Очистить\".\n */\n @Output()\n public clickClearEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Инициализирует экземпляр класса {@link ScInputQuantityComponent}.\n *\n * @param ngControl Объект поля ввода для настройки валидации.\n * @param cdr Объект для работы с обнаружением изменений.\n * @param transformer Преобразователь значений элемента формы.\n */\n public constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n ngControl: NgControl | null,\n @Inject(ChangeDetectorRef)\n cdr: ChangeDetectorRef,\n @Optional()\n @Inject(TUI_NUMBER_VALUE_TRANSFORMER)\n transformer: AbstractTuiValueTransformer<number | null>\n ) {\n super(ngControl, cdr, transformer);\n }\n\n public get focused(): boolean {\n return !!this.numberInput?.focused;\n }\n\n public get formControl(): FormControl<any> | null {\n return this.control as FormControl<any> | null;\n }\n\n /** @inheritDoc */\n public override ngOnInit(): void {\n if (this.control) {\n this.control.setValidators(stepValidator(this.step));\n }\n }\n\n /**\n * Обработчик события нажатия стрелок клавиатуры.\n *\n * @param step Шаг изменения количества.\n */\n @HostListener('keydown.arrowDown', ['-step'])\n @HostListener('keydown.arrowUp', ['step'])\n public onArrow(step: number | null): void {\n if (!step) {\n return;\n }\n\n if (step > 0) {\n this.incident();\n } else {\n this.decrement();\n }\n }\n\n /**\n * Увеличивает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то увеличит до ближайшего кратного значения.\n */\n public incident(): void {\n this.numberInput.onArrow(this.step - ((this.numberInput.value || 0) % this.step));\n }\n\n /**\n * Уменьшает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то уменьшит до ближайшего кратного значения.\n */\n public decrement(): void {\n this.numberInput.onArrow(-((this.numberInput.value || 0) % this.step) || -this.step);\n }\n\n /**\n * Очищает поля ввода.\n */\n public clear(): void {\n this.control?.patchValue(null);\n this.clickClearEvent.emit();\n }\n}\n","<tui-loader *ngIf=\"formControl\" class=\"w-full\" [overlay]=\"true\" [showLoader]=\"showLoader\" [size]=\"size\">\n <div class=\"flex items-center text-center gap-1\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [disabled]=\"!numberInput.canDecrement\"\n [focusable]=\"false\"\n [size]=\"size\"\n (click.prevent)=\"decrement()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"scIconMinus\"></tui-svg>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async )?.message\"\n [tuiTextfieldPostfix]=\"quantityUnit || ''\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"incident()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"scIconPlus\"></tui-svg>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"clear()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"scIconCross\"></tui-svg>\n </button>\n </div>\n</tui-loader>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ScIWarehouseStockCount, ScProduct, ScWarehouse, ScWarehouseService } from '@snabcentr/client-core';\nimport { Observable, map, switchMap } from 'rxjs';\n\n/**\n * Компонент информации о наличии товара на складе.\n */\n@Component({\n selector: 'sc-price-warehouse-stock',\n templateUrl: './sc-price-warehouse-stock.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['sc-price-warehouse-stock.component.scss'],\n})\nexport class ScPriceWarehouseStockComponent {\n /**\n * Строка классов для свойств статусов.\n */\n @Input() public classList: string;\n\n /**\n * Информация о товаре/услуге.\n */\n @Input() public product: ScProduct;\n\n /**\n * Признак, что необходимо отобразить подсказку по складам.\n */\n @Input() public withStockHint: boolean = true;\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public warehouseSelect$: Observable<ScWarehouse | null> = this.warehouseService.getWarehouseSelectChange$();\n\n /**\n * {@link Observable} изменения списка складов.\n */\n public stockByWarehouses$?: Observable<[ScWarehouse | undefined, ScIWarehouseStockCount][] | undefined> = this.warehouseSelect$.pipe(\n switchMap((warehouseSelect) =>\n this.warehouseService.getWarehouses$().pipe(\n map((warehouses) => this.product.warehouseStockCount?.map((stock) => [warehouses.find((warehouse) => warehouse.id === stock.id), stock])),\n map(\n (stockByWarehouses) =>\n stockByWarehouses?.sort((stock) => (stock[0]?.id === warehouseSelect?.id ? -1 : 1)) as [ScWarehouse | undefined, ScIWarehouseStockCount][] | undefined\n )\n )\n )\n );\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceWarehouseStockComponent}.\n *\n * @param warehouseService Сервис для работы со складами.\n */\n public constructor(private readonly warehouseService: ScWarehouseService) {}\n}\n","<ng-container *ngIf=\"product\">\n <ng-container>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex items-center gap-1\">\n <span *ngIf=\"product.getNotStockMessage(warehouseSelect) as message\" class=\"text-xs min-w-2/5 text-tui-error-fill\" [ngClass]=\"classList\"> {{ message }} </span>\n <span *ngIf=\"product.isWarehouseStockExist(warehouseSelect.id)\" class=\"text-xs min-w-2/5 text-tui-success-fill\" [ngClass]=\"classList\">\n В наличии<ng-container *ngIf=\"product.getWarehouseStockCount(warehouseSelect.id) as count\"\n >:\n <span class=\"whitespace-nowrap\">{{ count }} {{ product.quantityUnit }}</span>\n </ng-container>\n </span>\n <span *ngIf=\"product.onOrder\" class=\"text-xs min-w-2/5 text-sc-yellow\" [ngClass]=\"classList\">Под заказ</span>\n\n <tui-svg\n *ngIf=\"withStockHint && (stockByWarehouses$ | async)?.length\"\n src=\"tuiIconInfoLarge\"\n [tuiHint]=\"stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!text-xs !h-3\"\n ></tui-svg>\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template #stockHint>\n <table *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"text-xs table-auto\" [ngClass]=\"classList\">\n <tbody>\n <tr *ngFor=\"let item of stockByWarehouses$ | async\" class=\"border-b\" [class.text-tui-primary]=\"warehouseSelect === item[0]\">\n <ng-container>\n <td class=\"px-1\">{{ item[0]?.name }}:</td>\n <td class=\"px-1\">{{ item[1].count ? item[1].count + ' ' + product.quantityUnit : 'В наличии' }}</td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct } from '@snabcentr/client-core';\nimport { Observable, skip } from 'rxjs';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки элемента корзины.\n */\n@Component({\n selector: 'sc-cart-item-mobile',\n templateUrl: './sc-cart-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCartItemMobileComponent implements OnInit {\n /**\n * Элемент корзины.\n */\n private _cartItem?: ScCartItem;\n\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl(0);\n\n /**\n * Элемент корзины.\n */\n @Input()\n public set cartItem(data: ScCartItem | undefined) {\n this._cartItem = data;\n if (data) {\n this.quantityControl.patchValue(data.quantity);\n }\n }\n\n /**\n * Элемент корзины.\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges.pipe(skip(1));\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickDeleteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickSettingsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Продукт элемента корзины.\n */\n public get product(): ScProduct | undefined {\n return this.cartItem?.product;\n }\n\n /**\n * Инициирует экземпляр класса {@link ScCartItemMobileComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.quantityValueChanges = this.quantityControl.valueChanges;\n }\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef || '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImage(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<div class=\"ml-2 mt-2 relative p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"cartItem && product; else skeleton\">\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button>\n <button\n tuiIconButton\n size=\"m\"\n icon=\"scIconBasket\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n (click)=\"clickDeleteEvent.emit()\"\n class=\"shadow-sc-2 !absolute -left-2 -top-2\"\n ></button>\n <div class=\"flex gap-2\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 gap-y-0.5\">\n <div class=\"w-[13rem]\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs\">\n <p>Артикул: {{ product.code }}</p>\n <p *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" alt=\"\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n </div>\n </div>\n <div class=\"flex flex-col self-center w-[10rem] gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-2 items-center w-44 text-xs text-tui-text-02\">\n <button tuiIconButton (click)=\"clickSettingsEvent.emit()\" size=\"m\" icon=\"scIconSettings\" appearance=\"secondary\" tuiMode=\"onLight\"></button>\n <div>\n <ng-container *ngIf=\"unitsHelper.productIsMeasurable(product); else notMeasurable\">\n <p>Длина: {{ cartItem.length }} {{ product.unit }}</p>\n </ng-container>\n <ng-template #notMeasurable>\n <p *ngIf=\"cartItem.length && !unitsHelper.productIsMeasurable(product)\">Длина: {{ cartItem.length }} м.</p>\n <p *ngIf=\"cartItem.width\">Ширина: {{ cartItem.width }} м.</p>\n <p *ngIf=\"cartItem.height\">Высота: {{ cartItem.height }} м.</p>\n </ng-template>\n </div>\n </div>\n <div class=\"flex items-center grow justify-end\">\n <sc-input-quantity\n class=\"w-28\"\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"product.minCount || 1\"\n ></sc-input-quantity>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\n\n// TODO: TASK[#6771]: Реализовать кнопку избранных товаров.\n/**\n * Компонент кнопки избранных товаров и категорий.\n */\n@Component({\n selector: 'sc-favorite-btn',\n templateUrl: './sc-favorite-btn.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScFavoriteBtnComponent {\n /**\n * Событие нажатия на кнопку.\n */\n @Output()\n public clickEvent: EventEmitter<void> = new EventEmitter<void>();\n}\n","<button tuiIconButton (click)=\"clickEvent.emit()\" appearance=\"flat\" size=\"s\">\n <tui-svg class=\"text-tui-primary\" src=\"tuiIconBookmarkLarge\"></tui-svg>\n</button>\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, HostListener, Inject, Input, Output, Renderer2, ViewChild } from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCategory, ScIUrls } from '@snabcentr/client-core';\nimport { TuiSizeS } from '@taiga-ui/core';\n\n/**\n * Карточка категории.\n */\n@Component({\n selector: 'sc-category-card',\n templateUrl: './sc-category-card.component.html',\n styleUrls: ['./sc-category-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCategoryCardComponent {\n /**\n * Информация о категории.\n */\n @Input()\n public category?: ScCategory;\n\n /**\n * Ссылка на {@link HTMLElement} блока названия.\n */\n @ViewChild('name')\n private name: ElementRef<HTMLElement>;\n\n /**\n * Размер карточки категории.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n /**\n * Признак, что карточка является скелетоном.\n */\n @Input()\n public isSkeleton: boolean = false;\n\n /**\n * Признак необходимости отобразить/скрыть кнопку избранной категории.\n */\n @Input()\n public showFavoriteBtn: boolean = true;\n\n /**\n * Признак что категория имеет поведение наведения и скрытия названия.\n */\n @Input()\n public isHovered: boolean = false;\n\n /**\n * Событие нажатия на карточку категории.\n */\n @Output()\n public clickOnCardEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Событие нажатия на кнопку избранной категории.\n */\n @Output()\n public clickOnFavoriteEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Инициализирует экземпляр класса {@link CategoryCardComponent}.\n *\n * @param urls Список ссылок на разделы backend'a.\n * @param renderer Экземпляр базового класса для реализации пользовательского рендеринга.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(@Inject(SC_URLS) private readonly urls: ScIUrls, private renderer: Renderer2, @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string) {}\n\n /**\n * Возвращает путь к изображению категории. Если путь отсутствует, то вернёт изображение по-умолчанию (\"product_not_found\").\n *\n * @param category Информация о категории.\n */\n public getCategoryImgURL(category: ScCategory): string {\n return category.properties?.image ? this.urls.imgServerUrl + '/' + category.properties?.image : this.pathImageNotFound;\n }\n\n /**\n * Обработчик события mousemove.\n */\n @HostListener('mousemove')\n private moveEnterHandler(): void {\n if (this.isHovered) {\n this.name.nativeElement.style.maxHeight = `${this.name.nativeElement.scrollHeight / 16}rem`;\n }\n }\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler(): void {\n if (this.isHovered) {\n this.renderer.setStyle(this.name.nativeElement, 'maxHeight', null);\n }\n }\n}\n","<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn *ngIf=\"category && !isSkeleton && showFavoriteBtn\" (clickEvent)=\"clickOnFavoriteEvent.emit()\" class=\"absolute left-1 top-1\"></sc-favorite-btn>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Inject, Input, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScAuthService, ScCartItem, ScIUrls, ScProduct, ScWarehouse, ScWarehouseService } from '@snabcentr/client-core';\nimport { TuiSizeS } from '@taiga-ui/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент карточки товара.\n */\n@Component({\n selector: 'sc-price-card',\n templateUrl: './sc-price-card.component.html',\n styleUrls: ['./sc-price-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceCardComponent {\n /**\n * Признак, что необходимо отобразить лоадер для поля ввода количества товара.\n */\n public quantityShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить поле ввода количества товара.\n */\n @Input()\n public showQuantityControl: boolean = false;\n\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * Позиция товара в корзине\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public set cartItem(value: ScCartItem | undefined) {\n this._cartItem = value;\n\n this.quantityControl.patchValue(this._cartItem?.quantity ?? null, { emitEvent: false });\n this.quantityShowLoader = false;\n }\n\n /**\n * Объект товара.\n *\n * TODO: Сделать товар наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public product?: ScProduct;\n\n /**\n * Событие нажатия на кнопку \"В избранное\".\n */\n @Output()\n public clickFavoriteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"В корзину\".\n */\n @Output()\n public clickAddToCartEvent: EventEmitter<ScProduct> = new EventEmitter<ScProduct>();\n\n /**\n * Событие нажатия на кнопку очистки количества товара.\n */\n @Output()\n public clickClearEvent: EventEmitter<ScCartItem> = new EventEmitter<ScCartItem>();\n\n /**\n * Событие нажатия на карточку товара.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public warehouseSelect$: Observable<ScWarehouse | null> = this.warehouseService.getWarehouseSelectChange$();\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(null);\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges;\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = this.authService.getAuthChange();\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n private _cartItem?: ScCartItem | undefined;\n\n /**\n * Инициирует экземпляр класса {@link ScPriceCardComponent}.\n *\n * @param authService Сервис аутентификации пользователей.\n * @param warehouseService Сервис для работы со складами.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n private readonly authService: ScAuthService,\n private readonly warehouseService: ScWarehouseService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /**\n * Признак, что нужно показать скелетон.\n */\n public get skeletonVisible(): boolean {\n return !this.product;\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImage(this.urls.imgServerUrl) ?? this.pathImageNotFound;\n }\n}\n","<div *ngIf=\"product; else skeleton\" class=\"card-wrapper flex flex-col w-40 h-64 bg-tui-base-03 rounded-xl shadow-sc-2 overflow-hidden text-xs\">\n <!-- Изображение товара -->\n <div class=\"flex flex-col grow overflow-hidden\">\n <div class=\"flex justify-center items-center grow overflow-hidden relative\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-12]=\"!product.images?.length\" class=\"cursor-pointer\" />\n <tui-svg *ngIf=\"cartItem\" src=\"tuiIconCheck\" class=\"!h-5 !w-5 bg-tui-primary text-white rounded-md absolute right-2 top-2\"></tui-svg>\n <sc-favorite-btn *ngIf=\"authStatus$ | async\" [class.!block]=\"product.isFavorite\" class=\"top-1 left-1 absolute hidden group-hover:block\"></sc-favorite-btn>\n </div>\n </div>\n\n <!-- Краткая информация о товаре -->\n <div class=\"bg-white relative shrink-0\">\n <div class=\"wrapper-info flex flex-col content-between flex-auto justify-between\">\n <a class=\"name !transition-all !duration-500\" tuiLink iconAlign=\"left\" (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"info text-tui-text-02 overflow-hidden duration-500\">\n <p *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n <div class=\"sub-info\">\n <p>Артикул: {{ product.code }}</p>\n <p *ngIf=\"(authStatus$ | async) && product.costDate\" class=\"text-tui-link hover:text-tui-link-hover cursor-pointer\">Дата: {{ product.costDate }}</p>\n </div>\n </div>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex flex-col\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\" class=\"cost font-bold\">{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs font-bold text-tui-text-02 hidden group-hover:block\">{{ product.costString }}</span>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n </div>\n <div class=\"button-wrapper overflow-hidden duration-500\">\n <button *ngIf=\"!showQuantityControl\" tuiButton (click)=\"clickAddToCartEvent.emit(product)\" [showLoader]=\"quantityShowLoader\" [size]=\"size\" class=\"w-full\">\n <span class=\"font-bold\"> <tui-svg src=\"scIconCart\"></tui-svg> В корзину</span>\n </button>\n <sc-input-quantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [size]=\"size === 'm' ? 'l' : 'm'\"\n [step]=\"product.minCount || 1\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n ></sc-input-quantity>\n </div>\n <div *ngIf=\"product.isPreviouslyOrdered\" matTooltip=\"Товар из истории покупок\" class=\"rotate-45 z-10 absolute bg-tui-error-fill -bottom-4 -right-4 h-8 w-8\"></div>\n </div>\n</div>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col card-wrapper bg-white rounded-xl overflow-hidden shadow-sc-1\">\n <!-- Изображение товара -->\n <div class=\"w-full h-3/5 rounded-t bg-tui-base-02\"></div>\n <!-- Краткая информация о товаре -->\n <div class=\"flex flex-col grow gap-2.5 bg-white rounded-b p-5\">\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","import { EChartsOption } from 'echarts';\nimport { formatDate } from '@angular/common';\nimport { ScIChartDataItem } from './sc-i-chart-data-item';\nimport { tuiFormatNumber } from '@taiga-ui/core';\n/**\n * Настройки отрисовки графика.\n *\n * @see [Документация](https://echarts.apache.org/en/option.html#title)\n */\nexport const scChartOption: EChartsOption = {\n grid: {\n top: 12,\n left: 64,\n right: 0,\n bottom: 24,\n },\n tooltip: {\n trigger: 'axis',\n formatter: (params) => {\n const data: ScIChartDataItem = Array.isArray(params) ? (params[0].data as ScIChartDataItem) : (params.data as ScIChartDataItem);\n const date = new Date(data.value[0]);\n const nextDate = new Date(data.value[2]);\n\n return `\n <div class=\"text-center text-black\">\n <span class=\"font-bold\">${data.value[1]} ₽</span>\n </br>\n <span class=\"text-xs\">${formatDate(date, 'dd.MM', 'en')} - ${formatDate(nextDate, 'dd.MM', 'en')}</span>\n </div>\n `;\n },\n axisPointer: {\n animation: false,\n type: 'cross',\n },\n textStyle: {\n fontFamily: 'Roboto, \"Helvetica Neue\", sans-serif',\n },\n },\n xAxis: {\n type: 'time',\n splitLine: {\n show: false,\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n hideOverlap: true,\n },\n boundaryGap: ['3%', '3%'],\n },\n yAxis: {\n splitLine: {\n show: false,\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n formatter: (value: number) => tuiFormatNumber(value),\n },\n type: 'value',\n boundaryGap: [0, '100%'],\n },\n series: {\n name: 'История цены',\n type: 'line',\n showSymbol: false,\n symbolSize: 12,\n itemStyle: {\n color: '#ffcc40',\n },\n },\n};\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { ScPriceHistory } from '@snabcentr/client-core';\nimport { ECharts, EChartsOption } from 'echarts';\nimport { scChartOption } from './sc-chart-option';\nimport { ScIChartDataItem } from './sc-i-chart-data-item';\n\n/**\n * График истории цен товара или услуги.\n * TODO: TASK[#7482] Перепроверить возможность использования TuiLineDaysChart.\n */\n@Component({\n selector: 'sc-price-history',\n templateUrl: './sc-price-history.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceHistoryComponent implements OnInit {\n /**\n * История цен на товар/услугу.\n */\n @Input() public history: ScPriceHistory;\n\n /**\n * Максимальная цена товара.\n */\n public maxPrice?: number;\n\n /**\n * Минимальная цена товара.\n */\n public minPrice?: number;\n\n /**\n * Настройки графика.\n */\n public initOption: {\n devicePixelRatio?: number;\n renderer?: string;\n width?: number | string;\n height?: number | string;\n locale?: string;\n } = { locale: 'RU' };\n\n /**\n * Параметры отрисовки графика истории цены.\n */\n public chartOption: EChartsOption = scChartOption;\n\n /**\n * Данные об истории цены на товар или услугу.\n */\n private data: ScIChartDataItem[] = [];\n\n /**\n * Экземпляр {@link ECharts} в шаблоне.\n */\n private eChartsInstance: ECharts;\n\n /**\n * Инициализирует экземпляр класса {@link PriceHistoryChartComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n */\n public constructor(private readonly cdr: ChangeDetectorRef) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {\n this.chartOption.series.data = [];\n }\n\n Object.keys(this.history)\n .map((key) => {\n // ? Можно избежать переведя даты в api в формат ECMAScript® 2023: https://tc39.es/ecma262/#sec-date-time-string-format\n const dataString = key.split('.').reverse(),\n data = new Date(+dataString[0], +dataString[1] - 1, +dataString[2]);\n\n return { data: data, cost: this.history[String(key)].cost };\n })\n .sort((a, b) => +a.data - +b.data)\n .forEach((item, index, array) => {\n let nextDate: Date;\n\n if (array[index + 1]?.data) {\n nextDate = new Date(array[index + 1]?.data);\n nextDate.setDate(nextDate.getDate() - 1);\n } else {\n nextDate = new Date();\n }\n\n this.pushDataItem(item.cost, item.data, nextDate);\n });\n\n if (this.eChartsInstance) {\n this.setChartData();\n }\n }\n\n /**\n * Перехватчик жизненного цикла {@link ECharts}, который вызывается при его инициализации.\n *\n * @param eChartsInstance Экземпляр {@link ECharts}.\n */\n public onChartInit(eChartsInstance: ECharts) {\n this.eChartsInstance = eChartsInstance;\n\n if (this.data.length) {\n this.setChartData();\n }\n }\n\n /**\n * Устанавливает новые данные {@link PriceHistoryChartComponent.eChartsInstance}.\n */\n private setChartData(): void {\n if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {\n this.maxPrice = Math.max(...this.data.map((item) => item.value[1]));\n this.minPrice = Math.min(...this.data.map((item) => item.value[1]));\n this.chartOption.series.data = this.data;\n this.eChartsInstance.clear();\n this.eChartsInstance.setOption(this.chartOption, true, true);\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Добавляет значение цены товара в массив истории цен.\n *\n * @param value Цена товара или услуги.\n * @param date Дата установки цены.\n * @param nextDate Следующая дата установки цены.\n */\n private pushDataItem(value: number, date: Date, nextDate: Date): void {\n this.data.push({\n name: date.toString(),\n value: [date, value, nextDate],\n });\n }\n}\n","<div class=\"flex flex-col items-center\">\n <div *ngIf=\"maxPrice && minPrice\" class=\"w-full font-bold text-end text-lg mb-1\">от {{ minPrice.toLocaleString() }} ₽ до {{ maxPrice.toLocaleString() }} ₽</div>\n <div class=\"relative w-full h-56\">\n <div class=\"h-48 bg-tui-base-02 mt-2 absolute rounded right-0 left-16\"></div>\n <div echarts [initOpts]=\"initOption\" (chartInit)=\"onChartInit($event)\" [options]=\"chartOption\" class=\"w-full !h-full touch-none\"></div>\n </div>\n</div>\n","/**\n * Language: Russian.\n */\nexport default {\n time: {\n month: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],\n monthAbbr: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],\n dayOfWeek: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],\n dayOfWeekAbbr: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],\n },\n legend: {\n selector: {\n all: 'Всё',\n inverse: 'Обратить',\n },\n },\n toolbox: {\n brush: {\n title: {\n rect: 'Выделить область',\n polygon: 'Инструмент «Лассо»',\n lineX: 'Горизонтальное выделение',\n lineY: 'Вертикальное выделение',\n keep: 'Оставить выбранное',\n clear: 'Очистить выбранное',\n },\n },\n dataView: {\n title: 'Данные',\n lang: ['Данные', 'Закрыть', 'Обновить'],\n },\n dataZoom: {\n title: {\n zoom: 'Увеличить',\n back: 'Сбросить увеличение',\n },\n },\n magicType: {\n title: {\n line: 'Переключиться на линейный график',\n bar: 'Переключиться на столбчатую диаграмму',\n stack: 'Стопка',\n tiled: 'Плитка',\n },\n },\n restore: {\n title: 'Восстановить',\n },\n saveAsImage: {\n title: 'Сохранить картинку',\n lang: ['Правый клик, чтобы сохранить картинку'],\n },\n },\n series: {\n typeNames: {\n pie: 'Круговая диаграмма',\n bar: 'Столбчатая диаграмма',\n line: 'Линейный график',\n scatter: 'Точечная диаграмма',\n effectScatter: 'Точечная диаграмма с волнами',\n radar: 'Лепестковая диаграмма',\n tree: 'Дерево',\n treemap: 'Плоское дерево',\n boxplot: 'Ящик с усами',\n candlestick: 'Свечной график',\n k: 'График К-линий',\n heatmap: 'Тепловая карта',\n map: 'Карта',\n parallel: 'Диаграмма параллельных координат',\n lines: 'Линейный граф',\n graph: 'Граф отношений',\n sankey: 'Диаграмма Санкей',\n funnel: 'Воронкообразная диаграмма',\n gauge: 'Шкала',\n pictorialBar: 'Столбец-картинка',\n themeRiver: 'Тематическая река',\n sunburst: 'Солнечные лучи',\n },\n },\n aria: {\n general: {\n withTitle: 'Это график, показывающий \"{title}\"',\n withoutTitle: 'Это график',\n },\n series: {\n single: {\n prefix: '',\n withName: ' с типом {seriesType} и именем {seriesName}.',\n withoutName: ' с типом {seriesType}.',\n },\n multiple: {\n prefix: '. Он состоит из {seriesCount} серий.',\n withName: ' Серия {seriesId} имеет тип {seriesType} и показывает {seriesName}.',\n withoutName: ' Серия {seriesId} имеет тип {seriesType}.',\n separator: {\n middle: '',\n end: '',\n },\n },\n },\n data: {\n allData: 'Данные таковы: ',\n partialData: 'Первые {displayCnt} элементов: ',\n withName: 'значение для {name} — {value}',\n withoutName: '{value}',\n separator: {\n middle: ', ',\n end: '. ',\n },\n },\n },\n};\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScCategoryCardComponent } from './category-card/sc-category-card.component';\nimport { RouterModule } from '@angular/router';\nimport { TuiButtonModule, TuiHintModule, TuiLabelModule, TuiLinkModule, TuiLoaderModule, TuiModeModule, TuiSvgModule, TuiTextfieldControllerModule } from '@taiga-ui/core';\nimport { ScFavoriteBtnComponent } from './sc-favorite-btn/sc-favorite-btn.component';\nimport { TuiElasticContainerModule, TuiFieldErrorPipeModule, TuiInputNumberModule } from '@taiga-ui/kit';\nimport { ScInputQuantityComponent } from './input-quantity/sc-input-quantity.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScPriceCardComponent } from './price-card/sc-price-card.component';\nimport { ScPriceWarehouseStockComponent } from './price-warehouse-stock/sc-price-warehouse-stock.component';\nimport { ScPriceHistoryComponent } from './price-history/sc-price-history.component';\nimport * as echarts from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport { TitleComponent, TooltipComponent, GridComponent } from 'echarts/components';\nimport { SVGRenderer } from 'echarts/renderers';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport scLangRU from './price-history/sc-lang-RU';\n\necharts.registerLocale('RU', scLangRU);\necharts.use([TitleComponent, TooltipComponent, GridComponent, LineChart, SVGRenderer]);\n\n/**\n * Модуль каталога.\n */\n@NgModule({\n declarations: [ScCategoryCardComponent, ScFavoriteBtnComponent, ScInputQuantityComponent, ScPriceCardComponent, ScPriceWarehouseStockComponent, ScPriceHistoryComponent],\n exports: [ScCategoryCardComponent, ScFavoriteBtnComponent, ScInputQuantityComponent, ScPriceCardComponent, ScPriceWarehouseStockComponent, ScPriceHistoryComponent],\n imports: [\n CommonModule,\n RouterModule,\n TuiButtonModule,\n TuiSvgModule,\n TuiInputNumberModule,\n TuiLabelModule,\n TuiTextfieldControllerModule,\n FormsModule,\n ReactiveFormsModule,\n TuiHintModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiLoaderModule,\n TuiLinkModule,\n TuiElasticContainerModule,\n NgxEchartsModule.forRoot({ echarts }),\n ],\n})\nexport class ScCatalogModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScCartItemMobileComponent } from './cart-item-mobile/sc-cart-item-mobile.component';\nimport { TuiButtonModule, TuiHintModule, TuiLinkModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiPreviewModule } from '@taiga-ui/addon-preview';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\n\n/**\n * Модуль корзины.\n */\n@NgModule({\n declarations: [ScCartItemMobileComponent],\n exports: [ScCartItemMobileComponent],\n imports: [\n CommonModule,\n TuiLinkModule,\n ScCatalogModule,\n TuiButtonModule,\n TuiModeModule,\n TuiSvgModule,\n TuiHintModule,\n FormsModule,\n ReactiveFormsModule,\n TuiPreviewModule,\n PolymorpheusModule,\n ],\n})\nexport class ScCartModule {}\n","/**\n * Список иконок.\n * TODO: TASK[#7779] Добавить иконки отдельных значков для соц. сетей после добавления их в кит дизайна.\n */\nexport const scClientUiIconsName = [\n 'scIconCalendar',\n 'scIconWordFile',\n 'scIconWarning',\n 'scIconWallet',\n 'scIconViewTree',\n 'scIconMinus',\n 'scIconViewInline',\n 'scIconViewGrid',\n 'scIconVerticalThreeDots',\n 'scIconTop',\n 'scIconTick',\n 'scIconTasks',\n 'scIconSuitcase',\n 'scIconStar',\n 'scIconShare',\n 'scIconSettings',\n 'scIconSend',\n 'scIconSearch',\n 'scIconSave',\n 'scIconRocket',\n 'scIconRequisites',\n 'scIconRepeat',\n 'scIconRefresh',\n 'scIconReclamation',\n 'scIconQuestion',\n 'scIconQRCodeScan',\n 'scIconProfile',\n 'scIconPrice',\n 'scIconPlus',\n 'scIconPhone',\n 'scIconPercentage',\n 'scIconPdfFile',\n 'scIconPalette',\n 'scIconOffer',\n 'scIconNews',\n 'scIconMoney2',\n 'scIconMoney',\n 'scIconMail',\n 'scIconLogOut2',\n 'scIconLogOut',\n 'scIconLogIn',\n 'scIconLockOpen',\n 'scIconLock',\n 'scIconLocation',\n 'scIconList',\n 'scIconLike',\n 'scIconImage',\n 'scIconHome',\n 'scIconHistory',\n 'scIconHeartFill',\n 'scIconHeart',\n 'scIconHamburger',\n 'scIconGraph',\n 'scIconFolderPlus',\n 'scIconFolderOpen',\n 'scIconFolder',\n 'scIconFilter',\n 'scIconFile',\n 'scIconFavoriteFill',\n 'scIconFavorite',\n 'scIconEye',\n 'scIconExcelFile',\n 'scIconError',\n 'scIconEdit',\n 'scIconDownloading',\n 'scIconDone',\n 'scIconDeleteProfile',\n 'scIconCross',\n 'scIconContacts',\n 'scIconConfigurator',\n 'scIconClock',\n 'scIconClip',\n 'scIconClients',\n 'scIconCatalog',\n 'scIconCart',\n 'scIconCancel',\n 'scIconBubble',\n 'scIconBook',\n 'scIconBell',\n 'scIconBasket',\n 'scIconBag',\n 'scIconAttention',\n 'scIconArrowUp',\n 'scIconArrowRight',\n 'scIconArrowReturn',\n 'scIconArrowLeft',\n 'scIconArrowDownLargeEnd',\n 'scIconArrowDownLarge',\n 'scIconArrowDown',\n 'scIconApplication',\n 'scIconAddProfile',\n 'scIconSocialCopy',\n 'scIconSocialEmail',\n 'scIconSocialFacebook',\n 'scIconSocialInstagram',\n 'scIconSocialQR',\n 'scIconSocialTelegram',\n 'scIconSocialViber',\n 'scIconSocialVk',\n 'scIconSocialWhatsapp',\n];\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\n\n/**\n * Компонент кнопки \"Поделиться\".\n */\n@Component({\n selector: 'sc-share-button',\n templateUrl: './sc-share-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScShareButtonComponent {\n /**\n * Формат внешнего вида кнопки.\n */\n @Input()\n public appearance: 'primary' | 'secondary' | 'outline' | 'flat' = 'secondary';\n\n /**\n * Размер кнопки.\n */\n @Input()\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие клика по кнопке \"Поделиться\".\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n}\n","<button tuiIconButton icon=\"scIconShare\" [appearance]=\"appearance\" [size]=\"size\" (click)=\"$event.stopPropagation(); clickShareEvent.emit()\"></button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ScNewsTile } from '@snabcentr/client-core';\n\n/**\n * Компонент карточки новости.\n */\n@Component({\n selector: 'sc-news-card',\n templateUrl: './sc-news-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardComponent {\n /**\n * Информация о новости.\n */\n @Input()\n public news: ScNewsTile;\n\n /**\n * Событие клика по карточке новости.\n */\n @Output()\n public clickCardEvent: EventEmitter<ScNewsTile> = new EventEmitter<ScNewsTile>();\n\n /**\n * Событие клика по кнопке \"Поделиться\" карточки новости.\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n}\n","<div (click)=\"clickCardEvent.emit(news)\" class=\"block relative h-82 w-70 cursor-pointer shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div [style.background-image]=\"'url(' + news.image + ')'\" class=\"bg-no-repeat bg-center bg-cover bg-tui-base-02 w-full h-50\"></div>\n <div class=\"px-6 py-4.5 h-32 w-full w-full flex justify-between align-baseline bg-white overflow-hidden\">\n <div class=\"flex flex-col gap-2.5\">\n <p class=\"text-sm text-tui-text-02\">{{ news.created_at }}</p>\n <a class=\"text-sm font-bold text-black line-clamp-3\">{{ news.subject }}</a>\n </div>\n <sc-share-button (clickShareEvent)=\"clickShareEvent.emit()\"></sc-share-button>\n </div>\n</div>\n","import { Input, Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Компонент скелетона карточки новости.\n */\n@Component({\n selector: 'sc-news-card-skeleton',\n templateUrl: './sc-news-card-skeleton.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardSkeletonComponent {\n /**\n * Признак, что необходимо отобразить скелетон изображения новости.\n */\n @Input() public hasImg: boolean = true;\n}\n","<div class=\"block relative h-82 w-70 shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div *ngIf=\"hasImg; else textBlock\" class=\"bg-tui-base-02 w-full h-50\"></div>\n <ng-template #textBlock>\n <div class=\"px-6 py-4.5 w-full flex flex-col gap-2\">\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-3/4\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-3/4\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></div>\n </div>\n </ng-template>\n\n <div class=\"w-3/4\">\n <ng-container *ngTemplateOutlet=\"textBlock\"></ng-container>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScShareButtonComponent } from './sc-share-button.component';\nimport { TuiButtonModule } from '@taiga-ui/core';\n\n/**\n * Модуль работы кнопки \"Поделиться\".\n */\n@NgModule({\n declarations: [ScShareButtonComponent],\n imports: [CommonModule, TuiButtonModule],\n exports: [ScShareButtonComponent],\n})\nexport class ScShareButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScNewsCardComponent } from './news-card/sc-news-card.component';\nimport { ScNewsCardSkeletonComponent } from './news-card-skeleton/sc-news-card-skeleton.component';\nimport { RouterModule } from '@angular/router';\nimport { ScShareButtonModule } from '../share-button';\n\n/**\n * Модуль работы с новостями.\n */\n@NgModule({\n declarations: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n imports: [CommonModule, RouterModule, ScShareButtonModule],\n exports: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n})\nexport class ScNewsModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct } from '@snabcentr/client-core';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки элемента заказа.\n */\n@Component({\n selector: 'sc-order-item-mobile',\n templateUrl: './order-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScOrderItemMobileComponent {\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * Элемент заказа.\n */\n @Input()\n public orderItem?: ScCartItem;\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на дополнительные действия.\n */\n @Output()\n public clickActionsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Продукт элемента заказа.\n */\n public get product(): ScProduct | undefined {\n return this.orderItem?.product;\n }\n\n /**\n * Инициирует экземпляр класса {@link ScOrderItemMobileComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef || '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImage(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<div class=\"relative p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"orderItem && product; else skeleton\">\n <button\n tuiIconButton\n (click)=\"clickActionsEvent.emit()\"\n size=\"m\"\n icon=\"scIconVerticalThreeDots\"\n appearance=\"float\"\n tuiMode=\"onLight\"\n class=\"!hidden !absolute right-0 top-0\"\n ></button>\n <div class=\"flex gap-2 grow\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 grow\">\n <div class=\"basis-min-content flex flex-col grow\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs flex flex-col gap-y-0.5\">\n <div class=\"flex flex-wrap gap-y-0.5\">\n <p class=\"w-40\">Артикул: {{ product.code }}</p>\n <p class=\"w-40\" *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n </div>\n <a tuiLink *ngIf=\"orderItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n </div>\n </div>\n <div class=\"flex flex-wrap content-center\">\n <div class=\"flex flex-col w-40 gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"text-tui-success-fill font-bold\"> -{{ 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\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n\n <div class=\"w-40 text-xs text-tui-text-02\">\n <ng-container *ngIf=\"unitsHelper.productIsMeasurable(product); else notMeasurable\">\n <p>Длина: {{ orderItem.length }} {{ product.unit }}</p>\n </ng-container>\n <ng-template #notMeasurable>\n <p *ngIf=\"orderItem.length && !unitsHelper.productIsMeasurable(product)\">Длина: {{ orderItem.length }} м.</p>\n <p *ngIf=\"orderItem.width\">Ширина: {{ orderItem.width }} м.</p>\n <p *ngIf=\"orderItem.height\">Высота: {{ orderItem.height }} м.</p>\n </ng-template>\n <p class=\"text-tui-base-09 text-sm\">\n Сумма: <span class=\"font-bold whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ScOrderItemMobileComponent } from './order-item-mobile/order-item-mobile.component';\nimport { CommonModule } from '@angular/common';\nimport { TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\n\n/**\n * Модуль заказов.\n */\n@NgModule({\n declarations: [ScOrderItemMobileComponent],\n exports: [ScOrderItemMobileComponent],\n imports: [CommonModule, TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule, ScCatalogModule],\n})\nexport class ScOrderModule {}\n","/*\n * Public API Surface of ui\n */\n\nexport * from './banner';\nexport * from './cart';\nexport * from './catalog';\nexport * from './icons';\nexport * from './loader';\nexport * from './news';\nexport * from './order';\nexport * from './share-button';\nexport * from './validators';\nexport * from './tokens';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ScPxConverter","i3","i4","i1","i2","i1.UnitsHelper","i4.ScInputQuantityComponent","i5.ScPriceWarehouseStockComponent","i6","i2.ScFavoriteBtnComponent","i5.ScFavoriteBtnComponent","i6.ScInputQuantityComponent","i7.ScPriceWarehouseStockComponent","i1.ScShareButtonComponent","i4.ScPriceWarehouseStockComponent"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"snabcentr-client-ui.mjs","sources":["../../../projects/client-ui/helpers/sc-px-converter.ts","../../../projects/client-ui/banner/sc-banner.component.ts","../../../projects/client-ui/banner/sc-banner.component.html","../../../projects/client-ui/banner/sc-banner.module.ts","../../../projects/client-ui/tokens/sc-linear-values-token.ts","../../../projects/client-ui/helpers/sc-units-helper.ts","../../../projects/client-ui/validators/stepValidator.ts","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.ts","../../../projects/client-ui/catalog/input-quantity/sc-input-quantity.component.html","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.ts","../../../projects/client-ui/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.html","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.ts","../../../projects/client-ui/cart/cart-item-mobile/sc-cart-item-mobile.component.html","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.ts","../../../projects/client-ui/catalog/sc-favorite-btn/sc-favorite-btn.component.html","../../../projects/client-ui/catalog/category-card/sc-category-card.component.ts","../../../projects/client-ui/catalog/category-card/sc-category-card.component.html","../../../projects/client-ui/catalog/price-card/sc-price-card.component.ts","../../../projects/client-ui/catalog/price-card/sc-price-card.component.html","../../../projects/client-ui/catalog/price-history/sc-chart-option.ts","../../../projects/client-ui/catalog/price-history/sc-price-history.component.ts","../../../projects/client-ui/catalog/price-history/sc-price-history.component.html","../../../projects/client-ui/catalog/price-history/sc-lang-RU.ts","../../../projects/client-ui/catalog/sc-catalog.module.ts","../../../projects/client-ui/cart/sc-cart.module.ts","../../../projects/client-ui/files/services/tree-icon.service.ts","../../../projects/client-ui/files/services/tree-loader.service.ts","../../../projects/client-ui/files/directives/tree.directive.ts","../../../projects/client-ui/files/file-tree-item/file-tree-item.component.ts","../../../projects/client-ui/files/file-tree-item/file-tree-item.component.html","../../../projects/client-ui/files/directives/tree-top.directive.ts","../../../projects/client-ui/files/files-and-documents.component.ts","../../../projects/client-ui/files/files-and-documents.component.html","../../../projects/client-ui/files/files-and-documents.module.ts","../../../projects/client-ui/icons/sc-client-ui-icons-name.ts","../../../projects/client-ui/share-button/sc-share-button.component.ts","../../../projects/client-ui/share-button/sc-share-button.component.html","../../../projects/client-ui/news/news-card/sc-news-card.component.ts","../../../projects/client-ui/news/news-card/sc-news-card.component.html","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.ts","../../../projects/client-ui/news/news-card-skeleton/sc-news-card-skeleton.component.html","../../../projects/client-ui/share-button/sc-share-button.module.ts","../../../projects/client-ui/news/sc-news.module.ts","../../../projects/client-ui/order/order-item-mobile/order-item-mobile.component.ts","../../../projects/client-ui/order/order-item-mobile/order-item-mobile.component.html","../../../projects/client-ui/order/sc-order.module.ts","../../../projects/client-ui/public-api.ts","../../../projects/client-ui/snabcentr-client-ui.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n/**\n * Класс-помощник для конвертации пикселей.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ScPxConverter {\n private rootFontSize = 16;\n\n /**\n * Конвертирует пиксели в rem.\n *\n * @param px Значение которое необходимо конвертировать.\n */\n public pxToRem(px: number): number {\n return px / this.rootFontSize;\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n Input,\n OnInit,\n QueryList,\n TemplateRef,\n ContentChildren,\n HostBinding,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { filter, interval, map } from 'rxjs';\nimport { ScBannerService, ScIBanner } from '@snabcentr/client-core';\nimport { ScPxConverter } from '../helpers';\n\n/**\n * Баннер с прокруткой переданных {@link TemplateRef} элементов, и баннеров локации.\n */\n@Component({\n selector: 'sc-banner',\n templateUrl: './sc-banner.component.html',\n styleUrls: ['./sc-banner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n@UntilDestroy({ checkProperties: true })\nexport class ScBannerComponent implements OnInit {\n /**\n * Список ссылок на элемент представлений шаблонов.\n */\n @ContentChildren('banner')\n public bannersListRef: QueryList<TemplateRef<any>>;\n\n /**\n * Признак, что необходимо показывать кнопки навигации.\n */\n @Input()\n public navigateButton: boolean = true;\n\n /**\n * Интервал показа слайдов в миллисекундах.\n */\n @Input()\n public playerInterval: number = 8000;\n\n /**\n * Признак, что прокрутка выключена.\n */\n @Input()\n public disabled: boolean = false;\n\n /**\n * Местоположение баннера.\n */\n @Input()\n public bannerLocation?: string;\n\n /**\n * Признак, что компонент должен растягиваться.\n */\n @Input()\n public resizable: boolean = true;\n\n /**\n * Событие загрузки баннеров с количеством полученных баннеров.\n */\n @Output()\n public loadBannersEvent: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * Событие нажатия на изображение баннера.\n */\n @Output()\n public clickBannerImgEvent: EventEmitter<ScIBanner> = new EventEmitter<ScIBanner>();\n\n /**\n * Свойство, от которого зависит наличие класса `!hidden` у `:host` компонента.\n */\n @HostBinding('class.!hidden')\n public get isHidden(): boolean {\n return this.bannersListRef.length + this.banners.length === 0;\n }\n\n /**\n * Свойство, от которого зависит высота `:host` компонента.\n */\n @HostBinding('style.height')\n public height: string = '';\n\n /**\n * Свойство, от которого зависит ширина `:host` компонента.\n */\n @HostBinding('style.width')\n public width: string = '';\n\n /**\n * Свойство, от которого зависит соотношение `:host` компонента.\n */\n @HostBinding('style.aspect-ratio')\n public aspectRatio: string = '';\n\n /**\n * Идентификатор текущего баннера.\n */\n public currentBannerId: number = 0;\n\n /**\n * Список баннеров.\n */\n public banners: ScIBanner[] = [];\n\n /**\n * Признак, что указатель мыши находится над баннером.\n */\n private isMouseOver: boolean = false;\n\n /**\n * Инициализирует экземпляр класса {@link ScBannerComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n * @param bannerService Сервис для работы с баннерами.\n * @param pxConverter Класс хэлпер для конвертации пикселей.\n */\n public constructor(private readonly cdr: ChangeDetectorRef, private bannerService: ScBannerService, private pxConverter: ScPxConverter) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n interval(this.playerInterval)\n .pipe(\n filter(() => !this.disabled && !this.isMouseOver),\n untilDestroyed(this)\n )\n .subscribe(() => this.onNextBanner());\n\n if (this.bannerLocation) {\n this.bannerService.banners$\n .pipe(\n map((banners) => banners.filter((banner) => banner.location === this.bannerLocation)),\n untilDestroyed(this)\n )\n .subscribe((banners) => {\n this.banners = banners;\n\n if (banners.length) {\n if (this.resizable) {\n this.width = `100%`;\n } else {\n this.height = `${this.pxConverter.pxToRem(banners[0].height)}rem`;\n this.width = `${this.pxConverter.pxToRem(banners[0].width)}rem`;\n }\n\n this.aspectRatio = `${banners[0].width} / ${banners[0].height}`;\n }\n\n this.loadBannersEvent.emit(this.banners.length);\n this.cdr.markForCheck();\n });\n }\n }\n\n /**\n * Обработчик нажатия на баннер, генерирующий событие {@link clickBannerImgEvent}.\n *\n * @param banner Баннер, по ссылке которого совершён переход.\n */\n public onClick(banner: ScIBanner): void {\n if (banner.url) {\n this.clickBannerImgEvent.emit(banner);\n }\n }\n\n /**\n * Переключиться на предыдущий баннер.\n */\n public onPreviousBanner(): void {\n const previous: number = this.currentBannerId - 1;\n this.currentBannerId = previous < 0 ? this.bannersListRef.length + this.banners.length - 1 : previous;\n this.cdr.markForCheck();\n }\n\n /**\n * Переключиться на следующий баннер.\n */\n public onNextBanner(): void {\n const next: number = this.currentBannerId + 1;\n this.currentBannerId = next === this.bannersListRef.length + this.banners.length ? 0 : next;\n this.cdr.markForCheck();\n }\n\n /**\n * Обработчик события mouseenter.\n */\n @HostListener('mouseenter')\n private mouseEnterHandler: () => boolean = () => (this.isMouseOver = true);\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler: () => boolean = () => (this.isMouseOver = false);\n}\n","<div class=\"flex relative\" [style.aspect-ratio]=\"aspectRatio\">\n <tui-carousel class=\"bg-white w-full shadow-sc-2 !absolute rounded overflow-hidden\" [(index)]=\"currentBannerId\">\n <ng-container *ngFor=\"let item of bannersListRef; index as index\">\n <div *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngFor=\"let banner of banners; index as index\">\n <a *tuiItem (click)=\"onClick(banner)\" [attr.href]=\"banner.url ? banner.url : null\" target=\"_blank\" [title]=\"banner.title\" class=\"\">\n <img [src]=\"banner.image\" alt=\"Баннер\" [style.aspect-ratio]=\"aspectRatio\" class=\"pointer-events-none object-cover h-full w-full\" />\n </a>\n </ng-container>\n </tui-carousel>\n <div *ngIf=\"navigateButton && !disabled && (this.bannersListRef.length + this.banners.length) > 1\" class=\"w-full h-full flex items-center grow justify-between p-3\">\n <button tuiIconButton icon=\"tuiIconChevronLeftLarge\" tuiMode=\"onLight\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onPreviousBanner()\" class=\"arrow-btn\"></button>\n <button tuiIconButton icon=\"tuiIconChevronRightLarge\" tuiMode=\"onLight\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onNextBanner()\" class=\"arrow-btn\"></button>\n </div>\n</div>\n<tui-pagination\n *ngIf=\"navigateButton && !disabled && (this.bannersListRef.length + this.banners.length) > 1\"\n size=\"s\"\n class=\"mt-3\"\n [length]=\"this.bannersListRef.length + this.banners.length\"\n [(index)]=\"currentBannerId\"\n></tui-pagination>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScBannerComponent } from './sc-banner.component';\nimport { RouterModule } from '@angular/router';\nimport { TuiButtonModule, TuiModeModule } from '@taiga-ui/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { TuiCarouselModule, TuiPaginationModule } from '@taiga-ui/kit';\n\n/**\n * Модуль баннеров.\n */\n@NgModule({\n declarations: [ScBannerComponent],\n imports: [CommonModule, RouterModule, TuiButtonModule, MatRippleModule, TuiCarouselModule, TuiPaginationModule, TuiModeModule],\n exports: [ScBannerComponent],\n})\nexport class ScBannerModule {}\n","import { tuiCreateToken } from '@taiga-ui/cdk';\n\n/**\n * Единицы измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES: string[] = ['пог.м.', 'м.'];\n\n/**\n * Токен единиц измерения линейной величины по умолчанию.\n */\nexport const SC_LINEAR_VALUES_TOKEN = tuiCreateToken(SC_LINEAR_VALUES);\n","import { Inject, Injectable } from '@angular/core';\nimport { ScProduct } from '@snabcentr/client-core';\nimport { SC_LINEAR_VALUES_TOKEN } from '../tokens';\n\n/**\n * Класс хэлпер для работы со значениями единиц измерения товара.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class UnitsHelper {\n /**\n * Инициирует экземпляр класса {@link UnitsHelper}.\n *\n * @param linearValues Единицы измерения линейной величины.\n */\n public constructor(@Inject(SC_LINEAR_VALUES_TOKEN) public readonly linearValues: string[]) {}\n\n /**\n * Возвращает признак возможности продажи товара на метраж.\n *\n * @param linearValues Товар для которого нужно проверить возможность продажи на метраж.\n */\n public productIsMeasurable(product: ScProduct): boolean {\n return this.linearValues.includes(product.unit);\n }\n\n /**\n * Возвращает кратность количества для товара.\n *\n * @param linearValues Товар для которого нужно вернуть кратность количества.\n */\n public productMultiplicity(product: ScProduct): number {\n return product && product.minCount && !this.linearValues.includes(product.unit) ? product.minCount : 1;\n }\n}\n","import { AbstractControl, ValidatorFn, ValidationErrors } from '@angular/forms';\n\n/**\n * Проверяет кратность значения.\n *\n * @param step Шаг кратности.\n */\nexport function stepValidator(step: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n // Умножение на 1000 нужно для уменьшения вероятности погрешности при выполнении вычислений над десятичными числами.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return control.value && (Number.parseFloat(control.value) * 1000) % (step * 1000) ? { error: `Число не кратно ${step}` } : null;\n };\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n Self,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, NgControl } from '@angular/forms';\nimport { stepValidator } from '../../validators/stepValidator';\nimport { TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent } from '@taiga-ui/kit';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { TuiLoaderComponent, TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\nimport { AbstractTuiNullableControl, AbstractTuiValueTransformer } from '@taiga-ui/cdk';\n\n@Component({\n selector: 'sc-input-quantity',\n templateUrl: './sc-input-quantity.component.html',\n styleUrls: ['./sc-input-quantity.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScInputQuantityComponent extends AbstractTuiNullableControl<number> implements OnInit {\n /**\n * Компонент поля ввода.\n */\n @ViewChild(TuiInputNumberComponent)\n private readonly numberInput: TuiInputNumberComponent;\n\n /**\n * Шаг увеличения количества. Отвечает за проверку кратности ввода.\n */\n @Input()\n public step: number = 1;\n\n /**\n * Единица измерения количества. Будет указана в постфиксе поля ввода.\n */\n @Input()\n public quantityUnit?: string;\n\n /**\n * Признак, что необходимо отобразить {@link TuiLoaderComponent} над компонентом.\n */\n @Input()\n public showLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить кнопку очистки поля ввода.\n */\n @Input()\n public showCross: boolean = true;\n\n /**\n * Формат внешнего вида компонента.\n */\n @Input()\n @HostBinding('attr.data-appearance')\n public appearance: 'primary' | 'secondary' = 'primary';\n\n /**\n * Признак, что компонент деактивирован.\n */\n @Input()\n @HostBinding('attr.data-disabled')\n public isDisabled: boolean = false;\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие нажатия на кнопку \"Очистить\".\n */\n @Output()\n public clickClearEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Инициализирует экземпляр класса {@link ScInputQuantityComponent}.\n *\n * @param ngControl Объект поля ввода для настройки валидации.\n * @param cdr Объект для работы с обнаружением изменений.\n * @param transformer Преобразователь значений элемента формы.\n */\n public constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n ngControl: NgControl | null,\n @Inject(ChangeDetectorRef)\n cdr: ChangeDetectorRef,\n @Optional()\n @Inject(TUI_NUMBER_VALUE_TRANSFORMER)\n transformer: AbstractTuiValueTransformer<number | null>\n ) {\n super(ngControl, cdr, transformer);\n }\n\n public get focused(): boolean {\n return !!this.numberInput?.focused;\n }\n\n public get formControl(): FormControl<any> | null {\n return this.control as FormControl<any> | null;\n }\n\n /** @inheritDoc */\n public override ngOnInit(): void {\n if (this.control) {\n this.control.setValidators(stepValidator(this.step));\n }\n }\n\n /**\n * Обработчик события нажатия стрелок клавиатуры.\n *\n * @param step Шаг изменения количества.\n */\n @HostListener('keydown.arrowDown', ['-step'])\n @HostListener('keydown.arrowUp', ['step'])\n public onArrow(step: number | null): void {\n if (!step) {\n return;\n }\n\n if (step > 0) {\n this.incident();\n } else {\n this.decrement();\n }\n }\n\n /**\n * Увеличивает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то увеличит до ближайшего кратного значения.\n */\n public incident(): void {\n this.numberInput.onArrow(this.step - ((this.numberInput.value || 0) % this.step));\n }\n\n /**\n * Уменьшает значение в поле ввода на 1 шаг. Если число в поле ввода не кратно шагу, то уменьшит до ближайшего кратного значения.\n */\n public decrement(): void {\n this.numberInput.onArrow(-((this.numberInput.value || 0) % this.step) || -this.step);\n }\n\n /**\n * Очищает поля ввода.\n */\n public clear(): void {\n this.control?.patchValue(null);\n this.clickClearEvent.emit();\n }\n}\n","<tui-loader *ngIf=\"formControl\" class=\"w-full\" [overlay]=\"true\" [showLoader]=\"showLoader\" [size]=\"size\">\n <div class=\"flex items-center text-center gap-1\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [disabled]=\"!numberInput.canDecrement\"\n [focusable]=\"false\"\n [size]=\"size\"\n (click.prevent)=\"decrement()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"scIconMinus\"></tui-svg>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async )?.message\"\n [tuiTextfieldPostfix]=\"quantityUnit || ''\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"incident()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"scIconPlus\"></tui-svg>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"clear()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"scIconCross\"></tui-svg>\n </button>\n </div>\n</tui-loader>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ScIWarehouseStockCount, ScProduct, ScWarehouse, ScWarehouseService } from '@snabcentr/client-core';\nimport { Observable, map, switchMap } from 'rxjs';\n\n/**\n * Компонент информации о наличии товара на складе.\n */\n@Component({\n selector: 'sc-price-warehouse-stock',\n templateUrl: './sc-price-warehouse-stock.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['sc-price-warehouse-stock.component.scss'],\n})\nexport class ScPriceWarehouseStockComponent {\n /**\n * Строка классов для свойств статусов.\n */\n @Input() public classList: string;\n\n /**\n * Информация о товаре/услуге.\n */\n @Input() public product: ScProduct;\n\n /**\n * Признак, что необходимо отобразить подсказку по складам.\n */\n @Input() public withStockHint: boolean = true;\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public warehouseSelect$: Observable<ScWarehouse | null> = this.warehouseService.getWarehouseSelectChange$();\n\n /**\n * {@link Observable} изменения списка складов.\n */\n public stockByWarehouses$?: Observable<[ScWarehouse | undefined, ScIWarehouseStockCount][] | undefined> = this.warehouseSelect$.pipe(\n switchMap((warehouseSelect) =>\n this.warehouseService.getWarehouses$().pipe(\n map((warehouses) => this.product.warehouseStockCount?.map((stock) => [warehouses.find((warehouse) => warehouse.id === stock.id), stock])),\n map(\n (stockByWarehouses) =>\n stockByWarehouses?.sort((stock) => (stock[0]?.id === warehouseSelect?.id ? -1 : 1)) as [ScWarehouse | undefined, ScIWarehouseStockCount][] | undefined\n )\n )\n )\n );\n\n /**\n * Инициализирует экземпляр класса {@link ScPriceWarehouseStockComponent}.\n *\n * @param warehouseService Сервис для работы со складами.\n */\n public constructor(private readonly warehouseService: ScWarehouseService) {}\n}\n","<ng-container *ngIf=\"product\">\n <ng-container>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex items-center gap-1\">\n <span *ngIf=\"product.getNotStockMessage(warehouseSelect) as message\" class=\"text-xs min-w-2/5 text-tui-error-fill\" [ngClass]=\"classList\"> {{ message }} </span>\n <span *ngIf=\"product.isWarehouseStockExist(warehouseSelect.id)\" class=\"text-xs min-w-2/5 text-tui-success-fill\" [ngClass]=\"classList\">\n В наличии<ng-container *ngIf=\"product.getWarehouseStockCount(warehouseSelect.id) as count\"\n >:\n <span class=\"whitespace-nowrap\">{{ count }} {{ product.quantityUnit }}</span>\n </ng-container>\n </span>\n <span *ngIf=\"product.onOrder\" class=\"text-xs min-w-2/5 text-sc-yellow\" [ngClass]=\"classList\">Под заказ</span>\n\n <tui-svg\n *ngIf=\"withStockHint && (stockByWarehouses$ | async)?.length\"\n src=\"tuiIconInfoLarge\"\n [tuiHint]=\"stockHint\"\n [tuiHintShowDelay]=\"100\"\n tuiHintDirection=\"top\"\n class=\"!text-xs !h-3\"\n ></tui-svg>\n </div>\n </ng-container>\n</ng-container>\n\n<ng-template #stockHint>\n <table *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"text-xs table-auto\" [ngClass]=\"classList\">\n <tbody>\n <tr *ngFor=\"let item of stockByWarehouses$ | async\" class=\"border-b\" [class.text-tui-primary]=\"warehouseSelect === item[0]\">\n <ng-container>\n <td class=\"px-1\">{{ item[0]?.name }}:</td>\n <td class=\"px-1\">{{ item[1].count ? item[1].count + ' ' + product.quantityUnit : 'В наличии' }}</td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct } from '@snabcentr/client-core';\nimport { Observable, skip } from 'rxjs';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки элемента корзины.\n */\n@Component({\n selector: 'sc-cart-item-mobile',\n templateUrl: './sc-cart-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCartItemMobileComponent implements OnInit {\n /**\n * Элемент корзины.\n */\n private _cartItem?: ScCartItem;\n\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl(0);\n\n /**\n * Элемент корзины.\n */\n @Input()\n public set cartItem(data: ScCartItem | undefined) {\n this._cartItem = data;\n if (data) {\n this.quantityControl.patchValue(data.quantity);\n }\n }\n\n /**\n * Элемент корзины.\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges.pipe(skip(1));\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickDeleteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"Удалить из корзины\".\n */\n @Output()\n public clickSettingsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Продукт элемента корзины.\n */\n public get product(): ScProduct | undefined {\n return this.cartItem?.product;\n }\n\n /**\n * Инициирует экземпляр класса {@link ScCartItemMobileComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n this.quantityValueChanges = this.quantityControl.valueChanges;\n }\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef || '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImage(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<div class=\"ml-2 mt-2 relative p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"cartItem && product; else skeleton\">\n <button tuiIconButton size=\"m\" icon=\"scIconVerticalThreeDots\" appearance=\"float\" tuiMode=\"onLight\" class=\"!absolute right-0 top-0\"></button>\n <button\n tuiIconButton\n size=\"m\"\n icon=\"scIconBasket\"\n appearance=\"secondary\"\n tuiMode=\"onLight\"\n (click)=\"clickDeleteEvent.emit()\"\n class=\"shadow-sc-2 !absolute -left-2 -top-2\"\n ></button>\n <div class=\"flex gap-2\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 gap-y-0.5\">\n <div class=\"w-[13rem]\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs\">\n <p>Артикул: {{ product.code }}</p>\n <p *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n <a tuiLink *ngIf=\"cartItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n <ng-template #specificationPreview let-preview>\n <tui-preview [rotatable]=\"false\" [zoomable]=\"false\">\n <img *polymorpheusOutlet=\"cartItem.specificationImgUrl as src\" alt=\"preview\" alt=\"\" [src]=\"cartItem.specificationImgUrl\" />\n <button icon=\"tuiIconClose\" title=\"Close\" tuiIconButton tuiPreviewAction type=\"button\" (click)=\"preview.complete()\"></button>\n </tui-preview>\n </ng-template>\n </div>\n </div>\n <div class=\"flex flex-col self-center w-[10rem] gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n </div>\n </div>\n\n <div class=\"flex gap-2 items-center w-44 text-xs text-tui-text-02\">\n <button tuiIconButton (click)=\"clickSettingsEvent.emit()\" size=\"m\" icon=\"scIconSettings\" appearance=\"secondary\" tuiMode=\"onLight\"></button>\n <div>\n <ng-container *ngIf=\"unitsHelper.productIsMeasurable(product); else notMeasurable\">\n <p>Длина: {{ cartItem.length }} {{ product.unit }}</p>\n </ng-container>\n <ng-template #notMeasurable>\n <p *ngIf=\"cartItem.length && !unitsHelper.productIsMeasurable(product)\">Длина: {{ cartItem.length }} м.</p>\n <p *ngIf=\"cartItem.width\">Ширина: {{ cartItem.width }} м.</p>\n <p *ngIf=\"cartItem.height\">Высота: {{ cartItem.height }} м.</p>\n </ng-template>\n </div>\n </div>\n <div class=\"flex items-center grow justify-end\">\n <sc-input-quantity\n class=\"w-28\"\n *ngIf=\"quantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [showCross]=\"false\"\n size=\"s\"\n [step]=\"product.minCount || 1\"\n ></sc-input-quantity>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\n\n// TODO: TASK[#6771]: Реализовать кнопку избранных товаров.\n/**\n * Компонент кнопки избранных товаров и категорий.\n */\n@Component({\n selector: 'sc-favorite-btn',\n templateUrl: './sc-favorite-btn.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScFavoriteBtnComponent {\n /**\n * Событие нажатия на кнопку.\n */\n @Output()\n public clickEvent: EventEmitter<void> = new EventEmitter<void>();\n}\n","<button tuiIconButton (click)=\"clickEvent.emit()\" appearance=\"flat\" size=\"s\">\n <tui-svg class=\"text-tui-primary\" src=\"tuiIconBookmarkLarge\"></tui-svg>\n</button>\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, HostListener, Inject, Input, Output, Renderer2, ViewChild } from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCategory, ScIUrls } from '@snabcentr/client-core';\nimport { TuiSizeS } from '@taiga-ui/core';\n\n/**\n * Карточка категории.\n */\n@Component({\n selector: 'sc-category-card',\n templateUrl: './sc-category-card.component.html',\n styleUrls: ['./sc-category-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScCategoryCardComponent {\n /**\n * Информация о категории.\n */\n @Input()\n public category?: ScCategory;\n\n /**\n * Ссылка на {@link HTMLElement} блока названия.\n */\n @ViewChild('name')\n private name: ElementRef<HTMLElement>;\n\n /**\n * Размер карточки категории.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n /**\n * Признак, что карточка является скелетоном.\n */\n @Input()\n public isSkeleton: boolean = false;\n\n /**\n * Признак необходимости отобразить/скрыть кнопку избранной категории.\n */\n @Input()\n public showFavoriteBtn: boolean = true;\n\n /**\n * Признак что категория имеет поведение наведения и скрытия названия.\n */\n @Input()\n public isHovered: boolean = false;\n\n /**\n * Событие нажатия на карточку категории.\n */\n @Output()\n public clickOnCardEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Событие нажатия на кнопку избранной категории.\n */\n @Output()\n public clickOnFavoriteEvent: EventEmitter<ScCategory> = new EventEmitter<ScCategory>();\n\n /**\n * Инициализирует экземпляр класса {@link CategoryCardComponent}.\n *\n * @param urls Список ссылок на разделы backend'a.\n * @param renderer Экземпляр базового класса для реализации пользовательского рендеринга.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(@Inject(SC_URLS) private readonly urls: ScIUrls, private renderer: Renderer2, @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string) {}\n\n /**\n * Возвращает путь к изображению категории. Если путь отсутствует, то вернёт изображение по-умолчанию (\"product_not_found\").\n *\n * @param category Информация о категории.\n */\n public getCategoryImgURL(category: ScCategory): string {\n return category.properties?.image ? this.urls.imgServerUrl + '/' + category.properties?.image : this.pathImageNotFound;\n }\n\n /**\n * Обработчик события mousemove.\n */\n @HostListener('mousemove')\n private moveEnterHandler(): void {\n if (this.isHovered) {\n this.name.nativeElement.style.maxHeight = `${this.name.nativeElement.scrollHeight / 16}rem`;\n }\n }\n\n /**\n * Обработчик события mouseleave.\n */\n @HostListener('mouseleave')\n private mouseLeaveHandler(): void {\n if (this.isHovered) {\n this.renderer.setStyle(this.name.nativeElement, 'maxHeight', null);\n }\n }\n}\n","<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn *ngIf=\"category && !isSkeleton && showFavoriteBtn\" (clickEvent)=\"clickOnFavoriteEvent.emit()\" class=\"absolute left-1 top-1\"></sc-favorite-btn>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Inject, Input, Output } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScAuthService, ScCartItem, ScIUrls, ScProduct, ScWarehouse, ScWarehouseService } from '@snabcentr/client-core';\nimport { TuiSizeS } from '@taiga-ui/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Компонент карточки товара.\n */\n@Component({\n selector: 'sc-price-card',\n templateUrl: './sc-price-card.component.html',\n styleUrls: ['./sc-price-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceCardComponent {\n /**\n * Признак, что необходимо отобразить лоадер для поля ввода количества товара.\n */\n public quantityShowLoader: boolean = false;\n\n /**\n * Признак, что необходимо отобразить поле ввода количества товара.\n */\n @Input()\n public showQuantityControl: boolean = false;\n\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n public get cartItem(): ScCartItem | undefined {\n return this._cartItem;\n }\n\n /**\n * Позиция товара в корзине\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public set cartItem(value: ScCartItem | undefined) {\n this._cartItem = value;\n\n this.quantityControl.patchValue(this._cartItem?.quantity ?? null, { emitEvent: false });\n this.quantityShowLoader = false;\n }\n\n /**\n * Объект товара.\n *\n * TODO: Сделать товар наблюдаемой переменной после реализации TASK:[#7144].\n */\n @Input()\n public product?: ScProduct;\n\n /**\n * Событие нажатия на кнопку \"В избранное\".\n */\n @Output()\n public clickFavoriteEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на кнопку \"В корзину\".\n */\n @Output()\n public clickAddToCartEvent: EventEmitter<ScProduct> = new EventEmitter<ScProduct>();\n\n /**\n * Событие нажатия на кнопку очистки количества товара.\n */\n @Output()\n public clickClearEvent: EventEmitter<ScCartItem> = new EventEmitter<ScCartItem>();\n\n /**\n * Событие нажатия на карточку товара.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * {@link Observable} изменения выбранного склада.\n */\n public warehouseSelect$: Observable<ScWarehouse | null> = this.warehouseService.getWarehouseSelectChange$();\n\n /**\n * {@link FormControl} поля ввода количества товара в корзине.\n */\n public quantityControl: FormControl<number | null> = new FormControl<number | null>(null);\n\n /**\n * {@link Observable} изменения количества товара в корзине.\n */\n @Output()\n public quantityValueChanges: Observable<number | null> = this.quantityControl.valueChanges;\n\n /**\n * {@link Observable} изменения статуса авторизации.\n */\n public readonly authStatus$: Observable<boolean> = this.authService.getAuthChange();\n\n /**\n * Размер компонента.\n */\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n /**\n * Позиция товара в корзине.\n *\n * TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].\n */\n private _cartItem?: ScCartItem | undefined;\n\n /**\n * Инициирует экземпляр класса {@link ScPriceCardComponent}.\n *\n * @param authService Сервис аутентификации пользователей.\n * @param warehouseService Сервис для работы со складами.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n private readonly authService: ScAuthService,\n private readonly warehouseService: ScWarehouseService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /**\n * Признак, что нужно показать скелетон.\n */\n public get skeletonVisible(): boolean {\n return !this.product;\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImage(this.urls.imgServerUrl) ?? this.pathImageNotFound;\n }\n}\n","<div *ngIf=\"product; else skeleton\" class=\"card-wrapper flex flex-col w-40 h-64 bg-tui-base-03 rounded-xl shadow-sc-2 overflow-hidden text-xs\">\n <!-- Изображение товара -->\n <div class=\"flex flex-col grow overflow-hidden\">\n <div class=\"flex justify-center items-center grow overflow-hidden relative\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-12]=\"!product.images?.length\" class=\"cursor-pointer\" />\n <tui-svg *ngIf=\"cartItem\" src=\"tuiIconCheck\" class=\"!h-5 !w-5 bg-tui-primary text-white rounded-md absolute right-2 top-2\"></tui-svg>\n <sc-favorite-btn *ngIf=\"authStatus$ | async\" [class.!block]=\"product.isFavorite\" class=\"top-1 left-1 absolute hidden group-hover:block\"></sc-favorite-btn>\n </div>\n </div>\n\n <!-- Краткая информация о товаре -->\n <div class=\"bg-white relative shrink-0\">\n <div class=\"wrapper-info flex flex-col content-between flex-auto justify-between\">\n <a class=\"name !transition-all !duration-500\" tuiLink iconAlign=\"left\" (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"info text-tui-text-02 overflow-hidden duration-500\">\n <p *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n <div class=\"sub-info\">\n <p>Артикул: {{ product.code }}</p>\n <p *ngIf=\"(authStatus$ | async) && product.costDate\" class=\"text-tui-link hover:text-tui-link-hover cursor-pointer\">Дата: {{ product.costDate }}</p>\n </div>\n </div>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex flex-col\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\" class=\"cost font-bold\">{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs font-bold text-tui-text-02 hidden group-hover:block\">{{ product.costString }}</span>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n </div>\n <div class=\"button-wrapper overflow-hidden duration-500\">\n <button *ngIf=\"!showQuantityControl\" tuiButton (click)=\"clickAddToCartEvent.emit(product)\" [showLoader]=\"quantityShowLoader\" [size]=\"size\" class=\"w-full\">\n <span class=\"font-bold\"> <tui-svg src=\"scIconCart\"></tui-svg> В корзину</span>\n </button>\n <sc-input-quantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [size]=\"size === 'm' ? 'l' : 'm'\"\n [step]=\"product.minCount || 1\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n ></sc-input-quantity>\n </div>\n <div *ngIf=\"product.isPreviouslyOrdered\" matTooltip=\"Товар из истории покупок\" class=\"rotate-45 z-10 absolute bg-tui-error-fill -bottom-4 -right-4 h-8 w-8\"></div>\n </div>\n</div>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col card-wrapper bg-white rounded-xl overflow-hidden shadow-sc-1\">\n <!-- Изображение товара -->\n <div class=\"w-full h-3/5 rounded-t bg-tui-base-02\"></div>\n <!-- Краткая информация о товаре -->\n <div class=\"flex flex-col grow gap-2.5 bg-white rounded-b p-5\">\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n","import { EChartsOption } from 'echarts';\nimport { formatDate } from '@angular/common';\nimport { ScIChartDataItem } from './sc-i-chart-data-item';\nimport { tuiFormatNumber } from '@taiga-ui/core';\n/**\n * Настройки отрисовки графика.\n *\n * @see [Документация](https://echarts.apache.org/en/option.html#title)\n */\nexport const scChartOption: EChartsOption = {\n grid: {\n top: 12,\n left: 64,\n right: 0,\n bottom: 24,\n },\n tooltip: {\n trigger: 'axis',\n formatter: (params) => {\n const data: ScIChartDataItem = Array.isArray(params) ? (params[0].data as ScIChartDataItem) : (params.data as ScIChartDataItem);\n const date = new Date(data.value[0]);\n const nextDate = new Date(data.value[2]);\n\n return `\n <div class=\"text-center text-black\">\n <span class=\"font-bold\">${data.value[1]} ₽</span>\n </br>\n <span class=\"text-xs\">${formatDate(date, 'dd.MM', 'en')} - ${formatDate(nextDate, 'dd.MM', 'en')}</span>\n </div>\n `;\n },\n axisPointer: {\n animation: false,\n type: 'cross',\n },\n textStyle: {\n fontFamily: 'Roboto, \"Helvetica Neue\", sans-serif',\n },\n },\n xAxis: {\n type: 'time',\n splitLine: {\n show: false,\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n hideOverlap: true,\n },\n boundaryGap: ['3%', '3%'],\n },\n yAxis: {\n splitLine: {\n show: false,\n },\n axisLine: {\n show: false,\n },\n axisTick: {\n show: false,\n },\n axisLabel: {\n formatter: (value: number) => tuiFormatNumber(value),\n },\n type: 'value',\n boundaryGap: [0, '100%'],\n },\n series: {\n name: 'История цены',\n type: 'line',\n showSymbol: false,\n symbolSize: 12,\n itemStyle: {\n color: '#ffcc40',\n },\n },\n};\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\nimport { ScPriceHistory } from '@snabcentr/client-core';\nimport { ECharts, EChartsOption } from 'echarts';\nimport { scChartOption } from './sc-chart-option';\nimport { ScIChartDataItem } from './sc-i-chart-data-item';\n\n/**\n * График истории цен товара или услуги.\n * TODO: TASK[#7482] Перепроверить возможность использования TuiLineDaysChart.\n */\n@Component({\n selector: 'sc-price-history',\n templateUrl: './sc-price-history.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScPriceHistoryComponent implements OnInit {\n /**\n * История цен на товар/услугу.\n */\n @Input() public history: ScPriceHistory;\n\n /**\n * Максимальная цена товара.\n */\n public maxPrice?: number;\n\n /**\n * Минимальная цена товара.\n */\n public minPrice?: number;\n\n /**\n * Настройки графика.\n */\n public initOption: {\n devicePixelRatio?: number;\n renderer?: string;\n width?: number | string;\n height?: number | string;\n locale?: string;\n } = { locale: 'RU' };\n\n /**\n * Параметры отрисовки графика истории цены.\n */\n public chartOption: EChartsOption = scChartOption;\n\n /**\n * Данные об истории цены на товар или услугу.\n */\n private data: ScIChartDataItem[] = [];\n\n /**\n * Экземпляр {@link ECharts} в шаблоне.\n */\n private eChartsInstance: ECharts;\n\n /**\n * Инициализирует экземпляр класса {@link PriceHistoryChartComponent}.\n *\n * @param cdr Объект для работы с обнаружением изменений.\n */\n public constructor(private readonly cdr: ChangeDetectorRef) {}\n\n /** @inheritDoc */\n public ngOnInit(): void {\n if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {\n this.chartOption.series.data = [];\n }\n\n Object.keys(this.history)\n .map((key) => {\n // ? Можно избежать переведя даты в api в формат ECMAScript® 2023: https://tc39.es/ecma262/#sec-date-time-string-format\n const dataString = key.split('.').reverse(),\n data = new Date(+dataString[0], +dataString[1] - 1, +dataString[2]);\n\n return { data: data, cost: this.history[String(key)].cost };\n })\n .sort((a, b) => +a.data - +b.data)\n .forEach((item, index, array) => {\n let nextDate: Date;\n\n if (array[index + 1]?.data) {\n nextDate = new Date(array[index + 1]?.data);\n nextDate.setDate(nextDate.getDate() - 1);\n } else {\n nextDate = new Date();\n }\n\n this.pushDataItem(item.cost, item.data, nextDate);\n });\n\n if (this.eChartsInstance) {\n this.setChartData();\n }\n }\n\n /**\n * Перехватчик жизненного цикла {@link ECharts}, который вызывается при его инициализации.\n *\n * @param eChartsInstance Экземпляр {@link ECharts}.\n */\n public onChartInit(eChartsInstance: ECharts) {\n this.eChartsInstance = eChartsInstance;\n\n if (this.data.length) {\n this.setChartData();\n }\n }\n\n /**\n * Устанавливает новые данные {@link PriceHistoryChartComponent.eChartsInstance}.\n */\n private setChartData(): void {\n if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {\n this.maxPrice = Math.max(...this.data.map((item) => item.value[1]));\n this.minPrice = Math.min(...this.data.map((item) => item.value[1]));\n this.chartOption.series.data = this.data;\n this.eChartsInstance.clear();\n this.eChartsInstance.setOption(this.chartOption, true, true);\n this.cdr.markForCheck();\n }\n }\n\n /**\n * Добавляет значение цены товара в массив истории цен.\n *\n * @param value Цена товара или услуги.\n * @param date Дата установки цены.\n * @param nextDate Следующая дата установки цены.\n */\n private pushDataItem(value: number, date: Date, nextDate: Date): void {\n this.data.push({\n name: date.toString(),\n value: [date, value, nextDate],\n });\n }\n}\n","<div class=\"flex flex-col items-center\">\n <div *ngIf=\"maxPrice && minPrice\" class=\"w-full font-bold text-end text-lg mb-1\">от {{ minPrice.toLocaleString() }} ₽ до {{ maxPrice.toLocaleString() }} ₽</div>\n <div class=\"relative w-full h-56\">\n <div class=\"h-48 bg-tui-base-02 mt-2 absolute rounded right-0 left-16\"></div>\n <div echarts [initOpts]=\"initOption\" (chartInit)=\"onChartInit($event)\" [options]=\"chartOption\" class=\"w-full !h-full touch-none\"></div>\n </div>\n</div>\n","/**\n * Language: Russian.\n */\nexport default {\n time: {\n month: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],\n monthAbbr: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],\n dayOfWeek: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],\n dayOfWeekAbbr: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],\n },\n legend: {\n selector: {\n all: 'Всё',\n inverse: 'Обратить',\n },\n },\n toolbox: {\n brush: {\n title: {\n rect: 'Выделить область',\n polygon: 'Инструмент «Лассо»',\n lineX: 'Горизонтальное выделение',\n lineY: 'Вертикальное выделение',\n keep: 'Оставить выбранное',\n clear: 'Очистить выбранное',\n },\n },\n dataView: {\n title: 'Данные',\n lang: ['Данные', 'Закрыть', 'Обновить'],\n },\n dataZoom: {\n title: {\n zoom: 'Увеличить',\n back: 'Сбросить увеличение',\n },\n },\n magicType: {\n title: {\n line: 'Переключиться на линейный график',\n bar: 'Переключиться на столбчатую диаграмму',\n stack: 'Стопка',\n tiled: 'Плитка',\n },\n },\n restore: {\n title: 'Восстановить',\n },\n saveAsImage: {\n title: 'Сохранить картинку',\n lang: ['Правый клик, чтобы сохранить картинку'],\n },\n },\n series: {\n typeNames: {\n pie: 'Круговая диаграмма',\n bar: 'Столбчатая диаграмма',\n line: 'Линейный график',\n scatter: 'Точечная диаграмма',\n effectScatter: 'Точечная диаграмма с волнами',\n radar: 'Лепестковая диаграмма',\n tree: 'Дерево',\n treemap: 'Плоское дерево',\n boxplot: 'Ящик с усами',\n candlestick: 'Свечной график',\n k: 'График К-линий',\n heatmap: 'Тепловая карта',\n map: 'Карта',\n parallel: 'Диаграмма параллельных координат',\n lines: 'Линейный граф',\n graph: 'Граф отношений',\n sankey: 'Диаграмма Санкей',\n funnel: 'Воронкообразная диаграмма',\n gauge: 'Шкала',\n pictorialBar: 'Столбец-картинка',\n themeRiver: 'Тематическая река',\n sunburst: 'Солнечные лучи',\n },\n },\n aria: {\n general: {\n withTitle: 'Это график, показывающий \"{title}\"',\n withoutTitle: 'Это график',\n },\n series: {\n single: {\n prefix: '',\n withName: ' с типом {seriesType} и именем {seriesName}.',\n withoutName: ' с типом {seriesType}.',\n },\n multiple: {\n prefix: '. Он состоит из {seriesCount} серий.',\n withName: ' Серия {seriesId} имеет тип {seriesType} и показывает {seriesName}.',\n withoutName: ' Серия {seriesId} имеет тип {seriesType}.',\n separator: {\n middle: '',\n end: '',\n },\n },\n },\n data: {\n allData: 'Данные таковы: ',\n partialData: 'Первые {displayCnt} элементов: ',\n withName: 'значение для {name} — {value}',\n withoutName: '{value}',\n separator: {\n middle: ', ',\n end: '. ',\n },\n },\n },\n};\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScCategoryCardComponent } from './category-card/sc-category-card.component';\nimport { RouterModule } from '@angular/router';\nimport { TuiButtonModule, TuiHintModule, TuiLabelModule, TuiLinkModule, TuiLoaderModule, TuiModeModule, TuiSvgModule, TuiTextfieldControllerModule } from '@taiga-ui/core';\nimport { ScFavoriteBtnComponent } from './sc-favorite-btn/sc-favorite-btn.component';\nimport { TuiElasticContainerModule, TuiFieldErrorPipeModule, TuiInputNumberModule } from '@taiga-ui/kit';\nimport { ScInputQuantityComponent } from './input-quantity/sc-input-quantity.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ScPriceCardComponent } from './price-card/sc-price-card.component';\nimport { ScPriceWarehouseStockComponent } from './price-warehouse-stock/sc-price-warehouse-stock.component';\nimport { ScPriceHistoryComponent } from './price-history/sc-price-history.component';\nimport * as echarts from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport { TitleComponent, TooltipComponent, GridComponent } from 'echarts/components';\nimport { SVGRenderer } from 'echarts/renderers';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport scLangRU from './price-history/sc-lang-RU';\n\necharts.registerLocale('RU', scLangRU);\necharts.use([TitleComponent, TooltipComponent, GridComponent, LineChart, SVGRenderer]);\n\n/**\n * Модуль каталога.\n */\n@NgModule({\n declarations: [ScCategoryCardComponent, ScFavoriteBtnComponent, ScInputQuantityComponent, ScPriceCardComponent, ScPriceWarehouseStockComponent, ScPriceHistoryComponent],\n exports: [ScCategoryCardComponent, ScFavoriteBtnComponent, ScInputQuantityComponent, ScPriceCardComponent, ScPriceWarehouseStockComponent, ScPriceHistoryComponent],\n imports: [\n CommonModule,\n RouterModule,\n TuiButtonModule,\n TuiSvgModule,\n TuiInputNumberModule,\n TuiLabelModule,\n TuiTextfieldControllerModule,\n FormsModule,\n ReactiveFormsModule,\n TuiHintModule,\n TuiModeModule,\n TuiFieldErrorPipeModule,\n TuiLoaderModule,\n TuiLinkModule,\n TuiElasticContainerModule,\n NgxEchartsModule.forRoot({ echarts }),\n ],\n})\nexport class ScCatalogModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScCartItemMobileComponent } from './cart-item-mobile/sc-cart-item-mobile.component';\nimport { TuiButtonModule, TuiHintModule, TuiLinkModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TuiPreviewModule } from '@taiga-ui/addon-preview';\nimport { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';\n\n/**\n * Модуль корзины.\n */\n@NgModule({\n declarations: [ScCartItemMobileComponent],\n exports: [ScCartItemMobileComponent],\n imports: [\n CommonModule,\n TuiLinkModule,\n ScCatalogModule,\n TuiButtonModule,\n TuiModeModule,\n TuiSvgModule,\n TuiHintModule,\n FormsModule,\n ReactiveFormsModule,\n TuiPreviewModule,\n PolymorpheusModule,\n ],\n})\nexport class ScCartModule {}\n","import { Injectable } from '@angular/core';\nimport { ScDocumentInfo } from '@snabcentr/client-core/files/classes/sc-document-info';\nimport { ScIconTypesEnum } from '@snabcentr/client-core';\n\n/**\n * Сервис работающий с значками элементов дерева.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TreeIconService {\n /**\n * Назначает значок элементу дерева в зависимости от типа файла.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает название значка в виде строки.\n */\n public getIconName(info: ScDocumentInfo): string {\n switch (info.getIcon()) {\n case ScIconTypesEnum.iconImage:\n return 'scIconImage';\n case ScIconTypesEnum.iconPdfFile:\n return 'scIconPdfFile';\n case ScIconTypesEnum.iconWordFile:\n return 'scIconWordFile';\n case ScIconTypesEnum.iconExcelFile:\n return 'scIconExcelFile';\n case ScIconTypesEnum.iconFolder:\n return 'scIconFolder';\n default:\n return 'scIconFile';\n }\n }\n\n /**\n * Проверяет на признак наличия дочерних элементов.\n *\n * @param info Объект пришедших данных о файле.\n * @returns Возвращает true при наличии дочерних элементов и false при их отсутсвии.\n */\n public hasChildren(info: ScDocumentInfo): boolean {\n return info.type === 'dir';\n }\n}\n","import { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { Injectable } from '@angular/core';\nimport { TuiTreeLoader } from '@taiga-ui/kit';\nimport { Observable, map } from 'rxjs';\nimport { TreeIconService } from './tree-icon.service';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Сервис для асинхронного раскрытия вложенности.\n */\n@Injectable()\nexport class TreeLoaderService implements TuiTreeLoader<TreeNode> {\n /**\n * Инициализирует экземпляр класса {@link TreeLoaderService}\n *\n * @param filesService Сервис для получения файлов директории.\n * @param iconService Сервис для определения и назначения значка элементу дерева.\n */\n public constructor(private readonly filesService: ScFilesService, private readonly iconService: TreeIconService) {}\n\n /**\n * Загружает дочерние элементы дерева.\n *\n * @param item Элемент дерева.\n * @returns Массив дочерних элементов.\n */\n public loadChildren(item: TreeNode): Observable<TreeNode[]> {\n return item.id ? this.initData(item.id) : this.initData(undefined);\n }\n\n /**\n * Проверяет указанный элемент дерева на наличие дочерних элементов и возвращает массив дочерних элементов, если они есть, либо пустой массив.\n *\n * @param node Элемент дерева.\n * @returns Возвращает массив типа TreeNode[].\n */\n public hasChildren(node: TreeNode): boolean {\n return node.hasChildren && !!node.id;\n }\n\n /**\n * Загружает и заполняет массив дочерних элементов.\n *\n * @param id Идентификатор директории, чьи дочернии элементы загружаются.\n * @returns Возвращает массив дочерних элементов.\n */\n private initData(id: number | undefined): Observable<TreeNode[]> {\n return this.filesService.getFiles(id).pipe(\n map((data: ScDocumentInfo[]) =>\n data.map((item) => ({\n text: item.name,\n icon: this.iconService.getIconName(item),\n hasChildren: this.iconService.hasChildren(item),\n createdAt: item.createdAt,\n id: item.id,\n link: item.link,\n }))\n )\n );\n }\n}\n","import { Directive } from '@angular/core';\nimport { TuiHandler } from '@taiga-ui/cdk';\nimport { TuiTreeService } from '@taiga-ui/kit';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Директива отвечающая за обработку действий над элементами дерева.\n */\n@Directive({\n selector: '[scTree]',\n exportAs: 'scTree',\n providers: [TuiTreeService],\n})\nexport class TreeDirective {\n /**\n * Карта данных дерева.\n */\n public map = new Map<TreeNode, boolean>();\n\n /**\n * Инициализирует экземпляр класса {@link TreeDirective}.\n *\n * @param service Сервис для работы с деревом.\n */\n public constructor(public readonly service: TuiTreeService<TreeNode>) {}\n\n /**\n * Проверяет указанный элемент дерева на наличие дочерних элементов и возвращает массив дочерних элементов, если они есть, либо пустой массив.\n *\n * @param node Элемент дерева.\n * @returns Возвращает массив типа TreeNode[].\n */\n public childrenHandler: TuiHandler<TreeNode, readonly TreeNode[]> = (node) => (node.hasChildren ? this.service.getChildren(node) : []);\n\n /**\n * Обрабатывает нажатие на указанный элемент дерева.\n *\n * @param node Элемент дерева.\n */\n public onToggled(node: TreeNode): void {\n this.service.loadChildren(node);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { TuiTreeItemContentComponent } from '@taiga-ui/kit';\n\n/**\n * Компонент для удаления стандартного значка элемента дерева.\n */\n@Component({\n selector: 'sc-file-tree-item',\n templateUrl: './file-tree-item.component.html',\n styleUrls: ['./file-tree-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '(click)': `onClick()`,\n },\n})\nexport class FileTreeItemComponent extends TuiTreeItemContentComponent {}\n","<ng-container [ngTemplateOutlet]=\"context.template\"></ng-container>\n","/* eslint-disable @angular-eslint/no-input-rename */\nimport { Directive, Input, forwardRef } from '@angular/core';\nimport { TUI_TREE_CONTENT, TUI_TREE_START } from '@taiga-ui/kit';\nimport { PolymorpheusComponent } from '@tinkoff/ng-polymorpheus';\nimport { FileTreeItemComponent } from '../file-tree-item/file-tree-item.component';\nimport { TreeNode } from '../interfaces/tree-node';\n\n/**\n * Директива отвечающая за корневые элементы дерева.\n */\n@Directive({\n selector: '[scTopNodeText]',\n providers: [\n {\n provide: TUI_TREE_START,\n useExisting: forwardRef(() => TreeTopDirective),\n },\n {\n provide: TUI_TREE_CONTENT,\n useValue: new PolymorpheusComponent(FileTreeItemComponent),\n },\n ],\n})\nexport class TreeTopDirective implements TreeNode {\n /**\n * Отображаемое имя корневого элемента дерева.\n */\n @Input('scTopNodeText')\n public text = '';\n\n /**\n * Значок корневого элемента дерева.\n */\n @Input('scTopNodeIcon')\n public icon: string;\n\n /**\n * Ссылка корневого элемента дерева.\n */\n @Input('scTopNodeLink')\n public link?: string;\n\n /**\n * Признак наличия дочерних элементов.\n */\n @Input('scTopNodeChilds')\n public hasChildren: boolean;\n\n /**\n * Идентификатор корневого элемента дерева.\n */\n @Input('scTopNodeParent')\n public id?: number;\n\n /**\n * Дата создания корневого элемента дерева.\n */\n @Input('scTopNodeDate')\n public createdAt?: string;\n}\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { TUI_TREE_LOADING, TUI_TREE_LOADER } from '@taiga-ui/kit';\nimport { ScDocumentInfo, ScFilesService } from '@snabcentr/client-core';\nimport { Observable, map } from 'rxjs';\nimport { TreeIconService } from './services/tree-icon.service';\nimport { TreeLoaderService } from './services/tree-loader.service';\nimport { TreeNode } from './interfaces/tree-node';\n\n/**\n * Компонент файлов и документов.\n */\n@Component({\n selector: 'sc-files-and-documents',\n templateUrl: './files-and-documents.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_TREE_LOADER,\n useClass: TreeLoaderService,\n },\n ],\n})\nexport class FilesAndDocumentsComponent {\n /**\n * Данные визуализации и их начальное получение.\n */\n public data$: Observable<TreeNode[]> = this.filesService.getFiles().pipe(\n map((data: ScDocumentInfo[]) =>\n data.map((item) => ({\n text: item.name,\n icon: this.iconService.getIconName(item),\n hasChildren: this.iconService.hasChildren(item),\n createdAt: item.createdAt,\n id: item.id,\n link: item.link,\n }))\n )\n );\n\n /**\n * Инициализирует экземпляр класса {@link FilesAndDocumentsComponent}.\n *\n * @param loading Объект отвечающий за значок загрузки, в момент раскрытия элемента дерева.\n * @param iconService Сервис для определения и назначения значка элементу дерева.\n * @param filesService Сервис для загрузки файлов.\n */\n public constructor(@Inject(TUI_TREE_LOADING) public readonly loading: unknown, public readonly iconService: TreeIconService, private readonly filesService: ScFilesService) {}\n}\n","<ng-container *ngIf=\"data$ | async as data; else skeleton\">\n <tui-tree\n *ngFor=\"let node of data\"\n #tree=\"scTree\"\n scTree\n [scTopNodeText]=\"node.text\"\n [scTopNodeIcon]=\"node.icon\"\n [scTopNodeLink]=\"node.link\"\n [scTopNodeChilds]=\"node.hasChildren\"\n [scTopNodeParent]=\"node.id\"\n [scTopNodeDate]=\"node.createdAt\"\n [childrenHandler]=\"tree.childrenHandler\"\n [content]=\"content\"\n [map]=\"tree.map\"\n [tuiTreeController]=\"false\"\n [value]=\"tree.service.data$ | async\"\n (toggled)=\"tree.onToggled($event)\"\n class=\"overflow-hidden\"\n ></tui-tree>\n</ng-container>\n\n<ng-template #content let-item>\n <tui-loader *ngIf=\"item === loading; else text\" class=\"w-8 my-4\"></tui-loader>\n <ng-template #text>\n <tui-svg [src]=\"item.icon\" class=\"tui-space_right-2\"></tui-svg>\n <a tuiLink [pseudo]=\"true\" *ngIf=\"item.link\" href=\"{{ item.link }}\" class=\"grow\">{{ item.text }}</a>\n <p *ngIf=\"!item.link\" class=\"grow\">{{ item.text }}</p>\n <p>{{ item.createdAt }}</p>\n </ng-template>\n</ng-template>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col gap-2\">\n <div *ngFor=\"let _ of [].constructor(7)\" class=\"flex items-center gap-2\">\n <div class=\"tui-skeleton h-6 w-6\"></div>\n <div class=\"tui-skeleton h-4 w-40\"></div>\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FilesAndDocumentsComponent } from './files-and-documents.component';\nimport { TuiTreeModule } from '@taiga-ui/kit';\nimport { TuiLinkModule, TuiLoaderModule, TuiSvgModule } from '@taiga-ui/core';\nimport { FileTreeItemComponent } from './file-tree-item/file-tree-item.component';\nimport { TreeTopDirective } from '../public-api';\nimport { TreeDirective } from './directives/tree.directive';\n\n/**\n * Модуль файлов и документов.\n */\n@NgModule({\n imports: [CommonModule, TuiTreeModule, TuiSvgModule, TuiLoaderModule, TuiLinkModule],\n declarations: [FilesAndDocumentsComponent, TreeDirective, TreeTopDirective, FileTreeItemComponent],\n exports: [FilesAndDocumentsComponent],\n})\nexport class FilesAndDocumentsModule {}\n","/**\n * Список иконок.\n * TODO: TASK[#7779] Добавить иконки отдельных значков для соц. сетей после добавления их в кит дизайна.\n */\nexport const scClientUiIconsName = [\n 'scIconCalendar',\n 'scIconWordFile',\n 'scIconWarning',\n 'scIconWallet',\n 'scIconViewTree',\n 'scIconMinus',\n 'scIconViewInline',\n 'scIconViewGrid',\n 'scIconVerticalThreeDots',\n 'scIconTop',\n 'scIconTick',\n 'scIconTasks',\n 'scIconSuitcase',\n 'scIconStar',\n 'scIconShare',\n 'scIconSettings',\n 'scIconSend',\n 'scIconSearch',\n 'scIconSave',\n 'scIconRocket',\n 'scIconRequisites',\n 'scIconRepeat',\n 'scIconRefresh',\n 'scIconReclamation',\n 'scIconQuestion',\n 'scIconQRCodeScan',\n 'scIconProfile',\n 'scIconPrice',\n 'scIconPlus',\n 'scIconPhone',\n 'scIconPercentage',\n 'scIconPdfFile',\n 'scIconPalette',\n 'scIconOffer',\n 'scIconNews',\n 'scIconMoney2',\n 'scIconMoney',\n 'scIconMail',\n 'scIconLogOut2',\n 'scIconLogOut',\n 'scIconLogIn',\n 'scIconLockOpen',\n 'scIconLock',\n 'scIconLocation',\n 'scIconList',\n 'scIconLike',\n 'scIconImage',\n 'scIconHome',\n 'scIconHistory',\n 'scIconHeartFill',\n 'scIconHeart',\n 'scIconHamburger',\n 'scIconGraph',\n 'scIconFolderPlus',\n 'scIconFolderOpen',\n 'scIconFolder',\n 'scIconFilter',\n 'scIconFile',\n 'scIconFavoriteFill',\n 'scIconFavorite',\n 'scIconEye',\n 'scIconExcelFile',\n 'scIconError',\n 'scIconEdit',\n 'scIconDownloading',\n 'scIconDone',\n 'scIconDeleteProfile',\n 'scIconCross',\n 'scIconContacts',\n 'scIconConfigurator',\n 'scIconClock',\n 'scIconClip',\n 'scIconClients',\n 'scIconCatalog',\n 'scIconCart',\n 'scIconCancel',\n 'scIconBubble',\n 'scIconBook',\n 'scIconBell',\n 'scIconBasket',\n 'scIconBag',\n 'scIconAttention',\n 'scIconArrowUp',\n 'scIconArrowRight',\n 'scIconArrowReturn',\n 'scIconArrowLeft',\n 'scIconArrowDownLargeEnd',\n 'scIconArrowDownLarge',\n 'scIconArrowDown',\n 'scIconApplication',\n 'scIconAddProfile',\n 'scIconSocialCopy',\n 'scIconSocialEmail',\n 'scIconSocialFacebook',\n 'scIconSocialInstagram',\n 'scIconSocialQR',\n 'scIconSocialTelegram',\n 'scIconSocialViber',\n 'scIconSocialVk',\n 'scIconSocialWhatsapp',\n];\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TuiSizeL, TuiSizeM, TuiSizeS } from '@taiga-ui/core';\n\n/**\n * Компонент кнопки \"Поделиться\".\n */\n@Component({\n selector: 'sc-share-button',\n templateUrl: './sc-share-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScShareButtonComponent {\n /**\n * Формат внешнего вида кнопки.\n */\n @Input()\n public appearance: 'primary' | 'secondary' | 'outline' | 'flat' = 'secondary';\n\n /**\n * Размер кнопки.\n */\n @Input()\n public size: TuiSizeL | TuiSizeM | TuiSizeS = 'm';\n\n /**\n * Событие клика по кнопке \"Поделиться\".\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n}\n","<button tuiIconButton icon=\"scIconShare\" [appearance]=\"appearance\" [size]=\"size\" (click)=\"$event.stopPropagation(); clickShareEvent.emit()\"></button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ScNewsTile } from '@snabcentr/client-core';\n\n/**\n * Компонент карточки новости.\n */\n@Component({\n selector: 'sc-news-card',\n templateUrl: './sc-news-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardComponent {\n /**\n * Информация о новости.\n */\n @Input()\n public news: ScNewsTile;\n\n /**\n * Событие клика по карточке новости.\n */\n @Output()\n public clickCardEvent: EventEmitter<ScNewsTile> = new EventEmitter<ScNewsTile>();\n\n /**\n * Событие клика по кнопке \"Поделиться\" карточки новости.\n */\n @Output()\n public clickShareEvent: EventEmitter<void> = new EventEmitter<void>();\n}\n","<div (click)=\"clickCardEvent.emit(news)\" class=\"block relative h-82 w-70 cursor-pointer shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div [style.background-image]=\"'url(' + news.image + ')'\" class=\"bg-no-repeat bg-center bg-cover bg-tui-base-02 w-full h-50\"></div>\n <div class=\"px-6 py-4.5 h-32 w-full w-full flex justify-between align-baseline bg-white overflow-hidden\">\n <div class=\"flex flex-col gap-2.5\">\n <p class=\"text-sm text-tui-text-02\">{{ news.created_at }}</p>\n <a class=\"text-sm font-bold text-black line-clamp-3\">{{ news.subject }}</a>\n </div>\n <sc-share-button (clickShareEvent)=\"clickShareEvent.emit()\"></sc-share-button>\n </div>\n</div>\n","import { Input, Component, ChangeDetectionStrategy } from '@angular/core';\n\n/**\n * Компонент скелетона карточки новости.\n */\n@Component({\n selector: 'sc-news-card-skeleton',\n templateUrl: './sc-news-card-skeleton.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScNewsCardSkeletonComponent {\n /**\n * Признак, что необходимо отобразить скелетон изображения новости.\n */\n @Input() public hasImg: boolean = true;\n}\n","<div class=\"block relative h-82 w-70 shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div *ngIf=\"hasImg; else textBlock\" class=\"bg-tui-base-02 w-full h-50\"></div>\n <ng-template #textBlock>\n <div class=\"px-6 py-4.5 w-full flex flex-col gap-2\">\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-3/4\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-3/4\"></div>\n <div class=\"h-3 rounded bg-tui-base-02 w-full\"></div>\n </div>\n </ng-template>\n\n <div class=\"w-3/4\">\n <ng-container *ngTemplateOutlet=\"textBlock\"></ng-container>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScShareButtonComponent } from './sc-share-button.component';\nimport { TuiButtonModule } from '@taiga-ui/core';\n\n/**\n * Модуль работы кнопки \"Поделиться\".\n */\n@NgModule({\n declarations: [ScShareButtonComponent],\n imports: [CommonModule, TuiButtonModule],\n exports: [ScShareButtonComponent],\n})\nexport class ScShareButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScNewsCardComponent } from './news-card/sc-news-card.component';\nimport { ScNewsCardSkeletonComponent } from './news-card-skeleton/sc-news-card-skeleton.component';\nimport { RouterModule } from '@angular/router';\nimport { ScShareButtonModule } from '../share-button';\n\n/**\n * Модуль работы с новостями.\n */\n@NgModule({\n declarations: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n imports: [CommonModule, RouterModule, ScShareButtonModule],\n exports: [ScNewsCardComponent, ScNewsCardSkeletonComponent],\n})\nexport class ScNewsModule {}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { SC_PATH_IMAGE_NOT_FOUND, SC_URLS, ScCartItem, ScIUrls, ScProduct } from '@snabcentr/client-core';\nimport { TuiPreviewDialogService } from '@taiga-ui/addon-preview';\nimport { TuiDialogContext } from '@taiga-ui/core';\nimport { UnitsHelper } from '../../helpers/sc-units-helper';\n\n/**\n * Компонент карточки элемента заказа.\n */\n@Component({\n selector: 'sc-order-item-mobile',\n templateUrl: './order-item-mobile.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScOrderItemMobileComponent {\n /**\n * Ссылка на представление спецификации.\n */\n @ViewChild('specificationPreview')\n private readonly specificationPreviewRef?: TemplateRef<TuiDialogContext>;\n\n /**\n * Элемент заказа.\n */\n @Input()\n public orderItem?: ScCartItem;\n\n /**\n * Событие нажатия на карточку.\n */\n @Output()\n public clickCardEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Событие нажатия на дополнительные действия.\n */\n @Output()\n public clickActionsEvent: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Продукт элемента заказа.\n */\n public get product(): ScProduct | undefined {\n return this.orderItem?.product;\n }\n\n /**\n * Инициирует экземпляр класса {@link ScOrderItemMobileComponent}.\n *\n * @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.\n * @param previewDialogService Сервис диалогового окна предварительного просмотра.\n * @param urls Список ссылок на разделы backend'a.\n * @param pathImageNotFound Путь до изображения 'Товар не найден'.\n */\n public constructor(\n public readonly unitsHelper: UnitsHelper,\n @Inject(TuiPreviewDialogService)\n private readonly previewDialogService: TuiPreviewDialogService,\n @Inject(SC_URLS) private readonly urls: ScIUrls,\n @Inject(SC_PATH_IMAGE_NOT_FOUND) private readonly pathImageNotFound: string\n ) {}\n\n /**\n * Отобразить спецификацию.\n */\n public showSpecification(): void {\n this.previewDialogService.open(this.specificationPreviewRef || '').subscribe();\n }\n\n /**\n * Возвращает ссылку на изображение карточки товара.\n */\n public getCardImage(): string {\n return this.product?.getImage(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;\n }\n}\n","<div class=\"relative p-4 gap-y-2 gap-x-4 flex flex-wrap bg-white border border-tui-base-04 shadow-sc-2 rounded-xl\">\n <ng-container *ngIf=\"orderItem && product; else skeleton\">\n <button\n tuiIconButton\n (click)=\"clickActionsEvent.emit()\"\n size=\"m\"\n icon=\"scIconVerticalThreeDots\"\n appearance=\"float\"\n tuiMode=\"onLight\"\n class=\"!hidden !absolute right-0 top-0\"\n ></button>\n <div class=\"flex gap-2 grow\">\n <div class=\"flex shrink-0 h-20 w-20 justify-center items-center overflow-hidden\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-5]=\"!product.images?.length\" class=\"cursor-pointer\" />\n </div>\n\n <div class=\"flex flex-wrap self-center gap-x-8 grow\">\n <div class=\"basis-min-content flex flex-col grow\">\n <a tuiLink (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"text-tui-text-02 text-xs flex flex-col gap-y-0.5\">\n <div class=\"flex flex-wrap gap-y-0.5\">\n <p class=\"w-40\">Артикул: {{ product.code }}</p>\n <p class=\"w-40\" *ngIf=\"product.pack\">Норма упаковки: {{ product.pack }}</p>\n </div>\n <a tuiLink *ngIf=\"orderItem.specificationImgUrl\" (click)=\"showSpecification()\">Спецификация</a>\n </div>\n </div>\n <div class=\"flex flex-wrap content-center\">\n <div class=\"flex flex-col w-40 gap-x-8 gap-y-0.5\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-xs text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"text-tui-success-fill font-bold\"> -{{ 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\">Дата окончания: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs text-tui-text-02\">{{ product.costString }}</span>\n </p>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n\n <div class=\"w-40 text-xs text-tui-text-02\">\n <ng-container *ngIf=\"unitsHelper.productIsMeasurable(product); else notMeasurable\">\n <p>Длина: {{ orderItem.length }} {{ product.unit }}</p>\n </ng-container>\n <ng-template #notMeasurable>\n <p *ngIf=\"orderItem.length && !unitsHelper.productIsMeasurable(product)\">Длина: {{ orderItem.length }} м.</p>\n <p *ngIf=\"orderItem.width\">Ширина: {{ orderItem.width }} м.</p>\n <p *ngIf=\"orderItem.height\">Высота: {{ orderItem.height }} м.</p>\n </ng-template>\n <p class=\"text-tui-base-09 text-sm\">\n Сумма: <span class=\"font-bold whitespace-nowrap\"> {{ orderItem.getCostRubStr() }} </span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex gap-2 w-full\">\n <div class=\"h-20 w-20 bg-tui-base-02 rounded-xl \"></div>\n <div class=\"flex flex-col grow gap-2.5 bg-white\">\n <div class=\"w-full h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded-xl bg-tui-base-02\"></div>\n <div class=\"w-4/5 h-4 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ScOrderItemMobileComponent } from './order-item-mobile/order-item-mobile.component';\nimport { CommonModule } from '@angular/common';\nimport { TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';\nimport { ScCatalogModule } from '../catalog';\n\n/**\n * Модуль заказов.\n */\n@NgModule({\n declarations: [ScOrderItemMobileComponent],\n exports: [ScOrderItemMobileComponent],\n imports: [CommonModule, TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule, ScCatalogModule],\n})\nexport class ScOrderModule {}\n","/*\n * Public API Surface of ui\n */\n\nexport * from './banner';\nexport * from './cart';\nexport * from './catalog';\nexport * from './files';\nexport * from './icons';\nexport * from './loader';\nexport * from './news';\nexport * from './order';\nexport * from './share-button';\nexport * from './validators';\nexport * from './tokens';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ScPxConverter","i3","i4","i1","i2","i1.UnitsHelper","i4.ScInputQuantityComponent","i5.ScPriceWarehouseStockComponent","i6","i2.ScFavoriteBtnComponent","i5.ScFavoriteBtnComponent","i6.ScInputQuantityComponent","i7.ScPriceWarehouseStockComponent","i2.TreeIconService","i1.TreeIconService","i5","i6.TreeDirective","i7.TreeTopDirective","i1.ScShareButtonComponent","i4.ScPriceWarehouseStockComponent"],"mappings":"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"}
|