@snabcentr/client-ui 2.6.4 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -28,6 +28,10 @@ export declare class ScCategoryCardComponent {
28
28
  * Признак, что карточка является скелетоном.
29
29
  */
30
30
  isSkeleton: boolean;
31
+ /**
32
+ * Ссылка на страницу категории. Используется именно `href`, так как остановить событие клика для `routerLink` не вышло.
33
+ */
34
+ href?: string;
31
35
  /**
32
36
  * Признак, что необходимо отобразить лоадер для кнопки избранных товаров и категорий.
33
37
  */
@@ -54,6 +58,8 @@ export declare class ScCategoryCardComponent {
54
58
  * @param urls Список ссылок на разделы backend'a.
55
59
  * @param renderer Экземпляр базового класса для реализации пользовательского рендеринга.
56
60
  * @param pathImageNotFound Путь до изображения 'Товар не найден'.
61
+ * @param authService Сервис аутентификации.
62
+ * @param cdr Объект для работы с обнаружением изменений.
57
63
  */
58
64
  constructor(urls: ScIUrls, renderer: Renderer2, pathImageNotFound: string, authService: ScAuthService, cdr: ChangeDetectorRef);
59
65
  /**
@@ -75,5 +81,5 @@ export declare class ScCategoryCardComponent {
75
81
  */
76
82
  markForCheck(): void;
77
83
  static ɵfac: i0.ɵɵFactoryDeclaration<ScCategoryCardComponent, never>;
78
- static ɵcmp: i0.ɵɵComponentDeclaration<ScCategoryCardComponent, "sc-category-card", never, { "category": { "alias": "category"; "required": false; }; "size": { "alias": "size"; "required": false; }; "isSkeleton": { "alias": "isSkeleton"; "required": false; }; "isHovered": { "alias": "isHovered"; "required": false; }; }, { "clickOnCardEvent": "clickOnCardEvent"; "clickOnFavoriteEvent": "clickOnFavoriteEvent"; }, never, never, false, never>;
84
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScCategoryCardComponent, "sc-category-card", never, { "category": { "alias": "category"; "required": false; }; "size": { "alias": "size"; "required": false; }; "isSkeleton": { "alias": "isSkeleton"; "required": false; }; "href": { "alias": "href"; "required": false; }; "isHovered": { "alias": "isHovered"; "required": false; }; }, { "clickOnCardEvent": "clickOnCardEvent"; "clickOnFavoriteEvent": "clickOnFavoriteEvent"; }, never, never, false, never>;
79
85
  }
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Inject, Input, Output, ViewChild } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Inject, Input, Output, ViewChild, } from '@angular/core';
2
2
  import { SC_PATH_IMAGE_NOT_FOUND, SC_URLS } from '@snabcentr/client-core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@snabcentr/client-core";
@@ -14,6 +14,8 @@ export class ScCategoryCardComponent {
14
14
  * @param urls Список ссылок на разделы backend'a.
15
15
  * @param renderer Экземпляр базового класса для реализации пользовательского рендеринга.
16
16
  * @param pathImageNotFound Путь до изображения 'Товар не найден'.
17
+ * @param authService Сервис аутентификации.
18
+ * @param cdr Объект для работы с обнаружением изменений.
17
19
  */
18
20
  constructor(urls, renderer, pathImageNotFound, authService, cdr) {
19
21
  this.urls = urls;
@@ -56,7 +58,7 @@ export class ScCategoryCardComponent {
56
58
  * @param category Информация о категории.
57
59
  */
58
60
  getCategoryImgURL(category) {
59
- return category.properties?.image ? this.urls.imgServerUrl + '/' + category.properties?.image : this.pathImageNotFound;
61
+ return category.properties?.image ? `${this.urls.imgServerUrl}/${category.properties.image}` : this.pathImageNotFound;
60
62
  }
61
63
  /**
62
64
  * Обработчик события mousemove.
@@ -81,11 +83,11 @@ export class ScCategoryCardComponent {
81
83
  this.cdr.markForCheck();
82
84
  }
83
85
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScCategoryCardComponent, deps: [{ token: SC_URLS }, { token: i0.Renderer2 }, { token: SC_PATH_IMAGE_NOT_FOUND }, { token: i1.ScAuthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
84
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScCategoryCardComponent, selector: "sc-category-card", inputs: { category: "category", size: "size", isSkeleton: "isSkeleton", isHovered: "isHovered" }, outputs: { clickOnCardEvent: "clickOnCardEvent", clickOnFavoriteEvent: "clickOnFavoriteEvent" }, host: { listeners: { "mousemove": "moveEnterHandler()", "mouseleave": "mouseLeaveHandler()" }, properties: { "attr.data-size": "this.size" } }, viewQueries: [{ propertyName: "name", first: true, predicate: ["name"], descendants: true }], ngImport: i0, template: "<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] button.category-btn{width:100%;height:12.5rem}:host[data-size=m] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] button.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] button.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] button.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] button.category-btn{width:100%;height:10rem}:host[data-size=s] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] button.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] button.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] button.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ScFavoriteBtnComponent, selector: "sc-favorite-btn", inputs: ["isFavorite", "showLoader", "disabled"], outputs: ["clickEvent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScCategoryCardComponent, selector: "sc-category-card", inputs: { category: "category", size: "size", isSkeleton: "isSkeleton", href: "href", isHovered: "isHovered" }, outputs: { clickOnCardEvent: "clickOnCardEvent", clickOnFavoriteEvent: "clickOnFavoriteEvent" }, host: { listeners: { "mousemove": "moveEnterHandler()", "mouseleave": "mouseLeaveHandler()" }, properties: { "attr.data-size": "this.size" } }, viewQueries: [{ propertyName: "name", first: true, predicate: ["name"], descendants: true }], ngImport: i0, template: "<div class=\"group relative\">\n <a\n [attr.href]=\"href ?? null\"\n (click)=\"$event.preventDefault(); clickOnCardEvent.emit()\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn rounded-tui-radius-m shadow-sc-2 relative flex cursor-pointer flex-col overflow-hidden\"\n >\n <div class=\"img-wrapper bg-tui-base-02 w-full grow overflow-hidden\">\n <img\n *ngIf=\"category && !isSkeleton\"\n [src]=\"getCategoryImgURL(category)\"\n [alt]=\"category.name\"\n class=\"w-full\"\n />\n </div>\n <div\n #name\n [attr.data-is-hovered]=\"!isHovered\"\n class=\"name grid w-full shrink-0 items-center justify-center overflow-hidden bg-white text-center font-bold duration-300\"\n >\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 </a>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] a.category-btn{width:100%;height:12.5rem}:host[data-size=m] a.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] a.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] a.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] a.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] a.category-btn{width:100%;height:10rem}:host[data-size=s] a.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] a.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] a.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] a.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ScFavoriteBtnComponent, selector: "sc-favorite-btn", inputs: ["isFavorite", "showLoader", "disabled"], outputs: ["clickEvent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
85
87
  }
86
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScCategoryCardComponent, decorators: [{
87
89
  type: Component,
88
- args: [{ selector: 'sc-category-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] button.category-btn{width:100%;height:12.5rem}:host[data-size=m] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] button.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] button.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] button.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] button.category-btn{width:100%;height:10rem}:host[data-size=s] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] button.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] button.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] button.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"] }]
90
+ args: [{ selector: 'sc-category-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"group relative\">\n <a\n [attr.href]=\"href ?? null\"\n (click)=\"$event.preventDefault(); clickOnCardEvent.emit()\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn rounded-tui-radius-m shadow-sc-2 relative flex cursor-pointer flex-col overflow-hidden\"\n >\n <div class=\"img-wrapper bg-tui-base-02 w-full grow overflow-hidden\">\n <img\n *ngIf=\"category && !isSkeleton\"\n [src]=\"getCategoryImgURL(category)\"\n [alt]=\"category.name\"\n class=\"w-full\"\n />\n </div>\n <div\n #name\n [attr.data-is-hovered]=\"!isHovered\"\n class=\"name grid w-full shrink-0 items-center justify-center overflow-hidden bg-white text-center font-bold duration-300\"\n >\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 </a>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] a.category-btn{width:100%;height:12.5rem}:host[data-size=m] a.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] a.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] a.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] a.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] a.category-btn{width:100%;height:10rem}:host[data-size=s] a.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] a.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] a.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] a.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"] }]
89
91
  }], ctorParameters: () => [{ type: undefined, decorators: [{
90
92
  type: Inject,
91
93
  args: [SC_URLS]
@@ -104,6 +106,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
104
106
  args: ['attr.data-size']
105
107
  }], isSkeleton: [{
106
108
  type: Input
109
+ }], href: [{
110
+ type: Input
107
111
  }], isHovered: [{
108
112
  type: Input
109
113
  }], clickOnCardEvent: [{
@@ -117,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
117
121
  type: HostListener,
118
122
  args: ['mouseleave']
119
123
  }] } });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9jYXRlZ29yeS1jYXJkL3NjLWNhdGVnb3J5LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcnktY2FyZC9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFzQyxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUk5Rzs7R0FFRztBQU9ILE1BQU0sT0FBTyx1QkFBdUI7SUFzRGhDOzs7Ozs7T0FNRztJQUNILFlBQ3NDLElBQWEsRUFDdkMsUUFBbUIsRUFDdUIsaUJBQXlCLEVBQzFELFdBQTBCLEVBQzFCLEdBQXNCO1FBSkwsU0FBSSxHQUFKLElBQUksQ0FBUztRQUN2QyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ3VCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQUMxRCxnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXJEM0M7O1dBRUc7UUFHSSxTQUFJLEdBQWEsR0FBRyxDQUFDO1FBRTVCOztXQUVHO1FBRUksZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUNJLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUUzQzs7V0FFRztRQUNhLGdCQUFXLEdBQXdCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFcEY7O1dBRUc7UUFFSSxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRWxDOztXQUVHO1FBRUkscUJBQWdCLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7UUFFbkY7O1dBRUc7UUFFSSx5QkFBb0IsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQWVwRixDQUFDO0lBRUo7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLFFBQW9CO1FBQ3pDLE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQzNILENBQUM7SUFFRDs7T0FFRztJQUVLLGdCQUFnQjtRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ2hHLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFFSyxpQkFBaUI7UUFDckIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDOzhHQXZHUSx1QkFBdUIsa0JBOERwQixPQUFPLHNDQUVQLHVCQUF1QjtrR0FoRTFCLHVCQUF1Qix5ZUMzQnBDLDB2Q0F3QkE7OzJGREdhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDSSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs7MEJBZ0UxQyxNQUFNOzJCQUFDLE9BQU87OzBCQUVkLE1BQU07MkJBQUMsdUJBQXVCO3FHQTNENUIsUUFBUTtzQkFEZCxLQUFLO2dCQU9FLElBQUk7c0JBRFgsU0FBUzt1QkFBQyxNQUFNO2dCQVFWLElBQUk7c0JBRlYsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBT3RCLFVBQVU7c0JBRGhCLEtBQUs7Z0JBaUJDLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBT0Esb0JBQW9CO3NCQUQxQixNQUFNO2dCQStCQyxnQkFBZ0I7c0JBRHZCLFlBQVk7dUJBQUMsV0FBVztnQkFXakIsaUJBQWlCO3NCQUR4QixZQUFZO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU0NfUEFUSF9JTUFHRV9OT1RfRk9VTkQsIFNDX1VSTFMsIFNjQXV0aFNlcnZpY2UsIFNjQ2F0ZWdvcnksIFNjSVVybHMgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aVNpemVTIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqINCa0LDRgNGC0L7Rh9C60LAg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLWNhdGVnb3J5LWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXRlZ29yeUNhcmRDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCY0L3RhNC+0YDQvNCw0YbQuNGPINC+INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYXRlZ29yeT86IFNjQ2F0ZWdvcnk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCB7QGxpbmsgSFRNTEVsZW1lbnR9INCx0LvQvtC60LAg0L3QsNC30LLQsNC90LjRjy5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCduYW1lJylcbiAgICBwcml2YXRlIG5hbWU6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICog0KDQsNC30LzQtdGAINC60LDRgNGC0L7Rh9C60Lgg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgcHVibGljIHNpemU6IFR1aVNpemVTID0gJ20nO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQutCw0YDRgtC+0YfQutCwINGP0LLQu9GP0LXRgtGB0Y8g0YHQutC10LvQtdGC0L7QvdC+0LwuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNTa2VsZXRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQvdC10L7QsdGF0L7QtNC40LzQviDQvtGC0L7QsdGA0LDQt9C40YLRjCDQu9C+0LDQtNC10YAg0LTQu9GPINC60L3QvtC/0LrQuCDQuNC30LHRgNCw0L3QvdGL0YUg0YLQvtCy0LDRgNC+0LIg0Lgg0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBmYXZvcml0ZVNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHRgtCw0YLRg9GB0LAg0LDQstGC0L7RgNC40LfQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXV0aFN0YXR1cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhDaGFuZ2UoKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGH0YLQviDQutCw0YLQtdCz0L7RgNC40Y8g0LjQvNC10LXRgiDQv9C+0LLQtdC00LXQvdC40LUg0L3QsNCy0LXQtNC10L3QuNGPINC4INGB0LrRgNGL0YLQuNGPINC90LDQt9Cy0LDQvdC40Y8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNIb3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja09uQ2FyZEV2ZW50OiBFdmVudEVtaXR0ZXI8U2NDYXRlZ29yeT4gPSBuZXcgRXZlbnRFbWl0dGVyPFNjQ2F0ZWdvcnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDQuNC30LHRgNCw0L3QvdC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja09uRmF2b3JpdGVFdmVudDogRXZlbnRFbWl0dGVyPFNjQ2F0ZWdvcnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY0NhdGVnb3J5PigpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBDYXRlZ29yeUNhcmRDb21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHVybHMg0KHQv9C40YHQvtC6INGB0YHRi9C70L7QuiDQvdCwINGA0LDQt9C00LXQu9GLIGJhY2tlbmQnYS5cbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIg0K3QutC30LXQvNC/0LvRj9GAINCx0LDQt9C+0LLQvtCz0L4g0LrQu9Cw0YHRgdCwINC00LvRjyDRgNC10LDQu9C40LfQsNGG0LjQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60L7Qs9C+INGA0LXQvdC00LXRgNC40L3Qs9CwLlxuICAgICAqIEBwYXJhbSBwYXRoSW1hZ2VOb3RGb3VuZCDQn9GD0YLRjCDQtNC+INC40LfQvtCx0YDQsNC20LXQvdC40Y8gJ9Ci0L7QstCw0YAg0L3QtSDQvdCw0LnQtNC10L0nLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTQ19VUkxTKSBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChTQ19QQVRIX0lNQUdFX05PVF9GT1VORCkgcHJpdmF0ZSByZWFkb25seSBwYXRoSW1hZ2VOb3RGb3VuZDogc3RyaW5nLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBTY0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GD0YLRjCDQuiDQuNC30L7QsdGA0LDQttC10L3QuNGOINC60LDRgtC10LPQvtGA0LjQuC4g0JXRgdC70Lgg0L/Rg9GC0Ywg0L7RgtGB0YPRgtGB0YLQstGD0LXRgiwg0YLQviDQstC10YDQvdGR0YIg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSDQv9C+LdGD0LzQvtC70YfQsNC90LjRjiAoXCJwcm9kdWN0X25vdF9mb3VuZFwiKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSDQmNC90YTQvtGA0LzQsNGG0LjRjyDQviDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5SW1nVVJMKGNhdGVnb3J5OiBTY0NhdGVnb3J5KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5LnByb3BlcnRpZXM/LmltYWdlID8gdGhpcy51cmxzLmltZ1NlcnZlclVybCArICcvJyArIGNhdGVnb3J5LnByb3BlcnRpZXM/LmltYWdlIDogdGhpcy5wYXRoSW1hZ2VOb3RGb3VuZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0L7RgtGH0LjQuiDRgdC+0LHRi9GC0LjRjyBtb3VzZW1vdmUuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vtb3ZlJylcbiAgICBwcml2YXRlIG1vdmVFbnRlckhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzSG92ZXJlZCkge1xuICAgICAgICAgICAgdGhpcy5uYW1lLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gYCR7dGhpcy5uYW1lLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC8gMTZ9cmVtYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPIG1vdXNlbGVhdmUuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gICAgcHJpdmF0ZSBtb3VzZUxlYXZlSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNIb3ZlcmVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMubmFtZS5uYXRpdmVFbGVtZW50LCAnbWF4SGVpZ2h0JywgbnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQutC+0LzQv9C+0L3QtdC90YIg0LIg0L7Rh9C10YDQtdC00Ywg0L3QsCDQvtCx0L3QvtCy0LvQtdC90LjQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFya0ZvckNoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZ3JvdXBcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJjbGlja09uQ2FyZEV2ZW50LmVtaXQoY2F0ZWdvcnkpXCJcbiAgICAgICAgW2NsYXNzLnBvaW50ZXItZXZlbnRzLW5vbmVdPVwiIWNhdGVnb3J5IHx8IGlzU2tlbGV0b25cIlxuICAgICAgICBjbGFzcz1cImNhdGVnb3J5LWJ0biBmbGV4IGZsZXgtY29sIHJlbGF0aXZlIHJvdW5kZWQtdHVpLXJhZGl1cy1tIG92ZXJmbG93LWhpZGRlbiBzaGFkb3ctc2MtMlwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLXdyYXBwZXIgdy1mdWxsIGdyb3cgYmctdHVpLWJhc2UtMDIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiY2F0ZWdvcnkgJiYgIWlzU2tlbGV0b25cIiBbc3JjXT1cImdldENhdGVnb3J5SW1nVVJMKGNhdGVnb3J5KVwiIFthbHRdPVwiY2F0ZWdvcnkubmFtZVwiIGNsYXNzPVwidy1mdWxsXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgI25hbWUgW2F0dHIuZGF0YS1pcy1ob3ZlcmVkXT1cIiFpc0hvdmVyZWRcIiBjbGFzcz1cIm5hbWUgZ3JpZCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZm9udC1ib2xkIGJnLXdoaXRlIHctZnVsbCBvdmVyZmxvdy1oaWRkZW4gc2hyaW5rLTAgZHVyYXRpb24tMzAwXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNhdGVnb3J5ICYmICFpc1NrZWxldG9uOyBlbHNlIHNrZWxldG9uTmFtZVwiPnt7IGNhdGVnb3J5Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uTmFtZT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tbmFtZSBiZy10dWktYmFzZS0wMiByb3VuZGVkLXR1aS1yYWRpdXMtc1wiPjwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9idXR0b24+XG4gICAgPHNjLWZhdm9yaXRlLWJ0blxuICAgICAgICAqbmdJZj1cImNhdGVnb3J5ICYmICFpc1NrZWxldG9uICYmIChhdXRoU3RhdHVzJCB8IGFzeW5jKVwiXG4gICAgICAgIFtzaG93TG9hZGVyXT1cImZhdm9yaXRlU2hvd0xvYWRlclwiXG4gICAgICAgIFtpc0Zhdm9yaXRlXT1cImNhdGVnb3J5LmlzRmF2b3JpdGVcIlxuICAgICAgICAoY2xpY2tFdmVudCk9XCJjbGlja09uRmF2b3JpdGVFdmVudC5lbWl0KClcIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIGxlZnQtMSB0b3AtMVwiXG4gICAgPjwvc2MtZmF2b3JpdGUtYnRuPlxuPC9kaXY+XG4iXX0=
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9jYXRlZ29yeS1jYXJkL3NjLWNhdGVnb3J5LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcnktY2FyZC9zYy1jYXRlZ29yeS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFzQyxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUk5Rzs7R0FFRztBQU9ILE1BQU0sT0FBTyx1QkFBdUI7SUE0RGhDOzs7Ozs7OztPQVFHO0lBQ0gsWUFDc0MsSUFBYSxFQUN2QyxRQUFtQixFQUN1QixpQkFBeUIsRUFDMUQsV0FBMEIsRUFDMUIsR0FBc0I7UUFKTCxTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ3ZDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDdUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBQzFELGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBN0QzQzs7V0FFRztRQUdJLFNBQUksR0FBYSxHQUFHLENBQUM7UUFFNUI7O1dBRUc7UUFFSSxlQUFVLEdBQVksS0FBSyxDQUFDO1FBUW5DOztXQUVHO1FBQ0ksdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRTNDOztXQUVHO1FBQ2EsZ0JBQVcsR0FBd0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVwRjs7V0FFRztRQUVJLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFbEM7O1dBRUc7UUFFSSxxQkFBZ0IsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUVuRjs7V0FFRztRQUVJLHlCQUFvQixHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO0lBaUJwRixDQUFDO0lBRUo7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLFFBQW9CO1FBQ3pDLE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQzFILENBQUM7SUFFRDs7T0FFRztJQUVLLGdCQUFnQjtRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ2hHLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFFSyxpQkFBaUI7UUFDckIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDOzhHQS9HUSx1QkFBdUIsa0JBc0VwQixPQUFPLHNDQUVQLHVCQUF1QjtrR0F4RTFCLHVCQUF1Qix1ZkMzQnBDLG84Q0FrQ0E7OzJGRFBhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDSSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs7MEJBd0UxQyxNQUFNOzJCQUFDLE9BQU87OzBCQUVkLE1BQU07MkJBQUMsdUJBQXVCO3FHQW5FNUIsUUFBUTtzQkFEZCxLQUFLO2dCQU9FLElBQUk7c0JBRFgsU0FBUzt1QkFBQyxNQUFNO2dCQVFWLElBQUk7c0JBRlYsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBT3RCLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsSUFBSTtzQkFEVixLQUFLO2dCQWlCQyxTQUFTO3NCQURmLEtBQUs7Z0JBT0MsZ0JBQWdCO3NCQUR0QixNQUFNO2dCQU9BLG9CQUFvQjtzQkFEMUIsTUFBTTtnQkFpQ0MsZ0JBQWdCO3NCQUR2QixZQUFZO3VCQUFDLFdBQVc7Z0JBV2pCLGlCQUFpQjtzQkFEeEIsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTQ19QQVRIX0lNQUdFX05PVF9GT1VORCwgU0NfVVJMUywgU2NBdXRoU2VydmljZSwgU2NDYXRlZ29yeSwgU2NJVXJscyB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpU2l6ZVMgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0JrQsNGA0YLQvtGH0LrQsCDQutCw0YLQtdCz0L7RgNC40LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtY2F0ZWdvcnktY2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWNhdGVnb3J5LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NjLWNhdGVnb3J5LWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXRlZ29yeUNhcmRDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCY0L3RhNC+0YDQvNCw0YbQuNGPINC+INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjYXRlZ29yeT86IFNjQ2F0ZWdvcnk7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0L3QsCB7QGxpbmsgSFRNTEVsZW1lbnR9INCx0LvQvtC60LAg0L3QsNC30LLQsNC90LjRjy5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCduYW1lJylcbiAgICBwcml2YXRlIG5hbWU6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICog0KDQsNC30LzQtdGAINC60LDRgNGC0L7Rh9C60Lgg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgcHVibGljIHNpemU6IFR1aVNpemVTID0gJ20nO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQutCw0YDRgtC+0YfQutCwINGP0LLQu9GP0LXRgtGB0Y8g0YHQutC10LvQtdGC0L7QvdC+0LwuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNTa2VsZXRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0KHRgdGL0LvQutCwINC90LAg0YHRgtGA0LDQvdC40YbRgyDQutCw0YLQtdCz0L7RgNC40LguINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQuNC80LXQvdC90L4gYGhyZWZgLCDRgtCw0Log0LrQsNC6INC+0YHRgtCw0L3QvtCy0LjRgtGMINGB0L7QsdGL0YLQuNC1INC60LvQuNC60LAg0LTQu9GPIGByb3V0ZXJMaW5rYCDQvdC1INCy0YvRiNC70L4uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaHJlZj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L3QtdC+0LHRhdC+0LTQuNC80L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LvQvtCw0LTQtdGAINC00LvRjyDQutC90L7Qv9C60Lgg0LjQt9Cx0YDQsNC90L3Ri9GFINGC0L7QstCw0YDQvtCyINC4INC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZmF2b3JpdGVTaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0YLQsNGC0YPRgdCwINCw0LLRgtC+0YDQuNC30LDRhtC40LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF1dGhTdGF0dXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hdXRoU2VydmljZS5nZXRBdXRoQ2hhbmdlKCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRh9GC0L4g0LrQsNGC0LXQs9C+0YDQuNGPINC40LzQtdC10YIg0L/QvtCy0LXQtNC10L3QuNC1INC90LDQstC10LTQtdC90LjRjyDQuCDRgdC60YDRi9GC0LjRjyDQvdCw0LfQstCw0L3QuNGPLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlzSG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutCw0YDRgtC+0YfQutGDINC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tPbkNhcmRFdmVudDogRXZlbnRFbWl0dGVyPFNjQ2F0ZWdvcnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxTY0NhdGVnb3J5PigpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0LjQt9Cx0YDQsNC90L3QvtC5INC60LDRgtC10LPQvtGA0LjQuC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tPbkZhdm9yaXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxTY0NhdGVnb3J5PiA9IG5ldyBFdmVudEVtaXR0ZXI8U2NDYXRlZ29yeT4oKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgQ2F0ZWdvcnlDYXJkQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cmxzINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRgNCw0LfQtNC10LvRiyBiYWNrZW5kJ2EuXG4gICAgICogQHBhcmFtIHJlbmRlcmVyINCt0LrQt9C10LzQv9C70Y/RgCDQsdCw0LfQvtCy0L7Qs9C+INC60LvQsNGB0YHQsCDQtNC70Y8g0YDQtdCw0LvQuNC30LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC+0LPQviDRgNC10L3QtNC10YDQuNC90LPQsC5cbiAgICAgKiBAcGFyYW0gcGF0aEltYWdlTm90Rm91bmQg0J/Rg9GC0Ywg0LTQviDQuNC30L7QsdGA0LDQttC10L3QuNGPICfQotC+0LLQsNGAINC90LUg0L3QsNC50LTQtdC9Jy5cbiAgICAgKiBAcGFyYW0gYXV0aFNlcnZpY2Ug0KHQtdGA0LLQuNGBINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICogQHBhcmFtIGNkciDQntCx0YrQtdC60YIg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQvtCx0L3QsNGA0YPQttC10L3QuNC10Lwg0LjQt9C80LXQvdC10L3QuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTQ19VUkxTKSBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChTQ19QQVRIX0lNQUdFX05PVF9GT1VORCkgcHJpdmF0ZSByZWFkb25seSBwYXRoSW1hZ2VOb3RGb3VuZDogc3RyaW5nLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTZXJ2aWNlOiBTY0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GD0YLRjCDQuiDQuNC30L7QsdGA0LDQttC10L3QuNGOINC60LDRgtC10LPQvtGA0LjQuC4g0JXRgdC70Lgg0L/Rg9GC0Ywg0L7RgtGB0YPRgtGB0YLQstGD0LXRgiwg0YLQviDQstC10YDQvdGR0YIg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSDQv9C+LdGD0LzQvtC70YfQsNC90LjRjiAoXCJwcm9kdWN0X25vdF9mb3VuZFwiKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yeSDQmNC90YTQvtGA0LzQsNGG0LjRjyDQviDQutCw0YLQtdCz0L7RgNC40LguXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5SW1nVVJMKGNhdGVnb3J5OiBTY0NhdGVnb3J5KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGNhdGVnb3J5LnByb3BlcnRpZXM/LmltYWdlID8gYCR7dGhpcy51cmxzLmltZ1NlcnZlclVybH0vJHtjYXRlZ29yeS5wcm9wZXJ0aWVzLmltYWdlfWAgOiB0aGlzLnBhdGhJbWFnZU5vdEZvdW5kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQvtGC0YfQuNC6INGB0L7QsdGL0YLQuNGPIG1vdXNlbW92ZS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnKVxuICAgIHByaXZhdGUgbW92ZUVudGVySGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNIb3ZlcmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWUubmF0aXZlRWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSBgJHt0aGlzLm5hbWUubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLyAxNn1yZW1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7QsdGA0LDQsdC+0YLRh9C40Log0YHQvtCx0YvRgtC40Y8gbW91c2VsZWF2ZS5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgICBwcml2YXRlIG1vdXNlTGVhdmVIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0hvdmVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5uYW1lLm5hdGl2ZUVsZW1lbnQsICdtYXhIZWlnaHQnLCBudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINC60L7QvNC/0L7QvdC10L3RgiDQsiDQvtGH0LXRgNC10LTRjCDQvdCwINC+0LHQvdC+0LLQu9C10L3QuNC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBtYXJrRm9yQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncm91cCByZWxhdGl2ZVwiPlxuICAgIDxhXG4gICAgICAgIFthdHRyLmhyZWZdPVwiaHJlZiA/PyBudWxsXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBjbGlja09uQ2FyZEV2ZW50LmVtaXQoKVwiXG4gICAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cIiFjYXRlZ29yeSB8fCBpc1NrZWxldG9uXCJcbiAgICAgICAgY2xhc3M9XCJjYXRlZ29yeS1idG4gcm91bmRlZC10dWktcmFkaXVzLW0gc2hhZG93LXNjLTIgcmVsYXRpdmUgZmxleCBjdXJzb3ItcG9pbnRlciBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltZy13cmFwcGVyIGJnLXR1aS1iYXNlLTAyIHctZnVsbCBncm93IG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiY2F0ZWdvcnkgJiYgIWlzU2tlbGV0b25cIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0Q2F0ZWdvcnlJbWdVUkwoY2F0ZWdvcnkpXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImNhdGVnb3J5Lm5hbWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjbmFtZVxuICAgICAgICAgICAgW2F0dHIuZGF0YS1pcy1ob3ZlcmVkXT1cIiFpc0hvdmVyZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJuYW1lIGdyaWQgdy1mdWxsIHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gYmctd2hpdGUgdGV4dC1jZW50ZXIgZm9udC1ib2xkIGR1cmF0aW9uLTMwMFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2F0ZWdvcnkgJiYgIWlzU2tlbGV0b247IGVsc2Ugc2tlbGV0b25OYW1lXCI+e3sgY2F0ZWdvcnkubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2tlbGV0b25OYW1lPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbi1uYW1lIGJnLXR1aS1iYXNlLTAyIHJvdW5kZWQtdHVpLXJhZGl1cy1zXCI+PC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2E+XG4gICAgPHNjLWZhdm9yaXRlLWJ0blxuICAgICAgICAqbmdJZj1cImNhdGVnb3J5ICYmICFpc1NrZWxldG9uICYmIChhdXRoU3RhdHVzJCB8IGFzeW5jKVwiXG4gICAgICAgIFtzaG93TG9hZGVyXT1cImZhdm9yaXRlU2hvd0xvYWRlclwiXG4gICAgICAgIFtpc0Zhdm9yaXRlXT1cImNhdGVnb3J5LmlzRmF2b3JpdGVcIlxuICAgICAgICAoY2xpY2tFdmVudCk9XCJjbGlja09uRmF2b3JpdGVFdmVudC5lbWl0KClcIlxuICAgICAgICBjbGFzcz1cImFic29sdXRlIGxlZnQtMSB0b3AtMVwiXG4gICAgPjwvc2MtZmF2b3JpdGUtYnRuPlxuPC9kaXY+XG4iXX0=
@@ -3181,6 +3181,8 @@ class ScCategoryCardComponent {
3181
3181
  * @param urls Список ссылок на разделы backend'a.
3182
3182
  * @param renderer Экземпляр базового класса для реализации пользовательского рендеринга.
3183
3183
  * @param pathImageNotFound Путь до изображения 'Товар не найден'.
3184
+ * @param authService Сервис аутентификации.
3185
+ * @param cdr Объект для работы с обнаружением изменений.
3184
3186
  */
3185
3187
  constructor(urls, renderer, pathImageNotFound, authService, cdr) {
3186
3188
  this.urls = urls;
@@ -3223,7 +3225,7 @@ class ScCategoryCardComponent {
3223
3225
  * @param category Информация о категории.
3224
3226
  */
3225
3227
  getCategoryImgURL(category) {
3226
- return category.properties?.image ? this.urls.imgServerUrl + '/' + category.properties?.image : this.pathImageNotFound;
3228
+ return category.properties?.image ? `${this.urls.imgServerUrl}/${category.properties.image}` : this.pathImageNotFound;
3227
3229
  }
3228
3230
  /**
3229
3231
  * Обработчик события mousemove.
@@ -3248,11 +3250,11 @@ class ScCategoryCardComponent {
3248
3250
  this.cdr.markForCheck();
3249
3251
  }
3250
3252
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScCategoryCardComponent, deps: [{ token: SC_URLS }, { token: i0.Renderer2 }, { token: SC_PATH_IMAGE_NOT_FOUND }, { token: i1.ScAuthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3251
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScCategoryCardComponent, selector: "sc-category-card", inputs: { category: "category", size: "size", isSkeleton: "isSkeleton", isHovered: "isHovered" }, outputs: { clickOnCardEvent: "clickOnCardEvent", clickOnFavoriteEvent: "clickOnFavoriteEvent" }, host: { listeners: { "mousemove": "moveEnterHandler()", "mouseleave": "mouseLeaveHandler()" }, properties: { "attr.data-size": "this.size" } }, viewQueries: [{ propertyName: "name", first: true, predicate: ["name"], descendants: true }], ngImport: i0, template: "<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] button.category-btn{width:100%;height:12.5rem}:host[data-size=m] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] button.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] button.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] button.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] button.category-btn{width:100%;height:10rem}:host[data-size=s] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] button.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] button.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] button.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScFavoriteBtnComponent, selector: "sc-favorite-btn", inputs: ["isFavorite", "showLoader", "disabled"], outputs: ["clickEvent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3253
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScCategoryCardComponent, selector: "sc-category-card", inputs: { category: "category", size: "size", isSkeleton: "isSkeleton", href: "href", isHovered: "isHovered" }, outputs: { clickOnCardEvent: "clickOnCardEvent", clickOnFavoriteEvent: "clickOnFavoriteEvent" }, host: { listeners: { "mousemove": "moveEnterHandler()", "mouseleave": "mouseLeaveHandler()" }, properties: { "attr.data-size": "this.size" } }, viewQueries: [{ propertyName: "name", first: true, predicate: ["name"], descendants: true }], ngImport: i0, template: "<div class=\"group relative\">\n <a\n [attr.href]=\"href ?? null\"\n (click)=\"$event.preventDefault(); clickOnCardEvent.emit()\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn rounded-tui-radius-m shadow-sc-2 relative flex cursor-pointer flex-col overflow-hidden\"\n >\n <div class=\"img-wrapper bg-tui-base-02 w-full grow overflow-hidden\">\n <img\n *ngIf=\"category && !isSkeleton\"\n [src]=\"getCategoryImgURL(category)\"\n [alt]=\"category.name\"\n class=\"w-full\"\n />\n </div>\n <div\n #name\n [attr.data-is-hovered]=\"!isHovered\"\n class=\"name grid w-full shrink-0 items-center justify-center overflow-hidden bg-white text-center font-bold duration-300\"\n >\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 </a>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] a.category-btn{width:100%;height:12.5rem}:host[data-size=m] a.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] a.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] a.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] a.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] a.category-btn{width:100%;height:10rem}:host[data-size=s] a.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] a.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] a.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] a.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScFavoriteBtnComponent, selector: "sc-favorite-btn", inputs: ["isFavorite", "showLoader", "disabled"], outputs: ["clickEvent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3252
3254
  }
3253
3255
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScCategoryCardComponent, decorators: [{
3254
3256
  type: Component,
3255
- args: [{ selector: 'sc-category-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative group\">\n <button\n (click)=\"clickOnCardEvent.emit(category)\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn flex flex-col relative rounded-tui-radius-m overflow-hidden shadow-sc-2\"\n >\n <div class=\"img-wrapper w-full grow bg-tui-base-02 overflow-hidden\">\n <img *ngIf=\"category && !isSkeleton\" [src]=\"getCategoryImgURL(category)\" [alt]=\"category.name\" class=\"w-full\" />\n </div>\n <div #name [attr.data-is-hovered]=\"!isHovered\" class=\"name grid items-center justify-center font-bold bg-white w-full overflow-hidden shrink-0 duration-300\">\n <span *ngIf=\"category && !isSkeleton; else skeletonName\">{{ category.name }}</span>\n <ng-template #skeletonName>\n <div class=\"skeleton-name bg-tui-base-02 rounded-tui-radius-s\"></div>\n </ng-template>\n </div>\n </button>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] button.category-btn{width:100%;height:12.5rem}:host[data-size=m] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] button.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] button.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] button.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] button.category-btn{width:100%;height:10rem}:host[data-size=s] button.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] button.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] button.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] button.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"] }]
3257
+ args: [{ selector: 'sc-category-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"group relative\">\n <a\n [attr.href]=\"href ?? null\"\n (click)=\"$event.preventDefault(); clickOnCardEvent.emit()\"\n [class.pointer-events-none]=\"!category || isSkeleton\"\n class=\"category-btn rounded-tui-radius-m shadow-sc-2 relative flex cursor-pointer flex-col overflow-hidden\"\n >\n <div class=\"img-wrapper bg-tui-base-02 w-full grow overflow-hidden\">\n <img\n *ngIf=\"category && !isSkeleton\"\n [src]=\"getCategoryImgURL(category)\"\n [alt]=\"category.name\"\n class=\"w-full\"\n />\n </div>\n <div\n #name\n [attr.data-is-hovered]=\"!isHovered\"\n class=\"name grid w-full shrink-0 items-center justify-center overflow-hidden bg-white text-center font-bold duration-300\"\n >\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 </a>\n <sc-favorite-btn\n *ngIf=\"category && !isSkeleton && (authStatus$ | async)\"\n [showLoader]=\"favoriteShowLoader\"\n [isFavorite]=\"category.isFavorite\"\n (clickEvent)=\"clickOnFavoriteEvent.emit()\"\n class=\"absolute left-1 top-1\"\n ></sc-favorite-btn>\n</div>\n", styles: [":host[data-size=m] a.category-btn{width:100%;height:12.5rem}:host[data-size=m] a.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=m] a.category-btn .name{min-height:2.5rem;padding-inline:.75rem;margin-block:.75rem}:host[data-size=m] a.category-btn .name:not([data-is-hovered=true]){max-height:2.5rem}:host[data-size=m] a.category-btn .name .skeleton-name{width:10rem;height:1rem}:host[data-size=s] a.category-btn{width:100%;height:10rem}:host[data-size=s] a.category-btn .img-wrapper{max-height:8.75rem}:host[data-size=s] a.category-btn .name{min-height:2rem;font-size:.75rem;line-height:1rem;padding-inline:.5rem;margin-block:.5rem}:host[data-size=s] a.category-btn .name:not([data-is-hovered=true]){max-height:2rem}:host[data-size=s] a.category-btn .name .skeleton-name{width:7rem;height:.75rem}\n"] }]
3256
3258
  }], ctorParameters: () => [{ type: undefined, decorators: [{
3257
3259
  type: Inject,
3258
3260
  args: [SC_URLS]
@@ -3271,6 +3273,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
3271
3273
  args: ['attr.data-size']
3272
3274
  }], isSkeleton: [{
3273
3275
  type: Input
3276
+ }], href: [{
3277
+ type: Input
3274
3278
  }], isHovered: [{
3275
3279
  type: Input
3276
3280
  }], clickOnCardEvent: [{