@snabcentr/client-ui 2.1.0 → 2.2.1
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 +15 -3
- package/catalog/price-history/sc-price-history.component.d.ts +8 -0
- package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +1 -2
- package/esm2022/accordion/sc-accordion-content.directive.mjs +3 -3
- package/esm2022/accordion/sc-accordion.component.mjs +3 -3
- package/esm2022/accordion/sc-accordion.module.mjs +4 -4
- package/esm2022/auth/sc-auth.module.mjs +4 -4
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +3 -3
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +3 -3
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +3 -3
- package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +3 -3
- package/esm2022/banner/sc-banner.component.mjs +3 -3
- package/esm2022/banner/sc-banner.module.mjs +4 -4
- package/esm2022/brands-list/sc-brands-list.component.mjs +3 -3
- package/esm2022/brands-list/sc-brands-list.module.mjs +4 -4
- package/esm2022/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +6 -6
- package/esm2022/cart/sc-cart.module.mjs +4 -4
- package/esm2022/catalog/categories-list/sc-categories-list.component.mjs +3 -3
- package/esm2022/catalog/category-card/sc-category-card.component.mjs +3 -3
- package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +31 -12
- package/esm2022/catalog/price-card/sc-price-card.component.mjs +5 -5
- package/esm2022/catalog/price-history/sc-price-history.component.mjs +29 -15
- package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +3 -3
- package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +3 -3
- package/esm2022/catalog/sc-catalog.module.mjs +4 -4
- package/esm2022/catalog/sc-favorite-btn/sc-favorite-btn.component.mjs +3 -3
- package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +3 -3
- package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +3 -3
- package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +3 -3
- package/esm2022/contacts/sc-contacts.module.mjs +4 -4
- package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +3 -3
- package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +3 -3
- package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +3 -3
- package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +3 -3
- package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +3 -3
- package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +3 -3
- package/esm2022/contragents/sc-contragents.module.mjs +4 -4
- package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +3 -3
- package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +3 -3
- package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +3 -3
- package/esm2022/delivery-address/sc-delivery-address.module.mjs +4 -4
- package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +5 -6
- package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +3 -3
- package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +4 -4
- package/esm2022/directives/tel-link/sc-tel-link.directive.mjs +3 -3
- package/esm2022/directives/tel-link/sc-tel-link.module.mjs +4 -4
- package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +3 -3
- package/esm2022/files/directives/tree-top.directive.mjs +3 -3
- package/esm2022/files/directives/tree.directive.mjs +3 -3
- package/esm2022/files/file-tree-item/file-tree-item.component.mjs +3 -3
- package/esm2022/files/files-and-documents/files-and-documents.component.mjs +3 -3
- package/esm2022/files/files-and-documents.module.mjs +4 -4
- package/esm2022/files/services/tree-icon.service.mjs +3 -3
- package/esm2022/files/services/tree-loader.service.mjs +3 -3
- package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +5 -5
- package/esm2022/form-fields/form-fields.module.mjs +4 -4
- package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +10 -6
- package/esm2022/helpers/sc-px-converter.mjs +3 -3
- package/esm2022/news/news-card/sc-news-card.component.mjs +3 -3
- package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +3 -3
- package/esm2022/news/sc-news.module.mjs +4 -4
- package/esm2022/order/index.mjs +2 -2
- package/esm2022/order/order-item-mobile/sc-order-item-mobile.component.mjs +80 -0
- package/esm2022/order/sc-order.module.mjs +6 -6
- package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +3 -3
- package/esm2022/pipes/sc-formatted-phone.mjs +3 -3
- package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +3 -3
- package/esm2022/profile/sc-profile.module.mjs +4 -4
- package/esm2022/public-api.mjs +1 -2
- package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +3 -3
- package/esm2022/qrcode/sc-qrcode.module.mjs +4 -4
- package/esm2022/samples/ask-to-sample-form/sc-ask-to-sample-form.component.mjs +96 -10
- package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +3 -3
- package/esm2022/samples/sc-sample.module.mjs +10 -7
- package/esm2022/share-button/sc-share-button.component.mjs +3 -3
- package/esm2022/share-button/sc-share-button.module.mjs +4 -4
- package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +3 -3
- package/esm2022/user/sc-user.module.mjs +4 -4
- package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +3 -3
- package/esm2022/user/user-managers/sc-user-managers.component.mjs +5 -5
- package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +3 -3
- package/esm2022/verification/sc-verification.module.mjs +4 -4
- package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +3 -3
- package/fesm2022/snabcentr-client-ui.mjs +413 -342
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/form-fields/suggestion-field/sc-suggestion-field.component.d.ts +4 -0
- package/order/index.d.ts +1 -1
- package/order/order-item-mobile/{order-item-mobile.component.d.ts → sc-order-item-mobile.component.d.ts} +1 -2
- package/order/sc-order.module.d.ts +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +0 -1
- package/release_notes.tmp +6 -1
- package/samples/ask-to-sample-form/sc-ask-to-sample-form.component.d.ts +38 -4
- package/samples/sc-sample.module.d.ts +1 -1
- package/styles/tailwind/tailwind.scss +11 -26
- package/esm2022/helpers/sc-units-helper.mjs +0 -45
- package/esm2022/order/order-item-mobile/order-item-mobile.component.mjs +0 -80
- package/esm2022/tokens/index.mjs +0 -2
- package/esm2022/tokens/sc-linear-values-token.mjs +0 -10
- package/helpers/sc-units-helper.d.ts +0 -28
- package/tokens/index.d.ts +0 -1
- package/tokens/sc-linear-values-token.d.ts +0 -8
@@ -33,6 +33,10 @@ export declare class ScSuggestionFieldComponent implements OnInit {
|
|
33
33
|
* Компонент обёртка выпадающего списка.
|
34
34
|
*/
|
35
35
|
private readonly host;
|
36
|
+
/**
|
37
|
+
* Минимальная длина поискового запроса для получения данных.
|
38
|
+
*/
|
39
|
+
private readonly minLengthSearchTerm;
|
36
40
|
/**
|
37
41
|
* Инициализирует экземпляр класса {@link ScSuggestionFieldComponent}.
|
38
42
|
*
|
package/order/index.d.ts
CHANGED
@@ -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/kit';
|
4
|
-
import { ScUnitsHelper } from '../../helpers/sc-units-helper';
|
5
4
|
import * as i0 from "@angular/core";
|
6
5
|
/**
|
7
6
|
* Компонент карточки элемента заказа.
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as i0 from "@angular/core";
|
2
|
-
import * as i1 from "./order-item-mobile/order-item-mobile.component";
|
2
|
+
import * as i1 from "./order-item-mobile/sc-order-item-mobile.component";
|
3
3
|
import * as i2 from "./sc-payment-status/sc-payment-status.component";
|
4
4
|
import * as i3 from "@angular/common";
|
5
5
|
import * as i4 from "@taiga-ui/core";
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@snabcentr/client-ui",
|
3
|
-
"version": "2.1
|
3
|
+
"version": "2.2.1",
|
4
4
|
"author": "Snabcentr Ltd.",
|
5
5
|
"repository": "https://gitlab.snabcentr.met/web/angular/snabcentr-client-ui-lib",
|
6
6
|
"license": "Commercial",
|
@@ -17,7 +17,7 @@
|
|
17
17
|
"@ng-web-apis/common": ">=4.2.1",
|
18
18
|
"@ng-web-apis/intersection-observer": ">=4.2.1",
|
19
19
|
"@ng-web-apis/storage": ">=4.2.1",
|
20
|
-
"@snabcentr/client-core": ">=2.
|
20
|
+
"@snabcentr/client-core": ">=2.2.0",
|
21
21
|
"@taiga-ui/addon-charts": ">=4.5.0",
|
22
22
|
"@taiga-ui/addon-commerce": ">=4.5.0",
|
23
23
|
"@taiga-ui/addon-doc": ">=4.5.0",
|
package/public-api.d.ts
CHANGED
package/release_notes.tmp
CHANGED
@@ -1 +1,6 @@
|
|
1
|
-
|
1
|
+
## 2.2.1 (2024-10-08)
|
2
|
+
|
3
|
+
### changed (1 change)
|
4
|
+
|
5
|
+
- [#10426: Доработано отображение отсутствия истории цен](web_soft/libs/angular/snabcentr-client-ui-lib@139da5f26033f1d0b51e0742b65bc7e2f427be2b) ([merge request](web_soft/libs/angular/snabcentr-client-ui-lib!167))
|
6
|
+
|
@@ -1,18 +1,52 @@
|
|
1
|
-
import {
|
1
|
+
import { OnInit } from '@angular/core';
|
2
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
2
3
|
import { ScISuggestionType } from '@snabcentr/client-core';
|
4
|
+
import { Observable, Subject } from 'rxjs';
|
3
5
|
import * as i0 from "@angular/core";
|
4
6
|
/**
|
5
7
|
* Компонент формы запроса бесплатного образца.
|
6
8
|
*/
|
7
|
-
export declare class ScAskToSampleFormComponent {
|
9
|
+
export declare class ScAskToSampleFormComponent implements OnInit {
|
10
|
+
/**
|
11
|
+
* Сервис работы с образцами.
|
12
|
+
*/
|
13
|
+
private readonly samplesService;
|
14
|
+
/**
|
15
|
+
* Сервис информации о пользователе.
|
16
|
+
*/
|
17
|
+
readonly user$: Observable<import("@snabcentr/client-core").ScUser>;
|
18
|
+
private readonly context;
|
19
|
+
/**
|
20
|
+
* Наименование формы, с которой отправляется запрос.
|
21
|
+
*/
|
22
|
+
formName?: 'order-sample' | 'buy-products';
|
8
23
|
/**
|
9
24
|
* Группа полей ввода для формы «Пожелания и предложения по улучшению сайта».
|
10
25
|
*/
|
11
|
-
form: FormGroup
|
26
|
+
form: FormGroup<{
|
27
|
+
name: FormControl<string | null>;
|
28
|
+
phone: FormControl<string | null>;
|
29
|
+
email: FormControl<string | null>;
|
30
|
+
description: FormControl<string | null>;
|
31
|
+
}>;
|
12
32
|
/**
|
13
33
|
* Перечисление типов подсказок.
|
14
34
|
*/
|
15
35
|
readonly suggestionType: typeof ScISuggestionType;
|
36
|
+
/**
|
37
|
+
* {@link Subject} события отправки формы.
|
38
|
+
*/
|
39
|
+
readonly onSubmit: Subject<void>;
|
40
|
+
/**
|
41
|
+
* {@link Observable} запроса на отправку данных.
|
42
|
+
*/
|
43
|
+
readonly request$: Observable<undefined | null>;
|
44
|
+
/**
|
45
|
+
* {@link Observable} изменения состояния загрузки данных.
|
46
|
+
*/
|
47
|
+
readonly loading$: Observable<boolean>;
|
48
|
+
/** @inheritdoc */
|
49
|
+
ngOnInit(): void;
|
16
50
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScAskToSampleFormComponent, never>;
|
17
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ScAskToSampleFormComponent, "sc-ask-to-sample-form", never, {}, {}, never, never, false, never>;
|
51
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ScAskToSampleFormComponent, "sc-ask-to-sample-form", never, { "formName": { "alias": "formName"; "required": false; }; }, {}, never, never, false, never>;
|
18
52
|
}
|
@@ -14,6 +14,6 @@ import * as i10 from "@taiga-ui/cdk";
|
|
14
14
|
*/
|
15
15
|
export declare class ScPreviewSampleModule {
|
16
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScPreviewSampleModule, never>;
|
17
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ScPreviewSampleModule, [typeof i1.ScPreviewSampleComponent, typeof i2.ScAskToSampleFormComponent], [typeof i3.CommonModule, typeof i4.ReactiveFormsModule, typeof i5.TuiError, typeof i6.TuiFieldErrorPipe, typeof i7.ScFormFieldsModule, typeof i8.TuiInputModule, typeof i8.TuiInputPhoneModule, typeof i9.TuiItem, typeof i6.TuiCarouselComponent, typeof i6.TuiCarouselDirective, typeof i6.TuiCarouselAutoscroll, typeof i6.TuiCarouselButtons, typeof i6.TuiCarouselScroll, typeof i6.TuiAvatar, typeof i10.TuiHovered, typeof i10.TuiLet, typeof i5.TuiButton, typeof i5.TuiLabel], [typeof i1.ScPreviewSampleComponent, typeof i2.ScAskToSampleFormComponent]>;
|
17
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ScPreviewSampleModule, [typeof i1.ScPreviewSampleComponent, typeof i2.ScAskToSampleFormComponent], [typeof i3.CommonModule, typeof i4.ReactiveFormsModule, typeof i5.TuiError, typeof i6.TuiFieldErrorPipe, typeof i7.ScFormFieldsModule, typeof i8.TuiInputModule, typeof i8.TuiInputPhoneModule, typeof i9.TuiItem, typeof i6.TuiCarouselComponent, typeof i6.TuiCarouselDirective, typeof i6.TuiCarouselAutoscroll, typeof i6.TuiCarouselButtons, typeof i6.TuiCarouselScroll, typeof i6.TuiAvatar, typeof i10.TuiHovered, typeof i10.TuiLet, typeof i5.TuiButton, typeof i6.TuiButtonLoading, typeof i5.TuiLabel], [typeof i1.ScPreviewSampleComponent, typeof i2.ScAskToSampleFormComponent]>;
|
18
18
|
static ɵinj: i0.ɵɵInjectorDeclaration<ScPreviewSampleModule>;
|
19
19
|
}
|
@@ -107,7 +107,7 @@
|
|
107
107
|
}
|
108
108
|
|
109
109
|
/*
|
110
|
-
! tailwindcss v3.4.
|
110
|
+
! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com
|
111
111
|
*/
|
112
112
|
|
113
113
|
/*
|
@@ -935,6 +935,10 @@ video {
|
|
935
935
|
width: 10rem;
|
936
936
|
}
|
937
937
|
|
938
|
+
.w-50 {
|
939
|
+
width: 12.5rem;
|
940
|
+
}
|
941
|
+
|
938
942
|
.w-8 {
|
939
943
|
width: 2rem;
|
940
944
|
}
|
@@ -1282,10 +1286,6 @@ video {
|
|
1282
1286
|
object-fit: cover;
|
1283
1287
|
}
|
1284
1288
|
|
1285
|
-
.p-0 {
|
1286
|
-
padding: 0px;
|
1287
|
-
}
|
1288
|
-
|
1289
1289
|
.p-1 {
|
1290
1290
|
padding: 0.25rem;
|
1291
1291
|
}
|
@@ -1389,6 +1389,12 @@ video {
|
|
1389
1389
|
font-weight: 800;
|
1390
1390
|
}
|
1391
1391
|
|
1392
|
+
.text-body-m-bold {
|
1393
|
+
font-size: 0.9375rem;
|
1394
|
+
line-height: 1.5rem;
|
1395
|
+
font-weight: 800;
|
1396
|
+
}
|
1397
|
+
|
1392
1398
|
.text-lg {
|
1393
1399
|
font-size: 1.125rem;
|
1394
1400
|
line-height: 1.75rem;
|
@@ -1473,11 +1479,6 @@ video {
|
|
1473
1479
|
color: rgb(0 0 0 / var(--tw-text-opacity));
|
1474
1480
|
}
|
1475
1481
|
|
1476
|
-
.text-slate-500 {
|
1477
|
-
--tw-text-opacity: 1;
|
1478
|
-
color: rgb(100 116 139 / var(--tw-text-opacity));
|
1479
|
-
}
|
1480
|
-
|
1481
1482
|
.text-tui-base-04 {
|
1482
1483
|
color: var(--tui-border-normal);
|
1483
1484
|
}
|
@@ -1486,10 +1487,6 @@ video {
|
|
1486
1487
|
color: var(--tui-border-hover);
|
1487
1488
|
}
|
1488
1489
|
|
1489
|
-
.text-tui-base-09 {
|
1490
|
-
color: var(--tui-background-accent-opposite);
|
1491
|
-
}
|
1492
|
-
|
1493
1490
|
.text-tui-error-fill {
|
1494
1491
|
color: var(--tui-status-negative);
|
1495
1492
|
}
|
@@ -1787,16 +1784,4 @@ video {
|
|
1787
1784
|
.group:active .hover-none\:group-active\:text-tui-primary {
|
1788
1785
|
color: var(--tui-background-accent-1);
|
1789
1786
|
}
|
1790
|
-
}
|
1791
|
-
|
1792
|
-
@media (prefers-color-scheme: dark) {
|
1793
|
-
.dark\:bg-slate-900 {
|
1794
|
-
--tw-bg-opacity: 1;
|
1795
|
-
background-color: rgb(15 23 42 / var(--tw-bg-opacity));
|
1796
|
-
}
|
1797
|
-
|
1798
|
-
.dark\:text-slate-400 {
|
1799
|
-
--tw-text-opacity: 1;
|
1800
|
-
color: rgb(148 163 184 / var(--tw-text-opacity));
|
1801
|
-
}
|
1802
1787
|
}
|
@@ -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
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScUnitsHelper, deps: [{ token: SC_LINEAR_VALUES_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
34
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScUnitsHelper, providedIn: 'root' }); }
|
35
|
-
}
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScUnitsHelper, decorators: [{
|
37
|
-
type: Injectable,
|
38
|
-
args: [{
|
39
|
-
providedIn: 'root',
|
40
|
-
}]
|
41
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
42
|
-
type: Inject,
|
43
|
-
args: [SC_LINEAR_VALUES_TOKEN]
|
44
|
-
}] }] });
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdW5pdHMtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2hlbHBlcnMvc2MtdW5pdHMtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdEQUFnRDtBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRW5EOztHQUVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFDdEI7Ozs7T0FJRztJQUNILFlBQW1FLFlBQXNCO1FBQXRCLGlCQUFZLEdBQVosWUFBWSxDQUFVO0lBQUcsQ0FBQztJQUU3Rjs7OztPQUlHO0lBQ0ksbUJBQW1CLENBQUMsT0FBa0I7UUFDekMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxtQkFBbUIsQ0FBQyxPQUFrQjtRQUN6QyxPQUFPLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDOzhHQXhCUSxhQUFhLGtCQU1LLHNCQUFzQjtrSEFOeEMsYUFBYSxjQUZWLE1BQU07OzJGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFPdUIsTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBsb2Rhc2gvcHJlZmVyLWxvZGFzaC1tZXRob2QgKi9cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NQcm9kdWN0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5cbmltcG9ydCB7IFNDX0xJTkVBUl9WQUxVRVNfVE9LRU4gfSBmcm9tICcuLi90b2tlbnMnO1xuXG4vKipcbiAqINCa0LvQsNGB0YEg0YXRjdC70L/QtdGAINC00LvRjyDRgNCw0LHQvtGC0Ysg0YHQviDQt9C90LDRh9C10L3QuNGP0LzQuCDQtdC00LjQvdC40YYg0LjQt9C80LXRgNC10L3QuNGPINGC0L7QstCw0YDQsC5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2NVbml0c0hlbHBlciB7XG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNC40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NVbml0c0hlbHBlcn0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbGluZWFyVmFsdWVzINCV0LTQuNC90LjRhtGLINC40LfQvNC10YDQtdC90LjRjyDQu9C40L3QtdC50L3QvtC5INCy0LXQu9C40YfQuNC90YsuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKEBJbmplY3QoU0NfTElORUFSX1ZBTFVFU19UT0tFTikgcHVibGljIHJlYWRvbmx5IGxpbmVhclZhbHVlczogc3RyaW5nW10pIHt9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQv9GA0LjQt9C90LDQuiDQstC+0LfQvNC+0LbQvdC+0YHRgtC4INC/0YDQvtC00LDQttC4INGC0L7QstCw0YDQsCDQvdCwINC80LXRgtGA0LDQti5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9kdWN0INCi0L7QstCw0YAg0LTQu9GPINC60L7RgtC+0YDQvtCz0L4g0L3Rg9C20L3QviDQv9GA0L7QstC10YDQuNGC0Ywg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQv9GA0L7QtNCw0LbQuCDQvdCwINC80LXRgtGA0LDQti5cbiAgICAgKi9cbiAgICBwdWJsaWMgcHJvZHVjdElzTWVhc3VyYWJsZShwcm9kdWN0OiBTY1Byb2R1Y3QpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGluZWFyVmFsdWVzLmluY2x1ZGVzKHByb2R1Y3QudW5pdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LrRgNCw0YLQvdC+0YHRgtGMINC60L7Qu9C40YfQtdGB0YLQstCwINC00LvRjyDRgtC+0LLQsNGA0LAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCDQotC+0LLQsNGAINC00LvRjyDQutC+0YLQvtGA0L7Qs9C+INC90YPQttC90L4g0LLQtdGA0L3Rg9GC0Ywg0LrRgNCw0YLQvdC+0YHRgtGMINC60L7Qu9C40YfQtdGB0YLQstCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBwcm9kdWN0TXVsdGlwbGljaXR5KHByb2R1Y3Q6IFNjUHJvZHVjdCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwcm9kdWN0Lm1pbkNvdW50ICYmICF0aGlzLmxpbmVhclZhbHVlcy5pbmNsdWRlcyhwcm9kdWN0LnVuaXQpID8gcHJvZHVjdC5taW5Db3VudCA6IDE7XG4gICAgfVxufVxuIl19
|
@@ -1,80 +0,0 @@
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
|
2
|
-
import { SC_PATH_IMAGE_NOT_FOUND, SC_URLS } from '@snabcentr/client-core';
|
3
|
-
import { TuiPreviewDialogService } from '@taiga-ui/kit';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "../../helpers/sc-units-helper";
|
6
|
-
import * as i2 from "@angular/common";
|
7
|
-
import * as i3 from "@taiga-ui/core";
|
8
|
-
import * as i4 from "@taiga-ui/kit";
|
9
|
-
import * as i5 from "../../catalog/price-warehouse-stock/sc-price-warehouse-stock.component";
|
10
|
-
import * as i6 from "@taiga-ui/polymorpheus";
|
11
|
-
/**
|
12
|
-
* Компонент карточки элемента заказа.
|
13
|
-
*/
|
14
|
-
export class ScOrderItemMobileComponent {
|
15
|
-
/**
|
16
|
-
* Инициирует экземпляр класса {@link ScOrderItemMobileComponent}.
|
17
|
-
*
|
18
|
-
* @param unitsHelper Объект-хэлпер для работы со значениями единиц измерения товара.
|
19
|
-
* @param previewDialogService Сервис диалогового окна предварительного просмотра.
|
20
|
-
* @param urls Список ссылок на разделы backend'a.
|
21
|
-
* @param pathImageNotFound Путь до изображения 'Товар не найден'.
|
22
|
-
*/
|
23
|
-
constructor(unitsHelper, previewDialogService, urls, pathImageNotFound) {
|
24
|
-
this.unitsHelper = unitsHelper;
|
25
|
-
this.previewDialogService = previewDialogService;
|
26
|
-
this.urls = urls;
|
27
|
-
this.pathImageNotFound = pathImageNotFound;
|
28
|
-
/**
|
29
|
-
* Событие нажатия на карточку.
|
30
|
-
*/
|
31
|
-
this.clickCardEvent = new EventEmitter();
|
32
|
-
/**
|
33
|
-
* Событие нажатия на дополнительные действия.
|
34
|
-
*/
|
35
|
-
this.clickActionsEvent = new EventEmitter();
|
36
|
-
}
|
37
|
-
/**
|
38
|
-
* Продукт элемента заказа.
|
39
|
-
*/
|
40
|
-
get product() {
|
41
|
-
return this.orderItem?.product;
|
42
|
-
}
|
43
|
-
/**
|
44
|
-
* Отобразить спецификацию.
|
45
|
-
*/
|
46
|
-
showSpecification() {
|
47
|
-
this.previewDialogService.open(this.specificationPreviewRef ?? '').subscribe();
|
48
|
-
}
|
49
|
-
/**
|
50
|
-
* Возвращает ссылку на изображение карточки товара.
|
51
|
-
*/
|
52
|
-
getCardImage() {
|
53
|
-
return this.product?.getImage(this.urls.imgServerUrl) ?? this.urls.imgServerUrl + this.pathImageNotFound;
|
54
|
-
}
|
55
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScOrderItemMobileComponent, deps: [{ token: i1.ScUnitsHelper }, { token: TuiPreviewDialogService }, { token: SC_URLS }, { token: SC_PATH_IMAGE_NOT_FOUND }], target: i0.ɵɵFactoryTarget.Component }); }
|
56
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: ScOrderItemMobileComponent, selector: "sc-order-item-mobile", inputs: { orderItem: "orderItem" }, outputs: { clickCardEvent: "clickCardEvent", clickActionsEvent: "clickActionsEvent" }, viewQueries: [{ propertyName: "specificationPreviewRef", first: true, predicate: ["specificationPreview"], descendants: true }], ngImport: i0, template: "<div class=\"relative flex flex-wrap gap-x-4 gap-y-2 rounded-xl border border-tui-base-04 bg-white p-4 shadow-sc-2\">\n <ng-container *ngIf=\"orderItem && product; else skeleton\">\n <button\n tuiIconButton\n (click)=\"clickActionsEvent.emit()\"\n size=\"m\"\n iconStart=\"@tui.ellipsis-vertical\"\n appearance=\"float\"\n class=\"!absolute right-0 top-0 !hidden\"\n ></button>\n <div class=\"flex grow gap-2\">\n <div class=\"flex size-20 shrink-0 items-center justify-center overflow-hidden\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImage()\"\n [alt]=\"product.name\"\n [class.p-5]=\"!product.images?.length\"\n class=\"cursor-pointer\"\n />\n </div>\n\n <div class=\"flex grow flex-wrap gap-x-8 self-center\">\n <div class=\"flex grow basis-min-content flex-col\">\n <a\n tuiLink\n (click)=\"clickCardEvent.emit()\"\n >\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"flex flex-col gap-y-0.5 text-xs text-tui-text-02\">\n <div class=\"flex flex-wrap gap-y-0.5\">\n <p class=\"w-40\">\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p\n class=\"w-40\"\n *ngIf=\"product.pack\"\n >\n \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n </p>\n </div>\n <a\n tuiLink\n *ngIf=\"orderItem.specificationImgUrl\"\n (click)=\"showSpecification()\"\n >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n >\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"orderItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"orderItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n </div>\n <div class=\"flex flex-wrap content-center\">\n <div class=\"flex w-40 flex-col gap-x-8 gap-y-0.5\">\n <span\n *ngIf=\"product.discount\"\n class=\"flex items-center text-xs text-tui-text-02\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span\n *ngIf=\"!product.priceInRub\"\n class=\"text-xs text-tui-text-02\"\n >{{ product.costString }}</span\n >\n </p>\n <sc-price-warehouse-stock\n [product]=\"product\"\n [fromMain]=\"false\"\n ></sc-price-warehouse-stock>\n </div>\n\n <div class=\"w-40 text-xs text-tui-text-02\">\n <ng-container *ngIf=\"orderItem.height; else length\">\n <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ orderItem.height }} \u043C.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"orderItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ orderItem.length }} \u043C.</p>\n </ng-template>\n <p *ngIf=\"orderItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ orderItem.width }} \u043C.</p>\n <p class=\"text-sm text-tui-base-09\">\n \u0421\u0443\u043C\u043C\u0430: <span class=\"whitespace-nowrap font-bold\"> {{ orderItem.getCostRubStr() }} </span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex w-full gap-2\">\n <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n <div class=\"flex grow flex-col gap-2.5 bg-white\">\n <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: i3.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i4.TuiPreviewComponent, selector: "tui-preview", inputs: ["zoomable", "rotatable"] }, { kind: "directive", type: i4.TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: i5.ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint", "fromMain"] }, { kind: "directive", type: i6.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
57
|
-
}
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: ScOrderItemMobileComponent, decorators: [{
|
59
|
-
type: Component,
|
60
|
-
args: [{ selector: 'sc-order-item-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative flex flex-wrap gap-x-4 gap-y-2 rounded-xl border border-tui-base-04 bg-white p-4 shadow-sc-2\">\n <ng-container *ngIf=\"orderItem && product; else skeleton\">\n <button\n tuiIconButton\n (click)=\"clickActionsEvent.emit()\"\n size=\"m\"\n iconStart=\"@tui.ellipsis-vertical\"\n appearance=\"float\"\n class=\"!absolute right-0 top-0 !hidden\"\n ></button>\n <div class=\"flex grow gap-2\">\n <div class=\"flex size-20 shrink-0 items-center justify-center overflow-hidden\">\n <img\n (click)=\"clickCardEvent.emit()\"\n [src]=\"getCardImage()\"\n [alt]=\"product.name\"\n [class.p-5]=\"!product.images?.length\"\n class=\"cursor-pointer\"\n />\n </div>\n\n <div class=\"flex grow flex-wrap gap-x-8 self-center\">\n <div class=\"flex grow basis-min-content flex-col\">\n <a\n tuiLink\n (click)=\"clickCardEvent.emit()\"\n >\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"flex flex-col gap-y-0.5 text-xs text-tui-text-02\">\n <div class=\"flex flex-wrap gap-y-0.5\">\n <p class=\"w-40\">\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p\n class=\"w-40\"\n *ngIf=\"product.pack\"\n >\n \u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}\n </p>\n </div>\n <a\n tuiLink\n *ngIf=\"orderItem.specificationImgUrl\"\n (click)=\"showSpecification()\"\n >\u0421\u043F\u0435\u0446\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u044F</a\n >\n <ng-template\n #specificationPreview\n let-preview\n >\n <tui-preview\n [rotatable]=\"false\"\n [zoomable]=\"false\"\n >\n <img\n *polymorpheusOutlet=\"orderItem.specificationImgUrl as src\"\n alt=\"preview\"\n [src]=\"orderItem.specificationImgUrl\"\n />\n <button\n iconStart=\"@tui.x\"\n title=\"Close\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n (click)=\"preview.complete()\"\n ></button>\n </tui-preview>\n </ng-template>\n </div>\n </div>\n <div class=\"flex flex-wrap content-center\">\n <div class=\"flex w-40 flex-col gap-x-8 gap-y-0.5\">\n <span\n *ngIf=\"product.discount\"\n class=\"flex items-center text-xs text-tui-text-02\"\n >\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"font-bold text-tui-success-fill\"> -{{ product.discount.percent }}% </span>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <p class=\"flex flex-col items-baseline gap-x-2 font-bold\">\n <span>{{ product.costRubString }}</span>\n <span\n *ngIf=\"!product.priceInRub\"\n class=\"text-xs text-tui-text-02\"\n >{{ product.costString }}</span\n >\n </p>\n <sc-price-warehouse-stock\n [product]=\"product\"\n [fromMain]=\"false\"\n ></sc-price-warehouse-stock>\n </div>\n\n <div class=\"w-40 text-xs text-tui-text-02\">\n <ng-container *ngIf=\"orderItem.height; else length\">\n <p>\u0412\u044B\u0441\u043E\u0442\u0430: {{ orderItem.height }} \u043C.</p>\n </ng-container>\n <ng-template #length>\n <p *ngIf=\"orderItem.length\">\u0414\u043B\u0438\u043D\u0430: {{ orderItem.length }} \u043C.</p>\n </ng-template>\n <p *ngIf=\"orderItem.width\">\u0428\u0438\u0440\u0438\u043D\u0430: {{ orderItem.width }} \u043C.</p>\n <p class=\"text-sm text-tui-base-09\">\n \u0421\u0443\u043C\u043C\u0430: <span class=\"whitespace-nowrap font-bold\"> {{ orderItem.getCostRubStr() }} </span>\n </p>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-template #skeleton>\n <div class=\"flex w-full gap-2\">\n <div class=\"size-20 rounded-xl bg-tui-base-02\"></div>\n <div class=\"flex grow flex-col gap-2.5 bg-white\">\n <div class=\"h-4 w-full rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-3/5 rounded-xl bg-tui-base-02\"></div>\n <div class=\"h-4 w-4/5 rounded-xl bg-tui-base-02\"></div>\n </div>\n </div>\n </ng-template>\n</div>\n" }]
|
61
|
-
}], ctorParameters: () => [{ type: i1.ScUnitsHelper }, { type: i4.TuiPreviewDialogService, decorators: [{
|
62
|
-
type: Inject,
|
63
|
-
args: [TuiPreviewDialogService]
|
64
|
-
}] }, { type: undefined, decorators: [{
|
65
|
-
type: Inject,
|
66
|
-
args: [SC_URLS]
|
67
|
-
}] }, { type: undefined, decorators: [{
|
68
|
-
type: Inject,
|
69
|
-
args: [SC_PATH_IMAGE_NOT_FOUND]
|
70
|
-
}] }], propDecorators: { specificationPreviewRef: [{
|
71
|
-
type: ViewChild,
|
72
|
-
args: ['specificationPreview']
|
73
|
-
}], orderItem: [{
|
74
|
-
type: Input
|
75
|
-
}], clickCardEvent: [{
|
76
|
-
type: Output
|
77
|
-
}], clickActionsEvent: [{
|
78
|
-
type: Output
|
79
|
-
}] } });
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItaXRlbS1tb2JpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL29yZGVyL29yZGVyLWl0ZW0tbW9iaWxlL29yZGVyLWl0ZW0tbW9iaWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9vcmRlci1pdGVtLW1vYmlsZS9vcmRlci1pdGVtLW1vYmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBa0MsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBSXhEOztHQUVHO0FBTUgsTUFBTSxPQUFPLDBCQUEwQjtJQXlCbkM7Ozs7Ozs7T0FPRztJQUNILFlBQ29CLFdBQTBCLEVBRXpCLG9CQUE2QyxFQUM1QixJQUFhLEVBQ0csaUJBQXlCO1FBSjNELGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBRXpCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNHLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQXpCL0U7O1dBRUc7UUFFSSxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXJFOztXQUVHO1FBRUksc0JBQWlCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFnQnJFLENBQUM7SUFFSjs7T0FFRztJQUNILElBQVcsT0FBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3BCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25GLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQzdHLENBQUM7OEdBNURRLDBCQUEwQiwrQ0FtQ3ZCLHVCQUF1QixhQUV2QixPQUFPLGFBQ1AsdUJBQXVCO2tHQXRDMUIsMEJBQTBCLHdUQ2Z2QyxpOE1BNkhBOzsyRkQ5R2EsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHNCQUFzQixtQkFFZix1QkFBdUIsQ0FBQyxNQUFNOzswQkFxQzFDLE1BQU07MkJBQUMsdUJBQXVCOzswQkFFOUIsTUFBTTsyQkFBQyxPQUFPOzswQkFDZCxNQUFNOzJCQUFDLHVCQUF1Qjt5Q0FqQ2xCLHVCQUF1QjtzQkFEdkMsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBTzFCLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxjQUFjO3NCQURwQixNQUFNO2dCQU9BLGlCQUFpQjtzQkFEdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTQ19QQVRIX0lNQUdFX05PVF9GT1VORCwgU0NfVVJMUywgU2NDYXJ0SXRlbSwgU2NJVXJscywgU2NQcm9kdWN0IH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUdWlEaWFsb2dDb250ZXh0IH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgVHVpUHJldmlld0RpYWxvZ1NlcnZpY2UgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcblxuaW1wb3J0IHsgU2NVbml0c0hlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvc2MtdW5pdHMtaGVscGVyJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0LrQsNGA0YLQvtGH0LrQuCDRjdC70LXQvNC10L3RgtCwINC30LDQutCw0LfQsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1vcmRlci1pdGVtLW1vYmlsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL29yZGVyLWl0ZW0tbW9iaWxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NPcmRlckl0ZW1Nb2JpbGVDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQvdCwINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC1INGB0L/QtdGG0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdzcGVjaWZpY2F0aW9uUHJldmlldycpXG4gICAgcHJpdmF0ZSByZWFkb25seSBzcGVjaWZpY2F0aW9uUHJldmlld1JlZj86IFRlbXBsYXRlUmVmPFR1aURpYWxvZ0NvbnRleHQ+O1xuXG4gICAgLyoqXG4gICAgICog0K3Qu9C10LzQtdC90YIg0LfQsNC60LDQt9CwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG9yZGVySXRlbT86IFNjQ2FydEl0ZW07XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60LDRgNGC0L7Rh9C60YMuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsaWNrQ2FyZEV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdGL0LUg0LTQtdC50YHRgtCy0LjRjy5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2xpY2tBY3Rpb25zRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjT3JkZXJJdGVtTW9iaWxlQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1bml0c0hlbHBlciDQntCx0YrQtdC60YIt0YXRjdC70L/QtdGAINC00LvRjyDRgNCw0LHQvtGC0Ysg0YHQviDQt9C90LDRh9C10L3QuNGP0LzQuCDQtdC00LjQvdC40YYg0LjQt9C80LXRgNC10L3QuNGPINGC0L7QstCw0YDQsC5cbiAgICAgKiBAcGFyYW0gcHJldmlld0RpYWxvZ1NlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAg0L/RgNC10LTQstCw0YDQuNGC0LXQu9GM0L3QvtCz0L4g0L/RgNC+0YHQvNC+0YLRgNCwLlxuICAgICAqIEBwYXJhbSB1cmxzINCh0L/QuNGB0L7QuiDRgdGB0YvQu9C+0Log0L3QsCDRgNCw0LfQtNC10LvRiyBiYWNrZW5kJ2EuXG4gICAgICogQHBhcmFtIHBhdGhJbWFnZU5vdEZvdW5kINCf0YPRgtGMINC00L4g0LjQt9C+0LHRgNCw0LbQtdC90LjRjyAn0KLQvtCy0LDRgCDQvdC1INC90LDQudC00LXQvScuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdW5pdHNIZWxwZXI6IFNjVW5pdHNIZWxwZXIsXG4gICAgICAgIEBJbmplY3QoVHVpUHJldmlld0RpYWxvZ1NlcnZpY2UpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcHJldmlld0RpYWxvZ1NlcnZpY2U6IFR1aVByZXZpZXdEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgQEluamVjdChTQ19QQVRIX0lNQUdFX05PVF9GT1VORCkgcHJpdmF0ZSByZWFkb25seSBwYXRoSW1hZ2VOb3RGb3VuZDogc3RyaW5nXG4gICAgKSB7fVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC+0LTRg9C60YIg0Y3Qu9C10LzQtdC90YLQsCDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHVibGljIGdldCBwcm9kdWN0KCk6IFNjUHJvZHVjdCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLm9yZGVySXRlbT8ucHJvZHVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntGC0L7QsdGA0LDQt9C40YLRjCDRgdC/0LXRhtC40YTQuNC60LDRhtC40Y4uXG4gICAgICovXG4gICAgcHVibGljIHNob3dTcGVjaWZpY2F0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpZXdEaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5zcGVjaWZpY2F0aW9uUHJldmlld1JlZiA/PyAnJykuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHRgdGL0LvQutGDINC90LAg0LjQt9C+0LHRgNCw0LbQtdC90LjQtSDQutCw0YDRgtC+0YfQutC4INGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2FyZEltYWdlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3Q/LmdldEltYWdlKHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwpID8/IHRoaXMudXJscy5pbWdTZXJ2ZXJVcmwgKyB0aGlzLnBhdGhJbWFnZU5vdEZvdW5kO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBmbGV4IGZsZXgtd3JhcCBnYXAteC00IGdhcC15LTIgcm91bmRlZC14bCBib3JkZXIgYm9yZGVyLXR1aS1iYXNlLTA0IGJnLXdoaXRlIHAtNCBzaGFkb3ctc2MtMlwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcmRlckl0ZW0gJiYgcHJvZHVjdDsgZWxzZSBza2VsZXRvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tBY3Rpb25zRXZlbnQuZW1pdCgpXCJcbiAgICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuZWxsaXBzaXMtdmVydGljYWxcIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cImZsb2F0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiIWFic29sdXRlIHJpZ2h0LTAgdG9wLTAgIWhpZGRlblwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ3JvdyBnYXAtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggc2l6ZS0yMCBzaHJpbmstMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tDYXJkRXZlbnQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXRDYXJkSW1hZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthbHRdPVwicHJvZHVjdC5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnAtNV09XCIhcHJvZHVjdC5pbWFnZXM/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ3JvdyBmbGV4LXdyYXAgZ2FwLXgtOCBzZWxmLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdyb3cgYmFzaXMtbWluLWNvbnRlbnQgZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0NhcmRFdmVudC5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IHByb2R1Y3QubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAteS0wLjUgdGV4dC14cyB0ZXh0LXR1aS10ZXh0LTAyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLXktMC41XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ3LTQwXCI+0JDRgNGC0LjQutGD0Ls6IHt7IHByb2R1Y3QuY29kZSB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctNDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInByb2R1Y3QucGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDQndC+0YDQvNCwINGD0L/QsNC60L7QstC60Lg6IHt7IHByb2R1Y3QucGFjayB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcmRlckl0ZW0uc3BlY2lmaWNhdGlvbkltZ1VybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dTcGVjaWZpY2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID7QodC/0LXRhtC40YTQuNC60LDRhtC40Y88L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzcGVjaWZpY2F0aW9uUHJldmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldC1wcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS1wcmV2aWV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3RhdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbem9vbWFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cIm9yZGVySXRlbS5zcGVjaWZpY2F0aW9uSW1nVXJsIGFzIHNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJwcmV2aWV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwib3JkZXJJdGVtLnNwZWNpZmljYXRpb25JbWdVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJDbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlQcmV2aWV3QWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aWV3LmNvbXBsZXRlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90dWktcHJldmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBjb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LTQwIGZsZXgtY29sIGdhcC14LTggZ2FwLXktMC41XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicHJvZHVjdC5kaXNjb3VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXhzIHRleHQtdHVpLXRleHQtMDJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGluZS10aHJvdWdoXCI+e3sgcHJvZHVjdC5kaXNjb3VudENvc3RTdHJpbmcgfX08L3NwYW4+ICZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtdHVpLXN1Y2Nlc3MtZmlsbFwiPiAte3sgcHJvZHVjdC5kaXNjb3VudC5wZXJjZW50IH19JSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNjb3VudEhpbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGRcIj57eyBwcm9kdWN0LmRpc2NvdW50Lm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb2R1Y3QuZGlzY291bnQuZXhwaXJlZEF0IGFzIGV4cGlyZWRBdFwiPtCU0LDRgtCwINC+0LrQvtC90YfQsNC90LjRjzoge3sgZXhwaXJlZEF0IH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1iYXNlbGluZSBnYXAteC0yIGZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHByb2R1Y3QuY29zdFJ1YlN0cmluZyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFwcm9kdWN0LnByaWNlSW5SdWJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQteHMgdGV4dC10dWktdGV4dC0wMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyBwcm9kdWN0LmNvc3RTdHJpbmcgfX08L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2MtcHJpY2Utd2FyZWhvdXNlLXN0b2NrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2R1Y3RdPVwicHJvZHVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb21NYWluXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3NjLXByaWNlLXdhcmVob3VzZS1zdG9jaz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctNDAgdGV4dC14cyB0ZXh0LXR1aS10ZXh0LTAyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3JkZXJJdGVtLmhlaWdodDsgZWxzZSBsZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD7QktGL0YHQvtGC0LA6IHt7IG9yZGVySXRlbS5oZWlnaHQgfX0g0LwuPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xlbmd0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIm9yZGVySXRlbS5sZW5ndGhcIj7QlNC70LjQvdCwOiB7eyBvcmRlckl0ZW0ubGVuZ3RoIH19INC8LjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCAqbmdJZj1cIm9yZGVySXRlbS53aWR0aFwiPtCo0LjRgNC40L3QsDoge3sgb3JkZXJJdGVtLndpZHRoIH19INC8LjwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LXR1aS1iYXNlLTA5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg0KHRg9C80LzQsDogPHNwYW4gY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCBmb250LWJvbGRcIj4ge3sgb3JkZXJJdGVtLmdldENvc3RSdWJTdHIoKSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNza2VsZXRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGdhcC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2l6ZS0yMCByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBncm93IGZsZXgtY29sIGdhcC0yLjUgYmctd2hpdGVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC00IHctZnVsbCByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtNCB3LTMvNSByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtNCB3LTQvNSByb3VuZGVkLXhsIGJnLXR1aS1iYXNlLTAyXCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
package/esm2022/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
|
-
}
|
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[]>;
|