@firestitch/2fa 12.11.7 → 13.0.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/modules/code-input/code-input.module.d.ts +4 -2
- package/esm2020/app/modules/code-input/code-input.module.mjs +38 -0
- package/esm2020/app/modules/code-input/components/code-input/code-input.component.mjs +37 -0
- package/esm2020/app/modules/defaulted/components/defaulted/defaulted.component.mjs +11 -0
- package/{esm2015/app/modules/defaulted/defaulted.module.js → esm2020/app/modules/defaulted/defaulted.module.mjs} +5 -5
- package/esm2020/app/modules/manage/components/2fa-manage/2fa-manage.component.mjs +98 -0
- package/esm2020/app/modules/manage/components/app/app.component.mjs +84 -0
- package/esm2020/app/modules/manage/components/email/email.component.mjs +79 -0
- package/esm2020/app/modules/manage/components/emails/emails.component.mjs +47 -0
- package/esm2020/app/modules/manage/components/manage-methods/manage-methods.component.mjs +125 -0
- package/esm2020/app/modules/manage/components/number/number.component.mjs +83 -0
- package/esm2020/app/modules/manage/components/numbers/numbers.component.mjs +48 -0
- package/esm2020/app/modules/manage/components/qr-code/qr-code.component.mjs +32 -0
- package/{esm2015/app/modules/manage/fs-2f-manage.module.js → esm2020/app/modules/manage/fs-2f-manage.module.mjs} +5 -5
- package/{esm2015/app/modules/manage/services/two-factor-manage.service.js → esm2020/app/modules/manage/services/two-factor-manage.service.mjs} +4 -4
- package/esm2020/app/modules/resend/components/resend/resend.component.mjs +35 -0
- package/{esm2015/app/modules/resend/resend.module.js → esm2020/app/modules/resend/resend.module.mjs} +5 -5
- package/esm2020/app/modules/verification/components/2fa-verification/2fa-verification.component.mjs +124 -0
- package/esm2020/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.mjs +57 -0
- package/esm2020/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.mjs +56 -0
- package/{esm2015/app/modules/verification/directives/2fa-verification-resend.directive.js → esm2020/app/modules/verification/directives/2fa-verification-resend.directive.mjs} +4 -4
- package/{esm2015/app/modules/verification/fs-2fa-verification.module.js → esm2020/app/modules/verification/fs-2fa-verification.module.mjs} +5 -5
- package/esm2020/app/modules/verification-methods/components/verification-methods/verification-methods.component.mjs +117 -0
- package/{esm2015/app/modules/verification-methods/fs-2f-verification-methods.module.js → esm2020/app/modules/verification-methods/fs-2f-verification-methods.module.mjs} +5 -5
- package/fesm2015/firestitch-2fa.mjs +1370 -0
- package/fesm2015/firestitch-2fa.mjs.map +1 -0
- package/fesm2020/firestitch-2fa.mjs +1356 -0
- package/fesm2020/firestitch-2fa.mjs.map +1 -0
- package/package.json +21 -8
- package/bundles/firestitch-2fa.umd.js +0 -1586
- package/bundles/firestitch-2fa.umd.js.map +0 -1
- package/esm2015/app/modules/code-input/code-input.module.js +0 -30
- package/esm2015/app/modules/code-input/components/code-input/code-input.component.js +0 -42
- package/esm2015/app/modules/defaulted/components/defaulted/defaulted.component.js +0 -16
- package/esm2015/app/modules/manage/components/2fa-manage/2fa-manage.component.js +0 -104
- package/esm2015/app/modules/manage/components/app/app.component.js +0 -88
- package/esm2015/app/modules/manage/components/email/email.component.js +0 -83
- package/esm2015/app/modules/manage/components/emails/emails.component.js +0 -50
- package/esm2015/app/modules/manage/components/manage-methods/manage-methods.component.js +0 -128
- package/esm2015/app/modules/manage/components/number/number.component.js +0 -87
- package/esm2015/app/modules/manage/components/numbers/numbers.component.js +0 -51
- package/esm2015/app/modules/manage/components/qr-code/qr-code.component.js +0 -37
- package/esm2015/app/modules/resend/components/resend/resend.component.js +0 -40
- package/esm2015/app/modules/verification/components/2fa-verification/2fa-verification.component.js +0 -130
- package/esm2015/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.js +0 -63
- package/esm2015/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.js +0 -61
- package/esm2015/app/modules/verification-methods/components/verification-methods/verification-methods.component.js +0 -121
- package/fesm2015/firestitch-2fa.js +0 -1421
- package/fesm2015/firestitch-2fa.js.map +0 -1
- /package/{esm2015/app/enums/index.js → esm2020/app/enums/index.mjs} +0 -0
- /package/{esm2015/app/enums/verification-method-type.enum.js → esm2020/app/enums/verification-method-type.enum.mjs} +0 -0
- /package/{esm2015/app/interfaces/index.js → esm2020/app/interfaces/index.mjs} +0 -0
- /package/{esm2015/app/interfaces/verification-method.interface.js → esm2020/app/interfaces/verification-method.interface.mjs} +0 -0
- /package/{esm2015/app/modules/code-input/components/code-input/index.js → esm2020/app/modules/code-input/components/code-input/index.mjs} +0 -0
- /package/{esm2015/app/modules/code-input/index.js → esm2020/app/modules/code-input/index.mjs} +0 -0
- /package/{esm2015/app/modules/defaulted/components/defaulted/index.js → esm2020/app/modules/defaulted/components/defaulted/index.mjs} +0 -0
- /package/{esm2015/app/modules/manage/components/2fa-manage/index.js → esm2020/app/modules/manage/components/2fa-manage/index.mjs} +0 -0
- /package/{esm2015/app/modules/manage/components/app/index.js → esm2020/app/modules/manage/components/app/index.mjs} +0 -0
- /package/{esm2015/app/modules/manage/components/email/index.js → esm2020/app/modules/manage/components/email/index.mjs} +0 -0
- /package/{esm2015/app/modules/manage/components/emails/index.js → esm2020/app/modules/manage/components/emails/index.mjs} +0 -0
- /package/{esm2015/app/modules/manage/components/manage-methods/index.js → esm2020/app/modules/manage/components/manage-methods/index.mjs} +0 -0
- /package/{esm2015/app/modules/manage/components/number/index.js → esm2020/app/modules/manage/components/number/index.mjs} +0 -0
- /package/{esm2015/app/modules/manage/components/numbers/index.js → esm2020/app/modules/manage/components/numbers/index.mjs} +0 -0
- /package/{esm2015/app/modules/manage/components/qr-code/index.js → esm2020/app/modules/manage/components/qr-code/index.mjs} +0 -0
- /package/{esm2015/app/modules/manage/services/index.js → esm2020/app/modules/manage/services/index.mjs} +0 -0
- /package/{esm2015/app/modules/resend/components/resend/index.js → esm2020/app/modules/resend/components/resend/index.mjs} +0 -0
- /package/{esm2015/app/modules/verification/directives/index.js → esm2020/app/modules/verification/directives/index.mjs} +0 -0
- /package/{esm2015/app/modules/verification-methods/components/verification-methods/index.js → esm2020/app/modules/verification-methods/components/verification-methods/index.mjs} +0 -0
- /package/{esm2015/app/modules/verification-methods/index.js → esm2020/app/modules/verification-methods/index.mjs} +0 -0
- /package/{esm2015/firestitch-2fa.js → esm2020/firestitch-2fa.mjs} +0 -0
- /package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
|
@@ -1,63 +0,0 @@
|
|
|
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: "12.2.16", ngImport: i0, type: Fs2faVerificationCodeComponent, deps: [{ token: i1.FsFormDirective }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
-
Fs2faVerificationCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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: "12.2.16", ngImport: i0, type: Fs2faVerificationCodeComponent, decorators: [{
|
|
34
|
-
type: Component,
|
|
35
|
-
args: [{
|
|
36
|
-
selector: 'fs-2fa-verification-code',
|
|
37
|
-
templateUrl: './2fa-verification-code.component.html',
|
|
38
|
-
styleUrls: ['./2fa-verification-code.component.scss'],
|
|
39
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
40
|
-
viewProviders: [
|
|
41
|
-
{
|
|
42
|
-
provide: ControlContainer,
|
|
43
|
-
useExisting: NgForm,
|
|
44
|
-
},
|
|
45
|
-
],
|
|
46
|
-
}]
|
|
47
|
-
}], ctorParameters: function () { return [{ type: i1.FsFormDirective }]; }, propDecorators: { codeInputComponent: [{
|
|
48
|
-
type: ViewChild,
|
|
49
|
-
args: [CodeInputComponent]
|
|
50
|
-
}], type: [{
|
|
51
|
-
type: Input
|
|
52
|
-
}], recipient: [{
|
|
53
|
-
type: Input
|
|
54
|
-
}], codeLength: [{
|
|
55
|
-
type: Input
|
|
56
|
-
}], code: [{
|
|
57
|
-
type: Input
|
|
58
|
-
}], codeChanged: [{
|
|
59
|
-
type: Output
|
|
60
|
-
}], codeCompleted: [{
|
|
61
|
-
type: Output
|
|
62
|
-
}] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLWNvZGUvMmZhLXZlcmlmaWNhdGlvbi1jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7OztBQWV6RixNQUFNLE9BQU8sOEJBQThCO0lBeUJ6QyxZQUNVLEtBQXNCO1FBQXRCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBUnpCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd6QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFekMsMkJBQXNCLEdBQUcsc0JBQXNCLENBQUM7SUFJcEQsQ0FBQztJQUVHLFVBQVUsQ0FBQyxJQUFJO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUM7OzRIQXJDVSw4QkFBOEI7Z0hBQTlCLDhCQUE4Qix1UkFFOUIsa0JBQWtCLGdEQzlCL0IsMGtDQTZCZSw0bkJEUkU7UUFDYjtZQUNFLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsV0FBVyxFQUFFLE1BQU07U0FDcEI7S0FDRjs0RkFFVSw4QkFBOEI7a0JBWjFDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsV0FBVyxFQUFFLHdDQUF3QztvQkFDckQsU0FBUyxFQUFFLENBQUMsd0NBQXdDLENBQUM7b0JBQ3JELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUU7d0JBQ2I7NEJBQ0UsT0FBTyxFQUFFLGdCQUFnQjs0QkFDekIsV0FBVyxFQUFFLE1BQU07eUJBQ3BCO3FCQUNGO2lCQUNGO3NHQUlRLGtCQUFrQjtzQkFEeEIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSXRCLElBQUk7c0JBRFYsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsTUFBTTtnQkFJQSxhQUFhO3NCQURuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcblxuaW1wb3J0IHsgQ29kZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kdWxlcy9jb2RlLWlucHV0L2NvbXBvbmVudHMvY29kZS1pbnB1dCc7XG5pbXBvcnQgeyBWZXJpZmljYXRpb25NZXRob2RUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bXMvdmVyaWZpY2F0aW9uLW1ldGhvZC10eXBlLmVudW0nO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLTJmYS12ZXJpZmljYXRpb24tY29kZScsXG4gIHRlbXBsYXRlVXJsOiAnLi8yZmEtdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi8yZmEtdmVyaWZpY2F0aW9uLWNvZGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgdXNlRXhpc3Rpbmc6IE5nRm9ybSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGczJmYVZlcmlmaWNhdGlvbkNvZGVDb21wb25lbnQge1xuXG4gIEBWaWV3Q2hpbGQoQ29kZUlucHV0Q29tcG9uZW50KVxuICBwdWJsaWMgY29kZUlucHV0Q29tcG9uZW50OiBDb2RlSW5wdXRDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHR5cGU6IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlY2lwaWVudDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb2RlTGVuZ3RoO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb2RlO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY29kZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNvZGVDb21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHVibGljIFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUgPSBWZXJpZmljYXRpb25NZXRob2RUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2Zvcm06IEZzRm9ybURpcmVjdGl2ZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBjb2RlQ2hhbmdlKGNvZGUpOiB2b2lkIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgIHRoaXMuY29kZUNoYW5nZWQuZW1pdCh0aGlzLmNvZGUpO1xuICAgIHRoaXMuX2Zvcm0uZGlydHkoKTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmNvZGVJbnB1dENvbXBvbmVudC5mb2N1cygpO1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSBWZXJpZmljYXRpb25NZXRob2RUeXBlLlNtc1wiPlxuICA8cCBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgQSB0ZXh0IG1lc3NhZ2Ugd2l0aCBhIHZlcmlmaWNhdGlvbiBjb2RlIHdhcyBqdXN0IHNlbnQgdG8gPHNwYW4gc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwO1wiPnt7IHJlY2lwaWVudCB9fTwvc3Bhbj4gdG8gdmVyaWZ5IGl0J3MgeW91LlxuICA8L3A+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuRW1haWxcIj5cbiAgPHAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgIEFuIGVtYWlsIHdpdGggYSB2ZXJpZmljYXRpb24gY29kZSB3YXMganVzdCBzZW50IHRvIHt7IHJlY2lwaWVudCB9fSB0byB2ZXJpZnkgaXQncyB5b3UuXG4gIDwvcD5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuQXBwXCI+XG4gIDxwIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICBFbnRlciB0aGUgdmVyaWZpY2F0aW9uIGNvZGUgZ2VuZXJhdGVkIGJ5IHlvdXIgMiBmYWN0b3IgYXV0aGVudGljYXRvciBhcHAgdG8gdmVyaWZ5IGl0J3MgeW91LlxuICA8L3A+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXQ+IFxuIDxhcHAtY29kZS1pbnB1dCAgXG4gICAgW2NvZGVdPVwiY29kZVwiXG4gICAgW2NvZGVMZW5ndGhdPVwiY29kZUxlbmd0aFwiXG4gICAgKGNvZGVDaGFuZ2VkKT1cImNvZGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGNvZGVDb21wbGV0ZWQpPVwiY29kZUNvbXBsZXRlZC5lbWl0KClcIj5cbiAgPC9hcHAtY29kZS1pbnB1dD4gXG48L25nLXRlbXBsYXRlPiAiXX0=
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Inject, } from '@angular/core';
|
|
2
|
-
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
3
|
-
import { tap } from 'rxjs/operators';
|
|
4
|
-
import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/material/dialog";
|
|
7
|
-
import * as i2 from "@firestitch/dialog";
|
|
8
|
-
import * as i3 from "@firestitch/radiogroup";
|
|
9
|
-
import * as i4 from "@angular/material/icon";
|
|
10
|
-
import * as i5 from "@angular/material/radio";
|
|
11
|
-
import * as i6 from "@angular/material/button";
|
|
12
|
-
import * as i7 from "@angular/forms";
|
|
13
|
-
import * as i8 from "@firestitch/form";
|
|
14
|
-
import * as i9 from "@angular/common";
|
|
15
|
-
export class Fs2faVerificationMethodsComponent {
|
|
16
|
-
constructor(_dialogData, _dialogRef) {
|
|
17
|
-
this._dialogData = _dialogData;
|
|
18
|
-
this._dialogRef = _dialogRef;
|
|
19
|
-
this.verificationMethodType = VerificationMethodType;
|
|
20
|
-
this.setVerificationMethod = () => {
|
|
21
|
-
return this._selectVerificationMethod(this.verificationMethod)
|
|
22
|
-
.pipe(tap((method) => {
|
|
23
|
-
this._dialogRef.close(method);
|
|
24
|
-
}));
|
|
25
|
-
};
|
|
26
|
-
this._selectVerificationMethod = _dialogData.selectVerificationMethod;
|
|
27
|
-
this._setActiveMethod();
|
|
28
|
-
this._initMethods(_dialogData.verificationMethods);
|
|
29
|
-
}
|
|
30
|
-
compareWith(o1, o2) {
|
|
31
|
-
return o1 && o2 && o1.id === o2.id;
|
|
32
|
-
}
|
|
33
|
-
_setActiveMethod() {
|
|
34
|
-
var _a;
|
|
35
|
-
this.verificationMethod = (_a = this._dialogData) === null || _a === void 0 ? void 0 : _a.verificationMethod;
|
|
36
|
-
}
|
|
37
|
-
_initMethods(verificationMethods) {
|
|
38
|
-
this.verificationMethods = verificationMethods
|
|
39
|
-
.reduce((acc, method) => {
|
|
40
|
-
if (!acc[method.type]) {
|
|
41
|
-
acc[method.type] = [];
|
|
42
|
-
}
|
|
43
|
-
acc[method.type].push(method);
|
|
44
|
-
return acc;
|
|
45
|
-
}, {});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
Fs2faVerificationMethodsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2faVerificationMethodsComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
-
Fs2faVerificationMethodsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: Fs2faVerificationMethodsComponent, selector: "ng-component", ngImport: i0, template: "<fs-dialog>\n <h1 mat-dialog-title>\n Verification Methods\n </h1>\n <form fsForm [submit]=\"setVerificationMethod\" [dirtySubmitButton]=\"false\">\n <mat-dialog-content>\n <ng-container>\n <fs-radio-group [(ngModel)]=\"verificationMethod\" name=\"method\" [compareWith]=\"compareWith\">\n <ng-container *ngFor=\"let methodMap of verificationMethods | keyvalue\">\n <div class=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n textsms\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Text Message</div>\n <div class=\"method-subtitle\">\n Send verification code to a mobile number\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n mail\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Email</div>\n <div class=\"method-subtitle\">\n Send verification code to an email address\n </div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"verificationMethodType.App\">\n <div class=\"method-header\">\n <div class=\"method-icon\">\n <mat-icon>\n phone_iphone\n </mat-icon>\n </div>\n <div class=\"method-name\">\n <div class=\"method-title\">Authenticator App</div>\n <div class=\"method-subtitle\">\n Send verification code to your authenticator app\n </div>\n </div>\n </div>\n </ng-container> \n </ng-container>\n\n <mat-radio-button class=\"method-item\" *ngFor=\"let method of methodMap.value\" [value]=\"method\">\n <ng-container [ngSwitch]=\"methodMap.key\">\n <ng-container *ngSwitchCase=\"verificationMethodType.Sms\">\n {{ method.phoneNumber }}\n </ng-container>\n <ng-container *ngSwitchCase=\"verificationMethodType.Email\">\n {{ method.email }}\n </ng-container>\n <ng-container *ngSwitchCase=\"verificationMethodType.App\">\n Authenticator App\n </ng-container> \n </ng-container>\n </mat-radio-button>\n </div>\n </ng-container>\n </fs-radio-group>\n </ng-container>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"actions\">\n <button mat-button type=\"submit\" color=\"primary\">Next</button>\n <button mat-button type=\"button\" [mat-dialog-close]=\"null\">Cancel</button>\n </div>\n </mat-dialog-actions>\n </form>\n</fs-dialog>\n", styles: [".method{display:block;margin-bottom:20px}.method .method-header{display:flex;align-items:flex-start}.method .method-header .method-name{margin-left:10px}.method .method-header .method-name .method-title{font-size:14px;font-weight:400}.method .method-header .method-name .method-subtitle{font-size:12px;color:#a3a3a3}.method .method-item{display:block;margin:10px 0 0 35px}\n"], components: [{ type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode"] }, { type: i3.FsRadioGroupComponent, selector: "fs-radio-group", inputs: ["orientation", "label", "name", "disabled", "radioPosition", "compareWith", "required"] }, { type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i5.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i8.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.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])" }, { type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i9.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i9.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i8.FsSubmitButtonDirective, selector: "button[type=\"submit\"]", inputs: ["name", "dirtySubmit"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["type", "mat-dialog-close", "aria-label", "matDialogClose"], exportAs: ["matDialogClose"] }], pipes: { "keyvalue": i9.KeyValuePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: Fs2faVerificationMethodsComponent, decorators: [{
|
|
51
|
-
type: Component,
|
|
52
|
-
args: [{
|
|
53
|
-
templateUrl: './2fa-verification-methods.component.html',
|
|
54
|
-
styleUrls: ['./2fa-verification-methods.component.scss'],
|
|
55
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
56
|
-
}]
|
|
57
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
58
|
-
type: Inject,
|
|
59
|
-
args: [MAT_DIALOG_DATA]
|
|
60
|
-
}] }, { type: i1.MatDialogRef }]; } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHMvMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy92ZXJpZmljYXRpb24vY29tcG9uZW50cy8yZmEtdmVyaWZpY2F0aW9uLW1ldGhvZHMvMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7Ozs7Ozs7Ozs7QUFTekYsTUFBTSxPQUFPLGlDQUFpQztJQVU1QyxZQUVVLFdBQWdCLEVBQ2hCLFVBQTJEO1FBRDNELGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBQ2hCLGVBQVUsR0FBVixVQUFVLENBQWlEO1FBUHJELDJCQUFzQixHQUFHLHNCQUFzQixDQUFDO1FBa0J6RCwwQkFBcUIsR0FBRyxHQUFHLEVBQUU7WUFDbEMsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2lCQUMzRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsTUFBNkIsRUFBRSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ04sQ0FBQyxDQUFDO1FBaEJBLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxXQUFXLENBQUMsd0JBQXdCLENBQUM7UUFDdEUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFO1FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUE7SUFDcEMsQ0FBQztJQVdPLGdCQUFnQjs7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQUEsSUFBSSxDQUFDLFdBQVcsMENBQUUsa0JBQWtCLENBQUM7SUFDakUsQ0FBQztJQUVPLFlBQVksQ0FBQyxtQkFBbUI7UUFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQjthQUMzQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2FBQ3ZCO1lBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFOUIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDOzsrSEFoRFUsaUNBQWlDLGtCQVdsQyxlQUFlO21IQVhkLGlDQUFpQyxvRENwQjlDLDJtSEFzRkE7NEZEbEVhLGlDQUFpQztrQkFMN0MsU0FBUzttQkFBQztvQkFDVCxXQUFXLEVBQUUsMkNBQTJDO29CQUN4RCxTQUFTLEVBQUUsQ0FBQywyQ0FBMkMsQ0FBQztvQkFDeEQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzswQkFZSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zL3ZlcmlmaWNhdGlvbi1tZXRob2QtdHlwZS5lbnVtJztcbmltcG9ydCB7IElGc1ZlcmlmaWNhdGlvbk1ldGhvZCB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvdmVyaWZpY2F0aW9uLW1ldGhvZC5pbnRlcmZhY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vMmZhLXZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGczJmYVZlcmlmaWNhdGlvbk1ldGhvZHNDb21wb25lbnQge1xuXG4gIHB1YmxpYyB2ZXJpZmljYXRpb25NZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZDtcbiAgcHVibGljIHBob25lOiBzdHJpbmc7XG4gIHB1YmxpYyBjb2RlOiBzdHJpbmc7XG4gIHB1YmxpYyB2ZXJpZmljYXRpb25NZXRob2RzOiBSZWNvcmQ8c3RyaW5nLCBJRnNWZXJpZmljYXRpb25NZXRob2RbXT47XG4gIHB1YmxpYyByZWFkb25seSB2ZXJpZmljYXRpb25NZXRob2RUeXBlID0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZTtcblxuICBwcml2YXRlIF9zZWxlY3RWZXJpZmljYXRpb25NZXRob2Q6IChJRnNWZXJpZmljYXRpb25NZXRob2QpID0+IE9ic2VydmFibGU8SUZzVmVyaWZpY2F0aW9uTWV0aG9kPjsgIFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxuICAgIHByaXZhdGUgX2RpYWxvZ0RhdGE6IGFueSxcbiAgICBwcml2YXRlIF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxGczJmYVZlcmlmaWNhdGlvbk1ldGhvZHNDb21wb25lbnQ+LFxuICApIHtcbiAgICB0aGlzLl9zZWxlY3RWZXJpZmljYXRpb25NZXRob2QgPSBfZGlhbG9nRGF0YS5zZWxlY3RWZXJpZmljYXRpb25NZXRob2Q7XG4gICAgdGhpcy5fc2V0QWN0aXZlTWV0aG9kKCk7XG4gICAgdGhpcy5faW5pdE1ldGhvZHMoX2RpYWxvZ0RhdGEudmVyaWZpY2F0aW9uTWV0aG9kcyk7XG4gIH1cblxuICBwdWJsaWMgY29tcGFyZVdpdGgobzEsIG8yKSB7XG4gICAgcmV0dXJuIG8xICYmIG8yICYmIG8xLmlkID09PSBvMi5pZFxuICB9XG5cbiAgcHVibGljIHNldFZlcmlmaWNhdGlvbk1ldGhvZCA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0VmVyaWZpY2F0aW9uTWV0aG9kKHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgobWV0aG9kOiBJRnNWZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UobWV0aG9kKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfc2V0QWN0aXZlTWV0aG9kKCk6IHZvaWQge1xuICAgIHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kID0gdGhpcy5fZGlhbG9nRGF0YT8udmVyaWZpY2F0aW9uTWV0aG9kO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdE1ldGhvZHModmVyaWZpY2F0aW9uTWV0aG9kcyk6IHZvaWQge1xuICAgIHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kcyA9IHZlcmlmaWNhdGlvbk1ldGhvZHNcbiAgICAgIC5yZWR1Y2UoKGFjYywgbWV0aG9kKSA9PiB7XG4gICAgICAgIGlmICghYWNjW21ldGhvZC50eXBlXSkge1xuICAgICAgICAgIGFjY1ttZXRob2QudHlwZV0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFjY1ttZXRob2QudHlwZV0ucHVzaChtZXRob2QpO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSk7XG4gIH1cbn1cbiIsIjxmcy1kaWFsb2c+XG4gIDxoMSBtYXQtZGlhbG9nLXRpdGxlPlxuICAgIFZlcmlmaWNhdGlvbiBNZXRob2RzXG4gIDwvaDE+XG4gIDxmb3JtIGZzRm9ybSBbc3VibWl0XT1cInNldFZlcmlmaWNhdGlvbk1ldGhvZFwiIFtkaXJ0eVN1Ym1pdEJ1dHRvbl09XCJmYWxzZVwiPlxuICAgIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8ZnMtcmFkaW8tZ3JvdXAgWyhuZ01vZGVsKV09XCJ2ZXJpZmljYXRpb25NZXRob2RcIiBuYW1lPVwibWV0aG9kXCIgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVXaXRoXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWV0aG9kTWFwIG9mIHZlcmlmaWNhdGlvbk1ldGhvZHMgfCBrZXl2YWx1ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtZXRob2RNYXAua2V5XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5TbXNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2QtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2QtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzbXNcbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZC1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1ldGhvZC10aXRsZVwiPlRleHQgTWVzc2FnZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2Qtc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQgdmVyaWZpY2F0aW9uIGNvZGUgdG8gYSBtb2JpbGUgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ2ZXJpZmljYXRpb25NZXRob2RUeXBlLkVtYWlsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYWlsXG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2QtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2QtdGl0bGVcIj5FbWFpbDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2Qtc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQgdmVyaWZpY2F0aW9uIGNvZGUgdG8gYW4gZW1haWwgYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5BcHBcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2QtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRob2QtaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lX2lwaG9uZVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kLXRpdGxlXCI+QXV0aGVudGljYXRvciBBcHA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0aG9kLXN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZW5kIHZlcmlmaWNhdGlvbiBjb2RlIHRvIHlvdXIgYXV0aGVudGljYXRvciBhcHBcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwibWV0aG9kLWl0ZW1cIiAqbmdGb3I9XCJsZXQgbWV0aG9kIG9mIG1ldGhvZE1hcC52YWx1ZVwiIFt2YWx1ZV09XCJtZXRob2RcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtZXRob2RNYXAua2V5XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJ2ZXJpZmljYXRpb25NZXRob2RUeXBlLlNtc1wiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtZXRob2QucGhvbmVOdW1iZXIgfX1cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5FbWFpbFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtZXRob2QuZW1haWwgfX1cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5BcHBcIj5cbiAgICAgICAgICAgICAgICAgICAgQXV0aGVudGljYXRvciBBcHBcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZnMtcmFkaW8tZ3JvdXA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIj5OZXh0PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDwvZm9ybT5cbjwvZnMtZGlhbG9nPlxuIl19
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, Input, ViewChild, Output, EventEmitter, } from '@angular/core';
|
|
2
|
-
import { FsListComponent } from '@firestitch/list';
|
|
3
|
-
import { FsPrompt } from '@firestitch/prompt';
|
|
4
|
-
import { map, switchMap } from 'rxjs/operators';
|
|
5
|
-
import { VerificationMethodType } from '../../../../enums';
|
|
6
|
-
import { TwoFactorManageService } from '../../../manage/services';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@firestitch/prompt";
|
|
9
|
-
import * as i2 from "@firestitch/list";
|
|
10
|
-
import * as i3 from "@angular/material/icon";
|
|
11
|
-
import * as i4 from "@firestitch/country";
|
|
12
|
-
import * as i5 from "../../../defaulted/components/defaulted/defaulted.component";
|
|
13
|
-
import * as i6 from "@angular/common";
|
|
14
|
-
import * as i7 from "@firestitch/phone";
|
|
15
|
-
export class VerificationMethodsComponent {
|
|
16
|
-
constructor(_prompt) {
|
|
17
|
-
this._prompt = _prompt;
|
|
18
|
-
this.deleted = new EventEmitter();
|
|
19
|
-
this.VerificationMethodType = VerificationMethodType;
|
|
20
|
-
}
|
|
21
|
-
ngOnInit() {
|
|
22
|
-
var _a, _b, _c, _d;
|
|
23
|
-
if (!this.verificationMethodDefault && ((_a = this.twoFactorManageService) === null || _a === void 0 ? void 0 : _a.hasVerificationMethodDefault)) {
|
|
24
|
-
this.verificationMethodDefault = (verificationMethod) => {
|
|
25
|
-
return this.twoFactorManageService.verificationMethodDefault$(verificationMethod);
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
if (!this.verificationMethodDelete && ((_b = this.twoFactorManageService) === null || _b === void 0 ? void 0 : _b.hasVerificationMethodDelete)) {
|
|
29
|
-
this.verificationMethodDelete = (verificationMethod) => {
|
|
30
|
-
return this.twoFactorManageService.verificationMethodDelete$(verificationMethod);
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
if (!this.verificationMethodsFetch && ((_c = this.twoFactorManageService) === null || _c === void 0 ? void 0 : _c.hasVerificationMethodsFetch)) {
|
|
34
|
-
this.verificationMethodsFetch = (query) => {
|
|
35
|
-
return this.twoFactorManageService.verificationMethodsFetch$(query);
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
if (!this.accountVerify && ((_d = this.twoFactorManageService) === null || _d === void 0 ? void 0 : _d.hasVerificationMethodVerify)) {
|
|
39
|
-
this.accountVerify = () => {
|
|
40
|
-
var _a;
|
|
41
|
-
return (_a = this.twoFactorManageService) === null || _a === void 0 ? void 0 : _a.accountVerify$();
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
this.listConfig = {
|
|
45
|
-
paging: false,
|
|
46
|
-
rowActions: [
|
|
47
|
-
{
|
|
48
|
-
click: (verificationMethod) => {
|
|
49
|
-
this.accountVerify()
|
|
50
|
-
.pipe(switchMap(() => this.verificationMethodDefault(verificationMethod)))
|
|
51
|
-
.subscribe(() => {
|
|
52
|
-
this.list.reload();
|
|
53
|
-
});
|
|
54
|
-
},
|
|
55
|
-
show: (data) => {
|
|
56
|
-
return !!this.verificationMethodDefault && !data.default;
|
|
57
|
-
},
|
|
58
|
-
label: 'Set as Default',
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
click: (verificationMethod) => {
|
|
62
|
-
this._prompt.confirm({
|
|
63
|
-
title: 'Confirm',
|
|
64
|
-
template: 'Would you like to delete this verification method?',
|
|
65
|
-
})
|
|
66
|
-
.pipe(switchMap(() => this.accountVerify()), switchMap(() => this.verificationMethodDelete(verificationMethod)))
|
|
67
|
-
.subscribe(() => {
|
|
68
|
-
this.deleted.emit();
|
|
69
|
-
this.list.reload();
|
|
70
|
-
});
|
|
71
|
-
},
|
|
72
|
-
show: () => {
|
|
73
|
-
return !!this.verificationMethodDelete;
|
|
74
|
-
},
|
|
75
|
-
label: 'Delete',
|
|
76
|
-
},
|
|
77
|
-
],
|
|
78
|
-
fetch: (query) => {
|
|
79
|
-
query = Object.assign(Object.assign({}, query), { type: this.type });
|
|
80
|
-
return this.verificationMethodsFetch(query)
|
|
81
|
-
.pipe(map((verificationMethods) => ({
|
|
82
|
-
data: verificationMethods.filter((verificationMethod) => {
|
|
83
|
-
return !this.type || verificationMethod.type === this.type;
|
|
84
|
-
}),
|
|
85
|
-
})));
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
reload() {
|
|
90
|
-
this.list.reload();
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
VerificationMethodsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: VerificationMethodsComponent, deps: [{ token: i1.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
|
|
94
|
-
VerificationMethodsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: VerificationMethodsComponent, selector: "fs-2fa-verification-methods", inputs: { type: "type", accountVerify: "accountVerify", verificationMethodsFetch: "verificationMethodsFetch", verificationMethodDelete: "verificationMethodDelete", verificationMethodDefault: "verificationMethodDefault", twoFactorManageService: "twoFactorManageService" }, outputs: { deleted: "deleted" }, viewQueries: [{ propertyName: "list", first: true, predicate: FsListComponent, descendants: true }], ngImport: i0, template: "<fs-list [config]=\"listConfig\">\n <fs-list-column class=\"col-icon\" width=\"1%\">\n <ng-template fs-list-cell let-row=\"row\">\n <ng-container *ngIf=\"row.type === VerificationMethodType.Sms\">\n <mat-icon>textsms</mat-icon>\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.Email\">\n <mat-icon>email</mat-icon>\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.App\">\n <mat-icon>phone_iphone</mat-icon>\n </ng-container>\n </ng-template>\n </fs-list-column>\n <fs-list-column class=\"col-name\">\n <ng-template fs-list-cell let-row=\"row\">\n <div class=\"row\">\n <ng-container *ngIf=\"row.type === VerificationMethodType.Sms\">\n <div class=\"row\">\n <fs-country [code]=\"row.phoneCountry\" [showName]=\"false\"></fs-country> \n <span>{{row.phoneNumber | fsPhone}}</span>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.Email\">\n {{row.email}}\n </ng-container>\n\n <ng-container *ngIf=\"row.type === VerificationMethodType.App\">\n App\n </ng-container>\n\n <app-defaulted *ngIf=\"row.default\"></app-defaulted>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>", styles: [":host ::ng-deep .col-name .row{display:flex;align-items:center}:host ::ng-deep .col-name fs-country img{display:flex}fs-country{margin-right:5px}app-defaulted{margin-left:5px}\n"], components: [{ type: i2.FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.FsCountryComponent, selector: "fs-country", inputs: ["code", "showIcon", "showName", "region", "width"] }, { type: i5.DefaultedComponent, selector: "app-defaulted" }], directives: [{ type: i2.FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customize", "sortable", "sortableDefault", "direction", "align", "width", "class"] }, { type: i2.FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "fsPhone": i7.FsPhonePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
95
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: VerificationMethodsComponent, decorators: [{
|
|
96
|
-
type: Component,
|
|
97
|
-
args: [{
|
|
98
|
-
selector: 'fs-2fa-verification-methods',
|
|
99
|
-
templateUrl: './verification-methods.component.html',
|
|
100
|
-
styleUrls: ['./verification-methods.component.scss'],
|
|
101
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
102
|
-
}]
|
|
103
|
-
}], ctorParameters: function () { return [{ type: i1.FsPrompt }]; }, propDecorators: { list: [{
|
|
104
|
-
type: ViewChild,
|
|
105
|
-
args: [FsListComponent]
|
|
106
|
-
}], type: [{
|
|
107
|
-
type: Input
|
|
108
|
-
}], accountVerify: [{
|
|
109
|
-
type: Input
|
|
110
|
-
}], verificationMethodsFetch: [{
|
|
111
|
-
type: Input
|
|
112
|
-
}], verificationMethodDelete: [{
|
|
113
|
-
type: Input
|
|
114
|
-
}], verificationMethodDefault: [{
|
|
115
|
-
type: Input
|
|
116
|
-
}], twoFactorManageService: [{
|
|
117
|
-
type: Input
|
|
118
|
-
}], deleted: [{
|
|
119
|
-
type: Output
|
|
120
|
-
}] } });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZpY2F0aW9uLW1ldGhvZHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3ZlcmlmaWNhdGlvbi1tZXRob2RzL2NvbXBvbmVudHMvdmVyaWZpY2F0aW9uLW1ldGhvZHMvdmVyaWZpY2F0aW9uLW1ldGhvZHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3ZlcmlmaWNhdGlvbi1tZXRob2RzL2NvbXBvbmVudHMvdmVyaWZpY2F0aW9uLW1ldGhvZHMvdmVyaWZpY2F0aW9uLW1ldGhvZHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSx1QkFBdUIsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEdBQ25GLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJaEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQVNsRSxNQUFNLE9BQU8sNEJBQTRCO0lBaUJ2QyxZQUNVLE9BQWlCO1FBQWpCLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFOVixZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd2QywyQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztJQUlwRCxDQUFDO0lBRUcsUUFBUTs7UUFDYixJQUFHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixLQUFJLE1BQUEsSUFBSSxDQUFDLHNC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XG4gIENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGc0xpc3RDb21wb25lbnQsIEZzTGlzdENvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL2xpc3QnO1xuaW1wb3J0IHsgRnNQcm9tcHQgfSBmcm9tICdAZmlyZXN0aXRjaC9wcm9tcHQnO1xuXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IElGc1ZlcmlmaWNhdGlvbk1ldGhvZCB9IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9tYW5hZ2Uvc2VydmljZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLTJmYS12ZXJpZmljYXRpb24tbWV0aG9kcycsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJpZmljYXRpb24tbWV0aG9kcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcmlmaWNhdGlvbi1tZXRob2RzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBWZXJpZmljYXRpb25NZXRob2RzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBAVmlld0NoaWxkKEZzTGlzdENvbXBvbmVudClcbiAgcHVibGljIGxpc3Q6IEZzTGlzdENvbXBvbmVudDtcblxuICBASW5wdXQoKSBwdWJsaWMgdHlwZTogVmVyaWZpY2F0aW9uTWV0aG9kVHlwZTtcbiAgQElucHV0KCkgcHVibGljIGFjY291bnRWZXJpZnk6ICgpID0+IE9ic2VydmFibGU8YW55PjtcbiAgQElucHV0KCkgcHVibGljIHZlcmlmaWNhdGlvbk1ldGhvZHNGZXRjaDogKHF1ZXJ5OiBhbnkpID0+IE9ic2VydmFibGU8SUZzVmVyaWZpY2F0aW9uTWV0aG9kW10+O1xuICBASW5wdXQoKSBwdWJsaWMgdmVyaWZpY2F0aW9uTWV0aG9kRGVsZXRlOiAodmVyaWZpY2F0aW9uTWV0aG9kOiBJRnNWZXJpZmljYXRpb25NZXRob2QpID0+IE9ic2VydmFibGU8YW55PjtcbiAgQElucHV0KCkgcHVibGljIHZlcmlmaWNhdGlvbk1ldGhvZERlZmF1bHQ6ICh2ZXJpZmljYXRpb25NZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZCkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuICBASW5wdXQoKSBwdWJsaWMgdHdvRmFjdG9yTWFuYWdlU2VydmljZTogVHdvRmFjdG9yTWFuYWdlU2VydmljZTtcblxuICBAT3V0cHV0KCkgcHVibGljIGRlbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIFxuICBwdWJsaWMgbGlzdENvbmZpZzogRnNMaXN0Q29uZmlnO1xuICBwdWJsaWMgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSA9IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfcHJvbXB0OiBGc1Byb21wdCxcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZighdGhpcy52ZXJpZmljYXRpb25NZXRob2REZWZhdWx0ICYmIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZT8uaGFzVmVyaWZpY2F0aW9uTWV0aG9kRGVmYXVsdCkge1xuICAgICAgdGhpcy52ZXJpZmljYXRpb25NZXRob2REZWZhdWx0ID0gKHZlcmlmaWNhdGlvbk1ldGhvZDogSUZzVmVyaWZpY2F0aW9uTWV0aG9kKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kRGVmYXVsdCQodmVyaWZpY2F0aW9uTWV0aG9kKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgaWYoIXRoaXMudmVyaWZpY2F0aW9uTWV0aG9kRGVsZXRlICYmIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZT8uaGFzVmVyaWZpY2F0aW9uTWV0aG9kRGVsZXRlKSB7XG4gICAgICB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZERlbGV0ZSA9ICh2ZXJpZmljYXRpb25NZXRob2Q6IElGc1ZlcmlmaWNhdGlvbk1ldGhvZCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLnZlcmlmaWNhdGlvbk1ldGhvZERlbGV0ZSQodmVyaWZpY2F0aW9uTWV0aG9kKTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgaWYoIXRoaXMudmVyaWZpY2F0aW9uTWV0aG9kc0ZldGNoICYmIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZT8uaGFzVmVyaWZpY2F0aW9uTWV0aG9kc0ZldGNoKSB7XG4gICAgICB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZHNGZXRjaCA9ICAocXVlcnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS52ZXJpZmljYXRpb25NZXRob2RzRmV0Y2gkKHF1ZXJ5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgaWYoIXRoaXMuYWNjb3VudFZlcmlmeSAmJiB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U/Lmhhc1ZlcmlmaWNhdGlvbk1ldGhvZFZlcmlmeSkge1xuICAgICAgdGhpcy5hY2NvdW50VmVyaWZ5ID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlPy5hY2NvdW50VmVyaWZ5JCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGlzdENvbmZpZyA9IHtcbiAgICAgIHBhZ2luZzogZmFsc2UsXG4gICAgICByb3dBY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGljazogKHZlcmlmaWNhdGlvbk1ldGhvZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY2NvdW50VmVyaWZ5KClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kRGVmYXVsdCh2ZXJpZmljYXRpb25NZXRob2QpKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2hvdzogKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhIXRoaXMudmVyaWZpY2F0aW9uTWV0aG9kRGVmYXVsdCAmJiAhZGF0YS5kZWZhdWx0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbGFiZWw6ICdTZXQgYXMgRGVmYXVsdCcsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGljazogKHZlcmlmaWNhdGlvbk1ldGhvZCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcHJvbXB0LmNvbmZpcm0oe1xuICAgICAgICAgICAgICB0aXRsZTogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgICB0ZW1wbGF0ZTogJ1dvdWxkIHlvdSBsaWtlIHRvIGRlbGV0ZSB0aGlzIHZlcmlmaWNhdGlvbiBtZXRob2Q/JyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmFjY291bnRWZXJpZnkoKSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kRGVsZXRlKHZlcmlmaWNhdGlvbk1ldGhvZCkpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0LnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNob3c6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhIXRoaXMudmVyaWZpY2F0aW9uTWV0aG9kRGVsZXRlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgbGFiZWw6ICdEZWxldGUnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGZldGNoOiAocXVlcnkpID0+IHtcbiAgICAgICAgcXVlcnkgPSB7XG4gICAgICAgICAgLi4ucXVlcnksXG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZHNGZXRjaChxdWVyeSkgXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHZlcmlmaWNhdGlvbk1ldGhvZHMpID0+ICh7XG4gICAgICAgICAgICAgIGRhdGE6IHZlcmlmaWNhdGlvbk1ldGhvZHMuZmlsdGVyKCh2ZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMudHlwZSB8fCB2ZXJpZmljYXRpb25NZXRob2QudHlwZSA9PT0gdGhpcy50eXBlO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHJlbG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gIH1cbn1cbiIsIjxmcy1saXN0IFtjb25maWddPVwibGlzdENvbmZpZ1wiPlxuICA8ZnMtbGlzdC1jb2x1bW4gY2xhc3M9XCJjb2wtaWNvblwiIHdpZHRoPVwiMSVcIj5cbiAgICA8bmctdGVtcGxhdGUgZnMtbGlzdC1jZWxsIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cudHlwZSA9PT0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5TbXNcIj5cbiAgICAgICAgPG1hdC1pY29uPnRleHRzbXM8L21hdC1pY29uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cudHlwZSA9PT0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5FbWFpbFwiPlxuICAgICAgICA8bWF0LWljb24+ZW1haWw8L21hdC1pY29uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cudHlwZSA9PT0gVmVyaWZpY2F0aW9uTWV0aG9kVHlwZS5BcHBcIj5cbiAgICAgICAgPG1hdC1pY29uPnBob25lX2lwaG9uZTwvbWF0LWljb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuICA8ZnMtbGlzdC1jb2x1bW4gY2xhc3M9XCJjb2wtbmFtZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSBmcy1saXN0LWNlbGwgbGV0LXJvdz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LnR5cGUgPT09IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuU21zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGZzLWNvdW50cnkgW2NvZGVdPVwicm93LnBob25lQ291bnRyeVwiIFtzaG93TmFtZV09XCJmYWxzZVwiPjwvZnMtY291bnRyeT4gXG4gICAgICAgICAgICA8c3Bhbj57e3Jvdy5waG9uZU51bWJlciB8IGZzUGhvbmV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy50eXBlID09PSBWZXJpZmljYXRpb25NZXRob2RUeXBlLkVtYWlsXCI+XG4gICAgICAgICAge3tyb3cuZW1haWx9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LnR5cGUgPT09IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuQXBwXCI+XG4gICAgICAgICAgQXBwXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxhcHAtZGVmYXVsdGVkICpuZ0lmPVwicm93LmRlZmF1bHRcIj48L2FwcC1kZWZhdWx0ZWQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2ZzLWxpc3QtY29sdW1uPlxuPC9mcy1saXN0PiJdfQ==
|