@firestitch/2fa 13.0.1 → 13.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/enums/index.d.ts +1 -1
- package/app/enums/verification-method-type.enum.d.ts +5 -5
- package/app/interfaces/index.d.ts +1 -1
- package/app/interfaces/verification-method.interface.d.ts +11 -11
- package/app/modules/code-input/code-input.module.d.ts +11 -11
- package/app/modules/code-input/components/code-input/code-input.component.d.ts +14 -14
- package/app/modules/code-input/components/code-input/index.d.ts +1 -1
- package/app/modules/code-input/index.d.ts +1 -1
- package/app/modules/defaulted/components/defaulted/defaulted.component.d.ts +5 -5
- package/app/modules/defaulted/components/defaulted/index.d.ts +1 -1
- package/app/modules/defaulted/defaulted.module.d.ts +7 -7
- package/app/modules/manage/components/2fa-manage/2fa-manage.component.d.ts +30 -30
- package/app/modules/manage/components/2fa-manage/index.d.ts +1 -1
- package/app/modules/manage/components/app/app.component.d.ts +32 -32
- package/app/modules/manage/components/app/index.d.ts +1 -1
- package/app/modules/manage/components/email/email.component.d.ts +27 -27
- package/app/modules/manage/components/email/index.d.ts +1 -1
- package/app/modules/manage/components/emails/emails.component.d.ts +19 -19
- package/app/modules/manage/components/emails/index.d.ts +1 -1
- package/app/modules/manage/components/manage-methods/index.d.ts +1 -1
- package/app/modules/manage/components/manage-methods/manage-methods.component.d.ts +35 -35
- package/app/modules/manage/components/number/index.d.ts +1 -1
- package/app/modules/manage/components/number/number.component.d.ts +28 -28
- package/app/modules/manage/components/numbers/index.d.ts +1 -1
- package/app/modules/manage/components/numbers/numbers.component.d.ts +20 -20
- package/app/modules/manage/fs-2f-manage.module.d.ts +33 -33
- package/app/modules/manage/services/index.d.ts +1 -1
- package/app/modules/manage/services/two-factor-manage.service.d.ts +52 -52
- package/app/modules/resend/components/resend/index.d.ts +1 -1
- package/app/modules/resend/components/resend/resend.component.d.ts +14 -14
- package/app/modules/resend/resend.module.d.ts +9 -9
- package/app/modules/verification/components/2fa-verification/2fa-verification.component.d.ts +39 -39
- package/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.d.ts +21 -21
- package/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.d.ts +22 -22
- package/app/modules/verification/directives/2fa-verification-resend.directive.d.ts +11 -11
- package/app/modules/verification/directives/index.d.ts +1 -1
- package/app/modules/verification/fs-2fa-verification.module.d.ts +25 -25
- package/app/modules/verification-methods/components/verification-methods/index.d.ts +1 -1
- package/app/modules/verification-methods/components/verification-methods/verification-methods.component.d.ts +26 -26
- package/app/modules/verification-methods/fs-2f-verification-methods.module.d.ts +14 -14
- package/app/modules/verification-methods/index.d.ts +1 -1
- package/esm2020/app/enums/index.mjs +1 -1
- package/esm2020/app/enums/verification-method-type.enum.mjs +6 -6
- package/esm2020/app/interfaces/index.mjs +1 -1
- package/esm2020/app/interfaces/verification-method.interface.mjs +1 -1
- package/esm2020/app/modules/code-input/code-input.module.mjs +37 -37
- package/esm2020/app/modules/code-input/components/code-input/code-input.component.mjs +36 -36
- package/esm2020/app/modules/code-input/components/code-input/index.mjs +1 -1
- package/esm2020/app/modules/code-input/index.mjs +1 -1
- package/esm2020/app/modules/defaulted/components/defaulted/defaulted.component.mjs +10 -10
- package/esm2020/app/modules/defaulted/components/defaulted/index.mjs +1 -1
- package/esm2020/app/modules/defaulted/defaulted.module.mjs +17 -17
- package/esm2020/app/modules/manage/components/2fa-manage/2fa-manage.component.mjs +97 -97
- package/esm2020/app/modules/manage/components/2fa-manage/index.mjs +1 -1
- package/esm2020/app/modules/manage/components/app/app.component.mjs +84 -84
- package/esm2020/app/modules/manage/components/app/index.mjs +1 -1
- package/esm2020/app/modules/manage/components/email/email.component.mjs +78 -78
- package/esm2020/app/modules/manage/components/email/index.mjs +1 -1
- package/esm2020/app/modules/manage/components/emails/emails.component.mjs +46 -46
- package/esm2020/app/modules/manage/components/emails/index.mjs +1 -1
- package/esm2020/app/modules/manage/components/manage-methods/index.mjs +1 -1
- package/esm2020/app/modules/manage/components/manage-methods/manage-methods.component.mjs +124 -124
- package/esm2020/app/modules/manage/components/number/index.mjs +1 -1
- package/esm2020/app/modules/manage/components/number/number.component.mjs +82 -82
- package/esm2020/app/modules/manage/components/numbers/index.mjs +1 -1
- package/esm2020/app/modules/manage/components/numbers/numbers.component.mjs +47 -47
- package/esm2020/app/modules/manage/fs-2f-manage.module.mjs +118 -117
- package/esm2020/app/modules/manage/services/index.mjs +1 -1
- package/esm2020/app/modules/manage/services/two-factor-manage.service.mjs +160 -160
- package/esm2020/app/modules/resend/components/resend/index.mjs +1 -1
- package/esm2020/app/modules/resend/components/resend/resend.component.mjs +34 -34
- package/esm2020/app/modules/resend/resend.module.mjs +29 -29
- package/esm2020/app/modules/verification/components/2fa-verification/2fa-verification.component.mjs +123 -123
- package/esm2020/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.mjs +56 -56
- package/esm2020/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.mjs +55 -55
- package/esm2020/app/modules/verification/directives/2fa-verification-resend.directive.mjs +31 -31
- package/esm2020/app/modules/verification/directives/index.mjs +1 -1
- package/esm2020/app/modules/verification/fs-2fa-verification.module.mjs +96 -96
- package/esm2020/app/modules/verification-methods/components/verification-methods/index.mjs +1 -1
- package/esm2020/app/modules/verification-methods/components/verification-methods/verification-methods.component.mjs +116 -116
- package/esm2020/app/modules/verification-methods/fs-2f-verification-methods.module.mjs +47 -47
- package/esm2020/app/modules/verification-methods/index.mjs +1 -1
- package/esm2020/firestitch-2fa.mjs +4 -4
- package/esm2020/public_api.mjs +8 -8
- package/fesm2015/firestitch-2fa.mjs +1249 -1275
- package/fesm2015/firestitch-2fa.mjs.map +1 -1
- package/fesm2020/firestitch-2fa.mjs +1236 -1262
- package/fesm2020/firestitch-2fa.mjs.map +1 -1
- package/firestitch-2fa.d.ts +5 -5
- package/package.json +1 -1
- package/public_api.d.ts +9 -9
- package/app/modules/manage/components/qr-code/index.d.ts +0 -1
- package/app/modules/manage/components/qr-code/qr-code.component.d.ts +0 -11
- package/esm2020/app/modules/manage/components/qr-code/index.mjs +0 -2
- package/esm2020/app/modules/manage/components/qr-code/qr-code.component.mjs +0 -32
package/esm2020/app/modules/verification/components/2fa-verification/2fa-verification.component.mjs
CHANGED
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
-
import { ControlContainer, NgForm } from '@angular/forms';
|
|
3
|
-
import { Subject } from 'rxjs';
|
|
4
|
-
import { FsMessage } from '@firestitch/message';
|
|
5
|
-
import { FsDialog } from '@firestitch/dialog';
|
|
6
|
-
import { filter, finalize, takeUntil, tap } from 'rxjs/operators';
|
|
7
|
-
import { Fs2faVerificationMethodsComponent } from '../2fa-verification-methods/2fa-verification-methods.component';
|
|
8
|
-
import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
|
|
9
|
-
import { Fs2faVerificationCodeComponent } from '../2fa-verification-code/2fa-verification-code.component';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@firestitch/dialog";
|
|
12
|
-
import * as i2 from "@firestitch/message";
|
|
13
|
-
import * as i3 from "../2fa-verification-code/2fa-verification-code.component";
|
|
14
|
-
import * as i4 from "@angular/material/checkbox";
|
|
15
|
-
import * as i5 from "@angular/common";
|
|
16
|
-
import * as i6 from "@angular/forms";
|
|
17
|
-
import * as i7 from "@firestitch/form";
|
|
18
|
-
import * as i8 from "@firestitch/phone";
|
|
19
|
-
export class Fs2faVerificationComponent {
|
|
20
|
-
constructor(_cdRef, _dialog, _message) {
|
|
21
|
-
this._cdRef = _cdRef;
|
|
22
|
-
this._dialog = _dialog;
|
|
23
|
-
this._message = _message;
|
|
24
|
-
this.showTrustedDevice = true;
|
|
25
|
-
this.trustDevice = true;
|
|
26
|
-
this.formatRecipient = false;
|
|
27
|
-
this.verified = new EventEmitter();
|
|
28
|
-
this.codeChanged = new EventEmitter();
|
|
29
|
-
this.codeCompleted = new EventEmitter();
|
|
30
|
-
this.trustDeviceChange = new EventEmitter();
|
|
31
|
-
this.code = '';
|
|
32
|
-
this.VerificationMethodType = VerificationMethodType;
|
|
33
|
-
this._destroy$ = new Subject();
|
|
34
|
-
}
|
|
35
|
-
get recipient() {
|
|
36
|
-
if (this.verificationMethod.type === VerificationMethodType.Email) {
|
|
37
|
-
return this.verificationMethod.email;
|
|
38
|
-
}
|
|
39
|
-
if (this.verificationMethod.type === VerificationMethodType.Sms) {
|
|
40
|
-
return this.verificationMethod.phoneNumber;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
ngOnInit() {
|
|
44
|
-
this.codeChanged
|
|
45
|
-
.pipe(takeUntil(this._destroy$))
|
|
46
|
-
.subscribe((code) => {
|
|
47
|
-
this.code = code;
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
ngOnDestroy() {
|
|
51
|
-
this._destroy$.next();
|
|
52
|
-
this._destroy$.complete();
|
|
53
|
-
}
|
|
54
|
-
ngAfterViewInit() {
|
|
55
|
-
this.verificationCodeComponent.focus();
|
|
56
|
-
}
|
|
57
|
-
resendCode() {
|
|
58
|
-
return this.resend()
|
|
59
|
-
.pipe(tap(() => {
|
|
60
|
-
this.code = '';
|
|
61
|
-
this._message.success('Resent Code');
|
|
62
|
-
}), finalize(() => {
|
|
63
|
-
this.verificationCodeComponent.focus();
|
|
64
|
-
}));
|
|
65
|
-
}
|
|
66
|
-
showVerificationMethods() {
|
|
67
|
-
this.getVerificationMethods()
|
|
68
|
-
.subscribe((verificationMethods) => {
|
|
69
|
-
this._dialog.open(Fs2faVerificationMethodsComponent, {
|
|
70
|
-
data: {
|
|
71
|
-
verificationMethod: this.verificationMethod,
|
|
72
|
-
verificationMethods,
|
|
73
|
-
selectVerificationMethod: this.selectVerificationMethod,
|
|
74
|
-
}
|
|
75
|
-
})
|
|
76
|
-
.afterClosed()
|
|
77
|
-
.pipe(filter((verificationMethod) => !!verificationMethod))
|
|
78
|
-
.subscribe((verificationMethod) => {
|
|
79
|
-
this.verificationMethod = verificationMethod;
|
|
80
|
-
this.code = '';
|
|
81
|
-
this._cdRef.markForCheck();
|
|
82
|
-
setTimeout(() => {
|
|
83
|
-
this.verificationCodeComponent.focus();
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
Fs2faVerificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: Fs2faVerificationComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FsDialog }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
|
|
90
|
-
Fs2faVerificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: Fs2faVerificationComponent, selector: "fs-2fa-verification", inputs: { verificationMethod: "verificationMethod", resend: "resend", showTrustedDevice: "showTrustedDevice", trustDevice: "trustDevice", codeLength: "codeLength", trustDays: "trustDays", formatRecipient: "formatRecipient", getVerificationMethods: "getVerificationMethods", selectVerificationMethod: "selectVerificationMethod" }, outputs: { verified: "verified", codeChanged: "codeChanged", codeCompleted: "codeCompleted", trustDeviceChange: "trustDeviceChange" }, viewQueries: [{ propertyName: "verificationCodeComponent", first: true, predicate: Fs2faVerificationCodeComponent, descendants: true }], ngImport: i0, template: "<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"(formatRecipient && verificationMethod.type === VerificationMethodType.Sms) ? (recipient | fsPhone) : recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChanged.emit($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </fs-2fa-verification-code>\n</div>\n\n<div class=\"additional\">\n <div \n class=\"trust-device\"\n *ngIf=\"showTrustedDevice\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustDevice\"\n (ngModelChange)=\"trustDeviceChange.emit($event)\">\n <div class=\"small\">\n Bypass verification \n <ng-container *ngIf=\"trustDays\">for {{trustDays}} days</ng-container> \n <ng-container *ngIf=\"!trustDays\">for future signins</ng-container> \n unless cookies are cleared\n </div>\n </mat-checkbox>\n </div>\n</div>", styles: [":host ::ng-deep .mat-checkbox{margin:2px 0}:host ::ng-deep .mat-checkbox .mat-checkbox-label{line-height:normal}:host ::ng-deep .mat-checkbox .mat-checkbox-layout{white-space:normal}.code-container{text-align:center}.additional{display:flex;justify-content:space-between;align-items:center;margin:4px 0 5px}.additional small{color:inherit}.additional .resend{cursor:pointer;text-transform:none}.additional .resend mat-spinner{display:inline-block;vertical-align:middle}\n"], components: [{ type: i3.Fs2faVerificationCodeComponent, selector: "fs-2fa-verification-code", inputs: ["type", "recipient", "codeLength", "code"], outputs: ["codeChanged", "codeCompleted"] }, { type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], pipes: { "fsPhone": i8.FsPhonePipe }, viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: Fs2faVerificationComponent, decorators: [{
|
|
92
|
-
type: Component,
|
|
93
|
-
args: [{ selector: 'fs-2fa-verification', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"(formatRecipient && verificationMethod.type === VerificationMethodType.Sms) ? (recipient | fsPhone) : recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChanged.emit($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </fs-2fa-verification-code>\n</div>\n\n<div class=\"additional\">\n <div \n class=\"trust-device\"\n *ngIf=\"showTrustedDevice\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustDevice\"\n (ngModelChange)=\"trustDeviceChange.emit($event)\">\n <div class=\"small\">\n Bypass verification \n <ng-container *ngIf=\"trustDays\">for {{trustDays}} days</ng-container> \n <ng-container *ngIf=\"!trustDays\">for future signins</ng-container> \n unless cookies are cleared\n </div>\n </mat-checkbox>\n </div>\n</div>", styles: [":host ::ng-deep .mat-checkbox{margin:2px 0}:host ::ng-deep .mat-checkbox .mat-checkbox-label{line-height:normal}:host ::ng-deep .mat-checkbox .mat-checkbox-layout{white-space:normal}.code-container{text-align:center}.additional{display:flex;justify-content:space-between;align-items:center;margin:4px 0 5px}.additional small{color:inherit}.additional .resend{cursor:pointer;text-transform:none}.additional .resend mat-spinner{display:inline-block;vertical-align:middle}\n"] }]
|
|
94
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.FsDialog }, { type: i2.FsMessage }]; }, propDecorators: { verificationCodeComponent: [{
|
|
95
|
-
type: ViewChild,
|
|
96
|
-
args: [Fs2faVerificationCodeComponent]
|
|
97
|
-
}], verificationMethod: [{
|
|
98
|
-
type: Input
|
|
99
|
-
}], resend: [{
|
|
100
|
-
type: Input
|
|
101
|
-
}], showTrustedDevice: [{
|
|
102
|
-
type: Input
|
|
103
|
-
}], trustDevice: [{
|
|
104
|
-
type: Input
|
|
105
|
-
}], codeLength: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}], trustDays: [{
|
|
108
|
-
type: Input
|
|
109
|
-
}], formatRecipient: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}], getVerificationMethods: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], selectVerificationMethod: [{
|
|
114
|
-
type: Input
|
|
115
|
-
}], verified: [{
|
|
116
|
-
type: Output
|
|
117
|
-
}], codeChanged: [{
|
|
118
|
-
type: Output
|
|
119
|
-
}], codeCompleted: [{
|
|
120
|
-
type: Output
|
|
121
|
-
}], trustDeviceChange: [{
|
|
122
|
-
type: Output
|
|
123
|
-
}] } });
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { ControlContainer, NgForm } from '@angular/forms';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import { FsMessage } from '@firestitch/message';
|
|
5
|
+
import { FsDialog } from '@firestitch/dialog';
|
|
6
|
+
import { filter, finalize, takeUntil, tap } from 'rxjs/operators';
|
|
7
|
+
import { Fs2faVerificationMethodsComponent } from '../2fa-verification-methods/2fa-verification-methods.component';
|
|
8
|
+
import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
|
|
9
|
+
import { Fs2faVerificationCodeComponent } from '../2fa-verification-code/2fa-verification-code.component';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@firestitch/dialog";
|
|
12
|
+
import * as i2 from "@firestitch/message";
|
|
13
|
+
import * as i3 from "../2fa-verification-code/2fa-verification-code.component";
|
|
14
|
+
import * as i4 from "@angular/material/checkbox";
|
|
15
|
+
import * as i5 from "@angular/common";
|
|
16
|
+
import * as i6 from "@angular/forms";
|
|
17
|
+
import * as i7 from "@firestitch/form";
|
|
18
|
+
import * as i8 from "@firestitch/phone";
|
|
19
|
+
export class Fs2faVerificationComponent {
|
|
20
|
+
constructor(_cdRef, _dialog, _message) {
|
|
21
|
+
this._cdRef = _cdRef;
|
|
22
|
+
this._dialog = _dialog;
|
|
23
|
+
this._message = _message;
|
|
24
|
+
this.showTrustedDevice = true;
|
|
25
|
+
this.trustDevice = true;
|
|
26
|
+
this.formatRecipient = false;
|
|
27
|
+
this.verified = new EventEmitter();
|
|
28
|
+
this.codeChanged = new EventEmitter();
|
|
29
|
+
this.codeCompleted = new EventEmitter();
|
|
30
|
+
this.trustDeviceChange = new EventEmitter();
|
|
31
|
+
this.code = '';
|
|
32
|
+
this.VerificationMethodType = VerificationMethodType;
|
|
33
|
+
this._destroy$ = new Subject();
|
|
34
|
+
}
|
|
35
|
+
get recipient() {
|
|
36
|
+
if (this.verificationMethod.type === VerificationMethodType.Email) {
|
|
37
|
+
return this.verificationMethod.email;
|
|
38
|
+
}
|
|
39
|
+
if (this.verificationMethod.type === VerificationMethodType.Sms) {
|
|
40
|
+
return this.verificationMethod.phoneNumber;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
ngOnInit() {
|
|
44
|
+
this.codeChanged
|
|
45
|
+
.pipe(takeUntil(this._destroy$))
|
|
46
|
+
.subscribe((code) => {
|
|
47
|
+
this.code = code;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
ngOnDestroy() {
|
|
51
|
+
this._destroy$.next();
|
|
52
|
+
this._destroy$.complete();
|
|
53
|
+
}
|
|
54
|
+
ngAfterViewInit() {
|
|
55
|
+
this.verificationCodeComponent.focus();
|
|
56
|
+
}
|
|
57
|
+
resendCode() {
|
|
58
|
+
return this.resend()
|
|
59
|
+
.pipe(tap(() => {
|
|
60
|
+
this.code = '';
|
|
61
|
+
this._message.success('Resent Code');
|
|
62
|
+
}), finalize(() => {
|
|
63
|
+
this.verificationCodeComponent.focus();
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
showVerificationMethods() {
|
|
67
|
+
this.getVerificationMethods()
|
|
68
|
+
.subscribe((verificationMethods) => {
|
|
69
|
+
this._dialog.open(Fs2faVerificationMethodsComponent, {
|
|
70
|
+
data: {
|
|
71
|
+
verificationMethod: this.verificationMethod,
|
|
72
|
+
verificationMethods,
|
|
73
|
+
selectVerificationMethod: this.selectVerificationMethod,
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
.afterClosed()
|
|
77
|
+
.pipe(filter((verificationMethod) => !!verificationMethod))
|
|
78
|
+
.subscribe((verificationMethod) => {
|
|
79
|
+
this.verificationMethod = verificationMethod;
|
|
80
|
+
this.code = '';
|
|
81
|
+
this._cdRef.markForCheck();
|
|
82
|
+
setTimeout(() => {
|
|
83
|
+
this.verificationCodeComponent.focus();
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
Fs2faVerificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: Fs2faVerificationComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FsDialog }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
|
|
90
|
+
Fs2faVerificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: Fs2faVerificationComponent, selector: "fs-2fa-verification", inputs: { verificationMethod: "verificationMethod", resend: "resend", showTrustedDevice: "showTrustedDevice", trustDevice: "trustDevice", codeLength: "codeLength", trustDays: "trustDays", formatRecipient: "formatRecipient", getVerificationMethods: "getVerificationMethods", selectVerificationMethod: "selectVerificationMethod" }, outputs: { verified: "verified", codeChanged: "codeChanged", codeCompleted: "codeCompleted", trustDeviceChange: "trustDeviceChange" }, viewQueries: [{ propertyName: "verificationCodeComponent", first: true, predicate: Fs2faVerificationCodeComponent, descendants: true }], ngImport: i0, template: "<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"(formatRecipient && verificationMethod.type === VerificationMethodType.Sms) ? (recipient | fsPhone) : recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChanged.emit($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </fs-2fa-verification-code>\n</div>\n\n<div class=\"additional\">\n <div \n class=\"trust-device\"\n *ngIf=\"showTrustedDevice\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustDevice\"\n (ngModelChange)=\"trustDeviceChange.emit($event)\">\n <div class=\"small\">\n Bypass verification \n <ng-container *ngIf=\"trustDays\">for {{trustDays}} days</ng-container> \n <ng-container *ngIf=\"!trustDays\">for future signins</ng-container> \n unless cookies are cleared\n </div>\n </mat-checkbox>\n </div>\n</div>", styles: [":host ::ng-deep .mat-checkbox{margin:2px 0}:host ::ng-deep .mat-checkbox .mat-checkbox-label{line-height:normal}:host ::ng-deep .mat-checkbox .mat-checkbox-layout{white-space:normal}.code-container{text-align:center}.additional{display:flex;justify-content:space-between;align-items:center;margin:4px 0 5px}.additional small{color:inherit}.additional .resend{cursor:pointer;text-transform:none}.additional .resend mat-spinner{display:inline-block;vertical-align:middle}\n"], components: [{ type: i3.Fs2faVerificationCodeComponent, selector: "fs-2fa-verification-code", inputs: ["type", "recipient", "codeLength", "code"], outputs: ["codeChanged", "codeCompleted"] }, { type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i7.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], pipes: { "fsPhone": i8.FsPhonePipe }, viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
91
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: Fs2faVerificationComponent, decorators: [{
|
|
92
|
+
type: Component,
|
|
93
|
+
args: [{ selector: 'fs-2fa-verification', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"(formatRecipient && verificationMethod.type === VerificationMethodType.Sms) ? (recipient | fsPhone) : recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChanged.emit($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </fs-2fa-verification-code>\n</div>\n\n<div class=\"additional\">\n <div \n class=\"trust-device\"\n *ngIf=\"showTrustedDevice\">\n <mat-checkbox\n name=\"trust-device\"\n [(ngModel)]=\"trustDevice\"\n (ngModelChange)=\"trustDeviceChange.emit($event)\">\n <div class=\"small\">\n Bypass verification \n <ng-container *ngIf=\"trustDays\">for {{trustDays}} days</ng-container> \n <ng-container *ngIf=\"!trustDays\">for future signins</ng-container> \n unless cookies are cleared\n </div>\n </mat-checkbox>\n </div>\n</div>", styles: [":host ::ng-deep .mat-checkbox{margin:2px 0}:host ::ng-deep .mat-checkbox .mat-checkbox-label{line-height:normal}:host ::ng-deep .mat-checkbox .mat-checkbox-layout{white-space:normal}.code-container{text-align:center}.additional{display:flex;justify-content:space-between;align-items:center;margin:4px 0 5px}.additional small{color:inherit}.additional .resend{cursor:pointer;text-transform:none}.additional .resend mat-spinner{display:inline-block;vertical-align:middle}\n"] }]
|
|
94
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.FsDialog }, { type: i2.FsMessage }]; }, propDecorators: { verificationCodeComponent: [{
|
|
95
|
+
type: ViewChild,
|
|
96
|
+
args: [Fs2faVerificationCodeComponent]
|
|
97
|
+
}], verificationMethod: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], resend: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], showTrustedDevice: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], trustDevice: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], codeLength: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], trustDays: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], formatRecipient: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], getVerificationMethods: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], selectVerificationMethod: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], verified: [{
|
|
116
|
+
type: Output
|
|
117
|
+
}], codeChanged: [{
|
|
118
|
+
type: Output
|
|
119
|
+
}], codeCompleted: [{
|
|
120
|
+
type: Output
|
|
121
|
+
}], trustDeviceChange: [{
|
|
122
|
+
type: Output
|
|
123
|
+
}] } });
|
|
124
124
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvdmVyaWZpY2F0aW9uL2NvbXBvbmVudHMvMmZhLXZlcmlmaWNhdGlvbi8yZmEtdmVyaWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLzJmYS12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdsRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNuSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN6RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7Ozs7OztBQVUxRyxNQUFNLE9BQU8sMEJBQTBCO0lBaURyQyxZQUNVLE1BQXlCLEVBQ3pCLE9BQWlCLEVBQ2pCLFFBQW1CO1FBRm5C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Q0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN6QyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt1SEE1SFUsMEJBQTBCOzJHQUExQiwwQkFBMEIsdWtCQUUxQiw4QkFBOEIsZ0RDcEMzQywrOUJBMkJNLGcxRERLVyxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQzsyRkFFeEQsMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNFLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQzt1SkFLNUQseUJBQXlCO3NCQUQvQixTQUFTO3VCQUFDLDhCQUE4QjtnQkFJbEMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxpQkFBaUI7c0JBRHZCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxlQUFlO3NCQURyQixLQUFLO2dCQUlDLHNCQUFzQjtzQkFENUIsS0FBSztnQkFJQyx3QkFBd0I7c0JBRDlCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxNQUFNO2dCQUlBLFdBQVc7c0JBRGpCLE1BQU07Z0JBSUEsYUFBYTtzQkFEbkIsTUFBTTtnQkFJQSxpQkFBaUI7c0JBRHZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcbmltcG9ydCB7IEZzRGlhbG9nIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGlhbG9nJztcblxuaW1wb3J0IHsgZmlsdGVyLCBmaW5hbGl6ZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElGc1ZlcmlmaWNhdGlvbk1ldGhvZCB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvdmVyaWZpY2F0aW9uLW1ldGhvZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRnMyZmFWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50IH0gZnJvbSAnLi4vMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLzJmYS12ZXJpZmljYXRpb24tbWV0aG9kcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zL3ZlcmlmaWNhdGlvbi1tZXRob2QtdHlwZS5lbnVtJztcbmltcG9ydCB7IEZzMmZhVmVyaWZpY2F0aW9uQ29kZUNvbXBvbmVudCB9IGZyb20gJy4uLzJmYS12ZXJpZmljYXRpb24tY29kZS8yZmEtdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy0yZmEtdmVyaWZpY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuLzJmYS12ZXJpZmljYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi8yZmEtdmVyaWZpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLCAgXG4gIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBOZ0Zvcm0gfV0sXG59KVxuZXhwb3J0IGNsYXNzIEZzMmZhVmVyaWZpY2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoRnMyZmFWZXJpZmljYXRpb25Db2RlQ29tcG9uZW50KVxuICBwdWJsaWMgdmVyaWZpY2F0aW9uQ29kZUNvbXBvbmVudDogRnMyZmFWZXJpZmljYXRpb25Db2RlQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2ZXJpZmljYXRpb25NZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVzZW5kOiAoKSA9PiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93VHJ1c3RlZERldmljZSA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRydXN0RGV2aWNlID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY29kZUxlbmd0aDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdHJ1c3REYXlzO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtYXRSZWNpcGllbnQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0VmVyaWZpY2F0aW9uTWV0aG9kczogKCkgPT4gT2JzZXJ2YWJsZTxJRnNWZXJpZmljYXRpb25NZXRob2RbXT47XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNlbGVjdFZlcmlmaWNhdGlvbk1ldGhvZDogKHZlcmlmaWNhdGlvbk1ldGhvZDogSUZzVmVyaWZpY2F0aW9uTWV0aG9kKSA9PiBPYnNlcnZhYmxlPElGc1ZlcmlmaWNhdGlvbk1ldGhvZD47XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB2ZXJpZmllZCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNvZGVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY29kZUNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bj4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHRydXN0RGV2aWNlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBjb2RlID0gJyc7XG4gIHB1YmxpYyBWZXJpZmljYXRpb25NZXRob2RUeXBlID0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2RpYWxvZzogRnNEaWFsb2csXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICApIHt9XG5cbiAgcHVibGljIGdldCByZWNpcGllbnQoKTogc3RyaW5nIHtcbiAgICBpZih0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZC50eXBlID09PSBWZXJpZmljYXRpb25NZXRob2RUeXBlLkVtYWlsKSB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZmljYXRpb25NZXRob2QuZW1haWw7XG4gICAgfVxuXG4gICAgaWYodGhpcy52ZXJpZmljYXRpb25NZXRob2QudHlwZSA9PT0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5TbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZC5waG9uZU51bWJlcjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb2RlQ2hhbmdlZFxuICAgIC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICApXG4gICAgLnN1YnNjcmliZSgoY29kZTogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZlcmlmaWNhdGlvbkNvZGVDb21wb25lbnQuZm9jdXMoKTsgICAgXG4gIH1cblxuICBwdWJsaWMgcmVzZW5kQ29kZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlc2VuZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNvZGUgPSAnJztcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1Jlc2VudCBDb2RlJyk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy52ZXJpZmljYXRpb25Db2RlQ29tcG9uZW50LmZvY3VzKCk7ICBcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHNob3dWZXJpZmljYXRpb25NZXRob2RzKCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0VmVyaWZpY2F0aW9uTWV0aG9kcygpXG4gICAgLnN1YnNjcmliZSgodmVyaWZpY2F0aW9uTWV0aG9kcykgPT4ge1xuICAgICAgdGhpcy5fZGlhbG9nLm9wZW4oXG4gICAgICAgIEZzMmZhVmVyaWZpY2F0aW9uTWV0aG9kc0NvbXBvbmVudCxcbiAgICAgICAge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbk1ldGhvZDogdGhpcy52ZXJpZmljYXRpb25NZXRob2QsXG4gICAgICAgICAgICB2ZXJpZmljYXRpb25NZXRob2RzLFxuICAgICAgICAgICAgc2VsZWN0VmVyaWZpY2F0aW9uTWV0aG9kOiB0aGlzLnNlbGVjdFZlcmlmaWNhdGlvbk1ldGhvZCxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKCh2ZXJpZmljYXRpb25NZXRob2QpID0+ICEhdmVyaWZpY2F0aW9uTWV0aG9kKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCh2ZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgICB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZCA9IHZlcmlmaWNhdGlvbk1ldGhvZDtcbiAgICAgICAgICB0aGlzLmNvZGUgPSAnJztcbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy52ZXJpZmljYXRpb25Db2RlQ29tcG9uZW50LmZvY3VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2RlLWNvbnRhaW5lclwiPlxuICA8ZnMtMmZhLXZlcmlmaWNhdGlvbi1jb2RlXG4gICAgW3JlY2lwaWVudF09XCIoZm9ybWF0UmVjaXBpZW50ICYmIHZlcmlmaWNhdGlvbk1ldGhvZC50eXBlID09PSBWZXJpZmljYXRpb25NZXRob2RUeXBlLlNtcykgPyAocmVjaXBpZW50IHwgZnNQaG9uZSkgOiByZWNpcGllbnRcIlxuICAgIFt0eXBlXT1cInZlcmlmaWNhdGlvbk1ldGhvZC50eXBlXCJcbiAgICBbY29kZV09XCJjb2RlXCJcbiAgICBbY29kZUxlbmd0aF09XCJjb2RlTGVuZ3RoXCJcbiAgICAoY29kZUNoYW5nZWQpPVwiY29kZUNoYW5nZWQuZW1pdCgkZXZlbnQpXCJcbiAgICAoY29kZUNvbXBsZXRlZCk9XCJjb2RlQ29tcGxldGVkLmVtaXQoKVwiPlxuICA8L2ZzLTJmYS12ZXJpZmljYXRpb24tY29kZT5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiYWRkaXRpb25hbFwiPlxuICA8ZGl2IFxuICAgICAgY2xhc3M9XCJ0cnVzdC1kZXZpY2VcIlxuICAgICAgKm5nSWY9XCJzaG93VHJ1c3RlZERldmljZVwiPlxuICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICBuYW1lPVwidHJ1c3QtZGV2aWNlXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInRydXN0RGV2aWNlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0cnVzdERldmljZUNoYW5nZS5lbWl0KCRldmVudClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzbWFsbFwiPlxuICAgICAgICBCeXBhc3MgdmVyaWZpY2F0aW9uIFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHJ1c3REYXlzXCI+Zm9yIHt7dHJ1c3REYXlzfX0gZGF5czwvbmctY29udGFpbmVyPiAgXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdHJ1c3REYXlzXCI+Zm9yIGZ1dHVyZSBzaWduaW5zPC9uZy1jb250YWluZXI+IFxuICAgICAgICB1bmxlc3MgY29va2llcyBhcmUgY2xlYXJlZFxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtY2hlY2tib3g+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
-
import { ControlContainer, NgForm } from '@angular/forms';
|
|
3
|
-
import { FsFormDirective } from '@firestitch/form';
|
|
4
|
-
import { CodeInputComponent } from '../../../../modules/code-input/components/code-input';
|
|
5
|
-
import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@firestitch/form";
|
|
8
|
-
import * as i2 from "../../../code-input/components/code-input/code-input.component";
|
|
9
|
-
import * as i3 from "@angular/common";
|
|
10
|
-
export class Fs2faVerificationCodeComponent {
|
|
11
|
-
constructor(_form) {
|
|
12
|
-
this._form = _form;
|
|
13
|
-
this.codeChanged = new EventEmitter();
|
|
14
|
-
this.codeCompleted = new EventEmitter();
|
|
15
|
-
this.VerificationMethodType = VerificationMethodType;
|
|
16
|
-
}
|
|
17
|
-
codeChange(code) {
|
|
18
|
-
this.code = code;
|
|
19
|
-
this.codeChanged.emit(this.code);
|
|
20
|
-
this._form.dirty();
|
|
21
|
-
}
|
|
22
|
-
focus() {
|
|
23
|
-
this.codeInputComponent.focus();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
Fs2faVerificationCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: Fs2faVerificationCodeComponent, deps: [{ token: i1.FsFormDirective }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
-
Fs2faVerificationCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: Fs2faVerificationCodeComponent, selector: "fs-2fa-verification-code", inputs: { type: "type", recipient: "recipient", codeLength: "codeLength", code: "code" }, outputs: { codeChanged: "codeChanged", codeCompleted: "codeCompleted" }, viewQueries: [{ propertyName: "codeInputComponent", first: true, predicate: CodeInputComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just sent to <span style=\"white-space: nowrap;\">{{ recipient }}</span> to verify it's you.\n </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.Email\">\n <p class=\"description\">\n An email with a verification code was just sent to {{ recipient }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </app-code-input> \n</ng-template> ", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper{min-height:unset!important}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper .fs-form-error{padding-bottom:5px}app-code-input{margin-bottom:5px}\n"], components: [{ type: i2.CodeInputComponent, selector: "app-code-input", inputs: ["codeLength", "code"], outputs: ["codeCompleted", "codeChanged"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], viewProviders: [
|
|
28
|
-
{
|
|
29
|
-
provide: ControlContainer,
|
|
30
|
-
useExisting: NgForm,
|
|
31
|
-
},
|
|
32
|
-
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: Fs2faVerificationCodeComponent, decorators: [{
|
|
34
|
-
type: Component,
|
|
35
|
-
args: [{ selector: 'fs-2fa-verification-code', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
|
|
36
|
-
{
|
|
37
|
-
provide: ControlContainer,
|
|
38
|
-
useExisting: NgForm,
|
|
39
|
-
},
|
|
40
|
-
], template: "<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just sent to <span style=\"white-space: nowrap;\">{{ recipient }}</span> to verify it's you.\n </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.Email\">\n <p class=\"description\">\n An email with a verification code was just sent to {{ recipient }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </app-code-input> \n</ng-template> ", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper{min-height:unset!important}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper .fs-form-error{padding-bottom:5px}app-code-input{margin-bottom:5px}\n"] }]
|
|
41
|
-
}], ctorParameters: function () { return [{ type: i1.FsFormDirective }]; }, propDecorators: { codeInputComponent: [{
|
|
42
|
-
type: ViewChild,
|
|
43
|
-
args: [CodeInputComponent]
|
|
44
|
-
}], type: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], recipient: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}], codeLength: [{
|
|
49
|
-
type: Input
|
|
50
|
-
}], code: [{
|
|
51
|
-
type: Input
|
|
52
|
-
}], codeChanged: [{
|
|
53
|
-
type: Output
|
|
54
|
-
}], codeCompleted: [{
|
|
55
|
-
type: Output
|
|
56
|
-
}] } });
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { ControlContainer, NgForm } from '@angular/forms';
|
|
3
|
+
import { FsFormDirective } from '@firestitch/form';
|
|
4
|
+
import { CodeInputComponent } from '../../../../modules/code-input/components/code-input';
|
|
5
|
+
import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@firestitch/form";
|
|
8
|
+
import * as i2 from "../../../code-input/components/code-input/code-input.component";
|
|
9
|
+
import * as i3 from "@angular/common";
|
|
10
|
+
export class Fs2faVerificationCodeComponent {
|
|
11
|
+
constructor(_form) {
|
|
12
|
+
this._form = _form;
|
|
13
|
+
this.codeChanged = new EventEmitter();
|
|
14
|
+
this.codeCompleted = new EventEmitter();
|
|
15
|
+
this.VerificationMethodType = VerificationMethodType;
|
|
16
|
+
}
|
|
17
|
+
codeChange(code) {
|
|
18
|
+
this.code = code;
|
|
19
|
+
this.codeChanged.emit(this.code);
|
|
20
|
+
this._form.dirty();
|
|
21
|
+
}
|
|
22
|
+
focus() {
|
|
23
|
+
this.codeInputComponent.focus();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
Fs2faVerificationCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: Fs2faVerificationCodeComponent, deps: [{ token: i1.FsFormDirective }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
+
Fs2faVerificationCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: Fs2faVerificationCodeComponent, selector: "fs-2fa-verification-code", inputs: { type: "type", recipient: "recipient", codeLength: "codeLength", code: "code" }, outputs: { codeChanged: "codeChanged", codeCompleted: "codeCompleted" }, viewQueries: [{ propertyName: "codeInputComponent", first: true, predicate: CodeInputComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just sent to <span style=\"white-space: nowrap;\">{{ recipient }}</span> to verify it's you.\n </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.Email\">\n <p class=\"description\">\n An email with a verification code was just sent to {{ recipient }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </app-code-input> \n</ng-template> ", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper{min-height:unset!important}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper .fs-form-error{padding-bottom:5px}app-code-input{margin-bottom:5px}\n"], components: [{ type: i2.CodeInputComponent, selector: "app-code-input", inputs: ["codeLength", "code"], outputs: ["codeCompleted", "codeChanged"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], viewProviders: [
|
|
28
|
+
{
|
|
29
|
+
provide: ControlContainer,
|
|
30
|
+
useExisting: NgForm,
|
|
31
|
+
},
|
|
32
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: Fs2faVerificationCodeComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{ selector: 'fs-2fa-verification-code', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [
|
|
36
|
+
{
|
|
37
|
+
provide: ControlContainer,
|
|
38
|
+
useExisting: NgForm,
|
|
39
|
+
},
|
|
40
|
+
], template: "<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just sent to <span style=\"white-space: nowrap;\">{{ recipient }}</span> to verify it's you.\n </p>\n\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.Email\">\n <p class=\"description\">\n An email with a verification code was just sent to {{ recipient }} to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"type === VerificationMethodType.App\">\n <p class=\"description\">\n Enter the verification code generated by your 2 factor authenticator app to verify it's you.\n </p>\n <ng-container *ngTemplateOutlet=\"input\"></ng-container>\n</ng-container>\n\n<ng-template #input> \n <app-code-input \n [code]=\"code\"\n [codeLength]=\"codeLength\"\n (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </app-code-input> \n</ng-template> ", styles: ["mat-form-field{width:100%}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper{min-height:unset!important}mat-form-field ::ng-deep .mat-form-field-subscript-wrapper .fs-form-error{padding-bottom:5px}app-code-input{margin-bottom:5px}\n"] }]
|
|
41
|
+
}], ctorParameters: function () { return [{ type: i1.FsFormDirective }]; }, propDecorators: { codeInputComponent: [{
|
|
42
|
+
type: ViewChild,
|
|
43
|
+
args: [CodeInputComponent]
|
|
44
|
+
}], type: [{
|
|
45
|
+
type: Input
|
|
46
|
+
}], recipient: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], codeLength: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], code: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], codeChanged: [{
|
|
53
|
+
type: Output
|
|
54
|
+
}], codeCompleted: [{
|
|
55
|
+
type: Output
|
|
56
|
+
}] } });
|
|
57
57
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7OztBQWV6RixNQUFNLE9BQU8sOEJBQThCO0lBeUJ6QyxZQUNVLEtBQXNCO1FBQXRCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBUnpCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd6QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFekMsMkJBQXNCLEdBQUcsc0JBQXNCLENBQUM7SUFJcEQsQ0FBQztJQUVHLFVBQVUsQ0FBQyxJQUFJO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUM7OzJIQXJDVSw4QkFBOEI7K0dBQTlCLDhCQUE4Qix1UkFFOUIsa0JBQWtCLGdEQzlCL0IsMGtDQTZCZSw0bkJEUkU7UUFDYjtZQUNFLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsV0FBVyxFQUFFLE1BQU07U0FDcEI7S0FDRjsyRkFFVSw4QkFBOEI7a0JBWjFDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQzt3QkFDYjs0QkFDRSxPQUFPLEVBQUUsZ0JBQWdCOzRCQUN6QixXQUFXLEVBQUUsTUFBTTt5QkFDcEI7cUJBQ0Y7c0dBS00sa0JBQWtCO3NCQUR4QixTQUFTO3VCQUFDLGtCQUFrQjtnQkFJdEIsSUFBSTtzQkFEVixLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSztnQkFJQyxXQUFXO3NCQURqQixNQUFNO2dCQUlBLGFBQWE7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2Zvcm0nO1xuXG5pbXBvcnQgeyBDb2RlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2R1bGVzL2NvZGUtaW5wdXQvY29tcG9uZW50cy9jb2RlLWlucHV0JztcbmltcG9ydCB7IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtcy92ZXJpZmljYXRpb24tbWV0aG9kLXR5cGUuZW51bSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtMmZhLXZlcmlmaWNhdGlvbi1jb2RlJyxcbiAgdGVtcGxhdGVVcmw6ICcuLzJmYS12ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLzJmYS12ZXJpZmljYXRpb24tY29kZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdmlld1Byb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsXG4gICAgICB1c2VFeGlzdGluZzogTmdGb3JtLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzMmZhVmVyaWZpY2F0aW9uQ29kZUNvbXBvbmVudCB7XG5cbiAgQFZpZXdDaGlsZChDb2RlSW5wdXRDb21wb25lbnQpXG4gIHB1YmxpYyBjb2RlSW5wdXRDb21wb25lbnQ6IENvZGVJbnB1dENvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdHlwZTogVmVyaWZpY2F0aW9uTWV0aG9kVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVjaXBpZW50OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvZGVMZW5ndGg7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNvZGU7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjb2RlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY29kZUNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwdWJsaWMgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSA9IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZm9ybTogRnNGb3JtRGlyZWN0aXZlLFxuICApIHt9XG5cbiAgcHVibGljIGNvZGVDaGFuZ2UoY29kZSk6IHZvaWQge1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5jb2RlQ2hhbmdlZC5lbWl0KHRoaXMuY29kZSk7XG4gICAgdGhpcy5fZm9ybS5kaXJ0eSgpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuY29kZUlucHV0Q29tcG9uZW50LmZvY3VzKCk7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuU21zXCI+XG4gIDxwIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICBBIHRleHQgbWVzc2FnZSB3aXRoIGEgdmVyaWZpY2F0aW9uIGNvZGUgd2FzIGp1c3Qgc2VudCB0byA8c3BhbiBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXA7XCI+e3sgcmVjaXBpZW50IH19PC9zcGFuPiB0byB2ZXJpZnkgaXQncyB5b3UuXG4gIDwvcD5cblxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5FbWFpbFwiPlxuICA8cCBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgQW4gZW1haWwgd2l0aCBhIHZlcmlmaWNhdGlvbiBjb2RlIHdhcyBqdXN0IHNlbnQgdG8ge3sgcmVjaXBpZW50IH19IHRvIHZlcmlmeSBpdCdzIHlvdS5cbiAgPC9wPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5BcHBcIj5cbiAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgIEVudGVyIHRoZSB2ZXJpZmljYXRpb24gY29kZSBnZW5lcmF0ZWQgYnkgeW91ciAyIGZhY3RvciBhdXRoZW50aWNhdG9yIGFwcCB0byB2ZXJpZnkgaXQncyB5b3UuXG4gIDwvcD5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNpbnB1dD4gXG4gPGFwcC1jb2RlLWlucHV0ICBcbiAgICBbY29kZV09XCJjb2RlXCJcbiAgICBbY29kZUxlbmd0aF09XCJjb2RlTGVuZ3RoXCJcbiAgICAoY29kZUNoYW5nZWQpPVwiY29kZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAoY29kZUNvbXBsZXRlZCk9XCJjb2RlQ29tcGxldGVkLmVtaXQoKVwiPlxuICA8L2FwcC1jb2RlLWlucHV0PiBcbjwvbmctdGVtcGxhdGU+ICJdfQ==
|