@snabcentr/client-ui 0.6.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. package/accordion/index.d.ts +3 -0
  2. package/accordion/sc-accordion-content.directive.d.ts +9 -0
  3. package/accordion/sc-accordion.component.d.ts +43 -0
  4. package/accordion/sc-accordion.module.d.ts +15 -0
  5. package/auth/sc-auth.module.d.ts +2 -1
  6. package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +4 -42
  7. package/catalog/categories-list/sc-categories-list.component.d.ts +31 -0
  8. package/catalog/index.d.ts +1 -0
  9. package/catalog/sc-catalog.module.d.ts +9 -8
  10. package/contacts/contacts-accordion/sc-contacts-accordion.component.d.ts +23 -0
  11. package/contacts/index.d.ts +2 -0
  12. package/contacts/sc-contacts.module.d.ts +14 -0
  13. package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +45 -0
  14. package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +38 -0
  15. package/contragents/index.d.ts +3 -0
  16. package/contragents/sc-contragents.module.d.ts +16 -0
  17. package/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.d.ts +32 -0
  18. package/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.d.ts +26 -0
  19. package/delivery-address/index.d.ts +3 -0
  20. package/delivery-address/sc-delivery-address.module.d.ts +16 -0
  21. package/esm2020/accordion/index.mjs +4 -0
  22. package/esm2020/accordion/sc-accordion-content.directive.mjs +17 -0
  23. package/esm2020/accordion/sc-accordion.component.mjs +78 -0
  24. package/esm2020/accordion/sc-accordion.module.mjs +25 -0
  25. package/esm2020/auth/sc-auth.module.mjs +7 -3
  26. package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +9 -85
  27. package/esm2020/catalog/categories-list/sc-categories-list.component.mjs +44 -0
  28. package/esm2020/catalog/index.mjs +2 -1
  29. package/esm2020/catalog/sc-catalog.module.mjs +8 -3
  30. package/esm2020/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +35 -0
  31. package/esm2020/contacts/index.mjs +3 -0
  32. package/esm2020/contacts/sc-contacts.module.mjs +24 -0
  33. package/esm2020/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +54 -0
  34. package/esm2020/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +57 -0
  35. package/esm2020/contragents/index.mjs +4 -0
  36. package/esm2020/contragents/sc-contragents.module.mjs +26 -0
  37. package/esm2020/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +40 -0
  38. package/esm2020/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +39 -0
  39. package/esm2020/delivery-address/index.mjs +4 -0
  40. package/esm2020/delivery-address/sc-delivery-address.module.mjs +26 -0
  41. package/esm2020/profile/index.mjs +3 -0
  42. package/esm2020/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +99 -0
  43. package/esm2020/profile/sc-profile.module.mjs +76 -0
  44. package/esm2020/providers/index.mjs +2 -1
  45. package/esm2020/providers/scUserProviders.mjs +30 -0
  46. package/esm2020/public-api.mjs +8 -1
  47. package/esm2020/user/index.mjs +3 -0
  48. package/esm2020/user/reset-user-password/sc-reset-user-password.component.mjs +61 -0
  49. package/esm2020/user/sc-user.module.mjs +54 -0
  50. package/esm2020/validators/index.mjs +2 -1
  51. package/esm2020/validators/scPasswordConfirmMatchingValidator.mjs +18 -0
  52. package/esm2020/verification/index.mjs +3 -0
  53. package/esm2020/verification/phone-approve-form/phone-approve-form.component.mjs +154 -0
  54. package/esm2020/verification/sc-verification.module.mjs +73 -0
  55. package/fesm2015/snabcentr-client-ui.mjs +922 -115
  56. package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
  57. package/fesm2020/snabcentr-client-ui.mjs +901 -103
  58. package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
  59. package/package.json +2 -2
  60. package/profile/index.d.ts +2 -0
  61. package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +61 -0
  62. package/profile/sc-profile.module.d.ts +19 -0
  63. package/providers/index.d.ts +1 -0
  64. package/providers/scUserProviders.d.ts +18 -0
  65. package/public-api.d.ts +7 -0
  66. package/styles/tailwind/tailwind.scss +75 -0
  67. package/user/index.d.ts +2 -0
  68. package/user/reset-user-password/sc-reset-user-password.component.d.ts +38 -0
  69. package/user/sc-user.module.d.ts +15 -0
  70. package/validators/index.d.ts +1 -0
  71. package/validators/scPasswordConfirmMatchingValidator.d.ts +7 -0
  72. package/verification/index.d.ts +2 -0
  73. package/verification/phone-approve-form/phone-approve-form.component.d.ts +83 -0
  74. package/verification/sc-verification.module.d.ts +16 -0
@@ -0,0 +1,76 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { TuiButtonModule, TuiFormatPhonePipeModule, TuiLinkModule, TuiLoaderModule, TuiModeModule, TuiSvgModule } from '@taiga-ui/core';
3
+ import { CommonModule } from '@angular/common';
4
+ import { TuiLetModule } from '@taiga-ui/cdk';
5
+ import { ScProfileAccordionsContentComponent } from './sc-profile-accordions-content/sc-profile-accordions-content.component';
6
+ import { ScAccordionModule } from '../accordion';
7
+ import { ScContragentsModule } from '../contragents';
8
+ import { ScDeliveryAddressModule } from '../delivery-address';
9
+ import { ScUserModule } from '../user';
10
+ import { TuiCheckboxLabeledModule } from '@taiga-ui/kit';
11
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
12
+ import * as i0 from "@angular/core";
13
+ /**
14
+ * Модуль профиля пользователя.
15
+ */
16
+ export class ScProfileModule {
17
+ }
18
+ ScProfileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScProfileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19
+ ScProfileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScProfileModule, declarations: [ScProfileAccordionsContentComponent], imports: [CommonModule,
20
+ ScUserModule,
21
+ ScAccordionModule,
22
+ ScContragentsModule,
23
+ ScDeliveryAddressModule,
24
+ TuiLoaderModule,
25
+ TuiLetModule,
26
+ TuiLinkModule,
27
+ TuiModeModule,
28
+ TuiFormatPhonePipeModule,
29
+ TuiCheckboxLabeledModule,
30
+ TuiSvgModule,
31
+ FormsModule,
32
+ ReactiveFormsModule,
33
+ TuiLoaderModule,
34
+ TuiButtonModule], exports: [ScProfileAccordionsContentComponent] });
35
+ ScProfileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScProfileModule, imports: [CommonModule,
36
+ ScUserModule,
37
+ ScAccordionModule,
38
+ ScContragentsModule,
39
+ ScDeliveryAddressModule,
40
+ TuiLoaderModule,
41
+ TuiLetModule,
42
+ TuiLinkModule,
43
+ TuiModeModule,
44
+ TuiFormatPhonePipeModule,
45
+ TuiCheckboxLabeledModule,
46
+ TuiSvgModule,
47
+ FormsModule,
48
+ ReactiveFormsModule,
49
+ TuiLoaderModule,
50
+ TuiButtonModule] });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScProfileModule, decorators: [{
52
+ type: NgModule,
53
+ args: [{
54
+ declarations: [ScProfileAccordionsContentComponent],
55
+ imports: [
56
+ CommonModule,
57
+ ScUserModule,
58
+ ScAccordionModule,
59
+ ScContragentsModule,
60
+ ScDeliveryAddressModule,
61
+ TuiLoaderModule,
62
+ TuiLetModule,
63
+ TuiLinkModule,
64
+ TuiModeModule,
65
+ TuiFormatPhonePipeModule,
66
+ TuiCheckboxLabeledModule,
67
+ TuiSvgModule,
68
+ FormsModule,
69
+ ReactiveFormsModule,
70
+ TuiLoaderModule,
71
+ TuiButtonModule,
72
+ ],
73
+ exports: [ScProfileAccordionsContentComponent],
74
+ }]
75
+ }] });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJvZmlsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvcHJvZmlsZS9zYy1wcm9maWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFDOUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdkMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFbEU7O0dBRUc7QUF1QkgsTUFBTSxPQUFPLGVBQWU7OzRHQUFmLGVBQWU7NkdBQWYsZUFBZSxpQkFyQlQsbUNBQW1DLGFBRTlDLFlBQVk7UUFDWixZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsZUFBZTtRQUNmLFlBQVk7UUFDWixhQUFhO1FBQ2IsYUFBYTtRQUNiLHdCQUF3QjtRQUN4Qix3QkFBd0I7UUFDeEIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsZUFBZTtRQUNmLGVBQWUsYUFFVCxtQ0FBbUM7NkdBRXBDLGVBQWUsWUFuQnBCLFlBQVk7UUFDWixZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsZUFBZTtRQUNmLFlBQVk7UUFDWixhQUFhO1FBQ2IsYUFBYTtRQUNiLHdCQUF3QjtRQUN4Qix3QkFBd0I7UUFDeEIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsZUFBZTtRQUNmLGVBQWU7MkZBSVYsZUFBZTtrQkF0QjNCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsbUNBQW1DLENBQUM7b0JBQ25ELE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixlQUFlO3FCQUNsQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQztpQkFDakQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHVpQnV0dG9uTW9kdWxlLCBUdWlGb3JtYXRQaG9uZVBpcGVNb2R1bGUsIFR1aUxpbmtNb2R1bGUsIFR1aUxvYWRlck1vZHVsZSwgVHVpTW9kZU1vZHVsZSwgVHVpU3ZnTW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFR1aUxldE1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgU2NQcm9maWxlQWNjb3JkaW9uc0NvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3NjLXByb2ZpbGUtYWNjb3JkaW9ucy1jb250ZW50L3NjLXByb2ZpbGUtYWNjb3JkaW9ucy1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0FjY29yZGlvbk1vZHVsZSB9IGZyb20gJy4uL2FjY29yZGlvbic7XG5pbXBvcnQgeyBTY0NvbnRyYWdlbnRzTW9kdWxlIH0gZnJvbSAnLi4vY29udHJhZ2VudHMnO1xuaW1wb3J0IHsgU2NEZWxpdmVyeUFkZHJlc3NNb2R1bGUgfSBmcm9tICcuLi9kZWxpdmVyeS1hZGRyZXNzJztcbmltcG9ydCB7IFNjVXNlck1vZHVsZSB9IGZyb20gJy4uL3VzZXInO1xuaW1wb3J0IHsgVHVpQ2hlY2tib3hMYWJlbGVkTW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiDQnNC+0LTRg9C70Ywg0L/RgNC+0YTQuNC70Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1NjUHJvZmlsZUFjY29yZGlvbnNDb250ZW50Q29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgU2NVc2VyTW9kdWxlLFxuICAgICAgICBTY0FjY29yZGlvbk1vZHVsZSxcbiAgICAgICAgU2NDb250cmFnZW50c01vZHVsZSxcbiAgICAgICAgU2NEZWxpdmVyeUFkZHJlc3NNb2R1bGUsXG4gICAgICAgIFR1aUxvYWRlck1vZHVsZSxcbiAgICAgICAgVHVpTGV0TW9kdWxlLFxuICAgICAgICBUdWlMaW5rTW9kdWxlLFxuICAgICAgICBUdWlNb2RlTW9kdWxlLFxuICAgICAgICBUdWlGb3JtYXRQaG9uZVBpcGVNb2R1bGUsXG4gICAgICAgIFR1aUNoZWNrYm94TGFiZWxlZE1vZHVsZSxcbiAgICAgICAgVHVpU3ZnTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgVHVpTG9hZGVyTW9kdWxlLFxuICAgICAgICBUdWlCdXR0b25Nb2R1bGUsXG4gICAgXSxcbiAgICBleHBvcnRzOiBbU2NQcm9maWxlQWNjb3JkaW9uc0NvbnRlbnRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTY1Byb2ZpbGVNb2R1bGUge31cbiJdfQ==
@@ -1,2 +1,3 @@
1
+ export * from './scUserProviders';
1
2
  export * from './productsPagination';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvcHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb2R1Y3RzUGFnaW5hdGlvbic7XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvcHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2NVc2VyUHJvdmlkZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZHVjdHNQYWdpbmF0aW9uJztcbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { ScUserService } from '@snabcentr/client-core';
3
+ import { TuiDestroyService } from '@taiga-ui/cdk';
4
+ import { takeUntil } from 'rxjs';
5
+ /**
6
+ * Токен потока данных о текущем пользователе.
7
+ */
8
+ export const SC_USER_INFO = new InjectionToken('A stream with current user information');
9
+ /**
10
+ * Фабрика создания потока данных о текущем пользователе.
11
+ *
12
+ * @param userService Сервис информации о пользователе.
13
+ * @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.
14
+ */
15
+ export function scUserFactory(userService, destroy$) {
16
+ //TODO: TASK[#7615] Отслеживать выполнение запроса изменения информации о пользователе после доработки snabcentr-core-lib.
17
+ return userService.getUserChange$().pipe(takeUntil(destroy$));
18
+ }
19
+ /**
20
+ * Провайдер потока данных о текущем пользователе.
21
+ */
22
+ export const SC_USER_PROVIDERS = [
23
+ TuiDestroyService,
24
+ {
25
+ provide: SC_USER_INFO,
26
+ deps: [ScUserService, TuiDestroyService],
27
+ useFactory: scUserFactory,
28
+ },
29
+ ];
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NVc2VyUHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3Byb3ZpZGVycy9zY1VzZXJQcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQVUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQWlDLHdDQUF3QyxDQUFDLENBQUM7QUFFekg7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLFdBQTBCLEVBQUUsUUFBMEI7SUFDaEYsMEhBQTBIO0lBQzFILE9BQU8sV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBZTtJQUN6QyxpQkFBaUI7SUFDakI7UUFDSSxPQUFPLEVBQUUsWUFBWTtRQUNyQixJQUFJLEVBQUUsQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUM7UUFDeEMsVUFBVSxFQUFFLGFBQWE7S0FDNUI7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTY1VzZXIsIFNjVXNlclNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aURlc3Ryb3lTZXJ2aWNlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiDQotC+0LrQtdC9INC/0L7RgtC+0LrQsCDQtNCw0L3QvdGL0YUg0L4g0YLQtdC60YPRidC10Lwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICovXG5leHBvcnQgY29uc3QgU0NfVVNFUl9JTkZPID0gbmV3IEluamVjdGlvblRva2VuPE9ic2VydmFibGU8U2NVc2VyIHwgdW5kZWZpbmVkPj4oJ0Egc3RyZWFtIHdpdGggY3VycmVudCB1c2VyIGluZm9ybWF0aW9uJyk7XG5cbi8qKlxuICog0KTQsNCx0YDQuNC60LAg0YHQvtC30LTQsNC90LjRjyDQv9C+0YLQvtC60LAg0LTQsNC90L3Ri9GFINC+INGC0LXQutGD0YnQtdC8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAqXG4gKiBAcGFyYW0gdXNlclNlcnZpY2Ug0KHQtdGA0LLQuNGBINC40L3RhNC+0YDQvNCw0YbQuNC4INC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAqIEBwYXJhbSBkZXN0cm95JCDQodC10YDQstC40YEg0LfQsNCy0LXRgNGI0LXQvdC40Y8ge0BsaW5rIE9ic2VydmFibGV9INGH0LXRgNC10LcgYHRha2VVbnRpbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY1VzZXJGYWN0b3J5KHVzZXJTZXJ2aWNlOiBTY1VzZXJTZXJ2aWNlLCBkZXN0cm95JDogT2JzZXJ2YWJsZTx2b2lkPik6IE9ic2VydmFibGU8U2NVc2VyIHwgdW5kZWZpbmVkPiB7XG4gICAgLy9UT0RPOiBUQVNLWyM3NjE1XSDQntGC0YHQu9C10LbQuNCy0LDRgtGMINCy0YvQv9C+0LvQvdC10L3QuNC1INC30LDQv9GA0L7RgdCwINC40LfQvNC10L3QtdC90LjRjyDQuNC90YTQvtGA0LzQsNGG0LjQuCDQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUg0L/QvtGB0LvQtSDQtNC+0YDQsNCx0L7RgtC60Lggc25hYmNlbnRyLWNvcmUtbGliLlxuICAgIHJldHVybiB1c2VyU2VydmljZS5nZXRVc2VyQ2hhbmdlJCgpLnBpcGUodGFrZVVudGlsKGRlc3Ryb3kkKSk7XG59XG5cbi8qKlxuICog0J/RgNC+0LLQsNC50LTQtdGAINC/0L7RgtC+0LrQsCDQtNCw0L3QvdGL0YUg0L4g0YLQtdC60YPRidC10Lwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICovXG5leHBvcnQgY29uc3QgU0NfVVNFUl9QUk9WSURFUlM6IFByb3ZpZGVyW10gPSBbXG4gICAgVHVpRGVzdHJveVNlcnZpY2UsXG4gICAge1xuICAgICAgICBwcm92aWRlOiBTQ19VU0VSX0lORk8sXG4gICAgICAgIGRlcHM6IFtTY1VzZXJTZXJ2aWNlLCBUdWlEZXN0cm95U2VydmljZV0sXG4gICAgICAgIHVzZUZhY3Rvcnk6IHNjVXNlckZhY3RvcnksXG4gICAgfSxcbl07XG4iXX0=
@@ -2,9 +2,13 @@
2
2
  * Public API Surface of ui
3
3
  */
4
4
  export * from './auth';
5
+ export * from './accordion';
5
6
  export * from './banner';
6
7
  export * from './cart';
7
8
  export * from './catalog';
9
+ export * from './contragents';
10
+ export * from './contacts';
11
+ export * from './delivery-address';
8
12
  export * from './files';
9
13
  export * from './icons';
10
14
  export * from './loader';
@@ -12,6 +16,9 @@ export * from './news';
12
16
  export * from './order';
13
17
  export * from './providers';
14
18
  export * from './share-button';
19
+ export * from './user';
15
20
  export * from './validators';
21
+ export * from './verification';
16
22
  export * from './tokens';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdWlcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2F1dGgnO1xuZXhwb3J0ICogZnJvbSAnLi9iYW5uZXInO1xuZXhwb3J0ICogZnJvbSAnLi9jYXJ0JztcbmV4cG9ydCAqIGZyb20gJy4vY2F0YWxvZyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGVzJztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2FkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9uZXdzJztcbmV4cG9ydCAqIGZyb20gJy4vb3JkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9wcm92aWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFyZS1idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW5zJztcbiJdfQ==
23
+ export * from './profile';
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHVpXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9hdXRoJztcbmV4cG9ydCAqIGZyb20gJy4vYWNjb3JkaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYmFubmVyJztcbmV4cG9ydCAqIGZyb20gJy4vY2FydCc7XG5leHBvcnQgKiBmcm9tICcuL2NhdGFsb2cnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250cmFnZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRhY3RzJztcbmV4cG9ydCAqIGZyb20gJy4vZGVsaXZlcnktYWRkcmVzcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGVzJztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2FkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9uZXdzJztcbmV4cG9ydCAqIGZyb20gJy4vb3JkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9wcm92aWRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFyZS1idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyJztcbmV4cG9ydCAqIGZyb20gJy4vdmFsaWRhdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3ZlcmlmaWNhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3Rva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2ZpbGUnO1xuIl19
@@ -0,0 +1,3 @@
1
+ export * from './reset-user-password/sc-reset-user-password.component';
2
+ export * from './sc-user.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdXNlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Jlc2V0LXVzZXItcGFzc3dvcmQvc2MtcmVzZXQtdXNlci1wYXNzd29yZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy11c2VyLm1vZHVsZSc7XG4iXX0=
@@ -0,0 +1,61 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { FormControl, FormGroup, Validators } from '@angular/forms';
3
+ import { tuiIsFalsy } from '@taiga-ui/cdk';
4
+ import { Subject, filter, map, switchMap, catchError, of, startWith, share } from 'rxjs';
5
+ import { scPasswordConfirmMatchingValidator } from '../../validators';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@snabcentr/client-core";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@taiga-ui/kit";
10
+ import * as i4 from "@taiga-ui/core";
11
+ import * as i5 from "@taiga-ui/cdk";
12
+ import * as i6 from "@angular/common";
13
+ /**
14
+ * Компонент смены пароля пользователя.
15
+ */
16
+ export class ScResetUserPasswordComponent {
17
+ /**
18
+ * Инициализирует экземпляр класса {@link ScResetUserPasswordComponent}.
19
+ *
20
+ * @param userService Сервис информации о пользователе.
21
+ */
22
+ constructor(userService) {
23
+ this.userService = userService;
24
+ /**
25
+ * Форма для изменения пароля пользователя.
26
+ */
27
+ this.form = new FormGroup({
28
+ currentPassword: new FormControl(null, Validators.required),
29
+ newPassword: new FormControl(null, [Validators.required, Validators.minLength(8)]),
30
+ newPasswordConfirm: new FormControl(null, [Validators.required, Validators.minLength(8), scPasswordConfirmMatchingValidator('newPassword')]),
31
+ });
32
+ /**
33
+ * {@link Subject} События отправки формы.
34
+ */
35
+ this.onSubmit = new Subject();
36
+ /**
37
+ * {@link Observable} Запроса данных аутентификации.
38
+ */
39
+ this.request$ = this.onSubmit.pipe(filter(() => this.form.valid), map(() => this.form.value), switchMap((value) => this.userService.updateUserInfo$(value).pipe(catchError((error) => {
40
+ const errorResponse = error.error;
41
+ for (const key in errorResponse.errors) {
42
+ this.form.get(key)?.setErrors({ serverResponse: errorResponse.errors[`${key}`] });
43
+ }
44
+ if (!errorResponse.errors && errorResponse.message) {
45
+ this.form.setErrors({ serverResponse: [errorResponse.message] });
46
+ }
47
+ return of(void {});
48
+ }), startWith(null))), share());
49
+ /**
50
+ * {@link Observable} Изменения состояния загрузки данных аутентификации по email.
51
+ */
52
+ this.loading$ = this.request$.pipe(map(tuiIsFalsy));
53
+ }
54
+ }
55
+ ScResetUserPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScResetUserPasswordComponent, deps: [{ token: i1.ScUserService }], target: i0.ɵɵFactoryTarget.Component });
56
+ ScResetUserPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScResetUserPasswordComponent, selector: "sc-reset-user-password", ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col md:flex-row gap-4 p-1\">\n <div class=\"flex flex-col items-start gap-2 md:flex-row md:gap-4 md:flex-grow justify-between\">\n <label tuiLabel=\"\u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"currentPassword\">\n \u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"current-password\" />\n </tui-input-password>\n <tui-error formControlName=\"currentPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"newPassword\">\n \u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"newPasswordConfirm\">\n \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPasswordConfirm\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </div>\n <button\n *tuiLet=\"!!(loading$ | async) as loading\"\n tuiButton\n [showLoader]=\"loading\"\n type=\"submit\"\n [disabled]=\"form.invalid || loading\"\n icon=\"scIconSave\"\n class=\"md:mt-6 font-medium\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n</form>\n", dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.TuiInputPasswordComponent, selector: "tui-input-password" }, { kind: "directive", type: i3.TuiInputPasswordDirective, selector: "tui-input-password" }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i4.TuiErrorComponent, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i4.TuiLabelComponent, selector: "label[tuiLabel]", inputs: ["tuiLabel", "context"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScResetUserPasswordComponent, decorators: [{
58
+ type: Component,
59
+ args: [{ selector: 'sc-reset-user-password', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col md:flex-row gap-4 p-1\">\n <div class=\"flex flex-col items-start gap-2 md:flex-row md:gap-4 md:flex-grow justify-between\">\n <label tuiLabel=\"\u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"currentPassword\">\n \u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"current-password\" />\n </tui-input-password>\n <tui-error formControlName=\"currentPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"newPassword\">\n \u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"newPasswordConfirm\">\n \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPasswordConfirm\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </div>\n <button\n *tuiLet=\"!!(loading$ | async) as loading\"\n tuiButton\n [showLoader]=\"loading\"\n type=\"submit\"\n [disabled]=\"form.invalid || loading\"\n icon=\"scIconSave\"\n class=\"md:mt-6 font-medium\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n</form>\n" }]
60
+ }], ctorParameters: function () { return [{ type: i1.ScUserService }]; } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcmVzZXQtdXNlci1wYXNzd29yZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdXNlci9yZXNldC11c2VyLXBhc3N3b3JkL3NjLXJlc2V0LXVzZXItcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3VzZXIvcmVzZXQtdXNlci1wYXNzd29yZC9zYy1yZXNldC11c2VyLXBhc3N3b3JkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7QUFFdEU7O0dBRUc7QUFNSCxNQUFNLE9BQU8sNEJBQTRCO0lBK0NyQzs7OztPQUlHO0lBQ0gsWUFBb0MsV0FBMEI7UUFBMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWU7UUFuRDlEOztXQUVHO1FBQ0ksU0FBSSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ3hCLGVBQWUsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUMzRCxXQUFXLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEYsa0JBQWtCLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLGtDQUFrQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7U0FDL0ksQ0FBQyxDQUFDO1FBRUg7O1dBRUc7UUFDYSxhQUFRLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFOUQ7O1dBRUc7UUFDYyxhQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUM3QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUEwQixDQUFDLEVBQy9DLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDeEMsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUF5QixDQUFDO1lBRXRELEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtnQkFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNyRjtZQUVELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxJQUFJLGFBQWEsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNwRTtZQUVELE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUNsQixDQUNKLEVBQ0QsS0FBSyxFQUFFLENBQ1YsQ0FBQztRQUVGOztXQUVHO1FBQ2EsYUFBUSxHQUF3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQU9uQixDQUFDOzt5SEFwRHpELDRCQUE0Qjs2R0FBNUIsNEJBQTRCLDhEQ2pCekMsa3pFQW9DQTsyRkRuQmEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNJLHdCQUF3QixtQkFFakIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFNjSUNoYW5nZVBhc3N3b3JkLCBTY1VzZXJTZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyB0dWlJc0ZhbHN5IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCBjYXRjaEVycm9yLCBvZiwgc3RhcnRXaXRoLCBzaGFyZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2F1dGgnO1xuaW1wb3J0IHsgc2NQYXNzd29yZENvbmZpcm1NYXRjaGluZ1ZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDRgdC80LXQvdGLINC/0LDRgNC+0LvRjyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtcmVzZXQtdXNlci1wYXNzd29yZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXJlc2V0LXVzZXItcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1Jlc2V0VXNlclBhc3N3b3JkQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiDQpNC+0YDQvNCwINC00LvRjyDQuNC30LzQtdC90LXQvdC40Y8g0L/QsNGA0L7Qu9GPINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBjdXJyZW50UGFzc3dvcmQ6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgbmV3UGFzc3dvcmQ6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOCldKSxcbiAgICAgICAgbmV3UGFzc3dvcmRDb25maXJtOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLCBzY1Bhc3N3b3JkQ29uZmlybU1hdGNoaW5nVmFsaWRhdG9yKCduZXdQYXNzd29yZCcpXSksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0KHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBvblN1Ym1pdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0JfQsNC/0YDQvtGB0LAg0LTQsNC90L3Ri9GFINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXF1ZXN0JCA9IHRoaXMub25TdWJtaXQucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmZvcm0udmFsdWUgYXMgU2NJQ2hhbmdlUGFzc3dvcmQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS51cGRhdGVVc2VySW5mbyQodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yUmVzcG9uc2UgPSBlcnJvci5lcnJvciBhcyBBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGVycm9yUmVzcG9uc2UuZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KGtleSk/LnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBlcnJvclJlc3BvbnNlLmVycm9yc1tgJHtrZXl9YF0gfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9yUmVzcG9uc2UuZXJyb3JzICYmIGVycm9yUmVzcG9uc2UubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbZXJyb3JSZXNwb25zZS5tZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih2b2lkIHt9KTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0JjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhSDQsNGD0YLQtdC90YLQuNGE0LjQutCw0YbQuNC4INC/0L4gZW1haWwuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5yZXF1ZXN0JC5waXBlKG1hcCh0dWlJc0ZhbHN5KSk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjUmVzZXRVc2VyUGFzc3dvcmRDb21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHVzZXJTZXJ2aWNlINCh0LXRgNCy0LjRgSDQuNC90YTQvtGA0LzQsNGG0LjQuCDQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdXNlclNlcnZpY2U6IFNjVXNlclNlcnZpY2UpIHt9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQubmV4dCgpXCIgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IGdhcC00IHAtMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLXN0YXJ0IGdhcC0yIG1kOmZsZXgtcm93IG1kOmdhcC00IG1kOmZsZXgtZ3JvdyBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPVwi0KHRgtCw0YDRi9C5INC/0LDRgNC+0LvRjFwiIGNsYXNzPVwiZmxleCB3LWZ1bGxcIj5cbiAgICAgICAgICAgIDx0dWktaW5wdXQtcGFzc3dvcmQgZm9ybUNvbnRyb2xOYW1lPVwiY3VycmVudFBhc3N3b3JkXCI+XG4gICAgICAgICAgICAgICAg0KHRgtCw0YDRi9C5INC/0LDRgNC+0LvRjFxuICAgICAgICAgICAgICAgIDxpbnB1dCB0dWlUZXh0ZmllbGQgYXV0b2NvbXBsZXRlPVwiY3VycmVudC1wYXNzd29yZFwiIC8+XG4gICAgICAgICAgICA8L3R1aS1pbnB1dC1wYXNzd29yZD5cbiAgICAgICAgICAgIDx0dWktZXJyb3IgZm9ybUNvbnRyb2xOYW1lPVwiY3VycmVudFBhc3N3b3JkXCIgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCI+PC90dWktZXJyb3I+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD1cItCf0YDQuNC00YPQvNCw0LnRgtC1INC90L7QstGL0Lkg0L/QsNGA0L7Qu9GMXCIgY2xhc3M9XCJmbGV4IHctZnVsbFwiPlxuICAgICAgICAgICAgPHR1aS1pbnB1dC1wYXNzd29yZCBmb3JtQ29udHJvbE5hbWU9XCJuZXdQYXNzd29yZFwiPlxuICAgICAgICAgICAgICAgINCf0YDQuNC00YPQvNCw0LnRgtC1INC90L7QstGL0Lkg0L/QsNGA0L7Qu9GMXG4gICAgICAgICAgICAgICAgPGlucHV0IHR1aVRleHRmaWVsZCBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIiAvPlxuICAgICAgICAgICAgPC90dWktaW5wdXQtcGFzc3dvcmQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yIGZvcm1Db250cm9sTmFtZT1cIm5ld1Bhc3N3b3JkXCIgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCI+PC90dWktZXJyb3I+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD1cItCf0L7QstGC0L7RgNC40YLQtSDQvdC+0LLRi9C5INC/0LDRgNC+0LvRjFwiIGNsYXNzPVwiZmxleCB3LWZ1bGxcIj5cbiAgICAgICAgICAgIDx0dWktaW5wdXQtcGFzc3dvcmQgZm9ybUNvbnRyb2xOYW1lPVwibmV3UGFzc3dvcmRDb25maXJtXCI+XG4gICAgICAgICAgICAgICAg0J/QvtCy0YLQvtGA0LjRgtC1INC90L7QstGL0Lkg0L/QsNGA0L7Qu9GMXG4gICAgICAgICAgICAgICAgPGlucHV0IHR1aVRleHRmaWVsZCBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIiAvPlxuICAgICAgICAgICAgPC90dWktaW5wdXQtcGFzc3dvcmQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yIGZvcm1Db250cm9sTmFtZT1cIm5ld1Bhc3N3b3JkQ29uZmlybVwiIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiPjwvdHVpLWVycm9yPlxuICAgICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgICAgKnR1aUxldD1cIiEhKGxvYWRpbmckIHwgYXN5bmMpIGFzIGxvYWRpbmdcIlxuICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgW3Nob3dMb2FkZXJdPVwibG9hZGluZ1wiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGxvYWRpbmdcIlxuICAgICAgICBpY29uPVwic2NJY29uU2F2ZVwiXG4gICAgICAgIGNsYXNzPVwibWQ6bXQtNiBmb250LW1lZGl1bVwiXG4gICAgPlxuICAgICAgICDQodC+0YXRgNCw0L3QuNGC0YxcbiAgICA8L2J1dHRvbj5cbjwvZm9ybT5cbiJdfQ==
@@ -0,0 +1,54 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { TuiFieldErrorPipeModule, TuiInputPasswordModule } from '@taiga-ui/kit';
5
+ import { TuiButtonModule, TuiErrorModule, TuiLabelModule, TuiTextfieldControllerModule } from '@taiga-ui/core';
6
+ import { TuiLetModule } from '@taiga-ui/cdk';
7
+ import { ScResetUserPasswordComponent } from './reset-user-password/sc-reset-user-password.component';
8
+ import * as i0 from "@angular/core";
9
+ /**
10
+ * Модуль компонентов пользователя.
11
+ */
12
+ export class ScUserModule {
13
+ }
14
+ ScUserModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUserModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ ScUserModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScUserModule, declarations: [ScResetUserPasswordComponent], imports: [CommonModule,
16
+ FormsModule,
17
+ ReactiveFormsModule,
18
+ TuiFieldErrorPipeModule,
19
+ TuiInputPasswordModule,
20
+ TuiButtonModule,
21
+ TuiErrorModule,
22
+ TuiLabelModule,
23
+ TuiTextfieldControllerModule,
24
+ TuiLetModule], exports: [ScResetUserPasswordComponent] });
25
+ ScUserModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUserModule, imports: [CommonModule,
26
+ FormsModule,
27
+ ReactiveFormsModule,
28
+ TuiFieldErrorPipeModule,
29
+ TuiInputPasswordModule,
30
+ TuiButtonModule,
31
+ TuiErrorModule,
32
+ TuiLabelModule,
33
+ TuiTextfieldControllerModule,
34
+ TuiLetModule] });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUserModule, decorators: [{
36
+ type: NgModule,
37
+ args: [{
38
+ declarations: [ScResetUserPasswordComponent],
39
+ imports: [
40
+ CommonModule,
41
+ FormsModule,
42
+ ReactiveFormsModule,
43
+ TuiFieldErrorPipeModule,
44
+ TuiInputPasswordModule,
45
+ TuiButtonModule,
46
+ TuiErrorModule,
47
+ TuiLabelModule,
48
+ TuiTextfieldControllerModule,
49
+ TuiLetModule,
50
+ ],
51
+ exports: [ScResetUserPasswordComponent],
52
+ }]
53
+ }] });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdXNlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdXNlci9zYy11c2VyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0RBQXdELENBQUM7O0FBRXRHOztHQUVHO0FBaUJILE1BQU0sT0FBTyxZQUFZOzt5R0FBWixZQUFZOzBHQUFaLFlBQVksaUJBZk4sNEJBQTRCLGFBRXZDLFlBQVk7UUFDWixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLHVCQUF1QjtRQUN2QixzQkFBc0I7UUFDdEIsZUFBZTtRQUNmLGNBQWM7UUFDZCxjQUFjO1FBQ2QsNEJBQTRCO1FBQzVCLFlBQVksYUFFTiw0QkFBNEI7MEdBRTdCLFlBQVksWUFiakIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsdUJBQXVCO1FBQ3ZCLHNCQUFzQjtRQUN0QixlQUFlO1FBQ2YsY0FBYztRQUNkLGNBQWM7UUFDZCw0QkFBNEI7UUFDNUIsWUFBWTsyRkFJUCxZQUFZO2tCQWhCeEIsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDNUMsT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsc0JBQXNCO3dCQUN0QixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCw0QkFBNEI7d0JBQzVCLFlBQVk7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsNEJBQTRCLENBQUM7aUJBQzFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFR1aUZpZWxkRXJyb3JQaXBlTW9kdWxlLCBUdWlJbnB1dFBhc3N3b3JkTW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlCdXR0b25Nb2R1bGUsIFR1aUVycm9yTW9kdWxlLCBUdWlMYWJlbE1vZHVsZSwgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUxldE1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgU2NSZXNldFVzZXJQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4vcmVzZXQtdXNlci1wYXNzd29yZC9zYy1yZXNldC11c2VyLXBhc3N3b3JkLmNvbXBvbmVudCc7XG5cbi8qKlxuICog0JzQvtC00YPQu9GMINC60L7QvNC/0L7QvdC10L3RgtC+0LIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1NjUmVzZXRVc2VyUGFzc3dvcmRDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgVHVpRmllbGRFcnJvclBpcGVNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0UGFzc3dvcmRNb2R1bGUsXG4gICAgICAgIFR1aUJ1dHRvbk1vZHVsZSxcbiAgICAgICAgVHVpRXJyb3JNb2R1bGUsXG4gICAgICAgIFR1aUxhYmVsTW9kdWxlLFxuICAgICAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlLFxuICAgICAgICBUdWlMZXRNb2R1bGUsXG4gICAgXSxcbiAgICBleHBvcnRzOiBbU2NSZXNldFVzZXJQYXNzd29yZENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFNjVXNlck1vZHVsZSB7fVxuIl19
@@ -1,2 +1,3 @@
1
+ export * from './scPasswordConfirmMatchingValidator';
1
2
  export * from './stepValidator';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmFsaWRhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zdGVwVmFsaWRhdG9yJztcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmFsaWRhdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NjUGFzc3dvcmRDb25maXJtTWF0Y2hpbmdWYWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9zdGVwVmFsaWRhdG9yJztcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Проверяет повторный ввод пароля на эквивалентность паролю.
3
+ *
4
+ * @param passwordKey Ключ поля ввода пароля.
5
+ */
6
+ export function scPasswordConfirmMatchingValidator(passwordKey) {
7
+ return ({ value, parent }) => {
8
+ if (!parent || !value) {
9
+ return null;
10
+ }
11
+ const passwordInput = parent.get(passwordKey);
12
+ if (passwordInput && passwordInput.value) {
13
+ return value !== passwordInput.value ? { passwordNotEquivalent: true } : null;
14
+ }
15
+ return null;
16
+ };
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NQYXNzd29yZENvbmZpcm1NYXRjaGluZ1ZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS92YWxpZGF0b3JzL3NjUGFzc3dvcmRDb25maXJtTWF0Y2hpbmdWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxrQ0FBa0MsQ0FBQyxXQUFtQjtJQUNsRSxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFrQyxFQUEyQixFQUFFO1FBQ2xGLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE1BQU0sYUFBYSxHQUF3QyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5GLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxLQUFLLEVBQUU7WUFDdEMsT0FBTyxLQUFLLEtBQUssYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ2pGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICog0J/RgNC+0LLQtdGA0Y/QtdGCINC/0L7QstGC0L7RgNC90YvQuSDQstCy0L7QtCDQv9Cw0YDQvtC70Y8g0L3QsCDRjdC60LLQuNCy0LDQu9C10L3RgtC90L7RgdGC0Ywg0L/QsNGA0L7Qu9GOLlxuICpcbiAqIEBwYXJhbSBwYXNzd29yZEtleSDQmtC70Y7RhyDQv9C+0LvRjyDQstCy0L7QtNCwINC/0LDRgNC+0LvRjy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjUGFzc3dvcmRDb25maXJtTWF0Y2hpbmdWYWxpZGF0b3IocGFzc3dvcmRLZXk6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKHsgdmFsdWUsIHBhcmVudCB9OiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nIHwgbnVsbD4pOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICAgIGlmICghcGFyZW50IHx8ICF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXNzd29yZElucHV0OiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nLCBhbnk+IHwgbnVsbCA9IHBhcmVudC5nZXQocGFzc3dvcmRLZXkpO1xuXG4gICAgICAgIGlmIChwYXNzd29yZElucHV0ICYmIHBhc3N3b3JkSW5wdXQudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gcGFzc3dvcmRJbnB1dC52YWx1ZSA/IHsgcGFzc3dvcmROb3RFcXVpdmFsZW50OiB0cnVlIH0gOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './phone-approve-form/phone-approve-form.component';
2
+ export * from './sc-verification.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmVyaWZpY2F0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGhvbmUtYXBwcm92ZS1mb3JtL3Bob25lLWFwcHJvdmUtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zYy12ZXJpZmljYXRpb24ubW9kdWxlJztcbiJdfQ==
@@ -0,0 +1,154 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Output } from '@angular/core';
2
+ import { FormGroupDirective } from '@angular/forms';
3
+ import { phoneApproveCodeMask } from '../../auth/constants/phone-approve-code-mask';
4
+ import { Subject, filter, map, switchMap, catchError, of, startWith, share, tap, finalize, timer, scan, takeWhile, endWith, distinctUntilChanged } from 'rxjs';
5
+ import { tuiControlValue } from '@taiga-ui/cdk';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@snabcentr/client-core";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "@angular/forms";
10
+ import * as i4 from "@taiga-ui/core";
11
+ import * as i5 from "@taiga-ui/kit";
12
+ import * as i6 from "@taiga-ui/cdk";
13
+ import * as i7 from "@maskito/angular";
14
+ /**
15
+ * Компонент формы проверки телефона и получения кода подтверждения.
16
+ */
17
+ export class ScPhoneApproveFormComponent {
18
+ /**
19
+ * Инициализирует экземпляр класса {@link ScPhoneApproveFormComponent}.
20
+ *
21
+ * @param verificationService Сервис верификации.
22
+ * @param formGroupDirective Директива c `FormGroup` из DOM.
23
+ */
24
+ constructor(verificationService, formGroupDirective) {
25
+ this.verificationService = verificationService;
26
+ this.formGroupDirective = formGroupDirective;
27
+ /**
28
+ * Признак, следует ли телефону быть в системе. От этого признака зависит в каких случаях выдавать ошибку при проверки занятости телефона.
29
+ */
30
+ this.shouldBeBusy = true;
31
+ /**
32
+ * Признак, следует ли проверять подтверждён ли телефона в системе. При `true` будет вызывать ошибку при наличие телефона в системе без подтверждения.
33
+ */
34
+ this.shouldBeConfirmed = false;
35
+ /**
36
+ * Наличие кода подтверждения у пользователя.
37
+ */
38
+ this.haveCode = false;
39
+ /**
40
+ * Событие для обратной привязки наличия кода подтверждения
41
+ */
42
+ this.haveCodeChange = new EventEmitter();
43
+ /**
44
+ * {@link Subject} События отправки кода подтверждения.
45
+ */
46
+ this.onSendCode = new Subject();
47
+ /**
48
+ * {@link Observable} Запроса данных получения кода подтверждения.
49
+ */
50
+ this.loadingApproveCode$ = this.onSendCode.pipe(filter(() => this.phoneControl.valid), map(() => this.phoneControl.value), switchMap((value) => this.verificationService.sendPhoneApproveCode(value).pipe(tap(() => this.reloadTimer$.next(60)), map(() => false), catchError((error) => {
51
+ const errorResponse = error.error;
52
+ const regex = /(\d{2}):\d{2}/;
53
+ const match = errorResponse.message.match(regex);
54
+ if (match && match.length > 1) {
55
+ const timeParts = match[0].split(':');
56
+ const seconds = parseInt(timeParts[1], 10);
57
+ this.reloadTimer$.next(seconds);
58
+ }
59
+ else {
60
+ this.phoneControl.setErrors({ serverResponse: errorResponse?.errors?.[`phone`] ?? [errorResponse.message] });
61
+ }
62
+ return of(false);
63
+ }), finalize(() => this.setHaveCode(true)), startWith(true))), startWith(false), share());
64
+ /**
65
+ * Маска поля ввода кода для подтверждения.
66
+ */
67
+ this.approveCodeMask = phoneApproveCodeMask;
68
+ /**
69
+ * {@link Subject} События запуска/остановки таймера.
70
+ */
71
+ this.reloadTimer$ = new Subject();
72
+ /**
73
+ * {@link Observable} Таймера.
74
+ *
75
+ * TODO: Вынести таймер в отдельную директиву TASK:[#9260].
76
+ */
77
+ this.timer$ = this.reloadTimer$.pipe(switchMap((sec) => timer(0, 1000).pipe(scan((total) => --total, sec), takeWhile((total) => total >= 0), map((total) => {
78
+ const minutes = Math.floor(total / 60);
79
+ const seconds = total % 60;
80
+ return `${Math.round(minutes).toString().padStart(2, '0')}:${Math.round(seconds).toString().padStart(2, '0')}`;
81
+ }), endWith(null), startWith(null), distinctUntilChanged())));
82
+ }
83
+ /**
84
+ * Группа полей ввода для формы «Вход на сайт».
85
+ */
86
+ get form() {
87
+ return this.formGroupDirective?.form;
88
+ }
89
+ /**
90
+ * Поле ввода 'Номер телефона'.
91
+ */
92
+ get phoneControl() {
93
+ return this.form?.controls.phone;
94
+ }
95
+ /** @inheritDoc */
96
+ ngOnInit() {
97
+ this.phoneCheck$ = tuiControlValue(this.phoneControl).pipe(tap(() => this.reloadTimer$.next(0)), switchMap((value) => {
98
+ if (this.phoneControl.valid && !!value) {
99
+ return this.verificationService.getPhoneCheck$(value).pipe(map((result) => {
100
+ if (this.shouldBeBusy !== result.isBusy) {
101
+ this.phoneControl.setErrors({
102
+ serverResponse: [
103
+ this.shouldBeBusy ? 'Пользователя с таким номером телефона не существует' : 'Пользователь с таким номером телефона уже существует',
104
+ ],
105
+ });
106
+ this.phoneControl.markAsTouched();
107
+ return false;
108
+ }
109
+ if (this.shouldBeConfirmed && result.isConfirmed === false) {
110
+ this.phoneControl.setErrors({
111
+ serverResponse: ['Номер телефона не подтверждён. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.'],
112
+ });
113
+ this.phoneControl.markAsTouched();
114
+ return false;
115
+ }
116
+ return true;
117
+ }), catchError((error) => {
118
+ const errorResponse = error.error;
119
+ this.phoneControl.setErrors({ serverResponse: errorResponse?.errors?.[`phone`] ?? [errorResponse.message] });
120
+ return of(false);
121
+ }), startWith(null));
122
+ }
123
+ this.setHaveCode(false);
124
+ return of(false);
125
+ }), share());
126
+ }
127
+ /**
128
+ * Устанавливает состояние наличия кода подтверждения у пользователя.
129
+ *
130
+ * @param haveCode Признак того есть ли код подтверждения или нет.
131
+ */
132
+ setHaveCode(haveCode) {
133
+ this.haveCode = haveCode;
134
+ this.haveCodeChange.emit(haveCode);
135
+ }
136
+ }
137
+ ScPhoneApproveFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPhoneApproveFormComponent, deps: [{ token: i1.ScVerificationService }, { token: FormGroupDirective }], target: i0.ɵɵFactoryTarget.Component });
138
+ ScPhoneApproveFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPhoneApproveFormComponent, selector: "sc-phone-approve-form", inputs: { shouldBeBusy: "shouldBeBusy", shouldBeConfirmed: "shouldBeConfirmed", haveCode: "haveCode" }, outputs: { haveCodeChange: "haveCodeChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" *tuiLet=\"(loadingApproveCode$ | async) as loadingApproveCode\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"\u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\">\n <tui-input-phone formControlName=\"phone\" [tuiTextfieldCustomContent]=\"checkingPhone\">\n \u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\n <input tuiTextfield autocomplete=\"phone\" />\n </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <label *ngIf=\"loadingApproveCode === false && haveCode\" tuiLabel=\"\u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\">\n <tui-input formControlName=\"phoneApproveCode\">\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <input tuiTextfield [maskito]=\"approveCodeMask\" autocomplete=\"new-password\" />\n </tui-input>\n <tui-error formControlName=\"phoneApproveCode\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <div *tuiLet=\"!!loadingApproveCode as loadingApproveCode\" class=\"flex gap-4 justify-center\">\n <button\n *ngIf=\"!haveCode\"\n tuiButton\n size=\"s\"\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !!!(phoneCheck$ | async) || phoneControl.invalid\"\n [showLoader]=\"loadingApproveCode\"\n icon=\"scIconLogIn\"\n >\n \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043A\u043E\u0434\n </button>\n <button *ngIf=\"!loadingApproveCode && !haveCode\" tuiLink [pseudo]=\"true\" [disabled]=\"!!!(phoneCheck$ | async) || phoneControl.invalid\" (click)=\"setHaveCode(true)\">\n \u0423 \u043C\u0435\u043D\u044F \u0435\u0441\u0442\u044C \u043A\u043E\u0434\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader *ngIf=\"haveCode\" [showLoader]=\"loadingApproveCode\">\n <button tuiLink [pseudo]=\"true\" [disabled]=\"loadingApproveCode || timer\" (click)=\"onSendCode.next()\">\n \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u0434\n <ng-container *ngIf=\"timer\" class=\"!text-tui-base-08\">(\u0447\u0435\u0440\u0435\u0437 {{ timer }})</ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader *ngIf=\"!!!(phoneCheck$ | async) && phoneControl.valid\" class=\"w-4 h-4\"> </tui-loader>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { kind: "component", type: i5.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i5.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: i4.TuiTextfieldCustomContentDirective, selector: "[tuiTextfieldCustomContent]", inputs: ["tuiTextfieldCustomContent"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i4.TuiLabelComponent, selector: "label[tuiLabel]", inputs: ["tuiLabel", "context"] }, { kind: "component", type: i4.TuiErrorComponent, selector: "tui-error", inputs: ["error"] }, { kind: "directive", type: i6.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i4.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "component", type: i5.TuiInputPhoneComponent, selector: "tui-input-phone", inputs: ["countryCode", "phoneMaskAfterCountryCode", "allowText", "search"], outputs: ["searchChange"] }, { kind: "directive", type: i5.TuiInputPhoneDirective, selector: "tui-input-phone" }, { kind: "directive", type: i7.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i7.MaskitoCva, selector: "input[maskito], textarea[maskito]", inputs: ["maskito"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPhoneApproveFormComponent, decorators: [{
140
+ type: Component,
141
+ args: [{ selector: 'sc-phone-approve-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" *tuiLet=\"(loadingApproveCode$ | async) as loadingApproveCode\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"\u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\">\n <tui-input-phone formControlName=\"phone\" [tuiTextfieldCustomContent]=\"checkingPhone\">\n \u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\n <input tuiTextfield autocomplete=\"phone\" />\n </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <label *ngIf=\"loadingApproveCode === false && haveCode\" tuiLabel=\"\u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\">\n <tui-input formControlName=\"phoneApproveCode\">\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <input tuiTextfield [maskito]=\"approveCodeMask\" autocomplete=\"new-password\" />\n </tui-input>\n <tui-error formControlName=\"phoneApproveCode\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <div *tuiLet=\"!!loadingApproveCode as loadingApproveCode\" class=\"flex gap-4 justify-center\">\n <button\n *ngIf=\"!haveCode\"\n tuiButton\n size=\"s\"\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !!!(phoneCheck$ | async) || phoneControl.invalid\"\n [showLoader]=\"loadingApproveCode\"\n icon=\"scIconLogIn\"\n >\n \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043A\u043E\u0434\n </button>\n <button *ngIf=\"!loadingApproveCode && !haveCode\" tuiLink [pseudo]=\"true\" [disabled]=\"!!!(phoneCheck$ | async) || phoneControl.invalid\" (click)=\"setHaveCode(true)\">\n \u0423 \u043C\u0435\u043D\u044F \u0435\u0441\u0442\u044C \u043A\u043E\u0434\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader *ngIf=\"haveCode\" [showLoader]=\"loadingApproveCode\">\n <button tuiLink [pseudo]=\"true\" [disabled]=\"loadingApproveCode || timer\" (click)=\"onSendCode.next()\">\n \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u0434\n <ng-container *ngIf=\"timer\" class=\"!text-tui-base-08\">(\u0447\u0435\u0440\u0435\u0437 {{ timer }})</ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader *ngIf=\"!!!(phoneCheck$ | async) && phoneControl.valid\" class=\"w-4 h-4\"> </tui-loader>\n</ng-template>\n" }]
142
+ }], ctorParameters: function () { return [{ type: i1.ScVerificationService }, { type: i3.FormGroupDirective, decorators: [{
143
+ type: Inject,
144
+ args: [FormGroupDirective]
145
+ }] }]; }, propDecorators: { shouldBeBusy: [{
146
+ type: Input
147
+ }], shouldBeConfirmed: [{
148
+ type: Input
149
+ }], haveCode: [{
150
+ type: Input
151
+ }], haveCodeChange: [{
152
+ type: Output
153
+ }] } });
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtYXBwcm92ZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS92ZXJpZmljYXRpb24vcGhvbmUtYXBwcm92ZS1mb3JtL3Bob25lLWFwcHJvdmUtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmVyaWZpY2F0aW9uL3Bob25lLWFwcHJvdmUtZm9ybS9waG9uZS1hcHByb3ZlLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUEwQixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNLLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQUVoRDs7R0FFRztBQU1ILE1BQU0sT0FBTywyQkFBMkI7SUEySHBDOzs7OztPQUtHO0lBQ0gsWUFDcUIsbUJBQTBDLEVBRTFDLGtCQUF1QztRQUZ2Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXVCO1FBRTFDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUI7UUFuSTVEOztXQUVHO1FBRUksaUJBQVksR0FBWSxJQUFJ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QUssRUFBRSxDQUNWLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxRQUFpQjtRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDOzt3SEE5TFEsMkJBQTJCLHVEQW1JeEIsa0JBQWtCOzRHQW5JckIsMkJBQTJCLG9OQ2xCeEMsMnJGQStDQTsyRkQ3QmEsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNJLHVCQUF1QixtQkFFaEIsdUJBQXVCLENBQUMsTUFBTTs7MEJBcUkxQyxNQUFNOzJCQUFDLGtCQUFrQjs0Q0E5SHZCLFlBQVk7c0JBRGxCLEtBQUs7Z0JBT0MsaUJBQWlCO3NCQUR2QixLQUFLO2dCQU9DLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxjQUFjO3NCQURwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXNraXRvT3B0aW9ucyB9IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHsgU2NWZXJpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBwaG9uZUFwcHJvdmVDb2RlTWFzayB9IGZyb20gJy4uLy4uL2F1dGgvY29uc3RhbnRzL3Bob25lLWFwcHJvdmUtY29kZS1tYXNrJztcbmltcG9ydCB7IEFwaUVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9hdXRoL2ludGVyZmFjZXMvQXBpRXJyb3JSZXNwb25zZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCBjYXRjaEVycm9yLCBvZiwgc3RhcnRXaXRoLCBzaGFyZSwgdGFwLCBmaW5hbGl6ZSwgdGltZXIsIHNjYW4sIHRha2VXaGlsZSwgZW5kV2l0aCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHR1aUNvbnRyb2xWYWx1ZSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDRhNC+0YDQvNGLINC/0YDQvtCy0LXRgNC60Lgg0YLQtdC70LXRhNC+0L3QsCDQuCDQv9C+0LvRg9GH0LXQvdC40Y8g0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtcGhvbmUtYXBwcm92ZS1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGhvbmUtYXBwcm92ZS1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NQaG9uZUFwcHJvdmVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDRgtC10LvQtdGE0L7QvdGDINCx0YvRgtGMINCyINGB0LjRgdGC0LXQvNC1LiDQntGCINGN0YLQvtCz0L4g0L/RgNC40LfQvdCw0LrQsCDQt9Cw0LLQuNGB0LjRgiDQsiDQutCw0LrQuNGFINGB0LvRg9GH0LDRj9GFINCy0YvQtNCw0LLQsNGC0Ywg0L7RiNC40LHQutGDINC/0YDQuCDQv9GA0L7QstC10YDQutC4INC30LDQvdGP0YLQvtGB0YLQuCDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3VsZEJlQnVzeTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDQv9GA0L7QstC10YDRj9GC0Ywg0L/QvtC00YLQstC10YDQttC00ZHQvSDQu9C4INGC0LXQu9C10YTQvtC90LAg0LIg0YHQuNGB0YLQtdC80LUuINCf0YDQuCBgdHJ1ZWAg0LHRg9C00LXRgiDQstGL0LfRi9Cy0LDRgtGMINC+0YjQuNCx0LrRgyDQv9GA0Lgg0L3QsNC70LjRh9C40LUg0YLQtdC70LXRhNC+0L3QsCDQsiDRgdC40YHRgtC10LzQtSDQsdC10Lcg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvdWxkQmVDb25maXJtZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqINCd0LDQu9C40YfQuNC1INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINGDINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBoYXZlQ29kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0LTQu9GPINC+0LHRgNCw0YLQvdC+0Lkg0L/RgNC40LLRj9C30LrQuCDQvdCw0LvQuNGH0LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRj1xuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBoYXZlQ29kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INCy0LLQvtC00LAg0LTQu9GPINGE0L7RgNC80YsgwqvQktGF0L7QtCDQvdCwINGB0LDQudGCwrsuXG4gICAgICovXG4gICAgcHVibGljIGdldCBmb3JtKCk6IEZvcm1Hcm91cDx7XG4gICAgICAgIHBob25lOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgcGhvbmVBcHByb3ZlQ29kZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBEaXJlY3RpdmU/LmZvcm0gYXMgRm9ybUdyb3VwPHtcbiAgICAgICAgICAgIHBob25lOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgICAgIHBob25lQXBwcm92ZUNvZGU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICB9PjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LvQtSDQstCy0L7QtNCwICfQndC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAnLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcGhvbmVDb250cm9sKCk6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybT8uY29udHJvbHMucGhvbmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INCX0LDQv9GA0L7RgdCwINC/0YDQvtCy0LXRgNC60Lgg0L3QvtC80LXRgNCwINGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHBob25lQ2hlY2skPzogT2JzZXJ2YWJsZTxib29sZWFuIHwgbnVsbD47XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0KHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb25TZW5kQ29kZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0JfQsNC/0YDQvtGB0LAg0LTQsNC90L3Ri9GFINC/0L7Qu9GD0YfQtdC90LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ0FwcHJvdmVDb2RlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMub25TZW5kQ29kZS5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5waG9uZUNvbnRyb2wudmFsaWQpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5waG9uZUNvbnRyb2wudmFsdWUgYXMgc3RyaW5nKSxcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgIHRoaXMudmVyaWZpY2F0aW9uU2VydmljZS5zZW5kUGhvbmVBcHByb3ZlQ29kZSh2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5yZWxvYWRUaW1lciQubmV4dCg2MCkpLFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBmYWxzZSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yUmVzcG9uc2UgPSBlcnJvci5lcnJvciBhcyBBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gLyhcXGR7Mn0pOlxcZHsyfS87XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gZXJyb3JSZXNwb25zZS5tZXNzYWdlLm1hdGNoKHJlZ2V4KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZVBhcnRzID0gbWF0Y2hbMF0uc3BsaXQoJzonKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSBwYXJzZUludCh0aW1lUGFydHNbMV0sIDEwKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRUaW1lciQubmV4dChzZWNvbmRzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBlcnJvclJlc3BvbnNlPy5lcnJvcnM/LltgcGhvbmVgXSA/PyBbZXJyb3JSZXNwb25zZS5tZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5zZXRIYXZlQ29kZSh0cnVlKSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRydWUpXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JzQsNGB0LrQsCDQv9C+0LvRjyDQstCy0L7QtNCwINC60L7QtNCwINC00LvRjyDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXBwcm92ZUNvZGVNYXNrOiBNYXNraXRvT3B0aW9ucyA9IHBob25lQXBwcm92ZUNvZGVNYXNrO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INCh0L7QsdGL0YLQuNGPINC30LDQv9GD0YHQutCwL9C+0YHRgtCw0L3QvtCy0LrQuCDRgtCw0LnQvNC10YDQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVsb2FkVGltZXIkOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0KLQsNC50LzQtdGA0LAuXG4gICAgICpcbiAgICAgKiBUT0RPOiDQktGL0L3QtdGB0YLQuCDRgtCw0LnQvNC10YAg0LIg0L7RgtC00LXQu9GM0L3Rg9GOINC00LjRgNC10LrRgtC40LLRgyBUQVNLOlsjOTI2MF0uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRpbWVyJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiA9IHRoaXMucmVsb2FkVGltZXIkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoc2VjKSA9PlxuICAgICAgICAgICAgdGltZXIoMCwgMTAwMCkucGlwZShcbiAgICAgICAgICAgICAgICBzY2FuKCh0b3RhbCkgPT4gLS10b3RhbCwgc2VjKSxcbiAgICAgICAgICAgICAgICB0YWtlV2hpbGUoKHRvdGFsKSA9PiB0b3RhbCA+PSAwKSxcbiAgICAgICAgICAgICAgICBtYXAoKHRvdGFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHRvdGFsIC8gNjApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRzID0gdG90YWwgJSA2MDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChtaW51dGVzKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7TWF0aC5yb3VuZChzZWNvbmRzKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBlbmRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY1Bob25lQXBwcm92ZUZvcm1Db21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHZlcmlmaWNhdGlvblNlcnZpY2Ug0KHQtdGA0LLQuNGBINCy0LXRgNC40YTQuNC60LDRhtC40LguXG4gICAgICogQHBhcmFtIGZvcm1Hcm91cERpcmVjdGl2ZSDQlNC40YDQtdC60YLQuNCy0LAgYyBgRm9ybUdyb3VwYCDQuNC3IERPTS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdmVyaWZpY2F0aW9uU2VydmljZTogU2NWZXJpZmljYXRpb25TZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEZvcm1Hcm91cERpcmVjdGl2ZSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtR3JvdXBEaXJlY3RpdmU/OiBGb3JtR3JvdXBEaXJlY3RpdmVcbiAgICApIHt9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGhvbmVDaGVjayQgPSB0dWlDb250cm9sVmFsdWU8c3RyaW5nIHwgbnVsbD4odGhpcy5waG9uZUNvbnRyb2wpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5yZWxvYWRUaW1lciQubmV4dCgwKSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGhvbmVDb250cm9sLnZhbGlkICYmICEhdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmVyaWZpY2F0aW9uU2VydmljZS5nZXRQaG9uZUNoZWNrJCh2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkQmVCdXN5ICE9PSByZXN1bHQuaXNCdXN5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLnNldEVycm9ycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdWxkQmVCdXN5ID8gJ9Cf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRgSDRgtCw0LrQuNC8INC90L7QvNC10YDQvtC8INGC0LXQu9C10YTQvtC90LAg0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgicgOiAn0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINGBINGC0LDQutC40Lwg0L3QvtC80LXRgNC+0Lwg0YLQtdC70LXRhNC+0L3QsCDRg9C20LUg0YHRg9GJ0LXRgdGC0LLRg9C10YInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkQmVDb25maXJtZWQgJiYgcmVzdWx0LmlzQ29uZmlybWVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2U6IFsn0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwINC90LUg0L/QvtC00YLQstC10YDQttC00ZHQvS4g0J7QsdGA0LDRgtC40YLQtdGB0Ywg0Log0LLQsNGI0LXQvNGDINC/0LXRgNGB0L7QvdCw0LvRjNC90L7QvNGDINC80LXQvdC10LTQttC10YDRgyDQuNC70Lgg0LLQvtC50LTQuNGC0LUg0YEg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvCBlLW1haWwg0Lgg0L/QsNGA0L7Qu9GPLiddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JSZXNwb25zZSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yUmVzcG9uc2U/LmVycm9ycz8uW2BwaG9uZWBdID8/IFtlcnJvclJlc3BvbnNlLm1lc3NhZ2VdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0SGF2ZUNvZGUoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmUoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGB0L7RgdGC0L7Rj9C90LjQtSDQvdCw0LvQuNGH0LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaGF2ZUNvZGUg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4g0LXRgdGC0Ywg0LvQuCDQutC+0LQg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0LjQu9C4INC90LXRgi5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0SGF2ZUNvZGUoaGF2ZUNvZGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXZlQ29kZSA9IGhhdmVDb2RlO1xuICAgICAgICB0aGlzLmhhdmVDb2RlQ2hhbmdlLmVtaXQoaGF2ZUNvZGUpO1xuICAgIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICp0dWlMZXQ9XCIobG9hZGluZ0FwcHJvdmVDb2RlJCB8IGFzeW5jKSBhcyBsb2FkaW5nQXBwcm92ZUNvZGVcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICA8bGFiZWwgdHVpTGFiZWw9XCLQndC+0LzQtdGAINGC0LXQu9C10YTQvtC90LBcIj5cbiAgICAgICAgPHR1aS1pbnB1dC1waG9uZSBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiIFt0dWlUZXh0ZmllbGRDdXN0b21Db250ZW50XT1cImNoZWNraW5nUGhvbmVcIj5cbiAgICAgICAgICAgINCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsFxuICAgICAgICAgICAgPGlucHV0IHR1aVRleHRmaWVsZCBhdXRvY29tcGxldGU9XCJwaG9uZVwiIC8+XG4gICAgICAgIDwvdHVpLWlucHV0LXBob25lPlxuICAgICAgICA8dHVpLWVycm9yIGZvcm1Db250cm9sTmFtZT1cInBob25lXCIgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCI+PC90dWktZXJyb3I+XG4gICAgPC9sYWJlbD5cblxuICAgIDxsYWJlbCAqbmdJZj1cImxvYWRpbmdBcHByb3ZlQ29kZSA9PT0gZmFsc2UgJiYgaGF2ZUNvZGVcIiB0dWlMYWJlbD1cItCa0L7QtCDQuNC3INCh0JzQoVwiPlxuICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cInBob25lQXBwcm92ZUNvZGVcIj5cbiAgICAgICAgICAgINCa0L7QtCDQuNC3INCh0JzQoVxuICAgICAgICAgICAgPGlucHV0IHR1aVRleHRmaWVsZCBbbWFza2l0b109XCJhcHByb3ZlQ29kZU1hc2tcIiBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIiAvPlxuICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgPHR1aS1lcnJvciBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZUFwcHJvdmVDb2RlXCIgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCI+PC90dWktZXJyb3I+XG4gICAgPC9sYWJlbD5cblxuICAgIDxkaXYgKnR1aUxldD1cIiEhbG9hZGluZ0FwcHJvdmVDb2RlIGFzIGxvYWRpbmdBcHByb3ZlQ29kZVwiIGNsYXNzPVwiZmxleCBnYXAtNCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIiFoYXZlQ29kZVwiXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblNlbmRDb2RlLm5leHQoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ0FwcHJvdmVDb2RlIHx8ICEhIShwaG9uZUNoZWNrJCB8IGFzeW5jKSB8fCBwaG9uZUNvbnRyb2wuaW52YWxpZFwiXG4gICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJsb2FkaW5nQXBwcm92ZUNvZGVcIlxuICAgICAgICAgICAgaWNvbj1cInNjSWNvbkxvZ0luXCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0J/QvtC70YPRh9C40YLRjCDQutC+0LRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhbG9hZGluZ0FwcHJvdmVDb2RlICYmICFoYXZlQ29kZVwiIHR1aUxpbmsgW3BzZXVkb109XCJ0cnVlXCIgW2Rpc2FibGVkXT1cIiEhIShwaG9uZUNoZWNrJCB8IGFzeW5jKSB8fCBwaG9uZUNvbnRyb2wuaW52YWxpZFwiIChjbGljayk9XCJzZXRIYXZlQ29kZSh0cnVlKVwiPlxuICAgICAgICAgICAg0KMg0LzQtdC90Y8g0LXRgdGC0Ywg0LrQvtC0XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKnR1aUxldD1cInRpbWVyJCB8IGFzeW5jIGFzIHRpbWVyXCI+XG4gICAgICAgICAgICA8dHVpLWxvYWRlciAqbmdJZj1cImhhdmVDb2RlXCIgW3Nob3dMb2FkZXJdPVwibG9hZGluZ0FwcHJvdmVDb2RlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0dWlMaW5rIFtwc2V1ZG9dPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nQXBwcm92ZUNvZGUgfHwgdGltZXJcIiAoY2xpY2spPVwib25TZW5kQ29kZS5uZXh0KClcIj5cbiAgICAgICAgICAgICAgICAgICAg0J/QvtCy0YLQvtGA0L3QviDQvtGC0L/RgNCw0LLQuNGC0Ywg0LrQvtC0XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aW1lclwiIGNsYXNzPVwiIXRleHQtdHVpLWJhc2UtMDhcIj4o0YfQtdGA0LXQtyB7eyB0aW1lciB9fSk8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvdHVpLWxvYWRlcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG5cbjxuZy10ZW1wbGF0ZSAjY2hlY2tpbmdQaG9uZT5cbiAgICA8dHVpLWxvYWRlciAqbmdJZj1cIiEhIShwaG9uZUNoZWNrJCB8IGFzeW5jKSAmJiBwaG9uZUNvbnRyb2wudmFsaWRcIiBjbGFzcz1cInctNCBoLTRcIj4gPC90dWktbG9hZGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==