{"version":3,"file":"ngx-auth-firebaseui-updated.mjs","sources":["../../../projects/ngx-auth-firebaseui/src/lib/enums/accounts.enum.ts","../../../projects/ngx-auth-firebaseui/src/lib/tokens/index.ts","../../../projects/ngx-auth-firebaseui/src/lib/services/firestore-sync.service.ts","../../../projects/ngx-auth-firebaseui/src/lib/services/auth-process.service.ts","../../../projects/ngx-auth-firebaseui/src/lib/components/email-confirmation/email-confirmation.component.ts","../../../projects/ngx-auth-firebaseui/src/lib/components/email-confirmation/email-confirmation.component.html","../../../projects/ngx-auth-firebaseui/src/lib/components/legality-dialog/legality-dialog.component.ts","../../../projects/ngx-auth-firebaseui/src/lib/components/legality-dialog/legality-dialog.component.html","../../../projects/ngx-auth-firebaseui/src/lib/interfaces/config.interface.ts","../../../projects/ngx-auth-firebaseui/src/lib/interfaces/main.interface.ts","../../../projects/ngx-auth-firebaseui/src/lib/animations/index.ts","../../../projects/ngx-auth-firebaseui/src/lib/components/providers/auth.providers.component.ts","../../../projects/ngx-auth-firebaseui/src/lib/components/providers/auth.providers.component.html","../../../projects/ngx-auth-firebaseui/src/lib/components/ngx-auth-firebaseui/auth.component.ts","../../../projects/ngx-auth-firebaseui/src/lib/components/ngx-auth-firebaseui/auth.component.html","../../../projects/ngx-auth-firebaseui/src/lib/components/ngx-auth-firebaseui-avatar/ngx-auth-firebaseui-avatar.component.ts","../../../projects/ngx-auth-firebaseui/src/lib/components/ngx-auth-firebaseui-avatar/ngx-auth-firebaseui-avatar.component.html","../../../projects/ngx-auth-firebaseui/src/lib/components/ngx-auth-firebaseui-login/ngx-auth-firebaseui-login.component.ts","../../../projects/ngx-auth-firebaseui/src/lib/components/ngx-auth-firebaseui-login/ngx-auth-firebaseui-login.component.html","../../../projects/ngx-auth-firebaseui/src/lib/components/ngx-auth-firebaseui-register/ngx-auth-firebaseui-register.component.ts","../../../projects/ngx-auth-firebaseui/src/lib/components/ngx-auth-firebaseui-register/ngx-auth-firebaseui-register.component.html","../../../projects/ngx-auth-firebaseui/src/lib/components/ngx-auth-firebaseui-user/user.component.ts","../../../projects/ngx-auth-firebaseui/src/lib/components/ngx-auth-firebaseui-user/user.component.html","../../../projects/ngx-auth-firebaseui/src/lib/guards/logged-in.guard.ts","../../../projects/ngx-auth-firebaseui/src/lib/ngx-auth-firebaseui.module.ts","../../../projects/ngx-auth-firebaseui/src/public-api.ts","../../../projects/ngx-auth-firebaseui/src/ngx-auth-firebaseui-updated.ts"],"sourcesContent":["export enum Accounts {\n  NONE = 'account',\n  CHECK = 'account-check',\n  EDIT = 'account-edit',\n  OFF = 'account-off',\n  REMOVE = 'account-remove',\n}\n","// This token is the official token containing the final configuration; ie. the merge between default and user provided configurations\nimport {InjectionToken} from '@angular/core';\nimport {NgxAuthFirebaseUIConfig} from '../interfaces';\n\nexport const NgxAuthFirebaseUIConfigToken = new InjectionToken<NgxAuthFirebaseUIConfig>('NgxAuthFirebaseUIConfigToken');\n// This is an intermediate token containing only user-provided configuration\nexport const UserProvidedConfigToken = new InjectionToken<NgxAuthFirebaseUIConfig>('UserProvidedConfigToken');\n","import { Injectable } from \"@angular/core\";\nimport {\n  AngularFirestore,\n  AngularFirestoreDocument,\n} from \"@angular/fire/compat/firestore\";\nimport firebase from \"firebase/compat/app\";\n\nexport const collections = {\n  users: \"users\",\n};\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class FirestoreSyncService {\n  constructor(public afs: AngularFirestore) {\n    // this.afs.firestore.settings({timestampsInSnapshots: true});\n  }\n\n  // get timestamp() {\n  //     return firebase.firestore.FieldValue.serverTimestamp();\n  // }\n\n  public getUserDocRefByUID(\n    uid: string\n  ): AngularFirestoreDocument<firebase.UserInfo> {\n    return this.afs.doc(`${collections.users}/${uid}`);\n  }\n\n  public deleteUserData(uid: string): Promise<any> {\n    const userRef: AngularFirestoreDocument<firebase.UserInfo> = this.getUserDocRefByUID(\n      uid\n    );\n    return userRef.delete();\n  }\n\n  public updateUserData(user: firebase.UserInfo): Promise<any> {\n    // Sets user$ data to firestore on login\n    const userRef: AngularFirestoreDocument<firebase.UserInfo> = this.getUserDocRefByUID(\n      user.uid\n    );\n    const data: firebase.UserInfo = {\n      uid: user.uid,\n      email: user.email,\n      displayName: user.displayName,\n      photoURL: user.photoURL,\n      phoneNumber: user.phoneNumber,\n      providerId: user.providerId,\n    };\n    return userRef.set(data, { merge: true });\n  }\n}\n","import '@firebase/auth';\n\nimport { EventEmitter, forwardRef, Inject, Injectable } from '@angular/core';\nimport { AngularFireAuth } from '@angular/fire/compat/auth';\nimport { MAT_SNACK_BAR_DEFAULT_OPTIONS, MatSnackBar, MatSnackBarConfig} from '@angular/material/snack-bar';\nimport firebase from 'firebase/compat/app';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\nimport { Accounts } from '../enums';\nimport { ICredentials, ISignInProcess, ISignUpProcess, NgxAuthFirebaseUIConfig } from '../interfaces';\nimport { NgxAuthFirebaseUIConfigToken } from '../tokens';\nimport { FirestoreSyncService } from './firestore-sync.service';\n\nimport UserCredential = firebase.auth.UserCredential;\n\nexport const facebookAuthProvider = new firebase.auth.FacebookAuthProvider();\nexport const googleAuthProvider = new firebase.auth.GoogleAuthProvider();\nexport const appleAuthProvider = new firebase.auth.OAuthProvider(\"apple.com\");\nexport const twitterAuthProvider = new firebase.auth.TwitterAuthProvider();\nexport const githubAuthProvider = new firebase.auth.GithubAuthProvider();\nexport const microsoftAuthProvider = new firebase.auth.OAuthProvider(\n  \"microsoft.com\"\n);\nexport const yahooAuthProvider = new firebase.auth.OAuthProvider(\"yahoo.com\");\n\nexport enum AuthProvider {\n  ALL = \"all\",\n  ANONYMOUS = \"anonymous\",\n  EmailAndPassword = \"firebase\",\n  Google = \"google\",\n  Apple = \"apple\",\n  Facebook = \"facebook\",\n  Twitter = \"twitter\",\n  Github = \"github\",\n  Microsoft = \"microsoft\",\n  Yahoo = \"yahoo\",\n  PhoneNumber = \"phoneNumber\",\n}\n\n@Injectable({\n  providedIn: \"root\",\n})\nexport class AuthProcessService implements ISignInProcess, ISignUpProcess {\n  onSuccessEmitter: EventEmitter<any> = new EventEmitter<any>();\n  onErrorEmitter: EventEmitter<any> = new EventEmitter<any>();\n\n  // Useful to know about auth state even between reloads.\n  // Replace emailConfirmationSent and emailToConfirm.\n  private _user$ = new BehaviorSubject<firebase.User | null>(null);\n  get user$(): Observable<firebase.User | null> {\n    return this._user$.asObservable();\n  }\n\n  /**\n   * @deprecated access via user$ asynchronously instead\n   */\n  user: firebase.User;\n\n  messageOnAuthSuccess: string;\n  messageOnAuthError: string;\n\n  // Legacy field that is set to true after sign up.\n  // Value is lost in case of reload. The idea here is to know if we just sent a verification email.\n  emailConfirmationSent: boolean;\n  // Legacy filed that contain the mail to confirm. Same lifecycle than emailConfirmationSent.\n  emailToConfirm: string;\n\n  constructor(\n    public afa: AngularFireAuth,\n    @Inject(forwardRef(() => NgxAuthFirebaseUIConfigToken))\n    public config: NgxAuthFirebaseUIConfig,\n    private snackBar: MatSnackBar,\n    private fireStoreService: FirestoreSyncService,\n    @Inject(MAT_SNACK_BAR_DEFAULT_OPTIONS)\n    private matSnackBarConfig: MatSnackBarConfig\n  ) {}\n\n  listenToUserEvents() {\n    this.afa.user.subscribe((user: firebase.User | null) => {\n      this._user$.next(user);\n      this.user = user;\n    });\n  }\n\n  /**\n   * Reset the password of the ngx-auth-firebaseui-user via email\n   *\n   * @param email - the email to reset\n   */\n  public async resetPassword(email: string): Promise<void> {\n    try {\n      console.log(\"Password reset email sent\");\n      return await this.afa.sendPasswordResetEmail(email);\n    } catch (error) {\n      return this.notifyError(error);\n    }\n  }\n\n  /**\n   * General sign in mechanism to authenticate the users with a firebase project\n   * using a traditional way, via username and password or by using an authentication provider\n   * like google, facebook, twitter and github\n   *\n   * @param provider - the provider to authenticate with (google, facebook, twitter, github)\n   * @param credentials optional email and password\n   */\n  public async signInWith(provider: AuthProvider, credentials?: ICredentials) {\n    try {\n      let signInResult: UserCredential | any;\n\n      switch (provider) {\n        case AuthProvider.ANONYMOUS:\n          signInResult = (await this.afa.signInAnonymously()) as UserCredential;\n          break;\n\n        case AuthProvider.EmailAndPassword:\n          signInResult = (await this.afa.signInWithEmailAndPassword(\n            credentials.email,\n            credentials.password\n          )) as UserCredential;\n          break;\n\n        case AuthProvider.Google:\n          signInResult = (await this.afa.signInWithPopup(\n            googleAuthProvider\n          )) as UserCredential;\n          break;\n\n        case AuthProvider.Apple:\n          signInResult = (await this.afa.signInWithPopup(\n            appleAuthProvider\n          )) as UserCredential;\n          break;\n\n        case AuthProvider.Facebook:\n          signInResult = (await this.afa.signInWithPopup(\n            facebookAuthProvider\n          )) as UserCredential;\n          break;\n\n        case AuthProvider.Twitter:\n          signInResult = (await this.afa.signInWithPopup(\n            twitterAuthProvider\n          )) as UserCredential;\n          break;\n\n        case AuthProvider.Github:\n          signInResult = (await this.afa.signInWithPopup(\n            githubAuthProvider\n          )) as UserCredential;\n          break;\n\n        case AuthProvider.Microsoft:\n          signInResult = (await this.afa.signInWithPopup(\n            microsoftAuthProvider\n          )) as UserCredential;\n          break;\n\n        case AuthProvider.Yahoo:\n          signInResult = (await this.afa.signInWithPopup(\n            yahooAuthProvider\n          )) as UserCredential;\n          break;\n\n        case AuthProvider.PhoneNumber:\n          // coming soon - see feature/sms branch\n          break;\n\n        default:\n          throw new Error(\n            `${AuthProvider[provider]} is not available as auth provider`\n          );\n      }\n      await this.handleSuccess(signInResult);\n    } catch (err) {\n      this.handleError(err);\n    }\n  }\n\n  /**\n   * Sign up new users via email and password.\n   * After that the ngx-auth-firebaseui-user should verify and confirm an email sent via the firebase\n   *\n   * @param displayName - the displayName if the new ngx-auth-firebaseui-user\n   * @param credentials email and password\n   * @returns -\n   */\n  public async signUp(displayName: string, credentials: ICredentials) {\n    try {\n      const userCredential: UserCredential = await this.afa.createUserWithEmailAndPassword(\n        credentials.email,\n        credentials.password\n      );\n      const user = userCredential.user;\n      await this.updateProfile(displayName, user.photoURL);\n\n      if (this.config.enableFirestoreSync) {\n        await this.fireStoreService.getUserDocRefByUID(user.uid).set({\n          uid: user.uid,\n          displayName,\n          email: user.email,\n          photoURL: user.photoURL,\n        } as firebase.User);\n      }\n\n      if (this.config.enableEmailVerification) {\n        await user.sendEmailVerification();\n      }\n\n      // Legacy fields\n      this.emailConfirmationSent = true;\n      this.emailToConfirm = credentials.email;\n\n      await this.handleSuccess(userCredential);\n    } catch (err) {\n      this.handleError(err);\n    }\n  }\n\n  async sendNewVerificationEmail(): Promise<void | never> {\n    if (!this.user) {\n      return Promise.reject(new Error(\"No signed in user\"));\n    }\n    return this.user.sendEmailVerification();\n  }\n\n  async signOut() {\n    try {\n      await this.afa.signOut();\n    } catch (error) {\n      this.notifyError(error);\n    }\n  }\n\n  /**\n   * Update the profile (name + photo url) of the authenticated ngx-auth-firebaseui-user in the\n   * firebase authentication feature (not in firestore)\n   *\n   * @param name - the new name of the authenticated ngx-auth-firebaseui-user\n   * @param photoURL - the new photo url of the authenticated ngx-auth-firebaseui-user\n   * @returns -\n   */\n  public updateProfile(name: string, photoURL: string): Promise<void> {\n    return this.afa.currentUser.then((user: firebase.User) => {\n      if (!photoURL) {\n        return user.updateProfile({ displayName: name });\n      } else {\n        return user.updateProfile({ displayName: name, photoURL });\n      }\n    });\n  }\n\n  public parseUserInfo(user: firebase.User): firebase.UserInfo {\n    return {\n      uid: user.uid,\n      displayName: user.displayName,\n      email: user.email,\n      phoneNumber: user.phoneNumber,\n      photoURL: user.photoURL,\n      providerId:\n        user.providerData.length > 0 ? user.providerData[0].providerId : null,\n    };\n  }\n\n  public getUserPhotoUrl(): Observable<string | null> {\n    return this._user$.pipe(\n      map((user: firebase.User | null) => {\n        if (!user) {\n          return null;\n        } else if (user.photoURL) {\n          return user.photoURL;\n        } else if (user.emailVerified) {\n          return this.getPhotoPath(Accounts.CHECK);\n        } else if (user.isAnonymous) {\n          return this.getPhotoPath(Accounts.OFF);\n        } else {\n          return this.getPhotoPath(Accounts.NONE);\n        }\n      })\n    );\n  }\n\n  public getPhotoPath(image: string): string {\n    return `assets/user/${image}.svg`;\n  }\n\n  public signInWithPhoneNumber() {\n    // todo: 3.1.18\n  }\n\n  async handleSuccess(userCredential: UserCredential) {\n\n    if(this.config.useRawUserCredential) {\n      this.onSuccessEmitter.next(userCredential);\n    } else {\n      this.onSuccessEmitter.next(userCredential.user);\n    }\n\n    if (this.config.enableFirestoreSync) {\n      try {\n        await this.fireStoreService.updateUserData(\n          this.parseUserInfo(userCredential.user)\n        );\n      } catch (e) {\n        console.error(\n          `Error occurred while updating user data with firestore: ${e}`\n        );\n      }\n    }\n    if (this.config.toastMessageOnAuthSuccess) {\n      const fallbackMessage = `Hello ${\n        userCredential.user.displayName ? userCredential.user.displayName : \"\"\n      }!`;\n      this.showToast(this.messageOnAuthSuccess || fallbackMessage);\n    }\n  }\n\n  handleError(error: any) {\n    this.notifyError(error);\n    console.error(error);\n  }\n\n  // Refresh user info. Can be useful for instance to get latest status regarding email verification.\n  reloadUserInfo() {\n    return this._user$\n      .pipe(take(1))\n      .subscribe((user: firebase.User | null) => user && user.reload());\n  }\n\n  // Search for an error message.\n  // Consumers of this library are given the possibility to provide a\n  // function in case they want to instrument message based on error properties.\n  getMessageOnAuthError(error: any) {\n    // eslint-disable-next-line no-bitwise\n    return (\n      error.toString() || \"Sorry, something went wrong. Please retry later.\"\n    );\n  }\n\n  // Show a toast using current snackbar config. If message is empty, no toast is displayed allowing to opt-out when needed.\n  // Default MatSnackBarConfig has no duration, meaning it stays visible forever.\n  // If that's the case, an action button is added to allow the end-user to dismiss the toast.\n  showToast(message: string) {\n    if (message) {\n      this.snackBar.open(\n        message,\n        this.matSnackBarConfig.duration ? null : \"OK\"\n      );\n    }\n  }\n\n  showErrorToast(error: any) {\n    if (this.config.toastMessageOnAuthError) {\n      this.showToast(this.getMessageOnAuthError(error));\n    }\n  }\n\n  notifyError(error: any) {\n    this.onErrorEmitter.emit(error);\n    this.showErrorToast(error);\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport {Router} from '@angular/router';\nimport {AuthProcessService} from '../../services/auth-process.service';\n\ninterface VerifyEmailContext {\n  email: string;\n  goBackURL: string;\n  verifyEmailTitleText: string;\n  verifyEmailConfirmationText: string;\n  verifyEmailGoBackText: string;\n  messageOnEmailConfirmationSuccess: string;\n  messageOnError: string;\n}\n\nconst defaultTranslations = {\n  verifyEmailTitleText: 'Confirm your e-mail address!',\n  verifyEmailConfirmationText: 'A confirmation e-mail has been sent.' +\n    ' Check your inbox and click on the link \"Confirm my e-mail\" to confirm your e-mail address.',\n  verifyEmailGoBackText: 'Go back',\n  sendNewVerificationEmailText: 'Send new confirmation e-mail',\n  signOutText: 'Sign out',\n  messageOnEmailConfirmationSuccess: 'A new confirmation e-mail has been sent. Please check your inbox.',\n};\n\n@Component({\n  selector: 'ngx-auth-firebaseui-email-confirmation',\n  templateUrl: './email-confirmation.component.html',\n  styleUrls: ['./email-confirmation.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EmailConfirmationComponent implements OnInit, OnChanges {\n\n  @Input() email: string;\n  @Input() goBackURL: string;\n  // i18n translations to use in default template\n  @Input() verifyEmailTitleText: string;\n  @Input() verifyEmailConfirmationText: string;\n  @Input() verifyEmailGoBackText: string;\n  @Input() sendNewVerificationEmailText: string;\n  @Input() signOutText: string;\n  @Input() messageOnEmailConfirmationSuccess: string;\n\n  // Template to use in place of default template\n  @Input() template: TemplateRef<any>;\n\n  @Output() signOut = new EventEmitter();\n\n  // Final template\n  verifyEmailTemplate: TemplateRef<any>;\n  // Context hash to use for verifyEmailTemplate.\n  verifyEmailContext: VerifyEmailContext;\n\n  isLoading: boolean;\n\n  @ViewChild('defaultVerifyEmail', {static: true}) defaultTemplate: TemplateRef<any>;\n\n  constructor(public authProcess: AuthProcessService, private router: Router, private changeDetectorRef: ChangeDetectorRef) {\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.verifyEmailTemplate && changes.verifyEmailTemplate.currentValue == null) {\n      this.verifyEmailTemplate = this.defaultTemplate;\n      console.log('ngOnChanges - defaultTemplate:', this.verifyEmailTemplate);\n    }\n    this.verifyEmailContext = this.createTemplateContext();\n  }\n\n  ngOnInit(): void {\n    if (!this.verifyEmailTemplate) {\n      console.log('ngOnInit - defaultTemplate');\n      this.verifyEmailTemplate = this.defaultTemplate;\n    }\n    this.verifyEmailContext = this.createTemplateContext();\n    console.log('verifyEmailTemplate:', this.verifyEmailTemplate);\n    console.log('verifyEmailContext:', this.verifyEmailContext);\n  }\n\n  async continue() {\n    try {\n      await this.authProcess.reloadUserInfo();\n      await this.router.navigate([this.goBackURL]);\n    } catch (error) {\n      this.authProcess.notifyError(error);\n    }\n  }\n\n  async sendNewVerificationEmail() {\n    try {\n      this.isLoading = true;\n      this.changeDetectorRef.markForCheck();\n      await this.authProcess.sendNewVerificationEmail();\n      this.authProcess.showToast(this.verifyEmailContext.messageOnEmailConfirmationSuccess);\n    } catch (error) {\n      this.authProcess.notifyError(error);\n    } finally {\n      this.isLoading = false;\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  private createTemplateContext(): any {\n    return {\n      email: this.email,\n      goBackURL: this.goBackURL,\n      verifyEmailTitleText: this.verifyEmailTitleText || defaultTranslations.verifyEmailTitleText,\n      verifyEmailConfirmationText: this.verifyEmailConfirmationText || defaultTranslations.verifyEmailConfirmationText,\n      verifyEmailGoBackText: this.verifyEmailGoBackText || defaultTranslations.verifyEmailGoBackText,\n      sendNewVerificationEmailText: this.sendNewVerificationEmailText || defaultTranslations.sendNewVerificationEmailText,\n      signOutText: this.signOutText || defaultTranslations.signOutText,\n      messageOnEmailConfirmationSuccess: this.messageOnEmailConfirmationSuccess || defaultTranslations.messageOnEmailConfirmationSuccess\n    };\n  }\n}\n","<ng-container *ngTemplateOutlet=\"verifyEmailTemplate; context: verifyEmailContext\"></ng-container>\n<ng-template #defaultVerifyEmail let-email=\"email\" let-goBackURL=\"goBackURL\"\n             let-sendNewVerificationEmailText=\"sendNewVerificationEmailText\"\n             let-signOutText=\"signOutText\"\n             let-verifyEmailConfirmationText=\"verifyEmailConfirmationText\" let-verifyEmailGoBackText=\"verifyEmailGoBackText\"\n             let-verifyEmailTitleText=\"verifyEmailTitleText\">\n  <mat-card class=\"verify-email\">\n    <mat-card-content style=\"flex-direction: column\" fxLayoutAlign=\"center center\">\n      <mat-icon>email</mat-icon>\n      <p class=\"title\" style=\"flex-direction: column\" fxLayoutAlign=\"center center\">\n        <span class=\"mat-subheading-2\">{{ verifyEmailTitleText }}</span>\n        <span class=\"mat-body-2\">{{ email }}</span>\n      </p>\n      <p class=\"subtitle\">{{ verifyEmailConfirmationText }}</p>\n      <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n    </mat-card-content>\n    <mat-card-actions style=\"flex-direction: column\" fxLayoutAlign=\"center center\">\n      <button (click)=\"continue()\" *ngIf=\"goBackURL\" class=\"go-back-button action-button\" mat-stroked-button>\n        {{ verifyEmailGoBackText }}\n      </button>\n      <button (click)=\"sendNewVerificationEmail()\" class=\"send-new-mail-button action-button\"\n              mat-stroked-button>{{ sendNewVerificationEmailText }}</button>\n      <button (click)=\"this.signOut.emit()\" class=\"sign-out-button action-button\" color=\"warn\"\n              mat-stroked-button>{{ signOutText }}</button>\n    </mat-card-actions>\n  </mat-card>\n</ng-template>\n","import {Component, Inject} from '@angular/core';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {LegalityDialogParams, LegalityDialogResult} from '../../interfaces';\n\n@Component({\n  selector: 'ngx-auth-firebaseui-legality-dialog',\n  templateUrl: './legality-dialog.component.html',\n  styleUrls: ['./legality-dialog.component.scss']\n})\nexport class LegalityDialogComponent {\n\n  checkTOS: boolean;\n  checkPrivacyPolicy: boolean;\n\n  constructor(public dialogRef: MatDialogRef<LegalityDialogComponent>,\n              @Inject(MAT_DIALOG_DATA) public data: LegalityDialogParams) {\n  }\n\n  // eslint-disable-next-line @typescript-eslint/naming-convention, no-underscore-dangle, id-blacklist, id-match\n  private _disableConfirmActionButton = false;\n\n  get disableConfirmActionButton(): boolean {\n    if (this.data.tosUrl && this.data.privacyPolicyUrl) {\n      this._disableConfirmActionButton = !(this.checkTOS && this.checkPrivacyPolicy);\n    } else if (this.data.tosUrl && !this.data.privacyPolicyUrl) {\n      this._disableConfirmActionButton = !this.checkTOS;\n    } else if (!this.data.tosUrl && this.data.privacyPolicyUrl) {\n      this._disableConfirmActionButton = !this.checkPrivacyPolicy;\n    }\n    return this._disableConfirmActionButton;\n  }\n\n  closeDialog() {\n    const result: LegalityDialogResult = {\n      checked: !this.disableConfirmActionButton,\n      authProvider: this.data.authProvider\n    };\n    this.dialogRef.close(result);\n  }\n\n}\n","<h1 matDialogTitle>Legal requirements</h1>\n\n<mat-dialog-content>\n  <div style=\"flex-direction: column\" fxLayoutAlign=\"start\">\n    <mat-checkbox *ngIf=\"this.data.tosUrl\" [(ngModel)]=\"checkTOS\">\n      I agree to the\n      <span>&nbsp;</span>\n      <a [href]=\"this.data.tosUrl\"\n         target=\"_blank\">\n        Terms of Service and Conditions\n      </a>\n    </mat-checkbox>\n\n    <mat-checkbox *ngIf=\"this.data.privacyPolicyUrl\"\n                  [(ngModel)]=\"checkPrivacyPolicy\">\n      I have read and agree to the\n      <span>&nbsp;</span>\n      <a [href]=\"this.data.privacyPolicyUrl\"\n         target=\"_blank\">\n        Privacy\n      </a>\n    </mat-checkbox>\n  </div>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n  <button color=\"warn\"\n          id=\"decline-action\"\n          mat-raised-button\n          matDialogClose>Decline\n  </button>\n  <button (click)=\"closeDialog()\"\n          [disabled]=\"disableConfirmActionButton\"\n          color=\"primary\"\n          id=\"confirm-action\"\n          mat-raised-button>Confirm\n  </button>\n</mat-dialog-actions>\n\n","// import * as firebase from 'firebase';\n\nexport interface NgxAuthFirebaseUIConfig {\n  // authNextURL?: string, // popup or redirect\n  // tosUrl?: string, // term of services url\n  // ppUrl?: string, // privacy policy url\n  // authProviders?: Array<AuthProvider>,\n  // languageCode?: string, // todo: 28.3.18\n  authGuardFallbackURL?: string;\n  authGuardLoggedInURL?: string;\n  enableFirestoreSync?: boolean;\n\n  // Toasts\n  toastMessageOnAuthSuccess?: boolean;\n  toastMessageOnAuthError?: boolean;\n\n  // Password length min/max in forms independently of each componenet min/max.\n  // `min/max` input parameters in components should be within this range.\n  passwordMaxLength?: number;\n  passwordMinLength?: number;\n\n  // Same as password but for the name\n  nameMaxLength?: number;\n  nameMinLength?: number;\n\n  // If set, sign-in/up form is not available until email has been verified.\n  // Plus protected routes are still protected even though user is connected.\n  guardProtectedRoutesUntilEmailIsVerified?: boolean;\n\n  // Control whether or not email verification is used\n  enableEmailVerification?: boolean;\n\n  // If set to true outputs the UserCredential object instead of firebase.User after login and signup\n  useRawUserCredential?: boolean\n}\n\nexport const defaultAuthFirebaseUIConfig: NgxAuthFirebaseUIConfig = {\n  // authMethod: 'redirect',\n  // authProviders: [new GoogleAuthProvider(), new FacebookAuthProvider(), new TwitterAuthProvider(), new GithubAuthProvider()],\n  enableFirestoreSync: true,\n  toastMessageOnAuthSuccess: true,\n  toastMessageOnAuthError: true,\n  authGuardFallbackURL: '/',\n  authGuardLoggedInURL: '/',\n\n  // Password length min/max in forms independently of each componenet min/max.\n  // `min/max` input parameters in components should be within this range.\n  passwordMaxLength: 60,\n  passwordMinLength: 8,\n\n  // Same as password but for the name\n  nameMaxLength: 50,\n  nameMinLength: 2,\n\n  // If set, sign-in/up form is not available until email has been verified.\n  // Plus protected routes are still protected even though user is connected.\n  guardProtectedRoutesUntilEmailIsVerified: true,\n\n  // Default to email verification on\n  enableEmailVerification: true,\n\n  // Default to false to keep the current projects working as is\n  useRawUserCredential: false\n};\n\n// Merge default config with user provided config.\nexport function ngxAuthFirebaseUIConfigFactory(userProvidedConfig: NgxAuthFirebaseUIConfig): NgxAuthFirebaseUIConfig {\n  return Object.assign({}, defaultAuthFirebaseUIConfig, userProvidedConfig);\n}\n","import {AuthProvider} from '../services/auth-process.service';\n\nexport interface ICredentials {\n  email: string;\n  password: string;\n}\n\nexport interface ISignUpProcess {\n\n  signUp(name: string, credentials: ICredentials): any;\n}\n\nexport interface ISignInProcess {\n\n  onSuccessEmitter: any;\n  onErrorEmitter: any;\n\n  signInWith(provider: AuthProvider, credentials?: ICredentials): any;\n\n  resetPassword(email: string): any;\n}\n\nexport enum Theme {\n  DEFAULT = 'default',\n  CLASSIC = 'classic',\n  STROKED = 'stroked',\n  FAB = 'fab',\n  MINI_FAB = 'mini-fab',\n  RAISED = 'raised',\n}\n\nexport enum Layout {\n  ROW = 'row',\n  COLUMN = 'column'\n}\n\nexport const EMAIL_REGEX = new RegExp(\n  [\n    '^(([^<>()[\\\\]\\\\.,;:\\\\s@\"]+(\\\\.[^<>()\\\\[\\\\]\\\\.,;:\\\\s@\"]+)*)',\n    '|(\".+\"))@((\\\\[[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.',\n    '[0-9]{1,3}])|(([a-zA-Z\\\\-0-9]+\\\\.)+',\n    '[a-zA-Z]{2,}))$',\n  ].join('')\n);\n\n// eslint-disable-next-line max-len\nexport const PHONE_NUMBER_REGEX = new RegExp(\n  [\n    '^[+]{0,1}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\\\s\\\\.]{0,1}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\\\s\\\\./0-9]{4,12}$',\n  ].join('')\n);\n","import {animate, animateChild, animation, query, stagger, state, style, transition, trigger, useAnimation} from '@angular/animations';\n\nconst customAnimation = animation(\n  [\n    style({\n      opacity: '{{opacity}}',\n      transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})'\n    }),\n    animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style('*'))\n  ],\n  {\n    params: {\n      duration: '200ms',\n      delay: '0ms',\n      opacity: '0',\n      scale: '1',\n      x: '0',\n      y: '0',\n      z: '0'\n    }\n  }\n);\n\nexport const NgxAuthFirebaseuiAnimations = [\n  trigger('animate', [transition('void => *', [useAnimation(customAnimation)])]),\n\n  trigger('animateStagger', [\n    state('50', style('*')),\n    state('100', style('*')),\n    state('200', style('*')),\n\n    transition('void => 50', query('@*', [stagger('50ms', [animateChild()])], {optional: true})),\n    transition('void => 100', query('@*', [stagger('100ms', [animateChild()])], {optional: true})),\n    transition('void => 200', query('@*', [stagger('200ms', [animateChild()])], {optional: true}))\n  ]),\n];\n","import {Component, Input, Output, Renderer2} from '@angular/core';\nimport {AuthProcessService, AuthProvider} from '../../services/auth-process.service';\nimport {NgxAuthFirebaseuiAnimations} from '../../animations';\nimport {Layout, LegalityDialogParams, LegalityDialogResult, Theme} from '../../interfaces';\nimport {MatDialog,MatDialogRef} from '@angular/material/dialog';\nimport {LegalityDialogComponent} from '../legality-dialog/legality-dialog.component';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\n\n@Component({\n  selector: 'ngx-auth-firebaseui-providers',\n  templateUrl: 'auth.providers.component.html',\n  styleUrls: ['auth.providers.component.scss'],\n  animations: NgxAuthFirebaseuiAnimations\n})\nexport class AuthProvidersComponent {\n\n  @Input() theme: Theme; // theme: string = Theme.DEFAULT;\n  @Input() layout: string = Layout.ROW;\n  @Input() providers: AuthProvider[] | AuthProvider = AuthProvider.ALL; //  google, facebook, twitter, github, microsoft, yahoo\n\n  @Output() onSuccess: any;\n  @Output() onError: any;\n\n  @Input() tosUrl: string;\n  @Input() privacyPolicyUrl: string;\n  dialogRef: MatDialogRef<LegalityDialogComponent>;\n\n  themes = Theme;\n  authProvider = AuthProvider;\n\n  isXsScreen: boolean;\n\n  constructor(public authProcess: AuthProcessService, public dialog: MatDialog,\n      private renderer: Renderer2,\n      private breakpointObserver: BreakpointObserver) {\n    this.onSuccess = authProcess.onSuccessEmitter;\n    this.onError = authProcess.onErrorEmitter;\n  }\n  ngOnInit() {\n    this.breakpointObserver.observe([Breakpoints.XSmall])\n      .subscribe(result => {\n        this.isXsScreen = result.matches;\n      });\n  }\n  processLegalSignUP(authProvider?: AuthProvider) {\n    if (this.tosUrl || this.privacyPolicyUrl) {\n      const params: LegalityDialogParams = {\n        tosUrl: this.tosUrl,\n        privacyPolicyUrl: this.privacyPolicyUrl,\n        authProvider\n      };\n\n      this.dialogRef = this.dialog.open(LegalityDialogComponent, {data: params});\n      this.dialogRef.afterClosed().subscribe((result: LegalityDialogResult) => {\n        if (result && result.checked) {\n          // this._afterSignUpMiddleware(result.authProvider).then(() => this.signUpFormGroup.reset());\n          this.authProcess.signInWith(authProvider);\n        }\n        this.dialogRef = null;\n      });\n    } else {\n      // this._afterSignUpMiddleware(authProvider).then(() => this.signUpFormGroup.reset());\n      this.authProcess.signInWith(authProvider);\n    }\n  }\n\n}\n","<div [@animateStagger]=\"{ value: '50' }\" [ngSwitch]=\"theme\">\n\n  <!--default icon buttons-->\n  <div *ngSwitchDefault\n       [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\">\n    <button (click)=\"processLegalSignUP(authProvider.Google)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            mat-button>\n      <mat-icon svgIcon=\"google-colored\"></mat-icon>\n      Google\n    </button>\n\n    <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"apple-filled\"\n            mat-button>\n      <mat-icon svgIcon=\"apple\"></mat-icon>\n      Apple\n    </button>\n\n    <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"facebook-filled\"\n            mat-button>\n      <mat-icon svgIcon=\"facebook\"></mat-icon>\n      Facebook\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"twitter-filled\"\n            mat-button>\n      <mat-icon svgIcon=\"twitter\"></mat-icon>\n      Twitter\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Github)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            mat-button>\n      <mat-icon svgIcon=\"github\"></mat-icon>\n      GitHub\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            mat-button>\n      <mat-icon svgIcon=\"microsoft\"></mat-icon>\n      Microsoft\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            mat-button>\n      <mat-icon svgIcon=\"yahoo\"></mat-icon>\n      Yahoo\n    </button>\n  </div>\n\n  <!--classic-->\n  <div *ngSwitchCase=\"themes.CLASSIC\"\n       [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row'? 'space-around center' : 'stretch'}\"\n       class=\"buttons-classic\">\n    <button (click)=\"processLegalSignUP(authProvider.Google)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"google-classic\"\n            mat-button>\n      Google\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"apple-classic\"\n            mat-button>\n      Apple\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"facebook-classic\"\n            mat-button>\n      Facebook\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"twitter-classic\"\n            mat-button>\n      Twitter\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Github)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"github-classic\"\n            mat-button>\n      GitHub\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"microsoft-classic\"\n            mat-button>\n      Microsoft\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"yahoo-classic\"\n            mat-button>\n      Yahoo\n    </button>\n  </div>\n\n  <!--stroked-->\n  <div *ngSwitchCase=\"themes.STROKED\"\n\n       [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n       class=\"buttons-classic\">\n    <button (click)=\"processLegalSignUP(authProvider.Google)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':true}\"\n            class=\"google-classic\"\n            mat-stroked-button>\n      Google\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"apple-classic\"\n            mat-stroked-button>\n      Apple\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"facebook-classic\"\n            mat-stroked-button>\n      Facebook\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"twitter-classic\"\n            mat-stroked-button>\n      Twitter\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Github)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"github-classic\"\n            mat-stroked-button>\n      GitHub\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"microsoft-classic\"\n            mat-stroked-button>\n      Microsoft\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"yahoo-classic\"\n            mat-stroked-button>\n      Yahoo\n    </button>\n  </div>\n\n  <!--raised-->\n  <div *ngSwitchCase=\"themes.RAISED\"\n       [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n       class=\"buttons-raised\">\n    <button (click)=\"processLegalSignUP(authProvider.Google)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"google-raised\"\n            mat-raised-button>\n      Google\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"apple-raised\"\n            mat-raised-button>\n      Apple\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"facebook-raised\"\n            mat-raised-button>\n      Facebook\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"twitter-raised\"\n            mat-raised-button>\n      Twitter\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Github)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"github-raised\"\n            mat-raised-button>\n      GitHub\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"microsoft-raised\"\n            mat-raised-button>\n      Microsoft\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            [ngClass]=\"{'space-full-xs':isXsScreen}\"\n            class=\"yahoo-raised\"\n            mat-raised-button>\n      Yahoo\n    </button>\n  </div>\n\n  <!--fab-->\n  <div *ngSwitchCase=\"themes.FAB\"\n       [ngStyle]=\"{'flex-direction': layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n       class=\"buttons-raised\">\n    <button (click)=\"processLegalSignUP(authProvider.Google)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"google-raised\"\n            mat-fab>\n      <mat-icon svgIcon=\"google\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"apple-raised\"\n            mat-fab>\n      <mat-icon svgIcon=\"apple\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"facebook-raised\"\n            mat-fab>\n      <mat-icon svgIcon=\"facebook\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"twitter-raised\"\n            mat-fab>\n      <mat-icon svgIcon=\"twitter\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Github)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"github-raised\"\n            mat-fab>\n      <mat-icon svgIcon=\"github\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"microsoft\"\n            mat-fab>\n      <mat-icon svgIcon=\"microsoft\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"yahoo-raised\"\n            mat-fab>\n      <mat-icon svgIcon=\"yahoo\"></mat-icon>\n    </button>\n  </div>\n\n  <!--mini-fab-->\n  <div *ngSwitchCase=\"themes.MINI_FAB\"\n       [ngStyle]=\"{'flex-direction': layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n       class=\"buttons-raised\"\n       fxLayoutAlign.xs=\"center center\">\n    <button (click)=\"processLegalSignUP(authProvider.Google)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"google-raised\"\n            fxFlexAlign=\"center\"\n            mat-mini-fab>\n      <mat-icon svgIcon=\"google\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"apple-raised\"\n            mat-mini-fab>\n      <mat-icon svgIcon=\"apple\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"facebook-raised\"\n            mat-mini-fab>\n      <mat-icon svgIcon=\"facebook\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"twitter-raised\"\n            mat-mini-fab>\n      <mat-icon class=\"icon-white\" svgIcon=\"twitter\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Github)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"github-raised\"\n            mat-mini-fab>\n      <mat-icon svgIcon=\"github\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"microsoft\"\n            mat-mini-fab>\n      <mat-icon svgIcon=\"microsoft\"></mat-icon>\n    </button>\n    <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n            *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n            [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n            class=\"yahoo-raised\"\n            mat-mini-fab>\n      <mat-icon svgIcon=\"yahoo\"></mat-icon>\n    </button>\n  </div>\n</div>\n","import { isPlatformBrowser } from \"@angular/common\";\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  PLATFORM_ID,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport {\n  AbstractControl,\n  UntypedFormControl,\n  UntypedFormGroup,\n  Validators,\n} from \"@angular/forms\";\n\n// ANGULAR MATERIAL\nimport { MatLegacyTabChangeEvent as MatTabChangeEvent, MatLegacyTabGroup as MatTabGroup } from \"@angular/material/legacy-tabs\";\nimport { ThemePalette } from \"@angular/material/core\";\nimport { MatLegacyDialog as MatDialog, MatLegacyDialogRef as MatDialogRef } from \"@angular/material/legacy-dialog\";\nimport { MatLegacyFormFieldAppearance as MatFormFieldAppearance } from \"@angular/material/legacy-form-field\";\n\n// ANGULAR FIRE\nimport { AngularFireAuth } from \"@angular/fire/compat/auth\";\n\n// Third PARTY\nimport { MatPasswordStrengthComponent } from \"@angular-material-extensions/password-strength\";\n\n// RXJS\nimport { Subscription } from \"rxjs\";\n\nimport { LegalityDialogComponent } from \"..\";\nimport {\n  EMAIL_REGEX,\n  LegalityDialogParams,\n  LegalityDialogResult,\n  NgxAuthFirebaseUIConfig, Theme,\n} from '../../interfaces';\nimport {\n  AuthProcessService,\n  AuthProvider,\n} from \"../../services/auth-process.service\";\nimport { NgxAuthFirebaseuiAnimations } from \"../../animations\";\nimport { NgxAuthFirebaseUIConfigToken } from \"../../tokens\";\n\n@Component({\n  selector: \"ngx-auth-firebaseui\",\n  templateUrl: \"auth.component.html\",\n  styleUrls: [\"auth.component.scss\"],\n  animations: NgxAuthFirebaseuiAnimations,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AuthComponent\n  implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n  @ViewChild(MatTabGroup, { static: false }) matTabGroup: MatTabGroup;\n  @ViewChild(MatPasswordStrengthComponent, { static: false })\n  passwordStrength: MatPasswordStrengthComponent;\n\n  isLoading: boolean;\n  //  google, facebook, twitter, github as array or all as one single string\n  @Input() providers: AuthProvider[] | AuthProvider = AuthProvider.ALL;\n  @Input() providersTheme: Theme; // Classic, Stroked, etc.\n\n  @Input() appearance: MatFormFieldAppearance;\n  @Input() tabIndex: number | null;\n  @Input() registrationEnabled = true;\n  @Input() resetPasswordEnabled = true;\n  @Input() guestEnabled = true;\n  @Input() tosUrl: string;\n  @Input() privacyPolicyUrl: string;\n  @Input() goBackURL: string;\n  @Input() messageOnAuthSuccess: string;\n  @Input() messageOnAuthError: string;\n  @Input() messageOnEmailConfirmationSuccess: string;\n\n  // Events\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onSuccess: any;\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onError: any;\n  @Output() selectedTabChange: EventEmitter<\n    MatTabChangeEvent\n  > = new EventEmitter();\n\n  // Password strength api\n  @Input() enableLengthRule = true;\n  @Input() enableLowerCaseLetterRule = true;\n  @Input() enableUpperCaseLetterRule = true;\n  @Input() enableDigitRule = true;\n  @Input() enableSpecialCharRule = true;\n  @Input() min: number;\n  @Input() max: number;\n  @Input() customValidator: RegExp;\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onStrengthChanged: EventEmitter<number> = new EventEmitter();\n\n  // Verify email template to use in place of default template.\n  // See email-confirmation component\n  @Input() verifyEmailTemplate: TemplateRef<any>;\n\n  // i18n translations to use in default template for email verification.\n  // See email-confirmation component\n  @Input() verifyEmailTitleText: string;\n  @Input() verifyEmailConfirmationText: string;\n  @Input() verifyEmailGoBackText: string;\n  @Input() sendNewVerificationEmailText: string;\n  @Input() signOutText = \"Sign out\";\n\n  // Customize the text\n  // Reset Password Tab\n  @Input() resetPasswordTabText = \"Reset e-mail address to password\";\n  @Input() resetPasswordInputText = \"Reset e-mail address to password\";\n  @Input() resetPasswordErrorRequiredText =\n    \"E-mail is required to reset the password!\";\n  @Input() resetPasswordErrorPatternText =\n    \"Please enter a valid e-mail address\";\n  @Input() resetPasswordActionButtonText = \"Reset\";\n  @Input() resetPasswordInstructionsText =\n    \"Reset requested. Check your e-mail instructions.\";\n\n  // SignIn Tab\n  @Input() signInTabText = \"Sign in\";\n  @Input() signInCardTitleText = \"Signing in\";\n  @Input() loginButtonText = \"Log In\";\n  @Input() forgotPasswordButtonText = \"Forgot Password ?\";\n\n  // Common\n  @Input() nameText = \"Name\";\n  @Input() nameErrorRequiredText = \"Name is required\";\n  @Input() nameErrorMinLengthText = \"The name is too short!\";\n  @Input() nameErrorMaxLengthText = \"The name is too long!\";\n\n  @Input() emailText = \"E-mail\";\n  @Input() emailErrorRequiredText = \"E-mail is required\";\n  @Input() emailErrorPatternText = \"Please enter a valid e-mail address\";\n\n  @Input() passwordText = \"Password\";\n  @Input() passwordErrorRequiredText = \"Password is required\";\n  @Input() passwordErrorMinLengthText = \"The password is too short!\";\n  @Input() passwordErrorMaxLengthText = \"The password is too long!\";\n\n  // Register Tab\n  @Input() registerTabText = \"Register\";\n  @Input() registerCardTitleText = \"Registration\";\n  @Input() registerButtonText = \"Register\";\n  @Input() guestButtonText = \"continue as guest\";\n\n  // email confirmation component\n  @Input() emailConfirmationTitle = \"Confirm your e-mail address!\";\n  // eslint-disable-next-line max-len\n  @Input()\n  emailConfirmationText = `A confirmation e-mail has been sent to you. Check your inbox and click on the link \"Confirm my e-mail\" to confirm your e-mail address.`;\n\n  authProvider = AuthProvider;\n  passwordResetWished: boolean;\n\n  public signInFormGroup: UntypedFormGroup;\n  public signUpFormGroup: UntypedFormGroup;\n  public resetPasswordFormGroup: UntypedFormGroup;\n\n  onErrorSubscription: Subscription;\n  authenticationError = false;\n\n  passReset = false;\n  dialogRef: MatDialogRef<LegalityDialogComponent>;\n\n  authProviders = AuthProvider;\n\n  signInEmailFormControl: AbstractControl;\n  sigInPasswordFormControl: AbstractControl;\n\n  sigUpNameFormControl: AbstractControl;\n  sigUpEmailFormControl: AbstractControl;\n  sigUpPasswordFormControl: AbstractControl;\n  sigUpPasswordConfirmationFormControl: AbstractControl;\n  resetPasswordEmailFormControl: AbstractControl;\n\n  constructor(\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    @Inject(PLATFORM_ID) private platformId: Object,\n    @Inject(forwardRef(() => NgxAuthFirebaseUIConfigToken))\n    public config: NgxAuthFirebaseUIConfig,\n    public auth: AngularFireAuth,\n    public authProcess: AuthProcessService,\n    public dialog: MatDialog,\n    private activatedRoute: ActivatedRoute,\n    private changeDetectorRef: ChangeDetectorRef\n  ) {\n    this.onSuccess = authProcess.onSuccessEmitter;\n    this.onError = authProcess.onErrorEmitter;\n  }\n\n  get color(): string | ThemePalette {\n    return this.authenticationError ? \"warn\" : \"primary\";\n  }\n\n  public ngOnInit(): void {\n    if (isPlatformBrowser(this.platformId)) {\n      this.onErrorSubscription = this.onError.subscribe(\n        () => (this.authenticationError = true)\n      );\n    }\n    this.min =\n      this.min != null\n        ? Math.max(this.min, this.config.passwordMinLength)\n        : this.config.passwordMinLength;\n    this.max =\n      this.max != null\n        ? Math.min(this.max, this.config.passwordMaxLength)\n        : this.config.passwordMaxLength;\n\n    this.goBackURL = this.chooseBackUrl();\n\n    this.updateAuthSnackbarMessages();\n    // auth form's initialization\n    this._initSignInFormGroupBuilder();\n    this._initSignUpFormGroupBuilder();\n    this._initResetPasswordFormGroupBuilder();\n  }\n\n  ngAfterViewInit(): void {\n    if (this.passwordStrength) {\n      this.passwordStrength.onStrengthChanged.subscribe((strength: number) => {\n        this.onStrengthChanged.emit(strength);\n      });\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.messageOnAuthSuccess || changes.messageOnAuthError) {\n      this.updateAuthSnackbarMessages();\n    }\n    if (changes.min) {\n      this.min =\n        this.min != null\n          ? Math.max(this.min, this.config.passwordMinLength)\n          : this.config.passwordMinLength;\n    }\n    if (changes.max) {\n      this.max =\n        this.max != null\n          ? Math.min(this.max, this.config.passwordMaxLength)\n          : this.config.passwordMaxLength;\n    }\n    if (changes.goBackURL) {\n      this.goBackURL = this.chooseBackUrl();\n    }\n  }\n\n  ngOnDestroy(): void {\n    if (this.onErrorSubscription) {\n      this.onErrorSubscription.unsubscribe();\n    }\n  }\n\n  onTabChange(event: MatTabChangeEvent) {\n    this.selectedTabChange.emit(event);\n    this.tabIndex = event.index;\n  }\n\n  async signOut() {\n    try {\n      this.isLoading = true;\n      this.changeDetectorRef.markForCheck();\n      await this.authProcess.signOut();\n    } finally {\n      this.isLoading = false;\n      this.tabIndex = 0;\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  async signIn() {\n    if (!this.signInFormGroup.valid) {\n      return;\n    }\n    try {\n      this.isLoading = true;\n      this.changeDetectorRef.markForCheck();\n      await this.authProcess.signInWith(this.authProviders.EmailAndPassword, {\n        email: this.signInFormGroup.value.email,\n        password: this.signInFormGroup.value.password,\n      });\n    } finally {\n      this.isLoading = false;\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  updateAuthSnackbarMessages(): void {\n    this.authProcess.messageOnAuthSuccess = this.messageOnAuthSuccess;\n    this.authProcess.messageOnAuthError = this.messageOnAuthError;\n  }\n\n  createForgotPasswordTab() {\n    this.passwordResetWished = true;\n    this.tabIndex = 2;\n    this.changeDetectorRef.markForCheck();\n  }\n\n  processLegalSignUP(authProvider?: AuthProvider) {\n    if (this.tosUrl || this.privacyPolicyUrl) {\n      const params: LegalityDialogParams = {\n        tosUrl: this.tosUrl,\n        privacyPolicyUrl: this.privacyPolicyUrl,\n        authProvider,\n      };\n\n      this.dialogRef = this.dialog.open(LegalityDialogComponent, {\n        data: params,\n      });\n      this.dialogRef.afterClosed().subscribe((result: LegalityDialogResult) => {\n        if (result && result.checked) {\n          this._afterSignUpMiddleware(result.authProvider).then(() =>\n            this.signUpFormGroup.reset()\n          );\n        }\n        this.dialogRef = null;\n      });\n    } else {\n      this._afterSignUpMiddleware(authProvider).then(() =>\n        this.signUpFormGroup.reset()\n      );\n    }\n  }\n\n  async signUp() {\n    try {\n      this.isLoading = true;\n      this.changeDetectorRef.markForCheck();\n      return await this.authProcess.signUp(this.signUpFormGroup.value.name, {\n        email: this.signUpFormGroup.value.email,\n        password: this.signUpFormGroup.value.password,\n      });\n    } finally {\n      this.isLoading = false;\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  async signUpAnonymously() {\n    try {\n      this.isLoading = true;\n      this.changeDetectorRef.markForCheck();\n      await this.authProcess.signInWith(this.authProvider.ANONYMOUS);\n    } finally {\n      this.isLoading = false;\n      this.changeDetectorRef.markForCheck();\n    }\n  }\n\n  resetPassword() {\n    this.authProcess\n      .resetPassword(this.resetPasswordEmailFormControl.value)\n      .then(() => {\n        this.passReset = true;\n        // this.tabIndex = 2;\n        this.changeDetectorRef.markForCheck();\n      });\n  }\n\n  private chooseBackUrl() {\n    return (\n      this.activatedRoute.snapshot.queryParams.redirectUrl ||\n      this.goBackURL ||\n      \"/\"\n    );\n  }\n\n  private _initSignInFormGroupBuilder() {\n    this.signInFormGroup = new UntypedFormGroup({});\n    this.signInFormGroup.registerControl(\n      \"email\",\n      (this.signInEmailFormControl = new UntypedFormControl(\"\", [\n        Validators.required,\n        Validators.pattern(EMAIL_REGEX),\n      ]))\n    );\n    this.signInFormGroup.registerControl(\n      \"password\",\n      (this.sigInPasswordFormControl = new UntypedFormControl(\"\", [\n        Validators.required,\n        Validators.minLength(this.min),\n        Validators.maxLength(this.max),\n      ]))\n    );\n  }\n\n  private _initSignUpFormGroupBuilder() {\n    this.signUpFormGroup = new UntypedFormGroup({\n      name: this.sigUpNameFormControl = new UntypedFormControl(\"\", [\n        Validators.required,\n        Validators.minLength(this.config.nameMinLength),\n        Validators.maxLength(this.config.nameMaxLength),\n      ]),\n      email: this.sigUpEmailFormControl = new UntypedFormControl(\"\", [\n        Validators.required,\n        Validators.pattern(EMAIL_REGEX),\n      ]),\n      password: this.sigUpPasswordFormControl = new UntypedFormControl(\"\", [\n        Validators.required,\n        Validators.minLength(this.min),\n        Validators.maxLength(this.max),\n      ]),\n    });\n  }\n\n  private _initResetPasswordFormGroupBuilder() {\n    this.resetPasswordFormGroup = new UntypedFormGroup({\n      email: this.resetPasswordEmailFormControl = new UntypedFormControl(\"\", [\n        Validators.required,\n        Validators.pattern(EMAIL_REGEX),\n      ]),\n    });\n  }\n\n  private _afterSignUpMiddleware(authProvider?: AuthProvider) {\n    if (authProvider === this.authProvider.ANONYMOUS) {\n      return this.signUpAnonymously();\n    }\n    return this.signUp();\n  }\n}\n","<ng-container *ngIf=\"authProcess.user$ | async as user; else showForm\">\n\n  <!-- This component will be shown when:\n    - we just sent a verification mail (notably after sign up)\n    - we arrived from the guard after trying to access a protected route even though we are connected\n    - config.enableEmailVerification is undefined, null or true\n  -->\n  <div\n    *ngIf=\"(config.enableEmailVerification !== false) && (\n     (config.guardProtectedRoutesUntilEmailIsVerified && !user.emailVerified) || (authProcess.emailConfirmationSent && !user.emailVerified)\n     ); else signedInUser\"\n    style=\"flex-direction: row\" fxLayoutAlign=\"center center\">\n    <ngx-auth-firebaseui-email-confirmation\n      (signOut)=\"signOut()\"\n      [email]=\"user.email\"\n      [goBackURL]=\"goBackURL\"\n      [messageOnEmailConfirmationSuccess]=\"messageOnEmailConfirmationSuccess\"\n      [sendNewVerificationEmailText]=\"sendNewVerificationEmailText\"\n      [signOutText]=\"signOutText\"\n      [template]=\"verifyEmailTemplate\"\n      [verifyEmailConfirmationText]=\"verifyEmailConfirmationText\"\n      [verifyEmailGoBackText]=\"verifyEmailGoBackText\"\n      [verifyEmailTitleText]=\"verifyEmailTitleText\">\n    </ngx-auth-firebaseui-email-confirmation>\n  </div>\n\n  <ng-template #signedInUser>\n    <div class=\"signed-in-container\" style=\"flex-direction: column\" fxLayoutAlign=\"center center\">\n      <img *ngIf=\"user?.photoURL; else noPhoto\" [src]=\"user?.photoURL\" class=\"account-circle\">\n      <ng-template #noPhoto>\n        <mat-icon class=\"account-circle\">account_circle</mat-icon>\n      </ng-template>\n      <div class=\"user-display-name mat-title\">{{ user?.displayName }}</div>\n      <div class=\"user-email mat-body-2\">{{ user?.email }}</div>\n      <div class=\"actions\">\n        <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n        <a *ngIf=\"verifyEmailGoBackText\" [routerLink]=\"goBackURL\" class=\"go-back-button action-button\" color=\"primary\"\n           mat-stroked-button>{{ verifyEmailGoBackText }}</a>\n        <button (click)=\"signOut()\" class=\"sign-out-button action-button\" color=\"warn\"\n                mat-stroked-button>{{ signOutText }}</button>\n      </div>\n    </div>\n  </ng-template>\n\n</ng-container>\n\n<ng-template #showForm>\n  <mat-tab-group (selectedTabChange)=\"onTabChange($event)\" [color]=\"color\" [selectedIndex]=\"tabIndex\">\n    <!--Sign in tab-->\n    <mat-tab [label]=\"signInTabText\">\n      <mat-card>\n        <mat-card-title>{{signInCardTitleText}}</mat-card-title>\n        <mat-card-content>\n          <form (ngSubmit)=\"signIn()\"\n                [@animateStagger]=\"{ value: '50' }\"\n                [formGroup]=\"signInFormGroup\">\n            <div style=\"flex-direction: column\" fxLayoutAlign=\"center\">\n              <mat-form-field [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n                              [appearance]=\"appearance\">\n                <mat-label>{{emailText}}</mat-label>\n                <input formControlName=\"email\"\n                       matInput\n                       required\n                       autocomplete=\"username\">\n                <mat-icon [color]=\"color\" matSuffix>email</mat-icon>\n                <mat-error *ngIf=\"signInEmailFormControl.hasError('required')\">\n                  {{emailErrorRequiredText}}\n                </mat-error>\n                <mat-error *ngIf=\"signInEmailFormControl.hasError('pattern')\">\n                  {{emailErrorPatternText}}\n                </mat-error>\n              </mat-form-field>\n\n              <mat-form-field [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n                              [appearance]=\"appearance\">\n                <mat-label>{{passwordText}}</mat-label>\n                <input [maxlength]=\"max\" [minlength]=\"min\" [type]=\"togglePass?.type\" formControlName=\"password\"\n                       autocomplete=\"current-password\" matInput\n                       required/>\n                <mat-pass-toggle-visibility #togglePass matSuffix></mat-pass-toggle-visibility>\n                <mat-icon [color]=\"color\" matSuffix>lock</mat-icon>\n                <mat-hint align=\"end\" aria-live=\"polite\"> {{ signInFormGroup.value.password.length }}\n                  / {{ max }} </mat-hint>\n                <mat-error *ngIf=\"sigInPasswordFormControl.hasError('required')\">\n                  {{passwordErrorRequiredText}}\n                </mat-error>\n                <mat-error *ngIf=\"sigInPasswordFormControl.hasError('minlength')\">\n                  {{ passwordErrorMinLengthText }}\n                </mat-error>\n                <mat-error *ngIf=\"sigInPasswordFormControl.hasError('maxlength')\">\n                  {{ passwordErrorMaxLengthText }}\n                </mat-error>\n              </mat-form-field>\n\n              <button [@animate]=\"{ value: '*', params: { x: '50px' } }\"\n                      [color]=\"color\"\n                      [disabled]=\"signInFormGroup.invalid\"\n                      class=\"space-top\"\n                      mat-raised-button\n                      style=\"margin-top: 20px\"\n                      type=\"submit\">\n                {{loginButtonText}}\n              </button>\n\n            </div>\n          </form>\n\n          <div fxLayoutAlign=\"center\">\n            <button (click)=\"createForgotPasswordTab()\"\n                    *ngIf=\"resetPasswordEnabled\"\n                    [@animate]=\"{ value: '*', params: { x: '-50px' } }\"\n                    [color]=\"color\"\n                    class=\"space-top\"\n                    mat-button>\n              {{forgotPasswordButtonText}}\n            </button>\n          </div>\n\n        </mat-card-content>\n        <mat-card-footer *ngIf=\"isLoading\">\n          <mat-progress-bar [@animate]=\"{ value: '*', params: { z: '50px', delay: '50ms', scale: '0.2' } }\"\n                            mode=\"indeterminate\"></mat-progress-bar>\n        </mat-card-footer>\n      </mat-card>\n    </mat-tab>\n\n    <!--tab register-->\n    <mat-tab *ngIf=\"registrationEnabled\" [label]=\"registerTabText\">\n      <mat-card>\n        <mat-card-title>{{registerCardTitleText}}</mat-card-title>\n        <mat-card-content style=\"flex-direction: column\" fxLayoutAlign=\"center\">\n          <form (ngSubmit)=\"signUpFormGroup.valid &&\n            processLegalSignUP(authProvider.EmailAndPassword)\"\n                [@animateStagger]=\"{ value: '50' }\" [formGroup]=\"signUpFormGroup\">\n            <div style=\"flex-direction: column\" fxLayoutAlign=\"center\">\n              <!--name-->\n              <mat-form-field [@animate]=\"{ value: '*', params: { x: '50px' } }\"\n                              [appearance]=\"appearance\">\n                <!--labels will work only with @angular/material@6.2.0 -->\n                <mat-label>{{nameText}}</mat-label>\n                <input\n                  [formControl]=\"sigUpNameFormControl\"\n                  [maxlength]=\"config.nameMaxLength\"\n                  [minlength]=\"config.nameMinLength\"\n                  matInput\n                  required\n                />\n                <mat-icon [color]=\"color\" matSuffix>person</mat-icon>\n                <mat-hint align=\"end\" aria-live=\"polite\"> {{ signUpFormGroup.value.name?.length }}\n                  / {{ config.nameMaxLength }} </mat-hint>\n                <mat-error *ngIf=\"sigUpNameFormControl.hasError('required')\">\n                  {{nameErrorRequiredText}}\n                </mat-error>\n                <mat-error *ngIf=\"sigUpNameFormControl.hasError('minlength')\">\n                  {{nameErrorMinLengthText}}\n                </mat-error>\n                <mat-error *ngIf=\"sigUpNameFormControl.hasError('maxlength')\">\n                  {{nameErrorMaxLengthText}}\n                </mat-error>\n              </mat-form-field>\n\n              <!--email-->\n              <mat-form-field [@animate]=\"{ value: '*', params: { x: '50px' } }\"\n                              [appearance]=\"appearance\">\n                <mat-label>{{emailText}}</mat-label>\n                <input [formControl]=\"sigUpEmailFormControl\"\n                       matInput\n                       required\n                       type=\"email\"\n                       autocomplete=\"username\">\n                <mat-icon [color]=\"color\" matSuffix>email</mat-icon>\n                <mat-error *ngIf=\"sigUpEmailFormControl.hasError('required')\">\n                  {{emailErrorRequiredText}}\n                </mat-error>\n                <mat-error *ngIf=\"sigUpEmailFormControl.hasError('pattern')\">\n                  {{emailErrorPatternText}}\n                </mat-error>\n              </mat-form-field>\n\n              <!--password-->\n              <div style=\"flex-direction: column\">\n                <mat-form-field [@animate]=\"{ value: '*', params: { x: '50px' } }\"\n                                [appearance]=\"appearance\">\n                  <mat-label>{{passwordText}}</mat-label>\n                  <input\n                    [formControl]=\"sigUpPasswordFormControl\"\n                    [maxlength]=\"max\"\n                    [minlength]=\"min\"\n                    [type]=\"toggle.type\"\n                    matInput\n                    name=\"password\"\n                    autocomplete=\"new-password\"\n                    required\n                  />\n                  <mat-pass-toggle-visibility #toggle matSuffix></mat-pass-toggle-visibility>\n\n                  <mat-icon [color]=\"color\" matSuffix>lock</mat-icon>\n\n                  <mat-hint align=\"end\" aria-live=\"polite\">\n                    {{signUpFormGroup.value.password?.length}} / {{ max }}\n                  </mat-hint>\n\n                  <mat-error *ngIf=\"sigUpPasswordFormControl.hasError('required')\" class=\"cut-text\">\n                    {{passwordErrorRequiredText}}\n                  </mat-error>\n\n                  <mat-error *ngIf=\"sigUpPasswordFormControl.hasError('minlength')\" class=\"cut-text\">\n                    {{ passwordErrorMinLengthText }}\n                  </mat-error>\n                  <mat-error *ngIf=\"sigUpPasswordFormControl.hasError('maxlength')\" class=\"cut-text\">\n                    {{ passwordErrorMaxLengthText }}\n                  </mat-error>\n\n                </mat-form-field>\n\n                <mat-password-strength #passwordStrength\n                                       [customValidator]=\"customValidator\"\n                                       [enableDigitRule]=\"enableDigitRule\"\n                                       [enableLengthRule]=\"enableLengthRule\"\n                                       [enableLowerCaseLetterRule]=\"enableLowerCaseLetterRule\"\n                                       [enableSpecialCharRule]=\"enableSpecialCharRule\"\n                                       [enableUpperCaseLetterRule]=\"enableUpperCaseLetterRule\"\n                                       [externalError]=\"sigUpPasswordFormControl.dirty\"\n                                       [max]=\"max\"\n                                       [min]=\"min\"\n                                       [password]=\"signUpFormGroup.value.password\">\n                </mat-password-strength>\n\n              </div>\n\n              <button [@animate]=\"{ value: '*', params: { x: '100px' } }\"\n                      [color]=\"color\"\n                      [disabled]=\"signUpFormGroup.invalid\"\n                      mat-raised-button\n                      style=\"margin-top: 20px\"\n                      type=\"submit\">\n                {{registerButtonText}}\n              </button>\n\n            </div>\n          </form>\n\n          <button (click)=\"processLegalSignUP(authProvider.ANONYMOUS)\"\n                  *ngIf=\"guestEnabled\"\n                  [@animate]=\"{ value: '*', params: { x: '-100px' } }\"\n                  [color]=\"color\"\n                  mat-button\n                  style=\"margin-top: 20px\">\n            <mat-icon>fingerprint</mat-icon>\n            {{guestButtonText}}\n          </button>\n\n        </mat-card-content>\n\n        <mat-card-footer *ngIf=\"isLoading\">\n          <mat-progress-bar [@animate]=\"{ value: '*', params: { z: '50px', delay: '50ms', scale: '0.2' } }\"\n                            mode=\"indeterminate\"></mat-progress-bar>\n        </mat-card-footer>\n\n      </mat-card>\n    </mat-tab>\n\n    <!--Reset password tab-->\n    <mat-tab *ngIf=\"passwordResetWished\" class=\"reset-password-tab\">\n      <ng-template mat-tab-label>\n        <button (click)=\"passwordResetWished = false\" class=\"reset-password-tab__close-button\" mat-icon-button>\n          {{ resetPasswordTabText }}\n          <mat-icon>close</mat-icon>\n        </button>\n      </ng-template>\n      <form (ngSubmit)=\"resetPasswordFormGroup.valid && resetPassword()\"\n            [@animateStagger]=\"{ value: '50' }\"\n            [formGroup]=\"resetPasswordFormGroup\">\n        <mat-card class=\"reset-password-card\">\n          <mat-card-content>\n            <mat-form-field [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\" [appearance]=\"appearance\"\n                            class=\"full-width\">\n              <mat-label> {{ resetPasswordInputText }} </mat-label>\n              <input [title]=\"resetPasswordInputText\"\n                     formControlName=\"email\"\n                     matInput\n                     required>\n              <mat-icon [color]=\"color\" matSuffix>email</mat-icon>\n              <mat-error *ngIf=\"resetPasswordEmailFormControl.hasError('required')\">\n                {{resetPasswordErrorRequiredText}}\n              </mat-error>\n              <mat-error *ngIf=\"resetPasswordEmailFormControl.hasError('pattern')\">\n                {{resetPasswordErrorPatternText}}\n              </mat-error>\n            </mat-form-field>\n            <p *ngIf=\"passReset\">{{resetPasswordInstructionsText}}</p>\n          </mat-card-content>\n          <mat-card-actions fxLayoutAlign=\"center\">\n            <mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n            <button [@animate]=\"{ value: '*', params: { x: '50px' } }\"\n                    [color]=\"color\"\n                    mat-raised-button\n                    type=\"submit\">\n              {{resetPasswordActionButtonText}}\n            </button>\n          </mat-card-actions>\n        </mat-card>\n      </form>\n    </mat-tab>\n\n  </mat-tab-group>\n  <mat-divider></mat-divider>\n  <ngx-auth-firebaseui-providers *ngIf=\"tabIndex !== 2\"\n                                 [providers]=\"providers\"\n                                 [theme]=\"providersTheme\"\n                                 [tosUrl]=\"tosUrl\"\n                                 [privacyPolicyUrl]=\"privacyPolicyUrl\">\n  </ngx-auth-firebaseui-providers>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport { AngularFireAuth } from \"@angular/fire/compat/auth\";\nimport firebase from \"firebase/compat/app\";\nimport { Observable } from \"rxjs\";\nimport { take } from 'rxjs/operators';\nimport { MatDialog } from \"@angular/material/dialog\";\nimport { UserComponent } from \"..\";\nimport { AuthProcessService } from \"../../services/auth-process.service\";\n\nexport interface LinkMenuItem {\n  text: string;\n  icon?: string;\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  callback?: Function;\n}\n\n@Component({\n  selector: \"ngx-auth-firebaseui-avatar\",\n  templateUrl: \"./ngx-auth-firebaseui-avatar.component.html\",\n  styleUrls: [\"./ngx-auth-firebaseui-avatar.component.scss\"],\n})\nexport class NgxAuthFirebaseuiAvatarComponent implements OnInit {\n  @Input()\n  layout: \"default\" | \"simple\" = \"default\";\n\n  @Input()\n  canLogout = true;\n\n  @Input()\n  links: LinkMenuItem[];\n\n  @Input()\n  canViewAccount = true;\n\n  @Input()\n  canDeleteAccount = true;\n\n  @Input()\n  canEditAccount = true;\n\n  @Input()\n  textProfile = \"Profile\";\n\n  @Input()\n  textSignOut = \"Sign Out\";\n\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output()\n  onSignOut: EventEmitter<void> = new EventEmitter();\n\n  user: firebase.User;\n  user$: Observable<firebase.User | null>;\n  displayNameInitials: string | null;\n\n  constructor(public afa: AngularFireAuth, public dialog: MatDialog, private authProcess: AuthProcessService) {}\n\n  ngOnInit() {\n    this.user$ = this.afa.user;\n    this.user$.subscribe((user: firebase.User) => {\n      this.user = user;\n      this.displayNameInitials = user\n        ? this.getDisplayNameInitials(user.displayName)\n        : null;\n    });\n  }\n\n  getDisplayNameInitials(displayName: string | null): string | null {\n    if (!displayName) {\n      return null;\n    }\n    const initialsRegExp: RegExpMatchArray | [] = displayName.match(/\\b\\w/g) || [];\n    const initials = (\n      (initialsRegExp.shift() || \"\") + (initialsRegExp.pop() || \"\")\n    ).toUpperCase();\n    return initials;\n  }\n\n  openProfile() {\n    const dialogRef = this.dialog.open(UserComponent);\n    const instance = dialogRef.componentInstance;\n    instance.canDeleteAccount = this.canDeleteAccount;\n    instance.canEditAccount = this.canEditAccount;\n    instance\n    .onSignOut\n    .pipe(\n      take(1)\n      ).subscribe(_ => this.onSignOut.emit()); // propagate the onSignout event\n    instance\n    .onAccountEdited\n    .pipe(\n      take(1)\n    ).subscribe(_ => this.displayNameInitials = this.getDisplayNameInitials(this.authProcess.user.displayName)) // update display name initials?\n  }\n\n  async signOut() {\n    try {\n      await this.afa.signOut();\n      // Sign-out successful.\n      this.onSignOut.emit();\n    } catch (e) {\n      // An error happened.\n      console.error(\"An error happened while signing out!\", e);\n    }\n  }\n}\n","<button *ngIf=\"user\"\n        class=\"ngx-auth-firebaseui-avatar-button\"\n        [matMenuTriggerFor]=\"posXMenu\"\n        [matTooltip]=\"user?.displayName\"\n        [style.background-image]=\"'url(' + user?.photoURL + ')'\"\n        aria-label=\"Open x-positioned menu\"\n        mat-mini-fab\n        style=\"background-size: cover\">\n  <span *ngIf=\"!user?.photoURL\">{{displayNameInitials || ''}}</span>\n</button>\n\n<mat-menu #posXMenu=\"matMenu\" class=\"before ngx-auth-firebaseui-avatar-menu\" xPosition=\"before\" >\n  <div style=\"flex-direction: row\" fxLayout.xs=\"column\" style=\"padding-left: 10px; padding-right: 10px\" [ngStyle]=\"{ 'padding-top.px': layout === 'default' ? 0 : 10 }\">\n    <button [style.background-image]=\"user?.photoURL ? 'url(' + user?.photoURL + ')' : ''\"\n            mat-fab\n            style=\"background-size: cover\"\n            *ngIf=\"layout === 'default'\">\n      <span *ngIf=\"!user?.photoURL\">{{displayNameInitials || ''}}</span>\n    </button>\n    <div style=\"flex-direction: column\" style=\"padding-left: 10px; padding-right: 10px\">\n      <strong mat-card-title>{{user?.displayName}}</strong>\n      <em mat-card-subtitle style=\"font-style: italic\">{{user?.email}}</em>\n    </div>\n  </div>\n\n  <div fxFlex=\"100\" style=\"flex-direction: column\" [ngStyle]=\"{ 'padding-bottom.px': layout === 'default' ? 0 : 10 } \">\n    <div *ngFor=\"let menuItem of links\" class=\"links-menu\">\n      <button (click)=\"menuItem?.callback()\" mat-menu-item>\n        <mat-icon>{{menuItem?.icon}}</mat-icon>\n        {{menuItem?.text}}</button>\n    </div>\n    <button *ngIf=\"canViewAccount\" (click)=\"openProfile()\" color=\"primary\" fxLayoutAlign=\"center\" mat-raised-button>{{ textProfile }}\n    </button>\n    <button (click)=\"signOut()\" *ngIf=\"canLogout\" color=\"warn\" fxLayoutAlign=\"center\" mat-raised-button>{{ textSignOut }}\n    </button>\n  </div>\n</mat-menu>\n","import {Component, EventEmitter, Inject, Input, OnInit, Output, PLATFORM_ID, ViewEncapsulation} from '@angular/core';\nimport {UntypedFormBuilder, UntypedFormGroup, Validators} from '@angular/forms';\nimport {AuthProcessService, AuthProvider} from '../../services/auth-process.service';\nimport {Subscription} from 'rxjs';\nimport {NgxAuthFirebaseuiAnimations} from '../../animations';\nimport {isPlatformBrowser} from '@angular/common';\nimport {MatFormFieldAppearance} from '@angular/material/form-field';\nimport {ThemePalette} from '@angular/material/core';\n\n@Component({\n  selector: 'ngx-auth-firebaseui-login',\n  templateUrl: './ngx-auth-firebaseui-login.component.html',\n  styleUrls: ['./ngx-auth-firebaseui-login.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  animations: NgxAuthFirebaseuiAnimations\n})\nexport class NgxAuthFirebaseuiLoginComponent implements OnInit {\n\n  @Input() logoUrl: string;\n  @Input() providers: string[] | string = AuthProvider.ALL; //  google, facebook, twitter, github as array or all as one single string\n  @Input() appearance: MatFormFieldAppearance;\n  @Input() registrationEnabled = true;\n  @Input() resetPasswordEnabled = true;\n  @Input() messageOnAuthSuccess: string;\n  @Input() messageOnAuthError: string;\n\n  // i18n\n  @Input() titleText = 'LOGIN TO YOUR ACCOUNT';\n  @Input() rememberMeText = 'Remember Me';\n  @Input() loginButtonText = 'LOGIN';\n  @Input() orLabelText = 'OR';\n  @Input() forgotPasswordText = 'Forgot Password?';\n  @Input() dontHaveAnAccountText = 'Don\\'t have an account?';\n  @Input() createAccountButtonText = 'Create an account';\n\n  // i18n email\n  @Input() emailText = 'Email';\n  @Input() emailErrorRequiredText = 'Email is required';\n  @Input() emailErrorPatternText = 'Please enter a valid email address';\n\n  // i18n password\n  @Input() passwordText = 'Password';\n  @Input() passwordErrorRequiredText = 'Password is required';\n\n  // Events\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onSuccess: any;\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onError: any;\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onCreateAccountRequested: EventEmitter<void> = new EventEmitter<void>();\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onResetPasswordRequested: EventEmitter<void> = new EventEmitter<void>();\n\n  @Output() onLoginButtonClicked: EventEmitter<void> = new EventEmitter<void>();\n\n  loginForm: UntypedFormGroup;\n  authProviders = AuthProvider;\n  onErrorSubscription: Subscription;\n  authenticationError = false;\n\n  constructor(\n    // eslint-disable-next-line @typescript-eslint/ban-types\n    @Inject(PLATFORM_ID) private platformId: Object,\n    public authProcess: AuthProcessService,\n    private formBuilder: UntypedFormBuilder) {\n    this.onSuccess = authProcess.onSuccessEmitter;\n    this.onError = authProcess.onErrorEmitter;\n  }\n\n  get color(): string | ThemePalette {\n    return this.authenticationError ? 'warn' : 'primary';\n  }\n\n  get colorAccent(): string | ThemePalette {\n    return this.authenticationError ? 'warn' : 'accent';\n  }\n\n  ngOnInit() {\n\n    if (isPlatformBrowser(this.platformId)) {\n      this.onErrorSubscription = this.onError.subscribe(() => this.authenticationError = true);\n    }\n\n    this.updateAuthSnackbarMessages();\n\n    this.loginForm = this.formBuilder.group({\n      email: ['', [Validators.required, Validators.email]],\n      password: ['', Validators.required]\n    });\n  }\n\n  public updateAuthSnackbarMessages(): void {\n    this.authProcess.messageOnAuthSuccess = this.messageOnAuthSuccess;\n    this.authProcess.messageOnAuthError = this.messageOnAuthError;\n  }\n\n  async login() {\n    // Emit event for button click\n    this.onLoginButtonClicked.emit();\n\n    return await this.authProcess.signInWith(this.authProviders.EmailAndPassword,\n      {\n        email: this.loginForm.controls.email.value,\n        password: this.loginForm.controls.password.value\n      }\n    );\n  }\n}\n","<div style=\"flex-direction: column\" id=\"login\">\n\n  <div style=\"flex-direction: column\" fxLayoutAlign=\"center center\" id=\"login-form-wrapper\">\n\n    <div [@animateStagger]=\"{ value: '50' }\" id=\"login-form\">\n\n      <div *ngIf=\"logoUrl\" class=\"logo\">\n        <img [@animate]=\"{ value: '*', params: { x: '50px' } }\" [src]=\"logoUrl\" alt=\"logo\">\n      </div>\n\n      <div [@animate]=\"{ value: '*', params: { x: '-50px' } }\" class=\"title\">{{titleText}}</div>\n\n      <form [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\" [formGroup]=\"loginForm\" name=\"loginForm\"\n            novalidate>\n\n        <mat-form-field [@animate]=\"{ value: '*', params: { x: '50px' } }\" [appearance]=\"appearance\">\n          <input [placeholder]=\"emailText\" formControlName=\"email\" matInput autocomplete=\"username\">\n          <mat-icon [color]=\"color\" matSuffix>email</mat-icon>\n          <mat-error *ngIf=\"loginForm.get('email')?.hasError('required')\">\n            {{emailErrorRequiredText}}\n          </mat-error>\n          <mat-error\n            *ngIf=\"!loginForm.get('email')?.hasError('required') &&\n                                loginForm.get('email')?.hasError('email')\">\n            {{emailErrorPatternText}}\n          </mat-error>\n        </mat-form-field>\n\n        <mat-form-field [@animate]=\"{ value: '*', params: { x: '50px' } }\" [appearance]=\"appearance\">\n          <input [placeholder]=\"passwordText\" formControlName=\"password\" matInput type=\"password\" autocomplete=\"current-password\">\n          <mat-icon [color]=\"color\" matSuffix>lock</mat-icon>\n          <mat-error>\n            {{passwordErrorRequiredText}}\n          </mat-error>\n        </mat-form-field>\n\n        <div [@animate]=\"{ value: '*', params: { x: '50px' } }\"\n             class=\"remember-forgot-password\" style=\"flex-direction: row\"\n             fxLayout.xs=\"column\"\n             fxLayoutAlign=\"space-between center\">\n          <!--          <mat-checkbox class=\"remember-me\" aria-label=\"Remember Me\">-->\n          <!--            {{rememberMeText}}-->\n          <!--          </mat-checkbox>-->\n\n          <button (click)=\"onResetPasswordRequested.emit()\"\n                  *ngIf=\"resetPasswordEnabled\"\n                  [@animate]=\"{ value: '*', params: { x: '-50px' } }\"\n                  [color]=\"color\"\n                  class=\"forgot-password\"\n                  mat-button\n                  type=\"button\">\n            {{forgotPasswordText}}\n          </button>\n        </div>\n\n        <button (click)=\"login()\"\n                [color]=\"colorAccent\"\n                [disabled]=\"loginForm.invalid\"\n                aria-label=\"LOG IN\"\n                class=\"submit-button\"\n                id=\"loginButton\"\n                mat-raised-button>\n          {{loginButtonText}}\n        </button>\n\n      </form>\n\n      <div *ngIf=\"providers.length > 0\"\n           [@animate]=\"{ value: '*', params: { z: '50px', delay: '50ms', scale: '0.2' } }\"\n           class=\"separator\">\n        <span class=\"text\">{{orLabelText}}</span>\n      </div>\n\n      <ngx-auth-firebaseui-providers [providers]=\"providers\"\n                                     fxLayoutAlign=\"center center\"\n                                     layout=\"column\"\n                                     theme=\"raised\"></ngx-auth-firebaseui-providers>\n\n      <div *ngIf=\"registrationEnabled\"\n           [@animateStagger]=\"{ value: '100' }\"\n           class=\"register\"\n           style=\"flex-direction: column\" fxLayoutAlign=\"center center\">\n        <span [@animate]=\"{ value: '*', params: { x: '100px' } }\" class=\"text\">\n          {{dontHaveAnAccountText}}\n        </span>\n        <button (click)=\"onCreateAccountRequested.emit()\"\n                [@animate]=\"{ value: '*', params: { x: '-100px' } }\"\n                [color]=\"color\"\n                id=\"createAccountButton\"\n                mat-button\n                type=\"button\">{{createAccountButtonText}}</button>\n      </div>\n    </div>\n  </div>\n</div>\n","import {Component, EventEmitter, forwardRef, Inject, Input, OnDestroy, OnInit, Output, PLATFORM_ID, ViewEncapsulation} from '@angular/core';\nimport {AbstractControl, UntypedFormBuilder, UntypedFormGroup, ValidationErrors, ValidatorFn, Validators} from '@angular/forms';\nimport {Subject, Subscription} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {NgxAuthFirebaseuiAnimations} from '../../animations';\nimport {AuthProcessService} from '../../services/auth-process.service';\nimport {isPlatformBrowser} from '@angular/common';\nimport {MatFormFieldAppearance} from '@angular/material/form-field';\nimport {ThemePalette} from '@angular/material/core';\nimport { NgxAuthFirebaseUIConfigToken } from '../../tokens';\nimport { NgxAuthFirebaseUIConfig } from '../../interfaces';\n\nexport const confirmPasswordValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n  if (!control.parent || !control) {\n    return null;\n  }\n\n  const password = control.parent.get('password');\n  const passwordConfirm = control.parent.get('passwordConfirm');\n\n  if (!password || !passwordConfirm) {\n    return null;\n  }\n\n  if (passwordConfirm.value === '') {\n    return null;\n  }\n\n  if (password.value === passwordConfirm.value) {\n    return null;\n  }\n\n  return {passwordsNotMatching: true};\n};\n\n@Component({\n  selector: 'ngx-auth-firebaseui-register',\n  templateUrl: './ngx-auth-firebaseui-register.component.html',\n  styleUrls: ['./ngx-auth-firebaseui-register.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  animations: NgxAuthFirebaseuiAnimations\n})\nexport class NgxAuthFirebaseuiRegisterComponent implements OnInit, OnDestroy {\n\n  @Input() logoUrl: string;\n  @Input() appearance: MatFormFieldAppearance;\n  @Input() tosUrl: string;\n  @Input() privacyPolicyUrl: string;\n\n  // i18n common\n  @Input() titleText = 'CREATE AN ACCOUNT';\n  @Input() termsAndConditionsText = 'I read and accept the';\n  @Input() termsAndConditionsLinkText = 'terms and conditions';\n  @Input() privacyPolicyText = 'I read and accept the';\n  @Input() privacyPolicyLinkText = 'privacy policy';\n  @Input() createAccountButtonText = 'CREATE AN ACCOUNT';\n  @Input() alreadyHaveAccountText = 'Already have an account?';\n  @Input() loginButtonText = 'LOGIN';\n\n  // i18n name\n  @Input() nameText = 'Name';\n  @Input() nameErrorRequiredText = 'Name is required';\n\n  // i18n email\n  @Input() emailText = 'Email';\n  @Input() emailErrorRequiredText = 'Email is required';\n  @Input() emailErrorPatternText = 'Please enter a valid email address';\n\n  // i18n password\n  @Input() passwordText = 'Password';\n  @Input() passwordErrorRequiredText = 'Password is required';\n  @Input() passwordConfirmationText = 'Password Confirmation';\n  @Input() passwordConfirmationErrorRequiredText = 'Password confirmation is required';\n  @Input() passwordErrorMatchText = 'Password must match';\n  @Input() passwordErrorMinLengthText = \"The password is too short!\";\n  @Input() passwordErrorMaxLengthText = \"The password is too long!\";\n\n  // Events\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onSuccess: any;\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onError: any;\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onLoginRequested: EventEmitter<void> = new EventEmitter<void>();\n\n  @Output() onCreateAccountButtonClicked: EventEmitter<void> = new EventEmitter();\n\n  registerForm: UntypedFormGroup;\n  onErrorSubscription: Subscription;\n  authenticationError = false;\n\n  // Private\n  private unsubscribeAll: Subject<any>;\n\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  constructor(\n    @Inject(PLATFORM_ID) private platformId: Object,\n    @Inject(forwardRef(() => NgxAuthFirebaseUIConfigToken))\n    public config: NgxAuthFirebaseUIConfig,\n    private formBuilder: UntypedFormBuilder,\n    public authProcess: AuthProcessService\n  ) {\n    // Configure the layout\n\n    // Set the private defaults\n    this.unsubscribeAll = new Subject();\n    this.onSuccess = authProcess.onSuccessEmitter;\n    this.onError = authProcess.onErrorEmitter;\n  }\n\n  get color(): string | ThemePalette {\n    return this.authenticationError ? 'warn' : 'primary';\n  }\n\n  get colorAccent(): string | ThemePalette {\n    return this.authenticationError ? 'warn' : 'accent';\n  }\n\n  ngOnInit(): void {\n    if (isPlatformBrowser(this.platformId)) {\n      this.onErrorSubscription = this.onError.subscribe(() => this.authenticationError = true);\n    }\n    this.registerForm = this.formBuilder.group({\n      name: ['', Validators.required],\n      email: ['', [Validators.required, Validators.email]],\n      password: ['', [Validators.required,\n                     Validators.minLength(this.config.passwordMinLength),\n                     Validators.maxLength(this.config.passwordMaxLength)]],\n      passwordConfirm: ['', [Validators.required, confirmPasswordValidator]],\n      tos: [''],\n      privacyPolicy: ['']\n    });\n\n    // If tos or privacy policy url set, ensure that the two form items are required\n    if (this.tosUrl) {\n      this.registerForm.controls.tos.setValidators(Validators.requiredTrue);\n    }\n\n    if (this.privacyPolicyUrl) {\n      this.registerForm.controls.privacyPolicy.setValidators(Validators.requiredTrue);\n    }\n\n    // Update the validity of the 'passwordConfirm' field\n    // when the 'password' field changes\n    this.registerForm\n      .controls\n      .password\n      .valueChanges.pipe(takeUntil(this.unsubscribeAll))\n      .subscribe(() => {\n        this.registerForm.controls.passwordConfirm.updateValueAndValidity();\n      });\n  }\n\n  /**\n   * On destroy\n   */\n  ngOnDestroy(): void {\n    // Unsubscribe from all subscriptions\n    this.unsubscribeAll.next(null);\n    this.unsubscribeAll.complete();\n  }\n\n  async createAccount() {\n    // Emit the create account clicked event.\n    this.onCreateAccountButtonClicked.emit();\n\n\n    return await this.authProcess.signUp(\n      this.registerForm.controls.name.value,\n      {\n        email: this.registerForm.controls.email.value,\n        password: this.registerForm.controls.password.value\n      }\n    );\n  }\n}\n","<div class=\"register-container\" id=\"register\">\n\n  <div class=\"register-form-wrapper centered\">\n\n    <div [@animateStagger]=\"{ value: '50' }\" id=\"register-form\">\n\n      <div *ngIf=\"logoUrl\" class=\"logo\">\n        <img [@animate]=\"{ value: '*', params: { x: '50px' } }\" [src]=\"logoUrl\" alt=\"logo\">\n      </div>\n\n      <div [@animate]=\"{ value: '*', params: { x: '-50px' } }\" class=\"title\">{{titleText}}</div>\n\n      <form [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\" [formGroup]=\"registerForm\" name=\"registerForm\" novalidate>\n\n        <mat-form-field [@animate]=\"{ value: '*', params: { x: '50px' } }\" [appearance]=\"appearance\">\n          <input [placeholder]=\"nameText\" formControlName=\"name\" matInput/>\n          <mat-icon [color]=\"color\" matSuffix>person</mat-icon>\n          <mat-error>\n            {{nameErrorRequiredText}}\n          </mat-error>\n        </mat-form-field>\n\n        <mat-form-field [@animate]=\"{ value: '*', params: { x: '50px' } }\" [appearance]=\"appearance\">\n          <input [placeholder]=\"emailText\" formControlName=\"email\" matInput autocomplete=\"username\"/>\n          <mat-icon [color]=\"color\" matSuffix>email</mat-icon>\n          <mat-error *ngIf=\"registerForm.get('email')?.hasError('required')\">\n            {{emailErrorRequiredText}}\n          </mat-error>\n          <mat-error *ngIf=\"registerForm.get('email')?.hasError('email')\">\n            {{emailErrorPatternText}}\n          </mat-error>\n        </mat-form-field>\n\n        <mat-form-field [@animate]=\"{ value: '*', params: { x: '50px' } }\" [appearance]=\"appearance\">\n          <input [placeholder]=\"passwordText\" formControlName=\"password\" matInput type=\"password\" autocomplete=\"new-password\"/>\n          <mat-icon [color]=\"color\" matSuffix>lock</mat-icon>\n          <mat-error *ngIf=\"registerForm.get('password')?.hasError('required')\">\n            {{passwordErrorRequiredText}}\n          </mat-error>\n          <mat-error *ngIf=\"registerForm.get('password')?.hasError('minlength')\">\n            {{ passwordErrorMinLengthText }}\n          </mat-error>\n          <mat-error *ngIf=\"registerForm.get('password')?.hasError('maxlength')\">\n            {{ passwordErrorMaxLengthText }}\n          </mat-error>\n        </mat-form-field>\n\n        <mat-form-field [@animate]=\"{ value: '*', params: { x: '50px' } }\" [appearance]=\"appearance\">\n          <input [placeholder]=\"passwordConfirmationText\" formControlName=\"passwordConfirm\" matInput type=\"password\" autocomplete=\"new-password\"/>\n          <mat-icon [color]=\"color\" matSuffix>lock</mat-icon>\n          <mat-error *ngIf=\"registerForm.get('passwordConfirm')?.hasError('required')\">\n            {{passwordConfirmationErrorRequiredText}}\n          </mat-error>\n          <mat-error *ngIf=\"registerForm.get('passwordConfirm')?.hasError('passwordsNotMatching')\">\n            {{passwordErrorMatchText}}\n          </mat-error>\n        </mat-form-field>\n\n        <div *ngIf=\"this.tosUrl\">\n          <mat-checkbox aria-label=\"{{termsAndConditionsText}}\" formControlName=\"tos\" required>\n            <span>{{termsAndConditionsText}}</span>\n            <a target=\"_blank\" [href]=\"this.tosUrl\">{{termsAndConditionsLinkText}}</a>\n          </mat-checkbox>\n        </div>\n\n        <div *ngIf=\"this.privacyPolicyUrl\">\n          <mat-checkbox aria-label=\"{{privacyPolicyText}}\" formControlName=\"privacyPolicy\" required>\n            <span>{{privacyPolicyText}}</span>\n            <a target=\"_blank\" [href]=\"this.privacyPolicyUrl\">{{privacyPolicyLinkText}}</a>\n          </mat-checkbox>\n        </div>\n\n        <button (click)=\"createAccount()\" [color]=\"colorAccent\" [disabled]=\"registerForm.invalid\" aria-label=\"CREATE AN ACCOUNT\" class=\"submit-button\" id=\"createAccountButton\" mat-raised-button>\n          {{createAccountButtonText}}\n        </button>\n      </form>\n\n      <div [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\" class=\"register\" class=\"centered\">\n        <span [@animate]=\"{ value: '*', params: { x: '100px' } }\" class=\"text\">\n          {{alreadyHaveAccountText}}\n        </span>\n        <button (click)=\"onLoginRequested.emit()\" [@animate]=\"{ value: '*', params: { x: '-100px' } }\" [color]=\"colorAccent\" id=\"loginButton\" mat-button type=\"button\">\n          {{loginButtonText}}\n        </button>\n      </div>\n\n    </div>\n  </div>\n</div>\n","import {\n  Component,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  Output,\n} from \"@angular/core\";\nimport { AngularFireAuth } from \"@angular/fire/compat/auth\";\nimport { UntypedFormControl, UntypedFormGroup, Validators } from \"@angular/forms\";\nimport firebase from \"firebase/compat/app\";\nimport {  MatFormFieldAppearance } from \"@angular/material/form-field\";\nimport { NgxAuthFirebaseUIConfigToken } from \"../../tokens\";\nimport {EMAIL_REGEX, NgxAuthFirebaseUIConfig, PHONE_NUMBER_REGEX} from '../../interfaces';\nimport { AuthProcessService } from \"../../services/auth-process.service\";\nimport { FirestoreSyncService } from \"../../services/firestore-sync.service\";\nimport { map, take } from \"rxjs/operators\";\nimport { Observable } from \"rxjs\";\n\n@Component({\n  selector: \"ngx-auth-firebaseui-user\",\n  templateUrl: \"./user.component.html\",\n  styleUrls: [\"./user.component.scss\"],\n})\nexport class UserComponent {\n  @Input() editMode: boolean;\n  @Input() canLogout = true;\n  @Input() canEditAccount = true;\n  @Input() canDeleteAccount = true;\n  @Input() appearance: MatFormFieldAppearance;\n\n  // i18n commons\n  @Input() notLoggedInText = \"You are not logged in!\";\n  @Input() emailVerifiedText = \"email is verified\";\n  @Input() emailNotVerifiedText = \"email is not verified\";\n  @Input() cancelButtonText = \"cancel\";\n  @Input() saveChangesButtonText = \"Save changes\";\n  @Input() editButtonText = \"edit\";\n  @Input() signoutButtonText = \"Sign out\";\n  @Input() deleteAccountButtonText = \"Delete account\";\n\n  //i18n name\n  @Input() nameText = \"Name\";\n  @Input() nameErrorRequiredText = \"Name is required\";\n\n  // i18n email\n  @Input() emailText = \"Email\";\n  @Input() emailErrorRequiredText = \"Email is required\";\n  @Input() emailErrorPatternText = \"Please enter a valid email address\";\n\n  // i18n phone\n  @Input() phoneText = \"Phone number\";\n  @Input() phoneHintText = `\n    The phone number is international. Therefore, it should start with a + sign or 00,\n    followed by the country code, - and national number e.g: +49-12345678 or 0041-1234567890\n\n      NOTE : the phone number must be a valid phone credential !!`;\n  @Input() phoneErrorPatternText = \"Please enter a valid phone number\";\n\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onSignOut: EventEmitter<void> = new EventEmitter();\n\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onAccountEdited: EventEmitter<void> = new EventEmitter();\n\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onAccountDeleted: EventEmitter<void> = new EventEmitter();\n\n  updateFormGroup: UntypedFormGroup;\n  updateNameFormControl: UntypedFormControl;\n  updateEmailFormControl: UntypedFormControl;\n  updatePhoneNumberFormControl: UntypedFormControl;\n\n  constructor(\n    public auth: AngularFireAuth,\n    public authProcess: AuthProcessService,\n    private fireStoreService: FirestoreSyncService,\n    @Inject(forwardRef(() => NgxAuthFirebaseUIConfigToken))\n    public config: NgxAuthFirebaseUIConfig\n  ) {}\n\n  changeEditMode() {\n    if (this.editMode) {\n      this.reset();\n      this.editMode = false;\n    } else {\n      this.initUpdateFormGroup().subscribe((updateFormGroup: UntypedFormGroup) => {\n        this.updateFormGroup = updateFormGroup;\n        this.editMode = true;\n      });\n    }\n  }\n\n  reset() {\n    this.updateFormGroup.reset();\n    this.updateFormGroup.disable();\n    this.updateFormGroup = null;\n  }\n\n  async save() {\n    if (this.updateFormGroup.dirty) {\n      this.editMode = false;\n      const user = this.authProcess.user;\n      // ngx-auth-firebaseui-user.updateProfile()\n      // ngx-auth-firebaseui-user.updateEmail()\n      // console.log('form = ', this.updateFormGroup);\n\n      const snackBarMsg: string[] = [];\n\n      try {\n        if (this.updateNameFormControl.dirty) {\n          await user.updateProfile({\n            displayName: this.updateNameFormControl.value,\n          });\n          snackBarMsg.push(`your name has been updated to ${user.displayName}`);\n        }\n\n        if (this.updateEmailFormControl.dirty) {\n          await user.updateEmail(this.updateEmailFormControl.value);\n          snackBarMsg.push(`your email has been updated to ${user.email}`);\n        }\n\n        if (this.updatePhoneNumberFormControl.dirty) {\n          await user.updatePhoneNumber(this.updatePhoneNumberFormControl.value);\n          console.log(\n            \"phone number = \",\n            this.updatePhoneNumberFormControl.value\n          );\n          snackBarMsg.push(\n            `your phone number has been updated to ${user.phoneNumber}`\n          );\n        }\n\n        if (this.config.enableFirestoreSync) {\n          await this.fireStoreService.updateUserData(\n            this.authProcess.parseUserInfo(user)\n          );\n        }\n      } catch (error) {\n        this.authProcess.showToast(\n          error && error.message ? error.message : error\n        );\n        console.error(error);\n      }\n\n      if (snackBarMsg.length > 0) {\n        this.authProcess.showToast(snackBarMsg.join(\"\\\\n\"));\n      }\n      this.onAccountEdited.emit(); // emit event if the form was dirty\n      this.updateFormGroup.reset();\n    }\n  }\n\n  signOut() {\n    this.auth\n      .signOut()\n      .then(() => this.onSignOut.emit())\n      .catch((e) => console.error(\"An error happened while signing out!\", e));\n  }\n\n  /**\n   * Delete the account of the current firebase ngx-auth-firebaseui-user\n   *\n   * On Success, emit the <onAccountDeleted> event and toast a msg!#\n   * Otherwise, log the and toast and error msg!\n   *\n   */\n  async deleteAccount() {\n    try {\n      const user = this.authProcess.user;\n\n      // await this.authProcess.deleteAccount();\n      await this.authProcess.user.delete();\n      // if (this.config.enableFirestoreSync) {\n      await this.fireStoreService.deleteUserData(user.uid);\n      // }\n      this.onAccountDeleted.emit();\n      this.editMode = false;\n      console.log(\"Your account has been successfully deleted!\");\n      this.authProcess.showToast(\"Your account has been successfully deleted!\");\n    } catch (error) {\n      console.log(\"Error while delete user account\", error);\n      this.authProcess.showToast(\n        `Error occurred while deleting your account: ${error.message}`\n      );\n    }\n  }\n\n  protected initUpdateFormGroup(): Observable<UntypedFormGroup> {\n    return this.authProcess.user$.pipe(\n      take(1),\n      map((currentUser: firebase.User) => {\n        const updateFormGroup = new UntypedFormGroup({\n          name: this.updateNameFormControl = new UntypedFormControl(\n            { value: currentUser.displayName, disabled: this.editMode },\n            [\n              Validators.required,\n              Validators.minLength(this.config.nameMinLength),\n              Validators.maxLength(this.config.nameMaxLength),\n            ]\n          ),\n\n          email: this.updateEmailFormControl = new UntypedFormControl(\n            { value: currentUser.email, disabled: this.editMode },\n            [Validators.required, Validators.pattern(EMAIL_REGEX)]\n          ),\n\n          phoneNumber: this.updatePhoneNumberFormControl = new UntypedFormControl(\n            { value: currentUser.phoneNumber, disabled: this.editMode },\n            [Validators.pattern(PHONE_NUMBER_REGEX)]\n          ),\n        });\n\n        updateFormGroup.enable();\n        return updateFormGroup;\n      })\n    );\n  }\n}\n","<div *ngIf=\"auth.authState| async; then authenticated else none\">\n\n</div>\n\n<ng-template #authenticated>\n  <mat-card *ngIf=\"auth.user | async as user\">\n    <!--<form [formGroup]=\"updateFormGroup\" >-->\n    <!--card header-->\n    <mat-card-header style=\"flex-direction: column\" fxLayoutAlign=\"center center\">\n\n      <img *ngIf=\"authProcess?.getUserPhotoUrl() | async as photoUrl\" [src]=\"photoUrl\" mat-card-avatar>\n\n      <div *ngIf=\"user.emailVerified; then emailVerified else emailNotVerified\"></div>\n      <ng-template #emailVerified>\n        <mat-icon color=\"primary\"\n                  [matTooltip]=\"emailVerifiedText\"\n                  matTooltipPosition=\"after\">\n          verified_user\n        </mat-icon>\n      </ng-template>\n      <ng-template #emailNotVerified>\n        <mat-icon color=\"warn\"\n                  [matTooltip]=\"emailNotVerifiedText\"\n                  matTooltipPosition=\"after\">\n          warning\n        </mat-icon>\n      </ng-template>\n\n    </mat-card-header>\n\n    <!--card content-->\n    <mat-card-content *ngIf=\"editMode; then edit else readonly\">\n    </mat-card-content>\n\n    <ng-template #edit>\n      <form (submit)=\"save()\" [formGroup]=\"updateFormGroup\">\n\n        <mat-card-content style=\"flex-direction: column\" fxLayoutAlign=\"center center\">\n          <div fxLayoutAlign=\"center\">\n            <button (click)=\"changeEditMode()\" class=\"edit-button\" color=\"warn\"\n                    mat-raised-button>\n              {{cancelButtonText}}\n            </button>\n          </div>\n\n          <!--name-->\n          <mat-form-field [appearance]=\"appearance\" class=\"full-width\">\n            <mat-label>{{nameText}}</mat-label>\n            <input [formControl]=\"updateNameFormControl\"\n                   matInput\n                   [placeholder]=\"nameText\">\n            <mat-icon matSuffix>person</mat-icon>\n            <mat-hint align=\"end\" aria-live=\"polite\"> {{ updateNameFormControl.value?.length }}\n              / {{ config.nameMaxLength }} </mat-hint>\n            <mat-error *ngIf=\"updateNameFormControl.hasError('required')\">\n              {{nameErrorRequiredText}}\n            </mat-error>\n          </mat-form-field>\n\n          <!--email-->\n          <mat-form-field [appearance]=\"appearance\" class=\"full-width\">\n            <mat-label>{{emailText}}</mat-label>\n            <input [formControl]=\"updateEmailFormControl\"\n                   matInput\n                   [placeholder]=\"emailText\">\n            <mat-icon matSuffix>email</mat-icon>\n            <mat-error *ngIf=\"updateEmailFormControl.hasError('required')\">\n              {{emailErrorRequiredText}} {{updateEmailFormControl.value}}\n            </mat-error>\n            <mat-error *ngIf=\"updateEmailFormControl.hasError('pattern')\">\n              {{emailErrorPatternText}} {{updateEmailFormControl.value}}\n            </mat-error>\n          </mat-form-field>\n\n          <!--phone number-->\n          <mat-form-field *ngIf=\"false\" [appearance]=\"appearance\" class=\"full-width\">\n            <mat-label>{{phoneText}}</mat-label>\n            <input [formControl]=\"updatePhoneNumberFormControl\"\n                   matInput\n                   [placeholder]=\"phoneText\"\n                   type=\"tel\">\n            <mat-icon matSuffix>phone</mat-icon>\n            <mat-hint align=\"end\" aria-live=\"polite\">\n              {{phoneHintText}}\n            </mat-hint>\n            <mat-error *ngIf=\"updatePhoneNumberFormControl.hasError('pattern')\">\n              {{phoneErrorPatternText}}\n            </mat-error>\n          </mat-form-field>\n\n        </mat-card-content>\n\n        <mat-card-actions style=\"flex-direction: column\">\n          <button color=\"primary\"\n                  mat-button\n                  type=\"submit\">\n            {{saveChangesButtonText}}\n          </button>\n        </mat-card-actions>\n      </form>\n    </ng-template>\n\n    <ng-template #readonly>\n      <div fxLayoutAlign=\"center\">\n        <button *ngIf=\"canEditAccount\" (click)=\"changeEditMode()\" class=\"edit-button\" color=\"primary\"\n                mat-raised-button>\n          {{editButtonText}}\n        </button>\n      </div>\n\n      <!--name-->\n      <mat-form-field [appearance]=\"appearance\" class=\"full-width\">\n        <mat-label>{{nameText}}</mat-label>\n        <input [disabled]=\"!editMode\"\n               [value]=\"user.displayName\"\n               matInput\n               [placeholder]=\"nameText\">\n        <mat-icon color=\"primary\" matSuffix>person</mat-icon>\n      </mat-form-field>\n\n      <!--email-->\n      <mat-form-field [appearance]=\"appearance\" class=\"full-width\">\n        <mat-label>{{emailText}}</mat-label>\n        <input [disabled]=\"!editMode\"\n               [value]=\"user.email\" matInput\n               [placeholder]=\"emailText\">\n        <mat-icon color=\"primary\" matSuffix>email</mat-icon>\n      </mat-form-field>\n\n      <!--phone number-->\n      <mat-form-field *ngIf=\"false\" [appearance]=\"appearance\" class=\"full-width\">\n        <mat-label>{{phoneText}}</mat-label>\n        <input [disabled]=\"!editMode\"\n               [value]=\"user.phoneNumber\"\n               matInput\n               [placeholder]=\"phoneText\">\n        <mat-icon color=\"primary\" matSuffix>phone</mat-icon>\n      </mat-form-field>\n\n      <mat-card-actions style=\"flex-direction: column\">\n        <button (click)=\"signOut()\" *ngIf=\"canLogout\" color=\"primary\" mat-button>{{signoutButtonText}}</button>\n        <button (click)=\"deleteAccount()\" *ngIf=\"canDeleteAccount\" color=\"warn\" mat-button>{{deleteAccountButtonText}}</button>\n      </mat-card-actions>\n\n    </ng-template>\n\n  </mat-card>\n\n</ng-template>\n\n\n<ng-template #none>\n  <mat-card class=\"none-card\" style=\"flex-direction: row\" fxLayoutAlign=\"center center\">\n    <mat-card-content style=\"flex-direction: row\" fxLayoutAlign=\"center center\">\n      <mat-icon color=\"accent\">warning</mat-icon>\n      <span>{{notLoggedInText}}</span>\n    </mat-card-content>\n  </mat-card>\n</ng-template>\n","import {Inject, Injectable} from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';\nimport {Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {NgxAuthFirebaseUIConfig} from '../interfaces';\nimport {NgxAuthFirebaseUIConfigToken} from '../tokens';\nimport {AuthProcessService} from '../services/auth-process.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LoggedInGuard  {\n  constructor(\n    @Inject(NgxAuthFirebaseUIConfigToken)\n    private config: NgxAuthFirebaseUIConfig,\n    private router: Router,\n    private authProcess: AuthProcessService\n  ) {\n  }\n\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\n    return this.authProcess.afa.user.pipe(\n      map(user => {\n        if (user) {\n          if (this.config.guardProtectedRoutesUntilEmailIsVerified && !user.emailVerified && !user.isAnonymous) {\n            if (this.config.authGuardFallbackURL) {\n              this.router.navigate([`${this.config.authGuardFallbackURL}`], {queryParams: {redirectUrl: state.url}});\n            }\n            return false;\n          } else {\n            return true;\n          }\n        } else {\n          if (this.config.authGuardFallbackURL) {\n            this.router.navigate([`/${this.config.authGuardFallbackURL}`], {queryParams: {redirectUrl: state.url}});\n          }\n          return false;\n        }\n      })\n    );\n  }\n}\n","// @angular/*\nimport {CommonModule} from '@angular/common';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HttpClientModule} from '@angular/common/http';\nimport {RouterModule} from '@angular/router';\n// @angular/fire\nimport {FIREBASE_APP_NAME, FIREBASE_OPTIONS} from '@angular/fire/compat';\nimport {FirebaseOptions} from '@firebase/app-types';\nimport {AngularFireAuthModule} from '@angular/fire/compat/auth';\nimport {AngularFirestoreModule} from '@angular/fire/compat/firestore';\n// @angular/material\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatCardModule} from '@angular/material/card';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatDividerModule} from '@angular/material/divider';\nimport {MatIconModule, MatIconRegistry} from '@angular/material/icon';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {MatSnackBarModule} from '@angular/material/snack-bar';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport {MatTooltipModule} from '@angular/material/tooltip';\n\nimport {MatPasswordStrengthModule} from '@angular-material-extensions/password-strength';\n\n\nimport {NgxAuthFirebaseuiLoginComponent} from './components/ngx-auth-firebaseui-login/ngx-auth-firebaseui-login.component';\nimport {NgxAuthFirebaseuiRegisterComponent} from './components/ngx-auth-firebaseui-register/ngx-auth-firebaseui-register.component';\n\n\nimport {DomSanitizer} from '@angular/platform-browser';\n// ngx-auth-firebaseui\n// components\nimport {AuthComponent} from './components/ngx-auth-firebaseui/auth.component';\nimport {UserComponent} from './components/ngx-auth-firebaseui-user/user.component';\nimport {AuthProvidersComponent} from './components/providers/auth.providers.component';\nimport {EmailConfirmationComponent} from './components/email-confirmation/email-confirmation.component';\nimport {NgxAuthFirebaseUIConfig, ngxAuthFirebaseUIConfigFactory} from './interfaces/config.interface';\nimport {NgxAuthFirebaseuiAvatarComponent} from './components/ngx-auth-firebaseui-avatar/ngx-auth-firebaseui-avatar.component';\nimport {LegalityDialogComponent} from './components/legality-dialog/legality-dialog.component';\n// guards\nimport {LoggedInGuard} from './guards/logged-in.guard';\n// services\nimport {FirestoreSyncService} from './services/firestore-sync.service';\nimport {AuthProcessService} from './services/auth-process.service';\nimport {NgxAuthFirebaseUIConfigToken, UserProvidedConfigToken} from './tokens';\n// interfaces\n// ###################################################################################################\n// Export module's public API\n// components\nexport {LegalityDialogComponent} from './components/legality-dialog/legality-dialog.component';\nexport {LinkMenuItem, NgxAuthFirebaseuiAvatarComponent} from './components/ngx-auth-firebaseui-avatar/ngx-auth-firebaseui-avatar.component';\nexport {UserComponent} from './components/ngx-auth-firebaseui-user/user.component';\nexport {AuthComponent} from './components/ngx-auth-firebaseui/auth.component';\nexport {AuthProvidersComponent} from './components/providers/auth.providers.component';\nexport {NgxAuthFirebaseuiLoginComponent} from './components/ngx-auth-firebaseui-login/ngx-auth-firebaseui-login.component';\nexport {NgxAuthFirebaseuiRegisterComponent} from './components/ngx-auth-firebaseui-register/ngx-auth-firebaseui-register.component';\n\n\n// guards\nexport {LoggedInGuard} from './guards/logged-in.guard';\n// interfaces\nexport {NgxAuthFirebaseUIConfig} from './interfaces/config.interface';\n// services\nexport {AuthProcessService, AuthProvider} from './services/auth-process.service';\nexport {FirestoreSyncService} from './services/firestore-sync.service';\n\n\n@NgModule({\n  imports: [\n    CommonModule,\n    // HTTP\n    RouterModule,\n    HttpClientModule,\n    // FLEX_LAYOUT\n    // FORMS\n    FormsModule,\n    ReactiveFormsModule,\n    // MATERIAL2\n    MatTabsModule,\n    MatCardModule,\n    MatInputModule,\n    MatButtonModule,\n    MatIconModule,\n    MatSnackBarModule,\n    MatDividerModule,\n    MatChipsModule,\n    MatTooltipModule,\n    MatDialogModule,\n    MatCheckboxModule,\n    MatProgressSpinnerModule,\n    MatProgressBarModule,\n    MatDialogModule,\n    MatMenuModule,\n    // ANGULAR MATERIAL EXTENSIONS\n    MatPasswordStrengthModule,\n    // ANGULARFIRE2\n    AngularFireAuthModule,\n    AngularFirestoreModule,\n  ],\n  exports: [\n    AuthComponent,\n    UserComponent,\n    NgxAuthFirebaseuiAvatarComponent,\n    AuthProvidersComponent,\n    EmailConfirmationComponent,\n    // LoggedInGuard,\n    AngularFireAuthModule,\n    AngularFirestoreModule,\n    NgxAuthFirebaseuiLoginComponent,\n    NgxAuthFirebaseuiRegisterComponent\n  ],\n  declarations: [\n    AuthComponent,\n    UserComponent,\n    NgxAuthFirebaseuiAvatarComponent,\n    AuthProvidersComponent,\n    EmailConfirmationComponent,\n    LegalityDialogComponent,\n    NgxAuthFirebaseuiLoginComponent,\n    NgxAuthFirebaseuiRegisterComponent\n  ]\n})\nexport class NgxAuthFirebaseUIModule {\n  constructor(private iconRegistry: MatIconRegistry, private sanitizer: DomSanitizer, auth: AuthProcessService) {\n    auth.listenToUserEvents();\n    this.registerProviderIcons();\n  }\n\n\n  static forRoot(\n    configFactory: FirebaseOptions,\n    appNameFactory: () => string | undefined = () => undefined,\n    config: NgxAuthFirebaseUIConfig = {}\n  ): ModuleWithProviders<NgxAuthFirebaseUIModule> {\n\n    return {\n      ngModule: NgxAuthFirebaseUIModule,\n      providers:\n        [\n          {\n            provide: FIREBASE_OPTIONS,\n            useValue: configFactory\n          },\n          {\n            provide: FIREBASE_APP_NAME,\n            useFactory: appNameFactory\n          },\n          {provide: UserProvidedConfigToken, useValue: config},\n          {\n            provide: NgxAuthFirebaseUIConfigToken,\n            useFactory: ngxAuthFirebaseUIConfigFactory,\n            deps: [UserProvidedConfigToken]\n          },\n          AuthProcessService,\n          FirestoreSyncService,\n          LoggedInGuard\n        ]\n    };\n  }\n\n  registerProviderIcons() {\n    this.iconRegistry\n      .addSvgIcon('google', this.sanitizer.bypassSecurityTrustResourceUrl('/assets/mdi/google.svg'))\n      .addSvgIcon('apple', this.sanitizer.bypassSecurityTrustResourceUrl('/assets/mdi/apple.svg'))\n      .addSvgIcon('google-colored', this.sanitizer.bypassSecurityTrustResourceUrl('/assets/google.svg'))\n      .addSvgIcon('facebook', this.sanitizer.bypassSecurityTrustResourceUrl('/assets/mdi/facebook.svg'))\n      .addSvgIcon('twitter', this.sanitizer.bypassSecurityTrustResourceUrl('/assets/mdi/twitter.svg'))\n      .addSvgIcon('github', this.sanitizer.bypassSecurityTrustResourceUrl('/assets/mdi/github-circle.svg'))\n      .addSvgIcon('microsoft', this.sanitizer.bypassSecurityTrustResourceUrl('/assets/mdi/microsoft.svg'))\n      .addSvgIcon('yahoo', this.sanitizer.bypassSecurityTrustResourceUrl('/assets/mdi/yahoo.svg'))\n      .addSvgIcon('phone', this.sanitizer.bypassSecurityTrustResourceUrl('/assets/phone.svg'));\n  }\n}\n","/*\n * Public API Surface of ngx-auth-firebaseui\n */\n\nexport * from './lib/components';\nexport * from './lib/enums';\nexport * from './lib/interfaces';\nexport * from './lib/guards';\nexport * from './lib/tokens';\nexport * from './lib/services/auth-process.service';\nexport * from './lib/services/firestore-sync.service';\nexport * from './lib/ngx-auth-firebaseui.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3.FirestoreSyncService","i1.AuthProcessService","i2","i3","i4","i5","i6","i7","i2.AuthProcessService","MatTabGroup","i3.AuthProcessService","i8","i8.AuthProvidersComponent","i9","i10","i11"],"mappings":"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"}