ng7-auth
Version:
Firestore Authentication with Angular. A Fork form Anthony Nahas.
1 lines • 52.2 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/fire/firestore"),require("@angular/material"),require("@angular/fire/auth"),require("firebase/app"),require("firebase/auth"),require("@angular/forms"),require("@angular/common"),require("@angular/platform-browser"),require("@angular/common/http"),require("@angular/fire"),require("@angular/flex-layout")):"function"==typeof define&&define.amd?define(["exports","@angular/core","@angular/fire/firestore","@angular/material","@angular/fire/auth","firebase/app","firebase/auth","@angular/forms","@angular/common","@angular/platform-browser","@angular/common/http","@angular/fire","@angular/flex-layout"],e):e(t.ng7Auth={},t.ng.core,t.ng.fire.firestore,t.ng.material,t.ng.fire.auth,t.firebaseApp,null,t.ng.forms,t.ng.common,t.ng.platformBrowser,t.ng["common,http"],t.ng.fire,t.ng.flexLayout)}(this,function(t,e,n,r,o,a,i,s,u,l,c,d,m){"use strict";var p="users",h=function(){function t(t){this.afs=t}return t.prototype.getUserDocRefByUID=function(t){return this.afs.doc(p+"/"+t)},t.prototype.getUsersCollectionRef=function(t){return this.afs.collection(p+"/",t)},t.prototype.deleteUserData=function(t){return this.getUserDocRefByUID(t).delete()},t.prototype.updateUserData=function(t){var e=this.getUserDocRefByUID(t.uid),n={uid:t.uid,email:t.email,displayName:t.displayName,photoURL:t.photoURL,phoneNumber:t.phoneNumber,providerId:t.providerId};return e.set(n,{merge:!0})},t.decorators=[{type:e.Injectable}],t.ctorParameters=function(){return[{type:n.AngularFirestore}]},t}(),f="account",g="account-check",b="account-off",v=function(t,e,n,r){return new(n||(n=Promise))(function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function s(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){t.done?o(t.value):new n(function(e){e(t.value)}).then(i,s)}u((r=r.apply(t,e||[])).next())})},y=function(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=e.call(t,i)}catch(t){a=[6,t],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}},P=new a.auth.FacebookAuthProvider,w=new a.auth.GoogleAuthProvider,x=new a.auth.TwitterAuthProvider,I=new a.auth.GithubAuthProvider,F={ALL:"all",ANONYMOUS:"anonymous",EmailAndPassword:"firebase",Google:"google",Facebook:"facebook",Twitter:"twitter",Github:"github",PhoneNumber:"phoneNumber"},L=function(){function t(t,n,r,o){this.config=t,this.afa=n,this._snackBar=r,this._fireStoreService=o,this.onSuccessEmitter=new e.EventEmitter,this.onErrorEmitter=new e.EventEmitter}return t.prototype.resetPassword=function(t){var e=this;return this.afa.auth.sendPasswordResetEmail(t).then(function(){return console.log("email sent")}).catch(function(t){return e.onErrorEmitter.next(t)})},t.prototype.signInWith=function(t,e,n){return v(this,void 0,void 0,function(){var r,o;return y(this,function(a){switch(a.label){case 0:switch(a.trys.push([0,16,17,18]),this.isLoading=!0,r=void 0,t){case F.ANONYMOUS:return[3,1];case F.EmailAndPassword:return[3,3];case F.Google:return[3,5];case F.Facebook:return[3,7];case F.Twitter:return[3,9];case F.Github:return[3,11]}return[3,13];case 1:return[4,this.afa.auth.signInAnonymously()];case 2:return r=a.sent(),[3,14];case 3:return[4,this.afa.auth.signInWithEmailAndPassword(e,n)];case 4:return r=a.sent(),[3,14];case 5:return[4,this.afa.auth.signInWithPopup(w)];case 6:return r=a.sent(),[3,14];case 7:return[4,this.afa.auth.signInWithPopup(P)];case 8:return r=a.sent(),[3,14];case 9:return[4,this.afa.auth.signInWithPopup(x)];case 10:return r=a.sent(),[3,14];case 11:return[4,this.afa.auth.signInWithPopup(I)];case 12:return r=a.sent(),[3,14];case 13:throw new Error(F[t]+" is not available as auth provider");case 14:return[4,this.handleSuccess(r)];case 15:return a.sent(),[3,18];case 16:return o=a.sent(),this.handleError(o),console.error(o),this.onErrorEmitter.next(o),[3,18];case 17:return this.isLoading=!1,[7];case 18:return[2]}})})},t.prototype.signUp=function(t,e,n){return v(this,void 0,void 0,function(){var r,o,a;return y(this,function(i){switch(i.label){case 0:return i.trys.push([0,6,7,8]),this.isLoading=!0,[4,this.afa.auth.createUserWithEmailAndPassword(e,n)];case 1:return r=i.sent(),o=r.user,console.log("onsignUp the user = ",o),[4,this._fireStoreService.getUserDocRefByUID(o.uid).set({uid:o.uid,displayName:t,email:o.email,photoURL:o.photoURL})];case 2:return i.sent(),[4,o.sendEmailVerification()];case 3:return i.sent(),[4,this.updateProfile(t,o.photoURL)];case 4:return i.sent(),this.emailConfirmationSent=!0,this.emailToConfirm=e,[4,this.handleSuccess(r)];case 5:return i.sent(),[3,8];case 6:return a=i.sent(),this.handleError(a),[3,8];case 7:return this.isLoading=!1,[7];case 8:return[2]}})})},t.prototype.updateProfile=function(t,e){return v(this,void 0,void 0,function(){return y(this,function(n){switch(n.label){case 0:return[4,this.afa.auth.currentUser.updateProfile({displayName:t,photoURL:e})];case 1:return[2,n.sent()]}})})},t.prototype.deleteAccount=function(){return v(this,void 0,void 0,function(){return y(this,function(t){switch(t.label){case 0:return[4,this.afa.auth.currentUser.delete()];case 1:return[2,t.sent()]}})})},t.prototype.parseUserInfo=function(t){return{uid:t.uid,displayName:t.displayName,email:t.email,phoneNumber:t.phoneNumber,photoURL:t.photoURL,providerId:t.providerData.length>0?t.providerData[0].providerId:null}},t.prototype.getUserPhotoUrl=function(){var t=this.afa.auth.currentUser;return t?t.photoURL?t.photoURL:t.emailVerified?this.getPhotoPath(g):t.isAnonymous?this.getPhotoPath(b):this.getPhotoPath(f):void 0},t.prototype.getPhotoPath=function(t){return"assets/user/"+t+".svg"},t.prototype.signInWithPhoneNumber=function(){},t.prototype.handleSuccess=function(t){return v(this,void 0,void 0,function(){return y(this,function(e){switch(e.label){case 0:return[4,this._fireStoreService.updateUserData(this.parseUserInfo(t.user))];case 1:return e.sent(),this.config.toastMessageOnAuthSuccess&&this._snackBar.open("Hallo "+(t.user.displayName?t.user.displayName:"")+"!","OK",{duration:5e3}),this.onSuccessEmitter.next(t.user),[2]}})})},t.prototype.handleError=function(t){this.config.toastMessageOnAuthError&&this._snackBar.open(t.message,"OK",{duration:5e3}),console.error(t),this.onErrorEmitter.next(t)},t.decorators=[{type:e.Injectable}],t.ctorParameters=function(){return[{type:void 0,decorators:[{type:e.Inject,args:[q]}]},{type:o.AngularFireAuth},{type:r.MatSnackBar},{type:h}]},t}(),k=function(){function t(t,e){this.dialogRef=t,this.data=e,this._disableConfirmActionButton=!1}return Object.defineProperty(t.prototype,"disableConfirmActionButton",{get:function(){return this.data.tosUrl&&this.data.privacyPolicyUrl?this._disableConfirmActionButton=!(this.checkTOS&&this.checkPrivacyPolicy):this.data.tosUrl&&!this.data.privacyPolicyUrl?this._disableConfirmActionButton=!this.checkTOS:!this.data.tosUrl&&this.data.privacyPolicyUrl&&(this._disableConfirmActionButton=!this.checkPrivacyPolicy),this._disableConfirmActionButton},enumerable:!0,configurable:!0}),t.prototype.closeDialog=function(){var t={checked:!this.disableConfirmActionButton,authProvider:this.data.authProvider};this.dialogRef.close(t)},t.decorators=[{type:e.Component,args:[{selector:"ngx-auth-firebaseui-legality-dialog",template:'\n <h1 matDialogTitle>Legal requirements</h1>\n\n <mat-dialog-content>\n <div fxLayout="column" fxLayoutAlign="start">\n <mat-checkbox *ngIf="this.data.tosUrl" [(ngModel)]="checkTOS">\n I agree to the\n <span> </span>\n <a target="_blank"\n [href]="this.data.tosUrl">\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> </span>\n <a target="_blank"\n [href]="this.data.privacyPolicyUrl">\n Privacy\n </a>\n </mat-checkbox>\n </div>\n </mat-dialog-content>\n\n <mat-dialog-actions>\n <button id="decline-action"\n mat-raised-button\n matDialogClose\n color="warn">Decline</button>\n <button id="confirm-action"\n mat-raised-button\n color="primary"\n [disabled]="disableConfirmActionButton"\n (click)="closeDialog()">Confirm\n </button>\n </mat-dialog-actions>\n ',styles:["\n ::ng-deep .mat-checkbox-label{display:flex;flex-wrap:wrap}mat-dialog-content div{margin-top:1.5rem}mat-dialog-actions{margin-top:1rem}\n "]}]}],t.ctorParameters=function(){return[{type:r.MatDialogRef},{type:void 0,decorators:[{type:e.Inject,args:[r.MAT_DIALOG_DATA]}]}]},t}(),C=function(t,e,n,r){return new(n||(n=Promise))(function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function s(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){t.done?o(t.value):new n(function(e){e(t.value)}).then(i,s)}u((r=r.apply(t,e||[])).next())})},A=function(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=e.call(t,i)}catch(t){a=[6,t],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}},U=new RegExp(['^(([^<>()[\\]\\.,;:\\s@"]+(\\.[^<>()\\[\\]\\.,;:\\s@"]+)*)','|(".+"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.',"[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+","[a-zA-Z]{2,}))$"].join("")),E=new RegExp(/^\+(?:[0-9] ?){6,14}[0-9]$/),S=function(){function t(t,e,n,r){this.platformId=t,this.auth=e,this.authProcess=n,this.dialog=r,this.providers=F.ALL,this.guestEnabled=!0,this.authProvider=F,this.authenticationError=!1,this.passReset=!1,this.authProviders=F,this.onSuccess=n.onSuccessEmitter,this.onError=n.onErrorEmitter}return t.prototype.ngOnInit=function(){var t=this;u.isPlatformBrowser(this.platformId)&&(this.onErrorSubscription=this.onError.subscribe(function(){return t.authenticationError=!0})),this._initSignInFormGroupBuilder(),this._initSignUpFormGroupBuilder(),this._initResetPasswordFormGroupBuilder()},t.prototype.ngOnDestroy=function(){this.onErrorSubscription&&this.onErrorSubscription.unsubscribe()},Object.defineProperty(t.prototype,"color",{get:function(){return this.authenticationError?"warn":"primary"},enumerable:!0,configurable:!0}),t.prototype.createForgotPasswordTab=function(){var t=this;this.passwordResetWished=!0,setTimeout(function(){return t.tabIndex=0},100)},t.prototype.openLegalityDialog=function(t){var e=this;if(this.tosUrl||this.privacyPolicyUrl){var n={tosUrl:this.tosUrl,privacyPolicyUrl:this.privacyPolicyUrl,authProvider:t};this.dialogRef=this.dialog.open(k,{data:n}),this.dialogRef.afterClosed().subscribe(function(t){console.log("this.dialogRef.afterClosed(): ",t),t&&t.checked&&e._afterSignUpMiddleware(t.authProvider).then(function(){return e.signUpFormGroup.reset()}),e.dialogRef=null})}else this._afterSignUpMiddleware(t).then(function(){return e.signUpFormGroup.reset()})},t.prototype.signUp=function(){return C(this,void 0,void 0,function(){return A(this,function(t){switch(t.label){case 0:return[4,this.authProcess.signUp(this.signUpFormGroup.value.name,this.signUpFormGroup.value.email,this.signUpFormGroup.value.password)];case 1:return[2,t.sent()]}})})},t.prototype.signUpAnonymously=function(){return C(this,void 0,void 0,function(){return A(this,function(t){switch(t.label){case 0:return[4,this.authProcess.signInWith(this.authProvider.ANONYMOUS)];case 1:return[2,t.sent()]}})})},t.prototype.resetPassword=function(){var t=this;this.authProcess.resetPassword(this.resetPasswordEmailFormControl.value).then(function(){return t.passReset=!0})},t.prototype._initSignInFormGroupBuilder=function(){this.signInFormGroup=new s.FormGroup({}),this.signInFormGroup.registerControl("email",this.signInEmailFormControl=new s.FormControl("",[s.Validators.required,s.Validators.pattern(U)])),this.signInFormGroup.registerControl("password",this.sigInPasswordFormControl=new s.FormControl("",[s.Validators.required,s.Validators.minLength(6),s.Validators.maxLength(25)]))},t.prototype._initSignUpFormGroupBuilder=function(){this.signUpFormGroup=new s.FormGroup({name:this.sigUpNameFormControl=new s.FormControl("",[s.Validators.required,s.Validators.minLength(2),s.Validators.maxLength(30)]),email:this.sigUpEmailFormControl=new s.FormControl("",[s.Validators.required,s.Validators.pattern(U)]),password:this.sigUpPasswordFormControl=new s.FormControl("",[s.Validators.required,s.Validators.minLength(6),s.Validators.maxLength(25)])})},t.prototype._initResetPasswordFormGroupBuilder=function(){this.resetPasswordFormGroup=new s.FormGroup({email:this.resetPasswordEmailFormControl=new s.FormControl("",[s.Validators.required,s.Validators.pattern(U)])})},t.prototype._afterSignUpMiddleware=function(t){return t===this.authProvider.ANONYMOUS?this.signUpAnonymously():this.signUp()},t.decorators=[{type:e.Component,args:[{selector:"ngx-auth-firebaseui",template:'\n <mat-tab-group [color]="color" [selectedIndex]="tabIndex">\n \x3c!--Reset password tab--\x3e\n <mat-tab *ngIf="passwordResetWished" label="Reset Password">\n <form [formGroup]="resetPasswordFormGroup" (ngSubmit)="resetPasswordFormGroup.valid && resetPassword()">\n\n <mat-card>\n <mat-card-header fxLayoutAlign="end">\n <button mat-icon-button\n [color]="color"\n matTooltip="close"\n matTooltipPosition="above"\n (click)="passwordResetWished = false">\n <mat-icon>close</mat-icon>\n </button>\n </mat-card-header>\n\n <mat-card-content>\n <mat-form-field class="full-width" [appearance]="appearance">\n <mat-label>Reset e-mail address to password</mat-label>\n <input matInput\n [readonly]="passReset"\n formControlName="email"\n title="Reset e-mail address to password"\n required>\n <mat-icon matSuffix [color]="color">email</mat-icon>\n <mat-error *ngIf="resetPasswordEmailFormControl.hasError(\'required\')">\n E-mail is required to reset the password!\n </mat-error>\n <mat-error *ngIf="resetPasswordEmailFormControl.hasError(\'pattern\')">\n Please enter a valid e-mail address\n </mat-error>\n </mat-form-field>\n </mat-card-content>\n <mat-card-actions fxLayoutAlign="center">\n <button mat-raised-button\n type="submit"\n [color]="color"\n [disabled]="passReset">\n Reset\n </button>\n </mat-card-actions>\n <mat-card-footer *ngIf="passReset" fxLayoutAlign="center">\n <p>Reset requested. Check your e-mail instructions.</p>\n </mat-card-footer>\n <mat-card-footer>\n <mat-progress-bar *ngIf="authProcess.isLoading" mode="indeterminate"></mat-progress-bar>\n </mat-card-footer>\n </mat-card>\n </form>\n </mat-tab>\n\n \x3c!--Sign in tab--\x3e\n <mat-tab label="Sign in">\n <mat-card>\n <mat-card-title>Signing in</mat-card-title>\n <mat-card-content>\n <form [formGroup]="signInFormGroup"\n (ngSubmit)="signInFormGroup.valid &&\n authProcess.signInWith\n (authProviders.EmailAndPassword,signInFormGroup.value.email,signInFormGroup.value.password)">\n <div fxLayout="column" fxLayoutAlign="center">\n <mat-form-field [appearance]="appearance">\n <mat-label>E-mail</mat-label>\n <input matInput\n placeholder="E-mail"\n formControlName="email"\n required>\n <mat-icon matSuffix [color]="color">email</mat-icon>\n <mat-error *ngIf="signInEmailFormControl.hasError(\'required\')">\n E-mail is required\n </mat-error>\n <mat-error *ngIf="signInEmailFormControl.hasError(\'pattern\')">\n Please enter a valid e-mail address\n </mat-error>\n </mat-form-field>\n\n <mat-form-field [appearance]="appearance">\n <mat-label>Password</mat-label>\n <input matInput\n type="current-password"\n placeholder="Password"\n minlength="6"\n maxlength="25"\n formControlName="password"\n required>\n <mat-icon matSuffix [color]="color">lock</mat-icon>\n <mat-hint align="end" aria-live="polite">\n {{signInFormGroup.value.password.length}} / 25\n </mat-hint>\n <mat-error *ngIf="sigInPasswordFormControl.hasError(\'required\')">\n Please do not forget the password\n </mat-error>\n <mat-error *ngIf="sigInPasswordFormControl.hasError(\'minlength\')">\n The password must be at least 6 characters long.\n </mat-error>\n <mat-error *ngIf="sigInPasswordFormControl.hasError(\'maxlength\')">\n The password must not exceed 25 characters\n </mat-error>\n </mat-form-field>\n\n <button mat-raised-button\n style="margin-top: 20px"\n type="submit"\n class="space-top"\n [color]="color">\n Log In\n </button>\n\n </div>\n </form>\n\n <div fxLayoutAlign="center">\n <button mat-button\n class="space-top"\n [color]="color"\n (click)="createForgotPasswordTab()">\n Forgot Password?\n </button>\n </div>\n\n </mat-card-content>\n <mat-card-footer *ngIf="authProcess.isLoading">\n <mat-progress-bar mode="indeterminate"></mat-progress-bar>\n </mat-card-footer>\n </mat-card>\n </mat-tab>\n\n \x3c!--tab register--\x3e\n <mat-tab label="Register">\n <mat-card>\n <mat-card-title>Registration</mat-card-title>\n <div *ngIf="!authProcess.emailConfirmationSent;then register else confirm"></div>\n <ng-template #register>\n <mat-card-content fxLayout="column" fxLayoutAlign="center">\n <form [formGroup]="signUpFormGroup" (ngSubmit)="signUpFormGroup.valid &&\n authProcess.signUp\n (signUpFormGroup.value.name,signUpFormGroup.value.email,signUpFormGroup.value.password)">\n <div fxLayout="column" fxLayoutAlign="center">\n \x3c!--name--\x3e\n <mat-form-field [appearance]="appearance">\n \x3c!--labels will work only with @angular/material@6.2.0 --\x3e\n <mat-label>Name</mat-label>\n <input matInput\n placeholder="Name"\n minlength="2"\n maxlength="30"\n [formControl]="sigUpNameFormControl"\n required>\n <mat-icon matSuffix [color]="color">person</mat-icon>\n <mat-hint align="end" aria-live="polite">\n {{signUpFormGroup.value.name?.length}} / 25\n </mat-hint>\n <mat-error *ngIf="sigUpNameFormControl.hasError(\'required\')">\n Name is required\n </mat-error>\n <mat-error *ngIf="sigUpPasswordFormControl.hasError(\'minlength\')">\n The name is too short!\n </mat-error>\n <mat-error *ngIf="sigUpPasswordFormControl.hasError(\'maxlength\')">\n The name is too long!\n </mat-error>\n </mat-form-field>\n\n \x3c!--email--\x3e\n <mat-form-field [appearance]="appearance">\n <mat-label>E-mail</mat-label>\n <input matInput\n placeholder="E-mail"\n type="email"\n [formControl]="sigUpEmailFormControl">\n <mat-icon matSuffix [color]="color">email</mat-icon>\n <mat-error *ngIf="sigUpEmailFormControl.hasError(\'required\')">\n E-mail is required\n </mat-error>\n <mat-error *ngIf="sigUpEmailFormControl.hasError(\'pattern\')">\n Please enter a valid e-mail address\n </mat-error>\n </mat-form-field>\n\n \x3c!--password--\x3e\n <div fxLayout="column">\n\n <mat-form-field [appearance]="appearance">\n <mat-label>Password</mat-label>\n <input matInput\n type="password"\n placeholder="password"\n name="password"\n [formControl]="sigUpPasswordFormControl"\n required>\n <mat-icon matSuffix [color]="color">lock</mat-icon>\n\n <mat-hint align="end" aria-live="polite">\n {{signUpFormGroup.value.password?.length}} / 25\n </mat-hint>\n\n <mat-error *ngIf="sigUpPasswordFormControl.hasError(\'required\')" class="cut-text">\n Please do not forget the password\n </mat-error>\n\n <mat-error *ngIf="sigUpPasswordFormControl.hasError(\'minlength\')" class="cut-text">\n The password must be at least 6 characters long.\n </mat-error>\n <mat-error *ngIf="sigUpPasswordFormControl.hasError(\'maxlength\')" class="cut-text">\n The password can not be longer than 25 characters.\n </mat-error>\n\n </mat-form-field>\n\n </div>\n\n <button mat-raised-button\n style="margin-top: 20px"\n type="submit"\n [color]="color">\n Register\n </button>\n\n </div>\n </form>\n\n <button *ngIf="guestEnabled"\n mat-button\n style="margin-top: 20px"\n [color]="color"\n (click)="openLegalityDialog(authProvider.ANONYMOUS)">\n <mat-icon>fingerprint</mat-icon>\n continue as guest\n </button>\n\n </mat-card-content>\n\n <mat-card-footer *ngIf="authProcess.isLoading">\n <mat-progress-bar mode="indeterminate"></mat-progress-bar>\n </mat-card-footer>\n\n </ng-template>\n\n \x3c!--confirm template--\x3e\n <ng-template #confirm>\n <ngx-auth-firebaseui-email-confirmation [email]="authProcess.emailToConfirm"\n [goBackURL]="goBackURL">\n </ngx-auth-firebaseui-email-confirmation>\n </ng-template>\n\n </mat-card>\n </mat-tab>\n </mat-tab-group>\n <mat-divider></mat-divider>\n <ngx-auth-firebaseui-providers [providers]="providers"></ngx-auth-firebaseui-providers>\n ',styles:["\n .mat-card{margin:2rem}.space-top{margin-top:.5rem}.full-width{width:100%}.cut-text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}\n "]}]}],t.ctorParameters=function(){return[{type:Object,decorators:[{type:e.Inject,args:[e.PLATFORM_ID]}]},{type:o.AngularFireAuth},{type:L},{type:r.MatDialog}]},t.propDecorators={providers:[{type:e.Input}],appearance:[{type:e.Input}],tabIndex:[{type:e.Input}],guestEnabled:[{type:e.Input}],tosUrl:[{type:e.Input}],privacyPolicyUrl:[{type:e.Input}],goBackURL:[{type:e.Input}],onSuccess:[{type:e.Output}],onError:[{type:e.Output}]},t}(),G=function(t,e,n,r){return new(n||(n=Promise))(function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function s(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){t.done?o(t.value):new n(function(e){e(t.value)}).then(i,s)}u((r=r.apply(t,e||[])).next())})},M=function(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=e.call(t,i)}catch(t){a=[6,t],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}},N=function(){function t(t,n,r,o){this.auth=t,this.authProcess=n,this._fireStoreService=r,this.snackBar=o,this.onAccountDeleted=new e.EventEmitter}return t.prototype.ngOnInit=function(){},t.prototype.initUpdateFormGroup=function(){var t=this.auth.auth.currentUser;this.updateFormGroup=new s.FormGroup({name:this.updateNameFormControl=new s.FormControl({value:t.displayName,disabled:!0},[s.Validators.required,s.Validators.minLength(2),s.Validators.maxLength(25)]),email:this.updateEmailFormControl=new s.FormControl({value:t.email,disabled:!0},[s.Validators.required,s.Validators.pattern(U)]),phoneNumber:this.updatePhoneNumberFormControl=new s.FormControl("",[s.Validators.pattern(E)])}),this.updateFormGroup.enable()},t.prototype.changeEditMode=function(){this.editMode=!this.editMode,this.editMode?this.initUpdateFormGroup():this.reset()},t.prototype.reset=function(){this.updateFormGroup.reset(),this.updateFormGroup.disable(),this.updateFormGroup=null},t.prototype.save=function(){return G(this,void 0,void 0,function(){var t,e,n;return M(this,function(r){switch(r.label){case 0:if(!this.updateFormGroup.dirty)return[3,11];t=this.auth.auth.currentUser,console.log("form = ",this.updateFormGroup),e=[],r.label=1;case 1:return r.trys.push([1,9,,10]),this.updateNameFormControl.dirty?[4,t.updateProfile({displayName:this.updateNameFormControl.value,photoURL:null})]:[3,3];case 2:r.sent(),e.push("your name has been update to "+t.displayName),r.label=3;case 3:return this.updateEmailFormControl.dirty?[4,t.updateEmail(this.updateEmailFormControl.value)]:[3,5];case 4:r.sent(),e.push("your email has been update to "+t.email),r.label=5;case 5:return this.updatePhoneNumberFormControl.dirty?[4,t.updatePhoneNumber(this.updatePhoneNumberFormControl.value)]:[3,7];case 6:r.sent(),console.log("phone number = ",this.updatePhoneNumberFormControl.value),e.push("your phone number has been update to "+t.phoneNumber),r.label=7;case 7:return[4,this._fireStoreService.updateUserData(this.authProcess.parseUserInfo(t))];case 8:return r.sent(),[3,10];case 9:return(n=r.sent()).message?this.snackBar.open(n.message,"Ok"):this.snackBar.open(n,"Ok"),console.error(n),console.error(n.code),console.error(n.message),[3,10];case 10:e.length>0&&this.snackBar.open(e.join("\\n"),"Ok"),r.label=11;case 11:return this.editMode=!1,[2]}})})},t.prototype.deleteAccount=function(){return G(this,void 0,void 0,function(){var t,e;return M(this,function(n){switch(n.label){case 0:return n.trys.push([0,3,,4]),t=this.auth.auth.currentUser,[4,this.authProcess.deleteAccount()];case 1:return n.sent(),[4,this._fireStoreService.deleteUserData(t.uid)];case 2:return n.sent(),this.onAccountDeleted.emit(),this.editMode=!1,this.snackBar.open("Your account has been successfully deleted!","OK",{duration:5e3}),[3,4];case 3:return e=n.sent(),console.log("Error while delete user's account",e),this.snackBar.open("Error occurred while deleting your account!","OK",{duration:5e3}),[3,4];case 4:return[2]}})})},t.decorators=[{type:e.Component,args:[{selector:"ngx-auth-firebaseui-user",template:'\n <div *ngIf="auth.authState| async as user; then authenticated else none">\n\n </div>\n\n <ng-template #authenticated>\n <mat-card *ngIf="auth.user | async as user">\n \x3c!--<form [formGroup]="updateFormGroup" >--\x3e\n \x3c!--card header--\x3e\n <mat-card-header fxLayout="column" fxLayoutAlign="center center">\n\n <img mat-card-avatar [src]="authProcess?.getUserPhotoUrl()">\n\n <div *ngIf="user.emailVerified; then emailVerified else emailNotVerified"></div>\n <ng-template #emailVerified>\n <mat-icon color="primary"\n matTooltip="email is verified"\n matTooltipPosition="after">\n verified_user\n </mat-icon>\n </ng-template>\n <ng-template #emailNotVerified>\n <mat-icon color="warn"\n matTooltip="email is not verified"\n matTooltipPosition="after">\n warning\n </mat-icon>\n </ng-template>\n\n </mat-card-header>\n\n \x3c!--card content--\x3e\n <mat-card-content *ngIf="editMode; then edit else readonly">\n </mat-card-content>\n\n <ng-template #edit>\n <form [formGroup]="updateFormGroup" (submit)="save()">\n\n <mat-card-content fxLayout="column" fxLayoutAlign="center center">\n <div fxLayoutAlign="center">\n <button mat-raised-button color="warn" class="edit-button"\n (click)="changeEditMode()">\n cancel\n </button>\n </div>\n\n \x3c!--name--\x3e\n <mat-form-field class="full-width" [appearance]="appearance">\n <mat-label>Name</mat-label>\n <input matInput\n placeholder="Name"\n [formControl]="updateNameFormControl"\n [value]="user.displayName">\n <mat-icon matSuffix>person</mat-icon>\n <mat-hint align="end" aria-live="polite">\n {{updateNameFormControl.value.length}} / 25\n </mat-hint>\n <mat-error *ngIf="updateNameFormControl.hasError(\'required\')">\n Name is required\n </mat-error>\n </mat-form-field>\n\n \x3c!--email--\x3e\n <mat-form-field class="full-width" [appearance]="appearance">\n <mat-label>E-mail</mat-label>\n <input matInput\n placeholder="E-mail"\n [formControl]="updateEmailFormControl"\n [value]="user.email">\n <mat-icon matSuffix>email</mat-icon>\n <mat-error *ngIf="updateEmailFormControl.hasError(\'required\')">\n E-mail is required {{updateEmailFormControl.value}}\n </mat-error>\n <mat-error *ngIf="updateEmailFormControl.hasError(\'pattern\')">\n Please enter a valid e-mail address {{updateEmailFormControl.value}}\n </mat-error>\n </mat-form-field>\n\n \x3c!--phone number--\x3e\n <mat-form-field class="full-width" [appearance]="appearance">\n <mat-label>Phone number</mat-label>\n <input matInput\n type="number"\n placeholder="Phone number"\n [formControl]="updatePhoneNumberFormControl"\n [value]="user.phoneNumber">\n <mat-icon matSuffix>phone</mat-icon>\n <mat-hint align="end" aria-live="polite">\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 </mat-hint>\n <mat-error *ngIf="updatePhoneNumberFormControl.hasError(\'pattern\')">\n Please enter a valid phone number\n </mat-error>\n </mat-form-field>\n\n </mat-card-content>\n\n <mat-card-actions fxLayout="column">\n <button mat-button\n color="primary"\n type="submit">\n Save changes\n </button>\n </mat-card-actions>\n </form>\n </ng-template>\n\n <ng-template #readonly>\n <div fxLayoutAlign="center">\n <button mat-raised-button color="primary" class="edit-button"\n (click)="changeEditMode()">\n edit\n </button>\n </div>\n\n \x3c!--name--\x3e\n <mat-form-field class="full-width" [appearance]="appearance">\n <mat-label>Name</mat-label>\n <input matInput\n placeholder="Name"\n [value]="user.displayName"\n [disabled]="!editMode">\n <mat-icon matSuffix color="primary">person</mat-icon>\n </mat-form-field>\n\n \x3c!--email--\x3e\n <mat-form-field class="full-width" [appearance]="appearance">\n <mat-label>E-mail</mat-label>\n <input matInput\n placeholder="E-mail" [value]="user.email"\n [disabled]="!editMode">\n <mat-icon matSuffix color="primary">email</mat-icon>\n </mat-form-field>\n\n \x3c!--phone number--\x3e\n <mat-form-field class="full-width" [appearance]="appearance">\n <mat-label>Phone number</mat-label>\n <input matInput\n placeholder="Phone number"\n [value]="user.phoneNumber"\n [disabled]="!editMode">\n <mat-icon matSuffix color="primary">phone</mat-icon>\n </mat-form-field>\n\n <mat-card-actions fxLayout="column">\n <button mat-button color="primary" (click)="auth.auth.signOut()">Sign out</button>\n <button mat-button color="warn" (click)="deleteAccount()">Delete account</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" fxLayout="row" fxLayoutAlign="center center">\n <mat-card-content fxLayout="row" fxLayoutAlign="center center">\n <mat-icon color="accent">warning</mat-icon>\n <span>You are not logged in!</span>\n </mat-card-content>\n </mat-card>\n </ng-template>\n ',styles:["\n .edit-button{margin:1rem}.full-width{width:100%}.cut-text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.none-card{min-height:430px}.none-card span{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}\n "]}]}],t.ctorParameters=function(){return[{type:o.AngularFireAuth},{type:L},{type:h},{type:r.MatSnackBar}]},t.propDecorators={editMode:[{type:e.Input}],appearance:[{type:e.Input}],onAccountDeleted:[{type:e.Output}]},t}(),R={DEFAULT:"default",CLASSIC:"classic",STROKED:"stroked",FAB:"fab",MINI_FAB:"mini-fab",RAISED:"raised"},T={ROW:"row",COLUMN:"column"},D=function(){function t(t,e,n){this.authProcess=t,this._iconRegistry=e,this._sanitizer=n,this.layout=T.ROW,this.providers=F.ALL,this.themes=R,this.authProvider=F,e.addSvgIcon("google",n.bypassSecurityTrustResourceUrl("/assets/mdi/google.svg")).addSvgIcon("google-colored",n.bypassSecurityTrustResourceUrl("/assets/google.svg")).addSvgIcon("facebook",n.bypassSecurityTrustResourceUrl("/assets/mdi/facebook.svg")).addSvgIcon("twitter",n.bypassSecurityTrustResourceUrl("/assets/mdi/twitter.svg")).addSvgIcon("github",n.bypassSecurityTrustResourceUrl("/assets/mdi/github-circle.svg")).addSvgIcon("phone",n.bypassSecurityTrustResourceUrl("/assets/phone.svg"))}return t.decorators=[{type:e.Component,args:[{selector:"ngx-auth-firebaseui-providers",template:'\n <div [ngSwitch]="theme">\n\n \x3c!--default icon buttons--\x3e\n <div *ngSwitchDefault\n [fxLayout]="layout"\n fxLayout.xs="column"\n [fxLayoutAlign]="layout == \'row\' ? \'space-around center\' : \'stretch\'">\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Google)"\n mat-button\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Google)">\n <mat-icon svgIcon="google-colored"></mat-icon>\n Google\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Facebook)"\n mat-button\n class="facebook-filled"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Facebook)">\n <mat-icon svgIcon="facebook"></mat-icon>\n Facebook\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Twitter)"\n mat-button\n class="twitter-filled"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Twitter)">\n <mat-icon svgIcon="twitter"></mat-icon>\n Twitter\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Github)"\n mat-button\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Github)">\n <mat-icon svgIcon="github"></mat-icon>\n GitHub\n </button>\n </div>\n\n \x3c!--classic--\x3e\n <div *ngSwitchCase="themes.CLASSIC"\n class="buttons-classic"\n [fxLayout]="layout"\n fxLayout.xs="column"\n [fxLayoutAlign]="layout == \'row\' ? \'space-around center\' : \'stretch\'">\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Google)"\n mat-button\n class="google-classic"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Google)">\n Google\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Facebook)"\n mat-button\n class="facebook-classic"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Facebook)">\n Facebook\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Twitter)"\n mat-button\n class="twitter-classic"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Twitter)">\n Twitter\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Github)"\n mat-button\n class="github-classic"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Github)">\n GitHub\n </button>\n </div>\n\n \x3c!--stroked--\x3e\n <div *ngSwitchCase="themes.STROKED"\n class="buttons-classic"\n [fxLayout]="layout"\n fxLayout.xs="column"\n [fxLayoutAlign]="layout == \'row\' ? \'space-around center\' : \'stretch\'">\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Google)"\n mat-stroked-button\n class="google-classic"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Google)">\n Google\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Facebook)"\n mat-stroked-button\n class="facebook-classic"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Facebook)">\n Facebook\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Twitter)"\n mat-stroked-button\n class="twitter-classic"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Twitter)">\n Twitter\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Github)"\n mat-stroked-button\n class="github-classic"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Github)">\n GitHub\n </button>\n </div>\n\n \x3c!--raised--\x3e\n <div *ngSwitchCase="themes.RAISED"\n class="buttons-raised"\n [fxLayout]="layout"\n fxLayout.xs="column"\n [fxLayoutAlign]="layout == \'row\' ? \'space-around center\' : \'stretch\'">\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Google)"\n mat-raised-button\n class="google-raised"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Google)">\n Google\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Facebook)"\n mat-raised-button\n class="facebook-raised"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Facebook)">\n Facebook\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Twitter)"\n mat-raised-button\n class="twitter-raised"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Twitter)">\n Twitter\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Github)"\n mat-raised-button\n class="github-raised"\n [ngClass.xs]="{\'space-full-xs\':true}"\n (click)="authProcess.signInWith(authProvider.Github)">\n GitHub\n </button>\n </div>\n\n \x3c!--fab--\x3e\n <div *ngSwitchCase="themes.FAB"\n class="buttons-raised"\n [fxLayout]="layout"\n [fxLayoutAlign]="layout == \'row\' ? \'space-around center\' : \'stretch\'">\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Google)"\n mat-fab\n class="google-raised"\n (click)="authProcess.signInWith(authProvider.Google)">\n <mat-icon svgIcon="google"></mat-icon>\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Facebook)"\n mat-fab\n class="facebook-raised"\n (click)="authProcess.signInWith(authProvider.Facebook)">\n <mat-icon svgIcon="facebook"></mat-icon>\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Twitter)"\n mat-fab\n class="twitter-raised"\n (click)="authProcess.signInWith(authProvider.Twitter)">\n <mat-icon svgIcon="twitter"></mat-icon>\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Github)"\n mat-fab\n class="github-raised"\n (click)="authProcess.signInWith(authProvider.Github)">\n <mat-icon svgIcon="github"></mat-icon>\n </button>\n </div>\n\n \x3c!--mini-fab--\x3e\n <div *ngSwitchCase="themes.MINI_FAB"\n class="buttons-raised"\n [fxLayout]="layout"\n fxLayoutAlign.xs="center center"\n [fxLayoutAlign]="layout == \'row\' ? \'space-around center\' : \'stretch\'">\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Google)"\n mat-mini-fab\n class="google-raised"\n fxFlexAlign="center"\n (click)="authProcess.signInWith(authProvider.Google)">\n <mat-icon svgIcon="google"></mat-icon>\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Facebook)"\n mat-mini-fab\n class="facebook-raised"\n (click)="authProcess.signInWith(authProvider.Facebook)">\n <mat-icon svgIcon="facebook"></mat-icon>\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Twitter)"\n mat-mini-fab\n class="twitter-raised"\n (click)="authProcess.signInWith(authProvider.Twitter)">\n <mat-icon svgIcon="twitter" class="icon-white"></mat-icon>\n </button>\n <button *ngIf="providers === authProvider.ALL || providers.includes(authProvider.Github)"\n mat-mini-fab\n class="github-raised"\n (click)="authProcess.signInWith(authProvider.Github)">\n <mat-icon svgIcon="github"></mat-icon>\n </button>\n </div>\n </div>\n ',styles:["\n :host{display:block}:host .mat-icon{vertical-align:inherit}.space-full-xs{width:100%;margin:.4rem}.facebook-filled mat-icon{fill:#385899}.twitter-filled mat-icon{fill:#1da1f2}.buttons-raised button{color:#fff!important}.buttons-raised .google-raised{background-color:#db4437}.buttons-raised .facebook-raised{background-color:#385899}.buttons-raised .twitter-raised{background-color:#1da1f2}.buttons-raised .github-raised{background-color:#000}.buttons-classic button.google-classic{color:#db4437!important}.buttons-classic .facebook-classic{color:#385899!important}.buttons-classic .twitter-classic{color:#1da1f2!important}.buttons-classic .github-classic{color:#000!important}.icon-white{color:#fff}.icon-white mat-icon{fill:#fff}\n "]}]}],t.ctorParameters=function(){return[{type:L},{type:r.MatIconRegistry},{type:l.DomSanitizer}]},t.propDecorators={theme:[{type:e.Input}],layout:[{type:e.Input}],providers:[{type:e.Input}]},t}(),O=function(){function t(){}return t.decorators=[{type:e.Component,args:[{selector:"ngx-auth-firebaseui-email-confirmation",template:'\n <mat-card-content fxLayout="column" fxLayoutAlign="center center">\n <mat-icon>email</mat-icon>\n <div class="title">\n Confirm your e-mail address!\n </div>\n <div class="subtitle">\n <p>A confirmation e-mail has been sent to\n <b><stro