@snabcentr/client-ui 1.8.2 → 1.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.

Potentially problematic release.


This version of @snabcentr/client-ui might be problematic. Click here for more details.

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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHNQYWdpbmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3Byb3ZpZGVycy9wcm9kdWN0c1BhZ2luYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQThELE1BQU0sd0JBQXdCLENBQUM7QUFDcEosT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUF1QztJQUNyRixPQUFPLEVBQUUsRUFBRTtJQUNYLElBQUksRUFBRSxDQUFDO0NBQ1YsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQXVELGNBQWMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0FBRXZKOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWdELElBQUksT0FBTyxFQUFzQyxDQUFDO0FBRWhJOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQWdFLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRTNJOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUywrQkFBK0IsQ0FDcEMsRUFBRSxRQUFRLEVBQWtCLEVBQzVC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QixDQUFDO1FBQzVELFVBQVUsRUFBRSx3QkFBd0I7S0FDdkM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3Rpb25Ub2tlbiwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2NBdXRoU2VydmljZSwgU2NDYXJ0U2VydmljZSwgU2NDYXRhbG9nU2VydmljZSwgU2NJQ2F0ZWdvcnlQcm9kdWN0UGFnaW5hdGlvblBhcmFtcywgU2NJUGFnaW5hdGUsIFNjUHJvZHVjdCB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpRGVzdHJveVNlcnZpY2UsIHR1aUNyZWF0ZVRva2VuLCB0dWlJc1ByZXNlbnQgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIG1lcmdlLCBzY2FuLCBzaGFyZSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqINCX0L3QsNGH0LXQvdC40Y8g0L/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[]>;