@firestitch/2fa 12.4.1 → 12.4.4

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.
Files changed (22) hide show
  1. package/app/modules/manage/components/email/email.component.d.ts +3 -2
  2. package/app/modules/manage/components/number/number.component.d.ts +3 -2
  3. package/app/modules/manage/fs-2f-manage.module.d.ts +2 -1
  4. package/app/modules/resend/components/resend/index.d.ts +1 -0
  5. package/app/modules/resend/components/resend/resend.component.d.ts +14 -0
  6. package/app/modules/resend/resend.module.d.ts +9 -0
  7. package/app/modules/verification/components/2fa-verification/2fa-verification.component.d.ts +1 -2
  8. package/app/modules/verification/fs-2fa-verification.module.d.ts +9 -9
  9. package/bundles/firestitch-2fa.umd.js +175 -114
  10. package/bundles/firestitch-2fa.umd.js.map +1 -1
  11. package/esm2015/app/modules/manage/components/email/email.component.js +16 -15
  12. package/esm2015/app/modules/manage/components/number/number.component.js +16 -15
  13. package/esm2015/app/modules/manage/fs-2f-manage.module.js +6 -2
  14. package/esm2015/app/modules/resend/components/resend/index.js +2 -0
  15. package/esm2015/app/modules/resend/components/resend/resend.component.js +40 -0
  16. package/esm2015/app/modules/resend/resend.module.js +30 -0
  17. package/esm2015/app/modules/verification/components/2fa-verification/2fa-verification.component.js +12 -16
  18. package/esm2015/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.js +2 -2
  19. package/esm2015/app/modules/verification/fs-2fa-verification.module.js +17 -17
  20. package/fesm2015/firestitch-2fa.js +121 -63
  21. package/fesm2015/firestitch-2fa.js.map +1 -1
  22. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"firestitch-2fa.js","sources":["../../src/app/enums/verification-method-type.enum.ts","../../src/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.ts","../../src/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.html","../../src/app/modules/code-input/components/code-input/code-input.component.ts","../../src/app/modules/code-input/components/code-input/code-input.component.html","../../src/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.ts","../../src/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.html","../../src/app/modules/verification/components/2fa-verification/2fa-verification.component.ts","../../src/app/modules/verification/components/2fa-verification/2fa-verification.component.html","../../src/app/modules/code-input/code-input.module.ts","../../src/app/modules/verification/fs-2fa-verification.module.ts","../../src/app/modules/manage/components/app/app.component.ts","../../src/app/modules/manage/components/app/app.component.html","../../src/app/modules/manage/components/email/email.component.ts","../../src/app/modules/manage/components/email/email.component.html","../../src/app/modules/manage/components/number/number.component.ts","../../src/app/modules/manage/components/number/number.component.html","../../src/app/modules/manage/services/two-factor-manage.service.ts","../../src/app/modules/manage/components/defaulted/defaulted.component.ts","../../src/app/modules/manage/components/defaulted/defaulted.component.html","../../src/app/modules/manage/components/verification-methods/verification-methods.component.ts","../../src/app/modules/manage/components/verification-methods/verification-methods.component.html","../../src/app/modules/manage/components/numbers/numbers.component.ts","../../src/app/modules/manage/components/numbers/numbers.component.html","../../src/app/modules/manage/components/emails/emails.component.ts","../../src/app/modules/manage/components/emails/emails.component.html","../../src/app/modules/manage/components/manage-methods/manage-methods.component.ts","../../src/app/modules/manage/components/manage-methods/manage-methods.component.html","../../src/app/modules/manage/components/2fa-manage/2fa-manage.component.ts","../../src/app/modules/manage/components/2fa-manage/2fa-manage.component.html","../../src/app/modules/manage/fs-2f-manage.module.ts","../../src/firestitch-2fa.ts"],"sourcesContent":["export enum VerificationMethodType {\n Sms = 'sms',\n Email = 'email',\n App = 'app',\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\n\n\n@Component({\n templateUrl: './2fa-verification-methods.component.html',\n styleUrls: [\n './2fa-verification-methods.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2faVerificationMethodsComponent {\n\n public verificationMethod: IFsVerificationMethod;\n public phone: string;\n public code: string;\n public verificationMethods: Record<string, IFsVerificationMethod[]>;\n public readonly verificationMethodType = VerificationMethodType;\n\n private _selectVerificationMethod: (IFsVerificationMethod) => Observable<IFsVerificationMethod>; \n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n private _dialogData: any,\n private _dialogRef: MatDialogRef<Fs2faVerificationMethodsComponent>,\n ) {\n this._selectVerificationMethod = _dialogData.selectVerificationMethod;\n this._setActiveMethod();\n this._initMethods(_dialogData.verificationMethods);\n }\n\n public compareWith(o1, o2) {\n return o1 && o2 && o1.id === o2.id\n }\n\n public setVerificationMethod = () => {\n return this._selectVerificationMethod(this.verificationMethod)\n .pipe(\n tap((method: IFsVerificationMethod) => {\n this._dialogRef.close(method);\n })\n );\n };\n\n private _setActiveMethod(): void {\n this.verificationMethod = this._dialogData?.verificationMethod;\n }\n\n private _initMethods(verificationMethods): void {\n this.verificationMethods = verificationMethods\n .reduce((acc, method) => {\n if (!acc[method.type]) {\n acc[method.type] = [];\n }\n\n acc[method.type].push(method);\n\n return acc;\n }, {});\n }\n}\n","<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 Verification code send to one of following 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 Verification code send to one of following email\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 Verification code generated by an 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","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, ViewChild } from '@angular/core';\n\nimport { CodeInputComponent as AngularCodeInputComponent } from 'angular-code-input';\n\n\n@Component({\n selector: 'app-code-input',\n templateUrl: './code-input.component.html',\n styleUrls: ['./code-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CodeInputComponent {\n\n @ViewChild(AngularCodeInputComponent)\n public angularCodeInputComponent: AngularCodeInputComponent;\n\n @Input() public codeLength: number;\n @Input() public code;\n\n @Output() public codeCompleted = new EventEmitter();\n @Output() public codeChanged = new EventEmitter();\n \n public focus(): void {\n this.angularCodeInputComponent.focusOnField(0);\n }\n}","<code-input\r\n [initialFocusField]=\"0\"\r\n [codeLength]=\"6\"\r\n [code]=\"code\"\r\n (codeCompleted)=\"codeCompleted.emit($event)\"\r\n (codeChanged)=\"codeChanged.emit($event)\">\r\n</code-input>","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { CodeInputComponent } from '../../../../modules/code-input/components/code-input';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\n\n\n@Component({\n selector: 'fs-2fa-verification-code',\n templateUrl: './2fa-verification-code.component.html',\n styleUrls: [\n './2fa-verification-code.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n useExisting: NgForm,\n },\n ],\n})\nexport class Fs2faVerificationCodeComponent {\n\n @ViewChild(CodeInputComponent)\n public codeInputComponent: CodeInputComponent;\n\n @Input()\n public type: VerificationMethodType;\n\n @Input()\n public recipient: string;\n\n @Input()\n public code;\n\n @Output()\n public codeChanged = new EventEmitter<string>();\n\n @Output()\n public codeCompleted = new EventEmitter<void>();\n\n public VerificationMethodType = VerificationMethodType;\n\n public codeChange(code): void {\n this.code = code;\n this.codeChanged.emit(this.code);\n }\n\n public focus(): void {\n this.codeInputComponent.focus();\n }\n\n}\n","<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just\n 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 A 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 (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </app-code-input> \n</ng-template> ","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { FsDialog } from '@firestitch/dialog';\n\nimport { filter, finalize, takeUntil } from 'rxjs/operators';\n\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\nimport { Fs2faVerificationMethodsComponent } from '../2fa-verification-methods/2fa-verification-methods.component';\nimport { Observable, Subject } from 'rxjs';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { Fs2faVerificationCodeComponent } from '../2fa-verification-code/2fa-verification-code.component';\n\n\n@Component({\n selector: 'fs-2fa-verification',\n templateUrl: './2fa-verification.component.html',\n styleUrls: [\n './2fa-verification.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2faVerificationComponent implements OnDestroy, AfterViewInit, OnInit {\n\n @ViewChild(Fs2faVerificationCodeComponent)\n public verificationCodeComponent: Fs2faVerificationCodeComponent;\n\n @Input()\n public verificationMethod: IFsVerificationMethod;\n\n @Input()\n public resend: () => Observable<void>;\n\n @Input()\n public showTrustedDevice = true;\n\n @Input()\n public getVerificationMethods: () => Observable<IFsVerificationMethod[]>;\n\n @Input()\n public selectVerificationMethod: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n\n @Output()\n public verified = new EventEmitter<unknown>();\n\n @Output()\n public codeChanged = new EventEmitter<unknown>();\n\n @Output()\n public codeCompleted = new EventEmitter<unknown>();\n\n public resendInProgress = false;\n public code = '';\n public trustedDevice = true;\n public VerificationMethodType = VerificationMethodType;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _dialog: FsDialog,\n ) {\n }\n\n public get recipient(): string {\n if(this.verificationMethod.type === VerificationMethodType.Email) {\n return this.verificationMethod.email;\n }\n\n if(this.verificationMethod.type === VerificationMethodType.Sms) {\n return this.verificationMethod.phoneNumber;\n }\n }\n\n public ngOnInit(): void {\n this.codeChanged\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((code: string) => {\n this.code = code;\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public ngAfterViewInit(): void {\n this.verificationCodeComponent.focus(); \n }\n\n public resendCode(): void {\n this.resendInProgress = true;\n this.code = '';\n\n this.resend()\n .pipe(\n finalize(() => {\n this.resendInProgress = false; \n this._cdRef.markForCheck(); \n this.verificationCodeComponent.focus(); \n }),\n takeUntil(this._destroy$),\n )\n .subscribe()\n }\n\n public showVerificationMethods(): void {\n this.getVerificationMethods()\n .subscribe((verificationMethods) => {\n this._dialog.open(\n Fs2faVerificationMethodsComponent,\n {\n data: {\n verificationMethod: this.verificationMethod,\n verificationMethods,\n selectVerificationMethod: this.selectVerificationMethod,\n }\n }\n )\n .afterClosed()\n .pipe(\n filter((verificationMethod) => !!verificationMethod),\n )\n .subscribe((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.code = '';\n\n this._cdRef.markForCheck();\n\n setTimeout(() => {\n this.verificationCodeComponent.focus();\n });\n });\n });\n }\n\n}\n","<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\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)]=\"trustedDevice\">\n <small>Trust this device</small>\n </mat-checkbox>\n </div>\n\n <span class=\"resend\">\n <ng-container *ngIf=\"!resendInProgress else sending\">\n <small>Didn't receive a code? <a (click)=\"resendCode()\">Resend</a></small>\n </ng-container>\n <ng-template #sending>\n <mat-spinner [diameter]=\"12\"></mat-spinner> <small>Sending</small>\n </ng-template>\n </span>\n</div>","import { NgModule } from '@angular/core';\n\nimport { CodeInputModule as AngularCodeInputModule } from 'angular-code-input';\n\nimport { CodeInputComponent } from './components/code-input';\n\n\n@NgModule({\n imports: [\n AngularCodeInputModule,\n ],\n declarations: [\n CodeInputComponent,\n ],\n exports: [\n CodeInputComponent,\n ],\n})\nexport class CodeInputModule {\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsRadioGroupModule } from '@firestitch/radiogroup';\nimport { FsDialogModule } from '@firestitch/dialog';\n\nimport { Fs2faVerificationComponent } from './components/2fa-verification/2fa-verification.component';\nimport { Fs2faVerificationCodeComponent } from './components/2fa-verification-code/2fa-verification-code.component';\nimport { Fs2faVerificationMethodsComponent } from './components/2fa-verification-methods/2fa-verification-methods.component';\n\nimport { CodeInputModule } from '../code-input';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n\n FsFormModule,\n FsRadioGroupModule,\n FsDialogModule,\n\n CodeInputModule,\n MatCheckboxModule,\n MatProgressSpinnerModule,\n FsSkeletonModule,\n FsSkeletonModule,\n MatIconModule,\n MatRadioModule,\n ],\n declarations: [\n Fs2faVerificationComponent,\n Fs2faVerificationCodeComponent,\n Fs2faVerificationMethodsComponent,\n ],\n exports: [\n Fs2faVerificationComponent,\n ],\n providers: [],\n})\nexport class Fs2faVerificationModule {}\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsFormDirective } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\n\nimport { tap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppComponent implements OnInit {\n\n @ViewChild(FsFormDirective)\n public form: FsFormDirective;\n\n public twoFactorManageService: TwoFactorManageService;\n public mode: 'qr-code' | 'code-input' = 'qr-code';\n public accountId;\n public qrCodeUrl;\n public code;\n public default;\n public appType: 'google' | 'authy';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<AppComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this.twoFactorManageService = this._data.twoFactorManageService;\n this.accountId = this._data.accountId;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public appTypeGoogle(): void {\n this.appTypeSelect('google');\n }\n\n public appTypeAuthy(): void {\n this.appTypeSelect('authy');\n }\n\n public appTypeSelect(appType): void {\n this.appType = appType;\n this.twoFactorManageService.verificationMethodCreate({\n type: 'app',\n default: this.default,\n })\n .subscribe((response) => {\n this.qrCodeUrl = response.qrCodeUrl;\n this._cdRef.markForCheck();\n });\n }\n\n public codeCompleted(): void {\n this.form.triggerSubmit();\n }\n\n public codeChanged(code): void {\n this.code = code;\n this.form.dirty();\n }\n\n public next(): void {\n this.mode = 'code-input';\n }\n\n public verify = () => {\n return this.twoFactorManageService.verificationMethodVerify(this.code)\n .pipe(\n tap(() => {\n this._message.success('Created app authenticator verification method');\n this._dialogRef.close(true);\n }),\n );\n };\n\n}\n","<form fsForm [submit]=\"verify\">\n <fs-dialog>\n <h1 mat-dialog-title>Authenticator App Setup</h1>\n <mat-dialog-content>\n\n <div *ngIf=\"mode === 'qr-code'\" class=\"qr-code\">\n <ng-container *ngIf=\"appType\">\n <ol>\n <li>\n <ng-container *ngIf=\"appType === 'authy'\">\n Install the Authy Authenticator App from the <a href=\"https://apps.apple.com/us/app/authy/id494168017\" target=\"_blank\">App Store</a> or\n the <a href=\"https://play.google.com/store/apps/details?id=com.authy.authy\" target=\"_blank\">Google Play Store</a>.\n </ng-container>\n\n <ng-container *ngIf=\"appType === 'google'\">\n Install the Google Authenticator App from the <a href=\"https://apps.apple.com/us/app/google-authenticator/id388497605\" target=\"_blank\">App Store</a> or\n the <a href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US&gl=US\" target=\"_blank\">Google Play Store</a>.\n </ng-container>\n </li>\n <ng-container *ngIf=\"appType === 'authy'\">\n <li>\n Open the Authy app and select <b>Add Account</b>.\n </li>\n <li>\n Select <b>Scan QR Code</b> and scan the QR code below.\n </li>\n </ng-container> \n <ng-container *ngIf=\"appType === 'google'\">\n <li>\n Open the Google Authentictor app and click the <b>Plus icon</b> in the lower right corner.\n </li>\n <li>\n Select <b>Scan a QR code</b> and scan the QR code below.\n </li>\n </ng-container>\n </ol>\n\n <qr-code \n *fsSkeleton=\"qrCodeUrl\"\n [value]=\"qrCodeUrl\"\n size=\"200\"\n errorCorrectionLevel=\"H\"\n [margin]=\"0\">\n </qr-code> \n </ng-container>\n\n <div class=\"app-types\" *ngIf=\"!appType\">\n <p>Select the Authenticator App you prefer</p>\n\n <div class=\"row\">\n <span>\n <a (click)=\"appTypeAuthy()\">\n <svg width=\"50\" height=\"50\" viewBox=\"0 0 256 256\" xmlns=\"http://www.w3.org/2000/svg\" preserveAspectRatio=\"xMidYMid\"><path d=\"M256 127.998C256 198.696 198.694 256 127.997 256 57.304 256 0 198.696 0 127.998 0 57.305 57.304 0 127.997 0 198.694 0 256 57.305 256 127.998z\" fill=\"#EC1C24\"/><path d=\"M117.024 100.89l30.691 30.68c4.43 4.436 11.623 4.436 16.064 0 4.431-4.435 4.441-11.622 0-16.058L133.086 84.82C111.125 62.854 75.631 62.5 53.204 83.704a9.536 9.536 0 0 0-.605.548c-.098.098-.178.202-.275.29-.1.096-.202.182-.297.278-.194.193-.371.396-.54.597-21.215 22.437-20.85 57.932 1.113 79.897L83.292 196c4.44 4.433 11.623 4.433 16.062 0 4.442-4.437 4.442-11.633.011-16.06l-30.693-30.691c-13.398-13.393-13.488-35.129-.278-48.637 13.506-13.21 35.23-13.114 48.63.279zm39.612-40.873c-4.435 4.437-4.435 11.623.012 16.059l30.681 30.693c13.39 13.392 13.477 35.125.268 48.636-13.51 13.2-35.227 13.112-48.623-.282l-30.692-30.689c-4.438-4.437-11.633-4.437-16.066 0-4.443 4.433-4.443 11.642 0 16.065l30.682 30.694c21.968 21.965 57.458 22.322 79.889 1.116.208-.184.404-.355.61-.549.094-.095.182-.192.273-.29.1-.095.197-.183.29-.289.197-.183.365-.384.54-.594 21.215-22.428 20.86-57.911-1.102-79.889l-30.692-30.682c-4.436-4.443-11.638-4.443-16.07.001z\" fill=\"#FFF\"/></svg>\n </a>\n Authy\n </span>\n \n <span>\n <a (click)=\"appTypeGoogle()\"> \n <svg width=\"50\" height=\"50\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m457.07 45.92c73.67-8.62 149.41.22 218.93 26.24 62.75 23.47 120.59 60.41 167.72 108.09-40.31 39.97-80.25 80.31-120.51 120.33-25.95-25.45-56.19-46.65-89.47-61.37-44.22-19.82-93.39-28.54-141.72-25.2-54.6 3.52-108.11 22.49-152.63 54.3-55.24 38.95-96.61 97.22-114.8 162.35-13.64 47.78-14.77 98.97-3.76 147.4 8.85 39.61 26.09 77.29 50.05 110.03 22.24 30.45 50.3 56.64 82.22 76.71 36.79 23.24 78.76 38.22 121.96 43.48 37.02 4.65 74.9 2.23 111.05-7 3.97-1.91 6.24 2.61 8.73 4.86 40.74 40.95 81.68 81.7 122.43 122.63-73.31 35.6-155.99 51.86-237.3 46.12-68.05-4.51-135.07-24.08-194.71-57.18-24.87-13.6-48.23-29.82-70.33-47.54-17.46-14.81-34.71-30.01-49.72-47.35-25.41-27.39-47.21-58.11-65.17-90.87-4-7.72-8.64-15.12-11.9-23.2-4.47-9.05-8.37-18.36-12.25-27.67-4.96-13.27-10.26-26.44-13.88-40.15-.43-1.81-1.53-3.33-2.52-4.85-8.3-28.66-12.95-58.33-15.44-88.04-2.62-37.36-1.33-75.05 4.78-112.03 12.18-75.48 43.41-147.74 89.86-208.44 30.12-39.5 66.53-74.21 107.46-102.35 62.44-43.11 135.53-70.69 210.92-79.3m49.18 50.48c-5.7.99-10.96 3.76-15.38 7.43-10.4 8.93-14.14 24.81-8.17 37.28 6.33 15.02 25.16 23.1 40.36 17 15.43-5.24 24.78-23.51 19.74-39.06-4.1-15.43-20.92-25.79-36.55-22.65m-267.96 111.99c-5.33.28-10.59 1.92-15.16 4.68-11.47 7.03-17.88 21.74-14.36 34.86 3.09 14.08 16.78 25.06 31.26 24.61 15.03.41 29.08-11.39 31.54-26.17 2.24-10.33-1.61-21.55-9.14-28.85-6.24-6.33-15.3-9.62-24.14-9.13m-115.96 272c-6.62 1.23-12.84 4.58-17.54 9.4-9.45 9.72-11.72 25.57-5.02 37.42 7.16 13.96 25.48 20.86 39.98 14.62 15.02-5.51 23.99-23.42 19.06-38.71-4.04-15.41-20.86-25.96-36.48-22.73m111.98 272.05c-11.49 1.95-21.48 10.72-24.84 21.88-3.87 11.63-.13 25.16 8.9 33.36 6.15 5.48 14.4 8.7 22.67 8.32 11.16-.25 21.98-6.87 27.12-16.8 4.93-8.83 5.15-20.02.71-29.1-5.82-12.78-20.81-20.33-34.56-17.66m272.06 112.03c-11.76 2.02-21.92 11.07-25.09 22.6-3.87 12.57 1.13 27.25 11.91 34.79 7.86 5.79 18.42 7.67 27.77 4.86 9.61-2.77 17.7-10.24 21.07-19.68 4.97-12.74.36-28.32-10.58-36.46-7.02-5.45-16.35-7.67-25.08-6.11z\" fill=\"#a0a0a0\"/>\n <g fill=\"#c1c1c1\">\n <path d=\"m506.25 96.4c15.63-3.14 32.45 7.22 36.55 22.65 5.04 15.55-4.31 33.82-19.74 39.06-15.2 6.1-34.03-1.98-40.36-17-5.97-12.47-2.23-28.35 8.17-37.28 4.42-3.67 9.68-6.44 15.38-7.43z\"/>\n <path d=\"m122.33 480.39c15.62-3.23 32.44 7.32 36.48 22.73 4.93 15.29-4.04 33.2-19.06 38.71-14.5 6.24-32.82-.66-39.98-14.62-6.7-11.85-4.43-27.7 5.02-37.42 4.7-4.82 10.92-8.17 17.54-9.4z\"/>\n </g>\n <path d=\"m843.72 180.25.11-.11c24.64 25.12 46.96 52.6 65.61 82.47 36.01 57.16 59.38 122.22 67.87 189.25 5.67 44.88 5.27 90.6-2.05 135.27-12.7 80.01-46.94 156.41-97.9 219.36-42.3 52.48-95.87 96.04-156.41 125.76l-.63-.26c-1.01-1.1-2.03-2.16-3.05-3.22-40.75-40.93-81.69-81.68-122.43-122.63-2.49-2.25-4.76-6.77-8.73-4.86-36.15 9.23-74.03 11.65-111.05 7-43.2-5.26-85.17-20.24-121.96-43.48-31.92-20.07-59.98-46.26-82.22-76.71-23.96-32.74-41.2-70.42-50.05-110.03-11.01-48.43-9.88-99.62 3.76-147.4 18.19-65.13 59.56-123.4 114.8-162.35 44.52-31.81 98.03-50.78 152.63-54.3 48.33-3.34 97.5 5.38 141.72 25.2 33.28 14.72 63.52 35.92 89.47 61.37 40.26-40.02 80.2-80.36 120.51-120.33m-351.75 183.97c-21.23 2.85-41.89 10.28-59.88 21.94-23.08 14.45-41.76 35.58-53.9 59.91-14.58 29.2-18.64 63.21-12.5 95.17 3.93 19.85 12.03 38.88 23.56 55.51 7.93 11.52 17.65 21.66 27.65 31.38 57.33 57.41 114.61 114.86 171.99 172.21 49.09-13.07 94.67-38.94 131.05-74.4 45.11-43.34 75.66-101.44 86.31-163.06.24-1.04.22-2.91 1.85-2.6 29.63.04 59.26-.01 88.9.05 19.04-.3 36.87-14.77 40.76-33.46.22-1.21 0-2.32-.67-3.35 1.22-5.71 2.08-11.58 1.38-17.43l-.24.4c-2.05-20.34-20.84-37.12-41.25-37.17-80.64-.07-161.28-.01-241.93-.07-6.44-22.08-18.5-42.33-34.03-59.23-25.8-27.5-62.26-45.01-100.02-46.82-9.68.02-19.44-.54-29.03 1.02m286.37 388.31c-12.64 2.06-23.37 12.59-25.7 25.18-1.48 8.14-.14 17.02 4.73 23.85 5.76 9.2 16.8 14.76 27.61 14.25 8.32.03 16.28-3.95 22.16-9.66 4.87-5.6 8.45-12.67 8.67-20.2.86-11.37-5.06-23.1-14.87-28.96-6.52-4.46-14.89-5.75-22.6-4.46z\" fill=\"#686868\"/>\n <path d=\"m238.29 208.39c8.84-.49 17.9 2.8 24.14 9.13 7.53 7.3 11.38 18.52 9.14 28.85-2.46 14.78-16.51 26.58-31.54 26.17-14.48.45-28.17-10.53-31.26-24.61-3.52-13.12 2.89-27.83 14.36-34.86 4.57-2.76 9.83-4.4 15.16-4.68z\" fill=\"#c3c3c3\"/>\n <path d=\"m491.97 364.22c9.59-1.56 19.35-1 29.03-1.02 37.76 1.81 74.22 19.32 100.02 46.82 15.53 16.9 27.59 37.15 34.03 59.23-47.67-.01-95.35-.01-143.03-.01-12.19-.11-24.23 5.42-32.21 14.61-6.01 6.85-9.74 15.65-10.44 24.74-1.19 14.17 5.36 28.7 16.69 37.28 7.62 5.91 17.28 9 26.92 8.8 126.69-.04 253.39-.06 380.08.03 4.76.04 9.59-.15 14.2-1.48 14.21-3.82 26.02-15.47 29.83-29.7.67 1.03.89 2.14.67 3.35-3.89 18.69-21.72 33.16-40.76 33.46-29.64-.06-59.27-.01-88.9-.05-1.63-.31-1.61 1.56-1.85 2.6-10.65 61.62-41.2 119.72-86.31 163.06-36.38 35.46-81.96 61.33-131.05 74.4-57.38-57.35-114.66-114.8-171.99-172.21-10-9.72-19.72-19.86-27.65-31.38-11.53-16.63-19.63-35.66-23.56-55.51-6.14-31.96-2.08-65.97 12.5-95.17 12.14-24.33 30.82-45.46 53.9-59.91 17.99-11.66 38.65-19.09 59.88-21.94z\" fill=\"#474747\"/>\n <g fill=\"#bfbfbf\">\n <path d=\"m479.81 483.85c7.98-9.19 20.02-14.72 32.21-14.61 47.68 0 95.36 0 143.03.01 80.65.06 161.29 0 241.93.07 20.41.05 39.2 16.83 41.25 37.17-.19.33-.58.97-.78 1.29-3.68-18.51-21.57-33.16-40.47-33.05-124.97.1-249.94.12-374.91.17-7.73.13-15.74-.8-23.15 1.96-9.06 2.84-16.73 9.1-22.27 16.7-3.34 4.55-4.39 10.24-7.28 15.03.7-9.09 4.43-17.89 10.44-24.74z\"/>\n <path d=\"m234.31 752.44c13.75-2.67 28.74 4.88 34.56 17.66 4.44 9.08 4.22 20.27-.71 29.1-5.14 9.93-15.96 16.55-27.12 16.8-8.27.38-16.52-2.84-22.67-8.32-9.03-8.2-12.77-21.73-8.9-33.36 3.36-11.16 13.35-19.93 24.84-21.88z\"/>\n </g>\n <path d=\"m498.92 476.86c7.41-2.76 15.42-1.83 23.15-1.96 124.97-.05 249.94-.07 374.91-.17 18.9-.11 36.79 14.54 40.47 33.05.2-.32.59-.96.78-1.29l.24-.4c.7 5.85-.16 11.72-1.38 17.43-3.81 14.23-15.62 25.88-29.83 29.7-4.61 1.33-9.44 1.52-14.2 1.48-126.69-.09-253.39-.07-380.08-.03-9.64.2-19.3-2.89-26.92-8.8-11.33-8.58-17.88-23.11-16.69-37.28 2.89-4.79 3.94-10.48 7.28-15.03 5.54-7.6 13.21-13.86 22.27-16.7z\" fill=\"#b0b0b0\"/>\n <path d=\"m59.49 636.08c.99 1.52 2.09 3.04 2.52 4.85 3.62 13.71 8.92 26.88 13.88 40.15 3.88 9.31 7.78 18.62 12.25 27.67 3.26 8.08 7.9 15.48 11.9 23.2 17.96 32.76 39.76 63.48 65.17 90.87 15.01 17.34 32.26 32.54 49.72 47.35 22.1 17.72 45.46 33.94 70.33 47.54 59.64 33.1 126.66 52.67 194.71 57.18 81.31 5.74 163.99-10.52 237.3-46.12 1.02 1.06 2.04 2.12 3.05 3.22l.03.61c-42.32 21.03-87.88 35.53-134.56 42.91-56.91 8.9-115.46 7.49-171.82-4.5-67.89-14.35-132.42-44.21-187.42-86.51-63.52-48.63-114.32-113.73-145.86-187.27-8.42-19.87-15.93-40.22-21.2-61.15z\" fill=\"#939393\"/>\n <path d=\"m778.34 752.53c7.71-1.29 16.08 0 22.6 4.46 9.81 5.86 15.73 17.59 14.87 28.96-.22 7.53-3.8 14.6-8.67 20.2-5.88 5.71-13.84 9.69-22.16 9.66-10.81.51-21.85-5.05-27.61-14.25-4.87-6.83-6.21-15.71-4.73-23.85 2.33-12.59 13.06-23.12 25.7-25.18z\" fill=\"#767676\"/>\n <path d=\"m506.37 864.47c8.73-1.56 18.06.66 25.08 6.11 10.94 8.14 15.55 23.72 10.58 36.46-3.37 9.44-11.46 16.91-21.07 19.68-9.35 2.81-19.91.93-27.77-4.86-10.78-7.54-15.78-22.22-11.91-34.79 3.17-11.53 13.33-20.58 25.09-22.6z\" fill=\"#bebebe\"/>\n </svg>\n </a>\n Google Authenticator\n </span>\n </div>\n\n <mat-checkbox \n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </div>\n \n </div>\n\n <div *ngIf=\"mode === 'code-input'\" class=\"code-input\">\n <div>\n Enter the 6-digit code you see in the App.\n </div>\n\n <app-code-input\n [codeLength]=\"6\"\n (codeChanged)=\"codeChanged($event)\"\n (codeCompleted)=\"codeCompleted()\">\n </app-code-input>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <ng-container *ngIf=\"appType\">\n <button\n *ngIf=\"mode === 'qr-code'\"\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Next\n </button>\n <button\n *ngIf=\"mode === 'code-input'\"\n type=\"submit\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Verify\n </button> \n </ng-container>\n <button\n type=\"button\"\n mat-button\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsFormDirective } from '@firestitch/form';\n\nimport { of } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './email.component.html',\n styleUrls: ['./email.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailComponent {\n\n @ViewChild(FsFormDirective, { static: false })\n public form: FsFormDirective;\n\n public email;\n public code;\n public default;\n public verificationMethod = null;\n public twoFactorManageService: TwoFactorManageService;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EmailComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public resend(): void {\n this.twoFactorManageService.verificationMethodResend()\n .subscribe(() => {\n this._message.success('Resent verification code');\n });\n }\n\n public submit = () => {\n return of(true)\n .pipe(\n switchMap(() => {\n return this.verificationMethod ?\n this.twoFactorManageService.verificationMethodVerify(this.code)\n .pipe(\n tap((verificationMethod) => {\n this._message.success('Created email verification method');\n this._dialogRef.close(verificationMethod);\n }),\n ) :\n this.twoFactorManageService.verificationMethodCreate({\n type: 'email',\n email: this.email,\n default: this.default,\n })\n .pipe(\n tap((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.form.clear();\n this._cdRef.markForCheck();\n }),\n );\n }),\n );\n };\n\n public codeCompleted(): void {\n if(!this.form.submitting) {\n this.form.triggerSubmit();\n }\n }\n\n public codeChanged(code): void {\n this.code = code;\n }\n\n}\n","<form fsForm [submit]=\"submit\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Email Setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <p>The app just sent you an email with a verification code.</p>\n \n <app-code-input \n [code]=\"code\"\n (codeChanged)=\"codeChanged($event)\"\n (codeCompleted)=\"codeCompleted()\">\n </app-code-input> \n\n <div>Did't get the code? <a (click)=\"resend()\">Resend Code</a></div>\n </ng-container>\n\n <ng-template #notVerificationMethod>\n <p>The app will only use this email for verifying your account security. </p>\n <mat-form-field>\n <mat-label>Email</mat-label>\n <input\n matInput\n [required]=\"true\"\n [(ngModel)]=\"email\"\n [fsFormEmail]=\"true\"\n name=\"email\">\n </mat-form-field>\n <mat-checkbox \n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsFormDirective } from '@firestitch/form';\n\nimport { of } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './number.component.html',\n styleUrls: ['./number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumberComponent {\n\n @ViewChild(FsFormDirective, { static: false })\n public form: FsFormDirective;\n\n public phone;\n public code;\n public default;\n public verificationMethod = null;\n public defaultCountry;\n public twoFactorManageService: TwoFactorManageService;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<NumberComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.defaultCountry = _data.defaultCountry;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public resend(): void {\n this.twoFactorManageService.verificationMethodResend()\n .subscribe(() => {\n this._message.success('Resent verification code');\n });\n }\n\n public submit = () => {\n return of(true)\n .pipe(\n switchMap(() => {\n return this.verificationMethod ?\n this.twoFactorManageService.verificationMethodVerify(this.code)\n .pipe(\n tap((verificationMethod) => {\n this._message.success('Created text message verification method');\n this._dialogRef.close(verificationMethod);\n }),\n ) :\n this.twoFactorManageService.verificationMethodCreate({\n type: 'sms',\n phoneNumber: this.phone.number,\n phoneCode: this.phone.countryCode,\n phoneCountry: this.phone.isoCode,\n default: this.default,\n }).pipe(\n tap((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.form.clear();\n this._cdRef.markForCheck();\n }),\n );\n }),\n );\n };\n\n public codeCompleted(): void {\n if(!this.form.submitting) {\n this.form.triggerSubmit();\n }\n }\n\n public codeChanged(code): void {\n this.code = code;\n }\n\n}\n","<form fsForm [submit]=\"submit\" autocomplete=\"off\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Text Message Setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <p>The app just sent you a text message with a verification code.</p>\n\n <app-code-input \n [code]=\"code\"\n (codeChanged)=\"codeChanged($event)\"\n (codeCompleted)=\"codeCompleted()\">\n </app-code-input> \n \n <div>Did't get the code? <a (click)=\"resend()\">Resend Code</a></div>\n </ng-container>\n\n <ng-template #notVerificationMethod>\n <p>The app will only use this number for verifying your account security. Message and data rates may apply by your cell phone provider.</p>\n <mat-form-field>\n <mat-label>Phone number</mat-label>\n <fs-phone-field\n [(ngModel)]=\"phone\"\n [country]=\"defaultCountry\"\n name=\"phone\"\n autocomplete=\"off\"\n [required]=\"true\">\n </fs-phone-field>\n </mat-form-field>\n <mat-checkbox \n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\nimport { VerificationMethodType } from '../../../enums/verification-method-type.enum';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { AppComponent } from '../components/app';\nimport { EmailComponent } from '../components/email';\nimport { NumberComponent } from '../components/number';\n\n\n@Injectable()\nexport class TwoFactorManageService implements OnDestroy {\n\n private _destroy$ = new Subject();\n\n private _verificationMethodFetch: () => Observable<any[]>;\n private _verificationMethodCreate: (verificationMethod) => Observable<any>;\n private _verificationMethodDelete: (verificationMethod) => Observable<any>;\n private _verificationMethodVerify: (verificationMethod) => Observable<any>;\n private _verificationMethodResend: () => Observable<any>;\n private _accountVerify: () => Observable<any[]>;\n private _verificationMethods$ = new BehaviorSubject<any[]>([]);\n\n constructor(\n private _dialog: MatDialog,\n ) {}\n\n public get verificationMethods$() {\n return this._verificationMethods$\n .pipe(\n takeUntil(this._destroy$),\n );\n }\n \n public get verificationMethods() {\n return this._verificationMethods$.getValue();\n }\n\n public get hasVerificationMethods(): boolean {\n return !!this._verificationMethods$.getValue().length;\n }\n\n public get emailVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.Email);\n }\n\n public get smsVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.Sms);\n }\n\n public get appVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.App);\n }\n \n public getVerificationMethods(type) {\n return this.verificationMethods\n .filter((verificationMethod) => {\n return verificationMethod.type === type;\n });\n }\n \n public hasVerificationMethod(type) {\n return this.verificationMethods\n .some((verificationMethod) => {\n return verificationMethod.type === type;\n });\n }\n\n public registerVerificationMethodResend(value) {\n this._verificationMethodResend = value;\n }\n\n public registerVerificationMethodFetch(value) {\n this._verificationMethodFetch = value;\n }\n\n public registerVerificationMethodDelete(value) {\n this._verificationMethodDelete = value;\n }\n\n public registerVerificationMethodCreate(value) {\n this._verificationMethodCreate = value;\n }\n\n public registerVerificationMethodVerify(value) {\n this._verificationMethodVerify = value;\n }\n\n public registerAccountVerify(value) {\n this._accountVerify = value;\n }\n\n public verificationMethodDelete(verificationMethod): Observable<any> {\n return this._verificationMethodDelete(verificationMethod)\n .pipe(\n tap(() => {\n this.verificationMethodFetch();\n }),\n );\n }\n\n public verificationMethodVerify(verificationMethod): Observable<any> {\n return this._verificationMethodVerify(verificationMethod)\n .pipe(\n tap(() => {\n this.verificationMethodFetch();\n }),\n );\n }\n\n public verificationMethodCreate(verificationMethod): Observable<any> {\n return this._verificationMethodCreate(verificationMethod);\n }\n\n public verificationMethodResend(): Observable<any> {\n return this._verificationMethodResend();\n }\n\n public verificationMethodFetch() {\n this._verificationMethodFetch()\n .subscribe((verificationMethods) => {\n this._verificationMethods$.next(verificationMethods);\n });\n }\n\n public accountVerify(): Observable<any> {\n return this._accountVerify ? this._accountVerify() : of(true);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public addSms(defaultCountry): Observable<any>{\n return this.accountVerify()\n .pipe(\n switchMap(() => this._dialog.open(NumberComponent, {\n data: {\n defaultCountry,\n twoFactorManageService: this,\n },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n\n public addEmail(): Observable<any>{\n return this.accountVerify()\n .pipe(\n switchMap(() => this._dialog.open(EmailComponent, {\n data: { twoFactorManageService: this },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n\n public addApp(): Observable<any>{\n return this.accountVerify()\n .pipe(\n switchMap(() => this._dialog.open(AppComponent, {\n data: { twoFactorManageService: this },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n}\n","import {\n Component, ChangeDetectionStrategy,\n} from '@angular/core';\n\n\n@Component({\n selector: 'app-defaulted',\n templateUrl: './defaulted.component.html',\n styleUrls: ['./defaulted.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultedComponent {\n\n}\n","<span>Default</span>","import {\n Component, ChangeDetectionStrategy, OnInit, Input, Output, EventEmitter,\n} from '@angular/core';\n\nimport { FsListConfig } from '@firestitch/list';\nimport { FsPrompt } from '@firestitch/prompt';\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\n\nimport { map, switchMap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n selector: 'app-verification-methods',\n templateUrl: './verification-methods.component.html',\n styleUrls: ['./verification-methods.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VerificationMethodsComponent implements OnInit {\n\n @Input() public twoFactorManageService: TwoFactorManageService;\n @Input() public type;\n \n @Output() public deleted = new EventEmitter<IFsVerificationMethod>();\n\n public listConfig: FsListConfig;\n public textMessageAdd: () => void;\n\n constructor(\n private _prompt: FsPrompt,\n ) {\n }\n\n public ngOnInit(): void {\n this.listConfig = {\n rowActions: [\n {\n click: (verificationMethod) => {\n this._prompt.confirm({\n title: 'Confirm',\n template: 'Would you like to delete this verification method?',\n })\n .pipe(\n switchMap(() => this.twoFactorManageService.accountVerify()),\n switchMap(() => this.twoFactorManageService\n .verificationMethodDelete(verificationMethod)),\n )\n .subscribe(() => {\n this.deleted.emit(verificationMethod);\n });\n },\n label: 'Delete',\n },\n ],\n fetch: () => {\n return this.twoFactorManageService.verificationMethods$\n .pipe(\n map((verificationMethods) => ({\n data: verificationMethods.filter((verificationMethod) => {\n return verificationMethod.type === this.type;\n }),\n }),\n ),\n );\n },\n };\n }\n}\n","<fs-list [config]=\"listConfig\">\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 === 'sms'\">\n <fs-country [code]=\"row.phoneCountry\" [showName]=\"false\"></fs-country> {{row.phoneNumber | fsPhone}}\n </ng-container>\n\n <ng-container *ngIf=\"row.type === 'email'\">\n {{row.email}}\n </ng-container>\n \n <app-defaulted *ngIf=\"row.default\"></app-defaulted>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>","import {\n Component, Inject, ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsMessage } from '@firestitch/message';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './numbers.component.html',\n styleUrls: ['./numbers.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumbersComponent {\n\n public defaultCountry;\n public twoFactorManageService: TwoFactorManageService;\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any, \n private _dialogRef: MatDialogRef<NumbersComponent>,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.defaultCountry = _data.defaultCountry;\n }\n\n public add(): void {\n this.twoFactorManageService.addSms(this.defaultCountry)\n .subscribe();\n }\n\n public deleted(): void {\n this._message.success('Deleted text message verification method');\n if(!this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Sms)) {\n this._dialogRef.close();\n }\n }\n\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n Text Message Numbers\n </h1>\n <mat-dialog-content>\n <app-verification-methods\n [type]=\"VerificationMethodType.Sms\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </app-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Number\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component, Inject, ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsMessage } from '@firestitch/message';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './emails.component.html',\n styleUrls: ['./emails.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailsComponent {\n\n public twoFactorManageService: TwoFactorManageService;\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EmailsComponent>,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n }\n\n public add(): void {\n this.twoFactorManageService.addEmail()\n .subscribe();\n }\n\n public deleted(): void {\n this._message.success('Deleted email verification method');\n if(!this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Email)) {\n this._dialogRef.close();\n }\n }\n\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n Emails\n </h1>\n <mat-dialog-content>\n <app-verification-methods\n [type]=\"VerificationMethodType.Email\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </app-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Email\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, OnDestroy,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\n\nimport { Subject } from 'rxjs';\n\nimport { NumbersComponent } from '../numbers';\nimport { EmailsComponent } from '../emails';\nimport { TwoFactorManageService } from '../../services';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { FsMessage } from '@firestitch/message';\n\n\n@Component({\n templateUrl: './manage-methods.component.html',\n styleUrls: ['./manage-methods.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManageMethodsComponent implements OnInit, OnDestroy {\n\n public twoFactorManageService: TwoFactorManageService;\n public verificationMethods;\n public verificationMethodTypes = {};\n public VerificationMethodType = VerificationMethodType;\n\n private _destroy$ = new Subject();\n private _defaultCountry: string;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _cdRef: ChangeDetectorRef,\n private _dialog: MatDialog,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this._defaultCountry = this._data.defaultCountry;\n this.twoFactorManageService = this._data.twoFactorManageService;\n this.verificationMethodTypes = this._data.verificationMethodTypes\n .reduce((verificationMethodTypes, verificationMethodType) => {\n verificationMethodTypes[verificationMethodType] = true;\n\n return verificationMethodTypes;\n }, {});\n\n this.twoFactorManageService.verificationMethods$\n .subscribe((verificationMethods) => {\n this.verificationMethods = verificationMethods;\n this._cdRef.markForCheck();\n });\n }\n\n public get defaultSms(): boolean {\n return this.twoFactorManageService.smsVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get defaultApp(): boolean {\n return this.twoFactorManageService.appVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get defaultEmail(): boolean {\n return this.twoFactorManageService.emailVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get textHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Sms);\n }\n\n public get appHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.App);\n }\n\n public get emailHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Email);\n }\n\n public textMessageManage(): void {\n this._dialog.open(NumbersComponent, {\n data: {\n twoFactorManageService: this.twoFactorManageService,\n defaultCountry: this._defaultCountry,\n },\n });\n }\n\n public textMessageAdd(): void {\n this.twoFactorManageService.addSms(this._defaultCountry)\n .subscribe();\n }\n\n public emailMessageManage(): void {\n this._dialog.open(EmailsComponent, {\n data: {\n twoFactorManageService: this.twoFactorManageService,\n },\n });\n }\n\n public emailMessageAdd(): void {\n this.twoFactorManageService.addEmail()\n .subscribe();\n }\n\n public appRemove(): void {\n this._message.success('Removed App Authenticator verification method');\n\n const verificationMethod = this.verificationMethods\n .find((_verificationMethod) => {\n return _verificationMethod.type === VerificationMethodType.App;\n });\n\n if(verificationMethod) {\n this.twoFactorManageService.verificationMethodDelete(verificationMethod)\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n }\n\n public appAdd(): void {\n this.twoFactorManageService.addApp()\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","<fs-dialog>\n <h1 mat-dialog-title>2-Step Verification</h1>\n <mat-dialog-content>\n <table>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Sms]\">\n <td>\n <mat-icon>textsms</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Text Message</span>\n <span *ngIf=\"textHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultSms\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by text message\n <ng-container *ngIf=\"textHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.smsVerificationMethods\">{{item.phoneNumber | fsPhone}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"textHasVerificationMethod; else textMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"textMessageManage()\">\n Manage\n </button>\n <ng-template #textMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"textMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Email]\">\n <td>\n <mat-icon>email</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Email</span> \n <span *ngIf=\"emailHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultEmail\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by email\n <ng-container *ngIf=\"emailHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.emailVerificationMethods\">{{item.email}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"emailHasVerificationMethod; else emailMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"emailMessageManage()\">\n Manage\n </button>\n <ng-template #emailMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"emailMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.App]\">\n <td>\n <mat-icon>phone_iphone</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Authenticator App</span>\n <span *ngIf=\"appHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultApp\"></app-defaulted>\n </div>\n <div class=\"small\">Verification code is generated by an authenticator app such as Authy or Google Authenticator</div>\n </td>\n <td>\n <button \n *ngIf=\"appHasVerificationMethod; else appMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"appRemove()\">\n Remove\n </button>\n <ng-template #appMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"appAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr> \n </table> \n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnDestroy,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\n\nimport { ManageMethodsComponent } from '../manage-methods';\n\n\n@Component({\n selector: 'fs-2fa-manage',\n templateUrl: './2fa-manage.component.html',\n styleUrls: ['./2fa-manage.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TwoFactorManageService],\n})\nexport class Fs2faManageComponent implements OnDestroy, OnInit {\n\n @Input() public accountVerify: () => Observable<any>;\n @Input() public defaultCountry: string;\n @Input() public verificationMethodTypes: VerificationMethodType[];\n @Input() public verificationMethodsFetch: () => Observable<any[]>;\n @Input() public verificationMethodDelete: (verificationMethod: any) => Observable<any>;\n @Input() public verificationMethodCreate: (verificationMethod: any) => Observable<any>;\n @Input() public verificationMethodVerify: (verificationMethod: any) => Observable<any>;\n @Input() public verificationMethodResend: () => Observable<any>;\n\n public statuses;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _dialog: MatDialog,\n private _twoFactorManageService: TwoFactorManageService,\n ) {}\n\n public ngOnInit(): void {\n this.verificationMethodTypes = this.verificationMethodTypes || [\n VerificationMethodType.Sms,\n VerificationMethodType.Email,\n VerificationMethodType.App\n ];\n\n this._twoFactorManageService.registerVerificationMethodFetch(this.verificationMethodsFetch);\n this._twoFactorManageService.registerVerificationMethodDelete(this.verificationMethodDelete);\n this._twoFactorManageService.registerVerificationMethodCreate(this.verificationMethodCreate);\n this._twoFactorManageService.registerVerificationMethodVerify(this.verificationMethodVerify);\n this._twoFactorManageService.registerVerificationMethodResend(this.verificationMethodResend);\n this._twoFactorManageService.registerAccountVerify(this.accountVerify);\n\n\n this._twoFactorManageService.verificationMethods$\n .subscribe((verificationMethods) => {\n const types = {\n sms: 'Text Message',\n email: 'Email',\n app: 'Authenticator App',\n };\n\n this.statuses = Object.keys(\n verificationMethods.reduce((accum, verificationMethod) => {\n accum[verificationMethod.type] = true;\n\n return accum;\n }, {}),\n )\n .map((type) => {\n return types[type];\n });\n\n this._cdRef.markForCheck();\n });\n\n this._twoFactorManageService.verificationMethodFetch();\n }\n\n public manage() {\n const dialogRef = this._dialog.open(ManageMethodsComponent, {\n autoFocus: false,\n data: {\n defaultCountry: this.defaultCountry,\n twoFactorManageService: this._twoFactorManageService,\n verificationMethodTypes: this.verificationMethodTypes,\n },\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public reload(): void {\n this._twoFactorManageService.verificationMethodFetch();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n\n}\n","<fs-label-field>\n <fs-label>Status</fs-label>\n <ng-container *ngIf=\"statuses\">\n <ng-container *ngIf=\"statuses.length === 1\">\n {{statuses[0]}} verification is enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length > 1\">\n {{statuses.join(', ')}} verifications are enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length === 0\">\n No verification methods are enabled\n </ng-container>\n </ng-container>\n</fs-label-field>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsPhoneModule } from '@firestitch/phone';\nimport { FsCountryModule } from '@firestitch/country';\n\nimport { QrCodeModule } from 'ng-qrcode';\n\n\nimport { CodeInputModule } from '../code-input';\nimport { Fs2faManageComponent } from './components/2fa-manage';\nimport { ManageMethodsComponent } from './components/manage-methods';\nimport { NumbersComponent } from './components/numbers';\nimport { AppComponent } from './components/app';\nimport { EmailComponent } from './components/email';\nimport { VerificationMethodsComponent } from './components/verification-methods';\nimport { NumberComponent } from './components/number';\nimport { EmailsComponent } from './components/emails';\nimport { DefaultedComponent } from './components/defaulted';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatButtonModule,\n MatDialogModule,\n MatInputModule,\n MatIconModule,\n MatCheckboxModule,\n\n FsDialogModule,\n FsListModule,\n FsFormModule,\n FsLabelModule,\n FsPhoneModule,\n FsSkeletonModule,\n FsCountryModule,\n\n CodeInputModule,\n\n QrCodeModule,\n ],\n declarations: [\n Fs2faManageComponent,\n ManageMethodsComponent,\n NumbersComponent,\n AppComponent,\n EmailComponent,\n VerificationMethodsComponent,\n NumberComponent,\n EmailsComponent,\n DefaultedComponent,\n ],\n exports: [Fs2faManageComponent],\n})\nexport class Fs2faManageModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["AngularCodeInputComponent","AngularCodeInputModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAY;AAAZ,WAAY,sBAAsB;IAChC,qCAAW,CAAA;IACX,yCAAe,CAAA;IACf,qCAAW,CAAA;AACb,CAAC,EAJW,sBAAsB,KAAtB,sBAAsB;;MCsBrB,iCAAiC;IAU5C,YAEU,WAAgB,EAChB,UAA2D;QAD3D,gBAAW,GAAX,WAAW,CAAK;QAChB,eAAU,GAAV,UAAU,CAAiD;QAPrD,2BAAsB,GAAG,sBAAsB,CAAC;QAkBzD,0BAAqB,GAAG;YAC7B,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,kBAAkB,CAAC;iBAC3D,IAAI,CACH,GAAG,CAAC,CAAC,MAA6B;gBAChC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aAC/B,CAAC,CACH,CAAC;SACL,CAAC;QAhBA,IAAI,CAAC,yBAAyB,GAAG,WAAW,CAAC,wBAAwB,CAAC;QACtE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;KACpD;IAEM,WAAW,CAAC,EAAE,EAAE,EAAE;QACvB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;KACnC;IAWO,gBAAgB;;QACtB,IAAI,CAAC,kBAAkB,GAAG,MAAA,IAAI,CAAC,WAAW,0CAAE,kBAAkB,CAAC;KAChE;IAEO,YAAY,CAAC,mBAAmB;QACtC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB;aAC3C,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM;YAClB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACrB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;aACvB;YAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE9B,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACV;;+HAhDU,iCAAiC,kBAWlC,eAAe;mHAXd,iCAAiC,oDCtB9C,moHAsFA;4FDhEa,iCAAiC;kBAP7C,SAAS;mBAAC;oBACT,WAAW,EAAE,2CAA2C;oBACxD,SAAS,EAAE;wBACT,2CAA2C;qBAC5C;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;0BAYI,MAAM;2BAAC,eAAe;;;MEtBd,kBAAkB;IAN/B;QAcmB,kBAAa,GAAG,IAAI,YAAY,EAAE,CAAC;QACnC,gBAAW,GAAG,IAAI,YAAY,EAAE,CAAC;KAKnD;IAHQ,KAAK;QACV,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;KAChD;;gHAbU,kBAAkB;oGAAlB,kBAAkB,8OAElBA,oBAAyB,gDCbtC,+MAMa;4FDKA,kBAAkB;kBAN9B,SAAS;mBAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,WAAW,EAAE,6BAA6B;oBAC1C,SAAS,EAAE,CAAC,6BAA6B,CAAC;oBAC1C,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;8BAIQ,yBAAyB;sBAD/B,SAAS;uBAACA,oBAAyB;gBAGpB,UAAU;sBAAzB,KAAK;gBACU,IAAI;sBAAnB,KAAK;gBAEW,aAAa;sBAA7B,MAAM;gBACU,WAAW;sBAA3B,MAAM;;;MESI,8BAA8B;IAd3C;QA6BS,gBAAW,GAAG,IAAI,YAAY,EAAU,CAAC;QAGzC,kBAAa,GAAG,IAAI,YAAY,EAAQ,CAAC;QAEzC,2BAAsB,GAAG,sBAAsB,CAAC;KAWxD;IATQ,UAAU,CAAC,IAAI;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClC;IAEM,KAAK;QACV,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;KACjC;;4HA7BU,8BAA8B;gHAA9B,8BAA8B,6PAE9B,kBAAkB,gDC/B/B,6iCA6Be,6nBDPE;QACb;YACE,OAAO,EAAE,gBAAgB;YACzB,WAAW,EAAE,MAAM;SACpB;KACF;4FAEU,8BAA8B;kBAd1C,SAAS;mBAAC;oBACT,QAAQ,EAAE,0BAA0B;oBACpC,WAAW,EAAE,wCAAwC;oBACrD,SAAS,EAAE;wBACT,wCAAwC;qBACzC;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE;wBACb;4BACE,OAAO,EAAE,gBAAgB;4BACzB,WAAW,EAAE,MAAM;yBACpB;qBACF;iBACF;8BAIQ,kBAAkB;sBADxB,SAAS;uBAAC,kBAAkB;gBAItB,IAAI;sBADV,KAAK;gBAIC,SAAS;sBADf,KAAK;gBAIC,IAAI;sBADV,KAAK;gBAIC,WAAW;sBADjB,MAAM;gBAIA,aAAa;sBADnB,MAAM;;;MEdI,0BAA0B;IAoCrC,YACU,MAAyB,EACzB,OAAiB;QADjB,WAAM,GAAN,MAAM,CAAmB;QACzB,YAAO,GAAP,OAAO,CAAU;QA1BpB,sBAAiB,GAAG,IAAI,CAAC;QASzB,aAAQ,GAAG,IAAI,YAAY,EAAW,CAAC;QAGvC,gBAAW,GAAG,IAAI,YAAY,EAAW,CAAC;QAG1C,kBAAa,GAAG,IAAI,YAAY,EAAW,CAAC;QAE5C,qBAAgB,GAAG,KAAK,CAAC;QACzB,SAAI,GAAG,EAAE,CAAC;QACV,kBAAa,GAAG,IAAI,CAAC;QACrB,2BAAsB,GAAG,sBAAsB,CAAC;QAE/C,cAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;KAMvC;IAED,IAAW,SAAS;QAClB,IAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,sBAAsB,CAAC,KAAK,EAAE;YAChE,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;SACtC;QAED,IAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,sBAAsB,CAAC,GAAG,EAAE;YAC9D,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;SAC5C;KACF;IAEM,QAAQ;QACb,IAAI,CAAC,WAAW;aACf,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,CAAC,IAAY;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB,CAAC,CAAC;KACJ;IAEM,WAAW;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEM,eAAe;QACpB,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;KACxC;IAEM,UAAU;QACf,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAEf,IAAI,CAAC,MAAM,EAAE;aACV,IAAI,CACH,QAAQ,CAAC;YACP,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC3B,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;SACxC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,EAAE,CAAA;KACf;IAEM,uBAAuB;QAC5B,IAAI,CAAC,sBAAsB,EAAE;aAC5B,SAAS,CAAC,CAAC,mBAAmB;YAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,iCAAiC,EACjC;gBACE,IAAI,EAAE;oBACJ,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;oBAC3C,mBAAmB;oBACnB,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;iBACxD;aACF,CACF;iBACE,WAAW,EAAE;iBACb,IAAI,CACH,MAAM,CAAC,CAAC,kBAAkB,KAAK,CAAC,CAAC,kBAAkB,CAAC,CACrD;iBACA,SAAS,CAAC,CAAC,kBAAkB;gBAC5B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;gBAC7C,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBAEf,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBAE3B,UAAU,CAAC;oBACT,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;iBACxC,CAAC,CAAC;aACJ,CAAC,CAAC;SACN,CAAC,CAAC;KACJ;;wHAnHU,0BAA0B;4GAA1B,0BAA0B,6aAE1B,8BAA8B,gDClC3C,u3BA6BM;4FDGO,0BAA0B;kBARtC,SAAS;mBAAC;oBACT,QAAQ,EAAE,qBAAqB;oBAC/B,WAAW,EAAE,mCAAmC;oBAChD,SAAS,EAAE;wBACT,mCAAmC;qBACpC;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;+HAIQ,yBAAyB;sBAD/B,SAAS;uBAAC,8BAA8B;gBAIlC,kBAAkB;sBADxB,KAAK;gBAIC,MAAM;sBADZ,KAAK;gBAIC,iBAAiB;sBADvB,KAAK;gBAIC,sBAAsB;sBAD5B,KAAK;gBAIC,wBAAwB;sBAD9B,KAAK;gBAIC,QAAQ;sBADd,MAAM;gBAIA,WAAW;sBADjB,MAAM;gBAIA,aAAa;sBADnB,MAAM;;;MExCI,eAAe;;6GAAf,eAAe;8GAAf,eAAe,iBANxB,kBAAkB,aAHlBC,iBAAsB,aAMtB,kBAAkB;8GAGT,eAAe,YAVjB;YACPA,iBAAsB;SACvB;4FAQU,eAAe;kBAX3B,QAAQ;mBAAC;oBACR,OAAO,EAAE;wBACPA,iBAAsB;qBACvB;oBACD,YAAY,EAAE;wBACZ,kBAAkB;qBACnB;oBACD,OAAO,EAAE;wBACP,kBAAkB;qBACnB;iBACF;;;MCsCY,uBAAuB;;qHAAvB,uBAAuB;sHAAvB,uBAAuB,iBAThC,0BAA0B;QAC1B,8BAA8B;QAC9B,iCAAiC,aAtBjC,YAAY;QACZ,WAAW;QAEX,kBAAkB;QAClB,cAAc;QACd,eAAe;QAEf,YAAY;QACZ,kBAAkB;QAClB,cAAc;QAEd,eAAe;QACf,iBAAiB;QACjB,wBAAwB;QACxB,gBAAgB;QAChB,gBAAgB;QAChB,aAAa;QACb,cAAc,aAQd,0BAA0B;sHAIjB,uBAAuB,aAFvB,EAAE,YA5BJ;YACP,YAAY;YACZ,WAAW;YAEX,kBAAkB;YAClB,cAAc;YACd,eAAe;YAEf,YAAY;YACZ,kBAAkB;YAClB,cAAc;YAEd,eAAe;YACf,iBAAiB;YACjB,wBAAwB;YACxB,gBAAgB;YAChB,gBAAgB;YAChB,aAAa;YACb,cAAc;SACf;4FAWU,uBAAuB;kBA/BnC,QAAQ;mBAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBAEX,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBAEf,YAAY;wBACZ,kBAAkB;wBAClB,cAAc;wBAEd,eAAe;wBACf,iBAAiB;wBACjB,wBAAwB;wBACxB,gBAAgB;wBAChB,gBAAgB;wBAChB,aAAa;wBACb,cAAc;qBACf;oBACD,YAAY,EAAE;wBACZ,0BAA0B;wBAC1B,8BAA8B;wBAC9B,iCAAiC;qBAClC;oBACD,OAAO,EAAE;wBACP,0BAA0B;qBAC3B;oBACD,SAAS,EAAE,EAAE;iBACd;;;MCpCY,YAAY;IAavB,YACmC,KAAU,EACnC,UAAsC,EACtC,MAAyB,EACzB,QAAmB;QAHM,UAAK,GAAL,KAAK,CAAK;QACnC,eAAU,GAAV,UAAU,CAA4B;QACtC,WAAM,GAAN,MAAM,CAAmB;QACzB,aAAQ,GAAR,QAAQ,CAAW;QAXtB,SAAI,GAA6B,SAAS,CAAC;QAqD3C,WAAM,GAAG;YACd,OAAO,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;iBACnE,IAAI,CACH,GAAG,CAAC;gBACF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;gBACvE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC7B,CAAC,CACH,CAAC;SACL,CAAC;KAjDE;IAEG,QAAQ;QACb,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC;KACpE;IAEM,aAAa;QAClB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC9B;IAEM,YAAY;QACjB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC7B;IAEM,aAAa,CAAC,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC;YACnD,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;aACC,SAAS,CAAC,CAAC,QAAQ;YAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;SAC5B,CAAC,CAAC;KACN;IAEM,aAAa;QAClB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;KAC3B;IAEM,WAAW,CAAC,IAAI;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACnB;IAEM,IAAI;QACT,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;KAC1B;;0GAzDU,YAAY,kBAcb,eAAe;8FAdd,YAAY,0FAEZ,eAAe,gDCpB5B,w6YAoIA;4FDlHa,YAAY;kBALxB,SAAS;mBAAC;oBACT,WAAW,EAAE,sBAAsB;oBACnC,SAAS,EAAE,CAAC,sBAAsB,CAAC;oBACnC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;0BAeI,MAAM;2BAAC,eAAe;+HAXlB,IAAI;sBADV,SAAS;uBAAC,eAAe;;;MEAf,cAAc;IAWzB,YACmC,KAAU,EACnC,UAAwC,EACxC,MAAyB,EACzB,QAAmB;QAHM,UAAK,GAAL,KAAK,CAAK;QACnC,eAAU,GAAV,UAAU,CAA8B;QACxC,WAAM,GAAN,MAAM,CAAmB;QACzB,aAAQ,GAAR,QAAQ,CAAW;QAPtB,uBAAkB,GAAG,IAAI,CAAC;QAoB1B,WAAM,GAAG;YACd,OAAO,EAAE,CAAC,IAAI,CAAC;iBACZ,IAAI,CACH,SAAS,CAAC;gBACR,OAAO,IAAI,CAAC,kBAAkB;oBAC5B,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;yBAC5D,IAAI,CACH,GAAG,CAAC,CAAC,kBAAkB;wBACrB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;wBAC3D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;qBAC3C,CAAC,CACH;oBACH,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC;wBACnD,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;qBACtB,CAAC;yBACC,IAAI,CACH,GAAG,CAAC,CAAC,kBAAkB;wBACrB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;wBAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;wBAClB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;qBAC5B,CAAC,CACH,CAAC;aACP,CAAC,CACH,CAAC;SACL,CAAC;QArCA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC;KACpE;IAEM,MAAM;QACX,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,EAAE;aACnD,SAAS,CAAC;YACT,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;SACnD,CAAC,CAAC;KACN;IA8BM,aAAa;QAClB,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SAC3B;KACF;IAEM,WAAW,CAAC,IAAI;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;;4GAhEU,cAAc,kBAYf,eAAe;gGAZd,cAAc,0FAEd,eAAe,gDCtB5B,qjDAqDA;4FDjCa,cAAc;kBAL1B,SAAS;mBAAC;oBACT,WAAW,EAAE,wBAAwB;oBACrC,SAAS,EAAE,CAAC,wBAAwB,CAAC;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;0BAaI,MAAM;2BAAC,eAAe;+HATlB,IAAI;sBADV,SAAS;uBAAC,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MEHlC,eAAe;IAY1B,YACmC,KAAU,EACnC,UAAyC,EACzC,MAAyB,EACzB,QAAmB;QAHM,UAAK,GAAL,KAAK,CAAK;QACnC,eAAU,GAAV,UAAU,CAA+B;QACzC,WAAM,GAAN,MAAM,CAAmB;QACzB,aAAQ,GAAR,QAAQ,CAAW;QARtB,uBAAkB,GAAG,IAAI,CAAC;QAsB1B,WAAM,GAAG;YACd,OAAO,EAAE,CAAC,IAAI,CAAC;iBACZ,IAAI,CACH,SAAS,CAAC;gBACR,OAAO,IAAI,CAAC,kBAAkB;oBAC5B,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;yBAC5D,IAAI,CACH,GAAG,CAAC,CAAC,kBAAkB;wBACrB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;wBAClE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;qBAC3C,CAAC,CACH;oBACH,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC;wBACnD,IAAI,EAAE,KAAK;wBACX,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;wBAC9B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;wBACjC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;wBAChC,OAAO,EAAE,IAAI,CAAC,OAAO;qBACtB,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,kBAAkB;wBACrB,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;wBAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;wBAClB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;qBAC5B,CAAC,CACH,CAAC;aACL,CAAC,CACH,CAAC;SACL,CAAC;QAvCA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;QAC3D,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC;KACpE;IAEM,MAAM;QACX,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,EAAE;aACnD,SAAS,CAAC;YACT,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;SACnD,CAAC,CAAC;KACN;IA+BM,aAAa;QAClB,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SAC3B;KACF;IAEM,WAAW,CAAC,IAAI;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;;6GAnEU,eAAe,kBAahB,eAAe;iGAbd,eAAe,0FAEf,eAAe,gDCrB5B,otDAsDA;4FDnCa,eAAe;kBAL3B,SAAS;mBAAC;oBACT,WAAW,EAAE,yBAAyB;oBACtC,SAAS,EAAE,CAAC,yBAAyB,CAAC;oBACtC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;0BAcI,MAAM;2BAAC,eAAe;+HAVlB,IAAI;sBADV,SAAS;uBAAC,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;MEPlC,sBAAsB;IAYjC,YACU,OAAkB;QAAlB,YAAO,GAAP,OAAO,CAAW;QAXpB,cAAS,GAAG,IAAI,OAAO,EAAE,CAAC;QAQ1B,0BAAqB,GAAG,IAAI,eAAe,CAAQ,EAAE,CAAC,CAAC;KAI3D;IAEJ,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,qBAAqB;aAC9B,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC;KACL;IAED,IAAW,mBAAmB;QAC5B,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC;KAC9C;IAED,IAAW,sBAAsB;QAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;KACvD;IAED,IAAW,wBAAwB;QACjC,OAAO,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;KAClE;IAED,IAAW,sBAAsB;QAC/B,OAAO,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;KAChE;IAED,IAAW,sBAAsB;QAC/B,OAAO,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;KAChE;IAEM,sBAAsB,CAAC,IAAI;QAChC,OAAO,IAAI,CAAC,mBAAmB;aAC9B,MAAM,CAAC,CAAC,kBAAkB;YACzB,OAAO,kBAAkB,CAAC,IAAI,KAAK,IAAI,CAAC;SACzC,CAAC,CAAC;KACJ;IAEM,qBAAqB,CAAC,IAAI;QAC/B,OAAO,IAAI,CAAC,mBAAmB;aAC9B,IAAI,CAAC,CAAC,kBAAkB;YACvB,OAAO,kBAAkB,CAAC,IAAI,KAAK,IAAI,CAAC;SACzC,CAAC,CAAC;KACJ;IAEM,gCAAgC,CAAC,KAAK;QAC3C,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;KACxC;IAEM,+BAA+B,CAAC,KAAK;QAC1C,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;KACvC;IAEM,gCAAgC,CAAC,KAAK;QAC3C,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;KACxC;IAEM,gCAAgC,CAAC,KAAK;QAC3C,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;KACxC;IAEM,gCAAgC,CAAC,KAAK;QAC3C,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;KACxC;IAEM,qBAAqB,CAAC,KAAK;QAChC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;IAEM,wBAAwB,CAAC,kBAAkB;QAChD,OAAO,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC;aACtD,IAAI,CACH,GAAG,CAAC;YACF,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC,CAAC,CACH,CAAC;KACL;IAEM,wBAAwB,CAAC,kBAAkB;QAChD,OAAO,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC;aACtD,IAAI,CACH,GAAG,CAAC;YACF,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC,CAAC,CACH,CAAC;KACL;IAEM,wBAAwB,CAAC,kBAAkB;QAChD,OAAO,IAAI,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;KAC3D;IAEM,wBAAwB;QAC7B,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC;KACzC;IAEM,uBAAuB;QAC5B,IAAI,CAAC,wBAAwB,EAAE;aAC5B,SAAS,CAAC,CAAC,mBAAmB;YAC7B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACtD,CAAC,CAAC;KACN;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;KAC/D;IAEM,WAAW;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEM,MAAM,CAAC,cAAc;QAC1B,OAAO,IAAI,CAAC,aAAa,EAAE;aACxB,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE;YACjD,IAAI,EAAE;gBACJ,cAAc;gBACd,sBAAsB,EAAE,IAAI;aAC7B;SACF,CAAC;aACC,WAAW,EAAE,CACf,EACD,GAAG,CAAC;YACF,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC;KACL;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,aAAa,EAAE;aACxB,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE;YAChD,IAAI,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE;SACvC,CAAC;aACC,WAAW,EAAE,CACf,EACD,GAAG,CAAC;YACF,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC;KACL;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,aAAa,EAAE;aACxB,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE;YAC9C,IAAI,EAAE,EAAE,sBAAsB,EAAE,IAAI,EAAG;SACxC,CAAC;aACC,WAAW,EAAE,CACf,EACD,GAAG,CAAC;YACF,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC;KACL;;oHAzKU,sBAAsB;wHAAtB,sBAAsB;4FAAtB,sBAAsB;kBADlC,UAAU;;;MCFE,kBAAkB;;gHAAlB,kBAAkB;oGAAlB,kBAAkB,qDCX/B,sBAAoB;4FDWP,kBAAkB;kBAN9B,SAAS;mBAAC;oBACT,QAAQ,EAAE,eAAe;oBACzB,WAAW,EAAE,4BAA4B;oBACzC,SAAS,EAAE,CAAC,4BAA4B,CAAC;oBACzC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;;MEQY,4BAA4B;IAUvC,YACU,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;QANV,YAAO,GAAG,IAAI,YAAY,EAAyB,CAAC;KAQpE;IAEM,QAAQ;QACb,IAAI,CAAC,UAAU,GAAG;YAChB,UAAU,EAAE;gBACV;oBACE,KAAK,EAAE,CAAC,kBAAkB;wBACxB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;4BACnB,KAAK,EAAE,SAAS;4BAChB,QAAQ,EAAE,oDAAoD;yBAC/D,CAAC;6BACC,IAAI,CACH,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,CAAC,EAC5D,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB;6BACxC,wBAAwB,CAAC,kBAAkB,CAAC,CAAC,CACjD;6BACA,SAAS,CAAC;4BACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;yBACvC,CAAC,CAAC;qBACN;oBACD,KAAK,EAAE,QAAQ;iBAChB;aACF;YACD,KAAK,EAAE;gBACL,OAAO,IAAI,CAAC,sBAAsB,CAAC,oBAAoB;qBACpD,IAAI,CACH,GAAG,CAAC,CAAC,mBAAmB,MAAM;oBAC5B,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,kBAAkB;wBAClD,OAAO,kBAAkB,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;qBAC9C,CAAC;iBACH,CAAC,CACD,CACF,CAAC;aACL;SACF,CAAC;KACH;;0HAhDU,4BAA4B;8GAA5B,4BAA4B,6KClBzC,ykBAgBU;4FDEG,4BAA4B;kBANxC,SAAS;mBAAC;oBACT,QAAQ,EAAE,0BAA0B;oBACpC,WAAW,EAAE,uCAAuC;oBACpD,SAAS,EAAE,CAAC,uCAAuC,CAAC;oBACpD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;iGAGiB,sBAAsB;sBAArC,KAAK;gBACU,IAAI;sBAAnB,KAAK;gBAEW,OAAO;sBAAvB,MAAM;;;MERI,gBAAgB;IAM3B,YACmC,KAAU,EACnC,UAA0C,EAC1C,QAAmB;QAFM,UAAK,GAAL,KAAK,CAAK;QACnC,eAAU,GAAV,UAAU,CAAgC;QAC1C,aAAQ,GAAR,QAAQ,CAAW;QALtB,2BAAsB,GAAG,sBAAsB,CAAC;QAOrD,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;QAC3D,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;KAC5C;IAEM,GAAG;QACR,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;aACpD,SAAS,EAAE,CAAC;KAChB;IAEM,OAAO;QACZ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;QAClE,IAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE;YACjF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SACzB;KACF;;8GAzBU,gBAAgB,kBAOjB,eAAe;kGAPd,gBAAgB,oDCf7B,spBA2BA;4FDZa,gBAAgB;kBAL5B,SAAS;mBAAC;oBACT,WAAW,EAAE,0BAA0B;oBACvC,SAAS,EAAE,CAAC,0BAA0B,CAAC;oBACvC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;0BAQI,MAAM;2BAAC,eAAe;;;MEPd,eAAe;IAK1B,YACmC,KAAU,EACnC,UAAyC,EACzC,QAAmB;QAFM,UAAK,GAAL,KAAK,CAAK;QACnC,eAAU,GAAV,UAAU,CAA+B;QACzC,aAAQ,GAAR,QAAQ,CAAW;QALtB,2BAAsB,GAAG,sBAAsB,CAAC;QAOrD,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;KAC5D;IAEM,GAAG;QACR,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE;aACnC,SAAS,EAAE,CAAC;KAChB;IAEM,OAAO;QACZ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QAC3D,IAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE;YACnF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SACzB;KACF;;6GAvBU,eAAe,kBAMhB,eAAe;iGANd,eAAe,oDCf5B,yoBA2BA;4FDZa,eAAe;kBAL3B,SAAS;mBAAC;oBACT,WAAW,EAAE,yBAAyB;oBACtC,SAAS,EAAE,CAAC,yBAAyB,CAAC;oBACtC,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;0BAOI,MAAM;2BAAC,eAAe;;;MEDd,sBAAsB;IAUjC,YACmC,KAAU,EACnC,MAAyB,EACzB,OAAkB,EAClB,QAAmB;QAHM,UAAK,GAAL,KAAK,CAAK;QACnC,WAAM,GAAN,MAAM,CAAmB;QACzB,YAAO,GAAP,OAAO,CAAW;QAClB,aAAQ,GAAR,QAAQ,CAAW;QAVtB,4BAAuB,GAAG,EAAE,CAAC;QAC7B,2BAAsB,GAAG,sBAAsB,CAAC;QAE/C,cAAS,GAAG,IAAI,OAAO,EAAE,CAAC;KAQ9B;IAEG,QAAQ;QACb,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAChE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB;aAChE,MAAM,CAAC,CAAC,uBAAuB,EAAE,sBAAsB;YACtD,uBAAuB,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC;YAEvD,OAAO,uBAAuB,CAAC;SAChC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,CAAC,sBAAsB,CAAC,oBAAoB;aAC7C,SAAS,CAAC,CAAC,mBAAmB;YAC7B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;SAC5B,CAAC,CAAC;KACN;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,sBAAsB,CAAC,sBAAsB;aACxD,IAAI,CAAC,CAAC,kBAAkB;YACvB,OAAO,kBAAkB,CAAC,OAAO,CAAC;SACnC,CAAC,CAAC;KACJ;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,sBAAsB,CAAC,sBAAsB;aACxD,IAAI,CAAC,CAAC,kBAAkB;YACvB,OAAO,kBAAkB,CAAC,OAAO,CAAC;SACnC,CAAC,CAAC;KACJ;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,sBAAsB,CAAC,wBAAwB;aAC1D,IAAI,CAAC,CAAC,kBAAkB;YACvB,OAAO,kBAAkB,CAAC,OAAO,CAAC;SACnC,CAAC,CAAC;KACJ;IAED,IAAW,yBAAyB;QAClC,OAAO,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;KACtF;IAED,IAAW,wBAAwB;QACjC,OAAO,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;KACtF;IAED,IAAW,0BAA0B;QACnC,OAAO,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;KACxF;IAEM,iBAAiB;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAClC,IAAI,EAAE;gBACJ,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,cAAc,EAAE,IAAI,CAAC,eAAe;aACrC;SACF,CAAC,CAAC;KACJ;IAEM,cAAc;QACnB,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;aACrD,SAAS,EAAE,CAAC;KAChB;IAEM,kBAAkB;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE;YACjC,IAAI,EAAE;gBACJ,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;aACpD;SACF,CAAC,CAAC;KACJ;IAEM,eAAe;QACpB,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE;aACnC,SAAS,EAAE,CAAC;KAChB;IAEM,SAAS;QACd,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;QAEvE,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB;aAChD,IAAI,CAAC,CAAC,mBAAmB;YACxB,OAAO,mBAAmB,CAAC,IAAI,KAAK,sBAAsB,CAAC,GAAG,CAAC;SAChE,CAAC,CAAC;QAEL,IAAG,kBAAkB,EAAE;YACrB,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,kBAAkB,CAAC;iBACrE,SAAS,CAAC;gBACT,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;aAC5B,CAAC,CAAC;SACN;KACF;IAEM,MAAM;QACX,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE;aACjC,SAAS,EAAE,CAAC;KAChB;IAEM,WAAW;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;;oHAtHU,sBAAsB,kBAWvB,eAAe;wGAXd,sBAAsB,oDCpBnC,6qIA2HA;4FDvGa,sBAAsB;kBALlC,SAAS;mBAAC;oBACT,WAAW,EAAE,iCAAiC;oBAC9C,SAAS,EAAE,CAAC,iCAAiC,CAAC;oBAC9C,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAChD;;0BAYI,MAAM;2BAAC,eAAe;;;MELd,oBAAoB;IAe/B,YACU,MAAyB,EACzB,OAAkB,EAClB,uBAA+C;QAF/C,WAAM,GAAN,MAAM,CAAmB;QACzB,YAAO,GAAP,OAAO,CAAW;QAClB,4BAAuB,GAAvB,uBAAuB,CAAwB;QALjD,cAAS,GAAG,IAAI,OAAO,EAAE,CAAC;KAM9B;IAEG,QAAQ;QACb,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,IAAI;YAC7D,sBAAsB,CAAC,GAAG;YAC1B,sBAAsB,CAAC,KAAK;YAC5B,sBAAsB,CAAC,GAAG;SAC3B,CAAC;QAEF,IAAI,CAAC,uBAAuB,CAAC,+BAA+B,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC5F,IAAI,CAAC,uBAAuB,CAAC,gCAAgC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC7F,IAAI,CAAC,uBAAuB,CAAC,gCAAgC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC7F,IAAI,CAAC,uBAAuB,CAAC,gCAAgC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC7F,IAAI,CAAC,uBAAuB,CAAC,gCAAgC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC7F,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAGvE,IAAI,CAAC,uBAAuB,CAAC,oBAAoB;aAC9C,SAAS,CAAC,CAAC,mBAAmB;YAC7B,MAAM,KAAK,GAAG;gBACZ,GAAG,EAAE,cAAc;gBACnB,KAAK,EAAE,OAAO;gBACd,GAAG,EAAE,mBAAmB;aACzB,CAAC;YAEF,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CACzB,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,kBAAkB;gBACnD,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBAEtC,OAAO,KAAK,CAAC;aACd,EAAE,EAAE,CAAC,CACP;iBACE,GAAG,CAAC,CAAC,IAAI;gBACR,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;aACpB,CAAC,CAAC;YAEL,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;SAC5B,CAAC,CAAC;QAEL,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,EAAE,CAAC;KACxD;IAEM,MAAM;QACX,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC1D,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE;gBACJ,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,sBAAsB,EAAE,IAAI,CAAC,uBAAuB;gBACpD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;aACtD;SACF,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,EAAE;aACpB,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;SAC5B,CAAC,CAAC;KACN;IAEM,MAAM;QACX,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,EAAE,CAAC;KACxD;IAEM,WAAW;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;;kHAvFU,oBAAoB;sGAApB,oBAAoB,wbAFpB,CAAC,sBAAsB,CAAC,0BCxBrC,6eAeiB;4FDWJ,oBAAoB;kBAPhC,SAAS;mBAAC;oBACT,QAAQ,EAAE,eAAe;oBACzB,WAAW,EAAE,6BAA6B;oBAC1C,SAAS,EAAE,CAAC,6BAA6B,CAAC;oBAC1C,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,SAAS,EAAE,CAAC,sBAAsB,CAAC;iBACpC;kKAGiB,aAAa;sBAA5B,KAAK;gBACU,cAAc;sBAA7B,KAAK;gBACU,uBAAuB;sBAAtC,KAAK;gBACU,wBAAwB;sBAAvC,KAAK;gBACU,wBAAwB;sBAAvC,KAAK;gBACU,wBAAwB;sBAAvC,KAAK;gBACU,wBAAwB;sBAAvC,KAAK;gBACU,wBAAwB;sBAAvC,KAAK;;;MEkCK,iBAAiB;;+GAAjB,iBAAiB;gHAAjB,iBAAiB,iBAZ1B,oBAAoB;QACpB,sBAAsB;QACtB,gBAAgB;QAChB,YAAY;QACZ,cAAc;QACd,4BAA4B;QAC5B,eAAe;QACf,eAAe;QACf,kBAAkB,aA9BlB,YAAY;QACZ,WAAW;QAEX,eAAe;QACf,eAAe;QACf,cAAc;QACd,aAAa;QACb,iBAAiB;QAEjB,cAAc;QACd,YAAY;QACZ,YAAY;QACZ,aAAa;QACb,aAAa;QACb,gBAAgB;QAChB,eAAe;QAEf,eAAe;QAEf,YAAY,aAaJ,oBAAoB;gHAEnB,iBAAiB,YAnCnB;YACP,YAAY;YACZ,WAAW;YAEX,eAAe;YACf,eAAe;YACf,cAAc;YACd,aAAa;YACb,iBAAiB;YAEjB,cAAc;YACd,YAAY;YACZ,YAAY;YACZ,aAAa;YACb,aAAa;YACb,gBAAgB;YAChB,eAAe;YAEf,eAAe;YAEf,YAAY;SACb;4FAcU,iBAAiB;kBApC7B,QAAQ;mBAAC;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBAEX,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,iBAAiB;wBAEjB,cAAc;wBACd,YAAY;wBACZ,YAAY;wBACZ,aAAa;wBACb,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBAEf,eAAe;wBAEf,YAAY;qBACb;oBACD,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,sBAAsB;wBACtB,gBAAgB;wBAChB,YAAY;wBACZ,cAAc;wBACd,4BAA4B;wBAC5B,eAAe;wBACf,eAAe;wBACf,kBAAkB;qBACnB;oBACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;iBAChC;;;ACpED;;;;;;"}
1
+ {"version":3,"file":"firestitch-2fa.js","sources":["../../src/app/enums/verification-method-type.enum.ts","../../src/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.ts","../../src/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.html","../../src/app/modules/code-input/components/code-input/code-input.component.ts","../../src/app/modules/code-input/components/code-input/code-input.component.html","../../src/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.ts","../../src/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.html","../../src/app/modules/resend/components/resend/resend.component.ts","../../src/app/modules/resend/components/resend/resend.component.html","../../src/app/modules/verification/components/2fa-verification/2fa-verification.component.ts","../../src/app/modules/verification/components/2fa-verification/2fa-verification.component.html","../../src/app/modules/code-input/code-input.module.ts","../../src/app/modules/resend/resend.module.ts","../../src/app/modules/verification/fs-2fa-verification.module.ts","../../src/app/modules/manage/components/app/app.component.ts","../../src/app/modules/manage/components/app/app.component.html","../../src/app/modules/manage/components/email/email.component.ts","../../src/app/modules/manage/components/email/email.component.html","../../src/app/modules/manage/components/number/number.component.ts","../../src/app/modules/manage/components/number/number.component.html","../../src/app/modules/manage/services/two-factor-manage.service.ts","../../src/app/modules/manage/components/defaulted/defaulted.component.ts","../../src/app/modules/manage/components/defaulted/defaulted.component.html","../../src/app/modules/manage/components/verification-methods/verification-methods.component.ts","../../src/app/modules/manage/components/verification-methods/verification-methods.component.html","../../src/app/modules/manage/components/numbers/numbers.component.ts","../../src/app/modules/manage/components/numbers/numbers.component.html","../../src/app/modules/manage/components/emails/emails.component.ts","../../src/app/modules/manage/components/emails/emails.component.html","../../src/app/modules/manage/components/manage-methods/manage-methods.component.ts","../../src/app/modules/manage/components/manage-methods/manage-methods.component.html","../../src/app/modules/manage/components/2fa-manage/2fa-manage.component.ts","../../src/app/modules/manage/components/2fa-manage/2fa-manage.component.html","../../src/app/modules/manage/fs-2f-manage.module.ts","../../src/firestitch-2fa.ts"],"sourcesContent":["export enum VerificationMethodType {\n Sms = 'sms',\n Email = 'email',\n App = 'app',\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Inject,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\n\n\n@Component({\n templateUrl: './2fa-verification-methods.component.html',\n styleUrls: [\n './2fa-verification-methods.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2faVerificationMethodsComponent {\n\n public verificationMethod: IFsVerificationMethod;\n public phone: string;\n public code: string;\n public verificationMethods: Record<string, IFsVerificationMethod[]>;\n public readonly verificationMethodType = VerificationMethodType;\n\n private _selectVerificationMethod: (IFsVerificationMethod) => Observable<IFsVerificationMethod>; \n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n private _dialogData: any,\n private _dialogRef: MatDialogRef<Fs2faVerificationMethodsComponent>,\n ) {\n this._selectVerificationMethod = _dialogData.selectVerificationMethod;\n this._setActiveMethod();\n this._initMethods(_dialogData.verificationMethods);\n }\n\n public compareWith(o1, o2) {\n return o1 && o2 && o1.id === o2.id\n }\n\n public setVerificationMethod = () => {\n return this._selectVerificationMethod(this.verificationMethod)\n .pipe(\n tap((method: IFsVerificationMethod) => {\n this._dialogRef.close(method);\n })\n );\n };\n\n private _setActiveMethod(): void {\n this.verificationMethod = this._dialogData?.verificationMethod;\n }\n\n private _initMethods(verificationMethods): void {\n this.verificationMethods = verificationMethods\n .reduce((acc, method) => {\n if (!acc[method.type]) {\n acc[method.type] = [];\n }\n\n acc[method.type].push(method);\n\n return acc;\n }, {});\n }\n}\n","<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 Verification code send to one of following 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 Verification code send to one of following email\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 Verification code generated by an 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","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, ViewChild } from '@angular/core';\n\nimport { CodeInputComponent as AngularCodeInputComponent } from 'angular-code-input';\n\n\n@Component({\n selector: 'app-code-input',\n templateUrl: './code-input.component.html',\n styleUrls: ['./code-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CodeInputComponent {\n\n @ViewChild(AngularCodeInputComponent)\n public angularCodeInputComponent: AngularCodeInputComponent;\n\n @Input() public codeLength: number;\n @Input() public code;\n\n @Output() public codeCompleted = new EventEmitter();\n @Output() public codeChanged = new EventEmitter();\n \n public focus(): void {\n this.angularCodeInputComponent.focusOnField(0);\n }\n}","<code-input\r\n [initialFocusField]=\"0\"\r\n [codeLength]=\"6\"\r\n [code]=\"code\"\r\n (codeCompleted)=\"codeCompleted.emit($event)\"\r\n (codeChanged)=\"codeChanged.emit($event)\">\r\n</code-input>","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { CodeInputComponent } from '../../../../modules/code-input/components/code-input';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\n\n\n@Component({\n selector: 'fs-2fa-verification-code',\n templateUrl: './2fa-verification-code.component.html',\n styleUrls: [\n './2fa-verification-code.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [\n {\n provide: ControlContainer,\n useExisting: NgForm,\n },\n ],\n})\nexport class Fs2faVerificationCodeComponent {\n\n @ViewChild(CodeInputComponent)\n public codeInputComponent: CodeInputComponent;\n\n @Input()\n public type: VerificationMethodType;\n\n @Input()\n public recipient: string;\n\n @Input()\n public code;\n\n @Output()\n public codeChanged = new EventEmitter<string>();\n\n @Output()\n public codeCompleted = new EventEmitter<void>();\n\n public VerificationMethodType = VerificationMethodType;\n\n public codeChange(code): void {\n this.code = code;\n this.codeChanged.emit(this.code);\n }\n\n public focus(): void {\n this.codeInputComponent.focus();\n }\n\n}\n","<ng-container *ngIf=\"type === VerificationMethodType.Sms\">\n <p class=\"description\">\n A text message with a verification code was just\n 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 (codeChanged)=\"codeChange($event)\"\n (codeCompleted)=\"codeCompleted.emit()\">\n </app-code-input> \n</ng-template> ","import { Component, ChangeDetectionStrategy, Output, EventEmitter, Input, ChangeDetectorRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { finalize, takeUntil } from 'rxjs/operators';\n\n\n@Component({\n selector: 'app-resend',\n templateUrl: './resend.component.html',\n styleUrls: ['./resend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResendComponent {\n\n @Input() public resend: () => Observable<any>;\n \n public resendInProgress = false;\n\n private _destroy$ = new Subject();\n \n constructor(\n private _cdRef: ChangeDetectorRef,\n ) {}\n\n public resendClick(): void {\n this.resendInProgress = true;\n this.resend()\n .pipe(\n finalize(() => {\n this.resendInProgress = false; \n this._cdRef.markForCheck(); \n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n\n}","<ng-container *ngIf=\"!resendInProgress else sending\">\n Didn't receive a code? <a (click)=\"resendClick()\">Resend</a>\n</ng-container>\n<ng-template #sending>\n <div class=\"sending\">\n <mat-spinner [diameter]=\"12\"></mat-spinner> Sending\n </div>\n</ng-template>\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { FsDialog } from '@firestitch/dialog';\n\nimport { filter, finalize, takeUntil, tap } from 'rxjs/operators';\n\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\nimport { Fs2faVerificationMethodsComponent } from '../2fa-verification-methods/2fa-verification-methods.component';\nimport { Observable, Subject } from 'rxjs';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { Fs2faVerificationCodeComponent } from '../2fa-verification-code/2fa-verification-code.component';\n\n\n@Component({\n selector: 'fs-2fa-verification',\n templateUrl: './2fa-verification.component.html',\n styleUrls: [\n './2fa-verification.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Fs2faVerificationComponent implements OnDestroy, AfterViewInit, OnInit {\n\n @ViewChild(Fs2faVerificationCodeComponent)\n public verificationCodeComponent: Fs2faVerificationCodeComponent;\n\n @Input()\n public verificationMethod: IFsVerificationMethod;\n\n @Input()\n public resend: () => Observable<void>;\n\n @Input()\n public showTrustedDevice = true;\n\n @Input()\n public getVerificationMethods: () => Observable<IFsVerificationMethod[]>;\n\n @Input()\n public selectVerificationMethod: (verificationMethod: IFsVerificationMethod) => Observable<IFsVerificationMethod>;\n\n @Output()\n public verified = new EventEmitter<unknown>();\n\n @Output()\n public codeChanged = new EventEmitter<unknown>();\n\n @Output()\n public codeCompleted = new EventEmitter<unknown>();\n\n public code = '';\n public trustedDevice = true;\n public VerificationMethodType = VerificationMethodType;\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _dialog: FsDialog,\n ) {}\n\n public get recipient(): string {\n if(this.verificationMethod.type === VerificationMethodType.Email) {\n return this.verificationMethod.email;\n }\n\n if(this.verificationMethod.type === VerificationMethodType.Sms) {\n return this.verificationMethod.phoneNumber;\n }\n }\n\n public ngOnInit(): void {\n this.codeChanged\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((code: string) => {\n this.code = code;\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public ngAfterViewInit(): void {\n this.verificationCodeComponent.focus(); \n }\n\n public resendCode = (): Observable<void> => {\n return this.resend()\n .pipe(\n tap(() => {\n this.code = '';\n }),\n finalize(() => {\n this.verificationCodeComponent.focus(); \n }),\n );\n }\n\n public showVerificationMethods(): void {\n this.getVerificationMethods()\n .subscribe((verificationMethods) => {\n this._dialog.open(\n Fs2faVerificationMethodsComponent,\n {\n data: {\n verificationMethod: this.verificationMethod,\n verificationMethods,\n selectVerificationMethod: this.selectVerificationMethod,\n }\n }\n )\n .afterClosed()\n .pipe(\n filter((verificationMethod) => !!verificationMethod),\n )\n .subscribe((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.code = '';\n\n this._cdRef.markForCheck();\n\n setTimeout(() => {\n this.verificationCodeComponent.focus();\n });\n });\n });\n }\n\n}\n","<div class=\"code-container\">\n <fs-2fa-verification-code\n [recipient]=\"recipient\"\n [type]=\"verificationMethod.type\"\n [code]=\"code\"\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)]=\"trustedDevice\">\n Trust this device\n </mat-checkbox>\n </div>\n\n <span class=\"resend\">\n <app-resend [resend]=\"resendCode\"></app-resend>\n </span>\n</div>","import { NgModule } from '@angular/core';\n\nimport { CodeInputModule as AngularCodeInputModule } from 'angular-code-input';\n\nimport { CodeInputComponent } from './components/code-input';\n\n\n@NgModule({\n imports: [\n AngularCodeInputModule,\n ],\n declarations: [\n CodeInputComponent,\n ],\n exports: [\n CodeInputComponent,\n ],\n})\nexport class CodeInputModule {\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { ResendComponent } from './components/resend';\n\n\n@NgModule({\n imports: [\n CommonModule,\n\n MatProgressSpinnerModule,\n ],\n declarations: [\n ResendComponent,\n ],\n exports: [\n ResendComponent,\n ],\n})\nexport class ResendModule {\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsRadioGroupModule } from '@firestitch/radiogroup';\nimport { FsDialogModule } from '@firestitch/dialog';\n\nimport { Fs2faVerificationComponent } from './components/2fa-verification/2fa-verification.component';\nimport { Fs2faVerificationCodeComponent } from './components/2fa-verification-code/2fa-verification-code.component';\nimport { Fs2faVerificationMethodsComponent } from './components/2fa-verification-methods/2fa-verification-methods.component';\n\nimport { CodeInputModule } from '../code-input';\nimport { ResendModule } from '../resend/resend.module';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule,\n MatRadioModule,\n MatCheckboxModule,\n\n FsFormModule,\n FsRadioGroupModule,\n FsDialogModule,\n FsSkeletonModule,\n FsSkeletonModule,\n\n ResendModule,\n CodeInputModule,\n ],\n declarations: [\n Fs2faVerificationComponent,\n Fs2faVerificationCodeComponent,\n Fs2faVerificationMethodsComponent,\n ],\n exports: [\n Fs2faVerificationComponent,\n ],\n providers: [],\n})\nexport class Fs2faVerificationModule {}\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsFormDirective } from '@firestitch/form';\nimport { FsMessage } from '@firestitch/message';\n\nimport { tap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AppComponent implements OnInit {\n\n @ViewChild(FsFormDirective)\n public form: FsFormDirective;\n\n public twoFactorManageService: TwoFactorManageService;\n public mode: 'qr-code' | 'code-input' = 'qr-code';\n public accountId;\n public qrCodeUrl;\n public code;\n public default;\n public appType: 'google' | 'authy';\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<AppComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this.twoFactorManageService = this._data.twoFactorManageService;\n this.accountId = this._data.accountId;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public appTypeGoogle(): void {\n this.appTypeSelect('google');\n }\n\n public appTypeAuthy(): void {\n this.appTypeSelect('authy');\n }\n\n public appTypeSelect(appType): void {\n this.appType = appType;\n this.twoFactorManageService.verificationMethodCreate({\n type: 'app',\n default: this.default,\n })\n .subscribe((response) => {\n this.qrCodeUrl = response.qrCodeUrl;\n this._cdRef.markForCheck();\n });\n }\n\n public codeCompleted(): void {\n this.form.triggerSubmit();\n }\n\n public codeChanged(code): void {\n this.code = code;\n this.form.dirty();\n }\n\n public next(): void {\n this.mode = 'code-input';\n }\n\n public verify = () => {\n return this.twoFactorManageService.verificationMethodVerify(this.code)\n .pipe(\n tap(() => {\n this._message.success('Created app authenticator verification method');\n this._dialogRef.close(true);\n }),\n );\n };\n\n}\n","<form fsForm [submit]=\"verify\">\n <fs-dialog>\n <h1 mat-dialog-title>Authenticator App Setup</h1>\n <mat-dialog-content>\n\n <div *ngIf=\"mode === 'qr-code'\" class=\"qr-code\">\n <ng-container *ngIf=\"appType\">\n <ol>\n <li>\n <ng-container *ngIf=\"appType === 'authy'\">\n Install the Authy Authenticator App from the <a href=\"https://apps.apple.com/us/app/authy/id494168017\" target=\"_blank\">App Store</a> or\n the <a href=\"https://play.google.com/store/apps/details?id=com.authy.authy\" target=\"_blank\">Google Play Store</a>.\n </ng-container>\n\n <ng-container *ngIf=\"appType === 'google'\">\n Install the Google Authenticator App from the <a href=\"https://apps.apple.com/us/app/google-authenticator/id388497605\" target=\"_blank\">App Store</a> or\n the <a href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US&gl=US\" target=\"_blank\">Google Play Store</a>.\n </ng-container>\n </li>\n <ng-container *ngIf=\"appType === 'authy'\">\n <li>\n Open the Authy app and select <b>Add Account</b>.\n </li>\n <li>\n Select <b>Scan QR Code</b> and scan the QR code below.\n </li>\n </ng-container> \n <ng-container *ngIf=\"appType === 'google'\">\n <li>\n Open the Google Authentictor app and click the <b>Plus icon</b> in the lower right corner.\n </li>\n <li>\n Select <b>Scan a QR code</b> and scan the QR code below.\n </li>\n </ng-container>\n </ol>\n\n <qr-code \n *fsSkeleton=\"qrCodeUrl\"\n [value]=\"qrCodeUrl\"\n size=\"200\"\n errorCorrectionLevel=\"H\"\n [margin]=\"0\">\n </qr-code> \n </ng-container>\n\n <div class=\"app-types\" *ngIf=\"!appType\">\n <p>Select the Authenticator App you prefer</p>\n\n <div class=\"row\">\n <span>\n <a (click)=\"appTypeAuthy()\">\n <svg width=\"50\" height=\"50\" viewBox=\"0 0 256 256\" xmlns=\"http://www.w3.org/2000/svg\" preserveAspectRatio=\"xMidYMid\"><path d=\"M256 127.998C256 198.696 198.694 256 127.997 256 57.304 256 0 198.696 0 127.998 0 57.305 57.304 0 127.997 0 198.694 0 256 57.305 256 127.998z\" fill=\"#EC1C24\"/><path d=\"M117.024 100.89l30.691 30.68c4.43 4.436 11.623 4.436 16.064 0 4.431-4.435 4.441-11.622 0-16.058L133.086 84.82C111.125 62.854 75.631 62.5 53.204 83.704a9.536 9.536 0 0 0-.605.548c-.098.098-.178.202-.275.29-.1.096-.202.182-.297.278-.194.193-.371.396-.54.597-21.215 22.437-20.85 57.932 1.113 79.897L83.292 196c4.44 4.433 11.623 4.433 16.062 0 4.442-4.437 4.442-11.633.011-16.06l-30.693-30.691c-13.398-13.393-13.488-35.129-.278-48.637 13.506-13.21 35.23-13.114 48.63.279zm39.612-40.873c-4.435 4.437-4.435 11.623.012 16.059l30.681 30.693c13.39 13.392 13.477 35.125.268 48.636-13.51 13.2-35.227 13.112-48.623-.282l-30.692-30.689c-4.438-4.437-11.633-4.437-16.066 0-4.443 4.433-4.443 11.642 0 16.065l30.682 30.694c21.968 21.965 57.458 22.322 79.889 1.116.208-.184.404-.355.61-.549.094-.095.182-.192.273-.29.1-.095.197-.183.29-.289.197-.183.365-.384.54-.594 21.215-22.428 20.86-57.911-1.102-79.889l-30.692-30.682c-4.436-4.443-11.638-4.443-16.07.001z\" fill=\"#FFF\"/></svg>\n </a>\n Authy\n </span>\n \n <span>\n <a (click)=\"appTypeGoogle()\"> \n <svg width=\"50\" height=\"50\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"m457.07 45.92c73.67-8.62 149.41.22 218.93 26.24 62.75 23.47 120.59 60.41 167.72 108.09-40.31 39.97-80.25 80.31-120.51 120.33-25.95-25.45-56.19-46.65-89.47-61.37-44.22-19.82-93.39-28.54-141.72-25.2-54.6 3.52-108.11 22.49-152.63 54.3-55.24 38.95-96.61 97.22-114.8 162.35-13.64 47.78-14.77 98.97-3.76 147.4 8.85 39.61 26.09 77.29 50.05 110.03 22.24 30.45 50.3 56.64 82.22 76.71 36.79 23.24 78.76 38.22 121.96 43.48 37.02 4.65 74.9 2.23 111.05-7 3.97-1.91 6.24 2.61 8.73 4.86 40.74 40.95 81.68 81.7 122.43 122.63-73.31 35.6-155.99 51.86-237.3 46.12-68.05-4.51-135.07-24.08-194.71-57.18-24.87-13.6-48.23-29.82-70.33-47.54-17.46-14.81-34.71-30.01-49.72-47.35-25.41-27.39-47.21-58.11-65.17-90.87-4-7.72-8.64-15.12-11.9-23.2-4.47-9.05-8.37-18.36-12.25-27.67-4.96-13.27-10.26-26.44-13.88-40.15-.43-1.81-1.53-3.33-2.52-4.85-8.3-28.66-12.95-58.33-15.44-88.04-2.62-37.36-1.33-75.05 4.78-112.03 12.18-75.48 43.41-147.74 89.86-208.44 30.12-39.5 66.53-74.21 107.46-102.35 62.44-43.11 135.53-70.69 210.92-79.3m49.18 50.48c-5.7.99-10.96 3.76-15.38 7.43-10.4 8.93-14.14 24.81-8.17 37.28 6.33 15.02 25.16 23.1 40.36 17 15.43-5.24 24.78-23.51 19.74-39.06-4.1-15.43-20.92-25.79-36.55-22.65m-267.96 111.99c-5.33.28-10.59 1.92-15.16 4.68-11.47 7.03-17.88 21.74-14.36 34.86 3.09 14.08 16.78 25.06 31.26 24.61 15.03.41 29.08-11.39 31.54-26.17 2.24-10.33-1.61-21.55-9.14-28.85-6.24-6.33-15.3-9.62-24.14-9.13m-115.96 272c-6.62 1.23-12.84 4.58-17.54 9.4-9.45 9.72-11.72 25.57-5.02 37.42 7.16 13.96 25.48 20.86 39.98 14.62 15.02-5.51 23.99-23.42 19.06-38.71-4.04-15.41-20.86-25.96-36.48-22.73m111.98 272.05c-11.49 1.95-21.48 10.72-24.84 21.88-3.87 11.63-.13 25.16 8.9 33.36 6.15 5.48 14.4 8.7 22.67 8.32 11.16-.25 21.98-6.87 27.12-16.8 4.93-8.83 5.15-20.02.71-29.1-5.82-12.78-20.81-20.33-34.56-17.66m272.06 112.03c-11.76 2.02-21.92 11.07-25.09 22.6-3.87 12.57 1.13 27.25 11.91 34.79 7.86 5.79 18.42 7.67 27.77 4.86 9.61-2.77 17.7-10.24 21.07-19.68 4.97-12.74.36-28.32-10.58-36.46-7.02-5.45-16.35-7.67-25.08-6.11z\" fill=\"#a0a0a0\"/>\n <g fill=\"#c1c1c1\">\n <path d=\"m506.25 96.4c15.63-3.14 32.45 7.22 36.55 22.65 5.04 15.55-4.31 33.82-19.74 39.06-15.2 6.1-34.03-1.98-40.36-17-5.97-12.47-2.23-28.35 8.17-37.28 4.42-3.67 9.68-6.44 15.38-7.43z\"/>\n <path d=\"m122.33 480.39c15.62-3.23 32.44 7.32 36.48 22.73 4.93 15.29-4.04 33.2-19.06 38.71-14.5 6.24-32.82-.66-39.98-14.62-6.7-11.85-4.43-27.7 5.02-37.42 4.7-4.82 10.92-8.17 17.54-9.4z\"/>\n </g>\n <path d=\"m843.72 180.25.11-.11c24.64 25.12 46.96 52.6 65.61 82.47 36.01 57.16 59.38 122.22 67.87 189.25 5.67 44.88 5.27 90.6-2.05 135.27-12.7 80.01-46.94 156.41-97.9 219.36-42.3 52.48-95.87 96.04-156.41 125.76l-.63-.26c-1.01-1.1-2.03-2.16-3.05-3.22-40.75-40.93-81.69-81.68-122.43-122.63-2.49-2.25-4.76-6.77-8.73-4.86-36.15 9.23-74.03 11.65-111.05 7-43.2-5.26-85.17-20.24-121.96-43.48-31.92-20.07-59.98-46.26-82.22-76.71-23.96-32.74-41.2-70.42-50.05-110.03-11.01-48.43-9.88-99.62 3.76-147.4 18.19-65.13 59.56-123.4 114.8-162.35 44.52-31.81 98.03-50.78 152.63-54.3 48.33-3.34 97.5 5.38 141.72 25.2 33.28 14.72 63.52 35.92 89.47 61.37 40.26-40.02 80.2-80.36 120.51-120.33m-351.75 183.97c-21.23 2.85-41.89 10.28-59.88 21.94-23.08 14.45-41.76 35.58-53.9 59.91-14.58 29.2-18.64 63.21-12.5 95.17 3.93 19.85 12.03 38.88 23.56 55.51 7.93 11.52 17.65 21.66 27.65 31.38 57.33 57.41 114.61 114.86 171.99 172.21 49.09-13.07 94.67-38.94 131.05-74.4 45.11-43.34 75.66-101.44 86.31-163.06.24-1.04.22-2.91 1.85-2.6 29.63.04 59.26-.01 88.9.05 19.04-.3 36.87-14.77 40.76-33.46.22-1.21 0-2.32-.67-3.35 1.22-5.71 2.08-11.58 1.38-17.43l-.24.4c-2.05-20.34-20.84-37.12-41.25-37.17-80.64-.07-161.28-.01-241.93-.07-6.44-22.08-18.5-42.33-34.03-59.23-25.8-27.5-62.26-45.01-100.02-46.82-9.68.02-19.44-.54-29.03 1.02m286.37 388.31c-12.64 2.06-23.37 12.59-25.7 25.18-1.48 8.14-.14 17.02 4.73 23.85 5.76 9.2 16.8 14.76 27.61 14.25 8.32.03 16.28-3.95 22.16-9.66 4.87-5.6 8.45-12.67 8.67-20.2.86-11.37-5.06-23.1-14.87-28.96-6.52-4.46-14.89-5.75-22.6-4.46z\" fill=\"#686868\"/>\n <path d=\"m238.29 208.39c8.84-.49 17.9 2.8 24.14 9.13 7.53 7.3 11.38 18.52 9.14 28.85-2.46 14.78-16.51 26.58-31.54 26.17-14.48.45-28.17-10.53-31.26-24.61-3.52-13.12 2.89-27.83 14.36-34.86 4.57-2.76 9.83-4.4 15.16-4.68z\" fill=\"#c3c3c3\"/>\n <path d=\"m491.97 364.22c9.59-1.56 19.35-1 29.03-1.02 37.76 1.81 74.22 19.32 100.02 46.82 15.53 16.9 27.59 37.15 34.03 59.23-47.67-.01-95.35-.01-143.03-.01-12.19-.11-24.23 5.42-32.21 14.61-6.01 6.85-9.74 15.65-10.44 24.74-1.19 14.17 5.36 28.7 16.69 37.28 7.62 5.91 17.28 9 26.92 8.8 126.69-.04 253.39-.06 380.08.03 4.76.04 9.59-.15 14.2-1.48 14.21-3.82 26.02-15.47 29.83-29.7.67 1.03.89 2.14.67 3.35-3.89 18.69-21.72 33.16-40.76 33.46-29.64-.06-59.27-.01-88.9-.05-1.63-.31-1.61 1.56-1.85 2.6-10.65 61.62-41.2 119.72-86.31 163.06-36.38 35.46-81.96 61.33-131.05 74.4-57.38-57.35-114.66-114.8-171.99-172.21-10-9.72-19.72-19.86-27.65-31.38-11.53-16.63-19.63-35.66-23.56-55.51-6.14-31.96-2.08-65.97 12.5-95.17 12.14-24.33 30.82-45.46 53.9-59.91 17.99-11.66 38.65-19.09 59.88-21.94z\" fill=\"#474747\"/>\n <g fill=\"#bfbfbf\">\n <path d=\"m479.81 483.85c7.98-9.19 20.02-14.72 32.21-14.61 47.68 0 95.36 0 143.03.01 80.65.06 161.29 0 241.93.07 20.41.05 39.2 16.83 41.25 37.17-.19.33-.58.97-.78 1.29-3.68-18.51-21.57-33.16-40.47-33.05-124.97.1-249.94.12-374.91.17-7.73.13-15.74-.8-23.15 1.96-9.06 2.84-16.73 9.1-22.27 16.7-3.34 4.55-4.39 10.24-7.28 15.03.7-9.09 4.43-17.89 10.44-24.74z\"/>\n <path d=\"m234.31 752.44c13.75-2.67 28.74 4.88 34.56 17.66 4.44 9.08 4.22 20.27-.71 29.1-5.14 9.93-15.96 16.55-27.12 16.8-8.27.38-16.52-2.84-22.67-8.32-9.03-8.2-12.77-21.73-8.9-33.36 3.36-11.16 13.35-19.93 24.84-21.88z\"/>\n </g>\n <path d=\"m498.92 476.86c7.41-2.76 15.42-1.83 23.15-1.96 124.97-.05 249.94-.07 374.91-.17 18.9-.11 36.79 14.54 40.47 33.05.2-.32.59-.96.78-1.29l.24-.4c.7 5.85-.16 11.72-1.38 17.43-3.81 14.23-15.62 25.88-29.83 29.7-4.61 1.33-9.44 1.52-14.2 1.48-126.69-.09-253.39-.07-380.08-.03-9.64.2-19.3-2.89-26.92-8.8-11.33-8.58-17.88-23.11-16.69-37.28 2.89-4.79 3.94-10.48 7.28-15.03 5.54-7.6 13.21-13.86 22.27-16.7z\" fill=\"#b0b0b0\"/>\n <path d=\"m59.49 636.08c.99 1.52 2.09 3.04 2.52 4.85 3.62 13.71 8.92 26.88 13.88 40.15 3.88 9.31 7.78 18.62 12.25 27.67 3.26 8.08 7.9 15.48 11.9 23.2 17.96 32.76 39.76 63.48 65.17 90.87 15.01 17.34 32.26 32.54 49.72 47.35 22.1 17.72 45.46 33.94 70.33 47.54 59.64 33.1 126.66 52.67 194.71 57.18 81.31 5.74 163.99-10.52 237.3-46.12 1.02 1.06 2.04 2.12 3.05 3.22l.03.61c-42.32 21.03-87.88 35.53-134.56 42.91-56.91 8.9-115.46 7.49-171.82-4.5-67.89-14.35-132.42-44.21-187.42-86.51-63.52-48.63-114.32-113.73-145.86-187.27-8.42-19.87-15.93-40.22-21.2-61.15z\" fill=\"#939393\"/>\n <path d=\"m778.34 752.53c7.71-1.29 16.08 0 22.6 4.46 9.81 5.86 15.73 17.59 14.87 28.96-.22 7.53-3.8 14.6-8.67 20.2-5.88 5.71-13.84 9.69-22.16 9.66-10.81.51-21.85-5.05-27.61-14.25-4.87-6.83-6.21-15.71-4.73-23.85 2.33-12.59 13.06-23.12 25.7-25.18z\" fill=\"#767676\"/>\n <path d=\"m506.37 864.47c8.73-1.56 18.06.66 25.08 6.11 10.94 8.14 15.55 23.72 10.58 36.46-3.37 9.44-11.46 16.91-21.07 19.68-9.35 2.81-19.91.93-27.77-4.86-10.78-7.54-15.78-22.22-11.91-34.79 3.17-11.53 13.33-20.58 25.09-22.6z\" fill=\"#bebebe\"/>\n </svg>\n </a>\n Google Authenticator\n </span>\n </div>\n\n <mat-checkbox \n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </div>\n \n </div>\n\n <div *ngIf=\"mode === 'code-input'\" class=\"code-input\">\n <div>\n Enter the 6-digit code you see in the App.\n </div>\n\n <app-code-input\n [codeLength]=\"6\"\n (codeChanged)=\"codeChanged($event)\"\n (codeCompleted)=\"codeCompleted()\">\n </app-code-input>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <ng-container *ngIf=\"appType\">\n <button\n *ngIf=\"mode === 'qr-code'\"\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Next\n </button>\n <button\n *ngIf=\"mode === 'code-input'\"\n type=\"submit\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Verify\n </button> \n </ng-container>\n <button\n type=\"button\"\n mat-button\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsFormDirective } from '@firestitch/form';\n\nimport { Observable, of } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './email.component.html',\n styleUrls: ['./email.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailComponent {\n\n @ViewChild(FsFormDirective, { static: false })\n public form: FsFormDirective;\n\n public email;\n public code;\n public default;\n public verificationMethod = null;\n public twoFactorManageService: TwoFactorManageService;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EmailComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public resend = (): Observable<void> => {\n return this.twoFactorManageService.verificationMethodResend()\n .pipe(\n tap(() => {\n this._message.success('Resent verification code');\n }),\n );\n }\n\n public submit = () => {\n return of(true)\n .pipe(\n switchMap(() => {\n return this.verificationMethod ?\n this.twoFactorManageService.verificationMethodVerify(this.code)\n .pipe(\n tap((verificationMethod) => {\n this._message.success('Created email verification method');\n this._dialogRef.close(verificationMethod);\n }),\n ) :\n this.twoFactorManageService.verificationMethodCreate({\n type: 'email',\n email: this.email,\n default: this.default,\n })\n .pipe(\n tap((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.form.clear();\n this._cdRef.markForCheck();\n }),\n );\n }),\n );\n };\n\n public codeCompleted(): void {\n if(!this.form.submitting) {\n this.form.triggerSubmit();\n }\n }\n\n public codeChanged(code): void {\n this.code = code;\n }\n\n}\n","<form fsForm [submit]=\"submit\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Email Setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <p>The app just sent you an email with a verification code.</p>\n \n <app-code-input \n [code]=\"code\"\n (codeChanged)=\"codeChanged($event)\"\n (codeCompleted)=\"codeCompleted()\">\n </app-code-input> \n\n <app-resend [resend]=\"resend\"></app-resend>\n </ng-container>\n\n <ng-template #notVerificationMethod>\n <p>The app will only use this email for verifying your account security. </p>\n <mat-form-field>\n <mat-label>Email</mat-label>\n <input\n matInput\n [required]=\"true\"\n [(ngModel)]=\"email\"\n [fsFormEmail]=\"true\"\n name=\"email\">\n </mat-form-field>\n <mat-checkbox \n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\nimport { FsMessage } from '@firestitch/message';\nimport { FsFormDirective } from '@firestitch/form';\n\nimport { Observable, of } from 'rxjs';\nimport { switchMap, tap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './number.component.html',\n styleUrls: ['./number.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumberComponent {\n\n @ViewChild(FsFormDirective, { static: false })\n public form: FsFormDirective;\n\n public phone;\n public code;\n public default;\n public verificationMethod = null;\n public defaultCountry;\n public twoFactorManageService: TwoFactorManageService;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<NumberComponent>,\n private _cdRef: ChangeDetectorRef,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.defaultCountry = _data.defaultCountry;\n this.default = !this.twoFactorManageService.hasVerificationMethods;\n }\n\n public resend = (): Observable<void> => {\n return this.twoFactorManageService.verificationMethodResend()\n .pipe(\n tap(() => {\n this._message.success('Resent verification code');\n }),\n );\n }\n\n public submit = () => {\n return of(true)\n .pipe(\n switchMap(() => {\n return this.verificationMethod ?\n this.twoFactorManageService.verificationMethodVerify(this.code)\n .pipe(\n tap((verificationMethod) => {\n this._message.success('Created text message verification method');\n this._dialogRef.close(verificationMethod);\n }),\n ) :\n this.twoFactorManageService.verificationMethodCreate({\n type: 'sms',\n phoneNumber: this.phone.number,\n phoneCode: this.phone.countryCode,\n phoneCountry: this.phone.isoCode,\n default: this.default,\n }).pipe(\n tap((verificationMethod) => {\n this.verificationMethod = verificationMethod;\n this.form.clear();\n this._cdRef.markForCheck();\n }),\n );\n }),\n );\n };\n\n public codeCompleted(): void {\n if(!this.form.submitting) {\n this.form.triggerSubmit();\n }\n }\n\n public codeChanged(code): void {\n this.code = code;\n }\n\n}\n","<form fsForm [submit]=\"submit\" autocomplete=\"off\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Text Message Setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <p>The app just sent you a text message with a verification code.</p>\n\n <app-code-input \n [code]=\"code\"\n (codeChanged)=\"codeChanged($event)\"\n (codeCompleted)=\"codeCompleted()\">\n </app-code-input> \n \n <app-resend [resend]=\"resend\"></app-resend>\n </ng-container>\n\n <ng-template #notVerificationMethod>\n <p>The app will only use this number for verifying your account security. Message and data rates may apply by your cell phone provider.</p>\n <mat-form-field>\n <mat-label>Phone number</mat-label>\n <fs-phone-field\n [(ngModel)]=\"phone\"\n [country]=\"defaultCountry\"\n name=\"phone\"\n autocomplete=\"off\"\n [required]=\"true\">\n </fs-phone-field>\n </mat-form-field>\n <mat-checkbox \n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default 2-step verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n","import { Injectable, OnDestroy } from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\nimport { VerificationMethodType } from '../../../enums/verification-method-type.enum';\n\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { switchMap, takeUntil, tap } from 'rxjs/operators';\n\nimport { AppComponent } from '../components/app';\nimport { EmailComponent } from '../components/email';\nimport { NumberComponent } from '../components/number';\n\n\n@Injectable()\nexport class TwoFactorManageService implements OnDestroy {\n\n private _destroy$ = new Subject();\n\n private _verificationMethodFetch: () => Observable<any[]>;\n private _verificationMethodCreate: (verificationMethod) => Observable<any>;\n private _verificationMethodDelete: (verificationMethod) => Observable<any>;\n private _verificationMethodVerify: (verificationMethod) => Observable<any>;\n private _verificationMethodResend: () => Observable<any>;\n private _accountVerify: () => Observable<any[]>;\n private _verificationMethods$ = new BehaviorSubject<any[]>([]);\n\n constructor(\n private _dialog: MatDialog,\n ) {}\n\n public get verificationMethods$() {\n return this._verificationMethods$\n .pipe(\n takeUntil(this._destroy$),\n );\n }\n \n public get verificationMethods() {\n return this._verificationMethods$.getValue();\n }\n\n public get hasVerificationMethods(): boolean {\n return !!this._verificationMethods$.getValue().length;\n }\n\n public get emailVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.Email);\n }\n\n public get smsVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.Sms);\n }\n\n public get appVerificationMethods() {\n return this.getVerificationMethods(VerificationMethodType.App);\n }\n \n public getVerificationMethods(type) {\n return this.verificationMethods\n .filter((verificationMethod) => {\n return verificationMethod.type === type;\n });\n }\n \n public hasVerificationMethod(type) {\n return this.verificationMethods\n .some((verificationMethod) => {\n return verificationMethod.type === type;\n });\n }\n\n public registerVerificationMethodResend(value) {\n this._verificationMethodResend = value;\n }\n\n public registerVerificationMethodFetch(value) {\n this._verificationMethodFetch = value;\n }\n\n public registerVerificationMethodDelete(value) {\n this._verificationMethodDelete = value;\n }\n\n public registerVerificationMethodCreate(value) {\n this._verificationMethodCreate = value;\n }\n\n public registerVerificationMethodVerify(value) {\n this._verificationMethodVerify = value;\n }\n\n public registerAccountVerify(value) {\n this._accountVerify = value;\n }\n\n public verificationMethodDelete(verificationMethod): Observable<any> {\n return this._verificationMethodDelete(verificationMethod)\n .pipe(\n tap(() => {\n this.verificationMethodFetch();\n }),\n );\n }\n\n public verificationMethodVerify(verificationMethod): Observable<any> {\n return this._verificationMethodVerify(verificationMethod)\n .pipe(\n tap(() => {\n this.verificationMethodFetch();\n }),\n );\n }\n\n public verificationMethodCreate(verificationMethod): Observable<any> {\n return this._verificationMethodCreate(verificationMethod);\n }\n\n public verificationMethodResend(): Observable<any> {\n return this._verificationMethodResend();\n }\n\n public verificationMethodFetch() {\n this._verificationMethodFetch()\n .subscribe((verificationMethods) => {\n this._verificationMethods$.next(verificationMethods);\n });\n }\n\n public accountVerify(): Observable<any> {\n return this._accountVerify ? this._accountVerify() : of(true);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n public addSms(defaultCountry): Observable<any>{\n return this.accountVerify()\n .pipe(\n switchMap(() => this._dialog.open(NumberComponent, {\n data: {\n defaultCountry,\n twoFactorManageService: this,\n },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n\n public addEmail(): Observable<any>{\n return this.accountVerify()\n .pipe(\n switchMap(() => this._dialog.open(EmailComponent, {\n data: { twoFactorManageService: this },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n\n public addApp(): Observable<any>{\n return this.accountVerify()\n .pipe(\n switchMap(() => this._dialog.open(AppComponent, {\n data: { twoFactorManageService: this },\n })\n .afterClosed(),\n ),\n tap(() => {\n this.verificationMethodFetch();\n }),\n takeUntil(this._destroy$),\n );\n }\n}\n","import {\n Component, ChangeDetectionStrategy,\n} from '@angular/core';\n\n\n@Component({\n selector: 'app-defaulted',\n templateUrl: './defaulted.component.html',\n styleUrls: ['./defaulted.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultedComponent {\n\n}\n","<span>Default</span>","import {\n Component, ChangeDetectionStrategy, OnInit, Input, Output, EventEmitter,\n} from '@angular/core';\n\nimport { FsListConfig } from '@firestitch/list';\nimport { FsPrompt } from '@firestitch/prompt';\nimport { IFsVerificationMethod } from '../../../../interfaces/verification-method.interface';\n\nimport { map, switchMap } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n selector: 'app-verification-methods',\n templateUrl: './verification-methods.component.html',\n styleUrls: ['./verification-methods.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VerificationMethodsComponent implements OnInit {\n\n @Input() public twoFactorManageService: TwoFactorManageService;\n @Input() public type;\n \n @Output() public deleted = new EventEmitter<IFsVerificationMethod>();\n\n public listConfig: FsListConfig;\n public textMessageAdd: () => void;\n\n constructor(\n private _prompt: FsPrompt,\n ) {\n }\n\n public ngOnInit(): void {\n this.listConfig = {\n rowActions: [\n {\n click: (verificationMethod) => {\n this._prompt.confirm({\n title: 'Confirm',\n template: 'Would you like to delete this verification method?',\n })\n .pipe(\n switchMap(() => this.twoFactorManageService.accountVerify()),\n switchMap(() => this.twoFactorManageService\n .verificationMethodDelete(verificationMethod)),\n )\n .subscribe(() => {\n this.deleted.emit(verificationMethod);\n });\n },\n label: 'Delete',\n },\n ],\n fetch: () => {\n return this.twoFactorManageService.verificationMethods$\n .pipe(\n map((verificationMethods) => ({\n data: verificationMethods.filter((verificationMethod) => {\n return verificationMethod.type === this.type;\n }),\n }),\n ),\n );\n },\n };\n }\n}\n","<fs-list [config]=\"listConfig\">\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 === 'sms'\">\n <fs-country [code]=\"row.phoneCountry\" [showName]=\"false\"></fs-country> {{row.phoneNumber | fsPhone}}\n </ng-container>\n\n <ng-container *ngIf=\"row.type === 'email'\">\n {{row.email}}\n </ng-container>\n \n <app-defaulted *ngIf=\"row.default\"></app-defaulted>\n </div>\n </ng-template>\n </fs-list-column>\n</fs-list>","import {\n Component, Inject, ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsMessage } from '@firestitch/message';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './numbers.component.html',\n styleUrls: ['./numbers.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NumbersComponent {\n\n public defaultCountry;\n public twoFactorManageService: TwoFactorManageService;\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any, \n private _dialogRef: MatDialogRef<NumbersComponent>,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n this.defaultCountry = _data.defaultCountry;\n }\n\n public add(): void {\n this.twoFactorManageService.addSms(this.defaultCountry)\n .subscribe();\n }\n\n public deleted(): void {\n this._message.success('Deleted text message verification method');\n if(!this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Sms)) {\n this._dialogRef.close();\n }\n }\n\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n Text Message Numbers\n </h1>\n <mat-dialog-content>\n <app-verification-methods\n [type]=\"VerificationMethodType.Sms\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </app-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Number\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component, Inject, ChangeDetectionStrategy,\n} from '@angular/core';\n\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FsMessage } from '@firestitch/message';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { TwoFactorManageService } from '../../services';\n\n\n@Component({\n templateUrl: './emails.component.html',\n styleUrls: ['./emails.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EmailsComponent {\n\n public twoFactorManageService: TwoFactorManageService;\n public VerificationMethodType = VerificationMethodType;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _dialogRef: MatDialogRef<EmailsComponent>,\n private _message: FsMessage,\n ) {\n this.twoFactorManageService = _data.twoFactorManageService;\n }\n\n public add(): void {\n this.twoFactorManageService.addEmail()\n .subscribe();\n }\n\n public deleted(): void {\n this._message.success('Deleted email verification method');\n if(!this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Email)) {\n this._dialogRef.close();\n }\n }\n\n}\n","<fs-dialog>\n <h1 mat-dialog-title>\n Emails\n </h1>\n <mat-dialog-content>\n <app-verification-methods\n [type]=\"VerificationMethodType.Email\"\n [twoFactorManageService]=\"twoFactorManageService\"\n (deleted)=\"deleted()\">\n </app-verification-methods>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n type=\"button\"\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n <button\n mat-button\n (click)=\"add()\"\n type=\"button\">\n Add Email\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component, Inject, ChangeDetectionStrategy, ChangeDetectorRef, OnInit, OnDestroy,\n} from '@angular/core';\n\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\n\nimport { Subject } from 'rxjs';\n\nimport { NumbersComponent } from '../numbers';\nimport { EmailsComponent } from '../emails';\nimport { TwoFactorManageService } from '../../services';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\nimport { FsMessage } from '@firestitch/message';\n\n\n@Component({\n templateUrl: './manage-methods.component.html',\n styleUrls: ['./manage-methods.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManageMethodsComponent implements OnInit, OnDestroy {\n\n public twoFactorManageService: TwoFactorManageService;\n public verificationMethods;\n public verificationMethodTypes = {};\n public VerificationMethodType = VerificationMethodType;\n\n private _destroy$ = new Subject();\n private _defaultCountry: string;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private _data: any,\n private _cdRef: ChangeDetectorRef,\n private _dialog: MatDialog,\n private _message: FsMessage,\n ) {}\n\n public ngOnInit(): void {\n this._defaultCountry = this._data.defaultCountry;\n this.twoFactorManageService = this._data.twoFactorManageService;\n this.verificationMethodTypes = this._data.verificationMethodTypes\n .reduce((verificationMethodTypes, verificationMethodType) => {\n verificationMethodTypes[verificationMethodType] = true;\n\n return verificationMethodTypes;\n }, {});\n\n this.twoFactorManageService.verificationMethods$\n .subscribe((verificationMethods) => {\n this.verificationMethods = verificationMethods;\n this._cdRef.markForCheck();\n });\n }\n\n public get defaultSms(): boolean {\n return this.twoFactorManageService.smsVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get defaultApp(): boolean {\n return this.twoFactorManageService.appVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get defaultEmail(): boolean {\n return this.twoFactorManageService.emailVerificationMethods\n .some((verificationMethod) => {\n return verificationMethod.default;\n });\n }\n\n public get textHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Sms);\n }\n\n public get appHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.App);\n }\n\n public get emailHasVerificationMethod(): boolean {\n return this.twoFactorManageService.hasVerificationMethod(VerificationMethodType.Email);\n }\n\n public textMessageManage(): void {\n this._dialog.open(NumbersComponent, {\n data: {\n twoFactorManageService: this.twoFactorManageService,\n defaultCountry: this._defaultCountry,\n },\n });\n }\n\n public textMessageAdd(): void {\n this.twoFactorManageService.addSms(this._defaultCountry)\n .subscribe();\n }\n\n public emailMessageManage(): void {\n this._dialog.open(EmailsComponent, {\n data: {\n twoFactorManageService: this.twoFactorManageService,\n },\n });\n }\n\n public emailMessageAdd(): void {\n this.twoFactorManageService.addEmail()\n .subscribe();\n }\n\n public appRemove(): void {\n this._message.success('Removed App Authenticator verification method');\n\n const verificationMethod = this.verificationMethods\n .find((_verificationMethod) => {\n return _verificationMethod.type === VerificationMethodType.App;\n });\n\n if(verificationMethod) {\n this.twoFactorManageService.verificationMethodDelete(verificationMethod)\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n }\n\n public appAdd(): void {\n this.twoFactorManageService.addApp()\n .subscribe();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","<fs-dialog>\n <h1 mat-dialog-title>2-Step Verification</h1>\n <mat-dialog-content>\n <table>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Sms]\">\n <td>\n <mat-icon>textsms</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Text Message</span>\n <span *ngIf=\"textHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultSms\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by text message\n <ng-container *ngIf=\"textHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.smsVerificationMethods\">{{item.phoneNumber | fsPhone}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"textHasVerificationMethod; else textMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"textMessageManage()\">\n Manage\n </button>\n <ng-template #textMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"textMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.Email]\">\n <td>\n <mat-icon>email</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Email</span> \n <span *ngIf=\"emailHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultEmail\"></app-defaulted>\n </div>\n <div class=\"small\">\n Verification codes are sent by email\n <ng-container *ngIf=\"emailHasVerificationMethod\">\n to <span class=\"items\">\n <span *ngFor=\"let item of twoFactorManageService.emailVerificationMethods\">{{item.email}}</span>\n </span>\n </ng-container>\n </div>\n </td>\n <td>\n <button \n *ngIf=\"emailHasVerificationMethod; else emailMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"emailMessageManage()\">\n Manage\n </button>\n <ng-template #emailMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"emailMessageAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr>\n <tr *ngIf=\"verificationMethodTypes[VerificationMethodType.App]\">\n <td>\n <mat-icon>phone_iphone</mat-icon>\n </td>\n <td>\n <div class=\"type\">\n <span>Authenticator App</span>\n <span *ngIf=\"appHasVerificationMethod\" class=\"enabled\"></span>\n <app-defaulted *ngIf=\"defaultApp\"></app-defaulted>\n </div>\n <div class=\"small\">Verification code is generated by an authenticator app such as Authy or Google Authenticator</div>\n </td>\n <td>\n <button \n *ngIf=\"appHasVerificationMethod; else appMessageManageButton\"\n mat-raised-button \n type=\"button\"\n (click)=\"appRemove()\">\n Remove\n </button>\n <ng-template #appMessageManageButton>\n <button \n mat-raised-button \n color=\"primary\"\n type=\"button\"\n (click)=\"appAdd()\">\n Turn On\n </button>\n </ng-template>\n </td>\n </tr> \n </table> \n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n","import {\n Component,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnDestroy,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { MatDialog } from '@angular/material/dialog';\nimport { VerificationMethodType } from '../../../../enums/verification-method-type.enum';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TwoFactorManageService } from '../../services';\n\nimport { ManageMethodsComponent } from '../manage-methods';\n\n\n@Component({\n selector: 'fs-2fa-manage',\n templateUrl: './2fa-manage.component.html',\n styleUrls: ['./2fa-manage.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TwoFactorManageService],\n})\nexport class Fs2faManageComponent implements OnDestroy, OnInit {\n\n @Input() public accountVerify: () => Observable<any>;\n @Input() public defaultCountry: string;\n @Input() public verificationMethodTypes: VerificationMethodType[];\n @Input() public verificationMethodsFetch: () => Observable<any[]>;\n @Input() public verificationMethodDelete: (verificationMethod: any) => Observable<any>;\n @Input() public verificationMethodCreate: (verificationMethod: any) => Observable<any>;\n @Input() public verificationMethodVerify: (verificationMethod: any) => Observable<any>;\n @Input() public verificationMethodResend: () => Observable<any>;\n\n public statuses;\n\n private _destroy$ = new Subject();\n\n constructor(\n private _cdRef: ChangeDetectorRef,\n private _dialog: MatDialog,\n private _twoFactorManageService: TwoFactorManageService,\n ) {}\n\n public ngOnInit(): void {\n this.verificationMethodTypes = this.verificationMethodTypes || [\n VerificationMethodType.Sms,\n VerificationMethodType.Email,\n VerificationMethodType.App\n ];\n\n this._twoFactorManageService.registerVerificationMethodFetch(this.verificationMethodsFetch);\n this._twoFactorManageService.registerVerificationMethodDelete(this.verificationMethodDelete);\n this._twoFactorManageService.registerVerificationMethodCreate(this.verificationMethodCreate);\n this._twoFactorManageService.registerVerificationMethodVerify(this.verificationMethodVerify);\n this._twoFactorManageService.registerVerificationMethodResend(this.verificationMethodResend);\n this._twoFactorManageService.registerAccountVerify(this.accountVerify);\n\n\n this._twoFactorManageService.verificationMethods$\n .subscribe((verificationMethods) => {\n const types = {\n sms: 'Text Message',\n email: 'Email',\n app: 'Authenticator App',\n };\n\n this.statuses = Object.keys(\n verificationMethods.reduce((accum, verificationMethod) => {\n accum[verificationMethod.type] = true;\n\n return accum;\n }, {}),\n )\n .map((type) => {\n return types[type];\n });\n\n this._cdRef.markForCheck();\n });\n\n this._twoFactorManageService.verificationMethodFetch();\n }\n\n public manage() {\n const dialogRef = this._dialog.open(ManageMethodsComponent, {\n autoFocus: false,\n data: {\n defaultCountry: this.defaultCountry,\n twoFactorManageService: this._twoFactorManageService,\n verificationMethodTypes: this.verificationMethodTypes,\n },\n });\n\n dialogRef.afterClosed()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public reload(): void {\n this._twoFactorManageService.verificationMethodFetch();\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n\n}\n","<fs-label-field>\n <fs-label>Status</fs-label>\n <ng-container *ngIf=\"statuses\">\n <ng-container *ngIf=\"statuses.length === 1\">\n {{statuses[0]}} verification is enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length > 1\">\n {{statuses.join(', ')}} verifications are enabled\n </ng-container>\n\n <ng-container *ngIf=\"statuses.length === 0\">\n No verification methods are enabled\n </ng-container>\n </ng-container>\n</fs-label-field>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { FsListModule } from '@firestitch/list';\nimport { FsDialogModule } from '@firestitch/dialog';\nimport { FsFormModule } from '@firestitch/form';\nimport { FsSkeletonModule } from '@firestitch/skeleton';\nimport { FsLabelModule } from '@firestitch/label';\nimport { FsPhoneModule } from '@firestitch/phone';\nimport { FsCountryModule } from '@firestitch/country';\n\nimport { QrCodeModule } from 'ng-qrcode';\n\n\nimport { CodeInputModule } from '../code-input';\nimport { Fs2faManageComponent } from './components/2fa-manage';\nimport { ManageMethodsComponent } from './components/manage-methods';\nimport { NumbersComponent } from './components/numbers';\nimport { AppComponent } from './components/app';\nimport { EmailComponent } from './components/email';\nimport { VerificationMethodsComponent } from './components/verification-methods';\nimport { NumberComponent } from './components/number';\nimport { EmailsComponent } from './components/emails';\nimport { DefaultedComponent } from './components/defaulted';\nimport { ResendModule } from '../resend/resend.module';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n\n MatButtonModule,\n MatDialogModule,\n MatInputModule,\n MatIconModule,\n MatCheckboxModule,\n\n FsDialogModule,\n FsListModule,\n FsFormModule,\n FsLabelModule,\n FsPhoneModule,\n FsSkeletonModule,\n FsCountryModule,\n\n CodeInputModule,\n\n QrCodeModule,\n ResendModule,\n ],\n declarations: [\n Fs2faManageComponent,\n ManageMethodsComponent,\n NumbersComponent,\n AppComponent,\n EmailComponent,\n VerificationMethodsComponent,\n NumberComponent,\n EmailsComponent,\n DefaultedComponent,\n ],\n exports: [Fs2faManageComponent],\n})\nexport class Fs2faManageModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["AngularCodeInputComponent","AngularCodeInputModule"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firestitch/2fa",
3
- "version": "12.4.1",
3
+ "version": "12.4.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/Firestitch/ngx-2fa"