@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.
- package/cart/cart-item-mobile/sc-cart-item-mobile.component.d.ts +1 -2
- package/catalog/input-quantity/sc-input-quantity.component.d.ts +22 -10
- package/catalog/price-history/sc-price-history.component.d.ts +8 -0
- package/catalog/price-list-pagination/sc-price-list-pagination.component.d.ts +10 -5
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +1 -2
- package/esm2020/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +4 -4
- package/esm2020/catalog/input-quantity/sc-input-quantity.component.mjs +34 -14
- package/esm2020/catalog/price-card/sc-price-card.component.mjs +3 -3
- package/esm2020/catalog/price-history/sc-price-history.component.mjs +23 -12
- package/esm2020/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +22 -10
- package/esm2020/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +2 -3
- package/esm2020/order/order-item-mobile/order-item-mobile.component.mjs +2 -2
- package/esm2020/providers/index.mjs +1 -2
- package/esm2020/public-api.mjs +1 -2
- package/fesm2015/snabcentr-client-ui.mjs +86 -192
- package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
- package/fesm2020/snabcentr-client-ui.mjs +83 -188
- package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
- package/order/order-item-mobile/order-item-mobile.component.d.ts +1 -2
- package/package.json +1 -1
- package/providers/index.d.ts +0 -1
- package/public-api.d.ts +0 -1
- package/esm2020/helpers/sc-units-helper.mjs +0 -45
- package/esm2020/providers/productsPagination.mjs +0 -99
- package/esm2020/tokens/index.mjs +0 -2
- package/esm2020/tokens/sc-linear-values-token.mjs +0 -10
- package/helpers/sc-units-helper.d.ts +0 -28
- package/providers/productsPagination.d.ts +0 -43
- package/tokens/index.d.ts +0 -1
- 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
package/providers/index.d.ts
CHANGED
package/public-api.d.ts
CHANGED
@@ -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==
|
package/esm2020/tokens/index.mjs
DELETED
@@ -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[]>;
|