@snabcentr/client-ui 1.8.2 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. package/cart/cart-item-mobile/sc-cart-item-mobile.component.d.ts +1 -2
  2. package/catalog/input-quantity/sc-input-quantity.component.d.ts +22 -10
  3. package/catalog/price-history/sc-price-history.component.d.ts +8 -0
  4. package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +10 -5
  5. package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +1 -2
  6. package/esm2020/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +4 -4
  7. package/esm2020/catalog/input-quantity/sc-input-quantity.component.mjs +34 -14
  8. package/esm2020/catalog/price-card/sc-price-card.component.mjs +3 -3
  9. package/esm2020/catalog/price-history/sc-price-history.component.mjs +23 -12
  10. package/esm2020/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +22 -10
  11. package/esm2020/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +2 -3
  12. package/esm2020/order/order-item-mobile/order-item-mobile.component.mjs +2 -2
  13. package/esm2020/providers/index.mjs +1 -2
  14. package/esm2020/public-api.mjs +1 -2
  15. package/fesm2015/snabcentr-client-ui.mjs +86 -192
  16. package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
  17. package/fesm2020/snabcentr-client-ui.mjs +83 -188
  18. package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
  19. package/order/order-item-mobile/order-item-mobile.component.d.ts +1 -2
  20. package/package.json +1 -1
  21. package/providers/index.d.ts +0 -1
  22. package/public-api.d.ts +0 -1
  23. package/esm2020/helpers/sc-units-helper.mjs +0 -45
  24. package/esm2020/providers/productsPagination.mjs +0 -99
  25. package/esm2020/tokens/index.mjs +0 -2
  26. package/esm2020/tokens/sc-linear-values-token.mjs +0 -10
  27. package/helpers/sc-units-helper.d.ts +0 -28
  28. package/providers/productsPagination.d.ts +0 -43
  29. package/tokens/index.d.ts +0 -1
  30. package/tokens/sc-linear-values-token.d.ts +0 -8
@@ -1,7 +1,6 @@
1
1
  import { EventEmitter } from '@angular/core';
2
- import { ScCartItem, ScIUrls, ScProduct } from '@snabcentr/client-core';
2
+ import { ScCartItem, ScIUrls, ScProduct, ScUnitsHelper } from '@snabcentr/client-core';
3
3
  import { TuiPreviewDialogService } from '@taiga-ui/addon-preview';
4
- import { ScUnitsHelper } from '../../helpers/sc-units-helper';
5
4
  import * as i0 from "@angular/core";
6
5
  /**
7
6
  * Компонент карточки элемента заказа.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snabcentr/client-ui",
3
- "version": "1.8.2",
3
+ "version": "1.9.0",
4
4
  "author": "Snabcentr Ltd.",
5
5
  "repository": "https://gitlab.snabcentr.met/web/angular/snabcentr-client-ui-lib",
6
6
  "license": "Commercial",
@@ -1,2 +1 @@
1
1
  export * from './scUserProviders';
2
- export * from './productsPagination';
package/public-api.d.ts CHANGED
@@ -23,4 +23,3 @@ export * from './user';
23
23
  export * from './validators';
24
24
  export * from './verification';
25
25
  export * from './profile';
26
- export * from './tokens';
@@ -1,45 +0,0 @@
1
- /* eslint-disable lodash/prefer-lodash-method */
2
- import { Inject, Injectable } from '@angular/core';
3
- import { SC_LINEAR_VALUES_TOKEN } from '../tokens';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Класс хэлпер для работы со значениями единиц измерения товара.
7
- */
8
- export class ScUnitsHelper {
9
- /**
10
- * Инициирует экземпляр класса {@link ScUnitsHelper}.
11
- *
12
- * @param linearValues Единицы измерения линейной величины.
13
- */
14
- constructor(linearValues) {
15
- this.linearValues = linearValues;
16
- }
17
- /**
18
- * Возвращает признак возможности продажи товара на метраж.
19
- *
20
- * @param product Товар для которого нужно проверить возможность продажи на метраж.
21
- */
22
- productIsMeasurable(product) {
23
- return this.linearValues.includes(product.unit);
24
- }
25
- /**
26
- * Возвращает кратность количества для товара.
27
- *
28
- * @param product Товар для которого нужно вернуть кратность количества.
29
- */
30
- productMultiplicity(product) {
31
- return product.minCount && !this.linearValues.includes(product.unit) ? product.minCount : 1;
32
- }
33
- }
34
- ScUnitsHelper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUnitsHelper, deps: [{ token: SC_LINEAR_VALUES_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
35
- ScUnitsHelper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUnitsHelper, providedIn: 'root' });
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUnitsHelper, decorators: [{
37
- type: Injectable,
38
- args: [{
39
- providedIn: 'root',
40
- }]
41
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
42
- type: Inject,
43
- args: [SC_LINEAR_VALUES_TOKEN]
44
- }] }]; } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdW5pdHMtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2hlbHBlcnMvc2MtdW5pdHMtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdEQUFnRDtBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRW5EOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFDdEI7Ozs7T0FJRztJQUNILFlBQW1FLFlBQXNCO1FBQXRCLGlCQUFZLEdBQVosWUFBWSxDQUFVO0lBQUcsQ0FBQztJQUU3Rjs7OztPQUlHO0lBQ0ksbUJBQW1CLENBQUMsT0FBa0I7UUFDekMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxtQkFBbUIsQ0FBQyxPQUFrQjtRQUN6QyxPQUFPLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDOzswR0F4QlEsYUFBYSxrQkFNSyxzQkFBc0I7OEdBTnhDLGFBQWEsY0FGVixNQUFNOzJGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFPdUIsTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBsb2Rhc2gvcHJlZmVyLWxvZGFzaC1tZXRob2QgKi9cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NQcm9kdWN0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5cbmltcG9ydCB7IFNDX0xJTkVBUl9WQUxVRVNfVE9LRU4gfSBmcm9tICcuLi90b2tlbnMnO1xuXG4vKipcbiAqINCa0LvQsNGB0YEg0YXRjdC70L/QtdGAINC00LvRjyDRgNCw0LHQvtGC0Ysg0YHQviDQt9C90LDRh9C10L3QuNGP0LzQuCDQtdC00LjQvdC40YYg0LjQt9C80LXRgNC10L3QuNGPINGC0L7QstCw0YDQsC5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NVbml0c0hlbHBlciB7XG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNC40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NVbml0c0hlbHBlcn0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbGluZWFyVmFsdWVzINCV0LTQuNC90LjRhtGLINC40LfQvNC10YDQtdC90LjRjyDQu9C40L3QtdC50L3QvtC5INCy0LXQu9C40YfQuNC90YsuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKEBJbmplY3QoU0NfTElORUFSX1ZBTFVFU19UT0tFTikgcHVibGljIHJlYWRvbmx5IGxpbmVhclZhbHVlczogc3RyaW5nW10pIHt9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LjQt9C90LDQuiDQstC+0LfQvNC+0LbQvdC+0YHRgtC4INC/0YDQvtC00LDQttC4INGC0L7QstCw0YDQsCDQvdCwINC80LXRgtGA0LDQti5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0INCi0L7QstCw0YAg0LTQu9GPINC60L7RgtC+0YDQvtCz0L4g0L3Rg9C20L3QviDQv9GA0L7QstC10YDQuNGC0Ywg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQv9GA0L7QtNCw0LbQuCDQvdCwINC80LXRgtGA0LDQti5cbiAgICAgKi9cbiAgICBwdWJsaWMgcHJvZHVjdElzTWVhc3VyYWJsZShwcm9kdWN0OiBTY1Byb2R1Y3QpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGluZWFyVmFsdWVzLmluY2x1ZGVzKHByb2R1Y3QudW5pdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LrRgNCw0YLQvdC+0YHRgtGMINC60L7Qu9C40YfQtdGB0YLQstCwINC00LvRjyDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCDQotC+0LLQsNGAINC00LvRjyDQutC+0YLQvtGA0L7Qs9C+INC90YPQttC90L4g0LLQtdGA0L3Rg9GC0Ywg0LrRgNCw0YLQvdC+0YHRgtGMINC60L7Qu9C40YfQtdGB0YLQstCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBwcm9kdWN0TXVsdGlwbGljaXR5KHByb2R1Y3Q6IFNjUHJvZHVjdCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwcm9kdWN0Lm1pbkNvdW50ICYmICF0aGlzLmxpbmVhclZhbHVlcy5pbmNsdWRlcyhwcm9kdWN0LnVuaXQpID8gcHJvZHVjdC5taW5Db3VudCA6IDE7XG4gICAgfVxufVxuIl19
@@ -1,99 +0,0 @@
1
- import { EventEmitter, InjectionToken } from '@angular/core';
2
- import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
3
- import { ScAuthService, ScCartService, ScCatalogService } from '@snabcentr/client-core';
4
- import { TuiDestroyService, tuiCreateToken, tuiIsPresent } from '@taiga-ui/cdk';
5
- import { Subject, debounceTime, filter, map, merge, scan, share, startWith, switchMap, takeUntil } from 'rxjs';
6
- /**
7
- * Значения пагинации списка товаров категории по умолчанию.
8
- */
9
- export const SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS = {
10
- perPage: 20,
11
- page: 0
12
- };
13
- /**
14
- * Токен значений пагинации списка товаров в категории по умолчанию.
15
- */
16
- export const SC_PRODUCT_PAGINATION_OPTIONS = tuiCreateToken(SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS);
17
- /**
18
- * {@link Subject} параметров пагинации списка товаров в категории.
19
- */
20
- export const paginationParams$ = new Subject();
21
- /**
22
- * Токен {@link Subject} параметров пагинации списка товаров в категории для получения их из вне.
23
- */
24
- export const SC_PRODUCT_PAGINATION_PARAMS = tuiCreateToken(paginationParams$);
25
- /**
26
- * Фабрика создания потока данных о товарах категории с пагинацией, включая данные о количестве этих товаров в корзине.
27
- *
28
- * @param paramMap Данные о параметрах запроса.
29
- * @param catalogService Сервис для работы с каталогом.
30
- * @param cartService Сервис для работы с корзиной.
31
- * @param authService Сервис для работы с аутентификации пользователей.
32
- * @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.
33
- */
34
- function productsPaginationChangeFactory({ paramMap }, catalogService, cartService, authService, destroy$) {
35
- return paramMap.pipe(map((params) => params.get('categoryId')), filter(tuiIsPresent), switchMap((categoryId) => paginationParams$.pipe(debounceTime(20), switchMap((paginationParams) => authService.getAuthChange().pipe(switchMap(() => catalogService.getCategoryProducts$(Number(categoryId), paginationParams)))), filter(tuiIsPresent), scan((acc, value) => {
36
- if (acc && value && value.meta.currentPage > 1)
37
- value.data.unshift(...acc.data);
38
- return value;
39
- }, null), switchMap((productsPaginate) => cartService.getCartChange$().pipe(map((cart) => {
40
- productsPaginate?.data.forEach((product) => (product.cartItem = cart.items.find((cartItem) => cartItem.product.id === product.id)));
41
- return productsPaginate;
42
- }))), startWith(null))), share(), takeUntil(destroy$));
43
- }
44
- /**
45
- * Токен потока данных о товарах категории, включая данные о количестве этих товаров в корзине.
46
- */
47
- export const SC_PRODUCT_PAGINATION_CHANGE_INFO = new InjectionToken('SC_PRODUCT_PAGINATION_CHANGE_INFO');
48
- /**
49
- * {@link EventEmitter} событие нажатия на кнопку "Показать следующие позиции категории".
50
- */
51
- export const nextPageClickEvent = new EventEmitter();
52
- /**
53
- * Токен {@link EventEmitter} событие нажатия на кнопку "Показать следующие позиции категории".
54
- */
55
- export const SC_NEXT_PAGE_PAGINATION_CLICK = tuiCreateToken(nextPageClickEvent);
56
- /**
57
- * Фабрика создания потока данных о состоянии загрузки запроса списка товаров с пагинацией пагинации.
58
- */
59
- function loadingPaginationFactory(productsData$, destroy$) {
60
- return merge(paginationParams$.pipe(map(() => true)), productsData$.pipe(map((data) => data === null))).pipe(share(), takeUntil(destroy$));
61
- }
62
- /**
63
- * Токен потока данных о состоянии загрузки товаров пагинации.
64
- */
65
- export const SC_LOADING_PAGINATION_CHANGE_INFO = new InjectionToken('SC_LOADING_PAGINATION_CHANGE_INFO');
66
- /**
67
- * Фабрика создания потока данных прокрутки страницы с сигналами о необходимости пагинации товара.
68
- */
69
- function nextPagePaginationChangeFactory({ events }, nextPagePaginationClick, productsData$, destroy$) {
70
- return nextPagePaginationClick
71
- .pipe(scan((acc) => ++acc, 1), startWith(1))
72
- .pipe(takeUntil(merge(events.pipe(filter((e) => e instanceof NavigationEnd)), productsData$.pipe(filter((paginate) => paginate !== null && paginate.meta.currentPage >= paginate.meta.lastPage)), destroy$)));
73
- }
74
- /**
75
- * Токен потока данных прокрутки страницы с сигналами о необходимости пагинации товара.
76
- */
77
- export const SC_NEXT_PAGE_PAGINATION_CHANGE_INFO = new InjectionToken('SC_NEXT_PAGE_PAGINATION_CHANGE_INFO');
78
- /**
79
- * Провайдеры потока данных о товарах категории, включая данные о количестве этих товаров в корзине.
80
- */
81
- export const SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS = [
82
- TuiDestroyService,
83
- {
84
- provide: SC_PRODUCT_PAGINATION_CHANGE_INFO,
85
- deps: [ActivatedRoute, ScCatalogService, ScCartService, ScAuthService, TuiDestroyService],
86
- useFactory: productsPaginationChangeFactory
87
- },
88
- {
89
- provide: SC_NEXT_PAGE_PAGINATION_CHANGE_INFO,
90
- deps: [Router, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],
91
- useFactory: nextPagePaginationChangeFactory
92
- },
93
- {
94
- provide: SC_LOADING_PAGINATION_CHANGE_INFO,
95
- deps: [SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],
96
- useFactory: loadingPaginationFactory
97
- }
98
- ];
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHNQYWdpbmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3Byb3ZpZGVycy9wcm9kdWN0c1BhZ2luYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQThELE1BQU0sd0JBQXdCLENBQUM7QUFDcEosT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUF1QztJQUNyRixPQUFPLEVBQUUsRUFBRTtJQUNYLElBQUksRUFBRSxDQUFDO0NBQ1YsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQXVELGNBQWMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0FBRXZKOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWdELElBQUksT0FBTyxFQUFzQyxDQUFDO0FBRWhJOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQWdFLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRTNJOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUywrQkFBK0IsQ0FDcEMsRUFBRSxRQUFRLEVBQWtCLEVBQzVCLGNBQWdDLEVBQ2hDLFdBQTBCLEVBQzFCLFdBQTBCLEVBQzFCLFFBQTBCO0lBRTFCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FDaEIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQ3pDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFDcEIsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDckIsaUJBQWlCLENBQUMsSUFBSSxDQUNsQixZQUFZLENBQUMsRUFBRSxDQUFDLEVBQ2hCLFNBQVMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzdKLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFDcEIsSUFBSSxDQUFDLENBQUMsR0FBa0MsRUFBRSxLQUFvQyxFQUFFLEVBQUU7UUFDOUUsSUFBSSxHQUFHLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUM7WUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoRixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQ1IsU0FBUyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUMzQixXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUM3QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNULGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVwSSxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUNMLENBQ0osRUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLENBQ2xCLENBQ0osRUFDRCxLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsUUFBUSxDQUFDLENBQ3RCLENBQUM7QUFDTixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxJQUFJLGNBQWMsQ0FBNEMsbUNBQW1DLENBQUMsQ0FBQztBQUVwSjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0FBRS9FOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQXVDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXBIOztHQUVHO0FBQ0gsU0FBUyx3QkFBd0IsQ0FBQyxhQUF3RCxFQUFFLFFBQTBCO0lBQ2xILE9BQU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDL0ksQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQXdDLElBQUksY0FBYyxDQUFxQixtQ0FBbUMsQ0FBQyxDQUFDO0FBRWxLOztHQUVHO0FBQ0gsU0FBUywrQkFBK0IsQ0FDcEMsRUFBRSxNQUFNLEVBQVUsRUFDbEIsdUJBQTJDLEVBQzNDLGFBQXdELEVBQ3hELFFBQTBCO0lBRTFCLE9BQU8sdUJBQXVCO1NBQ3pCLElBQUksQ0FDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUN2QixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQ2Y7U0FDQSxJQUFJLENBQ0QsU0FBUyxDQUNMLEtBQUssQ0FDRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLGFBQWEsQ0FBQyxDQUFDLEVBQ3RELGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDbEgsUUFBUSxDQUNYLENBQ0osQ0FDSixDQUFDO0FBQ1YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQXVDLElBQUksY0FBYyxDQUFxQixxQ0FBcUMsQ0FBQyxDQUFDO0FBRXJLOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQWU7SUFDOUQsaUJBQWlCO0lBQ2pCO1FBQ0ksT0FBTyxFQUFFLGlDQUFpQztRQUMxQyxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQztRQUN6RixVQUFVLEVBQUUsK0JBQStCO0tBQzlDO0lBQ0Q7UUFDSSxPQUFPLEVBQUUsbUNBQW1DO1FBQzVDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSw2QkFBNkIsRUFBRSxpQ0FBaUMsRUFBRSxpQkFBaUIsQ0FBQztRQUNuRyxVQUFVLEVBQUUsK0JBQStCO0tBQzlDO0lBQ0Q7UUFDSSxPQUFPLEVBQUUsaUNBQWlDO1FBQzFDLElBQUksRUFBRSxDQUFDLGlDQUFpQyxFQUFFLGlCQUFpQixDQUFDO1FBQzVELFVBQVUsRUFBRSx3QkFBd0I7S0FDdkM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2NBdXRoU2VydmljZSwgU2NDYXJ0U2VydmljZSwgU2NDYXRhbG9nU2VydmljZSwgU2NJQ2F0ZWdvcnlQcm9kdWN0UGFnaW5hdGlvblBhcmFtcywgU2NJUGFnaW5hdGUsIFNjUHJvZHVjdCB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpRGVzdHJveVNlcnZpY2UsIHR1aUNyZWF0ZVRva2VuLCB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIG1lcmdlLCBzY2FuLCBzaGFyZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqINCX0L3QsNGH0LXQvdC40Y8g0L/QsNCz0LjQvdCw0YbQuNC4INGB0L/QuNGB0LrQsCDRgtC+0LLQsNGA0L7QsiDQutCw0YLQtdCz0L7RgNC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19QUk9EVUNUX1BBR0lOQVRJT05fREVGQVVMVF9PUFRJT05TOiBTY0lDYXRlZ29yeVByb2R1Y3RQYWdpbmF0aW9uUGFyYW1zID0ge1xuICAgIHBlclBhZ2U6IDIwLFxuICAgIHBhZ2U6IDBcbn07XG5cbi8qKlxuICog0KLQvtC60LXQvSDQt9C90LDRh9C10L3QuNC5INC/0LDQs9C40L3QsNGG0LjQuCDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0LIg0LrQsNGC0LXQs9C+0YDQuNC4INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLlxuICovXG5leHBvcnQgY29uc3QgU0NfUFJPRFVDVF9QQUdJTkFUSU9OX09QVElPTlM6IEluamVjdGlvblRva2VuPFNjSUNhdGVnb3J5UHJvZHVjdFBhZ2luYXRpb25QYXJhbXM+ID0gdHVpQ3JlYXRlVG9rZW4oU0NfUFJPRFVDVF9QQUdJTkFUSU9OX0RFRkFVTFRfT1BUSU9OUyk7XG5cbi8qKlxuICoge0BsaW5rIFN1YmplY3R9INC/0LDRgNCw0LzQtdGC0YDQvtCyINC/0LDQs9C40L3QsNGG0LjQuCDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0LIg0LrQsNGC0LXQs9C+0YDQuNC4LlxuICovXG5leHBvcnQgY29uc3QgcGFnaW5hdGlvblBhcmFtcyQ6IFN1YmplY3Q8U2NJQ2F0ZWdvcnlQcm9kdWN0UGFnaW5hdGlvblBhcmFtcz4gPSBuZXcgU3ViamVjdDxTY0lDYXRlZ29yeVByb2R1Y3RQYWdpbmF0aW9uUGFyYW1zPigpO1xuXG4vKipcbiAqINCi0L7QutC10L0ge0BsaW5rIFN1YmplY3R9INC/0LDRgNCw0LzQtdGC0YDQvtCyINC/0LDQs9C40L3QsNGG0LjQuCDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0LIg0LrQsNGC0LXQs9C+0YDQuNC4INC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8g0LjRhSDQuNC3INCy0L3QtS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNDX1BST0RVQ1RfUEFHSU5BVElPTl9QQVJBTVM6IEluamVjdGlvblRva2VuPFN1YmplY3Q8U2NJQ2F0ZWdvcnlQcm9kdWN0UGFnaW5hdGlvblBhcmFtcz4+ID0gdHVpQ3JlYXRlVG9rZW4ocGFnaW5hdGlvblBhcmFtcyQpO1xuXG4vKipcbiAqINCk0LDQsdGA0LjQutCwINGB0L7Qt9C00LDQvdC40Y8g0L/QvtGC0L7QutCwINC00LDQvdC90YvRhSDQviDRgtC+0LLQsNGA0LDRhSDQutCw0YLQtdCz0L7RgNC40Lgg0YEg0L/QsNCz0LjQvdCw0YbQuNC10LksINCy0LrQu9GO0YfQsNGPINC00LDQvdC90YvQtSDQviDQutC+0LvQuNGH0LXRgdGC0LLQtSDRjdGC0LjRhSDRgtC+0LLQsNGA0L7QsiDQsiDQutC+0YDQt9C40L3QtS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1NYXAg0JTQsNC90L3Ri9C1INC+INC/0LDRgNCw0LzQtdGC0YDQsNGFINC30LDQv9GA0L7RgdCwLlxuICogQHBhcmFtIGNhdGFsb2dTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60LDRgtCw0LvQvtCz0L7QvC5cbiAqIEBwYXJhbSBjYXJ0U2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutC+0YDQt9C40L3QvtC5LlxuICogQHBhcmFtIGF1dGhTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gKiBAcGFyYW0gZGVzdHJveSQg0KHQtdGA0LLQuNGBINC30LDQstC10YDRiNC10L3QuNGPIHtAbGluayBPYnNlcnZhYmxlfSDRh9C10YDQtdC3IGB0YWtlVW50aWxgLlxuICovXG5mdW5jdGlvbiBwcm9kdWN0c1BhZ2luYXRpb25DaGFuZ2VGYWN0b3J5KFxuICAgIHsgcGFyYW1NYXAgfTogQWN0aXZhdGVkUm91dGUsXG4gICAgY2F0YWxvZ1NlcnZpY2U6IFNjQ2F0YWxvZ1NlcnZpY2UsXG4gICAgY2FydFNlcnZpY2U6IFNjQ2FydFNlcnZpY2UsXG4gICAgYXV0aFNlcnZpY2U6IFNjQXV0aFNlcnZpY2UsXG4gICAgZGVzdHJveSQ6IE9ic2VydmFibGU8dm9pZD5cbik6IE9ic2VydmFibGU8U2NJUGFnaW5hdGU8U2NQcm9kdWN0PiB8IG51bGw+IHtcbiAgICByZXR1cm4gcGFyYW1NYXAucGlwZShcbiAgICAgICAgbWFwKChwYXJhbXMpID0+IHBhcmFtcy5nZXQoJ2NhdGVnb3J5SWQnKSksXG4gICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICBzd2l0Y2hNYXAoKGNhdGVnb3J5SWQpID0+XG4gICAgICAgICAgICBwYWdpbmF0aW9uUGFyYW1zJC5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChwYWdpbmF0aW9uUGFyYW1zKSA9PiBhdXRoU2VydmljZS5nZXRBdXRoQ2hhbmdlKCkucGlwZShzd2l0Y2hNYXAoKCkgPT4gY2F0YWxvZ1NlcnZpY2UuZ2V0Q2F0ZWdvcnlQcm9kdWN0cyQoTnVtYmVyKGNhdGVnb3J5SWQpLCBwYWdpbmF0aW9uUGFyYW1zKSkpKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgICAgICBzY2FuKChhY2M6IFNjSVBhZ2luYXRlPFNjUHJvZHVjdD4gfCBudWxsLCB2YWx1ZTogU2NJUGFnaW5hdGU8U2NQcm9kdWN0PiB8IG51bGwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjYyAmJiB2YWx1ZSAmJiB2YWx1ZS5tZXRhLmN1cnJlbnRQYWdlID4gMSkgdmFsdWUuZGF0YS51bnNoaWZ0KC4uLmFjYy5kYXRhKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSwgbnVsbCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChwcm9kdWN0c1BhZ2luYXRlKSA9PlxuICAgICAgICAgICAgICAgICAgICBjYXJ0U2VydmljZS5nZXRDYXJ0Q2hhbmdlJCgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKGNhcnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0c1BhZ2luYXRlPy5kYXRhLmZvckVhY2goKHByb2R1Y3QpID0+IChwcm9kdWN0LmNhcnRJdGVtID0gY2FydC5pdGVtcy5maW5kKChjYXJ0SXRlbSkgPT4gY2FydEl0ZW0ucHJvZHVjdC5pZCA9PT0gcHJvZHVjdC5pZCkpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9kdWN0c1BhZ2luYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlKCksXG4gICAgICAgIHRha2VVbnRpbChkZXN0cm95JClcbiAgICApO1xufVxuXG4vKipcbiAqINCi0L7QutC10L0g0L/QvtGC0L7QutCwINC00LDQvdC90YvRhSDQviDRgtC+0LLQsNGA0LDRhSDQutCw0YLQtdCz0L7RgNC40LgsINCy0LrQu9GO0YfQsNGPINC00LDQvdC90YvQtSDQviDQutC+0LvQuNGH0LXRgdGC0LLQtSDRjdGC0LjRhSDRgtC+0LLQsNGA0L7QsiDQsiDQutC+0YDQt9C40L3QtS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNDX1BST0RVQ1RfUEFHSU5BVElPTl9DSEFOR0VfSU5GTyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPFNjSVBhZ2luYXRlPFNjUHJvZHVjdD4gfCBudWxsPj4oJ1NDX1BST0RVQ1RfUEFHSU5BVElPTl9DSEFOR0VfSU5GTycpO1xuXG4vKipcbiAqIHtAbGluayBFdmVudEVtaXR0ZXJ9INGB0L7QsdGL0YLQuNC1INC90LDQttCw0YLQuNGPINC90LAg0LrQvdC+0L/QutGDIFwi0J/QvtC60LDQt9Cw0YLRjCDRgdC70LXQtNGD0Y7RidC40LUg0L/QvtC30LjRhtC40Lgg0LrQsNGC0LXQs9C+0YDQuNC4XCIuXG4gKi9cbmV4cG9ydCBjb25zdCBuZXh0UGFnZUNsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuLyoqXG4gKiAg0KLQvtC60LXQvSB7QGxpbmsgRXZlbnRFbWl0dGVyfSDRgdC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyBcItCf0L7QutCw0LfQsNGC0Ywg0YHQu9C10LTRg9GO0YnQuNC1INC/0L7Qt9C40YbQuNC4INC60LDRgtC10LPQvtGA0LjQuFwiLlxuICovXG5leHBvcnQgY29uc3QgU0NfTkVYVF9QQUdFX1BBR0lOQVRJT05fQ0xJQ0s6IEluamVjdGlvblRva2VuPEV2ZW50RW1pdHRlcjx2b2lkPj4gPSB0dWlDcmVhdGVUb2tlbihuZXh0UGFnZUNsaWNrRXZlbnQpO1xuXG4vKipcbiAqINCk0LDQsdGA0LjQutCwINGB0L7Qt9C00LDQvdC40Y8g0L/QvtGC0L7QutCwINC00LDQvdC90YvRhSDQviDRgdC+0YHRgtC+0Y/QvdC40Lgg0LfQsNCz0YDRg9C30LrQuCDQt9Cw0L/RgNC+0YHQsCDRgdC/0LjRgdC60LAg0YLQvtCy0LDRgNC+0LIg0YEg0L/QsNCz0LjQvdCw0YbQuNC10Lkg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICovXG5mdW5jdGlvbiBsb2FkaW5nUGFnaW5hdGlvbkZhY3RvcnkocHJvZHVjdHNEYXRhJDogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbD4sIGRlc3Ryb3kkOiBPYnNlcnZhYmxlPHZvaWQ+KSB7XG4gICAgcmV0dXJuIG1lcmdlKHBhZ2luYXRpb25QYXJhbXMkLnBpcGUobWFwKCgpID0+IHRydWUpKSwgcHJvZHVjdHNEYXRhJC5waXBlKG1hcCgoZGF0YSkgPT4gZGF0YSA9PT0gbnVsbCkpKS5waXBlKHNoYXJlKCksIHRha2VVbnRpbChkZXN0cm95JCkpO1xufVxuXG4vKipcbiAqICDQotC+0LrQtdC9INC/0L7RgtC+0LrQsCDQtNCw0L3QvdGL0YUg0L4g0YHQvtGB0YLQvtGP0L3QuNC4INC30LDQs9GA0YPQt9C60Lgg0YLQvtCy0LDRgNC+0LIg0L/QsNCz0LjQvdCw0YbQuNC4LlxuICovXG5leHBvcnQgY29uc3QgU0NfTE9BRElOR19QQUdJTkFUSU9OX0NIQU5HRV9JTkZPOiBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPGJvb2xlYW4+PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPG51bWJlcj4+KCdTQ19MT0FESU5HX1BBR0lOQVRJT05fQ0hBTkdFX0lORk8nKTtcblxuLyoqXG4gKiDQpNCw0LHRgNC40LrQsCDRgdC+0LfQtNCw0L3QuNGPINC/0L7RgtC+0LrQsCDQtNCw0L3QvdGL0YUg0L/RgNC+0LrRgNGD0YLQutC4INGB0YLRgNCw0L3QuNGG0Ysg0YEg0YHQuNCz0L3QsNC70LDQvNC4INC+INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INC/0LDQs9C40L3QsNGG0LjQuCDRgtC+0LLQsNGA0LAuXG4gKi9cbmZ1bmN0aW9uIG5leHRQYWdlUGFnaW5hdGlvbkNoYW5nZUZhY3RvcnkoXG4gICAgeyBldmVudHMgfTogUm91dGVyLFxuICAgIG5leHRQYWdlUGFnaW5hdGlvbkNsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4sXG4gICAgcHJvZHVjdHNEYXRhJDogT2JzZXJ2YWJsZTxTY0lQYWdpbmF0ZTxTY1Byb2R1Y3Q+IHwgbnVsbD4sXG4gICAgZGVzdHJveSQ6IE9ic2VydmFibGU8dm9pZD5cbik6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIG5leHRQYWdlUGFnaW5hdGlvbkNsaWNrXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgICAgc2NhbigoYWNjKSA9PiArK2FjYywgMSksXG4gICAgICAgICAgICBzdGFydFdpdGgoMSlcbiAgICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbChcbiAgICAgICAgICAgICAgICBtZXJnZShcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzLnBpcGUoZmlsdGVyKChlKSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpLFxuICAgICAgICAgICAgICAgICAgICBwcm9kdWN0c0RhdGEkLnBpcGUoZmlsdGVyKChwYWdpbmF0ZSkgPT4gcGFnaW5hdGUgIT09IG51bGwgJiYgcGFnaW5hdGUubWV0YS5jdXJyZW50UGFnZSA+PSBwYWdpbmF0ZS5tZXRhLmxhc3RQYWdlKSksXG4gICAgICAgICAgICAgICAgICAgIGRlc3Ryb3kkXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xufVxuXG4vKipcbiAqICDQotC+0LrQtdC9INC/0L7RgtC+0LrQsCDQtNCw0L3QvdGL0YUg0L/RgNC+0LrRgNGD0YLQutC4INGB0YLRgNCw0L3QuNGG0Ysg0YEg0YHQuNCz0L3QsNC70LDQvNC4INC+INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INC/0LDQs9C40L3QsNGG0LjQuCDRgtC+0LLQsNGA0LAuXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19ORVhUX1BBR0VfUEFHSU5BVElPTl9DSEFOR0VfSU5GTzogSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTxudW1iZXI+PiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPG51bWJlcj4+KCdTQ19ORVhUX1BBR0VfUEFHSU5BVElPTl9DSEFOR0VfSU5GTycpO1xuXG4vKipcbiAqINCf0YDQvtCy0LDQudC00LXRgNGLINC/0L7RgtC+0LrQsCDQtNCw0L3QvdGL0YUg0L4g0YLQvtCy0LDRgNCw0YUg0LrQsNGC0LXQs9C+0YDQuNC4LCDQstC60LvRjtGH0LDRjyDQtNCw0L3QvdGL0LUg0L4g0LrQvtC70LjRh9C10YHRgtCy0LUg0Y3RgtC40YUg0YLQvtCy0LDRgNC+0LIg0LIg0LrQvtGA0LfQuNC90LUuXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19QUk9EVUNUX1BBR0lOQVRJT05fQ0hBTkdFX1BST1ZJREVSUzogUHJvdmlkZXJbXSA9IFtcbiAgICBUdWlEZXN0cm95U2VydmljZSxcbiAgICB7XG4gICAgICAgIHByb3ZpZGU6IFNDX1BST0RVQ1RfUEFHSU5BVElPTl9DSEFOR0VfSU5GTyxcbiAgICAgICAgZGVwczogW0FjdGl2YXRlZFJvdXRlLCBTY0NhdGFsb2dTZXJ2aWNlLCBTY0NhcnRTZXJ2aWNlLCBTY0F1dGhTZXJ2aWNlLCBUdWlEZXN0cm95U2VydmljZV0sXG4gICAgICAgIHVzZUZhY3Rvcnk6IHByb2R1Y3RzUGFnaW5hdGlvbkNoYW5nZUZhY3RvcnlcbiAgICB9LFxuICAgIHtcbiAgICAgICAgcHJvdmlkZTogU0NfTkVYVF9QQUdFX1BBR0lOQVRJT05fQ0hBTkdFX0lORk8sXG4gICAgICAgIGRlcHM6IFtSb3V0ZXIsIFNDX05FWFRfUEFHRV9QQUdJTkFUSU9OX0NMSUNLLCBTQ19QUk9EVUNUX1BBR0lOQVRJT05fQ0hBTkdFX0lORk8sIFR1aURlc3Ryb3lTZXJ2aWNlXSxcbiAgICAgICAgdXNlRmFjdG9yeTogbmV4dFBhZ2VQYWdpbmF0aW9uQ2hhbmdlRmFjdG9yeVxuICAgIH0sXG4gICAge1xuICAgICAgICBwcm92aWRlOiBTQ19MT0FESU5HX1BBR0lOQVRJT05fQ0hBTkdFX0lORk8sXG4gICAgICAgIGRlcHM6IFtTQ19QUk9EVUNUX1BBR0lOQVRJT05fQ0hBTkdFX0lORk8sIFR1aURlc3Ryb3lTZXJ2aWNlXSxcbiAgICAgICAgdXNlRmFjdG9yeTogbG9hZGluZ1BhZ2luYXRpb25GYWN0b3J5XG4gICAgfVxuXTtcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './sc-linear-values-token';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdG9rZW5zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjLWxpbmVhci12YWx1ZXMtdG9rZW4nO1xuIl19
@@ -1,10 +0,0 @@
1
- import { tuiCreateToken } from '@taiga-ui/cdk';
2
- /**
3
- * Единицы измерения линейной величины по умолчанию.
4
- */
5
- export const SC_LINEAR_VALUES = ['пог.м.', 'м.', 'м2'];
6
- /**
7
- * Токен единиц измерения линейной величины по умолчанию.
8
- */
9
- export const SC_LINEAR_VALUES_TOKEN = tuiCreateToken(SC_LINEAR_VALUES);
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbGluZWFyLXZhbHVlcy10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS90b2tlbnMvc2MtbGluZWFyLXZhbHVlcy10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRWpFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0dWlDcmVhdGVUb2tlbiB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuXG4vKipcbiAqINCV0LTQuNC90LjRhtGLINC40LfQvNC10YDQtdC90LjRjyDQu9C40L3QtdC50L3QvtC5INCy0LXQu9C40YfQuNC90Ysg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uXG4gKi9cbmV4cG9ydCBjb25zdCBTQ19MSU5FQVJfVkFMVUVTOiBzdHJpbmdbXSA9IFsn0L/QvtCzLtC8LicsICfQvC4nLCAn0LwyJ107XG5cbi8qKlxuICog0KLQvtC60LXQvSDQtdC00LjQvdC40YYg0LjQt9C80LXRgNC10L3QuNGPINC70LjQvdC10LnQvdC+0Lkg0LLQtdC70LjRh9C40L3RiyDQv9C+INGD0LzQvtC70YfQsNC90LjRji5cbiAqL1xuZXhwb3J0IGNvbnN0IFNDX0xJTkVBUl9WQUxVRVNfVE9LRU4gPSB0dWlDcmVhdGVUb2tlbihTQ19MSU5FQVJfVkFMVUVTKTtcbiJdfQ==
@@ -1,28 +0,0 @@
1
- import { ScProduct } from '@snabcentr/client-core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Класс хэлпер для работы со значениями единиц измерения товара.
5
- */
6
- export declare class ScUnitsHelper {
7
- readonly linearValues: string[];
8
- /**
9
- * Инициирует экземпляр класса {@link ScUnitsHelper}.
10
- *
11
- * @param linearValues Единицы измерения линейной величины.
12
- */
13
- constructor(linearValues: string[]);
14
- /**
15
- * Возвращает признак возможности продажи товара на метраж.
16
- *
17
- * @param product Товар для которого нужно проверить возможность продажи на метраж.
18
- */
19
- productIsMeasurable(product: ScProduct): boolean;
20
- /**
21
- * Возвращает кратность количества для товара.
22
- *
23
- * @param product Товар для которого нужно вернуть кратность количества.
24
- */
25
- productMultiplicity(product: ScProduct): number;
26
- static ɵfac: i0.ɵɵFactoryDeclaration<ScUnitsHelper, never>;
27
- static ɵprov: i0.ɵɵInjectableDeclaration<ScUnitsHelper>;
28
- }
@@ -1,43 +0,0 @@
1
- import { EventEmitter, InjectionToken, Provider } from '@angular/core';
2
- import { ScICategoryProductPaginationParams, ScIPaginate, ScProduct } from '@snabcentr/client-core';
3
- import { Observable, Subject } from 'rxjs';
4
- /**
5
- * Значения пагинации списка товаров категории по умолчанию.
6
- */
7
- export declare const SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS: ScICategoryProductPaginationParams;
8
- /**
9
- * Токен значений пагинации списка товаров в категории по умолчанию.
10
- */
11
- export declare const SC_PRODUCT_PAGINATION_OPTIONS: InjectionToken<ScICategoryProductPaginationParams>;
12
- /**
13
- * {@link Subject} параметров пагинации списка товаров в категории.
14
- */
15
- export declare const paginationParams$: Subject<ScICategoryProductPaginationParams>;
16
- /**
17
- * Токен {@link Subject} параметров пагинации списка товаров в категории для получения их из вне.
18
- */
19
- export declare const SC_PRODUCT_PAGINATION_PARAMS: InjectionToken<Subject<ScICategoryProductPaginationParams>>;
20
- /**
21
- * Токен потока данных о товарах категории, включая данные о количестве этих товаров в корзине.
22
- */
23
- export declare const SC_PRODUCT_PAGINATION_CHANGE_INFO: InjectionToken<Observable<ScIPaginate<ScProduct> | null>>;
24
- /**
25
- * {@link EventEmitter} событие нажатия на кнопку "Показать следующие позиции категории".
26
- */
27
- export declare const nextPageClickEvent: EventEmitter<void>;
28
- /**
29
- * Токен {@link EventEmitter} событие нажатия на кнопку "Показать следующие позиции категории".
30
- */
31
- export declare const SC_NEXT_PAGE_PAGINATION_CLICK: InjectionToken<EventEmitter<void>>;
32
- /**
33
- * Токен потока данных о состоянии загрузки товаров пагинации.
34
- */
35
- export declare const SC_LOADING_PAGINATION_CHANGE_INFO: InjectionToken<Observable<boolean>>;
36
- /**
37
- * Токен потока данных прокрутки страницы с сигналами о необходимости пагинации товара.
38
- */
39
- export declare const SC_NEXT_PAGE_PAGINATION_CHANGE_INFO: InjectionToken<Observable<number>>;
40
- /**
41
- * Провайдеры потока данных о товарах категории, включая данные о количестве этих товаров в корзине.
42
- */
43
- export declare const SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS: Provider[];
package/tokens/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from './sc-linear-values-token';
@@ -1,8 +0,0 @@
1
- /**
2
- * Единицы измерения линейной величины по умолчанию.
3
- */
4
- export declare const SC_LINEAR_VALUES: string[];
5
- /**
6
- * Токен единиц измерения линейной величины по умолчанию.
7
- */
8
- export declare const SC_LINEAR_VALUES_TOKEN: import("@angular/core").InjectionToken<string[]>;