@snabcentr/client-ui 3.4.1 → 3.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @snabcentr/client-ui might be problematic. Click here for more details.
- package/catalog/category-card/sc-category-card.component.d.ts +1 -5
- package/catalog/cost-with-discount/cost-with-discount.component.d.ts +2 -2
- package/catalog/index.d.ts +0 -1
- package/catalog/price-card/sc-price-card.component.d.ts +6 -2
- package/catalog/sc-catalog.module.d.ts +12 -13
- package/esm2022/catalog/category-card/sc-category-card.component.mjs +7 -12
- package/esm2022/catalog/cost-with-discount/cost-with-discount.component.mjs +3 -3
- package/esm2022/catalog/index.mjs +1 -2
- package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +3 -3
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +18 -3
- package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +3 -3
- package/esm2022/catalog/sc-catalog.module.mjs +1 -6
- package/fesm2022/snabcentr-client-ui.mjs +55 -130
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/release_notes.tmp +14 -2
- package/styles/tailwind/tailwind.scss +15 -102
- package/catalog/categories-list/sc-categories-list.component.d.ts +0 -54
- package/esm2022/catalog/categories-list/sc-categories-list.component.mjs +0 -93
package/package.json
CHANGED
package/release_notes.tmp
CHANGED
@@ -1,4 +1,16 @@
|
|
1
|
-
## 3.4.
|
1
|
+
## 3.4.6 (2024-11-26)
|
2
2
|
|
3
|
-
|
3
|
+
### fixed (1 change)
|
4
|
+
|
5
|
+
- [#10710: Исправлено выравнивание контента в плитке товара](web_soft/libs/angular/snabcentr-client-ui-lib@8cf75ffdcfcbe392757856704e009d3f96856ca8) ([merge request](web_soft/libs/angular/snabcentr-client-ui-lib!192))
|
6
|
+
|
7
|
+
### added (1 change)
|
8
|
+
|
9
|
+
- [#10694: Добавлен фон горизонтальной плитки товара при наведении](web_soft/libs/angular/snabcentr-client-ui-lib@86e652628879584326ee46f16a541bb19932bf64) ([merge request](web_soft/libs/angular/snabcentr-client-ui-lib!193))
|
10
|
+
|
11
|
+
### changed (3 changes)
|
12
|
+
|
13
|
+
- [#10693, #10698: Доработаны карточки товара](web_soft/libs/angular/snabcentr-client-ui-lib@677bc07cfb9639c5db5a75d514d9ca0337572f15) ([merge request](web_soft/libs/angular/snabcentr-client-ui-lib!191))
|
14
|
+
- [#10489: Удалён компонент списка категорий, доработана карточка категорий](web_soft/libs/angular/snabcentr-client-ui-lib@dbda0009e6a87f427e56b713d923f4120ba90cd4) ([merge request](web_soft/libs/angular/snabcentr-client-ui-lib!190))
|
15
|
+
- [#10501: Доработан appearance кнопок удаления товара в плитках, добавлен...](web_soft/libs/angular/snabcentr-client-ui-lib@aa85a6ac3ea474e8bba774984ab1d04db04f7e18) ([merge request](web_soft/libs/angular/snabcentr-client-ui-lib!189))
|
4
16
|
|
@@ -746,6 +746,10 @@ video {
|
|
746
746
|
margin-bottom: 2rem;
|
747
747
|
}
|
748
748
|
|
749
|
+
.mb-auto {
|
750
|
+
margin-bottom: auto;
|
751
|
+
}
|
752
|
+
|
749
753
|
.ml-2 {
|
750
754
|
margin-left: 0.5rem;
|
751
755
|
}
|
@@ -754,14 +758,6 @@ video {
|
|
754
758
|
margin-right: 0.5rem;
|
755
759
|
}
|
756
760
|
|
757
|
-
.mr-auto {
|
758
|
-
margin-right: auto;
|
759
|
-
}
|
760
|
-
|
761
|
-
.mt-1 {
|
762
|
-
margin-top: 0.25rem;
|
763
|
-
}
|
764
|
-
|
765
761
|
.mt-2 {
|
766
762
|
margin-top: 0.5rem;
|
767
763
|
}
|
@@ -781,10 +777,6 @@ video {
|
|
781
777
|
display: inline;
|
782
778
|
}
|
783
779
|
|
784
|
-
.\!flex {
|
785
|
-
display: flex !important;
|
786
|
-
}
|
787
|
-
|
788
780
|
.flex {
|
789
781
|
display: flex;
|
790
782
|
}
|
@@ -833,11 +825,6 @@ video {
|
|
833
825
|
height: 1.5rem;
|
834
826
|
}
|
835
827
|
|
836
|
-
.size-8 {
|
837
|
-
width: 2rem;
|
838
|
-
height: 2rem;
|
839
|
-
}
|
840
|
-
|
841
828
|
.size-full {
|
842
829
|
width: 100%;
|
843
830
|
height: 100%;
|
@@ -851,18 +838,10 @@ video {
|
|
851
838
|
height: 1rem !important;
|
852
839
|
}
|
853
840
|
|
854
|
-
.\!h-8 {
|
855
|
-
height: 2rem !important;
|
856
|
-
}
|
857
|
-
|
858
841
|
.h-10 {
|
859
842
|
height: 2.5rem;
|
860
843
|
}
|
861
844
|
|
862
|
-
.h-11 {
|
863
|
-
height: 2.75rem;
|
864
|
-
}
|
865
|
-
|
866
845
|
.h-12 {
|
867
846
|
height: 3rem;
|
868
847
|
}
|
@@ -911,8 +890,8 @@ video {
|
|
911
890
|
max-height: 100%;
|
912
891
|
}
|
913
892
|
|
914
|
-
|
915
|
-
|
893
|
+
.min-h-8 {
|
894
|
+
min-height: 2rem;
|
916
895
|
}
|
917
896
|
|
918
897
|
.w-12 {
|
@@ -1029,14 +1008,6 @@ video {
|
|
1029
1008
|
resize: both;
|
1030
1009
|
}
|
1031
1010
|
|
1032
|
-
.grid-cols-\[repeat\(auto-fill\2c minmax\(21rem\2c 1fr\)\)\] {
|
1033
|
-
grid-template-columns: repeat(auto-fill,minmax(21rem,1fr));
|
1034
|
-
}
|
1035
|
-
|
1036
|
-
.\!flex-col {
|
1037
|
-
flex-direction: column !important;
|
1038
|
-
}
|
1039
|
-
|
1040
1011
|
.flex-col {
|
1041
1012
|
flex-direction: column;
|
1042
1013
|
}
|
@@ -1210,18 +1181,10 @@ video {
|
|
1210
1181
|
background-color: var(--tui-background-base-alt);
|
1211
1182
|
}
|
1212
1183
|
|
1213
|
-
.bg-tui-base-03 {
|
1214
|
-
background-color: var(--tui-background-neutral-1-hover);
|
1215
|
-
}
|
1216
|
-
|
1217
1184
|
.bg-tui-base-04 {
|
1218
1185
|
background-color: var(--tui-border-normal);
|
1219
1186
|
}
|
1220
1187
|
|
1221
|
-
.bg-tui-primary {
|
1222
|
-
background-color: var(--tui-background-accent-1);
|
1223
|
-
}
|
1224
|
-
|
1225
1188
|
.bg-white {
|
1226
1189
|
--tw-bg-opacity: 1;
|
1227
1190
|
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
@@ -1307,21 +1270,11 @@ video {
|
|
1307
1270
|
padding-right: 0.5rem;
|
1308
1271
|
}
|
1309
1272
|
|
1310
|
-
.px-3 {
|
1311
|
-
padding-left: 0.75rem;
|
1312
|
-
padding-right: 0.75rem;
|
1313
|
-
}
|
1314
|
-
|
1315
1273
|
.px-6 {
|
1316
1274
|
padding-left: 1.5rem;
|
1317
1275
|
padding-right: 1.5rem;
|
1318
1276
|
}
|
1319
1277
|
|
1320
|
-
.py-1\.5 {
|
1321
|
-
padding-top: 0.375rem;
|
1322
|
-
padding-bottom: 0.375rem;
|
1323
|
-
}
|
1324
|
-
|
1325
1278
|
.py-4\.5 {
|
1326
1279
|
padding-top: 1.125rem;
|
1327
1280
|
padding-bottom: 1.125rem;
|
@@ -1343,10 +1296,6 @@ video {
|
|
1343
1296
|
padding-top: 0.5rem;
|
1344
1297
|
}
|
1345
1298
|
|
1346
|
-
.text-left {
|
1347
|
-
text-align: left;
|
1348
|
-
}
|
1349
|
-
|
1350
1299
|
.text-center {
|
1351
1300
|
text-align: center;
|
1352
1301
|
}
|
@@ -1365,11 +1314,6 @@ video {
|
|
1365
1314
|
font-weight: 800 !important;
|
1366
1315
|
}
|
1367
1316
|
|
1368
|
-
.\!text-sm {
|
1369
|
-
font-size: 0.875rem !important;
|
1370
|
-
line-height: 1.25rem !important;
|
1371
|
-
}
|
1372
|
-
|
1373
1317
|
.\!text-xl {
|
1374
1318
|
font-size: 1.25rem !important;
|
1375
1319
|
line-height: 1.75rem !important;
|
@@ -1431,6 +1375,11 @@ video {
|
|
1431
1375
|
line-height: 1.25rem;
|
1432
1376
|
}
|
1433
1377
|
|
1378
|
+
.text-xl {
|
1379
|
+
font-size: 1.25rem;
|
1380
|
+
line-height: 1.75rem;
|
1381
|
+
}
|
1382
|
+
|
1434
1383
|
.text-xs {
|
1435
1384
|
font-size: 0.75rem;
|
1436
1385
|
line-height: 1rem;
|
@@ -1505,10 +1454,6 @@ video {
|
|
1505
1454
|
color: rgb(0 0 0 / var(--tw-text-opacity, 1));
|
1506
1455
|
}
|
1507
1456
|
|
1508
|
-
.text-tui-base-05 {
|
1509
|
-
color: var(--tui-border-hover);
|
1510
|
-
}
|
1511
|
-
|
1512
1457
|
.text-tui-base-07 {
|
1513
1458
|
color: var(--tui-background-accent-opposite-pressed);
|
1514
1459
|
}
|
@@ -1585,14 +1530,6 @@ video {
|
|
1585
1530
|
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
1586
1531
|
}
|
1587
1532
|
|
1588
|
-
.ring-tui-base-05 {
|
1589
|
-
--tw-ring-color: var(--tui-border-hover);
|
1590
|
-
}
|
1591
|
-
|
1592
|
-
.ring-tui-primary {
|
1593
|
-
--tw-ring-color: var(--tui-background-accent-1);
|
1594
|
-
}
|
1595
|
-
|
1596
1533
|
.blur {
|
1597
1534
|
--tw-blur: blur(8px);
|
1598
1535
|
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
|
@@ -1640,10 +1577,6 @@ video {
|
|
1640
1577
|
transition-duration: 150ms;
|
1641
1578
|
}
|
1642
1579
|
|
1643
|
-
.duration-150 {
|
1644
|
-
transition-duration: 150ms;
|
1645
|
-
}
|
1646
|
-
|
1647
1580
|
.duration-500 {
|
1648
1581
|
transition-duration: 500ms;
|
1649
1582
|
}
|
@@ -1664,6 +1597,10 @@ video {
|
|
1664
1597
|
k: string;
|
1665
1598
|
}
|
1666
1599
|
|
1600
|
+
.hover\:bg-tui-background-neutral-1:hover {
|
1601
|
+
background-color: var(--tui-background-neutral-1);
|
1602
|
+
}
|
1603
|
+
|
1667
1604
|
@media (min-width: 640px) {
|
1668
1605
|
.sm\:mr-9 {
|
1669
1606
|
margin-right: 2.25rem;
|
@@ -1765,28 +1702,4 @@ video {
|
|
1765
1702
|
.lg\:gap-4 {
|
1766
1703
|
gap: 1rem;
|
1767
1704
|
}
|
1768
|
-
}
|
1769
|
-
|
1770
|
-
@media (hover: hover) {
|
1771
|
-
.hover-hover\:hover\:ring-2:hover {
|
1772
|
-
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1773
|
-
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1774
|
-
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
1775
|
-
}
|
1776
|
-
|
1777
|
-
.group:hover .hover-hover\:group-hover\:text-tui-primary {
|
1778
|
-
color: var(--tui-background-accent-1);
|
1779
|
-
}
|
1780
|
-
}
|
1781
|
-
|
1782
|
-
@media (hover: none) {
|
1783
|
-
.hover-none\:active\:ring-2:active {
|
1784
|
-
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
1785
|
-
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
1786
|
-
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
1787
|
-
}
|
1788
|
-
|
1789
|
-
.group:active .hover-none\:group-active\:text-tui-primary {
|
1790
|
-
color: var(--tui-background-accent-1);
|
1791
|
-
}
|
1792
1705
|
}
|
@@ -1,54 +0,0 @@
|
|
1
|
-
import { ChangeDetectorRef, OnInit } from '@angular/core';
|
2
|
-
import { UrlTree } from '@angular/router';
|
3
|
-
import { ScFavoriteService, ScITerminalProvider, ScIUrls } from '@snabcentr/client-core';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
/**
|
6
|
-
* Компонент списка категорий.
|
7
|
-
*/
|
8
|
-
export declare class ScCategoriesListComponent<T extends object> implements OnInit {
|
9
|
-
private readonly urls;
|
10
|
-
readonly terminal: ScITerminalProvider;
|
11
|
-
private readonly favoriteService;
|
12
|
-
private readonly cdr;
|
13
|
-
/**
|
14
|
-
* Список категорий.
|
15
|
-
*/
|
16
|
-
categories: T[] | undefined | null;
|
17
|
-
/**
|
18
|
-
* Признак того, отображается этот компонент на мобильном устройстве или нет.
|
19
|
-
*/
|
20
|
-
readonly isMobile: boolean;
|
21
|
-
/**
|
22
|
-
* Ссылка для автоматического управления уничтожением зависимостей.
|
23
|
-
*/
|
24
|
-
private destroyRef;
|
25
|
-
/**
|
26
|
-
* Функция получения `routerLink` из объекта {@link T}.
|
27
|
-
*/
|
28
|
-
getRouterLink: (data: T) => string | any[] | UrlTree | null | undefined;
|
29
|
-
/**
|
30
|
-
* Инициализирует экземпляр класса {@link ScCategoriesListComponent}.
|
31
|
-
*
|
32
|
-
* @param urls Объект данных о базовом списке ссылок приложения.
|
33
|
-
* @param terminal Данные о запуске приложения на терминале.
|
34
|
-
* @param favoriteService Сервис для работы с корзиной.
|
35
|
-
* @param cdr Объект для работы с обнаружением изменений.
|
36
|
-
*/
|
37
|
-
constructor(urls: ScIUrls, terminal: ScITerminalProvider, favoriteService: ScFavoriteService, cdr: ChangeDetectorRef);
|
38
|
-
/** @inheritDoc */
|
39
|
-
ngOnInit(): void;
|
40
|
-
/**
|
41
|
-
* Возвращает путь до изображения на сервере.
|
42
|
-
*
|
43
|
-
* @param imgPath путь, где хранится изображение.
|
44
|
-
*/
|
45
|
-
getCategoryImage(imgPath: string): string;
|
46
|
-
/**
|
47
|
-
* Проверяет наличие хотя бы одного изображения.
|
48
|
-
*
|
49
|
-
* @param categories Список категорий.
|
50
|
-
*/
|
51
|
-
checkImagesExists(categories: any[]): boolean;
|
52
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ScCategoriesListComponent<any>, never>;
|
53
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ScCategoriesListComponent<any>, "sc-categories-list", never, { "categories": { "alias": "categories"; "required": false; }; "getRouterLink": { "alias": "getRouterLink"; "required": false; }; }, {}, never, never, false, never>;
|
54
|
-
}
|
@@ -1,93 +0,0 @@
|
|
1
|
-
import { __decorate } from "tslib";
|
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, DestroyRef, Inject, inject, Input } from '@angular/core';
|
4
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
5
|
-
import { IS_RUNNING_ON_TERMINAL, SC_URLS, TERMINAL_PROVIDERS } from '@snabcentr/client-core';
|
6
|
-
import { TUI_IS_MOBILE, tuiPure } from '@taiga-ui/cdk';
|
7
|
-
import { filter, tap } from 'rxjs';
|
8
|
-
import * as i0 from "@angular/core";
|
9
|
-
import * as i1 from "@snabcentr/client-core";
|
10
|
-
import * as i2 from "@angular/common";
|
11
|
-
import * as i3 from "@angular/router";
|
12
|
-
import * as i4 from "@taiga-ui/core";
|
13
|
-
import * as i5 from "@taiga-ui/cdk";
|
14
|
-
/**
|
15
|
-
* Компонент списка категорий.
|
16
|
-
*/
|
17
|
-
export class ScCategoriesListComponent {
|
18
|
-
/**
|
19
|
-
* Инициализирует экземпляр класса {@link ScCategoriesListComponent}.
|
20
|
-
*
|
21
|
-
* @param urls Объект данных о базовом списке ссылок приложения.
|
22
|
-
* @param terminal Данные о запуске приложения на терминале.
|
23
|
-
* @param favoriteService Сервис для работы с корзиной.
|
24
|
-
* @param cdr Объект для работы с обнаружением изменений.
|
25
|
-
*/
|
26
|
-
constructor(urls, terminal, favoriteService, cdr) {
|
27
|
-
this.urls = urls;
|
28
|
-
this.terminal = terminal;
|
29
|
-
this.favoriteService = favoriteService;
|
30
|
-
this.cdr = cdr;
|
31
|
-
/**
|
32
|
-
* Признак того, отображается этот компонент на мобильном устройстве или нет.
|
33
|
-
*/
|
34
|
-
this.isMobile = inject(TUI_IS_MOBILE);
|
35
|
-
/**
|
36
|
-
* Ссылка для автоматического управления уничтожением зависимостей.
|
37
|
-
*/
|
38
|
-
this.destroyRef = inject(DestroyRef);
|
39
|
-
/**
|
40
|
-
* Функция получения `routerLink` из объекта {@link T}.
|
41
|
-
*/
|
42
|
-
this.getRouterLink = () => null;
|
43
|
-
}
|
44
|
-
/** @inheritDoc */
|
45
|
-
ngOnInit() {
|
46
|
-
this.favoriteService.categories$
|
47
|
-
.pipe(filter(() => !!this.categories && this.categories.length > 0 && 'id' in this.categories[0]), tap((categories) => {
|
48
|
-
this.categories.forEach((category) => {
|
49
|
-
category.isFavorite = categories.some((item) => category.id === item.id);
|
50
|
-
});
|
51
|
-
}), takeUntilDestroyed(this.destroyRef))
|
52
|
-
.subscribe(() => {
|
53
|
-
this.cdr.markForCheck();
|
54
|
-
});
|
55
|
-
}
|
56
|
-
/**
|
57
|
-
* Возвращает путь до изображения на сервере.
|
58
|
-
*
|
59
|
-
* @param imgPath путь, где хранится изображение.
|
60
|
-
*/
|
61
|
-
getCategoryImage(imgPath) {
|
62
|
-
return `${this.urls.imgServerUrl}/${imgPath}`;
|
63
|
-
}
|
64
|
-
/**
|
65
|
-
* Проверяет наличие хотя бы одного изображения.
|
66
|
-
*
|
67
|
-
* @param categories Список категорий.
|
68
|
-
*/
|
69
|
-
checkImagesExists(categories) {
|
70
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
71
|
-
return categories.some((item) => item.properties?.image);
|
72
|
-
}
|
73
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScCategoriesListComponent, deps: [{ token: SC_URLS }, { token: IS_RUNNING_ON_TERMINAL }, { token: i1.ScFavoriteService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
74
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: ScCategoriesListComponent, selector: "sc-categories-list", inputs: { categories: "categories", getRouterLink: "getRouterLink" }, 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 <ng-container *ngFor=\"let item of $any(categories)\">\n <a\n *tuiLet=\"getRouterLink(item) as routerLink\"\n [routerLink]=\"routerLink\"\n class=\"group flex h-11 cursor-pointer 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 >\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-icon\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n icon=\"@tui.camera-off\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-icon>\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-icon\n *ngIf=\"item.isFavorite\"\n background=\"@tui.bookmark-filled\"\n icon=\"@tui.bookmark\"\n class=\"mr-auto bg-tui-primary !text-sm text-tui-primary\"\n ></tui-icon>\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-icon\n icon=\"@tui.chevron-right\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </a>\n </ng-container>\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-icon\n icon=\"@tui.chevron-right\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\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: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: i5.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: i5.TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
75
|
-
}
|
76
|
-
__decorate([
|
77
|
-
tuiPure
|
78
|
-
], ScCategoriesListComponent.prototype, "checkImagesExists", null);
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ScCategoriesListComponent, decorators: [{
|
80
|
-
type: Component,
|
81
|
-
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 <ng-container *ngFor=\"let item of $any(categories)\">\n <a\n *tuiLet=\"getRouterLink(item) as routerLink\"\n [routerLink]=\"routerLink\"\n class=\"group flex h-11 cursor-pointer 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 >\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-icon\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n icon=\"@tui.camera-off\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-icon>\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-icon\n *ngIf=\"item.isFavorite\"\n background=\"@tui.bookmark-filled\"\n icon=\"@tui.bookmark\"\n class=\"mr-auto bg-tui-primary !text-sm text-tui-primary\"\n ></tui-icon>\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-icon\n icon=\"@tui.chevron-right\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </a>\n </ng-container>\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-icon\n icon=\"@tui.chevron-right\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </button>\n</ng-template>\n" }]
|
82
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
83
|
-
type: Inject,
|
84
|
-
args: [SC_URLS]
|
85
|
-
}] }, { type: undefined, decorators: [{
|
86
|
-
type: Inject,
|
87
|
-
args: [IS_RUNNING_ON_TERMINAL]
|
88
|
-
}] }, { type: i1.ScFavoriteService }, { type: i0.ChangeDetectorRef }], propDecorators: { categories: [{
|
89
|
-
type: Input
|
90
|
-
}], getRouterLink: [{
|
91
|
-
type: Input
|
92
|
-
}], checkImagesExists: [] } });
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcmllcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL2NhdGVnb3JpZXMtbGlzdC9zYy1jYXRlZ29yaWVzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcmllcy1saXN0L3NjLWNhdGVnb3JpZXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0lBQStJO0FBRS9JLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUErRCxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFKLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBRW5DOztHQUVHO0FBT0gsTUFBTSxPQUFPLHlCQUF5QjtJQXdCbEM7Ozs7Ozs7T0FPRztJQUNILFlBRXFCLElBQWEsRUFFZCxRQUE2QixFQUM1QixlQUFrQyxFQUNsQyxHQUFzQjtRQUp0QixTQUFJLEdBQUosSUFBSSxDQUFTO1FBRWQsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFDNUIsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ2xDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBL0IzQzs7V0FFRztRQUNhLGFBQVEsR0FBWSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFMUQ7O1dBRUc7UUFDSyxlQUFVLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXBEOztXQUVHO1FBR0ksa0JBQWEsR0FBNkQsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBaUJ6RixDQUFDO0lBRUosa0JBQWtCO0lBQ1gsUUFBUTtRQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVzthQUMzQixJQUFJLENBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMzRixHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNkLElBQUksQ0FBQyxVQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNuRCxRQUFRLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUN0QzthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxPQUFlO1FBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUVJLGlCQUFpQixDQUFDLFVBQWlCO1FBQ3RDLHNFQUFzRTtRQUN0RSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQzsrR0E1RVEseUJBQXlCLGtCQWlDdEIsT0FBTyxhQUVQLHNCQUFzQjttR0FuQ3pCLHlCQUF5QixtSEFIdkIsQ0FBQyxrQkFBa0IsQ0FBQywwQkNmbkMsdWhHQStEQTs7QUQ0Qlc7SUFETixPQUFPO2tFQUlQOzRGQTVFUSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0ksb0JBQW9CLGFBRW5CLENBQUMsa0JBQWtCLENBQUMsbUJBQ2QsdUJBQXVCLENBQUMsTUFBTTs7MEJBbUMxQyxNQUFNOzJCQUFDLE9BQU87OzBCQUVkLE1BQU07MkJBQUMsc0JBQXNCO3lHQTlCM0IsVUFBVTtzQkFEaEIsS0FBSztnQkFrQkMsYUFBYTtzQkFGbkIsS0FBSztnQkFxREMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSxjbGFzcy1tZXRob2RzLXVzZS10aGlzLGxvZGFzaC9wcmVmZXItc29tZSxsb2Rhc2gvcHJlZmVyLWxvZGFzaC1tZXRob2Qsbm8tcGFyYW0tcmVhc3NpZ24gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEluamVjdCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElTX1JVTk5JTkdfT05fVEVSTUlOQUwsIFNDX1VSTFMsIFNjQ2F0ZWdvcnksIFNjRmF2b3JpdGVTZXJ2aWNlLCBTY0lUZXJtaW5hbFByb3ZpZGVyLCBTY0lVcmxzLCBURVJNSU5BTF9QUk9WSURFUlMgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9JU19NT0JJTEUsIHR1aVB1cmUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IGZpbHRlciwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGB0L/QuNGB0LrQsCDQutCw0YLQtdCz0L7RgNC40LkuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtY2F0ZWdvcmllcy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtY2F0ZWdvcmllcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtURVJNSU5BTF9QUk9WSURFUlNdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0NhdGVnb3JpZXNMaXN0Q29tcG9uZW50PFQgZXh0ZW5kcyBvYmplY3Q+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhdGVnb3JpZXM6IFRbXSB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPINGN0YLQvtGCINC60L7QvNC/0L7QvdC10L3RgiDQvdCwINC80L7QsdC40LvRjNC90L7QvCDRg9GB0YLRgNC+0LnRgdGC0LLQtSDQuNC70Lgg0L3QtdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbiA9IGluamVjdChUVUlfSVNfTU9CSUxFKTtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQtNC70Y8g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7Qs9C+INGD0L/RgNCw0LLQu9C10L3QuNGPINGD0L3QuNGH0YLQvtC20LXQvdC40LXQvCDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqXG4gICAgICog0KTRg9C90LrRhtC40Y8g0L/QvtC70YPRh9C10L3QuNGPIGByb3V0ZXJMaW5rYCDQuNC3INC+0LHRitC10LrRgtCwIHtAbGluayBUfS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBsb2Rhc2gvcHJlZmVyLWNvbnN0YW50XG4gICAgcHVibGljIGdldFJvdXRlckxpbms6IChkYXRhOiBUKSA9PiBzdHJpbmcgfCBhbnlbXSB8IFVybFRyZWUgfCBudWxsIHwgdW5kZWZpbmVkID0gKCkgPT4gbnVsbDtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NDYXRlZ29yaWVzTGlzdENvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJscyDQntCx0YrQtdC60YIg0LTQsNC90L3Ri9GFINC+INCx0LDQt9C+0LLQvtC8INGB0L/QuNGB0LrQtSDRgdGB0YvQu9C+0Log0L/RgNC40LvQvtC20LXQvdC40Y8uXG4gICAgICogQHBhcmFtIHRlcm1pbmFsINCU0LDQvdC90YvQtSDQviDQt9Cw0L/Rg9GB0LrQtSDQv9GA0LjQu9C+0LbQtdC90LjRjyDQvdCwINGC0LXRgNC80LjQvdCw0LvQtS5cbiAgICAgKiBAcGFyYW0gZmF2b3JpdGVTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60L7RgNC30LjQvdC+0LkuXG4gICAgICogQHBhcmFtIGNkciDQntCx0YrQtdC60YIg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQvtCx0L3QsNGA0YPQttC10L3QuNC10Lwg0LjQt9C80LXQvdC10L3QuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChTQ19VUkxTKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVybHM6IFNjSVVybHMsXG4gICAgICAgIEBJbmplY3QoSVNfUlVOTklOR19PTl9URVJNSU5BTClcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHRlcm1pbmFsOiBTY0lUZXJtaW5hbFByb3ZpZGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZhdm9yaXRlU2VydmljZTogU2NGYXZvcml0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mYXZvcml0ZVNlcnZpY2UuY2F0ZWdvcmllcyRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuY2F0ZWdvcmllcyAmJiB0aGlzLmNhdGVnb3JpZXMubGVuZ3RoID4gMCAmJiAnaWQnIGluIHRoaXMuY2F0ZWdvcmllc1swXSksXG4gICAgICAgICAgICAgICAgdGFwKChjYXRlZ29yaWVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmNhdGVnb3JpZXMgYXMgU2NDYXRlZ29yeVtdKS5mb3JFYWNoKChjYXRlZ29yeSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkuaXNGYXZvcml0ZSA9IGNhdGVnb3JpZXMuc29tZSgoaXRlbSkgPT4gY2F0ZWdvcnkuaWQgPT09IGl0ZW0uaWQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GD0YLRjCDQtNC+INC40LfQvtCx0YDQsNC20LXQvdC40Y8g0L3QsCDRgdC10YDQstC10YDQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpbWdQYXRoINC/0YPRgtGMLCDQs9C00LUg0YXRgNCw0L3QuNGC0YHRjyDQuNC30L7QsdGA0LDQttC10L3QuNC1LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDYXRlZ29yeUltYWdlKGltZ1BhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnVybHMuaW1nU2VydmVyVXJsfS8ke2ltZ1BhdGh9YDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIg0L3QsNC70LjRh9C40LUg0YXQvtGC0Y8g0LHRiyDQvtC00L3QvtCz0L4g0LjQt9C+0LHRgNCw0LbQtdC90LjRjy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRlZ29yaWVzINCh0L/QuNGB0L7QuiDQutCw0YLQtdCz0L7RgNC40LkuXG4gICAgICovXG4gICAgQHR1aVB1cmVcbiAgICBwdWJsaWMgY2hlY2tJbWFnZXNFeGlzdHMoY2F0ZWdvcmllczogYW55W10pOiBib29sZWFuIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgICAgICByZXR1cm4gY2F0ZWdvcmllcy5zb21lKChpdGVtKSA9PiBpdGVtLnByb3BlcnRpZXM/LmltYWdlKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgW25nQ2xhc3NdPVwieyAnIWZsZXggIWZsZXgtY29sJzogdGVybWluYWwuaXNSdW5uaW5nT25UZXJtaW5hbCB9XCJcbiAgICBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLVtyZXBlYXQoYXV0by1maWxsLG1pbm1heCgyMXJlbSwxZnIpKV0gZ2FwLXgtOCBnYXAteS0yXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2F0ZWdvcmllczsgZWxzZSBjYXRlZ29yaWVzU2tlbGV0b25cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiAkYW55KGNhdGVnb3JpZXMpXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICp0dWlMZXQ9XCJnZXRSb3V0ZXJMaW5rKGl0ZW0pIGFzIHJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cInJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAgZmxleCBoLTExIGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyIHB4LTMgcHktMS41IHRleHQtbGVmdCByaW5nLXR1aS1wcmltYXJ5IGR1cmF0aW9uLTE1MCBob3Zlci1ob3Zlcjpob3ZlcjpyaW5nLTIgaG92ZXItbm9uZTphY3RpdmU6cmluZy0yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5wcm9wZXJ0aWVzPy5pbWFnZSBhcyBpbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0Q2F0ZWdvcnlJbWFnZShpbWFnZSlcIlxuICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2l6ZS04IHJvdW5kZWQgYmctdHVpLWJhc2UtMDMgb2JqZWN0LWNvdmVyXCJcbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPHR1aS1pY29uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0ucHJvcGVydGllcz8uaW1hZ2UgJiYgY2hlY2tJbWFnZXNFeGlzdHMoY2F0ZWdvcmllcylcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiQHR1aS5jYW1lcmEtb2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIhaC04ICF3LTggcm91bmRlZCBiZy10dWktYmFzZS0wMyB0ZXh0LXR1aS1iYXNlLTA1XCJcbiAgICAgICAgICAgICAgICA+PC90dWktaWNvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBncm93IGZsZXgtY29sIHRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdyb3cgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1iYXNlIGZvbnQtYm9sZFwiPnt7IGl0ZW0ubmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pc0Zhdm9yaXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPVwiQHR1aS5ib29rbWFyay1maWxsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJAdHVpLmJvb2ttYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLWF1dG8gYmctdHVpLXByaW1hcnkgIXRleHQtc20gdGV4dC10dWktcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC90dWktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0ubTJQcmljZSBhcyBtMlByaWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXR1aS10ZXh0LTAyXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAg0KHRgNC10LTQvdGP0Y8g0YHRgtC+0LjQvNC+0YHRgtGMIDxzcGFuIFtpbm5lckhUTUxdPVwibTJQcmljZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPHR1aS1pY29uXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJAdHVpLmNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImR1cmF0aW9uLTE1MCBob3Zlci1ob3Zlcjpncm91cC1ob3Zlcjp0ZXh0LXR1aS1wcmltYXJ5IGhvdmVyLW5vbmU6Z3JvdXAtYWN0aXZlOnRleHQtdHVpLXByaW1hcnlcIlxuICAgICAgICAgICAgICAgID48L3R1aS1pY29uPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NhdGVnb3JpZXNTa2VsZXRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgICp0dWlSZXBlYXRUaW1lcz1cImxldCBpbmRleCBvZiBpc01vYmlsZSA/IDMgOiA2XCJcbiAgICAgICAgY2xhc3M9XCJncm91cCBmbGV4IGgtMTEgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQteGwgYmctdHVpLWJhc2UtMDIgcHgtMyBweS0xLjUgdGV4dC1sZWZ0IHJpbmctdHVpLWJhc2UtMDUgZHVyYXRpb24tMTUwIGhvdmVyLWhvdmVyOmhvdmVyOnJpbmctMiBob3Zlci1ub25lOmFjdGl2ZTpyaW5nLTJcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInR1aS1za2VsZXRvbiBzaXplLThcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInR1aS1za2VsZXRvbiBoLTQgZ3Jvd1wiPjwvZGl2PlxuICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgIGljb249XCJAdHVpLmNoZXZyb24tcmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0dWktc2tlbGV0b24gZHVyYXRpb24tMTUwIGhvdmVyLWhvdmVyOmdyb3VwLWhvdmVyOnRleHQtdHVpLXByaW1hcnkgaG92ZXItbm9uZTpncm91cC1hY3RpdmU6dGV4dC10dWktcHJpbWFyeVwiXG4gICAgICAgID48L3R1aS1pY29uPlxuICAgIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|