@snabcentr/client-ui 4.8.1 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,3 @@
1
+ export * from './sc-brand-list-item';
1
2
  export * from './sc-brands-list.component';
2
3
  export * from './sc-brands-list.module';
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Элемент списка брендов.
3
+ */
4
+ export interface ScBrandListItem {
5
+ /**
6
+ * URL изображения бренда.
7
+ */
8
+ src: string;
9
+ /**
10
+ * Альтернативный текст изображения.
11
+ */
12
+ alt: string;
13
+ /**
14
+ * Ширина изображения в пикселях.
15
+ */
16
+ width: number;
17
+ /**
18
+ * Высота изображения в пикселях.
19
+ */
20
+ height: number;
21
+ }
@@ -1,3 +1,4 @@
1
+ import { ScBrandListItem } from './sc-brand-list-item';
1
2
  import * as i0 from "@angular/core";
2
3
  /**
3
4
  * Компонент списка брэндов.
@@ -6,10 +7,7 @@ export declare class ScBrandsListComponent {
6
7
  /**
7
8
  * Список элементов брендов.
8
9
  */
9
- items: Array<{
10
- src: string;
11
- alt: string;
12
- }>;
10
+ items: ScBrandListItem[];
13
11
  static ɵfac: i0.ɵɵFactoryDeclaration<ScBrandsListComponent, never>;
14
12
  static ɵcmp: i0.ɵɵComponentDeclaration<ScBrandsListComponent, "sc-brands-list", never, { "items": { "alias": "items"; "required": false; }; }, {}, never, never, false, never>;
15
13
  }
@@ -69,6 +69,12 @@ export declare class ScCatalogFiltersComponent {
69
69
  * @param filters Массив фильтров для создания контролов.
70
70
  */
71
71
  protected updateFormControls(filters: ScCatalogFilter[]): void;
72
+ /**
73
+ * Возвращает текущие применённые фильтры из хранилища фильтров.
74
+ *
75
+ * Позволяет восстанавливать выбранные значения при пересоздании компонента (повторное открытие диалога или блока фильтров).
76
+ */
77
+ private getAppliedFilters;
72
78
  /**
73
79
  * Преобразует значения формы в объект фильтров свойств.
74
80
  *
@@ -83,14 +89,16 @@ export declare class ScCatalogFiltersComponent {
83
89
  * Различие в API-выводе для одиночного значения (boolean вместо массива) обрабатывается в {@link processCheckboxFilter}.
84
90
  *
85
91
  * @param checkboxFilter Фильтр типа checkbox.
92
+ * @param appliedValue Применённое ранее значение фильтра из хранилища фильтров.
86
93
  */
87
- protected createCheckboxFormControl(checkboxFilter: ScICheckboxFilter): FormGroup<Record<string, FormControl<boolean>>>;
94
+ protected createCheckboxFormControl(checkboxFilter: ScICheckboxFilter, appliedValue?: ScPropertyFilters[string]): FormGroup<Record<string, FormControl<boolean>>>;
88
95
  /**
89
96
  * Создаёт {@link FormGroup} для range: {@code from}, {@code to}, {@code slider} (кортеж для {@link TuiRange}).
90
97
  *
91
98
  * @param rangeFilter Фильтр типа range.
99
+ * @param appliedValue Применённое ранее значение фильтра из хранилища фильтров.
92
100
  */
93
- protected createRangeFormControl(rangeFilter: ScRangeFilter): FormGroup<{
101
+ protected createRangeFormControl(rangeFilter: ScRangeFilter, appliedValue?: ScPropertyFilters[string]): FormGroup<{
94
102
  from: FormControl<number>;
95
103
  to: FormControl<number>;
96
104
  slider: FormControl<[number, number]>;
@@ -115,8 +123,9 @@ export declare class ScCatalogFiltersComponent {
115
123
  * Создает FormControl для toggle.
116
124
  *
117
125
  * @param toggleFilter Фильтр типа toggle.
126
+ * @param appliedValue Применённое ранее значение фильтра из хранилища фильтров.
118
127
  */
119
- protected createToggleFormControl(toggleFilter: ScToggleFilter): FormControl<boolean>;
128
+ protected createToggleFormControl(toggleFilter: ScToggleFilter, appliedValue?: ScPropertyFilters[string]): FormControl<boolean>;
120
129
  /**
121
130
  * Обрабатывает checkbox: FormGroup → string[] выбранных id; для единственного значения — boolean (как toggle).
122
131
  *
@@ -173,6 +182,8 @@ export declare class ScCatalogFiltersComponent {
173
182
  protected onShowResultsClick(): void;
174
183
  /**
175
184
  * Сбрасывает все фильтры к исходным значениям.
185
+ *
186
+ * @param emitEvent Признак необходимости эмитить события изменения контролов (false — тихий сброс без отправки значений в хранилище фильтров).
176
187
  */
177
188
  private resetAllFilters;
178
189
  static ɵfac: i0.ɵɵFactoryDeclaration<ScCatalogFiltersComponent, never>;
@@ -1,7 +1,7 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { ScPropertyFilters } from '@snabcentr/client-core';
3
- import { Subject } from 'rxjs';
3
+ import { BehaviorSubject } from 'rxjs';
4
4
  /**
5
- * Токен для инъекции {@link Subject} для хранения фильтров продуктов.
5
+ * Токен для инъекции {@link BehaviorSubject} для хранения фильтров продуктов.
6
6
  */
7
- export declare const SC_CATALOG_PRODUCTS_FILTERS: InjectionToken<Subject<ScPropertyFilters>>;
7
+ export declare const SC_CATALOG_PRODUCTS_FILTERS: InjectionToken<BehaviorSubject<ScPropertyFilters>>;
@@ -1,3 +1,4 @@
1
+ export * from './sc-brand-list-item';
1
2
  export * from './sc-brands-list.component';
2
3
  export * from './sc-brands-list.module';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvYnJhbmRzLWxpc3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zYy1icmFuZHMtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy1icmFuZHMtbGlzdC5tb2R1bGUnO1xuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvYnJhbmRzLWxpc3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjLWJyYW5kLWxpc3QtaXRlbSc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWJyYW5kcy1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NjLWJyYW5kcy1saXN0Lm1vZHVsZSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYnJhbmQtbGlzdC1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2JyYW5kcy1saXN0L3NjLWJyYW5kLWxpc3QtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDQrdC70LXQvNC10L3RgiDRgdC/0LjRgdC60LAg0LHRgNC10L3QtNC+0LIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2NCcmFuZExpc3RJdGVtIHtcbiAgICAvKipcbiAgICAgKiBVUkwg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQsdGA0LXQvdC00LAuXG4gICAgICovXG4gICAgc3JjOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDQkNC70YzRgtC10YDQvdCw0YLQuNCy0L3Ri9C5INGC0LXQutGB0YIg0LjQt9C+0LHRgNCw0LbQtdC90LjRjy5cbiAgICAgKi9cbiAgICBhbHQ6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqINCo0LjRgNC40L3QsCDQuNC30L7QsdGA0LDQttC10L3QuNGPINCyINC/0LjQutGB0LXQu9GP0YUuXG4gICAgICovXG4gICAgd2lkdGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqINCS0YvRgdC+0YLQsCDQuNC30L7QsdGA0LDQttC10L3QuNGPINCyINC/0LjQutGB0LXQu9GP0YUuXG4gICAgICovXG4gICAgaGVpZ2h0OiBudW1iZXI7XG59XG4iXX0=
@@ -13,12 +13,12 @@ export class ScBrandsListComponent {
13
13
  this.items = [];
14
14
  }
15
15
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBrandsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ScBrandsListComponent, selector: "sc-brands-list", inputs: { items: "items" }, ngImport: i0, template: "<!-- TODO: TASK:[#9893] \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043D\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0442\u0440\u043E\u043A \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u043F\u0440\u0438 \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0438 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0440\u0435\u043D\u0434\u043E\u0432. -->\n<div class=\"flex flex-col gap-4\">\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow scroll-slow-revert flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of items.length - (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n <img\n [src]=\"items[index + (items.length - (items.length % 2)) / 2].src\"\n [alt]=\"items[index].alt\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n <img\n [src]=\"items[index].src\"\n [alt]=\"items[index].alt\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n</div>\n", styles: [".scroll-slow-revert{animation-direction:reverse!important;animation-delay:-15s!important}@keyframes scroll-slow{0%{transform:translate(0)}to{transform:translate(calc(-100% - 3rem))}}.animate-scroll-slow{animation:scroll-slow 30s linear infinite}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ScBrandsListComponent, selector: "sc-brands-list", inputs: { items: "items" }, ngImport: i0, template: "<!-- TODO: TASK:[#9893] \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043D\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0442\u0440\u043E\u043A \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u043F\u0440\u0438 \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0438 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0440\u0435\u043D\u0434\u043E\u0432. -->\n<div class=\"flex flex-col gap-4\">\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow scroll-slow-revert flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of items.length - (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n @let brandItem = items[index + (items.length - (items.length % 2)) / 2];\n <img\n [src]=\"brandItem.src\"\n [alt]=\"items[index].alt\"\n [attr.width]=\"brandItem.width\"\n [attr.height]=\"brandItem.height\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n @let brandItem = items[index];\n <img\n [src]=\"brandItem.src\"\n [alt]=\"brandItem.alt\"\n [attr.width]=\"brandItem.width\"\n [attr.height]=\"brandItem.height\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n</div>\n", styles: [".scroll-slow-revert{animation-direction:reverse!important;animation-delay:-15s!important}@keyframes scroll-slow{0%{transform:translate(0)}to{transform:translate(calc(-100% - 3rem))}}.animate-scroll-slow{animation:scroll-slow 30s linear infinite}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17
17
  }
18
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScBrandsListComponent, decorators: [{
19
19
  type: Component,
20
- args: [{ selector: 'sc-brands-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- TODO: TASK:[#9893] \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043D\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0442\u0440\u043E\u043A \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u043F\u0440\u0438 \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0438 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0440\u0435\u043D\u0434\u043E\u0432. -->\n<div class=\"flex flex-col gap-4\">\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow scroll-slow-revert flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of items.length - (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n <img\n [src]=\"items[index + (items.length - (items.length % 2)) / 2].src\"\n [alt]=\"items[index].alt\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n <img\n [src]=\"items[index].src\"\n [alt]=\"items[index].alt\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n</div>\n", styles: [".scroll-slow-revert{animation-direction:reverse!important;animation-delay:-15s!important}@keyframes scroll-slow{0%{transform:translate(0)}to{transform:translate(calc(-100% - 3rem))}}.animate-scroll-slow{animation:scroll-slow 30s linear infinite}\n"] }]
20
+ args: [{ selector: 'sc-brands-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- TODO: TASK:[#9893] \u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0440\u0430\u0437\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u043D\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0442\u0440\u043E\u043A \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439, \u043F\u0440\u0438 \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0438 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u0440\u0435\u043D\u0434\u043E\u0432. -->\n<div class=\"flex flex-col gap-4\">\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow scroll-slow-revert flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of items.length - (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n @let brandItem = items[index + (items.length - (items.length % 2)) / 2];\n <img\n [src]=\"brandItem.src\"\n [alt]=\"items[index].alt\"\n [attr.width]=\"brandItem.width\"\n [attr.height]=\"brandItem.height\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n <div class=\"relative\">\n <div class=\"absolute -left-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-tui-base-01 to-transparent\"></div>\n <div class=\"flex select-none items-center justify-center gap-12 overflow-hidden contrast-150 saturate-0\">\n <div\n *ngFor=\"let _ of [].constructor(3)\"\n class=\"animate-scroll-slow flex shrink-0 items-center gap-16\"\n >\n <div\n *tuiRepeatTimes=\"let index of (items.length - (items.length % 2)) / 2\"\n class=\"flex items-center justify-center\"\n >\n @let brandItem = items[index];\n <img\n [src]=\"brandItem.src\"\n [alt]=\"brandItem.alt\"\n [attr.width]=\"brandItem.width\"\n [attr.height]=\"brandItem.height\"\n />\n </div>\n </div>\n </div>\n <div class=\"absolute -right-1 top-0 z-10 block h-full w-12 bg-gradient-to-r from-transparent to-tui-base-01\"></div>\n </div>\n</div>\n", styles: [".scroll-slow-revert{animation-direction:reverse!important;animation-delay:-15s!important}@keyframes scroll-slow{0%{transform:translate(0)}to{transform:translate(calc(-100% - 3rem))}}.animate-scroll-slow{animation:scroll-slow 30s linear infinite}\n"] }]
21
21
  }], propDecorators: { items: [{
22
22
  type: Input
23
23
  }] } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYnJhbmRzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2JyYW5kcy1saXN0L3NjLWJyYW5kcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9icmFuZHMtbGlzdC9zYy1icmFuZHMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUUxRTs7R0FFRztBQU9ILE1BQU0sT0FBTyxxQkFBcUI7SUFObEM7UUFPSTs7V0FFRztRQUVJLFVBQUssR0FHUCxFQUFFLENBQUM7S0FDWDsrR0FUWSxxQkFBcUI7bUdBQXJCLHFCQUFxQixrRkNYbEMsMGlGQTJDQTs7NEZEaENhLHFCQUFxQjtrQkFOakMsU0FBUzsrQkFDSSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTTs4QkFPeEMsS0FBSztzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YHQv9C40YHQutCwINCx0YDRjdC90LTQvtCyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLWJyYW5kcy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtYnJhbmRzLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NjLWJyYW5kcy1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjQnJhbmRzTGlzdENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGN0LvQtdC80LXQvdGC0L7QsiDQsdGA0LXQvdC00L7Qsi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpdGVtczogQXJyYXk8e1xuICAgICAgICBzcmM6IHN0cmluZztcbiAgICAgICAgYWx0OiBzdHJpbmc7XG4gICAgfT4gPSBbXTtcbn1cbiIsIjwhLS0gVE9ETzogVEFTSzpbIzk4OTNdINCU0L7QsdCw0LLQuNGC0Ywg0YDQsNC30LTQtdC70LXQvdC40LUg0L3QsCDQvdC10YHQutC+0LvRjNC60L4g0YHRgtGA0L7QuiDQuNC30L7QsdGA0LDQttC10L3QuNC5LCDQv9GA0Lgg0YPQstC10LvQuNGH0LXQvdC40Lgg0LrQvtC70LjRh9C10YHRgtCy0LAg0LHRgNC10L3QtNC+0LIuIC0tPlxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIC1sZWZ0LTEgdG9wLTAgei0xMCBibG9jayBoLWZ1bGwgdy0xMiBiZy1ncmFkaWVudC10by1yIGZyb20tdHVpLWJhc2UtMDEgdG8tdHJhbnNwYXJlbnRcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggc2VsZWN0LW5vbmUgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0xMiBvdmVyZmxvdy1oaWRkZW4gY29udHJhc3QtMTUwIHNhdHVyYXRlLTBcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgXyBvZiBbXS5jb25zdHJ1Y3RvcigzKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhbmltYXRlLXNjcm9sbC1zbG93IHNjcm9sbC1zbG93LXJldmVydCBmbGV4IHNocmluay0wIGl0ZW1zLWNlbnRlciBnYXAtMTZcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKnR1aVJlcGVhdFRpbWVzPVwibGV0IGluZGV4IG9mIGl0ZW1zLmxlbmd0aCAtIChpdGVtcy5sZW5ndGggLSAoaXRlbXMubGVuZ3RoICUgMikpIC8gMlwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtc1tpbmRleCArIChpdGVtcy5sZW5ndGggLSAoaXRlbXMubGVuZ3RoICUgMikpIC8gMl0uc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbXNbaW5kZXhdLmFsdFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtcmlnaHQtMSB0b3AtMCB6LTEwIGJsb2NrIGgtZnVsbCB3LTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS10cmFuc3BhcmVudCB0by10dWktYmFzZS0wMVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgLWxlZnQtMSB0b3AtMCB6LTEwIGJsb2NrIGgtZnVsbCB3LTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS10dWktYmFzZS0wMSB0by10cmFuc3BhcmVudFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTEyIG92ZXJmbG93LWhpZGRlbiBjb250cmFzdC0xNTAgc2F0dXJhdGUtMFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBfIG9mIFtdLmNvbnN0cnVjdG9yKDMpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFuaW1hdGUtc2Nyb2xsLXNsb3cgZmxleCBzaHJpbmstMCBpdGVtcy1jZW50ZXIgZ2FwLTE2XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICp0dWlSZXBlYXRUaW1lcz1cImxldCBpbmRleCBvZiAoaXRlbXMubGVuZ3RoIC0gKGl0ZW1zLmxlbmd0aCAlIDIpKSAvIDJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbXNbaW5kZXhdLnNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW1zW2luZGV4XS5hbHRcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgLXJpZ2h0LTEgdG9wLTAgei0xMCBibG9jayBoLWZ1bGwgdy0xMiBiZy1ncmFkaWVudC10by1yIGZyb20tdHJhbnNwYXJlbnQgdG8tdHVpLWJhc2UtMDFcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtYnJhbmRzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2JyYW5kcy1saXN0L3NjLWJyYW5kcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9icmFuZHMtbGlzdC9zYy1icmFuZHMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUkxRTs7R0FFRztBQU9ILE1BQU0sT0FBTyxxQkFBcUI7SUFObEM7UUFPSTs7V0FFRztRQUVJLFVBQUssR0FBc0IsRUFBRSxDQUFDO0tBQ3hDOytHQU5ZLHFCQUFxQjttR0FBckIscUJBQXFCLGtGQ2JsQyxxM0ZBaURBOzs0RkRwQ2EscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNJLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNOzhCQU94QyxLQUFLO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTY0JyYW5kTGlzdEl0ZW0gfSBmcm9tICcuL3NjLWJyYW5kLWxpc3QtaXRlbSc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGB0L/QuNGB0LrQsCDQsdGA0Y3QvdC00L7Qsi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1icmFuZHMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWJyYW5kcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zYy1icmFuZHMtbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0JyYW5kc0xpc3RDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRjdC70LXQvNC10L3RgtC+0LIg0LHRgNC10L3QtNC+0LIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXRlbXM6IFNjQnJhbmRMaXN0SXRlbVtdID0gW107XG59XG4iLCI8IS0tIFRPRE86IFRBU0s6WyM5ODkzXSDQlNC+0LHQsNCy0LjRgtGMINGA0LDQt9C00LXQu9C10L3QuNC1INC90LAg0L3QtdGB0LrQvtC70YzQutC+INGB0YLRgNC+0Log0LjQt9C+0LHRgNCw0LbQtdC90LjQuSwg0L/RgNC4INGD0LLQtdC70LjRh9C10L3QuNC4INC60L7Qu9C40YfQtdGB0YLQstCwINCx0YDQtdC90LTQvtCyLiAtLT5cbjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00XCI+XG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtbGVmdC0xIHRvcC0wIHotMTAgYmxvY2sgaC1mdWxsIHctMTIgYmctZ3JhZGllbnQtdG8tciBmcm9tLXR1aS1iYXNlLTAxIHRvLXRyYW5zcGFyZW50XCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHNlbGVjdC1ub25lIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMTIgb3ZlcmZsb3ctaGlkZGVuIGNvbnRyYXN0LTE1MCBzYXR1cmF0ZS0wXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IF8gb2YgW10uY29uc3RydWN0b3IoMylcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYW5pbWF0ZS1zY3JvbGwtc2xvdyBzY3JvbGwtc2xvdy1yZXZlcnQgZmxleCBzaHJpbmstMCBpdGVtcy1jZW50ZXIgZ2FwLTE2XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICp0dWlSZXBlYXRUaW1lcz1cImxldCBpbmRleCBvZiBpdGVtcy5sZW5ndGggLSAoaXRlbXMubGVuZ3RoIC0gKGl0ZW1zLmxlbmd0aCAlIDIpKSAvIDJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBsZXQgYnJhbmRJdGVtID0gaXRlbXNbaW5kZXggKyAoaXRlbXMubGVuZ3RoIC0gKGl0ZW1zLmxlbmd0aCAlIDIpKSAvIDJdO1xuICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImJyYW5kSXRlbS5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtc1tpbmRleF0uYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImJyYW5kSXRlbS53aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiYnJhbmRJdGVtLmhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtcmlnaHQtMSB0b3AtMCB6LTEwIGJsb2NrIGgtZnVsbCB3LTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS10cmFuc3BhcmVudCB0by10dWktYmFzZS0wMVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgLWxlZnQtMSB0b3AtMCB6LTEwIGJsb2NrIGgtZnVsbCB3LTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS10dWktYmFzZS0wMSB0by10cmFuc3BhcmVudFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBzZWxlY3Qtbm9uZSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTEyIG92ZXJmbG93LWhpZGRlbiBjb250cmFzdC0xNTAgc2F0dXJhdGUtMFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBfIG9mIFtdLmNvbnN0cnVjdG9yKDMpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFuaW1hdGUtc2Nyb2xsLXNsb3cgZmxleCBzaHJpbmstMCBpdGVtcy1jZW50ZXIgZ2FwLTE2XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICp0dWlSZXBlYXRUaW1lcz1cImxldCBpbmRleCBvZiAoaXRlbXMubGVuZ3RoIC0gKGl0ZW1zLmxlbmd0aCAlIDIpKSAvIDJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBsZXQgYnJhbmRJdGVtID0gaXRlbXNbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImJyYW5kSXRlbS5zcmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJicmFuZEl0ZW0uYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLndpZHRoXT1cImJyYW5kSXRlbS53aWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5oZWlnaHRdPVwiYnJhbmRJdGVtLmhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSAtcmlnaHQtMSB0b3AtMCB6LTEwIGJsb2NrIGgtZnVsbCB3LTEyIGJnLWdyYWRpZW50LXRvLXIgZnJvbS10cmFuc3BhcmVudCB0by10dWktYmFzZS0wMVwiPjwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=