ngx-firebase 1.1.13 → 22.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -13
- package/fesm2022/ngx-firebase.mjs +158 -0
- package/fesm2022/ngx-firebase.mjs.map +1 -0
- package/package.json +39 -30
- package/types/ngx-firebase.d.ts +55 -0
- package/bundles/ngx-firebase-capacitor.umd.js +0 -763
- package/bundles/ngx-firebase-capacitor.umd.js.map +0 -1
- package/bundles/ngx-firebase-capacitor.umd.min.js +0 -16
- package/bundles/ngx-firebase-capacitor.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-iap.umd.js +0 -718
- package/bundles/ngx-firebase-iap.umd.js.map +0 -1
- package/bundles/ngx-firebase-iap.umd.min.js +0 -2
- package/bundles/ngx-firebase-iap.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-ionic-auth-ui.umd.js +0 -2116
- package/bundles/ngx-firebase-ionic-auth-ui.umd.js.map +0 -1
- package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js +0 -16
- package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-ionic.umd.js +0 -979
- package/bundles/ngx-firebase-ionic.umd.js.map +0 -1
- package/bundles/ngx-firebase-ionic.umd.min.js +0 -16
- package/bundles/ngx-firebase-ionic.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-testing.umd.js +0 -801
- package/bundles/ngx-firebase-testing.umd.js.map +0 -1
- package/bundles/ngx-firebase-testing.umd.min.js +0 -2
- package/bundles/ngx-firebase-testing.umd.min.js.map +0 -1
- package/bundles/ngx-firebase.umd.js +0 -2299
- package/bundles/ngx-firebase.umd.js.map +0 -1
- package/bundles/ngx-firebase.umd.min.js +0 -2
- package/bundles/ngx-firebase.umd.min.js.map +0 -1
- package/capacitor/capacitor.module.d.ts +0 -9
- package/capacitor/interfaces/config.d.ts +0 -12
- package/capacitor/interfaces/index.d.ts +0 -1
- package/capacitor/ngx-firebase-capacitor.d.ts +0 -5
- package/capacitor/ngx-firebase-capacitor.metadata.json +0 -1
- package/capacitor/package.json +0 -25
- package/capacitor/public-api.d.ts +0 -3
- package/capacitor/services/analytics-firebase-capacitor.service.d.ts +0 -9
- package/capacitor/services/crashlytics-firebase-capacitor.service.d.ts +0 -8
- package/capacitor/services/credential-factory-capacitor.service.d.ts +0 -18
- package/capacitor/services/index.d.ts +0 -3
- package/esm2015/capacitor/capacitor.module.js +0 -78
- package/esm2015/capacitor/interfaces/config.js +0 -3
- package/esm2015/capacitor/interfaces/index.js +0 -2
- package/esm2015/capacitor/ngx-firebase-capacitor.js +0 -6
- package/esm2015/capacitor/public-api.js +0 -4
- package/esm2015/capacitor/services/analytics-firebase-capacitor.service.js +0 -43
- package/esm2015/capacitor/services/crashlytics-firebase-capacitor.service.js +0 -40
- package/esm2015/capacitor/services/credential-factory-capacitor.service.js +0 -182
- package/esm2015/capacitor/services/index.js +0 -4
- package/esm2015/iap/iap.module.js +0 -32
- package/esm2015/iap/interfaces/index.js +0 -5
- package/esm2015/iap/ngx-firebase-iap.js +0 -5
- package/esm2015/iap/public-api.js +0 -5
- package/esm2015/iap/services/iap.service.js +0 -317
- package/esm2015/iap/tokens/index.js +0 -4
- package/esm2015/ionic/animations/index.js +0 -30
- package/esm2015/ionic/components/avatar/avatar.component.js +0 -98
- package/esm2015/ionic/components/avatar/index.js +0 -2
- package/esm2015/ionic/components/index.js +0 -3
- package/esm2015/ionic/components/popover-menu/index.js +0 -3
- package/esm2015/ionic/components/popover-menu/interface.js +0 -2
- package/esm2015/ionic/components/popover-menu/popover-menu.component.js +0 -34
- package/esm2015/ionic/ionic.module.js +0 -46
- package/esm2015/ionic/ngx-firebase-ionic.js +0 -5
- package/esm2015/ionic/public-api.js +0 -5
- package/esm2015/ionic/services/alerts-ionic.service.js +0 -107
- package/esm2015/ionic/services/index.js +0 -6
- package/esm2015/ionic/services/legality-dialog-ionic.service.js +0 -85
- package/esm2015/ionic/services/loading-ionic.service.js +0 -46
- package/esm2015/ionic/services/picker-ionic.service.js +0 -44
- package/esm2015/ionic/services/toast-ionic.service.js +0 -49
- package/esm2015/ionic-auth-ui/animations/index.js +0 -30
- package/esm2015/ionic-auth-ui/components/email-confirmation/email-confirmation.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/email-field/email-field.component.js +0 -25
- package/esm2015/ionic-auth-ui/components/form-field/form-field.component.js +0 -82
- package/esm2015/ionic-auth-ui/components/index.js +0 -12
- package/esm2015/ionic-auth-ui/components/name-field/name-field.component.js +0 -30
- package/esm2015/ionic-auth-ui/components/or-divider/or-divider.component.js +0 -11
- package/esm2015/ionic-auth-ui/components/password-field/password-field.component.js +0 -138
- package/esm2015/ionic-auth-ui/components/password-field/passwordValidatorFunctions.js +0 -62
- package/esm2015/ionic-auth-ui/components/providers/providers.component.js +0 -70
- package/esm2015/ionic-auth-ui/components/reauthenticate/reauthenticate.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/register/register.component.js +0 -142
- package/esm2015/ionic-auth-ui/components/register-with-email/register-with-email.component.js +0 -60
- package/esm2015/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.js +0 -26
- package/esm2015/ionic-auth-ui/components/signin/signin.component.js +0 -92
- package/esm2015/ionic-auth-ui/components/terms-field/terms-field.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/user/user.component.js +0 -195
- package/esm2015/ionic-auth-ui/ionic-auth-ui.module.js +0 -92
- package/esm2015/ionic-auth-ui/ngx-firebase-ionic-auth-ui.js +0 -23
- package/esm2015/ionic-auth-ui/pages/index.js +0 -5
- package/esm2015/ionic-auth-ui/pages/register/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/register/register.page.js +0 -56
- package/esm2015/ionic-auth-ui/pages/signin/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/signin/signin.page.js +0 -78
- package/esm2015/ionic-auth-ui/pages/user/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/user/user.page.js +0 -11
- package/esm2015/ionic-auth-ui/pages/verifyemail/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/verifyemail/verifyemail.page.js +0 -85
- package/esm2015/ionic-auth-ui/public-api.js +0 -5
- package/esm2015/ngx-firebase.js +0 -6
- package/esm2015/public-api.js +0 -6
- package/esm2015/shared/guards/index.js +0 -3
- package/esm2015/shared/guards/logged-in.guard.js +0 -60
- package/esm2015/shared/guards/verify-email.guard.js +0 -41
- package/esm2015/shared/interfaces/accounts.enum.js +0 -9
- package/esm2015/shared/interfaces/authprovider.enum.js +0 -15
- package/esm2015/shared/interfaces/config.interface.js +0 -61
- package/esm2015/shared/interfaces/index.js +0 -8
- package/esm2015/shared/interfaces/main.interface.js +0 -7
- package/esm2015/shared/interfaces/providers.interface.js +0 -2
- package/esm2015/shared/interfaces/tokens.js +0 -19
- package/esm2015/shared/interfaces/ui-providers.interface.js +0 -2
- package/esm2015/shared/services/analytics.service.js +0 -24
- package/esm2015/shared/services/auth-process.service.js +0 -779
- package/esm2015/shared/services/crashlytics.service.js +0 -42
- package/esm2015/shared/services/device-info.service.js +0 -14
- package/esm2015/shared/services/firebase.service.js +0 -37
- package/esm2015/shared/services/firestore-sync.service.js +0 -60
- package/esm2015/shared/services/index.js +0 -10
- package/esm2015/shared/services/performance.service.js +0 -28
- package/esm2015/shared/services/remoteconfig.service.js +0 -49
- package/esm2015/shared/services/ui.service.js +0 -45
- package/esm2015/shared/shared.module.js +0 -175
- package/esm2015/shared/types/DisplayWidth.js +0 -9
- package/esm2015/shared/types/Location.js +0 -2
- package/esm2015/shared/types/ValueAccessorControlComponent.js +0 -85
- package/esm2015/shared/types/ValueAccessorValueComponent.js +0 -40
- package/esm2015/shared/types/index.js +0 -5
- package/esm2015/testing/fakeavatar.module.js +0 -22
- package/esm2015/testing/fakes/FakeAuthProcessService.js +0 -31
- package/esm2015/testing/fakes/FakeAvatarComponent.js +0 -13
- package/esm2015/testing/fakes/FakeFireService.js +0 -21
- package/esm2015/testing/fakes/FakeFirestoreSyncService.js +0 -11
- package/esm2015/testing/fakes/FakeIAPurchaseService.js +0 -11
- package/esm2015/testing/fakes/FakePickerService.js +0 -9
- package/esm2015/testing/fakes/FakeRemoteConfigService.js +0 -44
- package/esm2015/testing/fakes/FakeTranslateService.js +0 -21
- package/esm2015/testing/fakes/FakeUiService.js +0 -26
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireAuth.js +0 -30
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireFunctions.js +0 -17
- package/esm2015/testing/fakes/angular-fire/FakeAngularFirePerformance.js +0 -17
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireStorage.js +0 -8
- package/esm2015/testing/fakes/angular-fire/FakeAngularFirestore.js +0 -8
- package/esm2015/testing/fakes/angular-fire/FakeUserCredential.js +0 -18
- package/esm2015/testing/fakes/index.js +0 -19
- package/esm2015/testing/ngx-firebase-testing.js +0 -6
- package/esm2015/testing/public-api.js +0 -5
- package/esm2015/testing/test.module.js +0 -66
- package/esm2015/testing/utils/index.js +0 -17
- package/esm2015/testing/utils/patchConsole.js +0 -14
- package/fesm2015/ngx-firebase-capacitor.js +0 -328
- package/fesm2015/ngx-firebase-capacitor.js.map +0 -1
- package/fesm2015/ngx-firebase-iap.js +0 -354
- package/fesm2015/ngx-firebase-iap.js.map +0 -1
- package/fesm2015/ngx-firebase-ionic-auth-ui.js +0 -1482
- package/fesm2015/ngx-firebase-ionic-auth-ui.js.map +0 -1
- package/fesm2015/ngx-firebase-ionic.js +0 -495
- package/fesm2015/ngx-firebase-ionic.js.map +0 -1
- package/fesm2015/ngx-firebase-testing.js +0 -388
- package/fesm2015/ngx-firebase-testing.js.map +0 -1
- package/fesm2015/ngx-firebase.js +0 -1509
- package/fesm2015/ngx-firebase.js.map +0 -1
- package/iap/iap.module.d.ts +0 -5
- package/iap/interfaces/index.d.ts +0 -11
- package/iap/ngx-firebase-iap.d.ts +0 -4
- package/iap/ngx-firebase-iap.metadata.json +0 -1
- package/iap/package.json +0 -23
- package/iap/public-api.d.ts +0 -4
- package/iap/services/iap.service.d.ts +0 -47
- package/iap/tokens/index.d.ts +0 -3
- package/ionic/animations/index.d.ts +0 -1
- package/ionic/components/avatar/avatar.component.d.ts +0 -27
- package/ionic/components/avatar/index.d.ts +0 -1
- package/ionic/components/index.d.ts +0 -2
- package/ionic/components/popover-menu/index.d.ts +0 -2
- package/ionic/components/popover-menu/interface.d.ts +0 -6
- package/ionic/components/popover-menu/popover-menu.component.d.ts +0 -10
- package/ionic/ionic.module.d.ts +0 -2
- package/ionic/ngx-firebase-ionic.d.ts +0 -4
- package/ionic/ngx-firebase-ionic.metadata.json +0 -1
- package/ionic/package.json +0 -30
- package/ionic/public-api.d.ts +0 -4
- package/ionic/services/alerts-ionic.service.d.ts +0 -13
- package/ionic/services/index.d.ts +0 -5
- package/ionic/services/legality-dialog-ionic.service.d.ts +0 -10
- package/ionic/services/loading-ionic.service.d.ts +0 -17
- package/ionic/services/picker-ionic.service.d.ts +0 -9
- package/ionic/services/toast-ionic.service.d.ts +0 -11
- package/ionic-auth-ui/animations/index.d.ts +0 -1
- package/ionic-auth-ui/components/email-confirmation/email-confirmation.component.d.ts +0 -31
- package/ionic-auth-ui/components/email-field/email-field.component.d.ts +0 -7
- package/ionic-auth-ui/components/form-field/form-field.component.d.ts +0 -28
- package/ionic-auth-ui/components/index.d.ts +0 -11
- package/ionic-auth-ui/components/name-field/name-field.component.d.ts +0 -8
- package/ionic-auth-ui/components/or-divider/or-divider.component.d.ts +0 -2
- package/ionic-auth-ui/components/password-field/password-field.component.d.ts +0 -34
- package/ionic-auth-ui/components/password-field/passwordValidatorFunctions.d.ts +0 -4
- package/ionic-auth-ui/components/providers/providers.component.d.ts +0 -26
- package/ionic-auth-ui/components/reauthenticate/reauthenticate.component.d.ts +0 -30
- package/ionic-auth-ui/components/register/register.component.d.ts +0 -26
- package/ionic-auth-ui/components/register-with-email/register-with-email.component.d.ts +0 -24
- package/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.d.ts +0 -7
- package/ionic-auth-ui/components/signin/signin.component.d.ts +0 -28
- package/ionic-auth-ui/components/terms-field/terms-field.component.d.ts +0 -27
- package/ionic-auth-ui/components/user/user.component.d.ts +0 -45
- package/ionic-auth-ui/ionic-auth-ui.module.d.ts +0 -32
- package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.d.ts +0 -22
- package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.metadata.json +0 -1
- package/ionic-auth-ui/package.json +0 -30
- package/ionic-auth-ui/pages/index.d.ts +0 -4
- package/ionic-auth-ui/pages/register/index.d.ts +0 -1
- package/ionic-auth-ui/pages/register/register.page.d.ts +0 -16
- package/ionic-auth-ui/pages/signin/index.d.ts +0 -1
- package/ionic-auth-ui/pages/signin/signin.page.d.ts +0 -22
- package/ionic-auth-ui/pages/user/index.d.ts +0 -1
- package/ionic-auth-ui/pages/user/user.page.d.ts +0 -3
- package/ionic-auth-ui/pages/verifyemail/index.d.ts +0 -1
- package/ionic-auth-ui/pages/verifyemail/verifyemail.page.d.ts +0 -19
- package/ionic-auth-ui/public-api.d.ts +0 -4
- package/ngx-firebase.d.ts +0 -5
- package/ngx-firebase.metadata.json +0 -1
- package/public-api.d.ts +0 -5
- package/shared/guards/index.d.ts +0 -2
- package/shared/guards/logged-in.guard.d.ts +0 -13
- package/shared/guards/verify-email.guard.d.ts +0 -11
- package/shared/interfaces/accounts.enum.d.ts +0 -7
- package/shared/interfaces/authprovider.enum.d.ts +0 -13
- package/shared/interfaces/config.interface.d.ts +0 -63
- package/shared/interfaces/index.d.ts +0 -7
- package/shared/interfaces/main.interface.d.ts +0 -13
- package/shared/interfaces/providers.interface.d.ts +0 -70
- package/shared/interfaces/tokens.d.ts +0 -16
- package/shared/interfaces/ui-providers.interface.d.ts +0 -66
- package/shared/services/analytics.service.d.ts +0 -10
- package/shared/services/auth-process.service.d.ts +0 -197
- package/shared/services/crashlytics.service.d.ts +0 -11
- package/shared/services/device-info.service.d.ts +0 -3
- package/shared/services/firebase.service.d.ts +0 -16
- package/shared/services/firestore-sync.service.d.ts +0 -16
- package/shared/services/index.d.ts +0 -9
- package/shared/services/performance.service.d.ts +0 -12
- package/shared/services/remoteconfig.service.d.ts +0 -18
- package/shared/services/ui.service.d.ts +0 -22
- package/shared/shared.module.d.ts +0 -14
- package/shared/types/DisplayWidth.d.ts +0 -7
- package/shared/types/Location.d.ts +0 -8
- package/shared/types/ValueAccessorControlComponent.d.ts +0 -27
- package/shared/types/ValueAccessorValueComponent.d.ts +0 -19
- package/shared/types/index.d.ts +0 -4
- package/testing/fakeavatar.module.d.ts +0 -2
- package/testing/fakes/FakeAuthProcessService.d.ts +0 -28
- package/testing/fakes/FakeAvatarComponent.d.ts +0 -3
- package/testing/fakes/FakeFireService.d.ts +0 -20
- package/testing/fakes/FakeFirestoreSyncService.d.ts +0 -9
- package/testing/fakes/FakeIAPurchaseService.d.ts +0 -9
- package/testing/fakes/FakePickerService.d.ts +0 -6
- package/testing/fakes/FakeRemoteConfigService.d.ts +0 -19
- package/testing/fakes/FakeTranslateService.d.ts +0 -15
- package/testing/fakes/FakeUiService.d.ts +0 -25
- package/testing/fakes/angular-fire/FakeAngularFireAuth.d.ts +0 -52
- package/testing/fakes/angular-fire/FakeAngularFireFunctions.d.ts +0 -11
- package/testing/fakes/angular-fire/FakeAngularFirePerformance.d.ts +0 -10
- package/testing/fakes/angular-fire/FakeAngularFireStorage.d.ts +0 -5
- package/testing/fakes/angular-fire/FakeAngularFirestore.d.ts +0 -5
- package/testing/fakes/angular-fire/FakeUserCredential.d.ts +0 -9
- package/testing/fakes/index.d.ts +0 -16
- package/testing/ngx-firebase-testing.d.ts +0 -5
- package/testing/ngx-firebase-testing.metadata.json +0 -1
- package/testing/package.json +0 -29
- package/testing/public-api.d.ts +0 -4
- package/testing/test.module.d.ts +0 -4
- package/testing/utils/index.d.ts +0 -5
- package/testing/utils/patchConsole.d.ts +0 -4
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/ngx-firebase/ionic-auth-ui/src/components/email-confirmation/email-confirmation.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/animations/index.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/signin/signin.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/register/register.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/user/user.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/reauthenticate/reauthenticate.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/providers/providers.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/email-field/email-field.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/form-field/form-field.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/name-field/name-field.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/or-divider/or-divider.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/password-field/passwordValidatorFunctions.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/password-field/password-field.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/pages/register/register.page.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/pages/signin/signin.page.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/pages/user/user.page.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/pages/verifyemail/verifyemail.page.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/terms-field/terms-field.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/register-with-email/register-with-email.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/components/register-with-email-popover/register-with-email-popover.component.ts","../../../projects/ngx-firebase/ionic-auth-ui/src/ionic-auth-ui.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","length","push","__read","o","m","r","i","ar","error","EmailConfirmationComponent","aps","changeDetectorRef","navController","fire","ui","config","signOut","EventEmitter","verifyEmailContext","createTemplateContext","isLoading","ngOnChanges","changes","verifyEmailTemplate","currentValue","defaultTemplate","ngOnInit","continue","reloadUserInfo","_a","navigateBack","goBackURL","notifyError","error_1","sendNewVerificationEmail","markForCheck","toast","error_2","email","recordException","authUi","toastMessageOnAuthError","message","toString","duration","toastDefaultDurationMil","Component","args","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","AuthProcessService","ChangeDetectorRef","NavController","FirebaseService","UiService","Inject","forwardRef","MalSharedConfigToken","Input","Output","ViewChild","static","customAnimation","animation","style","opacity","transform","animate","params","delay","scale","x","z","NgxAuthFirebaseuiAnimations","trigger","transition","useAnimation","state","query","stagger","animateChild","optional","AuthUISignInComponent","alert","providers","AuthProvider","ALL","registrationEnabled","resetPasswordEnabled","tosUrl","privacyPolicyUrl","onSuccess","onSignInEmitter","onError","onErrorEmitter","onCreateAccountRequested","onResetPasswordRequested","signInForm","FormGroup","FormControl","Validators","required","password","authProviders","signIn","signInWith","EmailAndPassword","credentials","providerClick","provider","ngAfterViewInit","detectChanges","doPasswordReset","controls","invalid","errorAlert","resetPassword","encapsulation","ViewEncapsulation","None","animations","MalIonicAlertsService","AuthUIRegisterComponent","popover","showEmail","onRegisterEmitter","onLoginRequested","guestEnabled$","canSignInAsGuest$","destroy$","Subject","ngOnDestroy","complete","doCreateAccount","data","registerWith","displayName","name","skipTosCheck","logError","doRegisterAnonymously","ANONYMOUS","doRegisterWithEmailPopover","_this","registerWithEmailPopover_component","AuthUIRegisterWithEmailPopoverComponent","component","cssClass","onDidDismiss","resp","present","error_4","error_3","doProviderClick","PopoverController","AuthUIUserComponent","popoverController","_editMode$","BehaviorSubject","canEditAccount","allowAccountEdit","canLogout","allowAccountLogout","canDeleteAccount","allowAccountDelete","onSignOut","onSignOutEmitter","onAccountEdited","onUserUpdatedEmitter","onAccountDeleted","onUserDeletedEmitter","userPhotoUrl$","getUserPhotoUrl","user$","updateFormGroup","phoneNumber","pattern","PHONE_NUMBER_REGEX","defineProperty","val","asObservable","pipe","takeUntil","subscribe","currentUser","patchValue","markAsPristine","reset","editMode","editMode$","enable","disable","changeEditMode","dismiss","getTop","_b","save","dirty","updateUserInfo","undefined","all","navigateRoot","authGuardFallbackURL","deleteAccount","yesNoAlert","defaultToNo","interpolateParams","userName","user","deleteUser","code","FirebaseErrorCodes","requiresRecentLogin","_c","reauthenticate_component","AuthUIReauthenticateComponent","_d","_e","componentProps","providers$","reauthenticateProviders$","showPasswordProvider$","map","includes","showDivider$","reauthForm","doReauthenticateWithPassword","Error","reauthenicateWithProvider","Layout","displayProviders","google","Google","icon","apple","Apple","facebook","Facebook","twitter","Twitter","github","Github","microsoft","Microsoft","yahoo","Yahoo","AuthProvidersComponent","layout","ROW","displayProviders$","providerOrArray","supportedProviders","isArray","filter","item","switchMap","isProviderSupported","providerFilter","_item","index","catchError","of","AuthUIEmailFieldComponent","injector","cdRef","_super","control","ValueAccessorControlComponent","provide","NG_VALUE_ACCESSOR","useExisting","multi","NG_VALIDATORS","Injector","AuthUIFormFieldComponent","control$","errors$","statusChanges","startWith","errors","errorMessageFn","isValid$","valid","isDisabled$","disabled","flattenErrors","bind","translateParams","customErrors","errorPrefix","keys","key","default","errorMessage","AuthUINameFieldComponent","minLength","nameMinLength","maxLength","nameMaxLength","confirmPasswordValidator","parent","get","passwordConfirm","passwordConfirmationRequired","passwordsNotMatching","AuthUIPasswordFieldComponent","form","autocomplete","_forUpdate","isDisabled","propogateChange","propogateTouch","propogateValidationChange","setValidators","valueChanges","updateValueAndValidity","parentControl","NgControl","registerOnChange","fn","registerOnTouched","registerOnValidatorChange","writeValue","setDisabledState","validate","assign","forUpdate","passwordMaxLength","passwordMinLength","strengthErrors","minlength","maxlength","passwordRequireLowercase","test","requireLowercase","passwordRequireUppercase","requireUppercase","passwordRequireSpecial","requireSpecial","passwordRequireNumbers","requireNumbers","passwordStrength","AuthRegisterPage","activatedRoute","logoUrl","setScreenName","doSuccess","redirectUrl","snapshot","queryParamMap","console","log","doLoginRequested","queryParams","ActivatedRoute","AuthSignInPage","forOperation","addLogMessage","authGuardLoggedInURL","doCreateAccountRequested","AuthVerifyEmailPage","route","navCtrl","backgroundClass","verifyEmailBackground","emailVerified","doRetry","redirect","doResendVerification","AuthUITermsFieldComponent","termsForm","tos","privacyPolicy","requiredTrue","AuthUIRegisterWithEmailComponent","createAccountClick","registerForm","terms","emit","doCreateAccountClick","COMPONENTS","AuthUserPage","AuthUIOrDividerComponent","IONIC_AUTH_UI_ROUTER_CONFIG","path","pathMatch","redirectTo","NgModule","imports","MalSharedModule","MalIonicModule","IonicModule","CommonModule","TooltipsModule","HttpClientModule","FormsModule","ReactiveFormsModule","FlexLayoutModule","exports","arguments","concat","__spread","declarations","entryComponents"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {\n ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Inject, Input, OnChanges, OnInit, Output,\n SimpleChanges, TemplateRef, ViewChild\n} from '@angular/core';\nimport { NavController } from '@ionic/angular';\nimport { AuthProcessService, FirebaseService, MalSharedConfig, MalSharedConfigToken, UiService } from 'ngx-firebase';\n\ninterface VerifyEmailContext {\n email: string;\n goBackURL: string;\n}\n\n@Component({\n selector: 'mal-authui-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\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 = this.createTemplateContext();\n\n isLoading: boolean = false;\n\n @ViewChild('defaultVerifyEmail', { static: true }) defaultTemplate?: TemplateRef<any>;\n\n constructor(\n private aps: AuthProcessService,\n private changeDetectorRef: ChangeDetectorRef,\n private navController: NavController,\n private fire: FirebaseService,\n private ui: UiService,\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n ) {\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.aps.reloadUserInfo();\n await this.navController.navigateBack([this.goBackURL]);\n } catch (error) {\n this.notifyError(error);\n }\n }\n\n async sendNewVerificationEmail() {\n try {\n this.isLoading = true;\n this.changeDetectorRef.markForCheck();\n await this.aps.sendNewVerificationEmail();\n this.ui.toast('auth.emailConfirmation.onConfirmationSuccess');\n } catch (error) {\n this.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 };\n }\n\n private notifyError(error: any) {\n this.fire.recordException(error);\n if (this.config.authUi.toastMessageOnAuthError) {\n const message = error.toString() || 'Sorry, something went wrong. Please retry later.';\n this.ui.toast(message, { duration: this.config.authUi.toastDefaultDurationMil });\n }\n }\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 { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, forwardRef, Inject, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { AuthProcessService, AuthProvider, MalSharedConfig, MalSharedConfigToken } from 'ngx-firebase';\nimport { MalIonicAlertsService } from 'ngx-firebase/ionic';\nimport { Subscription } from 'rxjs';\nimport { NgxAuthFirebaseuiAnimations } from '../../animations';\n\n@Component({\n selector: 'mal-authui-signin',\n templateUrl: './signin.component.html',\n styleUrls: ['../../ionic-auth-ui.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: NgxAuthFirebaseuiAnimations\n})\nexport class AuthUISignInComponent implements AfterViewInit {\n\n @Input() providers: string[] | string = AuthProvider.ALL; // google, facebook, twitter, github as array or all as one single string\n @Input() registrationEnabled = true;\n @Input() resetPasswordEnabled = true;\n @Input() tosUrl: string = '';\n @Input() privacyPolicyUrl: string = '';\n\n // Events\n // tslint:disable no-output-on-prefix\n @Output() onSuccess: any = this.aps.onSignInEmitter;\n @Output() onError?: any = this.aps.onErrorEmitter;\n @Output() onCreateAccountRequested: EventEmitter<void> = new EventEmitter<void>();\n @Output() onResetPasswordRequested: EventEmitter<void> = new EventEmitter<void>();\n // tslint:enable no-output-on-prefix\n\n signInForm: FormGroup = new FormGroup({\n email: new FormControl('', [Validators.required]),\n password: new FormControl('', [Validators.required])\n });\n\n authProviders = AuthProvider;\n onErrorSubscription?: Subscription;\n\n constructor(\n // tslint:disable-next-line @typescript-eslint/ban-types\n public aps: AuthProcessService,\n private alert: MalIonicAlertsService,\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n ) { }\n\n async signIn() {\n try {\n this.changeDetectorRef.markForCheck();\n await this.aps.signInWith(AuthProvider.EmailAndPassword, {\n credentials: {\n email: this.signInForm.value.email,\n password: this.signInForm.value.password\n }\n });\n } finally {\n this.changeDetectorRef.markForCheck();\n }\n }\n\n providerClick(provider: AuthProvider) {\n this.aps.signInWith(provider);\n }\n\n ngAfterViewInit() {\n this.changeDetectorRef.detectChanges();\n }\n\n async doPasswordReset() {\n if (this.signInForm.controls.email.invalid) {\n await this.alert.errorAlert('auth.resetPassword.errors.pattern');\n } else {\n await this.aps.resetPassword(this.signInForm.value.email);\n }\n }\n\n}\n","// Angular & Inionc\nimport {\n AfterViewInit, ChangeDetectorRef, Component, EventEmitter, forwardRef, Inject, Input, OnDestroy, OnInit,\n Output, ViewEncapsulation\n} from '@angular/core';\n\n// RxJS\nimport { Observable, Subject } from 'rxjs';\n\n// Mal\nimport { NgxAuthFirebaseuiAnimations } from '../../animations';\nimport { AuthProcessService, AuthProvider, UiService, MalSharedConfig, MalSharedConfigToken } from 'ngx-firebase';\nimport { CreateAccountFormData } from '../register-with-email/register-with-email.component';\nimport { PopoverController } from '@ionic/angular';\n\nfunction isCreateAccountFormData(x: any): x is CreateAccountFormData {\n return x && x.email && x.password;\n}\n\n@Component({\n selector: 'mal-authui-register',\n templateUrl: './register.component.html',\n styleUrls: ['../../ionic-auth-ui.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: NgxAuthFirebaseuiAnimations\n})\nexport class AuthUIRegisterComponent implements OnDestroy, AfterViewInit {\n\n @Input() showEmail: 'inline' | 'popover' | 'none' = 'popover';\n @Input() providers: string[] | string = AuthProvider.ALL; // google, facebook, twitter, github as array or all as one single string\n\n // Events\n // tslint:disable no-output-on-prefix\n @Output() onSuccess: EventEmitter<any> = this.aps.onRegisterEmitter;\n @Output() onError: EventEmitter<any> = this.aps.onErrorEmitter;\n @Output() onLoginRequested: EventEmitter<void> = new EventEmitter<void>();\n // tslint:enable no-output-on-prefix\n\n // Prevent somebody already logged in as guest - relogging in as gyest\n guestEnabled$: Observable<boolean> = this.aps.canSignInAsGuest$;\n\n // Private\n private destroy$: Subject<void> = new Subject<void>();\n\n // tslint:disable-next-line @typescript-eslint/ban-types\n constructor(\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n public aps: AuthProcessService,\n private ui: UiService,\n private popover: PopoverController,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n }\n\n ngAfterViewInit() {\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async doCreateAccount(data: CreateAccountFormData): Promise<void> {\n try {\n this.changeDetectorRef.markForCheck();\n await this.aps.registerWith(\n AuthProvider.EmailAndPassword,\n {\n credentials: {\n email: data.email,\n password: data.password\n },\n displayName: data.name,\n skipTosCheck: true\n }\n );\n } catch (error) {\n this.ui.logError(error);\n } finally {\n this.changeDetectorRef.markForCheck();\n }\n }\n\n async doRegisterAnonymously() {\n try {\n this.changeDetectorRef.markForCheck();\n await this.aps.signInWith(AuthProvider.ANONYMOUS);\n } catch (error) {\n this.ui.logError(error);\n } finally {\n this.changeDetectorRef.markForCheck();\n }\n }\n\n async doRegisterWithEmailPopover() {\n try {\n const data = await new Promise<CreateAccountFormData | null>(\n async (resolve, reject) => {\n try {\n const { AuthUIRegisterWithEmailPopoverComponent } = await import('../register-with-email-popover/register-with-email-popover.component');\n const popover = await this.popover.create({\n component: AuthUIRegisterWithEmailPopoverComponent,\n cssClass: ['wide-popover', 'dark-backdrop']\n })\n popover.onDidDismiss().then((resp: any) => {\n if (isCreateAccountFormData(resp?.data)) {\n resolve(resp.data);\n } else {\n resolve(null);\n }\n });\n await popover.present();\n } catch (error) {\n this.ui.logError(error);\n reject(error);\n }\n }\n );\n if (data) {\n await this.doCreateAccount(data);\n }\n } catch (error) {\n this.ui.logError(error);\n }\n }\n\n doProviderClick(provider: AuthProvider) {\n try {\n this.aps.registerWith(provider);\n } catch (error) {\n this.ui.logError(error);\n }\n }\n\n}\n","import { Component, EventEmitter, forwardRef, Inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { AuthProcessService, MalSharedConfigToken, MalSharedConfig, FirebaseErrorCodes, PHONE_NUMBER_REGEX, FirebaseService, UiService } from 'ngx-firebase';\nimport { takeUntil } from 'rxjs/operators';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { NavController, PopoverController } from '@ionic/angular';\nimport { UserInfo, User } from '@firebase/auth-types';\n\n@Component({\n selector: 'mal-authui-user',\n templateUrl: './user.component.html',\n styleUrls: ['./user.component.scss', '../../ionic-auth-ui.scss']\n})\nexport class AuthUIUserComponent implements OnInit, OnDestroy {\n\n @Input()\n get editMode(): boolean { return this._editMode$.value; }\n set editMode(val: boolean) { this._editMode$.next(val); }\n get editMode$(): Observable<boolean> { return this._editMode$.asObservable(); }\n private _editMode$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n canEditAccount = this.config.authUi.allowAccountEdit;\n canLogout = this.config.authUi.allowAccountLogout;\n canDeleteAccount = this.config.authUi.allowAccountDelete;\n\n // tslint:disable no-output-on-prefix\n @Output() onSignOut: EventEmitter<void> = this.aps.onSignOutEmitter;\n @Output() onAccountEdited: EventEmitter<UserInfo> = this.aps.onUserUpdatedEmitter;\n @Output() onAccountDeleted: EventEmitter<void> = this.aps.onUserDeletedEmitter;\n // tslint:enable no-output-on-prefix\n\n private destroy$: Subject<void> = new Subject<void>();\n\n userPhotoUrl$: Observable<string | null> = this.aps.getUserPhotoUrl();\n user$: Observable<User | null> = this.aps.user$;\n\n public readonly updateFormGroup: FormGroup = new FormGroup({\n name: new FormControl('', [Validators.required]),\n email: new FormControl('', [Validators.required]),\n phoneNumber: new FormControl('', [Validators.pattern(PHONE_NUMBER_REGEX)])\n });\n\n constructor(\n public aps: AuthProcessService,\n private ui: UiService,\n private navController: NavController,\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n private popoverController: PopoverController,\n private fire: FirebaseService\n ) {\n }\n ngOnInit() {\n this.aps.user$\n .pipe(takeUntil(this.destroy$))\n .subscribe(currentUser => {\n if (currentUser) {\n this.updateFormGroup.patchValue({\n name: currentUser.displayName,\n email: currentUser.email,\n phoneNumber: currentUser.phoneNumber\n });\n this.updateFormGroup.markAsPristine();\n } else {\n this.updateFormGroup.reset();\n this.editMode = false;\n }\n });\n\n this.editMode$\n .pipe(takeUntil(this.destroy$))\n .subscribe(editMode => {\n if (editMode) {\n this.updateFormGroup.enable();\n } else {\n this.updateFormGroup.disable();\n }\n });\n\n this.editMode = false;\n this.updateFormGroup.disable();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n changeEditMode() {\n this.editMode = !this.editMode;\n }\n\n async dismiss() {\n if (this.popoverController.getTop() !== null) {\n await this.popoverController.dismiss();\n }\n }\n\n async save() {\n if (this.updateFormGroup.dirty) {\n\n try {\n await this.aps.updateUserInfo({\n displayName: (this.updateFormGroup.controls.name.dirty) ? this.updateFormGroup.controls.name.value : undefined,\n email: (this.updateFormGroup.controls.email.dirty) ? this.updateFormGroup.controls.email.value : undefined,\n phoneNumber: (this.updateFormGroup.controls.phoneNumber.dirty) ? this.updateFormGroup.controls.phoneNumber.value : undefined,\n });\n } catch (error) {\n this.fire.recordException(error);\n this.ui.toast(error && error.message ? error.message : error);\n }\n\n await this.dismiss();\n\n } else {\n this.editMode = false;\n }\n }\n\n async signOut() {\n try {\n await Promise.all([\n this.aps.signOut(),\n this.dismiss(),\n this.navController.navigateRoot(this.config.authUi.authGuardFallbackURL)\n ]);\n } catch (error) {\n this.fire.recordException(error);\n }\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 * If the operation fails due to not having current enough signIn, redrect to reSignInUrl, providing forOperation=deleteUser\n *\n */\n async deleteAccount() {\n try {\n if (await this.ui.yesNoAlert(\n 'auth.user.message.confirmDelete',\n { defaultToNo: true, interpolateParams: { userName: this.aps.user?.displayName } })\n ) {\n await this.aps.deleteUser();\n await Promise.all([\n this.dismiss(),\n this.ui.toast('auth.user.message.acountDeleted'),\n this.navController.navigateRoot(this.config.authUi.authGuardFallbackURL)\n ]);\n }\n } catch (error) {\n\n if (error.code === FirebaseErrorCodes.requiresRecentLogin) {\n // If we've failed due to lack of current credentials ask the user to reauthenticate and try again.\n await new Promise<void>(async (resolve, reject) => {\n const popover = await this.popoverController.create({\n component: await import('../reauthenticate/reauthenticate.component').then(m => m.AuthUIReauthenticateComponent),\n componentProps: {\n message: error.message\n },\n cssClass: 'wide-popover'\n });\n popover.onDidDismiss().then(async () => {\n try {\n await this.aps.deleteUser();\n await Promise.all([\n this.dismiss(),\n this.ui.toast('auth.user.message.acountDeleted'),\n this.navController.navigateRoot(this.config.authUi.authGuardFallbackURL)\n ]);\n } catch (error) {\n await this.ui.toast('auth.user.message.acountDeleted', { interpolateParams: { error: error.message } });\n }\n resolve();\n });\n await popover.present();\n });\n\n } else {\n this.fire.recordException(error);\n await this.ui.toast('auth.user.message.acountDeleted', { interpolateParams: { error: error.message } });\n }\n }\n }\n\n}\n\n","import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { PopoverController } from '@ionic/angular';\nimport { AuthProcessService, AuthProvider, UiService } from 'ngx-firebase';\nimport { map } from 'rxjs/operators';\nimport { NgxAuthFirebaseuiAnimations } from '../../animations';\n\n@Component({\n selector: 'mal-authui-reauthenticate',\n templateUrl: './reauthenticate.component.html',\n styleUrls: ['../../ionic-auth-ui.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: NgxAuthFirebaseuiAnimations\n})\nexport class AuthUIReauthenticateComponent implements AfterViewInit {\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() registrationEnabled = true;\n @Input() resetPasswordEnabled = true;\n @Input() tosUrl: string = '';\n @Input() privacyPolicyUrl: string = '';\n\n // Events\n // tslint:disable no-output-on-prefix\n @Output() onSuccess: any = this.aps.onSignInEmitter;\n @Output() onError: any = this.aps.onErrorEmitter;\n @Output() onCreateAccountRequested: EventEmitter<void> = new EventEmitter<void>();\n @Output() onResetPasswordRequested: EventEmitter<void> = new EventEmitter<void>();\n // tslint:enable no-output-on-prefix\n\n readonly providers$ = this.aps.reauthenticateProviders$;\n readonly showPasswordProvider$ = this.providers$.pipe(map(providers => providers.includes(AuthProvider.EmailAndPassword)));\n readonly showDivider$ = this.providers$.pipe(map(providers => providers.length > 1 && providers.includes(AuthProvider.EmailAndPassword)));\n\n public message: string = '';\n\n public readonly reauthForm: FormGroup = new FormGroup({\n password: new FormControl(null, [Validators.required])\n });\n\n constructor(\n // tslint:disable-next-line @typescript-eslint/ban-types\n public aps: AuthProcessService,\n private ui: UiService,\n private changeDetectorRef: ChangeDetectorRef,\n private popoverController: PopoverController\n ) { }\n\n ngAfterViewInit() {\n this.changeDetectorRef.detectChanges();\n }\n\n async dismiss() {\n if (this.popoverController.getTop() !== null) {\n await this.popoverController.dismiss();\n }\n }\n\n async doReauthenticateWithPassword() {\n try {\n if (!this.aps.user?.email || !this.reauthForm.value.password) {\n throw new Error('Trying to reauth with email/password when not valid');\n }\n await this.aps.reauthenicateWithProvider(\n AuthProvider.EmailAndPassword, { credentials: { email: this.aps.user.email, password: this.reauthForm.value.password } }\n );\n } catch (error) {\n this.ui.logError(error);\n } finally {\n await this.dismiss();\n }\n }\n\n doProviderClick(provider: AuthProvider) {\n try {\n this.aps.reauthenicateWithProvider(provider);\n } catch (error) {\n this.ui.logError(error);\n }\n }\n\n}\n","import { Component, Input, Output, EventEmitter, Inject, forwardRef } from '@angular/core';\nimport { AuthProcessService, AuthProvider, MalSharedConfigToken, MalSharedConfig, UiService } from 'ngx-firebase';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { NgxAuthFirebaseuiAnimations } from '../../animations';\n\nexport enum Layout {\n ROW = 'row',\n COLUMN = 'column'\n}\n\nexport interface DisplayProvider {\n name: AuthProvider;\n icon?: string;\n label: string;\n}\nconst displayProviders: { [key: string]: DisplayProvider } = {\n google: { name: AuthProvider.Google, icon: 'logo-google', label: 'Google' },\n apple: { name: AuthProvider.Apple, icon: 'logo-apple', label: 'Apple' },\n facebook: { name: AuthProvider.Facebook, icon: 'logo-facebook', label: 'Facebook' },\n twitter: { name: AuthProvider.Twitter, icon: 'logo-twitter', label: 'Twitter' },\n github: { name: AuthProvider.Github, icon: 'logo-github', label: 'GitHub' },\n microsoft: { name: AuthProvider.Microsoft, label: 'Microsoft' },\n yahoo: { name: AuthProvider.Yahoo, icon: 'logo-yahoo', label: 'Yahoo' }\n};\n\ndeclare type ProviderType = AuthProvider[] | AuthProvider;\n\n@Component({\n selector: 'mal-authui-providers',\n templateUrl: 'providers.component.html',\n styleUrls: ['providers.component.scss', '../../ionic-auth-ui.scss'],\n animations: NgxAuthFirebaseuiAnimations\n})\nexport class AuthProvidersComponent {\n\n @Input() layout: string = Layout.ROW;\n\n @Input()\n get providers(): ProviderType | AuthProvider.ALL { return this.providers$.value; }\n set providers(val: ProviderType | AuthProvider.ALL) { this.providers$.next(val); }\n private providers$: BehaviorSubject<ProviderType | AuthProvider.ALL> = new BehaviorSubject<ProviderType>(AuthProvider.ALL);\n\n @Output() providerClick: EventEmitter<AuthProvider> = new EventEmitter<AuthProvider>();\n\n readonly displayProviders$: Observable<DisplayProvider[]> = this.providers$.pipe(\n // Filter for those in config\n map(providerOrArray => {\n if (providerOrArray === AuthProvider.ALL) {\n providerOrArray = this.config.authUi.supportedProviders;\n }\n const providers = Array.isArray(providerOrArray) ? providerOrArray : [providerOrArray];\n return providers.filter(item => this.providers === AuthProvider.ALL || this.providers.includes(item));\n }),\n // Filter for those valid on platform\n switchMap(async providers => {\n const providerFilter = await Promise.all(providers.map(item => this.aps.isProviderSupported(item)));\n return providers.filter((_item, index) => providerFilter[index]);\n }),\n // Map to display type\n map(providers => providers.map(item => displayProviders[item])),\n catchError(error => {\n this.ui.logError(error);\n return of([]);\n })\n );\n\n constructor(\n public aps: AuthProcessService,\n public ui: UiService,\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig\n ) {\n }\n\n}\n","import { ChangeDetectorRef, Component, forwardRef, Injector } from '@angular/core';\nimport { FormControl, NG_VALUE_ACCESSOR, Validators, NG_VALIDATORS } from '@angular/forms';\nimport { ValueAccessorControlComponent } from 'ngx-firebase';\n\n@Component({\n selector: 'mal-authui-email-field',\n templateUrl: 'email-field.component.html',\n styleUrls: ['../../ionic-auth-ui.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AuthUIEmailFieldComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: AuthUIEmailFieldComponent, multi: true }]\n})\nexport class AuthUIEmailFieldComponent extends ValueAccessorControlComponent<string> {\n\n public control: FormControl = new FormControl('', [Validators.email]);\n\n constructor(\n injector: Injector,\n cdRef: ChangeDetectorRef\n ) {\n super(injector, cdRef);\n }\n\n}\n","import { Component, Input } from '@angular/core';\nimport { FormControl, NgControl, ValidationErrors } from '@angular/forms';\nimport { UiService } from 'ngx-firebase';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { catchError, map, startWith, switchMap } from 'rxjs/operators';\n\ntype ControlType = NgControl | FormControl | undefined | null;\n\n@Component({\n selector: 'mal-authui-form-field',\n templateUrl: 'form-field.component.html',\n styleUrls: ['form-field.component.scss', '../../ionic-auth-ui.scss']\n})\nexport class AuthUIFormFieldComponent {\n\n @Input() label: string = '';\n\n @Input()\n get control(): ControlType { return this.control$.value; }\n set control(val: ControlType) { this.control$.next(val); }\n private control$: BehaviorSubject<ControlType> = new BehaviorSubject<ControlType>(undefined);\n\n public errors$: Observable<string[]> = this.control$.pipe(\n switchMap(control => (control && control.statusChanges)\n ? control.statusChanges.pipe(startWith(control.errors), map(_ => this.errorMessageFn(control.errors)))\n : of([])\n ),\n catchError(error => {\n this.ui.logError(error);\n return of([error.message]);\n })\n );\n\n public readonly isValid$: Observable<boolean> = this.control$.pipe(\n switchMap(control => (control && control.statusChanges)\n ? control.statusChanges.pipe(startWith(control.valid), map(() => control.valid || false))\n : of(true)\n )\n );\n\n public readonly isDisabled$: Observable<boolean> = this.control$.pipe(\n switchMap(control => (control && control.statusChanges)\n ? control.statusChanges.pipe(startWith(control.disabled), map(() => control.disabled || false))\n : of(true)\n )\n );\n\n @Input() errorMessage?: string;\n @Input() errorMessageFn: (errors: ValidationErrors | null) => string[] = this.flattenErrors.bind(this);\n @Input() errorPrefix?: string;\n @Input() customErrors?: { [index: string]: string };\n @Input() translateParams: { [key: string]: string } = {};\n @Input() icon?: string;\n @Input() hintEnd?: string;\n\n constructor(\n private ui: UiService\n ) { }\n\n private flattenErrors(errors: ValidationErrors | null): string[] {\n if (errors) {\n if (this.customErrors || this.errorPrefix) {\n return Object.keys(errors)\n .map(key => {\n if (this.customErrors) {\n if (undefined !== this.customErrors[key]) {\n return this.customErrors[key];\n } else if (undefined !== this.customErrors.default) {\n return this.customErrors.default;\n } else {\n return '';\n }\n } else if (this.errorPrefix) {\n return `${this.errorPrefix}.${key}`;\n }\n })\n .filter(item => !!item) as string[] || [];\n } else if (this.errorMessage) {\n return [this.errorMessage];\n } else {\n return [];\n }\n } else {\n return [];\n }\n }\n\n}\n","import { AfterViewInit, ChangeDetectorRef, Component, forwardRef, Inject, Injector, OnDestroy } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators, NG_VALIDATORS, Validator } from '@angular/forms';\nimport { MalSharedConfigToken, MalSharedConfig, ValueAccessorControlComponent } from 'ngx-firebase';\n\n@Component({\n selector: 'mal-authui-name-field',\n templateUrl: 'name-field.component.html',\n styleUrls: ['../../ionic-auth-ui.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AuthUINameFieldComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: AuthUINameFieldComponent, multi: true }]\n})\nexport class AuthUINameFieldComponent extends ValueAccessorControlComponent<string>\n implements ControlValueAccessor, Validator, OnDestroy, AfterViewInit {\n\n public control: FormControl = new FormControl('', [\n Validators.minLength(this.config.authUi.nameMinLength),\n Validators.maxLength(this.config.authUi.nameMaxLength)\n ]);\n\n constructor(\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n injector: Injector,\n cdRef: ChangeDetectorRef\n ) {\n super(injector, cdRef);\n }\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mal-authui-or-divider',\n templateUrl: 'or-divider.component.html',\n styleUrls: ['or-divider.component.scss', '../../ionic-auth-ui.scss']\n})\nexport class AuthUIOrDividerComponent {\n\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { MalAuthUIConfig } from 'ngx-firebase';\n\nexport function passwordStrengthValidator(config: MalAuthUIConfig): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n let strengthErrors: ValidationErrors | null = null;\n if (control.value) {\n if (config.passwordMinLength && control.value.length < config.passwordMinLength) {\n return { minlength: true };\n }\n if (config.passwordMaxLength && control.value.length > config.passwordMaxLength) {\n return { maxlength: true };\n }\n if (config.passwordRequireLowercase && (!/[a-z]/.test(control.value))) {\n if (!strengthErrors) { strengthErrors = {}; }\n strengthErrors.requireLowercase = true;\n }\n if (config.passwordRequireUppercase && (!/[A-Z]/.test(control.value))) {\n if (!strengthErrors) { strengthErrors = {}; }\n strengthErrors.requireUppercase = true;\n }\n if (config.passwordRequireSpecial && (!/[!@#\\$%\\^&]/.test(control.value))) {\n if (!strengthErrors) { strengthErrors = {}; }\n strengthErrors.requireSpecial = true;\n }\n if (config.passwordRequireNumbers && (!/[0-9]/.test(control.value))) {\n if (!strengthErrors) { strengthErrors = {}; }\n strengthErrors.requireNumbers = true;\n }\n if (strengthErrors) {\n return { passwordStrength: strengthErrors };\n }\n }\n return null;\n };\n}\n\nexport function confirmPasswordValidator(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 (!password.value && !passwordConfirm.value) {\n return null;\n }\n\n if (password.value === passwordConfirm.value) {\n return null;\n }\n\n if (password.value && !passwordConfirm.value) {\n return { passwordConfirmationRequired: true };\n }\n\n return { passwordsNotMatching: true };\n}\n","import { AfterViewInit, ChangeDetectorRef, Component, forwardRef, Inject, Injector, Input, OnDestroy } from '@angular/core';\nimport {\n AbstractControl, ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, Validators,\n FormGroup, NG_VALIDATORS, Validator, ValidationErrors, NgControl\n} from '@angular/forms';\nimport { UiService, MalSharedConfig, MalSharedConfigToken } from 'ngx-firebase';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { confirmPasswordValidator, passwordStrengthValidator } from './passwordValidatorFunctions';\n\ntype ValueType = string | undefined;\n\n@Component({\n selector: 'mal-authui-password-field',\n templateUrl: 'password-field.component.html',\n styleUrls: ['../../ionic-auth-ui.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AuthUIPasswordFieldComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: AuthUIPasswordFieldComponent, multi: true }]\n})\nexport class AuthUIPasswordFieldComponent implements ControlValueAccessor, Validator, OnDestroy, AfterViewInit {\n\n // Validators are added by set validators function\n public form: FormGroup = new FormGroup({\n password: new FormControl('', []),\n passwordConfirm: new FormControl('', [])\n });\n\n public autocomplete: string = 'current-password';\n\n @Input()\n set forUpdate(val: boolean) {\n this._forUpdate = val;\n this.setValidators();\n if (val) {\n this.autocomplete = 'new-password';\n } else {\n this.autocomplete = 'current-password';\n }\n }\n get forUpdate(): boolean {\n return this._forUpdate;\n }\n private _forUpdate: boolean = false;\n\n @Input()\n set value(val: ValueType) {\n if (val) {\n this.form.patchValue({\n password: val,\n passwordConfirm: val\n });\n } else {\n this.form.reset();\n }\n }\n get value(): ValueType {\n return this.form.controls.password.value;\n }\n\n public isDisabled: boolean = false;\n public parentControl?: NgControl | null;\n\n private destroy$: Subject<void> = new Subject<void>();\n\n propogateChange = (val: ValueType) => { };\n propogateTouch = () => { };\n propogateValidationChange = () => { };\n\n constructor(\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n private injector: Injector,\n private cdRef: ChangeDetectorRef,\n private ui: UiService\n ) {\n this.setValidators();\n this.form.controls.password.valueChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(val => {\n try {\n this.form.controls.passwordConfirm.updateValueAndValidity();\n this.propogateChange(val);\n } catch (error) {\n this.ui.logError(error);\n }\n });\n this.form.statusChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(_ => {\n try {\n this.propogateValidationChange()\n } catch (error) {\n this.ui.logError(error);\n }\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n ngAfterViewInit() {\n this.parentControl = this.injector.get(NgControl, null);\n this.setValidators();\n this.cdRef.detectChanges();\n }\n\n // Form Accessor functions\n registerOnChange(fn: any) { this.propogateChange = fn; }\n registerOnTouched(fn: any) { this.propogateTouch = fn; }\n registerOnValidatorChange?(fn: () => void) { this.propogateValidationChange = fn; }\n writeValue(val: ValueType) { this.value = val; }\n setDisabledState(isDisabled: boolean) { this.isDisabled = isDisabled; }\n validate(control: AbstractControl): ValidationErrors | null {\n if (this.form.controls.password.errors || this.form.controls.passwordConfirm.errors) {\n return Object.assign(this.form.controls.password.errors || {}, this.form.controls.passwordConfirm.errors || {});\n } else {\n return null;\n }\n }\n\n private setValidators() {\n if (this.forUpdate) {\n this.form.controls.password.setValidators([\n Validators.maxLength(this.config.authUi.passwordMaxLength),\n Validators.minLength(this.config.authUi.passwordMinLength),\n passwordStrengthValidator(this.config.authUi)\n ]);\n this.form.controls.passwordConfirm.setValidators([\n confirmPasswordValidator\n ]);\n } else {\n this.form.controls.password.setValidators([]);\n this.form.controls.passwordConfirm.setValidators([]);\n }\n this.form.controls.password.updateValueAndValidity();\n this.form.controls.passwordConfirm.updateValueAndValidity();\n }\n\n}\n","import { Component, forwardRef, Inject, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NavController } from '@ionic/angular';\r\nimport { UiService, FirebaseService, MalSharedConfig, MalSharedConfigToken } from 'ngx-firebase';\r\nimport { NgxAuthFirebaseuiAnimations } from '../../animations';\r\n\r\n@Component({\r\n templateUrl: 'register.page.html',\r\n styleUrls: ['../../ionic-auth-ui.scss'],\r\n animations: NgxAuthFirebaseuiAnimations\r\n})\r\nexport class AuthRegisterPage implements OnInit {\r\n\r\n readonly logoUrl?: string = this.config.authUi.logoUrl;\r\n\r\n constructor(\r\n private ui: UiService,\r\n private fire: FirebaseService,\r\n private activatedRoute: ActivatedRoute,\r\n private navController: NavController,\r\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.fire.setScreenName('register', 'AuthRegisterPage');\r\n }\r\n\r\n doSuccess() {\r\n try {\r\n const redirectUrl = this.activatedRoute.snapshot.queryParamMap.get('redirectUrl');\r\n if (redirectUrl) {\r\n console.log('Redirecting logged in user to>', redirectUrl);\r\n this.navController.navigateRoot(redirectUrl);\r\n } else {\r\n this.navController.navigateRoot(['/']);\r\n }\r\n } catch (error) {\r\n this.ui.logError(error);\r\n }\r\n }\r\n\r\n doLoginRequested() {\r\n try {\r\n this.navController.navigateRoot(['/auth', 'signin'], { queryParams: { redirectUrl: this.activatedRoute.snapshot.queryParamMap.get('redirectUrl') } });\r\n } catch (error) {\r\n this.ui.logError(error);\r\n }\r\n }\r\n\r\n}\r\n","import { Component, forwardRef, Inject, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NavController } from '@ionic/angular';\r\nimport { NgxAuthFirebaseuiAnimations } from '../../animations';\r\nimport { AuthProcessService, MalSharedConfigToken, MalSharedConfig, UiService, FirebaseService } from 'ngx-firebase';\r\n\r\nexport interface SocialProvider {\r\n name: string;\r\n label: string;\r\n loginFn: () => Promise<void>;\r\n}\r\n\r\n@Component({\r\n templateUrl: 'signin.page.html',\r\n styleUrls: ['../../ionic-auth-ui.scss'],\r\n animations: NgxAuthFirebaseuiAnimations\r\n})\r\nexport class AuthSignInPage implements OnInit {\r\n\r\n readonly logoUrl?: string = this.config.authUi.logoUrl;\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private aps: AuthProcessService,\r\n private navController: NavController,\r\n private ui: UiService,\r\n private fire: FirebaseService,\r\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.fire.setScreenName('signin', 'AuthSignInPage');\r\n }\r\n\r\n async doSuccess(e: any) {\r\n\r\n const redirectUrl = this.activatedRoute.snapshot.queryParamMap.get('redirectUrl');\r\n const forOperation = this.activatedRoute.snapshot.queryParamMap.get('forOperation');\r\n\r\n if (redirectUrl) {\r\n // Ridirect to page on SignIn\r\n this.fire.addLogMessage(`Redirecting logged in user to> ${redirectUrl}`);\r\n await this.navController.navigateRoot(redirectUrl);\r\n\r\n } else {\r\n try {\r\n switch (forOperation) {\r\n\r\n case 'deleteUser':\r\n if (await this.ui.yesNoAlert(\r\n 'auth.user.message.confirmDelete',\r\n { interpolateParams: { userName: this.aps.user?.displayName } })\r\n ) {\r\n await this.aps.deleteUser();\r\n }\r\n break;\r\n\r\n case undefined:\r\n case null:\r\n break;\r\n\r\n default:\r\n throw new Error(`Unknown forOperation: ${forOperation}`);\r\n\r\n }\r\n } catch (error) {\r\n this.ui.logError(error);\r\n } finally {\r\n await this.navController.navigateRoot(this.config.authUi.authGuardLoggedInURL);\r\n }\r\n }\r\n }\r\n\r\n doCreateAccountRequested() {\r\n try {\r\n return this.navController.navigateRoot(\r\n ['/auth', 'register'],\r\n { queryParams: { redirectUrl: this.activatedRoute.snapshot.queryParamMap.get('redirectUrl') } }\r\n );\r\n } catch (error) {\r\n this.ui.logError(error);\r\n }\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: 'user.page.html'\r\n})\r\nexport class AuthUserPage {\r\n\r\n constructor(\r\n ) { }\r\n\r\n}\r\n","// Angular\nimport { Component, forwardRef, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { NavController } from '@ionic/angular';\n\n// Mal\nimport { AuthProcessService, MalSharedConfig, MalSharedConfigToken, UiService, FirebaseService } from 'ngx-firebase';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n templateUrl: 'verifyemail.page.html',\n styleUrls: ['../../ionic-auth-ui.scss']\n})\nexport class AuthVerifyEmailPage implements OnInit, OnDestroy {\n\n readonly backgroundClass = this.config?.authUi.verifyEmailBackground || '';\n\n private destroy$: Subject<void> = new Subject<void>();\n\n constructor(\n private ui: UiService,\n private fire: FirebaseService,\n private aps: AuthProcessService,\n private route: ActivatedRoute,\n private navCtrl: NavController,\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n ) { }\n\n ngOnInit() {\n this.fire.setScreenName('verifyemail', 'VerifyEmailPage');\n\n this.aps.user$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(user => {\n try {\n if (user && user.emailVerified) {\n this.doRetry();\n }\n } catch (error) {\n this.ui.logError(error);\n }\n });\n\n this.aps.onSignOutEmitter.pipe(\n takeUntil(this.destroy$)\n ).subscribe(() => {\n try {\n this.navCtrl.navigateRoot(this.config.authUi.authGuardFallbackURL || '/');\n } catch (error) {\n this.ui.logError(error);\n }\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async doRetry() {\n try {\n await this.aps.reloadUserInfo();\n const redirect = this.route.snapshot.queryParamMap.get('redirectUrl');\n this.navCtrl.navigateRoot(redirect);\n } catch (error) {\n this.ui.logError(error);\n }\n }\n\n async doResendVerification() {\n try {\n await this.aps.sendNewVerificationEmail();\n await this.ui.toast('auth.emailConfirmation.onConfirmationSuccess');\n } catch (error) {\n this.ui.logError(error);\n }\n }\n\n}\n","// Angular & Inionc\nimport { Component, forwardRef, Inject, Input, OnDestroy, OnInit, } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, FormControl, FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, Validators } from '@angular/forms';\n\n// RxJS\nimport { Subject } from 'rxjs';\n\n// Mal\nimport { AuthProcessService, UiService, MalSharedConfig, MalSharedConfigToken } from 'ngx-firebase';\nimport { takeUntil } from 'rxjs/operators';\n\ntype ValueType = boolean | undefined;\n@Component({\n selector: 'mal-authui-terms-field',\n templateUrl: './terms-field.component.html',\n styleUrls: ['../../ionic-auth-ui.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => AuthUITermsFieldComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: AuthUITermsFieldComponent, multi: true }\n ]\n})\nexport class AuthUITermsFieldComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n\n termsForm: FormGroup = new FormGroup({\n tos: new FormControl(true, []),\n privacyPolicy: new FormControl(true, [])\n });\n\n // Config\n tosUrl = this.config.authUi.tosUrl;\n privacyPolicyUrl = this.config.authUi.privacyPolicyUrl;\n\n // Private\n private destroy$: Subject<void> = new Subject<void>();\n\n @Input()\n set value(val: ValueType) {\n if (val) {\n this.termsForm.patchValue({\n tos: val,\n privacyPolicy: val\n });\n } else {\n this.termsForm.reset();\n }\n }\n get value(): ValueType {\n return this.termsForm.controls.tos.value && this.termsForm.controls.privacyPolicy.value;\n }\n\n propogateChange = (val: ValueType) => { };\n propogateTouch = () => { };\n propogateValidationChange = () => { };\n\n // tslint:disable-next-line @typescript-eslint/ban-types\n constructor(\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n public aps: AuthProcessService,\n private ui: UiService,\n ) {\n this.termsForm.statusChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(_ => {\n try {\n this.propogateValidationChange()\n } catch (error) {\n this.ui.logError(error);\n }\n });\n }\n\n // Form Accessor functions\n registerOnChange(fn: any) { this.propogateChange = fn; }\n registerOnTouched(fn: any) { this.propogateTouch = fn; }\n registerOnValidatorChange?(fn: () => void) { this.propogateValidationChange = fn; }\n writeValue(val: ValueType) { this.value = val; }\n validate(control: AbstractControl): ValidationErrors | null {\n if (this.termsForm.controls.tos.errors || this.termsForm.controls.privacyPolicy.errors) {\n return Object.assign(this.termsForm.controls.tos.errors || {}, this.termsForm.controls.privacyPolicy.errors || {});\n } else {\n return null;\n }\n }\n\n ngOnInit(): void {\n // If tos or privacy policy url set, ensure that the two form items are required\n if (this.config.authUi.tosUrl) {\n this.termsForm.controls.tos.setValidators(Validators.requiredTrue);\n }\n if (this.config.authUi.privacyPolicyUrl) {\n this.termsForm.controls.privacyPolicy.setValidators(Validators.requiredTrue);\n }\n this.termsForm.updateValueAndValidity();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n}\n","// Angular & Inionc\nimport {\n AfterViewInit, ChangeDetectorRef, Component, EventEmitter, forwardRef, Inject, OnDestroy, Output, ViewEncapsulation\n} from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\n\n// RxJS\nimport { Observable, Subject } from 'rxjs';\n\n// Mal\nimport { NgxAuthFirebaseuiAnimations } from '../../animations';\nimport { AuthProcessService, UiService, MalSharedConfig, MalSharedConfigToken } from 'ngx-firebase';\n\nexport interface CreateAccountFormData {\n name: string,\n email: string,\n password: string,\n terms: boolean\n}\n\n@Component({\n selector: 'mal-authui-register-with-email',\n templateUrl: './register-with-email.component.html',\n styleUrls: ['../../ionic-auth-ui.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: NgxAuthFirebaseuiAnimations\n})\nexport class AuthUIRegisterWithEmailComponent implements OnDestroy, AfterViewInit {\n\n @Output() createAccountClick: EventEmitter<CreateAccountFormData> = new EventEmitter<CreateAccountFormData>();\n\n registerForm: FormGroup = new FormGroup({\n name: new FormControl('', [Validators.required]),\n email: new FormControl('', [Validators.required]),\n password: new FormControl('', [Validators.required]),\n terms: new FormControl(true, []),\n });\n\n // Prevent somebody already logged in as guest - relogging in as gyest\n guestEnabled$: Observable<boolean> = this.aps.canSignInAsGuest$;\n\n // Private\n private destroy$: Subject<void> = new Subject<void>();\n\n // tslint:disable-next-line @typescript-eslint/ban-types\n constructor(\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n public aps: AuthProcessService,\n private ui: UiService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n }\n\n ngAfterViewInit() {\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async doCreateAccount(): Promise<void> {\n this.createAccountClick.emit(this.registerForm.value);\n }\n\n}\n","// Angular & Inionc\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { PopoverController } from '@ionic/angular';\nimport { CreateAccountFormData } from '../register-with-email/register-with-email.component';\n\n// RxJS\n\n// Mal\nimport { NgxAuthFirebaseuiAnimations } from '../../animations';\n\n\n@Component({\n templateUrl: './register-with-email-popover.component.html',\n styleUrls: ['../../ionic-auth-ui.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: NgxAuthFirebaseuiAnimations\n})\nexport class AuthUIRegisterWithEmailPopoverComponent {\n\n constructor(\n private popoverController:PopoverController\n ) { }\n\n doCreateAccountClick(data: CreateAccountFormData) {\n this.popoverController.dismiss(data);\n }\n\n}\n","// @angular/*\nimport { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { IonicModule } from '@ionic/angular';\nimport { CommonModule } from '@angular/common';\n\nimport { TooltipsModule } from 'ionic4-tooltips';\n\n// Mal\nimport { MalSharedModule } from 'ngx-firebase';\nimport { MalIonicModule } from 'ngx-firebase/ionic';\n\n// components\nimport { AuthUISignInComponent } from './components/signin/signin.component';\nimport { AuthUIRegisterComponent } from './components/register/register.component';\nimport { AuthUIUserComponent } from './components/user/user.component';\nimport { AuthUIReauthenticateComponent } from './components/reauthenticate/reauthenticate.component';\nimport { EmailConfirmationComponent } from './components/email-confirmation/email-confirmation.component';\nimport { AuthUINameFieldComponent } from './components/name-field/name-field.component';\nimport { AuthUIPasswordFieldComponent } from './components/password-field/password-field.component';\nimport { AuthUIEmailFieldComponent } from './components/email-field/email-field.component';\nimport { AuthUIOrDividerComponent } from './components/or-divider/or-divider.component';\nimport { AuthUIFormFieldComponent } from './components/form-field/form-field.component';\nimport { AuthProvidersComponent } from './components/providers/providers.component';\nimport { AuthUITermsFieldComponent } from './components/terms-field/terms-field.component';\nimport { AuthUIRegisterWithEmailComponent } from './components/register-with-email/register-with-email.component';\nimport { AuthUIRegisterWithEmailPopoverComponent } from './components/register-with-email-popover/register-with-email-popover.component';\n// services\n// interfaces\n// pages\nimport { AuthSignInPage } from './pages/signin';\nimport { AuthRegisterPage } from './pages/register';\nimport { AuthUserPage } from './pages/user';\nimport { AuthVerifyEmailPage } from './pages/verifyemail';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\nconst COMPONENTS = [\n AuthUIUserComponent,\n EmailConfirmationComponent,\n AuthUISignInComponent,\n AuthUIRegisterComponent,\n AuthUIReauthenticateComponent,\n AuthSignInPage,\n AuthRegisterPage,\n AuthUserPage,\n AuthVerifyEmailPage,\n AuthUIPasswordFieldComponent,\n AuthUIEmailFieldComponent,\n AuthUINameFieldComponent,\n AuthUIFormFieldComponent,\n AuthUITermsFieldComponent,\n AuthUIRegisterWithEmailComponent,\n AuthUIRegisterWithEmailPopoverComponent,\n AuthUIOrDividerComponent,\n AuthProvidersComponent\n];\n\nexport const IONIC_AUTH_UI_ROUTER_CONFIG = [\n { path: 'signin', component: AuthSignInPage },\n { path: 'register', component: AuthRegisterPage },\n { path: 'user', component: AuthUserPage },\n { path: 'verify', component: AuthVerifyEmailPage },\n { path: '', pathMatch: 'full', redirectTo: 'signin' }\n];\n\n@NgModule({\n imports: [\n MalSharedModule,\n MalIonicModule,\n IonicModule,\n CommonModule,\n TooltipsModule,\n HttpClientModule,\n FormsModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n ],\n exports: [\n ...COMPONENTS,\n FormsModule,\n ReactiveFormsModule,\n FlexLayoutModule,\n IonicModule\n ],\n declarations: COMPONENTS,\n entryComponents: [\n AuthUIUserComponent\n ]\n})\nexport class MalIonicAuthUiModule {\n\n}\n\n\n// Guards\n\n// Components\n\n// services\n"]}
|