@snabcentr/client-ui 3.3.1 → 3.4.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. package/banner/sc-banner.component.d.ts +1 -1
  2. package/catalog/category-card/sc-category-card.component.d.ts +3 -7
  3. package/catalog/cost-with-discount/cost-with-discount.component.d.ts +2 -2
  4. package/catalog/index.d.ts +1 -2
  5. package/catalog/price-card/sc-price-card.component.d.ts +6 -2
  6. package/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.d.ts +2 -2
  7. package/catalog/sc-catalog.module.d.ts +13 -14
  8. package/catalog/{sc-favorite-btn/sc-favorite-btn.component.d.ts → sc-favorite-button/sc-favorite-button.component.d.ts} +3 -3
  9. package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +1 -1
  10. package/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.d.ts +2 -2
  11. package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +2 -2
  12. package/contragents/new-contragent-form/sc-new-contragent-form.component.d.ts +3 -3
  13. package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +1 -1
  14. package/directives/abstract-price-card/abstract-sc-price-card.directive.d.ts +2 -2
  15. package/esm2022/accordion/sc-accordion-content.directive.mjs +4 -4
  16. package/esm2022/accordion/sc-accordion.component.mjs +4 -4
  17. package/esm2022/accordion/sc-accordion.module.mjs +5 -5
  18. package/esm2022/auth/sc-auth.module.mjs +5 -5
  19. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +5 -4
  20. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +5 -4
  21. package/esm2022/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +4 -4
  22. package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +8 -5
  23. package/esm2022/banner/sc-banner.component.mjs +8 -6
  24. package/esm2022/banner/sc-banner.module.mjs +5 -5
  25. package/esm2022/brands-list/sc-brands-list.component.mjs +4 -4
  26. package/esm2022/brands-list/sc-brands-list.module.mjs +5 -5
  27. package/esm2022/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +4 -4
  28. package/esm2022/cart/sc-cart.module.mjs +5 -5
  29. package/esm2022/catalog/category-card/sc-category-card.component.mjs +10 -15
  30. package/esm2022/catalog/cost-with-discount/cost-with-discount.component.mjs +5 -5
  31. package/esm2022/catalog/hover-image-carousel/hover-image-carousel.component.mjs +4 -4
  32. package/esm2022/catalog/index.mjs +2 -3
  33. package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +5 -5
  34. package/esm2022/catalog/price-card/sc-price-card.component.mjs +21 -6
  35. package/esm2022/catalog/price-card-inline/sc-price-card-inline.component.mjs +6 -6
  36. package/esm2022/catalog/price-history/sc-price-history.component.mjs +4 -4
  37. package/esm2022/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +4 -4
  38. package/esm2022/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +6 -6
  39. package/esm2022/catalog/sc-catalog.module.mjs +6 -11
  40. package/esm2022/catalog/sc-favorite-button/sc-favorite-button.component.mjs +42 -0
  41. package/esm2022/contacts/add-contact-dialog/sc-add-contact-dialog.component.mjs +5 -4
  42. package/esm2022/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +6 -6
  43. package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +5 -5
  44. package/esm2022/contacts/sc-contacts.module.mjs +5 -5
  45. package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +5 -4
  46. package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +9 -6
  47. package/esm2022/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +5 -5
  48. package/esm2022/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +6 -6
  49. package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +5 -5
  50. package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +13 -8
  51. package/esm2022/contragents/sc-contragents.module.mjs +5 -5
  52. package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +7 -6
  53. package/esm2022/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +6 -6
  54. package/esm2022/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +6 -6
  55. package/esm2022/delivery-address/sc-delivery-address.module.mjs +5 -5
  56. package/esm2022/directives/abstract-price-card/abstract-sc-price-card.directive.mjs +4 -4
  57. package/esm2022/directives/next-input-focus/sc-next-input-focus.directive.mjs +4 -4
  58. package/esm2022/directives/next-input-focus/sc-next-input-focus.module.mjs +5 -5
  59. package/esm2022/directives/tel-link/sc-tel-link.directive.mjs +4 -4
  60. package/esm2022/directives/tel-link/sc-tel-link.module.mjs +5 -5
  61. package/esm2022/directives/terminal-link/sc-terminal-link.directive.mjs +4 -4
  62. package/esm2022/files/directives/tree-top.directive.mjs +4 -4
  63. package/esm2022/files/directives/tree.directive.mjs +5 -5
  64. package/esm2022/files/file-tree-item/file-tree-item.component.mjs +4 -4
  65. package/esm2022/files/files-and-documents/files-and-documents.component.mjs +4 -4
  66. package/esm2022/files/files-and-documents.module.mjs +5 -5
  67. package/esm2022/files/services/tree-icon.service.mjs +4 -4
  68. package/esm2022/files/services/tree-loader.service.mjs +7 -5
  69. package/esm2022/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +16 -7
  70. package/esm2022/form-fields/form-fields.module.mjs +5 -5
  71. package/esm2022/form-fields/suggestion-field/sc-suggestion-field.component.mjs +4 -4
  72. package/esm2022/helpers/sc-px-converter.mjs +5 -5
  73. package/esm2022/masks/sc-account-number-mask.mjs +2 -2
  74. package/esm2022/masks/sc-bic-mask.mjs +2 -2
  75. package/esm2022/masks/sc-correspondent-account-mask.mjs +2 -2
  76. package/esm2022/masks/sc-inn-mask.mjs +3 -3
  77. package/esm2022/masks/sc-kpp-mask.mjs +2 -2
  78. package/esm2022/masks/sc-okpo-mask.mjs +3 -3
  79. package/esm2022/masks/sc-phone-verification-code-mask.mjs +2 -2
  80. package/esm2022/news/news-card/sc-news-card.component.mjs +4 -4
  81. package/esm2022/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +4 -4
  82. package/esm2022/news/sc-news.module.mjs +5 -5
  83. package/esm2022/order/order-item-mobile/sc-order-item-mobile.component.mjs +4 -4
  84. package/esm2022/order/sc-order.module.mjs +5 -5
  85. package/esm2022/order/sc-payment-status/sc-payment-status.component.mjs +5 -5
  86. package/esm2022/pipes/sc-formatted-phone.mjs +4 -4
  87. package/esm2022/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +6 -6
  88. package/esm2022/profile/sc-profile.module.mjs +5 -5
  89. package/esm2022/providers/index.mjs +2 -2
  90. package/esm2022/providers/sc-user-providers.mjs +27 -0
  91. package/esm2022/qrcode/qrcode-dialog/sc-qrcode-dialog.component.mjs +4 -4
  92. package/esm2022/qrcode/sc-qrcode.module.mjs +5 -5
  93. package/esm2022/samples/ask-to-sample-form/sc-ask-to-sample-form.component.mjs +5 -5
  94. package/esm2022/samples/preview-sample/sc-preview-sample.component.mjs +5 -5
  95. package/esm2022/samples/sc-sample.module.mjs +5 -5
  96. package/esm2022/share-button/sc-share-button.component.mjs +4 -4
  97. package/esm2022/share-button/sc-share-button.module.mjs +5 -5
  98. package/esm2022/user/reset-user-password/sc-reset-user-password.component.mjs +9 -5
  99. package/esm2022/user/sc-user.module.mjs +5 -5
  100. package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +6 -5
  101. package/esm2022/user/user-managers/sc-user-managers.component.mjs +4 -4
  102. package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +7 -6
  103. package/esm2022/validators/index.mjs +4 -4
  104. package/esm2022/validators/sc-bic-validator.mjs +10 -0
  105. package/esm2022/validators/sc-correspondent-account-validator.mjs +10 -0
  106. package/esm2022/validators/step-validator.mjs +18 -0
  107. package/esm2022/verification/sc-verification.module.mjs +5 -5
  108. package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +5 -5
  109. package/fesm2022/snabcentr-client-ui.mjs +387 -421
  110. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  111. package/files/directives/tree.directive.d.ts +6 -6
  112. package/files/services/tree-loader.service.d.ts +1 -1
  113. package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +0 -1
  114. package/news/news-card/sc-news-card.component.d.ts +1 -1
  115. package/package.json +28 -27
  116. package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +2 -2
  117. package/providers/index.d.ts +1 -1
  118. package/release_notes.tmp +14 -2
  119. package/samples/ask-to-sample-form/sc-ask-to-sample-form.component.d.ts +1 -1
  120. package/styles/tailwind/tailwind.scss +15 -102
  121. package/user/update-user-info-dialog/sc-update-user-info-dialog.component.d.ts +1 -1
  122. package/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.d.ts +1 -1
  123. package/validators/index.d.ts +3 -3
  124. package/validators/{scBicValidator.d.ts → sc-bic-validator.d.ts} +3 -0
  125. package/validators/{scCorrespondentAccountValidator.d.ts → sc-correspondent-account-validator.d.ts} +3 -0
  126. package/catalog/categories-list/sc-categories-list.component.d.ts +0 -54
  127. package/esm2022/catalog/categories-list/sc-categories-list.component.mjs +0 -93
  128. package/esm2022/catalog/sc-favorite-btn/sc-favorite-btn.component.mjs +0 -42
  129. package/esm2022/providers/scUserProviders.mjs +0 -27
  130. package/esm2022/validators/scBicValidator.mjs +0 -7
  131. package/esm2022/validators/scCorrespondentAccountValidator.mjs +0 -7
  132. package/esm2022/validators/stepValidator.mjs +0 -18
  133. /package/providers/{scUserProviders.d.ts → sc-user-providers.d.ts} +0 -0
  134. /package/validators/{stepValidator.d.ts → step-validator.d.ts} +0 -0
@@ -1,93 +0,0 @@
1
- import { __decorate } from "tslib";
2
- /* eslint-disable @typescript-eslint/no-explicit-any,class-methods-use-this,lodash/prefer-some,lodash/prefer-lodash-method,no-param-reassign */
3
- import { ChangeDetectionStrategy, Component, DestroyRef, Inject, inject, Input } from '@angular/core';
4
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
- import { IS_RUNNING_ON_TERMINAL, SC_URLS, TERMINAL_PROVIDERS } from '@snabcentr/client-core';
6
- import { TUI_IS_MOBILE, tuiPure } from '@taiga-ui/cdk';
7
- import { filter, tap } from 'rxjs';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@snabcentr/client-core";
10
- import * as i2 from "@angular/common";
11
- import * as i3 from "@angular/router";
12
- import * as i4 from "@taiga-ui/core";
13
- import * as i5 from "@taiga-ui/cdk";
14
- /**
15
- * Компонент списка категорий.
16
- */
17
- export class ScCategoriesListComponent {
18
- /**
19
- * Инициализирует экземпляр класса {@link ScCategoriesListComponent}.
20
- *
21
- * @param urls объект информации о базовом списке ссылок приложения.
22
- * @param terminal Данные о запуске приложения на терминале.
23
- * @param favoriteService Сервис для работы с корзиной.
24
- * @param cdr Объект для работы с обнаружением изменений.
25
- */
26
- constructor(urls, terminal, favoriteService, cdr) {
27
- this.urls = urls;
28
- this.terminal = terminal;
29
- this.favoriteService = favoriteService;
30
- this.cdr = cdr;
31
- /**
32
- * Признак того, отображается этот компонент на мобильном устройстве или нет.
33
- */
34
- this.isMobile = inject(TUI_IS_MOBILE);
35
- /**
36
- * Ссылка для автоматического управления уничтожением зависимостей.
37
- */
38
- this.destroyRef = inject(DestroyRef);
39
- /**
40
- * Функция получения `routerLink` из объекта {@link T}.
41
- */
42
- this.getRouterLink = () => null;
43
- }
44
- /** @inheritDoc */
45
- ngOnInit() {
46
- this.favoriteService.categories$
47
- .pipe(filter(() => !!this.categories && this.categories.length > 0 && 'id' in this.categories[0]), tap((categories) => {
48
- this.categories.forEach((category) => {
49
- category.isFavorite = categories.findIndex((item) => category.id === item.id) !== -1;
50
- });
51
- }), takeUntilDestroyed(this.destroyRef))
52
- .subscribe(() => {
53
- this.cdr.markForCheck();
54
- });
55
- }
56
- /**
57
- * Возвращает путь до изображения на сервере.
58
- *
59
- * @param imgPath путь, где хранится изображение.
60
- */
61
- getCategoryImage(imgPath) {
62
- return `${this.urls.imgServerUrl}/${imgPath}`;
63
- }
64
- /**
65
- * Проверяет наличие хотя бы одного изображения.
66
- *
67
- * @param categories Список категорий.
68
- */
69
- checkImagesExists(categories) {
70
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
71
- return categories.some((item) => item.properties?.image);
72
- }
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScCategoriesListComponent, deps: [{ token: SC_URLS }, { token: IS_RUNNING_ON_TERMINAL }, { token: i1.ScFavoriteService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScCategoriesListComponent, selector: "sc-categories-list", inputs: { categories: "categories", getRouterLink: "getRouterLink" }, providers: [TERMINAL_PROVIDERS], ngImport: i0, template: "<div\n [ngClass]=\"{ '!flex !flex-col': terminal.isRunningOnTerminal }\"\n class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\"\n>\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <ng-container *ngFor=\"let item of $any(categories)\">\n <a\n *tuiLet=\"getRouterLink(item) as routerLink\"\n [routerLink]=\"routerLink\"\n class=\"group flex h-11 cursor-pointer items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-icon\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n icon=\"@tui.camera-off\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-icon>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-icon\n *ngIf=\"item.isFavorite\"\n background=\"@tui.bookmark-filled\"\n icon=\"@tui.bookmark\"\n class=\"mr-auto bg-tui-primary !text-sm text-tui-primary\"\n ></tui-icon>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-icon\n icon=\"@tui.chevron-right\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </a>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-icon\n icon=\"@tui.chevron-right\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: i5.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: i5.TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
75
- }
76
- __decorate([
77
- tuiPure
78
- ], ScCategoriesListComponent.prototype, "checkImagesExists", null);
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScCategoriesListComponent, decorators: [{
80
- type: Component,
81
- args: [{ selector: 'sc-categories-list', providers: [TERMINAL_PROVIDERS], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [ngClass]=\"{ '!flex !flex-col': terminal.isRunningOnTerminal }\"\n class=\"grid grid-cols-[repeat(auto-fill,minmax(21rem,1fr))] gap-x-8 gap-y-2\"\n>\n <ng-container *ngIf=\"categories; else categoriesSkeleton\">\n <ng-container *ngFor=\"let item of $any(categories)\">\n <a\n *tuiLet=\"getRouterLink(item) as routerLink\"\n [routerLink]=\"routerLink\"\n class=\"group flex h-11 cursor-pointer items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-primary duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <img\n *ngIf=\"item.properties?.image as image\"\n [src]=\"getCategoryImage(image)\"\n [alt]=\"item.name\"\n class=\"size-8 rounded bg-tui-base-03 object-cover\"\n />\n\n <tui-icon\n *ngIf=\"!item.properties?.image && checkImagesExists(categories)\"\n icon=\"@tui.camera-off\"\n class=\"!h-8 !w-8 rounded bg-tui-base-03 text-tui-base-05\"\n ></tui-icon>\n <div class=\"flex grow flex-col truncate\">\n <div class=\"flex grow truncate\">\n <p class=\"truncate text-base font-bold\">{{ item.name }}</p>\n <tui-icon\n *ngIf=\"item.isFavorite\"\n background=\"@tui.bookmark-filled\"\n icon=\"@tui.bookmark\"\n class=\"mr-auto bg-tui-primary !text-sm text-tui-primary\"\n ></tui-icon>\n </div>\n <p\n *ngIf=\"item.m2Price as m2Price\"\n class=\"text-xs font-medium text-tui-text-02\"\n >\n \u0421\u0440\u0435\u0434\u043D\u044F\u044F \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u044C <span [innerHTML]=\"m2Price\"></span>\n </p>\n </div>\n\n <tui-icon\n icon=\"@tui.chevron-right\"\n class=\"duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </a>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #categoriesSkeleton>\n <button\n *tuiRepeatTimes=\"let index of isMobile ? 3 : 6\"\n class=\"group flex h-11 items-center gap-2 rounded-xl bg-tui-base-02 px-3 py-1.5 text-left ring-tui-base-05 duration-150 hover-hover:hover:ring-2 hover-none:active:ring-2\"\n >\n <div class=\"tui-skeleton size-8\"></div>\n <div class=\"tui-skeleton h-4 grow\"></div>\n <tui-icon\n icon=\"@tui.chevron-right\"\n class=\"tui-skeleton duration-150 hover-hover:group-hover:text-tui-primary hover-none:group-active:text-tui-primary\"\n ></tui-icon>\n </button>\n</ng-template>\n" }]
82
- }], ctorParameters: () => [{ type: undefined, decorators: [{
83
- type: Inject,
84
- args: [SC_URLS]
85
- }] }, { type: undefined, decorators: [{
86
- type: Inject,
87
- args: [IS_RUNNING_ON_TERMINAL]
88
- }] }, { type: i1.ScFavoriteService }, { type: i0.ChangeDetectorRef }], propDecorators: { categories: [{
89
- type: Input
90
- }], getRouterLink: [{
91
- type: Input
92
- }], checkImagesExists: [] } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0ZWdvcmllcy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL2NhdGVnb3JpZXMtbGlzdC9zYy1jYXRlZ29yaWVzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvY2F0ZWdvcmllcy1saXN0L3NjLWNhdGVnb3JpZXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0lBQStJO0FBRS9JLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxFQUErRCxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFKLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBRW5DOztHQUVHO0FBT0gsTUFBTSxPQUFPLHlCQUF5QjtJQXdCbEM7Ozs7Ozs7T0FPRztJQUNILFlBRXFCLElBQWEsRUFFZCxRQUE2QixFQUM1QixlQUFrQyxFQUNsQyxHQUFzQjtRQUp0QixTQUFJLEdBQUosSUFBSSxDQUFTO1FBRWQsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFDNUIsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBQ2xDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBL0IzQzs7V0FFRztRQUNhLGFBQVEsR0FBWSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFMUQ7O1dBRUc7UUFDSyxlQUFVLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXBEOztXQUVHO1FBR0ksa0JBQWEsR0FBNkQsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBaUJ6RixDQUFDO0lBRUosa0JBQWtCO0lBQ1gsUUFBUTtRQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVzthQUMzQixJQUFJLENBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMzRixHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNkLElBQUksQ0FBQyxVQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNuRCxRQUFRLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3pGLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLEVBQ0Ysa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUN0QzthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxPQUFlO1FBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUVJLGlCQUFpQixDQUFDLFVBQWlCO1FBQ3RDLHNFQUFzRTtRQUN0RSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs4R0E1RVEseUJBQXlCLGtCQWlDdEIsT0FBTyxhQUVQLHNCQUFzQjtrR0FuQ3pCLHlCQUF5QixtSEFIdkIsQ0FBQyxrQkFBa0IsQ0FBQywwQkNmbkMsdWhHQStEQTs7QUQ0Qlc7SUFETixPQUFPO2tFQUlQOzJGQTVFUSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0ksb0JBQW9CLGFBRW5CLENBQUMsa0JBQWtCLENBQUMsbUJBQ2QsdUJBQXVCLENBQUMsTUFBTTs7MEJBbUMxQyxNQUFNOzJCQUFDLE9BQU87OzBCQUVkLE1BQU07MkJBQUMsc0JBQXNCO3lHQTlCM0IsVUFBVTtzQkFEaEIsS0FBSztnQkFrQkMsYUFBYTtzQkFGbkIsS0FBSztnQkFxREMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSxjbGFzcy1tZXRob2RzLXVzZS10aGlzLGxvZGFzaC9wcmVmZXItc29tZSxsb2Rhc2gvcHJlZmVyLWxvZGFzaC1tZXRob2Qsbm8tcGFyYW0tcmVhc3NpZ24gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIEluamVjdCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElTX1JVTk5JTkdfT05fVEVSTUlOQUwsIFNDX1VSTFMsIFNjQ2F0ZWdvcnksIFNjRmF2b3JpdGVTZXJ2aWNlLCBTY0lUZXJtaW5hbFByb3ZpZGVyLCBTY0lVcmxzLCBURVJNSU5BTF9QUk9WSURFUlMgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFRVSV9JU19NT0JJTEUsIHR1aVB1cmUgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IGZpbHRlciwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGB0L/QuNGB0LrQsCDQutCw0YLQtdCz0L7RgNC40LkuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtY2F0ZWdvcmllcy1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtY2F0ZWdvcmllcy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtURVJNSU5BTF9QUk9WSURFUlNdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0NhdGVnb3JpZXNMaXN0Q29tcG9uZW50PFQgZXh0ZW5kcyBvYmplY3Q+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LrQsNGC0LXQs9C+0YDQuNC5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNhdGVnb3JpZXM6IFRbXSB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiDRgtC+0LPQviwg0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPINGN0YLQvtGCINC60L7QvNC/0L7QvdC10L3RgiDQvdCwINC80L7QsdC40LvRjNC90L7QvCDRg9GB0YLRgNC+0LnRgdGC0LLQtSDQuNC70Lgg0L3QtdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbiA9IGluamVjdChUVUlfSVNfTU9CSUxFKTtcblxuICAgIC8qKlxuICAgICAqINCh0YHRi9C70LrQsCDQtNC70Y8g0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7Qs9C+INGD0L/RgNCw0LLQu9C10L3QuNGPINGD0L3QuNGH0YLQvtC20LXQvdC40LXQvCDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC10LkuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqXG4gICAgICog0KTRg9C90LrRhtC40Y8g0L/QvtC70YPRh9C10L3QuNGPIGByb3V0ZXJMaW5rYCDQuNC3INC+0LHRitC10LrRgtCwIHtAbGluayBUfS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBsb2Rhc2gvcHJlZmVyLWNvbnN0YW50XG4gICAgcHVibGljIGdldFJvdXRlckxpbms6IChkYXRhOiBUKSA9PiBzdHJpbmcgfCBhbnlbXSB8IFVybFRyZWUgfCBudWxsIHwgdW5kZWZpbmVkID0gKCkgPT4gbnVsbDtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NDYXRlZ29yaWVzTGlzdENvbXBvbmVudH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJscyDQvtCx0YrQtdC60YIg0LjQvdGE0L7RgNC80LDRhtC40Lgg0L4g0LHQsNC30L7QstC+0Lwg0YHQv9C40YHQutC1INGB0YHRi9C70L7QuiDQv9GA0LjQu9C+0LbQtdC90LjRjy5cbiAgICAgKiBAcGFyYW0gdGVybWluYWwg0JTQsNC90L3Ri9C1INC+INC30LDQv9GD0YHQutC1INC/0YDQuNC70L7QttC10L3QuNGPINC90LAg0YLQtdGA0LzQuNC90LDQu9C1LlxuICAgICAqIEBwYXJhbSBmYXZvcml0ZVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0LrQvtGA0LfQuNC90L7QuS5cbiAgICAgKiBAcGFyYW0gY2RyINCe0LHRitC10LrRgiDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC+0LHQvdCw0YDRg9C20LXQvdC40LXQvCDQuNC30LzQtdC90LXQvdC40LkuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFNDX1VSTFMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsczogU2NJVXJscyxcbiAgICAgICAgQEluamVjdChJU19SVU5OSU5HX09OX1RFUk1JTkFMKVxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdGVybWluYWw6IFNjSVRlcm1pbmFsUHJvdmlkZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmF2b3JpdGVTZXJ2aWNlOiBTY0Zhdm9yaXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhdm9yaXRlU2VydmljZS5jYXRlZ29yaWVzJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5jYXRlZ29yaWVzICYmIHRoaXMuY2F0ZWdvcmllcy5sZW5ndGggPiAwICYmICdpZCcgaW4gdGhpcy5jYXRlZ29yaWVzWzBdKSxcbiAgICAgICAgICAgICAgICB0YXAoKGNhdGVnb3JpZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuY2F0ZWdvcmllcyBhcyBTY0NhdGVnb3J5W10pLmZvckVhY2goKGNhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeS5pc0Zhdm9yaXRlID0gY2F0ZWdvcmllcy5maW5kSW5kZXgoKGl0ZW0pID0+IGNhdGVnb3J5LmlkID09PSBpdGVtLmlkKSAhPT0gLTE7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC/0YPRgtGMINC00L4g0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQvdCwINGB0LXRgNCy0LXRgNC1LlxuICAgICAqXG4gICAgICogQHBhcmFtIGltZ1BhdGgg0L/Rg9GC0YwsINCz0LTQtSDRhdGA0LDQvdC40YLRgdGPINC40LfQvtCx0YDQsNC20LXQvdC40LUuXG4gICAgICovXG4gICAgcHVibGljIGdldENhdGVnb3J5SW1hZ2UoaW1nUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMudXJscy5pbWdTZXJ2ZXJVcmx9LyR7aW1nUGF0aH1gO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiDQvdCw0LvQuNGH0LjQtSDRhdC+0YLRjyDQsdGLINC+0LTQvdC+0LPQviDQuNC30L7QsdGA0LDQttC10L3QuNGPLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGVnb3JpZXMg0KHQv9C40YHQvtC6INC60LDRgtC10LPQvtGA0LjQuS5cbiAgICAgKi9cbiAgICBAdHVpUHVyZVxuICAgIHB1YmxpYyBjaGVja0ltYWdlc0V4aXN0cyhjYXRlZ29yaWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzXG4gICAgICAgIHJldHVybiBjYXRlZ29yaWVzLnNvbWUoKGl0ZW0pID0+IGl0ZW0ucHJvcGVydGllcz8uaW1hZ2UpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBbbmdDbGFzc109XCJ7ICchZmxleCAhZmxleC1jb2wnOiB0ZXJtaW5hbC5pc1J1bm5pbmdPblRlcm1pbmFsIH1cIlxuICAgIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtW3JlcGVhdChhdXRvLWZpbGwsbWlubWF4KDIxcmVtLDFmcikpXSBnYXAteC04IGdhcC15LTJcIlxuPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXRlZ29yaWVzOyBlbHNlIGNhdGVnb3JpZXNTa2VsZXRvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mICRhbnkoY2F0ZWdvcmllcylcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgKnR1aUxldD1cImdldFJvdXRlckxpbmsoaXRlbSkgYXMgcm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwicm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cCBmbGV4IGgtMTEgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQteGwgYmctdHVpLWJhc2UtMDIgcHgtMyBweS0xLjUgdGV4dC1sZWZ0IHJpbmctdHVpLXByaW1hcnkgZHVyYXRpb24tMTUwIGhvdmVyLWhvdmVyOmhvdmVyOnJpbmctMiBob3Zlci1ub25lOmFjdGl2ZTpyaW5nLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnByb3BlcnRpZXM/LmltYWdlIGFzIGltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXRDYXRlZ29yeUltYWdlKGltYWdlKVwiXG4gICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaXplLTggcm91bmRlZCBiZy10dWktYmFzZS0wMyBvYmplY3QtY292ZXJcIlxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbS5wcm9wZXJ0aWVzPy5pbWFnZSAmJiBjaGVja0ltYWdlc0V4aXN0cyhjYXRlZ29yaWVzKVwiXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJAdHVpLmNhbWVyYS1vZmZcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiFoLTggIXctOCByb3VuZGVkIGJnLXR1aS1iYXNlLTAzIHRleHQtdHVpLWJhc2UtMDVcIlxuICAgICAgICAgICAgICAgID48L3R1aS1pY29uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdyb3cgZmxleC1jb2wgdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ3JvdyB0cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0cnVuY2F0ZSB0ZXh0LWJhc2UgZm9udC1ib2xkXCI+e3sgaXRlbS5uYW1lIH19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmlzRmF2b3JpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9XCJAdHVpLmJvb2ttYXJrLWZpbGxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cIkB0dWkuYm9va21hcmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXItYXV0byBiZy10dWktcHJpbWFyeSAhdGV4dC1zbSB0ZXh0LXR1aS1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3R1aS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5tMlByaWNlIGFzIG0yUHJpY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtdHVpLXRleHQtMDJcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICDQodGA0LXQtNC90Y/RjyDRgdGC0L7QuNC80L7RgdGC0YwgPHNwYW4gW2lubmVySFRNTF09XCJtMlByaWNlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cIkB0dWkuY2hldnJvbi1yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHVyYXRpb24tMTUwIGhvdmVyLWhvdmVyOmdyb3VwLWhvdmVyOnRleHQtdHVpLXByaW1hcnkgaG92ZXItbm9uZTpncm91cC1hY3RpdmU6dGV4dC10dWktcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgPjwvdHVpLWljb24+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY2F0ZWdvcmllc1NrZWxldG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgKnR1aVJlcGVhdFRpbWVzPVwibGV0IGluZGV4IG9mIGlzTW9iaWxlID8gMyA6IDZcIlxuICAgICAgICBjbGFzcz1cImdyb3VwIGZsZXggaC0xMSBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC14bCBiZy10dWktYmFzZS0wMiBweC0zIHB5LTEuNSB0ZXh0LWxlZnQgcmluZy10dWktYmFzZS0wNSBkdXJhdGlvbi0xNTAgaG92ZXItaG92ZXI6aG92ZXI6cmluZy0yIGhvdmVyLW5vbmU6YWN0aXZlOnJpbmctMlwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHVpLXNrZWxldG9uIHNpemUtOFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHVpLXNrZWxldG9uIGgtNCBncm93XCI+PC9kaXY+XG4gICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgaWNvbj1cIkB0dWkuY2hldnJvbi1yaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInR1aS1za2VsZXRvbiBkdXJhdGlvbi0xNTAgaG92ZXItaG92ZXI6Z3JvdXAtaG92ZXI6dGV4dC10dWktcHJpbWFyeSBob3Zlci1ub25lOmdyb3VwLWFjdGl2ZTp0ZXh0LXR1aS1wcmltYXJ5XCJcbiAgICAgICAgPjwvdHVpLWljb24+XG4gICAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,42 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@taiga-ui/core";
4
- import * as i2 from "@taiga-ui/kit";
5
- /**
6
- * Компонент кнопки избранных товаров и категорий.
7
- */
8
- export class ScFavoriteBtnComponent {
9
- constructor() {
10
- /**
11
- * Событие нажатия на кнопку.
12
- */
13
- this.clickEvent = new EventEmitter();
14
- /**
15
- * Признак наличия товара или категории в избранных.
16
- */
17
- this.isFavorite = false;
18
- /**
19
- * Признак, что необходимо отобразить загрузку на кнопке.
20
- */
21
- this.showLoader = false;
22
- /**
23
- * Признак, что кнопка деактивирована.
24
- */
25
- this.disabled = false;
26
- }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScFavoriteBtnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ScFavoriteBtnComponent, selector: "sc-favorite-btn", inputs: { isFavorite: "isFavorite", showLoader: "showLoader", disabled: "disabled" }, outputs: { clickEvent: "clickEvent" }, ngImport: i0, template: "<button\n tuiIconButton\n (click)=\"clickEvent.emit()\"\n [disabled]=\"disabled\"\n [loading]=\"showLoader\"\n appearance=\"flat\"\n size=\"s\"\n>\n <tui-icon\n class=\"text-tui-primary !text-xl\"\n [icon]=\"isFavorite ? '@tui.bookmark-filled' : '@tui.bookmark'\"\n ></tui-icon>\n</button>\n", dependencies: [{ kind: "directive", type: i1.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: i2.TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ScFavoriteBtnComponent, decorators: [{
31
- type: Component,
32
- args: [{ selector: 'sc-favorite-btn', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n tuiIconButton\n (click)=\"clickEvent.emit()\"\n [disabled]=\"disabled\"\n [loading]=\"showLoader\"\n appearance=\"flat\"\n size=\"s\"\n>\n <tui-icon\n class=\"text-tui-primary !text-xl\"\n [icon]=\"isFavorite ? '@tui.bookmark-filled' : '@tui.bookmark'\"\n ></tui-icon>\n</button>\n" }]
33
- }], propDecorators: { clickEvent: [{
34
- type: Output
35
- }], isFavorite: [{
36
- type: Input
37
- }], showLoader: [{
38
- type: Input
39
- }], disabled: [{
40
- type: Input
41
- }] } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZmF2b3JpdGUtYnRuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL3NjLWZhdm9yaXRlLWJ0bi9zYy1mYXZvcml0ZS1idG4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvc2MtZmF2b3JpdGUtYnRuL3NjLWZhdm9yaXRlLWJ0bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRWhHOztHQUVHO0FBTUgsTUFBTSxPQUFPLHNCQUFzQjtJQUxuQztRQU1JOztXQUVHO1FBRUksZUFBVSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWpFOztXQUVHO1FBRUksZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUVJLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFbkM7O1dBRUc7UUFFSSxhQUFRLEdBQVksS0FBSyxDQUFDO0tBQ3BDOzhHQXhCWSxzQkFBc0I7a0dBQXRCLHNCQUFzQixvTENWbkMsMlVBYUE7OzJGREhhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDSSxpQkFBaUIsbUJBRVYsdUJBQXVCLENBQUMsTUFBTTs4QkFPeEMsVUFBVTtzQkFEaEIsTUFBTTtnQkFPQSxVQUFVO3NCQURoQixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINC60L3QvtC/0LrQuCDQuNC30LHRgNCw0L3QvdGL0YUg0YLQvtCy0LDRgNC+0LIg0Lgg0LrQsNGC0LXQs9C+0YDQuNC5LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLWZhdm9yaXRlLWJ0bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWZhdm9yaXRlLWJ0bi5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2NGYXZvcml0ZUJ0bkNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INC90LDQu9C40YfQuNGPINGC0L7QstCw0YDQsCDQuNC70Lgg0LrQsNGC0LXQs9C+0YDQuNC4INCyINC40LfQsdGA0LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpc0Zhdm9yaXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC30LDQs9GA0YPQt9C60YMg0L3QsCDQutC90L7Qv9C60LUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQutC90L7Qv9C60LAg0LTQtdCw0LrRgtC40LLQuNGA0L7QstCw0L3QsC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xufVxuIiwiPGJ1dHRvblxuICAgIHR1aUljb25CdXR0b25cbiAgICAoY2xpY2spPVwiY2xpY2tFdmVudC5lbWl0KClcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2xvYWRpbmddPVwic2hvd0xvYWRlclwiXG4gICAgYXBwZWFyYW5jZT1cImZsYXRcIlxuICAgIHNpemU9XCJzXCJcbj5cbiAgICA8dHVpLWljb25cbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXR1aS1wcmltYXJ5ICF0ZXh0LXhsXCJcbiAgICAgICAgW2ljb25dPVwiaXNGYXZvcml0ZSA/ICdAdHVpLmJvb2ttYXJrLWZpbGxlZCcgOiAnQHR1aS5ib29rbWFyaydcIlxuICAgID48L3R1aS1pY29uPlxuPC9idXR0b24+XG4iXX0=
@@ -1,27 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { ScUserService } from '@snabcentr/client-core';
4
- /**
5
- * Токен потока данных о текущем пользователе.
6
- */
7
- export const SC_USER_INFO = new InjectionToken('A stream with current user information');
8
- /**
9
- * Фабрика создания потока данных о текущем пользователе.
10
- *
11
- * @param userService Сервис данных о пользователе.
12
- */
13
- export function scUserFactory(userService) {
14
- // TODO: TASK[#7615] Отслеживать выполнение запроса изменения информации о пользователе после доработки snabcentr-core-lib.
15
- return userService.getUserChange$().pipe(takeUntilDestroyed());
16
- }
17
- /**
18
- * Провайдер потока данных о текущем пользователе.
19
- */
20
- export const SC_USER_PROVIDERS = [
21
- {
22
- provide: SC_USER_INFO,
23
- deps: [ScUserService],
24
- useFactory: scUserFactory,
25
- },
26
- ];
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NVc2VyUHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3Byb3ZpZGVycy9zY1VzZXJQcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQVUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHL0Q7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQWlDLHdDQUF3QyxDQUFDLENBQUM7QUFFekg7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBMEI7SUFDcEQsMkhBQTJIO0lBQzNILE9BQU8sV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7QUFDbkUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWU7SUFDekM7UUFDSSxPQUFPLEVBQUUsWUFBWTtRQUNyQixJQUFJLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDckIsVUFBVSxFQUFFLGFBQWE7S0FDNUI7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBTY1VzZXIsIFNjVXNlclNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiDQotC+0LrQtdC9INC/0L7RgtC+0LrQsCDQtNCw0L3QvdGL0YUg0L4g0YLQtdC60YPRidC10Lwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICovXG5leHBvcnQgY29uc3QgU0NfVVNFUl9JTkZPID0gbmV3IEluamVjdGlvblRva2VuPE9ic2VydmFibGU8U2NVc2VyIHwgdW5kZWZpbmVkPj4oJ0Egc3RyZWFtIHdpdGggY3VycmVudCB1c2VyIGluZm9ybWF0aW9uJyk7XG5cbi8qKlxuICog0KTQsNCx0YDQuNC60LAg0YHQvtC30LTQsNC90LjRjyDQv9C+0YLQvtC60LAg0LTQsNC90L3Ri9GFINC+INGC0LXQutGD0YnQtdC8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAqXG4gKiBAcGFyYW0gdXNlclNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LDQvdC90YvRhSDQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY1VzZXJGYWN0b3J5KHVzZXJTZXJ2aWNlOiBTY1VzZXJTZXJ2aWNlKTogT2JzZXJ2YWJsZTxTY1VzZXIgfCB1bmRlZmluZWQ+IHtcbiAgICAvLyBUT0RPOiBUQVNLWyM3NjE1XSDQntGC0YHQu9C10LbQuNCy0LDRgtGMINCy0YvQv9C+0LvQvdC10L3QuNC1INC30LDQv9GA0L7RgdCwINC40LfQvNC10L3QtdC90LjRjyDQuNC90YTQvtGA0LzQsNGG0LjQuCDQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUg0L/QvtGB0LvQtSDQtNC+0YDQsNCx0L7RgtC60Lggc25hYmNlbnRyLWNvcmUtbGliLlxuICAgIHJldHVybiB1c2VyU2VydmljZS5nZXRVc2VyQ2hhbmdlJCgpLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpO1xufVxuXG4vKipcbiAqINCf0YDQvtCy0LDQudC00LXRgCDQv9C+0YLQvtC60LAg0LTQsNC90L3Ri9GFINC+INGC0LXQutGD0YnQtdC8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNDX1VTRVJfUFJPVklERVJTOiBQcm92aWRlcltdID0gW1xuICAgIHtcbiAgICAgICAgcHJvdmlkZTogU0NfVVNFUl9JTkZPLFxuICAgICAgICBkZXBzOiBbU2NVc2VyU2VydmljZV0sXG4gICAgICAgIHVzZUZhY3Rvcnk6IHNjVXNlckZhY3RvcnksXG4gICAgfSxcbl07XG4iXX0=
@@ -1,7 +0,0 @@
1
- /**
2
- * Проверяет БИК.
3
- */
4
- export const scBicValidator = ({ value }) => {
5
- return !value || /^0[1,4]\d{7}$/.test(value) ? null : { bic: true };
6
- };
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NCaWNWYWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmFsaWRhdG9ycy9zY0JpY1ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBa0MsRUFBMkIsRUFBRTtJQUM5RyxPQUFPLENBQUMsS0FBSyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDeEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiDQn9GA0L7QstC10YDRj9C10YIg0JHQmNCaLlxuICovXG5leHBvcnQgY29uc3Qgc2NCaWNWYWxpZGF0b3I6IFZhbGlkYXRvckZuID0gKHsgdmFsdWUgfTogQWJzdHJhY3RDb250cm9sPHN0cmluZyB8IG51bGw+KTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIHJldHVybiAhdmFsdWUgfHwgL14wWzEsNF1cXGR7N30kLy50ZXN0KHZhbHVlKSA/IG51bGwgOiB7IGJpYzogdHJ1ZSB9O1xufTtcbiJdfQ==
@@ -1,7 +0,0 @@
1
- /**
2
- * Проверяет корреспондентский счет.
3
- */
4
- export const scCorrespondentAccountValidator = ({ value }) => {
5
- return !value || /^[3,4]01\d{17}$|^03\d{18}$/.test(value) ? null : { correspondentAccount: true };
6
- };
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NDb3JyZXNwb25kZW50QWNjb3VudFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS92YWxpZGF0b3JzL3NjQ29ycmVzcG9uZGVudEFjY291bnRWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBZ0IsQ0FBQyxFQUFFLEtBQUssRUFBa0MsRUFBMkIsRUFBRTtJQUMvSCxPQUFPLENBQUMsS0FBSyxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3RHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICog0J/RgNC+0LLQtdGA0Y/QtdGCINC60L7RgNGA0LXRgdC/0L7QvdC00LXQvdGC0YHQutC40Lkg0YHRh9C10YIuXG4gKi9cbmV4cG9ydCBjb25zdCBzY0NvcnJlc3BvbmRlbnRBY2NvdW50VmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9ICh7IHZhbHVlIH06IEFic3RyYWN0Q29udHJvbDxzdHJpbmcgfCBudWxsPik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICByZXR1cm4gIXZhbHVlIHx8IC9eWzMsNF0wMVxcZHsxN30kfF4wM1xcZHsxOH0kLy50ZXN0KHZhbHVlKSA/IG51bGwgOiB7IGNvcnJlc3BvbmRlbnRBY2NvdW50OiB0cnVlIH07XG59O1xuIl19
@@ -1,18 +0,0 @@
1
- /**
2
- * Проверяет кратность значения.
3
- *
4
- * @param step Шаг кратности.
5
- * @param precision Точность, количество чисел после запятой.
6
- */
7
- export function stepValidator(step, precision = 3) {
8
- return ({ value }) => {
9
- if (!step) {
10
- return null;
11
- }
12
- if (value) {
13
- return Number((value / step).toFixed(precision)) % 1 !== 0 ? { error: `Число не кратно ${step}` } : null;
14
- }
15
- return null;
16
- };
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcFZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS92YWxpZGF0b3JzL3N0ZXBWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQVksRUFBRSxZQUFvQixDQUFDO0lBQzdELE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBa0MsRUFBMkIsRUFBRTtRQUMxRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE9BQU8sTUFBTSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDN0csQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqINCf0YDQvtCy0LXRgNGP0LXRgiDQutGA0LDRgtC90L7RgdGC0Ywg0LfQvdCw0YfQtdC90LjRjy5cbiAqXG4gKiBAcGFyYW0gc3RlcCDQqNCw0LMg0LrRgNCw0YLQvdC+0YHRgtC4LlxuICogQHBhcmFtIHByZWNpc2lvbiDQotC+0YfQvdC+0YHRgtGMLCDQutC+0LvQuNGH0LXRgdGC0LLQviDRh9C40YHQtdC7INC/0L7RgdC70LUg0LfQsNC/0Y/RgtC+0LkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGVwVmFsaWRhdG9yKHN0ZXA6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIgPSAzKTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2w8bnVtYmVyIHwgbnVsbD4pOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgIGlmICghc3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIoKHZhbHVlIC8gc3RlcCkudG9GaXhlZChwcmVjaXNpb24pKSAlIDEgIT09IDAgPyB7IGVycm9yOiBg0KfQuNGB0LvQviDQvdC1INC60YDQsNGC0L3QviAke3N0ZXB9YCB9IDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG59XG4iXX0=