@snabcentr/client-ui 0.30.2 → 0.31.0
Sign up to get free protection for your applications and to get access to all the features.
- package/catalog/categories-list/sc-categories-list.component.d.ts +4 -2
- package/esm2020/catalog/categories-list/sc-categories-list.component.mjs +20 -12
- package/fesm2015/snabcentr-client-ui.mjs +17 -11
- package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
- package/fesm2020/snabcentr-client-ui.mjs +17 -10
- package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/tailwind/tailwind.scss +8 -0
@@ -1,11 +1,12 @@
|
|
1
1
|
import { ChangeDetectorRef, EventEmitter, OnInit } from '@angular/core';
|
2
|
-
import { ScFavoriteService, ScIUrls } from '@snabcentr/client-core';
|
2
|
+
import { ScFavoriteService, ScITerminalProvider, ScIUrls } from '@snabcentr/client-core';
|
3
3
|
import * as i0 from "@angular/core";
|
4
4
|
/**
|
5
5
|
* Компонент списка категорий.
|
6
6
|
*/
|
7
7
|
export declare class ScCategoriesListComponent<T extends object> implements OnInit {
|
8
8
|
private readonly urls;
|
9
|
+
readonly terminal: ScITerminalProvider;
|
9
10
|
private readonly favoriteService;
|
10
11
|
private readonly cdr;
|
11
12
|
/**
|
@@ -24,10 +25,11 @@ export declare class ScCategoriesListComponent<T extends object> implements OnIn
|
|
24
25
|
* Инициализирует экземпляр класса {@link ScCategoriesListComponent}.
|
25
26
|
*
|
26
27
|
* @param urls объект информации о базовом списке ссылок приложения.
|
28
|
+
* @param terminal Данные о запуске приложения на терминале.
|
27
29
|
* @param favoriteService Сервис для работы с корзиной.
|
28
30
|
* @param cdr Объект для работы с обнаружением изменений.
|
29
31
|
*/
|
30
|
-
constructor(urls: ScIUrls, favoriteService: ScFavoriteService, cdr: ChangeDetectorRef);
|
32
|
+
constructor(urls: ScIUrls, terminal: ScITerminalProvider, favoriteService: ScFavoriteService, cdr: ChangeDetectorRef);
|
31
33
|
/** @inheritDoc */
|
32
34
|
ngOnInit(): void;
|
33
35
|
/**
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import { __decorate } from "tslib";
|
2
|
-
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any,class-methods-use-this,lodash/prefer-some,lodash/prefer-lodash-method,no-param-reassign */
|
3
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, inject, Input, Output } from '@angular/core';
|
3
4
|
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
4
|
-
import { SC_URLS } from '@snabcentr/client-core';
|
5
|
+
import { IS_RUNNING_ON_TERMINAL, SC_URLS, TERMINAL_PROVIDERS } from '@snabcentr/client-core';
|
5
6
|
import { TUI_IS_MOBILE, tuiPure } from '@taiga-ui/cdk';
|
6
7
|
import { filter, tap } from 'rxjs';
|
7
8
|
import * as i0 from "@angular/core";
|
@@ -17,11 +18,13 @@ let ScCategoriesListComponent = class ScCategoriesListComponent {
|
|
17
18
|
* Инициализирует экземпляр класса {@link ScCategoriesListComponent}.
|
18
19
|
*
|
19
20
|
* @param urls объект информации о базовом списке ссылок приложения.
|
21
|
+
* @param terminal Данные о запуске приложения на терминале.
|
20
22
|
* @param favoriteService Сервис для работы с корзиной.
|
21
23
|
* @param cdr Объект для работы с обнаружением изменений.
|
22
24
|
*/
|
23
|
-
constructor(urls, favoriteService, cdr) {
|
25
|
+
constructor(urls, terminal, favoriteService, cdr) {
|
24
26
|
this.urls = urls;
|
27
|
+
this.terminal = terminal;
|
25
28
|
this.favoriteService = favoriteService;
|
26
29
|
this.cdr = cdr;
|
27
30
|
/**
|
@@ -36,12 +39,14 @@ let ScCategoriesListComponent = class ScCategoriesListComponent {
|
|
36
39
|
/** @inheritDoc */
|
37
40
|
ngOnInit() {
|
38
41
|
this.favoriteService.categories$
|
39
|
-
.pipe(filter(() => !!this.categories &&
|
40
|
-
this.categories
|
41
|
-
category.isFavorite = categories.findIndex(item => category.id === item.id) !== -1;
|
42
|
+
.pipe(filter(() => !!this.categories && this.categories.length > 0 && 'id' in this.categories[0]), tap((categories) => {
|
43
|
+
this.categories.forEach((category) => {
|
44
|
+
category.isFavorite = categories.findIndex((item) => category.id === item.id) !== -1;
|
42
45
|
});
|
43
46
|
}), untilDestroyed(this))
|
44
|
-
.subscribe(() =>
|
47
|
+
.subscribe(() => {
|
48
|
+
this.cdr.markForCheck();
|
49
|
+
});
|
45
50
|
}
|
46
51
|
/**
|
47
52
|
* Возвращает путь до изображения на сервере.
|
@@ -49,7 +54,7 @@ let ScCategoriesListComponent = class ScCategoriesListComponent {
|
|
49
54
|
* @param imgPath путь, где хранится изображение.
|
50
55
|
*/
|
51
56
|
getCategoryImage(imgPath) {
|
52
|
-
return this.urls.imgServerUrl
|
57
|
+
return `${this.urls.imgServerUrl}/${imgPath}`;
|
53
58
|
}
|
54
59
|
/**
|
55
60
|
* Проверяет наличие хотя бы одного изображения.
|
@@ -61,8 +66,8 @@ let ScCategoriesListComponent = class ScCategoriesListComponent {
|
|
61
66
|
return categories.some((item) => item.properties?.image);
|
62
67
|
}
|
63
68
|
};
|
64
|
-
ScCategoriesListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCategoriesListComponent, deps: [{ token: SC_URLS }, { token: i1.ScFavoriteService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
65
|
-
ScCategoriesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScCategoriesListComponent, selector: "sc-categories-list", inputs: { categories: "categories" }, outputs: { clickCategoryEvent: "clickCategoryEvent" }, ngImport: i0, template: "<div class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\">\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-svg\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n src=\"tuiIconCameraOffLarge\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-svg>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-svg\n *ngIf=\"item.isFavorite\"\n src=\"scIconFavoriteFill\"\n class=\"mr-auto !text-sm text-tui-primary\"\n ></tui-svg>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i4.TuiRepeatTimesDirective, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
69
|
+
ScCategoriesListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCategoriesListComponent, deps: [{ token: SC_URLS }, { token: IS_RUNNING_ON_TERMINAL }, { token: i1.ScFavoriteService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
70
|
+
ScCategoriesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScCategoriesListComponent, selector: "sc-categories-list", inputs: { categories: "categories" }, outputs: { clickCategoryEvent: "clickCategoryEvent" }, providers: [TERMINAL_PROVIDERS], ngImport: i0, template: "<div\n [ngClass]=\"{ '!flex !flex-col': terminal.isRunningOnTerminal }\"\n class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\"\n>\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-svg\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n src=\"tuiIconCameraOffLarge\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-svg>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-svg\n *ngIf=\"item.isFavorite\"\n src=\"scIconFavoriteFill\"\n class=\"mr-auto !text-sm text-tui-primary\"\n ></tui-svg>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i4.TuiRepeatTimesDirective, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
66
71
|
__decorate([
|
67
72
|
tuiPure
|
68
73
|
], ScCategoriesListComponent.prototype, "checkImagesExists", null);
|
@@ -72,13 +77,16 @@ ScCategoriesListComponent = __decorate([
|
|
72
77
|
export { ScCategoriesListComponent };
|
73
78
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCategoriesListComponent, decorators: [{
|
74
79
|
type: Component,
|
75
|
-
args: [{ selector: 'sc-categories-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\">\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-svg\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n src=\"tuiIconCameraOffLarge\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-svg>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-svg\n *ngIf=\"item.isFavorite\"\n src=\"scIconFavoriteFill\"\n class=\"mr-auto !text-sm text-tui-primary\"\n ></tui-svg>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n</ng-template>\n" }]
|
80
|
+
args: [{ selector: 'sc-categories-list', providers: [TERMINAL_PROVIDERS], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [ngClass]=\"{ '!flex !flex-col': terminal.isRunningOnTerminal }\"\n class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\"\n>\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-svg\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n src=\"tuiIconCameraOffLarge\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-svg>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-svg\n *ngIf=\"item.isFavorite\"\n src=\"scIconFavoriteFill\"\n class=\"mr-auto !text-sm text-tui-primary\"\n ></tui-svg>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n</ng-template>\n" }]
|
76
81
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
77
82
|
type: Inject,
|
78
83
|
args: [SC_URLS]
|
84
|
+
}] }, { type: undefined, decorators: [{
|
85
|
+
type: Inject,
|
86
|
+
args: [IS_RUNNING_ON_TERMINAL]
|
79
87
|
}] }, { type: i1.ScFavoriteService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { categories: [{
|
80
88
|
type: Input
|
81
89
|
}], clickCategoryEvent: [{
|
82
90
|
type: Output
|
83
91
|
}], checkImagesExists: [] } });
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcmllcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL2NhdGVnb3JpZXMtbGlzdC9zYy1jYXRlZ29yaWVzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcmllcy1saXN0L3NjLWNhdGVnb3JpZXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQTBDLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQUVuQzs7R0FFRztBQU9JLElBQU0seUJBQXlCLEdBQS9CLE1BQU0seUJBQXlCO0lBa0JsQzs7Ozs7O09BTUc7SUFDSCxZQUNzQyxJQUFhLEVBQzlCLGVBQWtDLEVBQ2xDLEdBQXNCO1FBRkwsU0FBSSxHQUFKLElBQUksQ0FBUztRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDbEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFyQjNDOztXQUVHO1FBQ2EsYUFBUSxHQUFZLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUxRDs7V0FFRztRQUVJLHVCQUFrQixHQUFvQixJQUFJLFlBQVksRUFBSyxDQUFDO0lBYWhFLENBQUM7SUFFSixrQkFBa0I7SUFDWCxRQUFRO1FBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXO2FBQzNCLElBQUksQ0FDRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDaEcsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDZCxJQUFJLENBQUMsVUFBMkIsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2xELFFBQVEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0YsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUN2QjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxPQUFlO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUVJLGlCQUFpQixDQUFDLFVBQWlCO1FBQ3RDLHNFQUFzRTtRQUN0RSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs7c0hBaEVRLHlCQUF5QixrQkEwQnRCLE9BQU87MEdBMUJWLHlCQUF5Qix1SkNmdEMsMHBGQXlEQTtBRG1CSTtJQURDLE9BQU87a0VBSVA7QUFoRVEseUJBQXlCO0lBRHJDLFlBQVksQ0FBQyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQztHQUMzQix5QkFBeUIsQ0FpRXJDO1NBakVZLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNJLG9CQUFvQixtQkFFYix1QkFBdUIsQ0FBQyxNQUFNOzswQkE2QjFDLE1BQU07MkJBQUMsT0FBTzs0R0FyQlosVUFBVTtzQkFEaEIsS0FBSztnQkFZQyxrQkFBa0I7c0JBRHhCLE1BQU07Z0JBOENBLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgU0NfVVJMUywgU2NDYXRlZ29yeSwgU2NGYXZvcml0ZVNlcnZpY2UsIFNjSVVybHMgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9JU19NT0JJTEUsIHR1aVB1cmUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IGZpbHRlciwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGB0L/QuNGB0LrQsCDQutCw0YLQtdCz0L7RgNC40LkuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtY2F0ZWdvcmllcy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtY2F0ZWdvcmllcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbkBVbnRpbERlc3Ryb3koeyBjaGVja1Byb3BlcnRpZXM6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBTY0NhdGVnb3JpZXNMaXN0Q29tcG9uZW50PFQgZXh0ZW5kcyBvYmplY3Q+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhdGVnb3JpZXM6IFRbXSB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPINGN0YLQvtGCINC60L7QvNC/0L7QvdC10L3RgiDQvdCwINC80L7QsdC40LvRjNC90L7QvCDRg9GB0YLRgNC+0LnRgdGC0LLQtSDQuNC70Lgg0L3QtdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbiA9IGluamVjdChUVUlfSVNfTU9CSUxFKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQsNGC0LXQs9C+0YDQuNGOLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbGlja0NhdGVnb3J5RXZlbnQ6IEV2ZW50RW1pdHRlcjxUPiA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NDYXRlZ29yaWVzTGlzdENvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJscyDQvtCx0YrQtdC60YIg0LjQvdGE0L7RgNC80LDRhtC40Lgg0L4g0LHQsNC30L7QstC+0Lwg0YHQv9C40YHQutC1INGB0YHRi9C70L7QuiDQv9GA0LjQu9C+0LbQtdC90LjRjy5cbiAgICAgKiBAcGFyYW0gZmF2b3JpdGVTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7RgNC30LjQvdC+0LkuXG4gICAgICogQHBhcmFtIGNkciDQntCx0YrQtdC60YIg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQvtCx0L3QsNGA0YPQttC10L3QuNC10Lwg0LjQt9C80LXQvdC10L3QuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTQ19VUkxTKSBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmF2b3JpdGVTZXJ2aWNlOiBTY0Zhdm9yaXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhdm9yaXRlU2VydmljZS5jYXRlZ29yaWVzJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5jYXRlZ29yaWVzICYmIEJvb2xlYW4odGhpcy5jYXRlZ29yaWVzLmxlbmd0aCkgJiYgJ2lkJyBpbiB0aGlzLmNhdGVnb3JpZXNbMF0pLFxuICAgICAgICAgICAgICAgIHRhcCgoY2F0ZWdvcmllcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5jYXRlZ29yaWVzIGFzIFNjQ2F0ZWdvcnlbXSk/LmZvckVhY2goY2F0ZWdvcnkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkuaXNGYXZvcml0ZSA9IGNhdGVnb3JpZXMuZmluZEluZGV4KGl0ZW0gPT4gY2F0ZWdvcnkuaWQgPT09IGl0ZW0uaWQpICE9PSAtMTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0YPRgtGMINC00L4g0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQvdCwINGB0LXRgNCy0LXRgNC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGltZ1BhdGgg0L/Rg9GC0YwsINCz0LTQtSDRhdGA0LDQvdC40YLRgdGPINC40LfQvtCx0YDQsNC20LXQvdC40LUuXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5SW1hZ2UoaW1nUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwgKyAnLycgKyBpbWdQYXRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiDQvdCw0LvQuNGH0LjQtSDRhdC+0YLRjyDQsdGLINC+0LTQvdC+0LPQviDQuNC30L7QsdGA0LDQttC10L3QuNGPLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3JpZXMg0KHQv9C40YHQvtC6INC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBAdHVpUHVyZVxuICAgIHB1YmxpYyBjaGVja0ltYWdlc0V4aXN0cyhjYXRlZ29yaWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzXG4gICAgICAgIHJldHVybiBjYXRlZ29yaWVzLnNvbWUoKGl0ZW0pID0+IGl0ZW0ucHJvcGVydGllcz8uaW1hZ2UpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy1bcmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMjFyZW0sMWZyKSldIGdhcC14LTggZ2FwLXktMlwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXRlZ29yaWVzOyBlbHNlIGNhdGVnb3JpZXNTa2VsZXRvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiAkYW55KGNhdGVnb3JpZXMpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAgZmxleCBoLTExIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyIHB4LTMgcHktMS41IHRleHQtbGVmdCByaW5nLXR1aS1wcmltYXJ5IGR1cmF0aW9uLTE1MCBob3Zlci1ob3Zlcjpob3ZlcjpyaW5nLTIgaG92ZXItbm9uZTphY3RpdmU6cmluZy0yXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGlja0NhdGVnb3J5RXZlbnQuZW1pdChpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0ucHJvcGVydGllcz8uaW1hZ2UgYXMgaW1hZ2VcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0Q2F0ZWdvcnlJbWFnZShpbWFnZSlcIlxuICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNpemUtOCByb3VuZGVkIGJnLXR1aS1iYXNlLTAzIG9iamVjdC1jb3ZlclwiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8dHVpLXN2Z1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0ucHJvcGVydGllcz8uaW1hZ2UgJiYgY2hlY2tJbWFnZXNFeGlzdHMoY2F0ZWdvcmllcylcIlxuICAgICAgICAgICAgICAgIHNyYz1cInR1aUljb25DYW1lcmFPZmZMYXJnZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCIhaC04ICF3LTggcm91bmRlZCBiZy10dWktYmFzZS0wMyB0ZXh0LXR1aS1iYXNlLTA1XCJcbiAgICAgICAgICAgID48L3R1aS1zdmc+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBncm93IGZsZXgtY29sIHRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ3JvdyB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRydW5jYXRlIHRleHQtYmFzZSBmb250LWJvbGRcIj57eyBpdGVtLm5hbWUgfX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uaXNGYXZvcml0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJzY0ljb25GYXZvcml0ZUZpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtci1hdXRvICF0ZXh0LXNtIHRleHQtdHVpLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICA+PC90dWktc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5tMlByaWNlIGFzIG0yUHJpY2VcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQteHMgZm9udC1tZWRpdW0gdGV4dC10dWktdGV4dC0wMlwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDQodGA0LXQtNC90Y/RjyDRgdGC0L7QuNC80L7RgdGC0YwgPHNwYW4gW2lubmVySFRNTF09XCJtMlByaWNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8dHVpLXN2Z1xuICAgICAgICAgICAgICAgIHNyYz1cInR1aUljb25DaGV2cm9uUmlnaHRMYXJnZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkdXJhdGlvbi0xNTAgaG92ZXItaG92ZXI6Z3JvdXAtaG92ZXI6dGV4dC10dWktcHJpbWFyeSBob3Zlci1ub25lOmdyb3VwLWFjdGl2ZTp0ZXh0LXR1aS1wcmltYXJ5XCJcbiAgICAgICAgICAgID48L3R1aS1zdmc+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY2F0ZWdvcmllc1NrZWxldG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgKnR1aVJlcGVhdFRpbWVzPVwibGV0IGluZGV4IG9mIGlzTW9iaWxlID8gMyA6IDZcIlxuICAgICAgICBjbGFzcz1cImdyb3VwIGZsZXggaC0xMSBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC14bCBiZy10dWktYmFzZS0wMiBweC0zIHB5LTEuNSB0ZXh0LWxlZnQgcmluZy10dWktYmFzZS0wNSBkdXJhdGlvbi0xNTAgaG92ZXItaG92ZXI6aG92ZXI6cmluZy0yIGhvdmVyLW5vbmU6YWN0aXZlOnJpbmctMlwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHVpLXNrZWxldG9uIHNpemUtOFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHVpLXNrZWxldG9uIGgtNCBncm93XCI+PC9kaXY+XG4gICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICBzcmM9XCJ0dWlJY29uQ2hldnJvblJpZ2h0TGFyZ2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0dWktc2tlbGV0b24gZHVyYXRpb24tMTUwIGhvdmVyLWhvdmVyOmdyb3VwLWhvdmVyOnRleHQtdHVpLXByaW1hcnkgaG92ZXItbm9uZTpncm91cC1hY3RpdmU6dGV4dC10dWktcHJpbWFyeVwiXG4gICAgICAgID48L3R1aS1zdmc+XG4gICAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcmllcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL2NhdGVnb3JpZXMtbGlzdC9zYy1jYXRlZ29yaWVzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcmllcy1saXN0L3NjLWNhdGVnb3JpZXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0lBQStJO0FBRS9JLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUErRCxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFKLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFFbkM7O0dBRUc7QUFRSSxJQUFNLHlCQUF5QixHQUEvQixNQUFNLHlCQUF5QjtJQWtCbEM7Ozs7Ozs7T0FPRztJQUNILFlBRXFCLElBQWEsRUFFZCxRQUE2QixFQUM1QixlQUFrQyxFQUNsQyxHQUFzQjtRQUp0QixTQUFJLEdBQUosSUFBSSxDQUFTO1FBRWQsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFDNUIsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ2xDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBekIzQzs7V0FFRztRQUNhLGFBQVEsR0FBWSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFMUQ7O1dBRUc7UUFFSSx1QkFBa0IsR0FBb0IsSUFBSSxZQUFZLEVBQUssQ0FBQztJQWlCaEUsQ0FBQztJQUVKLGtCQUFrQjtJQUNYLFFBQVE7UUFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVc7YUFDM0IsSUFBSSxDQUNELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDM0YsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDZCxJQUFJLENBQUMsVUFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbkQsUUFBUSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN6RixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxFQUNGLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FDdkI7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZ0JBQWdCLENBQUMsT0FBZTtRQUNuQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksT0FBTyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFFSSxpQkFBaUIsQ0FBQyxVQUFpQjtRQUN0QyxzRUFBc0U7UUFDdEUsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUM7O3NIQXRFUSx5QkFBeUIsa0JBMkJ0QixPQUFPLGFBRVAsc0JBQXNCOzBHQTdCekIseUJBQXlCLDBJQUp2QixDQUFDLGtCQUFrQixDQUFDLDBCQ2RuQyx3dUZBNERBO0FEeUJJO0lBREMsT0FBTztrRUFJUDtBQXRFUSx5QkFBeUI7SUFEckMsWUFBWSxDQUFDLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDO0dBQzNCLHlCQUF5QixDQXVFckM7U0F2RVkseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBUHJDLFNBQVM7K0JBQ0ksb0JBQW9CLGFBRW5CLENBQUMsa0JBQWtCLENBQUMsbUJBQ2QsdUJBQXVCLENBQUMsTUFBTTs7MEJBOEIxQyxNQUFNOzJCQUFDLE9BQU87OzBCQUVkLE1BQU07MkJBQUMsc0JBQXNCOzRHQXhCM0IsVUFBVTtzQkFEaEIsS0FBSztnQkFZQyxrQkFBa0I7c0JBRHhCLE1BQU07Z0JBb0RBLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksY2xhc3MtbWV0aG9kcy11c2UtdGhpcyxsb2Rhc2gvcHJlZmVyLXNvbWUsbG9kYXNoL3ByZWZlci1sb2Rhc2gtbWV0aG9kLG5vLXBhcmFtLXJlYXNzaWduICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgSVNfUlVOTklOR19PTl9URVJNSU5BTCwgU0NfVVJMUywgU2NDYXRlZ29yeSwgU2NGYXZvcml0ZVNlcnZpY2UsIFNjSVRlcm1pbmFsUHJvdmlkZXIsIFNjSVVybHMsIFRFUk1JTkFMX1BST1ZJREVSUyB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVFVJX0lTX01PQklMRSwgdHVpUHVyZSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YXAgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YHQv9C40YHQutCwINC60LDRgtC10LPQvtGA0LjQuS5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1jYXRlZ29yaWVzLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1jYXRlZ29yaWVzLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1RFUk1JTkFMX1BST1ZJREVSU10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuQFVudGlsRGVzdHJveSh7IGNoZWNrUHJvcGVydGllczogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIFNjQ2F0ZWdvcmllc0xpc3RDb21wb25lbnQ8VCBleHRlbmRzIG9iamVjdD4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2F0ZWdvcmllczogVFtdIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDQvtGC0L7QsdGA0LDQttCw0LXRgtGB0Y8g0Y3RgtC+0YIg0LrQvtC80L/QvtC90LXQvdGCINC90LAg0LzQvtCx0LjQu9GM0L3QvtC8INGD0YHRgtGA0L7QudGB0YLQstC1INC40LvQuCDQvdC10YIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuID0gaW5qZWN0KFRVSV9JU19NT0JJTEUpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutCw0YLQtdCz0L7RgNC40Y4uXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsaWNrQ2F0ZWdvcnlFdmVudDogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0NhdGVnb3JpZXNMaXN0Q29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cmxzINC+0LHRitC10LrRgiDQuNC90YTQvtGA0LzQsNGG0LjQuCDQviDQsdCw0LfQvtCy0L7QvCDRgdC/0LjRgdC60LUg0YHRgdGL0LvQvtC6INC/0YDQuNC70L7QttC10L3QuNGPLlxuICAgICAqIEBwYXJhbSB0ZXJtaW5hbCDQlNCw0L3QvdGL0LUg0L4g0LfQsNC/0YPRgdC60LUg0L/RgNC40LvQvtC20LXQvdC40Y8g0L3QsCDRgtC10YDQvNC40L3QsNC70LUuXG4gICAgICogQHBhcmFtIGZhdm9yaXRlU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutC+0YDQt9C40L3QvtC5LlxuICAgICAqIEBwYXJhbSBjZHIg0J7QsdGK0LXQutGCINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0L7QsdC90LDRgNGD0LbQtdC90LjQtdC8INC40LfQvNC10L3QtdC90LjQuS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoU0NfVVJMUylcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1cmxzOiBTY0lVcmxzLFxuICAgICAgICBASW5qZWN0KElTX1JVTk5JTkdfT05fVEVSTUlOQUwpXG4gICAgICAgIHB1YmxpYyByZWFkb25seSB0ZXJtaW5hbDogU2NJVGVybWluYWxQcm92aWRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmYXZvcml0ZVNlcnZpY2U6IFNjRmF2b3JpdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmF2b3JpdGVTZXJ2aWNlLmNhdGVnb3JpZXMkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLmNhdGVnb3JpZXMgJiYgdGhpcy5jYXRlZ29yaWVzLmxlbmd0aCA+IDAgJiYgJ2lkJyBpbiB0aGlzLmNhdGVnb3JpZXNbMF0pLFxuICAgICAgICAgICAgICAgIHRhcCgoY2F0ZWdvcmllcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5jYXRlZ29yaWVzIGFzIFNjQ2F0ZWdvcnlbXSkuZm9yRWFjaCgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5LmlzRmF2b3JpdGUgPSBjYXRlZ29yaWVzLmZpbmRJbmRleCgoaXRlbSkgPT4gY2F0ZWdvcnkuaWQgPT09IGl0ZW0uaWQpICE9PSAtMTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L/Rg9GC0Ywg0LTQviDQuNC30L7QsdGA0LDQttC10L3QuNGPINC90LAg0YHQtdGA0LLQtdGA0LUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaW1nUGF0aCDQv9GD0YLRjCwg0LPQtNC1INGF0YDQsNC90LjRgtGB0Y8g0LjQt9C+0LHRgNCw0LbQtdC90LjQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2F0ZWdvcnlJbWFnZShpbWdQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy51cmxzLmltZ1NlcnZlclVybH0vJHtpbWdQYXRofWA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC+0LLQtdGA0Y/QtdGCINC90LDQu9C40YfQuNC1INGF0L7RgtGPINCx0Ysg0L7QtNC90L7Qs9C+INC40LfQvtCx0YDQsNC20LXQvdC40Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcmllcyDQodC/0LjRgdC+0Log0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIEB0dWlQdXJlXG4gICAgcHVibGljIGNoZWNrSW1hZ2VzRXhpc3RzKGNhdGVnb3JpZXM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcbiAgICAgICAgcmV0dXJuIGNhdGVnb3JpZXMuc29tZSgoaXRlbSkgPT4gaXRlbS5wcm9wZXJ0aWVzPy5pbWFnZSk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFtuZ0NsYXNzXT1cInsgJyFmbGV4ICFmbGV4LWNvbCc6IHRlcm1pbmFsLmlzUnVubmluZ09uVGVybWluYWwgfVwiXG4gICAgY2xhc3M9XCJncmlkIGdyaWQtY29scy1bcmVwZWF0KGF1dG8tZmlsbCxtaW5tYXgoMjFyZW0sMWZyKSldIGdhcC14LTggZ2FwLXktMlwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhdGVnb3JpZXM7IGVsc2UgY2F0ZWdvcmllc1NrZWxldG9uXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mICRhbnkoY2F0ZWdvcmllcylcIlxuICAgICAgICAgICAgY2xhc3M9XCJncm91cCBmbGV4IGgtMTEgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQteGwgYmctdHVpLWJhc2UtMDIgcHgtMyBweS0xLjUgdGV4dC1sZWZ0IHJpbmctdHVpLXByaW1hcnkgZHVyYXRpb24tMTUwIGhvdmVyLWhvdmVyOmhvdmVyOnJpbmctMiBob3Zlci1ub25lOmFjdGl2ZTpyaW5nLTJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrQ2F0ZWdvcnlFdmVudC5lbWl0KGl0ZW0pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5wcm9wZXJ0aWVzPy5pbWFnZSBhcyBpbWFnZVwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXRDYXRlZ29yeUltYWdlKGltYWdlKVwiXG4gICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2l6ZS04IHJvdW5kZWQgYmctdHVpLWJhc2UtMDMgb2JqZWN0LWNvdmVyXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbS5wcm9wZXJ0aWVzPy5pbWFnZSAmJiBjaGVja0ltYWdlc0V4aXN0cyhjYXRlZ29yaWVzKVwiXG4gICAgICAgICAgICAgICAgc3JjPVwidHVpSWNvbkNhbWVyYU9mZkxhcmdlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIiFoLTggIXctOCByb3VuZGVkIGJnLXR1aS1iYXNlLTAzIHRleHQtdHVpLWJhc2UtMDVcIlxuICAgICAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdyb3cgZmxleC1jb2wgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBncm93IHRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1iYXNlIGZvbnQtYm9sZFwiPnt7IGl0ZW0ubmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pc0Zhdm9yaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cInNjSWNvbkZhdm9yaXRlRmlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLWF1dG8gIXRleHQtc20gdGV4dC10dWktcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgID48L3R1aS1zdmc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLm0yUHJpY2UgYXMgbTJQcmljZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXR1aS10ZXh0LTAyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgINCh0YDQtdC00L3Rj9GPINGB0YLQvtC40LzQvtGB0YLRjCA8c3BhbiBbaW5uZXJIVE1MXT1cIm0yUHJpY2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAgICAgc3JjPVwidHVpSWNvbkNoZXZyb25SaWdodExhcmdlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImR1cmF0aW9uLTE1MCBob3Zlci1ob3Zlcjpncm91cC1ob3Zlcjp0ZXh0LXR1aS1wcmltYXJ5IGhvdmVyLW5vbmU6Z3JvdXAtYWN0aXZlOnRleHQtdHVpLXByaW1hcnlcIlxuICAgICAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjYXRlZ29yaWVzU2tlbGV0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICAqdHVpUmVwZWF0VGltZXM9XCJsZXQgaW5kZXggb2YgaXNNb2JpbGUgPyAzIDogNlwiXG4gICAgICAgIGNsYXNzPVwiZ3JvdXAgZmxleCBoLTExIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyIHB4LTMgcHktMS41IHRleHQtbGVmdCByaW5nLXR1aS1iYXNlLTA1IGR1cmF0aW9uLTE1MCBob3Zlci1ob3Zlcjpob3ZlcjpyaW5nLTIgaG92ZXItbm9uZTphY3RpdmU6cmluZy0yXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0dWktc2tlbGV0b24gc2l6ZS04XCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0dWktc2tlbGV0b24gaC00IGdyb3dcIj48L2Rpdj5cbiAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgIHNyYz1cInR1aUljb25DaGV2cm9uUmlnaHRMYXJnZVwiXG4gICAgICAgICAgICBjbGFzcz1cInR1aS1za2VsZXRvbiBkdXJhdGlvbi0xNTAgaG92ZXItaG92ZXI6Z3JvdXAtaG92ZXI6dGV4dC10dWktcHJpbWFyeSBob3Zlci1ub25lOmdyb3VwLWFjdGl2ZTp0ZXh0LXR1aS1wcmltYXJ5XCJcbiAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
2
|
import { EventEmitter, Component, ChangeDetectionStrategy, Inject, Input, Output, SkipSelf, Directive, HostBinding, ContentChild, ViewChild, NgModule, Optional, Injectable, ElementRef, ContentChildren, HostListener, ChangeDetectorRef, Self, inject, InjectionToken, forwardRef } from '@angular/core';
|
3
3
|
import * as i1 from '@snabcentr/client-core';
|
4
|
-
import { ScUserMetrikaGoalsEnum, ScISuggestionType, ScOpfList, SC_URLS, SC_PATH_IMAGE_NOT_FOUND, ScWarehouseService, ScAuthService, SEARCH_TERM, ScImageHelper, SEARCH_TERM_PROVIDERS, ScCatalogService, ScCartService, ScIconTypesEnum, ScUserService } from '@snabcentr/client-core';
|
4
|
+
import { ScUserMetrikaGoalsEnum, ScISuggestionType, ScOpfList, SC_URLS, SC_PATH_IMAGE_NOT_FOUND, IS_RUNNING_ON_TERMINAL, TERMINAL_PROVIDERS, ScWarehouseService, ScAuthService, SEARCH_TERM, ScImageHelper, SEARCH_TERM_PROVIDERS, ScCatalogService, ScCartService, ScIconTypesEnum, ScUserService } from '@snabcentr/client-core';
|
5
5
|
import * as i5 from 'rxjs';
|
6
6
|
import { Subject, map, filter, switchMap, tap, catchError, of, finalize, startWith, share, timer, scan, takeWhile, endWith, distinctUntilChanged, combineLatest, debounceTime, throwError, shareReplay, interval, takeUntil, skip, merge } from 'rxjs';
|
7
7
|
import * as i2 from '@angular/common';
|
@@ -2969,11 +2969,13 @@ let ScCategoriesListComponent = class ScCategoriesListComponent {
|
|
2969
2969
|
* Инициализирует экземпляр класса {@link ScCategoriesListComponent}.
|
2970
2970
|
*
|
2971
2971
|
* @param urls объект информации о базовом списке ссылок приложения.
|
2972
|
+
* @param terminal Данные о запуске приложения на терминале.
|
2972
2973
|
* @param favoriteService Сервис для работы с корзиной.
|
2973
2974
|
* @param cdr Объект для работы с обнаружением изменений.
|
2974
2975
|
*/
|
2975
|
-
constructor(urls, favoriteService, cdr) {
|
2976
|
+
constructor(urls, terminal, favoriteService, cdr) {
|
2976
2977
|
this.urls = urls;
|
2978
|
+
this.terminal = terminal;
|
2977
2979
|
this.favoriteService = favoriteService;
|
2978
2980
|
this.cdr = cdr;
|
2979
2981
|
/**
|
@@ -2988,13 +2990,14 @@ let ScCategoriesListComponent = class ScCategoriesListComponent {
|
|
2988
2990
|
/** @inheritDoc */
|
2989
2991
|
ngOnInit() {
|
2990
2992
|
this.favoriteService.categories$
|
2991
|
-
.pipe(filter(() => !!this.categories &&
|
2992
|
-
|
2993
|
-
|
2994
|
-
category.isFavorite = categories.findIndex(item => category.id === item.id) !== -1;
|
2993
|
+
.pipe(filter(() => !!this.categories && this.categories.length > 0 && 'id' in this.categories[0]), tap((categories) => {
|
2994
|
+
this.categories.forEach((category) => {
|
2995
|
+
category.isFavorite = categories.findIndex((item) => category.id === item.id) !== -1;
|
2995
2996
|
});
|
2996
2997
|
}), untilDestroyed(this))
|
2997
|
-
.subscribe(() =>
|
2998
|
+
.subscribe(() => {
|
2999
|
+
this.cdr.markForCheck();
|
3000
|
+
});
|
2998
3001
|
}
|
2999
3002
|
/**
|
3000
3003
|
* Возвращает путь до изображения на сервере.
|
@@ -3002,7 +3005,7 @@ let ScCategoriesListComponent = class ScCategoriesListComponent {
|
|
3002
3005
|
* @param imgPath путь, где хранится изображение.
|
3003
3006
|
*/
|
3004
3007
|
getCategoryImage(imgPath) {
|
3005
|
-
return this.urls.imgServerUrl
|
3008
|
+
return `${this.urls.imgServerUrl}/${imgPath}`;
|
3006
3009
|
}
|
3007
3010
|
/**
|
3008
3011
|
* Проверяет наличие хотя бы одного изображения.
|
@@ -3014,8 +3017,8 @@ let ScCategoriesListComponent = class ScCategoriesListComponent {
|
|
3014
3017
|
return categories.some((item) => { var _a; return (_a = item.properties) === null || _a === void 0 ? void 0 : _a.image; });
|
3015
3018
|
}
|
3016
3019
|
};
|
3017
|
-
ScCategoriesListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCategoriesListComponent, deps: [{ token: SC_URLS }, { token: i1.ScFavoriteService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
3018
|
-
ScCategoriesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScCategoriesListComponent, selector: "sc-categories-list", inputs: { categories: "categories" }, outputs: { clickCategoryEvent: "clickCategoryEvent" }, ngImport: i0, template: "<div class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\">\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-svg\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n src=\"tuiIconCameraOffLarge\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-svg>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-svg\n *ngIf=\"item.isFavorite\"\n src=\"scIconFavoriteFill\"\n class=\"mr-auto !text-sm text-tui-primary\"\n ></tui-svg>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i6.TuiRepeatTimesDirective, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
3020
|
+
ScCategoriesListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCategoriesListComponent, deps: [{ token: SC_URLS }, { token: IS_RUNNING_ON_TERMINAL }, { token: i1.ScFavoriteService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
3021
|
+
ScCategoriesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScCategoriesListComponent, selector: "sc-categories-list", inputs: { categories: "categories" }, outputs: { clickCategoryEvent: "clickCategoryEvent" }, providers: [TERMINAL_PROVIDERS], ngImport: i0, template: "<div\n [ngClass]=\"{ '!flex !flex-col': terminal.isRunningOnTerminal }\"\n class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\"\n>\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-svg\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n src=\"tuiIconCameraOffLarge\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-svg>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-svg\n *ngIf=\"item.isFavorite\"\n src=\"scIconFavoriteFill\"\n class=\"mr-auto !text-sm text-tui-primary\"\n ></tui-svg>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i6.TuiRepeatTimesDirective, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
3019
3022
|
__decorate([
|
3020
3023
|
tuiPure
|
3021
3024
|
], ScCategoriesListComponent.prototype, "checkImagesExists", null);
|
@@ -3024,11 +3027,14 @@ ScCategoriesListComponent = __decorate([
|
|
3024
3027
|
], ScCategoriesListComponent);
|
3025
3028
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCategoriesListComponent, decorators: [{
|
3026
3029
|
type: Component,
|
3027
|
-
args: [{ selector: 'sc-categories-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\">\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-svg\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n src=\"tuiIconCameraOffLarge\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-svg>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-svg\n *ngIf=\"item.isFavorite\"\n src=\"scIconFavoriteFill\"\n class=\"mr-auto !text-sm text-tui-primary\"\n ></tui-svg>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n</ng-template>\n" }]
|
3030
|
+
args: [{ selector: 'sc-categories-list', providers: [TERMINAL_PROVIDERS], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [ngClass]=\"{ '!flex !flex-col': terminal.isRunningOnTerminal }\"\n class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\"\n>\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <button\n *ngFor=\"let item of $any(categories)\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n (click)=\"clickCategoryEvent.emit(item)\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-svg\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n src=\"tuiIconCameraOffLarge\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-svg>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-svg\n *ngIf=\"item.isFavorite\"\n src=\"scIconFavoriteFill\"\n class=\"mr-auto !text-sm text-tui-primary\"\n ></tui-svg>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-svg\n src=\"tuiIconChevronRightLarge\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-svg>\n </button>\n</ng-template>\n" }]
|
3028
3031
|
}], ctorParameters: function () {
|
3029
3032
|
return [{ type: undefined, decorators: [{
|
3030
3033
|
type: Inject,
|
3031
3034
|
args: [SC_URLS]
|
3035
|
+
}] }, { type: undefined, decorators: [{
|
3036
|
+
type: Inject,
|
3037
|
+
args: [IS_RUNNING_ON_TERMINAL]
|
3032
3038
|
}] }, { type: i1.ScFavoriteService }, { type: i0.ChangeDetectorRef }];
|
3033
3039
|
}, propDecorators: { categories: [{
|
3034
3040
|
type: Input
|